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.
npx claudepluginhub flashwade03/damascus-for-claude-code --plugin damascusThis skill uses the workspace's default tool permissions.
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.
Creates new Angular apps using Angular CLI with flags for routing, SSR, SCSS, prefixes, and AI config. Follows best practices for modern TypeScript/Angular development. Use when starting Angular projects.
Generates Angular code and provides architectural guidance for projects, components, services, reactivity with signals, forms, dependency injection, routing, SSR, ARIA accessibility, animations, Tailwind styling, testing, and CLI tooling.
Executes ctx7 CLI to fetch up-to-date library documentation, manage AI coding skills (install/search/generate/remove/suggest), and configure Context7 MCP. Useful for current API refs, skill handling, or agent setup.
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]