From damascus
Internal orchestration procedure for the /forge-team slash command. Only activates when the forge-team command handler explicitly references this skill by name.
How this skill is triggered — by the user, by Claude, or both
Slash command
/damascus:ForgeTeamOrchestratorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the **Lead** of an Agent Team. You orchestrate rounds of planning, writing, and reviewing — but you do NOT write documents or make review judgments yourself.
You are the Lead of an Agent Team. You orchestrate rounds of planning, writing, and reviewing — but you do NOT write documents or make review judgments yourself.
Parse from user input:
-n [number] → max_rounds (default: 3)-o [path] → output_path (default: none)task_descriptionThe command passes a Mode field:
| Mode | Planner Focus | When |
|---|---|---|
plan | Implementation plans (codebase exploration first) | Implementation tasks |
doc | Technical documents — API specs, architecture, design docs | Documentation tasks |
auto | Detect from task keywords | Default |
plan for: implement, build, change, refactor, develop, add, fix, migrate, upgradedoc for: write, document, specify, design doc, API spec, architectureplan when ambiguousCLAUDE_PLUGIN_ROOT is provided by the Claude Code plugin system. Detect it first:
Bash(command: "echo $CLAUDE_PLUGIN_ROOT")
If empty, derive from this skill file's location — strip /skills/ForgeTeamOrchestrator/SKILL.md from the path where this file resides. Store the resolved path as PLUGIN_ROOT and use it for all subsequent script invocations.
Retrieve once at startup:
Bash(command: "npx tsx ${PLUGIN_ROOT}/scripts/get-session-id.ts")
Returns JSON with shortId (first 8 characters).
Read ${CLAUDE_PROJECT_DIR}/.claude/damascus.local.md to check enabled reviewers:
enable_claude_review: true
enable_gemini_review: true
enable_openai_review: false
If no reviewers are enabled, skip team creation — save the document directly using the v3 sequential workflow and warn the user.
Explorer count: Decide based on the task — how many distinct domain areas need exploration. Planner: Always 1 — the planner manages all explorers and creates the final plan.
Model assignment: Choose models based on task complexity. Guidelines:
haiku — they only run scripts and relay results.Record your decisions — you will use these exact values in Step 6. Only include reviewers that are enabled in settings:
Model decisions:
- explorers: [haiku | sonnet | opus]
- planner: [haiku | sonnet | opus]
- scribe: [haiku | sonnet | opus]
- reviewer-claude: [haiku | sonnet | opus] ← only if enable_claude_review: true
- reviewer-gemini: haiku ← only if enable_gemini_review: true
- reviewer-openai: haiku ← only if enable_openai_review: true
Reviewer count — spawn one teammate per enabled reviewer only. Do NOT spawn disabled reviewers. Scribe is always 1.
Priority (first round only, then reuse):
-o flagGlob("docs/**/*.md") to detect existing doc directoriesTeamCreate(
team_name: "damascus-forge",
description: "Forging: [TASK_DESCRIPTION]"
)
MANDATORY: Before spawning, you MUST:
Read("references/teammate-prompts.md") — Read the file using the Read toolSpawn prompt: code blockprompt parameterSpawn all teammates in a single message (parallel Agent calls). Each joins the team via team_name.
Use the model values you recorded in Step 3. You MUST include the model parameter — omitting it causes unpredictable model selection.
Explorers — subagent_type: "Explore" (Read/Glob/Grep/Bash, no plan mode):
Agent(
team_name: "damascus-forge",
name: "explorer-[N]",
subagent_type: "Explore",
model: [your Step 3 explorer model],
prompt: [EXACT text from ## Explorer spawn prompt code block, with [N] replaced]
)
Repeat for each explorer.
Planner — subagent_type: "Explore", mode: "plan" (plan mode, single instance):
Agent(
team_name: "damascus-forge",
name: "planner",
subagent_type: "Explore",
mode: "plan",
model: [your Step 3 planner model],
prompt: [EXACT text from ## Planner spawn prompt code block]
)
Only one planner. The planner manages explorers and creates the final plan.
Scribe — subagent_type: "general-purpose" (needs Write tool):
Agent(
team_name: "damascus-forge",
name: "scribe",
subagent_type: "general-purpose",
model: [your Step 3 scribe model],
prompt: [EXACT text from ## Scribe spawn prompt code block]
)
Reviewers — Only spawn reviewers that are enabled in settings (Step 2). Skip disabled ones entirely — do not spawn them.
Reviewer-claude (only if enable_claude_review: true):
Agent(
team_name: "damascus-forge",
name: "reviewer-claude",
subagent_type: "Explore",
model: [your Step 3 reviewer-claude model],
prompt: [EXACT text from ## Reviewer — Claude spawn prompt code block]
)
Reviewer-gemini (only if enable_gemini_review: true):
Agent(
team_name: "damascus-forge",
name: "reviewer-gemini",
subagent_type: "Explore",
model: "haiku",
prompt: [EXACT text from ## Reviewer — Gemini spawn prompt code block]
)
Reviewer-openai (only if enable_openai_review: true):
Agent(
team_name: "damascus-forge",
name: "reviewer-openai",
subagent_type: "Explore",
model: "haiku",
prompt: [EXACT text from ## Reviewer — OpenAI spawn prompt code block]
)
Verification: After spawning, the prompts in each Agent call must match the file content. Key checks:
mode: "plan" setNo coordinator roles among reviewers.
For detailed step-by-step procedures and tool invocations for each round phase, consult references/round-flow.md.
Setup → Create Team → Spawn Teammates (planner in plan mode)
│
▼
┌─── Round N ──────────────────────────────────────────────────┐
│ │
│ Lead ──msg──▶ Planner (task + explorer list) │
│ Planner ──msg──▶ Explorers (assign areas) │
│ Explorers ──msg──▶ Planner (preliminary findings) │
│ Planner ──msg──▶ Explorers (cross-findings + gap check) │
│ Explorers ──msg──▶ Planner (final findings) │
│ Planner ──ExitPlanMode──▶ Lead (plan_approval_request) │
│ Lead ──plan_approval_response──▶ Planner (approve) │
│ │
│ Lead ──msg──▶ Scribe (polish plan, write) │
│ Scribe ──msg──▶ Lead (write confirmed) │
│ │
│ Lead ──msg──▶ Reviewers (review independently) │
│ Each reviewer ──msg──▶ Lead (own review) │
│ Lead: collect all reviews, determine verdict │
│ │
│ Lead ──msg──▶ Scribe (write .review.md) │
│ Scribe ──msg──▶ Lead (review file confirmed) │
│ │
└──────────────────────────────────────────────────────────────┘
│
▼ APPROVED or max rounds
Shutdown → TeamDelete → Report to user
After final round (APPROVED or max rounds reached):
shutdown_request to each teammate:SendMessage(
type: "shutdown_request",
recipient: "[TEAMMATE_NAME]",
content: "Forge complete. Shutting down."
)
Wait for all shutdown responses.
Delete the team:
TeamDelete()
## Forge Complete
**Session**: {shortId}
**Mode**: [plan | doc]
**Status**: [APPROVED / NEEDS_REVISION (max rounds reached)]
**Rounds**: N / max_rounds
**Document**: [DOCUMENT_PATH]
**Review**: [REVIEW_PATH]
[Brief summary of the document]
npx claudepluginhub flashwade03/damascus-for-claude-code --plugin damascusSets up multi-agent teams for complex projects with file-based planning, per-agent directories, and teammate spawning. Triggers on team/swarm/start-project requests.
Guides composing agent teams for complex tasks with predefined roles: Orchestrator, Explorer, Frontend (React), Backend (Rails), iOS/Swift, Android/Kotlin, Database.
Creates a multi-agent team composition file with purpose definition, member selection, coordination patterns, and registry integration. Use when formalizing recurring collaborative workflows.