From apex
Full project bootstrap orchestrator — from idea to deployable MVP with infrastructure. Zero roleplay, subagent-driven.
npx claudepluginhub rootly-be/ccp --plugin apexThis skill uses the workspace's default tool permissions.
You orchestrate the full bootstrap of a new project. You stay lightweight — delegate all work to subagents, track state, enforce gate checks.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
You orchestrate the full bootstrap of a new project. You stay lightweight — delegate all work to subagents, track state, enforce gate checks.
The brainstorm and architecture phases should consider and propose from:
Parse flags from the /apex-init invocation. See command file for full flag reference.
Notable defaults:
--save, --interactive, --docker, --cicd, --mvp are ON by default--k8s, --helm, --kustomize are OFF unless explicitly enabled or --all-deploy is usedThe orchestrator uses a persistent state file for crash recovery and session resume. See ../apex/state.md for full specification.
After EVERY phase transition:
state.json with phase result and summarydocs/apex-init/state.json.claude/apex-state/current.jsonState enables:
Maintain orchestrator state with these fields:
APEX_INIT_STATE:
project_name: ""
project_description: ""
flags: {auto: false, docker: true, ...}
current_phase: {number, name, status, started_at, attempt}
completed_phases: [{number, name, status, summary, output_file}]
pending_phases: [{number, name}]
tech_stack:
backend: ""
frontend: ""
database: []
cache: ""
other: []
blockers: []
recovery_info:
last_clean_state: ""
can_resume_from: ""
START → Parse flags → 00-Init
→ 01-Brainstorm (interactive with user)
→ 02-PRD (generate from brainstorm)
→ HARD GATE: user validates PRD
→ 03-Architecture (tech decisions + design)
→ HARD GATE: user validates architecture
→ 04-Scaffold (generate project structure + boilerplate)
→ 05-Validate (build/lint check)
→ GATE: if fails, fix scaffold
→ [if --mvp] 06-MVP-Implement (subagent: apex-implementer)
→ [if --mvp] 07-MVP-Validate (subagent: apex-validator)
→ GATE: if fails, fix MVP
→ [if --mvp] 07b-E2E-Chrome (subagent: apex-e2e-chrome) → validate stories in browser
→ [if --mvp] 07c-Playwright (subagent: apex-playwright) → generate CI-runnable E2E tests
→ [if --docker] 08-Docker (subagent: apex-infra)
→ [if deploy flags] 09-Deploy-Manifests (subagent: apex-infra)
→ [if --cicd] 10-GitLab-CI (subagent: apex-infra)
→ 11-Docs (subagent: apex-docs)
→ 12-Finish
→ DONE
Phases 02 (PRD) and 03 (Architecture) have hard gates — even in --auto mode, the orchestrator MUST present the output and get explicit user confirmation. These decisions shape everything downstream.
Exception: --pilot mode overrides hard gates. In pilot mode, hard gates are auto-approved and all assumptions are logged in the pilot report. The user reviews the PRD/architecture after the session completes. This is by design — pilot mode is zero-interruption.
For each phase:
Task: "APEX-Init Phase {N}: {phase name} — Project: {project_name}"
Instructions: "Read the apex-init skill's steps/{NN}-{step}.md and follow the instructions."
Agent: "Use the apex-{role} agent from this plugin"
Context: task description + previous phase summaries (compressed)
Before and after each phase:
.claude/apex-config.yaml (if exists)../apex/helpers.md#Execute-Hooks../apex/helpers.md#Execute-HooksIf apex-config.yaml doesn't exist, skip all hooks silently.
During Phase 04 (Scaffold) or Phase 12 (Finish), install git hooks per ../apex/helpers.md#Install-Git-Hooks based on the git_hooks section of apex-config.yaml.
All phase outputs go to docs/apex-init/:
docs/
├── apex-init/
│ ├── 00-init.md
│ ├── 01-brainstorm.md
│ ├── 02-prd.md
│ ├── 03-architecture.md
│ ├── 04-scaffold.md
│ ├── 05-validate.md
│ ├── 06-mvp-implement.md
│ ├── 07-mvp-validate.md
│ ├── 08-docker.md
│ ├── 09-deploy.md
│ ├── 10-cicd.md
│ ├── 11-docs.md
│ └── 12-finish.md
├── prd.md ← promoted from phase 02
├── architecture.md ← promoted from phase 03
├── api-spec.yaml ← generated in phase 03
└── stories/ ← generated in phase 02
├── US-001.md
├── US-002.md
└── ...
After /apex-init completes, the project is fully set up for iterative development with /apex:
CLAUDE.md documents the project conventionsdocs/prd.md and docs/architecture.md are in placedocs/stories/ contains the backlog/apex -a implement US-003 to pick up stories