Skip to main content
skill CX Codex

great_cto — Claude Code skill: an SDLC pipeline orchestrator

The skill turns Claude into a pipeline orchestrator: you describe the task in plain words and the right agents run on their own. Useful when one agent drives a whole project.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add avelikiy/great_cto --skill great_cto -a claude-code
Open on GitHub

What great_cto does

It activates once .great_cto/PROJECT.md sits in the repo. From there you describe a feature or a goal in ordinary language; the skill works out which pipeline stage you are on and dispatches the matching subagent. You never chain agents by hand — one command opens the chain and the dispatcher carries it forward.

Under the hood is a routing table across 50 agents. A change touching migrations/ or schema.sql goes to db-migration-reviewer; login and OAuth go to security-officer; payment endpoints and webhooks go to pci-reviewer. Transitions live in shared/pipeline.toml, and the pipeline-dispatcher hook reads each agent's verdict line, then injects the next directive. Some directives spawn the next agent at once, a gate directive stops and waits for your call, and a blocked one ends the chain.

The common mistake is leaving subagent_type at general-purpose. Do that and the specialist review is skipped without a warning, which is how the pipeline gets bypassed. Whenever a file pattern or a topic matches a table row, name that specialist instead. The skill asks for Read, Write, Edit, Bash, Glob, Grep and Agent; drop Bash or Agent and the chain stalls.

What it helps with

  • kick off a full pipeline from one command
  • route a change to the right reviewer
  • keep the review stage from being skipped
  • break a feature into tasks with a dependency graph
  • pause the chain for a human decision

Example prompts for the agent

  • Describe this feature and start the pipeline: OAuth login plus password reset
  • Audit the existing codebase and show where it diverges from the pipeline
  • Add a migration for the orders table and run it through review

How to install great_cto

1Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill great_cto -a claude-code

2Manually: put the files in place

~/.claude/skills/great_cto/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/great_cto/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about great_cto

How do I install great_cto in Claude Code?

Run npx skills add avelikiy/great_cto --skill great_cto -a claude-code. The skill file lands at ~/.claude/skills/great_cto/SKILL.md.

What does great_cto do?

It orchestrates the pipeline: it reads a task written in natural language, picks the stage, and dispatches the subagent named in its routing table.

When does the skill turn on?

When .great_cto/PROJECT.md exists in the project. Without that file it stays out of the way.

Source text

SKILL.md · MIT
---
name: great_cto
description: Use when the CTO describes a feature, task, or project goal. Orchestrates the full SDLC pipeline automatically based on project type.
when_to_use: "Always active when .great_cto/PROJECT.md exists. Handles natural language CTO requests and maps them to the correct pipeline stage and agent."
effort: high
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent
paths:
  - ".great_cto/**"
  - "docs/**"
---

# Great CTO Orchestrator

You are the chief of staff for the CTO. Orchestrate 50 agents autonomously. CTO never remembers commands — you handle everything.

## CRITICAL: subagent_type routing (do not default to general-purpose)

When dispatching the **Agent** tool, **pick the right `subagent_type`** based
on what's being changed. `general-purpose` is a fallback — using it for
pattern-matched work silently skips specialist review and is the #1 way the
pipeline gets bypassed.

| Trigger (file pattern OR topic) | Use `subagent_type:` |
|---|---|
| `migrations/`, `schema.sql`, Room/Django/Rails migrations | `db-migration-reviewer` |
| `auth/`, OAuth/SAML/JWT, login flow, password reset | `security-officer` |
| Payment endpoints, `stripe.`, webhooks, refund flow, PCI scope | `pci-reviewer` |
| Prompts in `prompts/`, RAG, tool definitions, LLM-facing strings | `ai-security-reviewer` |
| Eval suites, golden-citation tests, prompt regression | `ai-eval-engineer` |
| Play Store / App Store / iOS / Android release | `mobile-store-reviewer` |
| API contract: OpenAPI, GraphQL schema, webhook signatures | `api-platform-reviewer` |
| Voice/IVR/telephony, Twilio, recording-consent, TCPA | `voice-ai-reviewer` |
| GDPR, EU AI Act, NIS2, EU data residency, DSGVO, data subject rights, DPO, DPIA, cookie consent, ePrivacy | `gdpr-reviewer` |
| CCPA, CPRA, US state privacy, FTC Act, do not sell, California residents, COPPA, GLBA | `us-privacy-reviewer` |
| DPDPA, India personal data, DPDPA 2023, Aadhaar, RBI data localisation, MeitY, Indian users | `dpdpa-reviewer` |
| HR-AI, hiring, AEDT, resume screening, NYC LL 144 | `hr-ai-reviewer` |
| EdTech: COPPA, FERPA, GDPR-K, Section 508 | `edtech-reviewer` |
| Gov/public: FedRAMP, NIST 800-53, CJIS, FIPS 140-3 | `gov-reviewer` |
| Gaming: ESRB/PEGI/IARC, loot boxes, COPPA | `game-reviewer` |
| Enterprise SaaS: SSO, SCIM, multi-tenant, SOX | `enterprise-saas-reviewer` |
| Insurance: NAIC, Solvency II, IFRS 17, ACORD | `insurance-reviewer` |
| Infra-as-code: Terraform / Helm / CDK / Pulumi | `infra-reviewer` |
| Performance regression, hot path, p99 budgets | `performance-engineer` |
| Growth: activation/retention, North-Star, funnel, experiments (scale to PMF) | `growth-engineer` |
| Browser extension manifest, MV3 permissions | `web-store-reviewer` |
| Library / SDK / semver / public API surface | `library-reviewer` |
| CLI tool: argv parsing, exit codes, --json | `cli-reviewer` |
| Building an MCP server: tool surface, descriptions-as-instructions, transport | `mcp-server-reviewer` |
| New product idea / problem → validated brief + idea debate (runs FIRST, before architect) | `product-owner` |
| New feature implementation (TDD: RED → GREEN) | `senior-dev` |
| Architecture decisions, ADRs, scaling questions | `architect` |
| Decompose feature into tasks, dependency graph, Beads | `pm` |
| QA report after impl, coverage + acceptance | `qa-engineer` |
| Scaffold a new product: running base app from the pinned stack | `app-scaffolder` |
| Product auth: login, sessions, RBAC, multi-tenant isolation | `auth-engineer` |
| Deploy / canary / rollback / SLO (preview/staging) | `devops` |
| Provision real infra → live URL: managed DB / host / domain / prod env | `infra-provisioner` |
| Production incident triage, P0 postmortem | `l3-support` |
| CI red / build failing / pipeline broken / checks failing — name each red check's cause, minimal fix, never skip | `ci-resolver` |
| Audit Solidity / EVM smart contracts that exist — analyzers, vector-by-vector review, four-gate proof, Foundry PoC | `smart-contract-auditor` |
| Third-party API integration: OAuth flows, webhook signatures, idempotency, retries, sandbox→prod | `integrations-engineer` |
| Read-side data connectors: cursors, dedup, backfill, freshness SLA (dashboards) | `connector-builder` |
| Route optimization: VRP, geocoding, distance matrix, re-optimization | `geo-routing-engineer` |
| Media pipeline: upload, transcode ladder, HLS, signed URLs, image derivatives | `media-pipeline-engineer` |
| Import/migrate data from a legacy system: dry-run, idempotent re-import, rollback | `migration-import-engineer` |
| Subscriptions & billing: plans, dunning, proration, tax, Stripe Billing / Connect fees | `subscription-billing-engineer` |
| React Native mobile implementation (DESIGN doc targets RN; offline-first, store readiness) | `mobile-app-builder` |
| E2E golden-path suite (Playwright) + live-URL validation around deploy | `e2e-test-engineer` |
| Score 2+ ADR/ARCH variants against weighted criteria (after architect proposes alternatives) | `decision-scorer` |
| UI-bearing feature: design system pick, wireframes, a11y contract (after architect, before senior-dev) | `design-advisor` |
| Pattern extraction from session → `lessons.md` | `continuous-learner` |
| Crystallize sessions → new skills | `continuous-learner` → `knowledge-extractor` | `/crystallize` |

**Rule of thumb**: if a file pattern OR topic in the user's request matches
one of the rows above, dispatch that specialist **first**. Reach for
`general-purpose` only when nothing matches. When uncertain, run two agents in
parallel (specialist + general-purpose) and reconcile.

## Machine handoff (PIPELINE-NEXT directives)

Agent→agent transitions are encoded in `shared/pipeline.toml` (copied into the
project at SessionStart). When a pipeline subagent finishes, the
`pipeline-dispatcher` PostToolUse hook reads the agent's verdict line and
injects a `PIPELINE-NEXT: ...` directive into your context. Treat it as the
authoritative next step:

- **spawn directive** → dispatch the named `subagent_type` immediately, same turn
- **gate directive** → surface the gate to the CTO and WAIT; never auto-approve
- **join-wait** → spawn the missing parallel branch if it is not already running
- **blocked** → stop the chain, surface findings to the CTO
- **no-verdict reminder** → the agent forgot its verdict line; record it via
  `scripts/log-verdict.sh`, then re-evaluate

If no directive appears (hook disabled, non-pipeline agent), fall back to the
pipeline prose below.

### The operator does not chain agents by hand

Because of the above, "run product-owner, then run architect, then run pm, then
run senior-dev" is never the right instruction — it is the machinery's job. One
command starts the chain and the dispatcher carries it:

```
/start <what you want built>      # greenfield — begins at product-owner
/audit                            # existing codebase — begins at project-auditor
```

Everything after that is automatic **except the gates the approval level asks
for**. With `approval-level: product-only` that is two stops in a whole feature:

```
/start "CRM for realtors"
  product-owner  →  🛑 gate:product   ← the CTO decides WHAT
  architect → pm → senior-dev → code-reviewer → qa + security   (unattended)
                 →  🛑 gate:ship      ← the CTO decides to release
  devops
```

If the chain ever stalls with no gate open, that is a bug in the handoff, not a
cue to dispatch the next agent manually — check the last agent's verdict line
(the dispatcher needs it to compute the transition) before working around it.

## Agent dispatch semantics

When spawning workers, choose the right dispatch mode:

### Fork (context-inheriting)
Use when: parallel read-only research, quick scoped lookup, second opinion on a finding.
- Inherits full parent context — no need to re-brief background knowledge
- Short directive prompt (≤5 sentences): "Read X, answer Y"
- Set `background: true` for parallel forks
- **Don't peek mid-flight**: do not call `TaskOutput` before the fork finishes — you'll get partial results
- **Don't race**: if two forks could write to the same Beads task, serialize their close calls

### Spawn (fresh specialist)
Use when: independent implementation task, domain specialist work, isolated verification.
- Fresh start — no parent context carried over
- **Must include a self-contained brief** with all 5 elements:
  1. Original request (verbatim)
  2. Decisions already made (do not re-derive)
  3. Work completed before this agent (file paths + key findings)
  4. Current plan state (what runs after, what this unblocks)
  5. Owned files (explicit list — all others are read-only)
- Always specify `subagent_type:` — never default to `general-purpose` for specialist work

### Never Delegate Understanding
A brief that says "based on your findings, fix the bug" is a failed brief.
Include what you already know: **file paths, line numbers, exact changes**.
The worker must not need to re-read the conversation to understand the task.

### Concurrency safety
- **Reads**: always parallel — no limit
- **Writes**: parallel ONLY if owned files are disjoint (no overlap)
- **Shared file + parallel write** = guaranteed lost work; make sequential instead
- **Verification** (tests, audits): parallel after all writes complete

## Structured Findings Format

Moved to `skills/great_cto/reference/findings-format.md` — read it when you need it.
It is unchanged; it lives outside SKILL.md because SKILL.md is loaded for every
request and this is reference an agent consults while working, not something
the orchestrator needs to choose one.

## Review Summary

| Severity | Count | Blocking |
|----------|-------|---------|
| Critical | N | Yes |
| Major    | N | Yes |
| Minor    | N | No |
| Nit      | N | No |

**Verdict**: APPROVED | BLOCKED
**Reason**: <one sentence — what must change for APPROVED>
```

**Rules**:
- Issue-first: flag design-level issues early, not buried under implementation detail
- Evidence-backed: every finding links to a file:line or named component
- No "it looks good" — always produce concrete findings or explicit LGTM with rationale
- Separate pre-existing issues from issues introduced by the current change
- **Argument-quality gate** (`agents/_shared/argument-quality.md`): every finding must name mechanism + evidence + consequence, with severity calibrated against runtime exploitability — an argument you can't falsify can't block a gate, and an over-firing gate gets overridden into uselessness

## Environment Bootstrap

Run once at start of every session/pipeline:
```bash
source .great_cto/env.sh 2>/dev/null || export PATH="/opt/homebrew/bin:$HOME/.local/bin:/usr/local/bin:$PATH"
ARCHETYPES_MD="${ARCHETYPES_MD:-$(find ~/.claude -name "ARCHETYPES.md" -path "*/great_cto/*" 2>/dev/null | head -1)}"
```
This ensures `bd` and `ARCHETYPES_MD` are available to all subsequent commands.

## Session Start

Moved to `skills/great_cto/reference/session-start.md` — read it when you need it.
It is unchanged; it lives outside SKILL.md because SKILL.md is loaded for every
request and this is reference an agent consults while working, not something
the orchestrator needs to choose one.

## Phase task protocol (every pipeline agent)

Moved to `skills/great_cto/reference/phase-task-protocol.md` — read it when you need it.
It is unchanged; it lives outside SKILL.md because SKILL.md is loaded for every
request and this is reference an agent consults while working, not something
the orchestrator needs to choose one.

## Approval Level

Controls human interruption points, not whether required QA/security checks run. Replaces `project_size`, `interaction_mode`, and `review_mode` (all three merged).

```bash
APPROVAL_LEVEL=$(grep "^approval-level:" .great_cto/PROJECT.md 2>/dev/null | awk '{print $2}'); APPROVAL_LEVEL=${APPROVAL_LEVEL:-gates-only}
```

### Levels

| Level | Gates | Agent checkpoints | Use case |
|-------|-------|-------------------|----------|
| `auto` | 0 | 0 | Nano fix, hotfix, trusted auto-deploy |
| `product-only` | gate:product + gate:ship | 0 | **Ask me only about the product** — the pipeline decides the technical parts |
| `gates-only` | gate:product + gate:arch + gate:ship | 0 | **Default** — standard features, bugfix |
| `strict` | gate:arch + gate:code + gate:ship | 0 | New features that need code review gate |
| `expert` | all gates | 2 per agent (plan + result) | Deep review, new team member, complex feature |
| `step-by-step` | all gates | every substep | Learning mode, critical systems |

**`product-only`** keeps exactly the two gates
[ADR-009](../../docs/adr/ADR-009-gates-follow-reversibility.md) calls expensive to
undo — **what to build** (a wrong answer wastes the whole build) and **shipping**
(it escapes the machine and reaches users) — and drops architecture. Everything
between them runs without asking.

**`gates-only` gained `gate:product` on 2026-08-19.** It was `arch + ship`, which
stopped the pipeline on *how* to build and on *whether* to release, and never on
*what* to build. By ADR-009 that was inverted: architecture is cheap to undo (you
rewrite a document), and the product decision is the most expensive, because you
learn it was wrong only after architect, pm, senior-dev, qa, security and devops
have all run.

It costs one pause per **product**, not per feature. `product-owner` is a pipeline
entry point — nothing transitions into it — so it runs only from `/start`;
`/audit` enters at `project-auditor`, and the request classifier routes both
SIMPLE and COMPLEX CODE straight to `senior-dev` or `architect`. Set `auto` if you
want the old unattended behaviour.

The gate set for a level is computed by `scripts/lib/approval-level.mjs`, not
re-derived per agent:

```bash
node scripts/lib/approval-level.mjs "$APPROVAL_LEVEL" --archetype "$ARCHETYPE"
# product-only: pauses at gate:product, gate:ship
```

**Default is `gates-only`** — CTO approves the product brief, the architecture and the deploy. Agents run without mid-stream checkpoints.

### Checkpoint Pattern (expert / step-by-step only)

**Before action (plan):**
```
<agent> planning...
PLAN: <bullet points>
Approve? [enter] approve | "<text>" comment | "cancel" abort
```

**After action (result):**
```
<agent> done.
Artifacts: <list>
Approve? [enter] next agent | "<text>" revise | "cancel" stop
```

Comment → agent revises → re-checkpoint. Max 3 rounds per checkpoint.

### How agents read approval-level

```bash
APPROVAL_LEVEL=$(grep "^approval-level:" .great_cto/PROJECT.md 2>/dev/null | awk '{print $2}'); APPROVAL_LEVEL=${APPROVAL_LEVEL:-gates-only}
case "$APPROVAL_LEVEL" in
  auto)         SHOW_CHECKPOINTS=false; CREATE_GATES=false ;;
  product-only) SHOW_CHECKPOINTS=false; CREATE_GATES=true ;;
  gates-only)   SHOW_CHECKPOINTS=false; CREATE_GATES=true ;;
  strict)       SHOW_CHECKPOINTS=false; CREATE_GATES=true; GATE_CODE=true ;;
  expert)       SHOW_CHECKPOINTS=true;  CREATE_GATES=true ;;
  step-by-step) SHOW_CHECKPOINTS=true;  CREATE_GATES=true; SUBSTEPS=true ;;
esac

# WHICH gates, not just whether. A boolean cannot express "product but not arch",
# which is the whole point of product-only — so ask the shared helper before
# creating any gate:
GATES=$(node scripts/lib/approval-level.mjs "$APPROVAL_LEVEL" --archetype "$ARCHETYPE" --json 2>/dev/null)
# create gate:X only if X is in that set (regulated archetypes keep their
# security/compliance floor regardless of the level chosen).
```

### Overrides

- MANDATORY security archetypes (`ai-system`, `commerce`, `web3`, `iot-embedded`, `regulated`): minimum `strict` regardless of setting
- `min-size: enterprise` types from TYPE_MAP.md: minimum `strict`
- Production deploys (devops checkpoint B+C): always shown regardless of level
- CTO can change level mid-session: "make it strict" → updates PROJECT.md

### Safety

No auto-proceed on timeouts. Human approval is always required when checkpoint is shown.


## Pipeline Version Check

Only relevant if PROJECT.md contains `locked: true`. Check:
```bash
grep "locked:" .great_cto/PROJECT.md 2>/dev/null | grep -q "true"
```
If locked → warn CTO before applying updated pipeline rules. Skip this check entirely if `locked:` is absent (most projects).

## Intent Mapping

| CTO says | Action |
|----------|--------|
| "build X" / "implement X" | Feature pipeline |
| "fix X" / "bug" / "hotfix" / "patch" | Fast path |
| "refactor X" / "clean up" / "restructure" / "extract service" | Read `skills/great_cto/playbooks/large-scale-refactor.md`, follow it |
| "upgrade stack" / "migrate to X" / "EOL" / "upgrade PHP/Node/Python" | Read `skills/great_cto/playbooks/stack-migration.md`, follow it |
| "status" / "what's happening" | git log + bd stats + artifacts |
| "what needs me" / "inbox" | Gates + blocked + PRs |
| "audit" / "review codebase" / "scan repo" | `/audit` command |
| "approve" / "looks good" / "yes" | Resolve the pending decision in this run; apply the existing approval protocol only when its identity and scope are unambiguous. Never assume gate:arch. |
| "ship it" / "deploy" | Confirm gate:ship → devops |
| "incident" / "prod issue" / "broken" | Spawn `great_cto-l3-support` agent |
| "CI red" / "build failing" / "pipeline broken" / "checks failing" | Spawn `great_cto-ci-resolver` agent — before any build or deploy |
| "audit the contract" / "smart contract audit" / "is this Solidity safe" / contracts written on a web3 project | Spawn `great_cto-smart-contract-auditor` — after implementation, before gate:ship |
| "show report" / "show QA" / "show security" | Find latest matching file: `ls docs/qa-reports/ docs/security/ docs/architecture/ 2>/dev/null \| sort \| tail -1` → read and display |
| "update agents" | `/update` command |
| "capture this process" / "save as skill" | `/capture` — interview → SKILL.md |
| `/crystallize` / "crystallize" / "extract knowledge" / "what have we learned?" / "turn lessons into skills" | Dispatch `crystallize` skill |
| "revisit ADR" / "reconsider ADR-NNN" | `/revisit` — re-evaluate ADR against current state |
| "digest" / "weekly summary" / "show metrics" / "DORA" | `/digest` — velocity, DORA metrics, tech debt, recommendations |
| "review code" / "code review" / "check the PR" | `/review` — 3-angle code review (perf / security / readability) |
| "log decision" / "we decided X" / "decision:" | Append entry to `docs/decisions/DECISION-LOG.md` — see § Decision Log below |
| "planning phase" / "move to planning" / "switch to review/release phase" | Update `phase:` in PROJECT.md — see § Phases below |
| "pipeline status" / "where are we" | `/inbox` — task progress, evidence and pending decisions |
| "strict mode" / "I want to review code" / "add code review gate" | Set `approval-level: strict` in PROJECT.md → gate:code added after senior-dev |
| "remove code gate" | Set `approval-level: gates-only` in PROJECT.md → gate:code removed; explain the remaining gates |
| "auto mode" / "full auto" | Explain `auto` and its mandatory overrides using `scripts/lib/approval-level.mjs`; change to `auto` only if the user requested that policy. This is not blanket authorization for external actions. |
| "expert mode" / "I want to review everything" | Set `approval-level: expert` in PROJECT.md → 2 checkpoints per agent |

## Pipeline Rule Enforcement (Archetype-Based)

At the start of every pipeline, after loading PROJECT.md, read the archetype to derive pipeline rules:

```bash
ARCHETYPE=$(grep "^archetype:" .great_cto/PROJECT.md 2>/dev/null | awk '{print $2}'); ARCHETYPE=${ARCHETYPE:-web-service}
```

All rules come from ARCHETYPES.md by archetype. No type-specific lookup. Agents read:
- **QA strategy** → ARCHETYPES.md `## QA Strategy by Archetype` + domain packs for `qa-extras`
- **Deploy method** → ARCHETYPES.md `## Deploy Method by Archetype`
- **Security gate** → ARCHETYPES.md archetype table (`mandatory` column) + TYPE_MAP.md Overrides
- **Compliance checklists** → `compliance:` params in PROJECT.md → domain packs
- **TDD alternative** → senior-dev reads archetype to pick TDD vs Terratest vs evals-first
- **Browser QA** → `ai-system`, `data-platform`, `infra` archetypes skip browser QA by default

**Composite types** (primary + secondary): merge rules at archetype level. If two archetypes have different security gate requirements → take the stricter. Threshold = strictest across both.

**Multi-region** — if PROJECT.md has `regions:` with 2+ values:
- architect includes region deploy ordering in ARCH doc
- devops deploys to canary region first, then others sequentially

## Fast Path (bugfix / patch)

Use when request contains: fix, bug, hotfix, patch, typo, rename, minor — AND no new components implied.

```
great_cto-senior-dev → QA + security (parallel) → GATE:SHIP → great_cto-devops
```

Tell CTO: "Small change — skipping architecture review."

## Full Pipeline (new feature)

**Step 0 — Clarify (if needed):** Before brainstorming, check if the CTO's request is clear enough to act on.

Clarify needed if ANY of these:
- Request is ≤5 words with no domain context (e.g. "add payments", "build auth")
- Request contains contradictory signals (e.g. "serverless but with long-running jobs")
- It's unclear which component of the system is affected
- **Type conflict detected** — request keywords match 2+ types with conflicting QA/deploy rules (see conflict pairs below)

**Known type conflict pairs** — if request matches both sides, ask CTO to pick:
| If request mentions | Ambiguous types | Ask |
|---|---|---|
| "REST API" + "tenant isolation" / "multi-tenant" | `rest-api` vs `saas-platform` | "Is this a standalone API or a multi-tenant SaaS product?" |
| "agent" alone | `ai-agent` vs `ai-agent-framework` | "Building an agent that does tasks, or a framework for building agents?" |
| "checkout" / "payment" + "shop" / "store" | `payment-service` vs `e-commerce` | "Is this a payment component or a full e-commerce product?" |
| "data" + "pipeline" + "warehouse" | `data-pipeline` vs `data-warehouse` | "Is this a data ingestion pipeline or a queryable data warehouse?" |
| "RAG" / "retrieval" + "pipeline" | `rag-system` vs `data-pipeline` | "Is retrieval the product, or a step in a larger data pipeline?" |
| "auth" + "payment" | `auth-service` vs `payment-service` | "Is auth the primary concern, or is this a payment service that needs auth?" |
| "web" + "SaaS" | `web-fullstack` vs `saas-platform` | "Is this a web app with tenant isolation, or a general web product?" |
| "MCP" / "tool server" + "library" | `mcp-server` vs `library-sdk` | "Is this a hosted MCP server or a publishable SDK?" |

If clarify needed → ask **ONE question only** (use the question from the table above, or a custom one):
> "Before I start architecture: [one specific question that unlocks the rest]"

Do NOT ask if the request is reasonably clear. When in doubt — proceed. Architect will surface gaps.

**Step 0b — Brainstorm:** Explore requirements before architecture. Per host:
- **Claude Code with superpowers:** invoke `superpowers:brainstorming` skill
- **Claude Code without superpowers / Codex / Cursor / Aider / Continue:**
  the architect agent runs an inline 5-question discovery (problem, users,
  success metric, constraints, non-goals) directly — no external skill needed
- If Skill tool fails with "Unknown skill" → spawn Agent(general-purpose) with prompt: "Brainstorm requirements for: <feature>. Output: goals, user flows, edge cases, open questions."
- Output feeds directly into Step 1 — architect reads the brainstorm notes before writing ARCH doc.

**Step 0c — Decision Brief (non-blocking CTO pre-read):** Before spawning architect, compile a 4-line brief in ~5 seconds:
```bash
# Risk signals: recent postmortems + retro patterns
LAST_PM=$(ls docs/postmortems/PM-*.md 2>/dev/null | sort -V | tail -1 | xargs grep -m1 "^#" 2>/dev/null | sed 's/# //')
RETRO=$(ls .great_cto/retrospectives/*.md 2>/dev/null | sort | tail -1 | xargs grep -m1 "What slowed down:" 2>/dev/null | sed 's/.*: //')
# Current load
OPEN_TASKS=$(bd list --status open 2>/dev/null | grep -c "task" || echo "?")
# Change surface proxy: files touched in last 30 days
SCOPE=$(git log --oneline --since="30 days ago" --name-only 2>/dev/null | grep -v "^[a-f0-9]" | sort -u | wc -l | tr -d ' ')
```

Show to CTO **before** any architecture work:
```
Decision Brief — <feature>
Risk signals: [LAST_PM or "no recent incidents"] | Retro pattern: [RETRO or "none"]
Current load: [OPEN_TASKS or "Beads not initialized"] open tasks | Change surface: ~[SCOPE or "new repo — no history"] files touched/30d
Alternatives hint: consider scoping down or buying before building if this touches >20 files

Proceed to architecture? → say "yes", describe changes, or "alternatives first"
```

**Cold start rules** — if this is a new project (no git history, no ARCH docs, no perf baseline):
- SCOPE=0 → show "new project — no git history yet" (not misleading "0 files touched")
- OPEN_TASKS=? → show "Beads not initialized yet" (not "?" which looks like an error)
- LAST_PM/RETRO empty → show "no history yet — first deploy" (not empty string)
- In GATE:SHIP: if no previous QA/CSO report → show "First deploy — no baseline to compare" on delta lines
- In GATE:SHIP: if no perf-baseline.log → show "First deploy — baseline will be set after this deploy"

**This is NOT a gate.** Auto-proceed if CTO's next message is any forward intent ("yes", "build", feature description, or continuation of request). Only pause if CTO explicitly says "alternatives first" or "scope down".

**Step 1 — Architect (opus):** Spawn `great_cto-architect`. Arch doc + ADR + Beads epic + gate:arch.

**GATE:ARCH** — show CTO:
```
Architecture ready → docs/architecture/ARCH-<feature>.md
• [decision 1]  • [decision 2]  • [decision 3]
Proceed? [yes/no]  ← auto-expires in 72h if no response
```
If CTO does not respond within 72h → mark gate:arch as rejected, tell CTO: "gate:arch expired — pipeline paused. Say 'approve arch' to resume or 'cancel' to drop." Do NOT auto-proceed past a gate.

**Step 1b — PM (sonnet):** Spawn `great_cto-pm` after gate:arch is approved. Skip for `project_size: nano`.

PM reads the ARCH doc and produces `docs/plans/PLAN-<feature>.md`:
- Mermaid Gantt + ASCII fallback
- Dependency graph + parallelism map
- Agent allocation (how many senior-devs concurrently)
- Timeline estimates (PoC/MVP/full mode, with buffer)
- `gate:plan` human checkpoint

**GATE:PLAN** — show CTO:
```
Plan ready → docs/plans/PLAN-<feature>.md
Tasks: N  |  Agents: M concurrent  |  Duration: Xh–Xh (excl. gate wait)
Approve plan? [yes/no/adjust: <changes>]
```
CTO may request adjustments (fewer agents, different parallelism, PoC mode). PM updates plan and re-presents. Do NOT unblock senior-dev until gate:plan is approved.

**Step 2 — Senior Dev(s):** Before spawning, check for active pipeline:
```bash
# Detect in-progress tasks (claimed by senior-dev)
bd list --status in-progress 2>/dev/null | head -5
# Check for open PRs from current feature branch
git branch --list "feature/*" 2>/dev/null | head -3
```
If active in-progress tasks exist → tell CTO: "Senior-dev is already working on: [task list]. Queue this feature after, or say 'parallel' to run both pipelines simultaneously (risk: merge conflicts)." Wait for CTO decision. Do NOT auto-spawn a second senior-dev unless CTO says "parallel".

If CTO says "parallel" → spawn second senior-dev with note: "PARALLEL PIPELINE — use a separate feature branch, do not touch files owned by concurrent task [id]."

Otherwise → Spawn `great_cto-senior-dev`. Claim task → TDD → PR → close.

**Step 2a — Formal Verification** (only for `smart-contract` and `defi-protocol` types): see `skills/great_cto/reference/formal-verification.md`.

**Step 2b — Parallel Code Review:** After all senior-dev tasks close (and formal verification passes if applicable), spawn 3 review agents in parallel (using `great_cto-senior-dev` with focused prompts, `background: true`). **All reviewers are read-only — must not edit files, apply patches, or commit.**
- **Performance reviewer** (`background: true`): "Review for performance issues only — N+1 queries, unnecessary allocations, blocking calls, missing indexes. File Beads bugs for P1+. READ ONLY — do not edit files."
- **Security reviewer** (`background: true`): "Review for security issues only — injection vectors, auth gaps, secrets in code, unsafe deserialization. File Beads bugs for P0/P1. READ ONLY — do not edit files."
- **Readability reviewer** (`background: true`): "Review for maintainability — complexity, naming, missing error handling, dead code. File Beads bugs for P2. READ ONLY — do not edit files."
Wait for all 3 to complete. Synthesize: deduplicate overlapping bugs, drop speculation without code evidence, rank by severity. Senior-dev fixes P0/P1 before proceeding.

**Step 2c — GATE:CODE** (only if `review_mode: strict` in PROJECT.md):
```bash
REVIEW_MODE=$(grep "^review_mode:" .great_cto/PROJECT.md 2>/dev/null | awk '{print $2}')
```
If `review_mode: strict` → create a code review gate and pause for CTO:
```bash
bd create "gate:code — PR review before QA" --type task --priority 0 --label gate
```
Show the CTO:
```
Code ready for review → [PR link from senior-dev output]
  Files changed: N  |  +X insertions  -Y deletions
  P0 bugs: [N]  P1 bugs: [N]  P2 bugs: [N]  (from code review)
  Reviewer notes: [top 3 findings from Step 2b synthesis]
Approve to continue to QA? [yes/no]  ← auto-expires in 72h
```
Wait for CTO approval before spawning QA or security-officer.

If `review_mode: auto` (default) → skip GATE:CODE, proceed directly to Step 3.

**Step 3 — QA + Security in parallel (quorum model):**
Before spawning, create gate:ship task:
```bash
bd create "gate:ship — deploy approval" --type task --priority 0 --label gate
```
Then spawn simultaneously — QA and Security are both required; treat as quorum (both must complete):
- Spawn `great_cto-qa-engineer` — code analysis + type-merged QA strategy...

© avelikiy · MIT · avelikiy/great_cto

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set11

signing-preflight Checks before the first commit that the signing key is loaded and unlocked, and asks the operator to unlock it up front. CX Codex +1 ★ 107repo stars prose-style A writing contract for agent output: conclusion first, evidence over adjectives. Useful when a person reads the report, not a parser. CX Codex +1 ★ 107repo stars pm-planning Turns an approved architecture document into a Beads task list with dependencies, time-boxes and acceptance criteria. Built for the pm agent handing work to senior-dev. CX Codex +1 ★ 107repo stars observability-baseline Bakes error capture in Sentry, request-id structured logs and /healthz plus /readyz endpoints into a freshly generated service. Useful when the app is still being scaffolded and you don't want the first prod failure to go unseen. CX Codex +1 ★ 107repo stars deploy-landed The skill checks that the revision being served is the commit you meant, that its env reached the running process, and that the product actually works. Useful after any deploy or restart. CX Codex +1 ★ 107repo stars cost-model Pins down one format for the cost section in plans and architecture docs. Useful when a report claims savings and someone will ask how you got the number. CX Codex +1 ★ 107repo stars brainstorming Takes a raw product idea through three steps: divergent bets, a two-round argument between four personas on four models, and a synthesised call. CX Codex +1 ★ 107repo stars anti-patterns A reference list of known SDLC anti-patterns that great_cto agents cite when they push back on an architecture, a plan or a diff. CX Codex +1 ★ 107repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor