/_
Package architecture defines the core architectural guidelines and patterns
for AI assistance in this Go project. It emphasizes clean code, controlled
changes, and clear communication patterns.
_/
package architecture
// Guidelines defines the core architectural rules and patterns
// for AI assistance in this project
var Guidelines = struct {
// ChangeManagement defines rules for how code modifications should be handled
ChangeManagement struct {
// Principles defines core tenets for making changes
Principles []string
// UpdateStrategy defines how changes should be implemented
UpdateStrategy struct {
PreferredApproach string
Methodology []string
Scope map[string]string
}
// Validation defines requirements for validating changes
Validation struct {
Required []string
}
}
// CodeStandards defines code quality requirements and patterns
CodeStandards struct {
// Structure defines code organization rules
Structure struct {
PackageOrganization string
InterfaceDesign string
ErrorHandling string
}
// Documentation defines documentation requirements
Documentation struct {
Required []string
Style string
}
// Patterns provides example patterns to follow
Patterns struct {
Interface string
Error string
Handler string
}
}
// AIProtocols defines how AI should interact with the codebase
AIProtocols struct {
// BeforeModifying lists steps required before making changes
BeforeModifying []string
// DuringImplementation lists requirements while making changes
DuringImplementation []string
// Communication defines how AI should communicate about changes
Communication struct {
Required []string
Clarification struct {
When []string
How string
}
}
}
}{
ChangeManagement: struct {
Principles []string
UpdateStrategy struct {
PreferredApproach string
Methodology []string
Scope map[string]string
}
Validation struct {
Required []string
}
}{
Principles: []string{
"Make minimal, precise changes",
"Verify before modifying",
"Document all changes",
"Test thoroughly",
},
UpdateStrategy: struct {
PreferredApproach string
Methodology []string
Scope map[string]string
}{
PreferredApproach: "incremental",
Methodology: []string{
"Identify specific section to modify",
"Verify surrounding dependencies",
"Make targeted change",
"Validate change does not affect other components",
},
Scope: map[string]string{
"minimal": "Single function or method update",
"moderate": "Package-level modification",
"major": "Must be broken into smaller changes",
},
},
Validation: struct {
Required []string
}{
Required: []string{
"Interface compliance",
"Error handling",
"Documentation updates",
"Test coverage",
},
},
},
CodeStandards: struct {
Structure struct {
PackageOrganization string
InterfaceDesign string
ErrorHandling string
}
Documentation struct {
Required []string
Style string
}
Patterns struct {
Interface string
Error string
Handler string
}
}{
Structure: struct {
PackageOrganization string
InterfaceDesign string
ErrorHandling string
}{
PackageOrganization: "Small, focused packages with clear responsibilities",
InterfaceDesign: "Small interfaces, composition over inheritance",
ErrorHandling: "Use error wrapping, provide context",
},
Documentation: struct {
Required []string
Style string
}{
Required: []string{
"Package purpose",
"Interface contracts",
"Error scenarios",
"Usage examples",
},
Style: "Explain why, not what",
},
Patterns: struct {
Interface string
Error string
Handler string
}{
Interface: `
// Agent represents an autonomous agent in the system
type Agent interface {
// Process handles incoming tasks and returns results
// It may return ErrInvalidTask if the task cannot be processed
Process(ctx context.Context, task Task) (Result, error)
// Status returns the current agent status
Status() AgentStatus
}
`,
Error: `
// Example error handling pattern
if err != nil {
return fmt.Errorf("processing task %s: %w", task.ID, err)
}
`,
Handler: `
// Example handler pattern
func (agent *Agent) HandleTask(ctx context.Context, task Task) (Result, error) {
// Pre-conditions
if err := task.Validate(); err != nil {
return Result{}, fmt.Errorf("invalid task: %w", err)
}
// Core logic
result, err := agent.process(ctx, task)
if err != nil {
return Result{}, fmt.Errorf("processing task: %w", err)
}
// Post-conditions
if err := result.Validate(); err != nil {
return Result{}, fmt.Errorf("invalid result: %w", err)
}
return result, nil
}
`,
},
},
AIProtocols: struct {
BeforeModifying []string
DuringImplementation []string
Communication struct {
Required []string
Clarification struct {
When []string
How string
}
}
}{
BeforeModifying: []string{
"Understand full context",
"Identify minimal change set",
"Verify interface compliance",
"Plan rollback strategy",
},
DuringImplementation: []string{
"Follow Go idioms and patterns",
"Maintain interface contracts",
"Document changes inline",
"Handle all error cases",
},
Communication: struct {
Required []string
Clarification struct {
When []string
How string
}
}{
Required: []string{
"Explicit assumptions",
"Clear limitations",
"Specific questions",
"Validation needs",
},
Clarification: struct {
When []string
How string
}{
When: []string{
"Ambiguous requirements",
"Missing context",
"Multiple approaches possible",
"High-risk changes",
},
How: "Ask specific, targeted questions about interfaces and behaviors",
},
},
},
}
// Example validation function
func ValidateChange(change struct {
Type string
Files []string
Description string
}) error {
// Implementation would verify change against guidelines
return nil
}
// Example error creation function
func CreateError(code string, message string, context error) error {
if context != nil {
return fmt.Errorf("%s: %s: %w", code, message, context)
}
return fmt.Errorf("%s: %s", code, message)
}
cap'n proto
css
dockerfile
go
golang
html
javascript
mermaid
+4 more
First Time Repository
That is it.
TypeScript
Languages:
CSS: 41.2KB
Cap'n Proto: 0.5KB
Dockerfile: 2.8KB
Go: 400.0KB
HTML: 1.7KB
JavaScript: 54.0KB
Mermaid: 4.4KB
Python: 9.5KB
Rust: 0.7KB
Shell: 1.1KB
TypeScript: 607.6KB
Created: 3/11/2024
Updated: 12/19/2024
All Repositories (1)
That is it.