1064 lines
29 KiB
Markdown
1064 lines
29 KiB
Markdown
---
|
|
name: box-factory-architecture
|
|
description: Interpretive guidance for understanding Claude Code component architecture and choosing between agents, skills, commands, and hooks. Helps decide which component type fits a use case, understand delegation and isolation, debug cross-component issues, and design cohesive plugin architectures. Use when choosing component types, designing plugins with multiple components, debugging delegation failures, asking about component interaction patterns, or creating Box Factory-compliant components.
|
|
---
|
|
|
|
# Box Factory Architecture Skill
|
|
|
|
This meta-skill teaches the Claude Code ecosystem architecture - how components interact, when to use each type, and how to design cohesive multi-component solutions. **This applies to both Main Claude (choosing what to create) and sub-agents (understanding their role).**
|
|
|
|
## Required Reading Before Designing Components
|
|
|
|
Fetch these docs with WebFetch to understand the official ecosystem:
|
|
|
|
- **https://code.claude.com/docs/en/sub-agents.md** - Agent architecture and isolation model
|
|
- **https://code.claude.com/docs/en/slash-commands.md** - Command structure and triggering
|
|
- **https://code.claude.com/docs/en/hooks** - Hook lifecycle and execution
|
|
- **https://code.claude.com/docs/en/plugins** - Plugin packaging and distribution
|
|
|
|
## Core Architectural Understanding
|
|
|
|
### The Isolation Model (Critical Concept)
|
|
|
|
**The #1 thing to understand:** Claude Code uses **isolated contexts** with **return-based delegation**.
|
|
|
|
```
|
|
User ↔ Main Claude ──→ Sub-Agent (isolated context)
|
|
│
|
|
└──→ Returns final result
|
|
(no back-and-forth)
|
|
```
|
|
|
|
**Critical implications:**
|
|
|
|
- Sub-agents **CANNOT** ask users questions
|
|
- Sub-agents **CANNOT** see main conversation history
|
|
- Sub-agents **CAN** do autonomous work (write files, run tests, analyze code)
|
|
- Main Claude handles **ALL** user communication
|
|
- Delegation is **one-way** (call → return, not interactive)
|
|
|
|
**Why this matters:** Every design decision flows from this architecture.
|
|
|
|
**Common misconception:** "Agents are just like functions" - No, they're isolated AI instances with their own context and tool access.
|
|
|
|
### The Return-Based Model (Critical Concept)
|
|
|
|
**Execution flow:**
|
|
|
|
1. Main Claude decides to delegate
|
|
2. Sub-agent receives context + task
|
|
3. Sub-agent works autonomously in isolation
|
|
4. Sub-agent returns complete result
|
|
5. Main Claude integrates result and continues
|
|
|
|
**What this means:**
|
|
|
|
- No mid-execution interaction
|
|
- No "asking for clarification"
|
|
- Agent must have everything it needs upfront
|
|
- Results must be complete and actionable
|
|
|
|
**Design test:** If your agent needs to ask questions mid-execution, redesign the delegation pattern.
|
|
|
|
### Progressive Disclosure Philosophy (Token Efficiency)
|
|
|
|
**Problem:** You can't put everything in the system prompt.
|
|
|
|
**Solution:** Load knowledge progressively when relevant.
|
|
|
|
**How it works:**
|
|
|
|
```
|
|
Base Prompt (always loaded)
|
|
↓
|
|
Topic becomes relevant
|
|
↓
|
|
Skill loads automatically
|
|
↓
|
|
Provides specialized knowledge
|
|
```
|
|
|
|
**Why this matters:** Skills solve the "selective context" problem that CLAUDE.md and system prompts can't.
|
|
|
|
## Component Comparison (Official Specification)
|
|
|
|
What each component IS according to official documentation:
|
|
|
|
### Agents (from sub-agents.md)
|
|
|
|
**Official definition:** Specialized AI instances that run in isolated contexts with specific tools and prompts.
|
|
|
|
**Official structure:**
|
|
- YAML frontmatter with `name`, `description`, `model`, `tools`
|
|
- Markdown system prompt
|
|
- Return results to delegating agent
|
|
|
|
**Key characteristic:** Autonomous delegation based on context.
|
|
|
|
### Commands (from slash-commands.md)
|
|
|
|
**Official definition:** User-triggered prompts with optional argument substitution.
|
|
|
|
**Official structure:**
|
|
- Optional YAML frontmatter
|
|
- Markdown prompt with `$1`, `$2` or `$ARGUMENTS` placeholders
|
|
- Triggered explicitly by user typing `/command-name`
|
|
|
|
**Key characteristic:** Explicit user invocation.
|
|
|
|
### Skills (from sub-agents.md)
|
|
|
|
**Official definition:** Knowledge loaded when relevant topics arise.
|
|
|
|
**Official structure:**
|
|
- YAML frontmatter with `name`, `description`
|
|
- Markdown content in `SKILL.md` file
|
|
- Lives in `skills/[name]/SKILL.md` subdirectory
|
|
|
|
**Key characteristic:** Progressive knowledge disclosure.
|
|
|
|
### Hooks (from hooks documentation)
|
|
|
|
**Official definition:** Deterministic execution at lifecycle events.
|
|
|
|
**Official structure:**
|
|
- JSON configuration in settings
|
|
- Command-based (bash scripts) or prompt-based (Claude Haiku queries)
|
|
- Fire at specific events (PreToolUse, PostToolUse, SessionStart, etc.)
|
|
|
|
**Key characteristic:** Guaranteed execution every time.
|
|
|
|
## Component Comparison (Best Practices)
|
|
|
|
Decision framework for choosing the right component type:
|
|
|
|
### When to Use Each Component
|
|
|
|
**Use Agent when:**
|
|
|
|
- Need isolated context (won't pollute main conversation)
|
|
- Want autonomous delegation (triggered by context, not explicit request)
|
|
- Doing actual work (writing files, running tests, analyzing code)
|
|
- Require specific tool restrictions
|
|
- Complex decision-making within defined scope
|
|
- Task is part of larger workflows
|
|
|
|
**Examples:**
|
|
- `test-runner` - Executes tests and analyzes failures autonomously
|
|
- `code-reviewer` - Provides feedback without modifying code
|
|
- `documentation-generator` - Creates docs from code
|
|
|
|
**Use Command when:**
|
|
|
|
- User wants explicit control over when it runs
|
|
- Thin wrapper that delegates to specialized agent
|
|
- Simple argument substitution needed
|
|
- One-off user-triggered operation
|
|
- Wrapping bash scripts or tool sequences
|
|
|
|
**Examples:**
|
|
- `/add-agent` - User explicitly requests creating an agent
|
|
- `/deploy` - User controls deployment timing
|
|
- `/analyze-security` - User-triggered analysis
|
|
|
|
**Use Skill when:**
|
|
|
|
- Knowledge needed across multiple contexts
|
|
- Substantial procedural expertise (20+ lines)
|
|
- Interpretive guidance that enhances understanding
|
|
- Best practices that apply to multiple scenarios
|
|
- Progressive disclosure saves tokens
|
|
- Teaching "how to think about" something
|
|
|
|
**Examples:**
|
|
- `agent-design` - Guidance for creating agents
|
|
- `api-standards` - Team API conventions
|
|
- `testing-strategy` - Testing philosophy and patterns
|
|
|
|
**Use Hook when:**
|
|
|
|
- Need **guaranteed** execution every single time
|
|
- Simple, deterministic rule enforcement
|
|
- Integrating external tools (linters, formatters)
|
|
- Performance or safety enforcement
|
|
- Must happen at specific lifecycle event
|
|
- "Always" matters more than "usually"
|
|
|
|
**Examples:**
|
|
- Format code after every write
|
|
- Security validation before bash commands
|
|
- Load project context at session start
|
|
- Auto-commit after conversation stops
|
|
|
|
## Component Interaction Patterns (Best Practices)
|
|
|
|
### Pattern 1: Command → Agent (Delegation Pattern)
|
|
|
|
**Most common Box Factory pattern:** Commands are thin wrappers that delegate to specialized agents.
|
|
|
|
```
|
|
User types: /add-agent
|
|
|
|
Command: add-agent.md
|
|
├── Description: "Create a new Claude Code agent"
|
|
├── Arguments: $1 (agent name), $2 (purpose)
|
|
└── Prompt: "Use the agent-writer agent to create..."
|
|
|
|
Agent: agent-writer.md
|
|
├── Isolated context
|
|
├── Tools: Read, Write, WebFetch
|
|
├── Loads: agent-design skill
|
|
└── Returns: Complete agent file
|
|
```
|
|
|
|
**Why this works:**
|
|
|
|
- Command stays simple (argument handling)
|
|
- Agent handles complexity in isolation
|
|
- Skill provides interpretive guidance
|
|
- Clear separation of concerns
|
|
|
|
**Examples in Box Factory:**
|
|
- `/add-agent` → `agent-writer`
|
|
- `/add-command` → `slash-command-writer`
|
|
- `/add-skill` → `skill-writer`
|
|
|
|
### Pattern 2: Agent → Skill (Knowledge Loading)
|
|
|
|
**Progressive disclosure pattern:** Agents load skills automatically when topics become relevant.
|
|
|
|
```
|
|
Agent: agent-writer
|
|
├── Task: Create new agent
|
|
├── Topic: "agent design"
|
|
├── Trigger: skill-design description matches
|
|
└── Loads: agent-design skill
|
|
├── Fetches: Official docs
|
|
├── Provides: Best practices
|
|
└── Guides: Creation process
|
|
```
|
|
|
|
**Why this works:**
|
|
|
|
- Skill loaded only when needed (token efficient)
|
|
- Agent gets specialized knowledge automatically
|
|
- Skill defers to official docs (low maintenance)
|
|
- Two-layer approach (specs + guidance)
|
|
|
|
**Examples in Box Factory:**
|
|
- Creating agents → loads `agent-design`
|
|
- Creating skills → loads `skill-design`
|
|
- Creating commands → loads `slash-command-design`
|
|
|
|
### Pattern 3: Agent → Sub-Agent (Specialized Delegation)
|
|
|
|
**Nested delegation pattern:** Agents can delegate to more specialized sub-agents.
|
|
|
|
```
|
|
Main Claude
|
|
↓
|
|
Command → Primary Agent
|
|
↓
|
|
Sub-Agent (specialized)
|
|
↓
|
|
Returns result
|
|
```
|
|
|
|
**Critical constraints:**
|
|
|
|
- All agents operate in isolated contexts
|
|
- No mid-execution questions upward
|
|
- Each level returns complete results
|
|
- Tools must be granted at each level
|
|
|
|
**Example flow:**
|
|
|
|
```
|
|
User: "Create a comprehensive test suite"
|
|
|
|
Main Claude → test-suite-creator (primary agent)
|
|
├── Analyzes codebase structure
|
|
├── Identifies test needs
|
|
└── Delegates → test-file-generator (sub-agent)
|
|
├── Creates individual test files
|
|
└── Returns test code
|
|
|
|
test-suite-creator receives results
|
|
├── Integrates test files
|
|
└── Returns complete suite to Main Claude
|
|
```
|
|
|
|
### Pattern 4: Hook + Agent (Enforcement + Intelligence)
|
|
|
|
**Combined pattern:** Hooks enforce rules, agents provide intelligence.
|
|
|
|
```
|
|
PreToolUse:Bash hook
|
|
├── Validates command safety (deterministic)
|
|
├── Blocks dangerous operations (exit 2)
|
|
└── If borderline → delegates to security-reviewer agent
|
|
├── Agent analyzes context
|
|
└── Returns recommendation
|
|
```
|
|
|
|
**Why combine:**
|
|
|
|
- Hook provides guaranteed enforcement
|
|
- Agent provides context-aware judgment
|
|
- Best of both worlds
|
|
|
|
**Example:**
|
|
|
|
```json
|
|
{
|
|
"PreToolUse": [
|
|
{
|
|
"matcher": "Bash",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "~/.claude/hooks/security-check.sh"
|
|
},
|
|
{
|
|
"type": "prompt",
|
|
"command": "Analyze this bash command for security risks"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Pattern 5: Skill + Multiple Components (Shared Knowledge)
|
|
|
|
**Knowledge reuse pattern:** One skill guides multiple agents and commands.
|
|
|
|
```
|
|
agent-design skill
|
|
↑
|
|
├── Loaded by: agent-writer agent
|
|
├── Loaded by: component-reviewer agent
|
|
└── Loaded by: validation-agent agent
|
|
```
|
|
|
|
**Why this works:**
|
|
|
|
- Single source of truth
|
|
- Consistent guidance across components
|
|
- Update skill → improves all consumers
|
|
- Token efficient (load once, use many times)
|
|
|
|
## Delegation Chains (Architecture Deep Dive)
|
|
|
|
### How Isolated Context Works
|
|
|
|
**When Main Claude delegates to sub-agent:**
|
|
|
|
```
|
|
Main Claude context:
|
|
├── Full conversation history
|
|
├── User messages
|
|
├── Previous tool calls
|
|
└── All context accumulated
|
|
|
|
Sub-Agent context:
|
|
├── Only: Task description from delegation
|
|
├── Only: Files/data explicitly passed
|
|
├── No access to main conversation
|
|
└── Fresh, isolated environment
|
|
```
|
|
|
|
**Critical: Information flow is ONE WAY (Main → Sub)**
|
|
|
|
### What Agents Can't Do (Because of Isolation)
|
|
|
|
**Forbidden patterns:**
|
|
|
|
❌ "Ask the user for the target directory"
|
|
❌ "Request clarification from the user"
|
|
❌ "Confirm with the user before proceeding"
|
|
❌ "Wait for user input"
|
|
❌ "Check with the user about preferences"
|
|
|
|
**Why these fail:** Agent is isolated, can't communicate with user.
|
|
|
|
**Correct patterns:**
|
|
|
|
✅ "Use the provided directory parameter or default to ./src"
|
|
✅ "Infer from project structure and available context"
|
|
✅ "Make reasonable assumptions based on common patterns"
|
|
✅ "Use environment context to determine approach"
|
|
✅ "Default to [specific behavior] when unclear"
|
|
|
|
### Multi-Level Delegation Example
|
|
|
|
**Complete flow with isolation model:**
|
|
|
|
```
|
|
User: "/add-agent test-runner 'Run tests and analyze failures'"
|
|
|
|
Main Claude:
|
|
├── Sees: Full conversation history
|
|
├── Interprets: User wants new agent created
|
|
├── Triggers: /add-agent command (explicit)
|
|
└── Delegates to: agent-writer agent
|
|
│
|
|
Sub-Agent (agent-writer):
|
|
├── Context: Only task params (name, purpose)
|
|
├── Loads: agent-design skill (triggered by topic)
|
|
├── Fetches: Official docs (per skill guidance)
|
|
├── Creates: test-runner.md agent file
|
|
└── Returns: "Created agent at .claude/agents/test-runner.md"
|
|
|
|
Main Claude:
|
|
├── Receives: Complete result from sub-agent
|
|
├── Integrates: Into conversation
|
|
└── Responds: "I've created the test-runner agent..."
|
|
```
|
|
|
|
**Key observations:**
|
|
|
|
1. Command triggered explicitly (user typed `/add-agent`)
|
|
2. Agent-writer operates in isolation (can't ask questions)
|
|
3. Skill loads automatically (relevant topic)
|
|
4. Agent returns complete result (file created)
|
|
5. Main Claude integrates and communicates with user
|
|
|
|
## Cross-Component Patterns (Best Practices)
|
|
|
|
### The Thin Wrapper Philosophy
|
|
|
|
**Core principle:** Each component has one focused responsibility.
|
|
|
|
**Command responsibilities:**
|
|
- Argument handling
|
|
- User-facing description
|
|
- Delegation to agent
|
|
|
|
**Agent responsibilities:**
|
|
- Complex logic
|
|
- File operations
|
|
- Tool orchestration
|
|
- Result synthesis
|
|
|
|
**Skill responsibilities:**
|
|
- Interpretive guidance
|
|
- Best practices
|
|
- Decision frameworks
|
|
- Progressive knowledge
|
|
|
|
**Hook responsibilities:**
|
|
- Deterministic enforcement
|
|
- Lifecycle integration
|
|
- External tool execution
|
|
|
|
**Anti-pattern:** Command with complex logic that belongs in agent.
|
|
|
|
**Correct pattern:**
|
|
|
|
```markdown
|
|
# Command: add-agent.md
|
|
Use the agent-writer agent to create a new agent named $1 for purpose: $2
|
|
|
|
# Agent: agent-writer.md
|
|
[Full creation logic, file writing, validation]
|
|
|
|
# Skill: agent-design.md
|
|
[Interpretive guidance on agent design principles]
|
|
```
|
|
|
|
### Single Responsibility Per Component
|
|
|
|
**Good component scope:**
|
|
|
|
- Focused on one domain
|
|
- Self-contained knowledge/behavior
|
|
- Clear boundaries
|
|
- Composable with other components
|
|
|
|
**Bad component scope:**
|
|
|
|
- "Do everything" agent
|
|
- Command that reimplements agent logic
|
|
- Skill covering unrelated topics
|
|
- Hook with complex branching logic
|
|
|
|
**Examples:**
|
|
|
|
✅ `python-test-runner` agent (specific language)
|
|
✅ `api-design` skill (focused domain)
|
|
✅ `deploy-staging` command (single operation)
|
|
✅ PostToolUse:Write→prettier hook (one formatter)
|
|
|
|
❌ `full-stack-developer` agent (too broad)
|
|
❌ `all-standards` skill (kitchen sink)
|
|
❌ `do-everything` command (unclear purpose)
|
|
❌ Hook with 10 conditional branches (too complex)
|
|
|
|
### Tool Permission Strategy
|
|
|
|
**Match tools to responsibilities:**
|
|
|
|
```
|
|
Review/Analysis Agents:
|
|
└── Tools: Read, Grep, Glob, WebFetch
|
|
(Read-only, can't modify code)
|
|
|
|
Creation Agents:
|
|
└── Tools: Read, Write, Edit, WebFetch, Glob
|
|
(Can create/modify files)
|
|
|
|
Test/Build Agents:
|
|
└── Tools: Read, Bash, Grep
|
|
(Can execute, analyze output)
|
|
|
|
Full-Power Agents:
|
|
└── Tools: All available
|
|
(Unrestricted, use carefully)
|
|
```
|
|
|
|
**Anti-pattern:** Review agent with Write access (temptation to fix instead of report).
|
|
|
|
**Correct pattern:** Separate agents for review vs fixing.
|
|
|
|
## Common Architectural Anti-Patterns
|
|
|
|
### Anti-Pattern 1: Interactive Agent Design
|
|
|
|
**Problem:** Agent designed assuming user interaction.
|
|
|
|
**What it looks like:**
|
|
|
|
```markdown
|
|
# Agent system prompt
|
|
1. Analyze the codebase
|
|
2. Ask the user which files to focus on ← FORBIDDEN
|
|
3. Request user's preferred style ← FORBIDDEN
|
|
4. Generate documentation
|
|
5. Confirm with user before writing ← FORBIDDEN
|
|
```
|
|
|
|
**Why it fails:** Agents operate in isolated context with no user access.
|
|
|
|
**Solution:**
|
|
|
|
```markdown
|
|
# Agent system prompt
|
|
1. Analyze the codebase
|
|
2. Use provided file parameters or infer from project structure
|
|
3. Apply documented style from CLAUDE.md or common conventions
|
|
4. Generate documentation
|
|
5. Write files using available context and defaults
|
|
```
|
|
|
|
**Key change:** Replace all user interaction with autonomous decision-making.
|
|
|
|
### Anti-Pattern 2: Command with Complex Logic
|
|
|
|
**Problem:** Command tries to implement business logic instead of delegating.
|
|
|
|
**What it looks like:**
|
|
|
|
```markdown
|
|
---
|
|
description: Run tests
|
|
---
|
|
|
|
First check if pytest or jest is configured.
|
|
If pytest, scan for conftest.py and parse fixtures.
|
|
If jest, check jest.config.js for custom settings.
|
|
Determine test file patterns from package.json or setup.cfg.
|
|
Execute tests with appropriate flags based on environment.
|
|
Parse output for failures and categorize by type.
|
|
Generate summary report with statistics.
|
|
```
|
|
|
|
**Why it fails:**
|
|
|
|
- Too complex for simple prompt substitution
|
|
- No error handling capability
|
|
- Hard to maintain
|
|
- Doesn't leverage agent isolation
|
|
- Can't use tools effectively
|
|
|
|
**Solution:**
|
|
|
|
```markdown
|
|
---
|
|
description: Run full test suite and analyze failures
|
|
---
|
|
|
|
Use the test-runner agent to execute all tests and provide detailed failure analysis.
|
|
```
|
|
|
|
**Agent handles:**
|
|
- Framework detection
|
|
- Configuration parsing
|
|
- Test execution
|
|
- Output analysis
|
|
- Report generation
|
|
|
|
### Anti-Pattern 3: Knowledge Duplication
|
|
|
|
**Problem:** Same knowledge hardcoded in multiple places.
|
|
|
|
**What it looks like:**
|
|
|
|
```
|
|
agent-writer.md:
|
|
[50 lines about agent design best practices]
|
|
|
|
command-writer.md:
|
|
[50 lines about agent design best practices]
|
|
|
|
hook-writer.md:
|
|
[50 lines about agent design best practices]
|
|
```
|
|
|
|
**Why it fails:**
|
|
|
|
- Maintenance nightmare (update in 3 places)
|
|
- Token waste (loads redundantly)
|
|
- Inconsistency risk (versions drift)
|
|
|
|
**Solution:**
|
|
|
|
```
|
|
agent-design skill:
|
|
[Comprehensive agent design guidance]
|
|
|
|
Agents load skill automatically:
|
|
├── agent-writer (loads when creating agents)
|
|
├── component-reviewer (loads when reviewing)
|
|
└── validation-agent (loads when validating)
|
|
```
|
|
|
|
**Benefits:**
|
|
|
|
- Single source of truth
|
|
- Token efficient (progressive disclosure)
|
|
- Consistent guidance
|
|
- Easy to update
|
|
|
|
### Anti-Pattern 4: Hook Complexity Explosion
|
|
|
|
**Problem:** Hook tries to handle too many scenarios.
|
|
|
|
**What it looks like:**
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
if [[ "$TOOL" == "Write" ]]; then
|
|
if [[ "$FILE" == *.py ]]; then
|
|
if [[ -f "pyproject.toml" ]]; then
|
|
black "$FILE"
|
|
elif [[ -f "setup.py" ]]; then
|
|
autopep8 "$FILE"
|
|
fi
|
|
elif [[ "$FILE" == *.js ]]; then
|
|
if [[ -f ".prettierrc" ]]; then
|
|
prettier "$FILE"
|
|
else
|
|
eslint --fix "$FILE"
|
|
fi
|
|
fi
|
|
fi
|
|
```
|
|
|
|
**Why it fails:**
|
|
|
|
- Complex, brittle logic
|
|
- Hard to test
|
|
- Slow execution
|
|
- Difficult to debug
|
|
- Doesn't scale
|
|
|
|
**Solution:** Separate hooks for separate concerns.
|
|
|
|
```json
|
|
{
|
|
"PostToolUse": [
|
|
{
|
|
"matcher": "Write|Edit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "prettier --write \"$CLAUDE_FILE_PATHS\" 2>/dev/null || true"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Or:** Delegate intelligence to agent if needed.
|
|
|
|
### Anti-Pattern 5: Vague Component Descriptions
|
|
|
|
**Problem:** Descriptions don't trigger appropriate loading/delegation.
|
|
|
|
**What it looks like:**
|
|
|
|
```yaml
|
|
# Agent
|
|
description: "Helps with agents"
|
|
|
|
# Skill
|
|
description: "Agent information"
|
|
|
|
# Command
|
|
description: "Agent stuff"
|
|
```
|
|
|
|
**Why it fails:**
|
|
|
|
- Claude can't determine when to delegate
|
|
- Skill won't load automatically
|
|
- Command not discoverable in /help
|
|
- Poor user experience
|
|
|
|
**Solution:** Specific, triggering descriptions.
|
|
|
|
```yaml
|
|
# Agent
|
|
description: "Creates Claude Code agents following official specifications and best practices. ALWAYS use when user requests creating a new agent, or when you need to generate an agent autonomously."
|
|
|
|
# Skill
|
|
description: "Interpretive guidance for designing Claude Code agents. Helps apply official documentation effectively and avoid common pitfalls. Use when creating or reviewing agents."
|
|
|
|
# Command
|
|
description: "Create a new Claude Code agent with specified name and purpose"
|
|
```
|
|
|
|
**Pattern:** `[What] for [domain]. [Benefit]. Use when [triggers].`
|
|
|
|
## Plugin Architecture (Multi-Component Design)
|
|
|
|
### Cohesive Plugin Design
|
|
|
|
**Good plugin architecture:**
|
|
|
|
```
|
|
security-tools/
|
|
├── commands/
|
|
│ ├── scan-vulnerabilities.md ← User-triggered scan
|
|
│ └── generate-security-report.md
|
|
├── agents/
|
|
│ ├── vulnerability-scanner.md ← Does actual scanning
|
|
│ ├── security-reviewer.md ← Reviews code
|
|
│ └── report-generator.md ← Creates reports
|
|
├── skills/
|
|
│ └── security-best-practices/
|
|
│ └── SKILL.md ← Shared knowledge
|
|
└── hooks/
|
|
└── hooks.json ← Pre-bash security checks
|
|
```
|
|
|
|
**Component interaction:**
|
|
|
|
```
|
|
User: /scan-vulnerabilities
|
|
↓
|
|
Command: scan-vulnerabilities.md
|
|
├── Delegates → vulnerability-scanner agent
|
|
│ ├── Loads → security-best-practices skill
|
|
│ ├── Scans codebase
|
|
│ └── Returns findings
|
|
│
|
|
└── Delegates → report-generator agent
|
|
├── Receives findings
|
|
└── Returns formatted report
|
|
|
|
Meanwhile:
|
|
PreToolUse:Bash hook
|
|
└── Enforces security constraints on all bash commands
|
|
```
|
|
|
|
**Why this works:**
|
|
|
|
- Commands are thin wrappers
|
|
- Agents do specialized work
|
|
- Skill provides shared knowledge
|
|
- Hooks enforce guarantees
|
|
- Components complement each other
|
|
- Clear separation of concerns
|
|
|
|
### Plugin Scope Philosophy
|
|
|
|
**Focused plugin (good):**
|
|
|
|
```
|
|
python-testing-suite/
|
|
└── Everything related to Python testing
|
|
├── Commands for running tests
|
|
├── Agents for test generation
|
|
├── Skills for testing strategy
|
|
└── Hooks for auto-formatting test files
|
|
```
|
|
|
|
**Kitchen sink plugin (bad):**
|
|
|
|
```
|
|
development-tools/
|
|
└── Unrelated utilities
|
|
├── Python testing
|
|
├── Git helpers
|
|
├── Documentation generators
|
|
├── Deployment scripts
|
|
└── Random utilities
|
|
```
|
|
|
|
**Problems with kitchen sink:**
|
|
|
|
- Unclear purpose
|
|
- Users only want subset
|
|
- Hard to maintain
|
|
- Versioning conflicts
|
|
- Discovery problems
|
|
|
|
## Debugging Cross-Component Issues
|
|
|
|
### Common Delegation Failures
|
|
|
|
**Symptom:** Agent not being invoked automatically.
|
|
|
|
**Diagnosis:**
|
|
|
|
1. Check agent description - too vague?
|
|
2. Verify agent is properly installed
|
|
3. Check tool permissions - missing required tools?
|
|
4. Review context - does situation match description?
|
|
|
|
**Fix:** Strengthen description with specific triggering conditions.
|
|
|
|
### Common Hook Failures
|
|
|
|
**Symptom:** Hook not executing.
|
|
|
|
**Diagnosis:**
|
|
|
|
1. Check hook configuration syntax
|
|
2. Verify matcher pattern (case-sensitive)
|
|
3. Review hook logs (CTRL-R in Claude Code)
|
|
4. Check timeout settings
|
|
|
|
**Fix:** Validate JSON, test hook in isolation.
|
|
|
|
### Common Skill Loading Issues
|
|
|
|
**Symptom:** Skill not loading when expected.
|
|
|
|
**Diagnosis:**
|
|
|
|
1. Check skill description - matches topic?
|
|
2. Verify filename is `SKILL.md` (uppercase)
|
|
3. Check directory structure (`skills/name/SKILL.md`)
|
|
4. Review frontmatter YAML syntax
|
|
|
|
**Fix:** Improve description triggering conditions.
|
|
|
|
## Quality Checklist for Multi-Component Design
|
|
|
|
Before finalizing a plugin or component set:
|
|
|
|
**Architecture (best practices):**
|
|
|
|
- ✓ Each component has single, focused responsibility
|
|
- ✓ Commands delegate to agents (thin wrapper pattern)
|
|
- ✓ Agents use appropriate tools for their role
|
|
- ✓ Skills provide shared knowledge (no duplication)
|
|
- ✓ Hooks enforce deterministic rules only
|
|
- ✓ No interactive patterns in agents
|
|
- ✓ Clear delegation chains documented
|
|
|
|
**Component interaction (best practices):**
|
|
|
|
- ✓ Commands → Agents delegation is clear
|
|
- ✓ Agents → Skills loading makes sense
|
|
- ✓ Agents → Sub-agents delegation is justified
|
|
- ✓ Hooks + Agents complement each other
|
|
- ✓ No circular dependencies
|
|
- ✓ Tool permissions match responsibilities
|
|
|
|
**Descriptions (best practices):**
|
|
|
|
- ✓ Agent descriptions trigger autonomous delegation
|
|
- ✓ Skill descriptions trigger automatic loading
|
|
- ✓ Command descriptions are discoverable in /help
|
|
- ✓ All descriptions follow "what, benefit, when" pattern
|
|
|
|
**Testing (best practices):**
|
|
|
|
- ✓ Test each component independently
|
|
- ✓ Test delegation chains end-to-end
|
|
- ✓ Verify skills load in appropriate contexts
|
|
- ✓ Confirm hooks execute at right events
|
|
- ✓ Validate error handling at each level
|
|
|
|
## Design Decision Tree
|
|
|
|
Use this when choosing component types:
|
|
|
|
```
|
|
START: What are you building?
|
|
|
|
├─ Do you need GUARANTEED execution every time?
|
|
│ └─ YES → Hook (deterministic enforcement)
|
|
│
|
|
├─ Is this USER-TRIGGERED explicitly?
|
|
│ └─ YES → Command
|
|
│ └─ Is it complex logic?
|
|
│ ├─ YES → Command delegates to Agent
|
|
│ └─ NO → Simple command with argument substitution
|
|
│
|
|
├─ Is this KNOWLEDGE that loads when relevant?
|
|
│ └─ YES → Skill
|
|
│ └─ Substantial (20+ lines)?
|
|
│ ├─ YES → Create skill
|
|
│ └─ NO → Put in CLAUDE.md instead
|
|
│
|
|
└─ Is this AUTONOMOUS WORK?
|
|
└─ YES → Agent
|
|
├─ Need isolated context? → Sub-agent
|
|
├─ Need specific tools? → Configure tools field
|
|
└─ Complex task? → Consider sub-agent delegation
|
|
```
|
|
|
|
## Examples: Complete Component Ecosystems
|
|
|
|
### Example 1: Testing Ecosystem
|
|
|
|
**Architecture:**
|
|
|
|
```
|
|
Commands (user-triggered):
|
|
├── /run-tests → Delegates to test-runner agent
|
|
└── /generate-tests → Delegates to test-generator agent
|
|
|
|
Agents (autonomous work):
|
|
├── test-runner
|
|
│ ├── Tools: Read, Bash, Grep
|
|
│ ├── Loads: testing-strategy skill
|
|
│ └── Purpose: Execute tests, analyze failures
|
|
│
|
|
└── test-generator
|
|
├── Tools: Read, Write, Glob
|
|
├── Loads: testing-strategy skill
|
|
└── Purpose: Create test files from code
|
|
|
|
Skills (shared knowledge):
|
|
└── testing-strategy
|
|
├── Testing pyramid philosophy
|
|
├── When to mock patterns
|
|
└── Test design principles
|
|
|
|
Hooks (enforcement):
|
|
└── PostToolUse:Write (*.test.*)
|
|
└── Auto-format test files
|
|
```
|
|
|
|
**Interaction flow:**
|
|
|
|
```
|
|
User: /run-tests
|
|
↓
|
|
Command executes → test-runner agent
|
|
├── Loads testing-strategy skill
|
|
├── Detects test framework (pytest/jest)
|
|
├── Runs tests via Bash tool
|
|
├── Analyzes failures
|
|
└── Returns detailed report
|
|
|
|
Main Claude:
|
|
├── Receives report
|
|
├── Suggests fixes
|
|
└── May delegate to test-generator for missing tests
|
|
```
|
|
|
|
### Example 2: Documentation Ecosystem
|
|
|
|
**Architecture:**
|
|
|
|
```
|
|
Commands:
|
|
├── /document-api → Delegates to api-doc-generator
|
|
└── /review-docs → Delegates to doc-reviewer
|
|
|
|
Agents:
|
|
├── api-doc-generator
|
|
│ ├── Tools: Read, Write, WebFetch
|
|
│ ├── Loads: api-documentation-standards skill
|
|
│ └── Creates API documentation
|
|
│
|
|
└── doc-reviewer
|
|
├── Tools: Read, Grep
|
|
├── Loads: api-documentation-standards skill
|
|
└── Reviews existing docs for compliance
|
|
|
|
Skills:
|
|
└── api-documentation-standards
|
|
├── OpenAPI specification patterns
|
|
├── Example formats
|
|
└── Common pitfalls
|
|
|
|
Hooks:
|
|
└── PostToolUse:Write (*.md in docs/)
|
|
└── Validates markdown syntax
|
|
```
|
|
|
|
### Example 3: Box Factory Meta-Ecosystem (Self-Documenting)
|
|
|
|
**Architecture:**
|
|
|
|
```
|
|
Commands:
|
|
├── /add-agent → agent-writer
|
|
├── /add-command → slash-command-writer
|
|
├── /add-skill → skill-writer
|
|
├── /add-hook → hooks-writer
|
|
└── /review-component → component-reviewer
|
|
|
|
Agents:
|
|
├── agent-writer (loads agent-design)
|
|
├── slash-command-writer (loads slash-command-design)
|
|
├── skill-writer (loads skill-design)
|
|
├── hooks-writer (loads hooks-design)
|
|
└── component-reviewer (loads all design skills)
|
|
|
|
Skills:
|
|
├── agent-design
|
|
├── slash-command-design
|
|
├── skill-design
|
|
├── hooks-design
|
|
├── plugin-design
|
|
└── box-factory-architecture (this skill!)
|
|
```
|
|
|
|
**Why this is powerful:**
|
|
|
|
- Box Factory uses its own patterns to create itself
|
|
- Each component exemplifies what it teaches
|
|
- Meta-skills guide creation of new components
|
|
- Self-documenting, self-consistent ecosystem
|
|
|
|
## Documentation References
|
|
|
|
These are the authoritative sources for the ecosystem:
|
|
|
|
**Core architecture:**
|
|
|
|
- https://code.claude.com/docs/en/sub-agents.md - Isolation model, delegation patterns
|
|
- https://code.claude.com/docs/en/slash-commands.md - User-triggered operations
|
|
- https://code.claude.com/docs/en/hooks - Lifecycle integration
|
|
- https://code.claude.com/docs/en/plugins - Component packaging
|
|
|
|
**Component-specific:**
|
|
|
|
- Fetch agent-design skill for agent creation guidance
|
|
- Fetch slash-command-design skill for command patterns
|
|
- Fetch skill-design skill for knowledge organization
|
|
- Fetch hooks-design skill for hook best practices
|
|
- Fetch plugin-design skill for multi-component packaging
|
|
|
|
**Remember:** This meta-skill teaches ecosystem patterns. Always fetch official docs and component-specific skills for detailed guidance.
|