Add ARCHITECTURE.md documenting component architecture
Explains how commands, skills, and agents work together as a composable AI workflow system. Includes ASCII diagram, component relationships, data flow examples, and guidance for adding new components. Closes #2 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
411
ARCHITECTURE.md
Normal file
411
ARCHITECTURE.md
Normal file
@@ -0,0 +1,411 @@
|
||||
# Architecture
|
||||
|
||||
This document explains how the three component types—Commands, Skills, and Agents—work together to create a composable AI workflow system.
|
||||
|
||||
## Overview
|
||||
|
||||
The architecture follows a layered composition model where each component type serves a distinct purpose:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ USER │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ COMMANDS │ │
|
||||
│ │ User-facing entry points │ │
|
||||
│ │ /work-issue /dashboard /plan-issues /groom │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌────────────┼────────────┐ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌─────────────────┐ ┌─────────────────────────────────────┐ │
|
||||
│ │ AGENTS │ │ SKILLS │ │
|
||||
│ │ Specialized │ │ Knowledge modules │ │
|
||||
│ │ subagents │ │ │ │
|
||||
│ │ │ │ issue-writing forgejo │ │
|
||||
│ │ product-manager │ │ backlog-grooming roadmap-planning │ │
|
||||
│ └─────────────────┘ └─────────────────────────────────────┘ │
|
||||
│ │ ▲ │
|
||||
│ └────────────────────┘ │
|
||||
│ Agents use skills │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
### Commands
|
||||
|
||||
**Location:** `commands/*.md`
|
||||
|
||||
Commands are user-facing entry points that trigger workflows. They define *what* to do, not *how* to do it.
|
||||
|
||||
#### Structure
|
||||
|
||||
Each command file contains:
|
||||
- **Frontmatter**: Metadata including description and argument hints
|
||||
- **Instructions**: Step-by-step workflow for Claude to follow
|
||||
- **Tool references**: Which CLI tools or skills to invoke
|
||||
|
||||
```yaml
|
||||
---
|
||||
description: Work on a Forgejo issue
|
||||
argument-hint: <issue-number>
|
||||
---
|
||||
|
||||
# Work on Issue #$1
|
||||
|
||||
1. **View the issue**: `fj issue view $1`
|
||||
2. **Create a branch**: `git checkout -b issue-$1-<title>`
|
||||
...
|
||||
```
|
||||
|
||||
#### Characteristics
|
||||
|
||||
- **Invoked explicitly** by users via `/command-name`
|
||||
- **Self-contained workflows** with clear start and end
|
||||
- **May use skills** for domain knowledge
|
||||
- **May spawn agents** for complex subtasks
|
||||
- **Request approval** before significant actions
|
||||
|
||||
#### When to Create a Command
|
||||
|
||||
Create a command when you have:
|
||||
- A repeatable workflow with clear steps
|
||||
- User-initiated action (not automatic)
|
||||
- Need for consistent behavior across sessions
|
||||
|
||||
#### Current Commands
|
||||
|
||||
| Command | Purpose | Skills Used |
|
||||
|---------|---------|-------------|
|
||||
| `/work-issue` | Implement an issue end-to-end | forgejo |
|
||||
| `/dashboard` | View open issues and PRs | forgejo |
|
||||
| `/review-pr` | Review and act on a PR | forgejo |
|
||||
| `/create-issue` | Create single or batch issues | forgejo, issue-writing |
|
||||
| `/groom` | Improve issue quality | backlog-grooming, issue-writing |
|
||||
| `/roadmap` | View issues organized by status | forgejo, roadmap-planning |
|
||||
| `/plan-issues` | Break down features into issues | roadmap-planning, issue-writing, forgejo |
|
||||
|
||||
---
|
||||
|
||||
### Skills
|
||||
|
||||
**Location:** `skills/<skill-name>/SKILL.md`
|
||||
|
||||
Skills are knowledge modules—focused documents that teach Claude how to do something well. They encode domain expertise and best practices.
|
||||
|
||||
#### Structure
|
||||
|
||||
Each skill file contains:
|
||||
- **Conceptual knowledge**: What Claude needs to understand
|
||||
- **Patterns and templates**: Reusable structures
|
||||
- **Guidelines and checklists**: Quality standards
|
||||
- **Examples**: Concrete illustrations
|
||||
|
||||
```markdown
|
||||
# Issue Writing
|
||||
|
||||
How to write clear, actionable issues.
|
||||
|
||||
## Issue Structure
|
||||
### Title
|
||||
- Start with action verb: "Add", "Fix", "Update"
|
||||
- Be specific: "Add user authentication" not "Auth stuff"
|
||||
...
|
||||
```
|
||||
|
||||
#### Characteristics
|
||||
|
||||
- **Passive knowledge** that doesn't act on its own
|
||||
- **Focused scope**: one domain, one concern
|
||||
- **Composable**: multiple skills can be combined
|
||||
- **Referenced** by commands and agents
|
||||
- **No side effects**: information only
|
||||
|
||||
#### When to Create a Skill
|
||||
|
||||
Create a skill when you find yourself:
|
||||
- Explaining the same concepts repeatedly
|
||||
- Wanting consistent quality in a specific area
|
||||
- Building up domain expertise that should persist
|
||||
|
||||
#### Current Skills
|
||||
|
||||
| Skill | Purpose |
|
||||
|-------|---------|
|
||||
| `forgejo` | How to use the Forgejo CLI for issues and PRs |
|
||||
| `issue-writing` | How to structure clear, actionable issues |
|
||||
| `backlog-grooming` | How to review and improve existing issues |
|
||||
| `roadmap-planning` | How to plan features and create issue breakdowns |
|
||||
|
||||
---
|
||||
|
||||
### Agents
|
||||
|
||||
**Location:** `agents/<agent-name>/AGENT.md`
|
||||
|
||||
Agents are specialized subagents that combine multiple skills into focused personas. They can work autonomously on complex tasks with isolated context.
|
||||
|
||||
#### Structure
|
||||
|
||||
Each agent file contains:
|
||||
- **Skills list**: Which skills the agent has access to
|
||||
- **Capabilities**: What the agent can do
|
||||
- **When to use**: Guidance on spawning the agent
|
||||
- **Behavior**: How the agent should operate
|
||||
|
||||
```markdown
|
||||
# Product Manager Agent
|
||||
|
||||
Specialized agent for backlog management and roadmap planning.
|
||||
|
||||
## Skills
|
||||
- forgejo
|
||||
- issue-writing
|
||||
- backlog-grooming
|
||||
- roadmap-planning
|
||||
|
||||
## Capabilities
|
||||
This agent can:
|
||||
- Review and improve existing issues
|
||||
- Create new well-structured issues
|
||||
...
|
||||
```
|
||||
|
||||
#### Characteristics
|
||||
|
||||
- **Isolated context**: Each agent maintains separate conversation state
|
||||
- **Skill composition**: Combines multiple skills for complex tasks
|
||||
- **Autonomous operation**: Can work with minimal intervention
|
||||
- **Spawned by commands**: Commands decide when to use agents
|
||||
- **Returns results**: Reports back to the main conversation
|
||||
|
||||
#### When to Create an Agent
|
||||
|
||||
Create an agent when you need:
|
||||
- To combine multiple skills for a role
|
||||
- Parallel processing of independent tasks
|
||||
- Isolated context to prevent pollution
|
||||
- Autonomous handling of complex workflows
|
||||
|
||||
#### Current Agents
|
||||
|
||||
| Agent | Skills | Use Case |
|
||||
|-------|--------|----------|
|
||||
| `product-manager` | forgejo, issue-writing, backlog-grooming, roadmap-planning | Batch issue operations, backlog reviews, feature planning |
|
||||
|
||||
---
|
||||
|
||||
## Data and Control Flow
|
||||
|
||||
### Invocation Flow
|
||||
|
||||
```
|
||||
User invokes command
|
||||
│
|
||||
▼
|
||||
┌───────────────────┐
|
||||
│ Command executes │
|
||||
│ workflow steps │
|
||||
└───────────────────┘
|
||||
│
|
||||
├─── Direct action (git, fj CLI)
|
||||
│
|
||||
├─── Reference skill for knowledge
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌─────────────────┐
|
||||
│ │ Skill provides │
|
||||
│ │ patterns and │
|
||||
│ │ guidelines │
|
||||
│ └─────────────────┘
|
||||
│
|
||||
└─── Spawn agent for complex subtask
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ Agent works │
|
||||
│ autonomously │
|
||||
│ with its skills │
|
||||
└─────────────────┘
|
||||
│
|
||||
▼
|
||||
Results return to command
|
||||
```
|
||||
|
||||
### Example: `/plan-issues add dark mode`
|
||||
|
||||
1. **Command invoked**: User runs `/plan-issues add dark mode`
|
||||
|
||||
2. **Skills consulted**:
|
||||
- `roadmap-planning`: How to break down features
|
||||
- `issue-writing`: How to structure each issue
|
||||
- `forgejo`: How to create issues via CLI
|
||||
|
||||
3. **Workflow executed**:
|
||||
- Analyze what "dark mode" involves
|
||||
- Break down into discrete issues
|
||||
- Present plan for approval
|
||||
- Create issues in dependency order
|
||||
|
||||
4. **Output**: Issues created with proper structure and references
|
||||
|
||||
### Example: `/groom` (batch mode)
|
||||
|
||||
1. **Command invoked**: User runs `/groom` with no argument
|
||||
|
||||
2. **Skills consulted**:
|
||||
- `backlog-grooming`: Checklist and evaluation criteria
|
||||
- `issue-writing`: Standards for improvements
|
||||
|
||||
3. **Potential agent spawn**: For many issues, could spawn `product-manager` agent
|
||||
|
||||
4. **Agent workflow**:
|
||||
- Fetches all open issues
|
||||
- Evaluates each against grooming checklist
|
||||
- Categorizes as ready/needs-work/stale
|
||||
- Proposes improvements
|
||||
|
||||
5. **Output**: Summary table with suggestions, optional issue updates
|
||||
|
||||
---
|
||||
|
||||
## Component Relationships
|
||||
|
||||
### How Commands Use Skills
|
||||
|
||||
Commands reference skills by name in their instructions:
|
||||
|
||||
```markdown
|
||||
# Groom Issues
|
||||
|
||||
Use the backlog-grooming and issue-writing skills.
|
||||
```
|
||||
|
||||
Claude reads the referenced skill files to gain the necessary knowledge before executing the command workflow.
|
||||
|
||||
### How Agents Use Skills
|
||||
|
||||
Agents list their skills explicitly:
|
||||
|
||||
```markdown
|
||||
## Skills
|
||||
- forgejo
|
||||
- issue-writing
|
||||
- backlog-grooming
|
||||
```
|
||||
|
||||
When spawned, the agent has access to all listed skills as part of its context.
|
||||
|
||||
### How Commands Spawn Agents
|
||||
|
||||
Commands can delegate to agents for complex subtasks:
|
||||
|
||||
```markdown
|
||||
For comprehensive backlog review, spawn the product-manager agent.
|
||||
```
|
||||
|
||||
The agent works autonomously and returns results to the command.
|
||||
|
||||
---
|
||||
|
||||
## Design Principles
|
||||
|
||||
### Separation of Concerns
|
||||
|
||||
- **Commands**: Define workflows (what to do)
|
||||
- **Skills**: Encode knowledge (how to do it well)
|
||||
- **Agents**: Execute complex tasks (who does it)
|
||||
|
||||
### Composability
|
||||
|
||||
Small, focused components combine to handle complex scenarios:
|
||||
|
||||
```
|
||||
/plan-issues = roadmap-planning + issue-writing + forgejo
|
||||
product-manager = all four skills combined
|
||||
```
|
||||
|
||||
### Single Responsibility
|
||||
|
||||
Each component has one clear purpose:
|
||||
- One command = one workflow
|
||||
- One skill = one domain
|
||||
- One agent = one role
|
||||
|
||||
### Progressive Enhancement
|
||||
|
||||
Start simple, add complexity as needed:
|
||||
1. Use skills directly for simple tasks
|
||||
2. Create commands for repeatable workflows
|
||||
3. Add agents for complex parallel work
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
ai/
|
||||
├── commands/ # User-invoked workflows
|
||||
│ ├── work-issue.md
|
||||
│ ├── dashboard.md
|
||||
│ ├── review-pr.md
|
||||
│ ├── create-issue.md
|
||||
│ ├── groom.md
|
||||
│ ├── roadmap.md
|
||||
│ └── plan-issues.md
|
||||
├── skills/ # Knowledge modules
|
||||
│ ├── forgejo/
|
||||
│ │ └── SKILL.md
|
||||
│ ├── issue-writing/
|
||||
│ │ └── SKILL.md
|
||||
│ ├── backlog-grooming/
|
||||
│ │ └── SKILL.md
|
||||
│ └── roadmap-planning/
|
||||
│ └── SKILL.md
|
||||
├── agents/ # Specialized subagents
|
||||
│ └── product-manager/
|
||||
│ └── AGENT.md
|
||||
├── scripts/ # Hook scripts
|
||||
│ └── pre-commit-checks.sh
|
||||
├── settings.json # Claude Code configuration
|
||||
├── CLAUDE.md # Project instructions
|
||||
├── VISION.md # Why this project exists
|
||||
└── ARCHITECTURE.md # This document
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Adding New Components
|
||||
|
||||
### Adding a Command
|
||||
|
||||
1. Create `commands/<name>.md`
|
||||
2. Add frontmatter with description and argument hints
|
||||
3. Define the workflow steps
|
||||
4. Reference any needed skills
|
||||
5. Test the workflow
|
||||
|
||||
### Adding a Skill
|
||||
|
||||
1. Create `skills/<name>/SKILL.md`
|
||||
2. Document the domain knowledge
|
||||
3. Include patterns, templates, and examples
|
||||
4. Reference from commands or agents as needed
|
||||
|
||||
### Adding an Agent
|
||||
|
||||
1. Create `agents/<name>/AGENT.md`
|
||||
2. List the skills the agent needs
|
||||
3. Define capabilities and behavior
|
||||
4. Document when to spawn the agent
|
||||
5. Update commands to use the agent where appropriate
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [VISION.md](VISION.md): The philosophy and goals behind this project
|
||||
- [CLAUDE.md](CLAUDE.md): Setup and configuration instructions
|
||||
- [README.md](README.md): Project overview and quick start
|
||||
Reference in New Issue
Block a user