architect
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with…
Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context.
Claude Code
$ npx -y skills add SethGammon/Citadel --skill workspace --agent claude-code
Codex
$ npx skills add SethGammon/Citadel --skill workspace -a codex -y
Cursor
$ npx skills add SethGammon/Citadel --skill workspace -a cursor -y
Gemini CLI
$ npx skills add SethGammon/Citadel --skill workspace -a gemini-cli -y
GitHub Copilot
$ npx skills add SethGammon/Citadel --skill workspace -a github-copilot -y
OpenCode
$ npx skills add SethGammon/Citadel --skill workspace -a opencode -y
Windsurf
$ npx skills add SethGammon/Citadel --skill workspace -a windsurf -y
name: workspace license: MIT description: >- Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context. user-invocable: true auto-trigger: false trigger_keywords: - workspace - multi-repo - cross-repo - across repos - multiple repos - coordinate repos - add redis and snowflake - split into repos last-updated: 2026-03-29 effort: high
**Do not use when:**
1. Check for existing workspace session: `.planning/workspace/session-{slug}.md` — resume if `status: active` or `needs-continue` 2. If starting fresh: identify repos, verify each path is a git repo, read each repo's `CLAUDE.md`, check `.planning/campaigns/` for active campaigns (avoid collisions) 3. **Load prior session context and start watcher**:
node .citadel/scripts/momentum-watch-start.cjs node .citadel/scripts/momentum-read.cjs
Skip momentum injection if output is empty.
Break the direction into repo-scoped work items (one campaign per repo per wave). Table format: `# | Repo | Campaign Direction | Scope | Deps | Wave`.
**Rules:** items with no deps → Wave 1; dependents → Wave 2+. Max 3 repo-campaigns per wave. Scope format: `{repo}:{path}`.
For each inter-wave dependency, specify the cross-repo contract: what the producer will produce, what the consumer expects, and where the contract lives (shared types package, OpenAPI spec, env var).
Create `.planning/workspace/session-{slug}.md` with frontmatter: `version`, `id`, `status: active`, `started`, `completed_at: null`, `direction`, `repos` (path + name + branch per repo), `wave_count`, `current_wave: 1`, `campaigns_total`, `campaigns_complete: 0`.
Body sections: Direction, Repos table (name/path/branch/status), Work Queue (table from Step 2), Cross-Repo Contracts (producer/consumer/contract/location), Wave Execution Log (per wave: status, campaigns, started, completed), Shared Context (discovery relay accumulation).
For each wave:
For each repo-campaign in this wave:
1. Create branch: `git checkout -b workspace/{slug}/{repo-name}` 2. Spawn agent with direction: `/archon` for complex (3+ phases), `/fleet` if parallelizable, `/marshal` or direct skill for simple (1-2 steps) 3. Inject context: discovery briefs from prior waves, prior session context (re-read `momentum.json` via `node .citadel/scripts/momentum-read.cjs`, inject as `=== PRIOR SESSION CONTEXT ===`, skip if empty), cross-repo contracts, relevant `CLAUDE.md` sections from other repos
Extract HANDOFF blocks, compress into cross-repo discovery brief, write persistent discovery records:
node .citadel/scripts/discovery-write.cjs \
--session {session-slug} --agent {repo-name}-{campaign-type} \
--wave {wave-number} --status {success|partial|failed} \
--scope "{repo-name}:{scope-path}" --handoff "{json-array}" \
--decisions "{json-array}" --files "{json-array}" --failures "{json-array}"Write `workspace/briefs/wave{N}-{repo-name}.md` for each completed campaign. Also write `workspace/briefs/wave{N}-cross-repo.md` summarizing:
For each cross-repo contract: verify the producer created the expected output (file + export for types, route existence for endpoints). If verification fails, flag and do not proceed with consumers.
Mark completed campaigns, update wave status, write discovery relay, advance `current_wave`.
1. Run typecheck/build for each repo in isolation (build shared types package first if present) 2. Set session `status: completed`, `completed_at: {ISO timestamp}` 3. Run `node .citadel/scripts/momentum-synthesize.cjs` 4. List all branches created across repos with suggested merge order based on dependency graph 5. Output HANDOFF
Pop on completion or failure.
and ask the user whether to wait, park the existing campaign, or merge scopes.
failed, which producer was responsible, and what the consumer expected. Do not attempt to fix the producer -- surface the issue for the user or re-run the producer campaign.
successful repos. The user decides whether to fix-and-continue or abandon.
An open-source operating layer for Claude Code and OpenAI Codex. Citadel routes requests, preserves repository state between sessions, coordinates parallel work, applies repository safeguards, and records evidence and handoffs around the coding agent you
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with…
Autonomous multi-session campaign agent. Decomposes large work into phases, delegates to sub-agents, reviews output, and…
Generate perfectly aligned ASCII diagrams — architecture, flow, sequence, box-and-arrow. Uses a programmatic character-grid…
Intake-to-delivery pipeline. Processes pending items from .planning/intake/: briefs new ideas, executes approved work through…
Deep cost exploration and transparency. Shows real token usage, session costs, campaign spend, burn rates, and model breakdown.…
End-to-end app creation from a single description. Five tiers: blank project, guided, templated, fully generated, or feature…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.