A reusable Claude Code plugin: a discovery → design → build → verify agent team plus a
stack-aware skill set. Twelve specialist agents run a single pipeline, orchestrated by the /feature
skill, that takes a raw idea all the way to reviewed, verified code — stopping at human approval gates
along the way. It opens by asking whether the idea should be built at all, and can tell you no. The
build agents are platform-scoped, so a web-only app and a web + iOS + Flutter app each get exactly
the agents they need.
Install it once and it's available in every project — no copy-paste. The plugin's own files
(agents, commands, hooks, templates) update via claude plugin update; the third-party stack/role
skills installed by bootstrap.sh are separate installs, refreshed from their own upstreams with
bootstrap.sh --update (see Bootstrap).
Prerequisites: the claude CLI, plus jq, npx, and network access for bootstrap.sh.
1. Install the plugin (once, globally):
claude plugin marketplace add i4mjad/cc-setup # register this repo as a marketplace
claude plugin install cc-setup@cc-setup # install the pluginThen restart Claude Code so the agents, /initialize, and /feature load.
To update later: claude plugin update cc-setup@cc-setup. To develop locally, point the marketplace at
a checkout instead: claude plugin marketplace add /path/to/cc-setup.
After a plugin update, run
/initialize --syncin each existing project. The agents,/feature, and the templates update themselves — but your project's ownCLAUDE.mddoes not, because/initializenever overwrites it. Its §2/§3/§6–§9 are plugin-owned boilerplate (pipeline, folder conventions, standards, traceability, worktrees) and go stale on a pipeline change, while §1/§4/§5 hold your interviewed purpose/domain/stack.--syncrefreshes the former and leaves the latter untouched. Skipping it leaves your governance file describing a pipeline the plugin no longer runs — and every agent reads that file first. Upgrading from 0.8.x specifically: your §2 still starts at business-analyst with a stale agent count, and has no discovery stage and no KILL gate.
2. Scaffold a project (once per project):
/initialize
/initialize writes a starter CLAUDE.md and interviews you for the project shape — full-stack web vs
full-stack + mobile, which mobile (iOS / Flutter / both), and which backend (.NET / Supabase / Firebase /
custom). It records that in CLAUDE.md §5, which decides exactly which build agents /feature dispatches.
(Named initialize, not init, to avoid clashing with Claude Code's built-in /init.)
/initialize --sync is the re-run: it refreshes only the plugin-owned pipeline sections of an existing
CLAUDE.md (§2/§3/§6–§9), preserves your §1/§4/§5 verbatim, and reports what changed. Use it after
every claude plugin update.
--synconly rewrites files that are still template-derived. If your project'sCLAUDE.mdwas hand-written or restructured — its own section names, its own agent names, its own git policy — there are no template sections to swap, and--syncswitches to report-only: it prints the delta between the current pipeline and your file for you to hand-merge, and changes nothing. That's the intended outcome, not a failure; a file someone deliberately authored isn't drift.--syncalso leaves a customized §9 alone in every case — §9 is your git policy and outranks the plugin's default (see below).
3. Install the skills your stack needs (once per project):
# /initialize prints the exact command; e.g. a web + iOS app on Supabase:
/bootstrap web ios supabase roles
Run this as a Claude Code command, not a raw shell command — /bootstrap wraps bootstrap.sh and
runs it through Claude Code's own tool calls, where ${CLAUDE_PLUGIN_ROOT} resolves. Pasting
bash ${CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.sh ... straight into a plain terminal fails — that
variable doesn't exist outside Claude Code.
4. Run the pipeline (any time):
/feature <brief>
Only CLAUDE.md is written into your project — everything else lives in the plugin (referenced via
${CLAUDE_PLUGIN_ROOT}).
Optional — issue tracker for
/wayfinder: the business-analyst can use/wayfinderto plan large, multi-session efforts as decision tickets. It needs a tracker: run/setup-matt-pocock-skillsand choose github (install & authenticate theghCLI:gh auth login), gitlab, or local markdown. Linear isn't supported upstream. Skip this and the agent just uses/grill-me.
| Agent | Role |
|---|---|
| discovery | Raw idea → Discovery Brief with a GO / PIVOT / KILL verdict. Challenges value → viability → usability → feasibility, in that order, and stops the pipeline on a KILL. |
| business-analyst | Validated idea → solution-agnostic business-requirements doc. Interviews you on blocking gaps. |
| product-manager | Business requirements → product spec (MoSCoW scope, v1 vs deferred, Gherkin AC). Answers "what," never "how." |
| architect | Product spec → technical decisions + owner-tagged build tasks (owner: frontend|ios|flutter|backend). |
| designer | Architecture → design.md, a platform-aware design contract the client agents implement to. Runs only for UI initiatives. |
| frontend | Web client tasks (owner: frontend). |
| ios | Native iOS / SwiftUI tasks (owner: ios). |
| flutter | Cross-platform Flutter tasks (owner: flutter). |
| backend | Server/API/data tasks (owner: backend) — adapts to the one backend platform in §5. |
| code-reviewer | Reviews for clean / SOLID / DRY / YAGNI code that stays SIMPLE. Findings only. |
| qa-tester | Browser-tests against the Gherkin AC via the Playwright MCP. |
| api-tester | Exercises endpoints — scenarios, error handling, validation, auth. |
The pipeline itself is the /feature skill (main thread) — it assigns the slug, invokes each agent
in order, runs the present client agents + backend in parallel, consolidates the review, routes
fixes, loops, and stops at the human gates. (No separate conductor agent.)
discovery ─[GATE]─▶ business-analyst ─[GATE]─▶ product-manager ─[GATE]─▶ architect ─▶ designer ─[GATE, if UI]─▶
frontend / ios / flutter + backend (only the platforms in §5, parallel) ─▶ completion-report
─▶ code-reviewer + qa-tester + api-tester (parallel)
─▶ /feature consolidates review, routes fixes ─▶ the tagged build agent
─▶ loop ≤ 3 rounds, then report to the user
discovery returns KILL ─▶ pipeline stops; nothing reaches the business-analyst
- Human gates: after discovery, after business-analyst, after product-manager, and after designer (UI only).
- Discovery can say no. Every initiative starts there, and a KILL stops the pipeline — only you
can overrule it. On GO/PIVOT only the brief's Handoff to BA section crosses the gate, and its
out-of-scope cuts bind everything downstream. It reads your
CLAUDE.md§4/§5 for the market, compliance, and stack a GO has to survive. - Large scope auto-phases: after discovery,
/featuresizes up what the v1 boundary left on its own — if it's too big for one pass (e.g. a new project from scratch), it proposes an ordered set of shippable phases (<project>-phase-N-<name>), gets your approval, then runs the rest of the flow once per phase. You don't have to ask for this; routine features stay a single phase. Discovery isn't re-run per phase. - Backward handoffs expected when upstream is wrong/ambiguous (architect → PM → BA → discovery; designer → PM).
- Escalate-on-ambiguity: downstream agents stop and ask rather than guess.
- Worktree isolation: by default
/featureruns every initiative in its own git worktree offdevelopand merges it back automatically once it ships green — safe to run more than one/featuresession on this repo at a time. This is a default, not a mandate:CLAUDE.md §9is the project's git policy and outranks it, so a repo with its own worktree/branch/merge convention writes it there and/featurefollows that instead.
skills.manifest.json maps each stack to its build skills — declared, not vendored. Backend keys are
mutually exclusive; frontend keys coexist.
| Key | Agent | Skill(s) | Source |
|---|---|---|---|
web |
frontend | /tailwind-design-system, /accessibility, ReUI MCP + skills |
wshobson/agents, addyosmani/web-quality-skills, mcp.reui.io |
ios |
ios | swiftui-expert |
AvdLee/SwiftUI-Agent-Skill (plugin) |
flutter |
flutter | official flutter/skills suite |
flutter/skills (20K+/skill) |
.net |
backend | /dotnet-clean-arch |
i4mjad/dotnet-clean-arch-skill |
supabase |
backend | /supabase, /supabase-postgres-best-practices |
supabase/agent-skills (official) |
firebase |
backend | official firebase/* suite |
firebase/agent-skills (official) |
Always-on per pipeline agent (the roles section):
| Agent | Role skill | Source |
|---|---|---|
| discovery | /grill-me |
mattpocock/skills (454K) |
| business-analyst | /grill-me, /wayfinder¹ |
mattpocock/skills (454K) |
| product-manager | /to-spec, /to-tickets |
mattpocock/skills |
| architect | /architecture-designer |
jeffallan/claude-skills |
| designer | /design-taste-frontend, /high-end-visual-design, /refactoring-ui-skills, figma, Mobbin MCP |
leonxlnx/taste-skill (217K), plugins/MCP |
| code-reviewer | /ponytail-review, /ponytail-audit, /code-review-graph:review-delta |
plugins |
| qa-tester | Playwright MCP | playwright plugin |
| api-tester | /api-testing |
secondsky/claude-skills |
¹ /wayfinder is optional, for efforts too big for one session. It needs an issue tracker — run
/setup-matt-pocock-skills and pick github (via the gh CLI, authenticated with gh auth login),
gitlab, or local markdown. There is no Linear tracker upstream. Without a tracker configured,
the business-analyst stays on /grill-me.
/bootstrap is a Claude Code command that wraps scripts/bootstrap.sh — use it instead of running the
script directly in a terminal (see the note in Install). Install exactly what a project's
shape needs:
# a web + iOS app on Supabase, plus every role skill:
/bootstrap web ios supabase roles
/bootstrap roles # all role skills
/bootstrap --dry-run web # preview commands
/bootstrap # list every key
Update installed skills from their upstreams (they track default branches, so this pulls the
latest) with the same keys plus --update:
/bootstrap --update roles # refresh every role skill
/bootstrap --update web ios roles # refresh a whole project's set
Each agent invokes its skill if present — skip an install and the agent falls back to its own
prompt, so nothing breaks. bootstrap.sh reports any failed install explicitly (exit code 1 with a
summary) so a fallback never happens silently.
Picking up new manifest entries (an existing project that scaffolded before a skill was added to
skills.manifest.json): run claude plugin update cc-setup@cc-setup to pull the updated manifest, then
re-run the plain (non---update) form for the affected key, e.g. /bootstrap web — it installs
whatever is new and safely re-runs whatever you already have. Use the plain form, not --update, for
this: --update assumes every plugin-kind entry under that key is already installed (it runs
claude plugin update instead of install), which fails on an entry that's newly added.
Scripting/CI, where there's no Claude Code session to resolve
${CLAUDE_PLUGIN_ROOT}: runscripts/bootstrap.shdirectly with the plugin's real path, e.g.bash ~/.claude/plugins/cache/cc-setup/cc-setup/<version>/scripts/bootstrap.sh web.
Supply-chain note: the manifest's skill refs point at third-party repos and track their default branches — they are not version-pinned (the installers don't support commit pins). Review what you install; an upstream rename or deletion surfaces as an explicit bootstrap failure.
.claude-plugin/{marketplace,plugin}.json # marketplace + plugin manifests
agents/*.md # the 12 specialist agents (auto-discovered)
skills/feature/SKILL.md # the /feature pipeline orchestrator
commands/initialize.md # the /initialize project scaffolder
hooks/ # PreToolUse guard enforcing the write boundaries
templates/CLAUDE.md # the starter governance /initialize writes
skills.manifest.json # stack + role → skills map
scripts/bootstrap.sh # installs the skills your project needs
scripts/validate.sh # the plugin's own consistency checks (run by CI)
docs/ORCHESTRATION.md · docs/_templates/ # pipeline reference + artifact templates
Enforced boundaries: the reviewer agents (code-reviewer, qa-tester, api-tester) declare read-only
tools:, and a PreToolUse hook blocks any subagent writing review.md, reviewers writing files, and
spec/design agents writing app code — the pipeline's rules are mechanical, not just prompts.
claude plugin marketplace add /path/to/cc-setup
claude plugin install cc-setup@cc-setup