Files
goplt/AGENTS.md
2025-11-05 11:19:24 +01:00

11 KiB

Agent Instructions for Go Platform Project

This document provides essential guidance for AI agents and developers working on the Go Platform project. Always consult the documentation before making changes or implementing features.

🚨 Critical Requirement

BEFORE making any code changes, architectural decisions, or implementing features, you MUST:

  1. Review relevant documentation files
  2. Check applicable architecture documents
  3. Consult relevant Architecture Decision Records (ADRs)
  4. Review the stories (epic-based implementation tasks)

Failure to follow these guidelines may result in code that doesn't align with the project's architecture, principles, or implementation plan.


📚 Documentation Structure

All documentation is located in /goplt/docs/content/. The project follows a structured documentation approach:

Core Documentation (/goplt/docs/content/)

  • index.md: Main documentation index and navigation
  • requirements.md: High-level architectural principles and requirements
  • plan.md: Epic-based implementation plan with timelines and acceptance criteria
  • playbook.md: Detailed implementation guide, best practices, and technical specifications

Architecture Documentation (/goplt/docs/content/architecture/)

  • architecture.md: System architecture overview with diagrams
  • architecture-modules.md: Module system design and integration patterns
  • module-requirements.md: Detailed requirements for each module
  • component-relationships.md: Component interactions and dependencies
  • system-behavior.md: System behavior overview end-to-end
  • service-orchestration.md: How services work together
  • module-integration-patterns.md: How modules integrate with the platform
  • operational-scenarios.md: Common operational flows and use cases
  • data-flow-patterns.md: How data flows through the system

Architecture Decision Records (/goplt/docs/content/adr/)

All architectural decisions are documented in ADR files (ADR-0001 through ADR-0030+). These records explain:

  • The context that led to the decision
  • The decision itself
  • The rationale and consequences
  • Implementation notes

Key ADRs to review:

  • ADR-0001: Go Module Path
  • ADR-0003: Dependency Injection Framework
  • ADR-0004: Configuration Management
  • ADR-0005: Logging Framework
  • ADR-0006: HTTP Framework
  • ADR-0007: Project Directory Structure
  • ADR-0008: Error Handling Strategy
  • ADR-0013: Database ORM
  • ADR-0016: OpenTelemetry Observability
  • ADR-0017: JWT Token Strategy
  • ADR-0021: Module Loading Strategy
  • ADR-0022: Cache Implementation
  • ADR-0023: Event Bus Implementation
  • ADR-0025: Multitenancy Model
  • ADR-0027: Rate Limiting Strategy
  • ADR-0028: Testing Strategy
  • ADR-0029: Microservices Architecture
  • ADR-0030: Service Communication Strategy

Always check ADRs before making architectural decisions!

Implementation Stories (/goplt/docs/content/stories/)

The project is organized into 8 epics, each containing specific implementation stories:

  • Epic 0: Project Setup & Foundation (epic0/)

    • 0.1: Project Initialization
    • 0.2: Configuration Management System
    • 0.3: Structured Logging System
    • 0.4: CI/CD Pipeline
    • 0.5: Dependency Injection and Bootstrap
  • Epic 1: Core Kernel & Infrastructure (epic1/)

    • 1.1: Enhanced DI Container
    • 1.2: Database Layer
    • 1.3: Health & Metrics System
    • 1.4: Error Handling
    • 1.5: HTTP Server
    • 1.6: OpenTelemetry
    • 1.7: Service Abstraction Layer
  • Epic 2: Authentication & Authorization (epic2/)

    • 2.1: JWT Authentication
    • 2.2: Identity Management
    • 2.3: RBAC System
    • 2.4: Role Management
    • 2.5: Audit Logging
    • 2.6: Database Seeding
  • Epic 3: Module Framework (epic3/)

    • 3.1: Module System Interface
    • 3.2: Permission Code Generation
    • 3.3: Module Loader
    • 3.4: Module CLI
    • 3.5: Service Registry
  • Epic 4: Sample Feature Module (epic4/)

    • 4.1: Blog Module
  • Epic 5: Infrastructure Adapters (epic5/)

    • 5.1: Cache System
    • 5.2: Event Bus
    • 5.3: Blob Storage
    • 5.4: Email Notification
    • 5.5: Scheduler Jobs
    • 5.6: Secret Store
    • 5.7: gRPC Services
  • Epic 6: Observability & Production Readiness (epic6/)

    • 6.1: Enhanced Observability
    • 6.2: Error Reporting
    • 6.3: Grafana Dashboards
    • 6.4: Rate Limiting
    • 6.5: Security Hardening
    • 6.6: Performance Optimization
  • Epic 7: Testing, Documentation & CI/CD (epic7/)

    • 7.1: Testing Suite
    • 7.2: Documentation
    • 7.3: CI/CD Enhancement
    • 7.4: Docker Deployment
  • Epic 8: Advanced Features & Polish (epic8/)

Each story file contains:

  • Goal: What needs to be accomplished
  • Deliverables: Specific items to be created
  • Acceptance Criteria: How to verify completion
  • Implementation Notes: Technical guidance

Always review the relevant story before implementing a feature!


🔍 Workflow for Agents

When working on this project, follow this workflow:

0. Git Workflow (MANDATORY)

  • ALWAYS create a new branch when working on a new feature, bug fix, or enhancement
    • Use descriptive branch names (e.g., feature/epic1-http-server, bugfix/auth-token-expiry, enhancement/rate-limiting)
    • Branch names should follow the pattern: {type}/{epic}-{short-description} or {type}/{story-id}-{short-description}
  • ALWAYS create a commit after successfully implementing a feature that:
    • Builds successfully (go build passes)
    • Tests pass (go test passes)
    • Meets all acceptance criteria from the story
  • Commit messages should be clear and descriptive, referencing the story/epic when applicable
  • Never commit directly to main branch

1. Understand the Task

  • Read the user's request carefully
  • Identify which epic/story the task relates to
  • Determine if it's a new feature, bug fix, or enhancement

2. Consult Documentation (MANDATORY)

  • Start with index.md to get oriented
  • Read the relevant story from /goplt/docs/content/stories/epicX/
  • Review architecture documents that relate to the feature
  • Check ADRs for any architectural decisions that apply
  • Review playbook.md for implementation patterns and best practices

3. Understand the Architecture

  • Review the architecture overview (architecture/architecture.md)
  • Check component relationships if integrating with existing systems
  • Review module integration patterns if working on modules
  • Understand data flow patterns if working on data processing

4. Check ADRs

  • Search for ADRs related to your task
  • Ensure your implementation aligns with documented decisions
  • If you need to make a new architectural decision, document it in a new ADR

5. Implement According to Stories

  • Follow the deliverables specified in the story
  • Meet the acceptance criteria
  • Use the implementation notes as guidance
  • Follow the patterns established in playbook.md

6. Verify Alignment

  • Ensure code follows Clean/Hexagonal Architecture principles
  • Verify it aligns with microservices architecture
  • Check that it follows plugin-first design
  • Confirm security-by-design principles are followed
  • Validate observability is properly implemented

7. Commit Changes

  • ALWAYS commit after successful implementation
  • Ensure the code builds (go build)
  • Ensure all tests pass (go test)
  • Verify all acceptance criteria are met
  • Write a clear, descriptive commit message

🏗️ Key Architectural Principles

The project follows these core principles (documented in requirements.md and playbook.md):

  1. Clean/Hexagonal Architecture

    • Clear separation between pkg/ (interfaces) and internal/ (implementations)
    • Domain code in internal/domain
    • Only interfaces exported from pkg/
  2. Microservices Architecture

    • Each module is an independent service from day one
    • Services communicate via gRPC/HTTP
    • Service discovery via service registry
  3. Plugin-First Design

    • Extensible architecture supporting static and dynamic modules
    • Modules implement the IModule interface
    • Module loader discovers and loads modules
  4. Security-by-Design

    • JWT authentication
    • RBAC/ABAC authorization
    • Audit logging
    • Context-based user propagation
  5. Observability

    • OpenTelemetry integration
    • Structured logging (Zap)
    • Prometheus metrics
    • Request correlation IDs
  6. Dependency Injection

    • Using uber-go/fx for lifecycle management
    • Constructor injection preferred
    • Service registry pattern

📋 Quick Reference Checklist

Before implementing any feature, verify:

  • Created a new branch for the feature/bugfix/enhancement
  • Read the relevant story from /goplt/docs/content/stories/epicX/
  • Reviewed architecture documents in /goplt/docs/content/architecture/
  • Checked applicable ADRs in /goplt/docs/content/adr/
  • Consulted playbook.md for implementation patterns
  • Understood the epic context and dependencies
  • Verified acceptance criteria are clear
  • Confirmed architectural alignment

After implementing a feature, verify:

  • Code builds successfully (go build)
  • All tests pass (go test)
  • All acceptance criteria are met
  • Created a commit with a clear, descriptive message

🚫 Common Mistakes to Avoid

  1. Working directly on main branch - Always create a feature branch before making changes
  2. Committing without verification - Never commit code that doesn't build, has failing tests, or doesn't meet acceptance criteria
  3. Implementing without checking stories - Stories contain specific deliverables and acceptance criteria
  4. Ignoring ADRs - ADRs document why decisions were made; don't reinvent the wheel
  5. Violating architecture principles - Code must follow Clean/Hexagonal Architecture
  6. Missing acceptance criteria - All stories have specific criteria that must be met
  7. Not following module patterns - Modules must implement the IModule interface correctly
  8. Skipping observability - All features must include proper logging, metrics, and tracing
  9. Breaking microservices boundaries - Services must communicate via defined interfaces

📖 Additional Resources

  • MkDocs Configuration: /goplt/docs/mkdocs.yml - Documentation site configuration
  • Docker Setup: /goplt/docs/Dockerfile and docker-compose.yml - Development environment
  • Makefile: /goplt/Makefile - Build and development commands
  • Story Generator: /goplt/docs/content/stories/generate_tasks.py - Tool for generating story templates

💡 Tips for Agents

  1. Use semantic search to find relevant documentation when you're unsure
  2. Read multiple related files to get complete context
  3. Check the epic README files (epicX/README.md) for epic-level overviews
  4. Review COMPLETE_TASK_LIST.md for a comprehensive task overview
  5. When in doubt, ask for clarification rather than making assumptions

📝 Documentation Updates

If you make architectural decisions or significant changes:

  1. Update relevant ADRs or create new ones
  2. Update architecture documents if structure changes
  3. Update stories if implementation details change
  4. Keep documentation in sync with code

Remember: Documentation is the source of truth. Always consult it before making changes!