Orchestration patterns
Single-skill vs multi-skill subagent architectures. Use when designing subagents.From its SKILL.md
npx -y skills add chkim-su/forge-editor --skill orchestration-patternsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.2 KB, as published. Nobody here has run it
Subagent Architecture Patterns
Subagents provide context isolation - intermediate work stays in subagent's context, keeping main conversation clean.
Skill Loading
Two Methods
| Method | When | How |
|---|---|---|
| Frontmatter | Known skills at design time | skills: skill1, skill2 |
| Skill tool | Dynamic discovery at runtime | Skill("plugin:skill-name") |
Method 1: Frontmatter (Static)
skills: skill1, skill2 # Auto-loaded at subagent start
Skills can come from any source (plugins, user, project) - all are globally available.
Method 2: Skill Tool (Dynamic) - REQUIRED for Enhanced Agents
When user asks about [topic]:
1. Call `Skill("plugin:relevant-skill")` to load expertise
2. Apply loaded skill's guidance
3. Do NOT fall back to manual file reading
CRITICAL: Agents with Skill tool MUST use it instead of:
- ❌ Reading skill files directly via
Readtool - ❌ Searching for patterns manually via
Grep/Glob - ✅
Skill("forge-editor:skill-design")- Correct
Example Dynamic Call:
User: "Create a new skill for API validation"
Agent: Skill("forge-editor:skill-design") ← Load skill expertise first
Agent: [Apply skill-design guidance to create the skill]
Pattern 1: Single-Skill Consumer
Use when: Focused, single-domain task
---
name: sql-agent
skills: sql-helper
tools: ["Read", "Grep", "Glob"]
model: sonnet
---
User → Subagent [isolated] → skill-x → Focused result
✅ Fast, focused, clear responsibility ❌ Limited to one domain
Pattern 2: Multi-Skill Orchestrator
Use when: Multi-domain workflow
---
name: fullstack-orchestrator
skills: frontend-design, api-generator, migration-patterns
tools: ["Read", "Write", "Bash", "Task"]
model: sonnet
---
User → Orchestrator [isolated]
├→ skill-a (if UI)
├→ skill-b (if API)
└→ skill-c (if DB)
→ Coordinated result
✅ Handles complex workflows ❌ More decision-making overhead
Pattern 3: Enhanced Agent (with Codebase Bridge + Memory)
Use when: Complex tasks requiring codebase understanding and session continuity
---
name: smart-orchestrator
skills: domain-skill-1, domain-skill-2
tools: ["Read", "Write", "Bash", "Task", "Skill"]
model: sonnet
---
Session Start
↓
claude-mem: load recent context
↓
User Request
↓
Serena Gateway: explore codebase (QUERY)
↓
Match findings → skill-rules.json
↓
Auto-call relevant skills (via Skill tool)
↓
Execute task
↓
claude-mem: store observation
✅ Smart skill discovery via codebase analysis ✅ Cross-session memory persistence ✅ Reduces manual skill selection ❌ Requires Serena + claude-mem setup
Key Components:
- Serena Gateway - Codebase exploration with MCP isolation (see
mcp-gateway-patterns) - skill-rules.json - Trigger patterns for auto-activation (see
skill-activation-patterns) - claude-mem - Context persistence across sessions (see
references/enhanced-agent.md)
Decision Matrix
| Question | Single-Skill | Multi-Skill | Enhanced |
|---|---|---|---|
| Scope? | Narrow | Broad | Broad + Smart |
| Skills needed? | 1 | 2+ | 2+ (auto-discovered) |
| Coordination? | No | Yes | Yes + Auto |
| Memory? | No | No | Yes (claude-mem) |
| Codebase Aware? | No | No | Yes (Serena) |
Best Practices
Single-Skill:
- Name:
{domain}-agent - Minimal tools (Read, Grep, Glob)
- "Use {skill} for all operations"
Multi-Skill:
- Name:
{domain}-orchestrator - Include Task tool for sub-delegation
- Document when to use each skill
- "Don't activate all skills for simple requests"
Enhanced:
- Name:
{domain}-smart-agent - Include Task + Skill tools
- Configure Serena Gateway for exploration
- Set claude-mem project name
- MUST use
Skill()tool for dynamic skill loading - Add explicit instruction: "When relevant topic detected, call
Skill('plugin:skill-name')before proceeding. Do NOT read skill files directly."