onboarding-c3
npx skills add https://github.com/lagz0ne/c3-skill --skill onboarding-c3
Skill 文档
C3 Onboarding
Initialize C3 architecture documentation using a 3-stage workflow with gates.
REQUIRED: Load References
Load immediately:
../../references/skill-harness.md– Red flags and complexity rules../../references/layer-navigation.md– How to traverse C3 docs
Load for templating:
../../templates/adr-000.md– Adoption ADR (drives the workflow)../../templates/context.md– Context template../../templates/container.md– Container template../../templates/component.md– Component template../../templates/ref.md– Reference template
Workflow Overview
flowchart TD
GOAL([Goal]) --> S0
subgraph S0["Stage 0: Inventory"]
S0_DISCOVER[Discover codebase] --> S0_ASK{Gaps?}
S0_ASK -->|Yes| S0_SOCRATIC[Socratic] --> S0_DISCOVER
S0_ASK -->|No| S0_LIST[List items + diagram]
end
S0_LIST --> G0{Inventory complete?}
G0 -->|No| S0_DISCOVER
G0 -->|Yes| S1
subgraph S1["Stage 1: Details"]
S1_CONTAINER[Per container] --> S1_INT[Internal comp]
S1_CONTAINER --> S1_LINK[Linkage comp]
S1_INT --> S1_REF[Extract refs]
S1_LINK --> S1_REF
S1_REF --> S1_ASK{Questions?}
S1_ASK -->|Yes| S1_SOCRATIC[Socratic] --> S1_CONTAINER
S1_ASK -->|No| S1_NEXT{More?}
S1_NEXT -->|Yes| S1_CONTAINER
end
S1_NEXT -->|No| G1{Fix inventory?}
G1 -->|Yes| S0_DISCOVER
G1 -->|No| S2
subgraph S2["Stage 2: Finalize"]
S2_CHECK[Integrity checks]
end
S2_CHECK --> G2{Issues?}
G2 -->|Inventory| S0_DISCOVER
G2 -->|Detail| S1_CONTAINER
G2 -->|None| DONE([Implemented])
Critical: All questioning MUST use AskUserQuestion tool – never plain text questions.
Progress Checklist
Copy and track as you work:
Onboarding Progress:
- [ ] Stage 0: All items inventoried (context, containers, components, refs)
- [ ] Stage 0: ADR-000 created with discovery tables filled
- [ ] Gate 0: Inventory complete, proceed to Details
- [ ] Stage 1: All container README.md created
- [ ] Stage 1: All component docs created
- [ ] Stage 1: All refs documented
- [ ] Gate 1: No new items discovered
- [ ] Stage 2: Integrity checks pass
- [ ] Gate 2: /c3 audit passes
- [ ] ADR-000 marked implemented
Stage 0: Inventory
Goal: Discover EVERYTHING before creating any docs.
0.1 Create ADR-000
Run init script and create ADR-000 from template:
PROJECT="<name>" C1="<container1>" C2="<container2>" "${CLAUDE_PLUGIN_ROOT}/scripts/c3-init.sh"
0.2 Context Discovery
Read codebase structure. Capture template arguments in ADR-000 Context Discovery table:
| Arg | Value |
|---|---|
| PROJECT | What is this system called? |
| GOAL | Why does this system exist? |
| SUMMARY | One-sentence description |
Use AskUserQuestion for gaps:
Q: "I see apps/api/ and apps/web/. Are these separate containers?"
Options: [Separate containers, Single monolith, Monorepo with shared code]
0.3 Container Discovery
For each potential container, capture in ADR-000 Container Discovery table:
| N | CONTAINER_NAME | GOAL | SUMMARY |
|---|
Note: N maps to init script variable (C1=1, C2=2, etc.)
Use AskUserQuestion:
Q: "Is apps/api/ a deployable backend API?"
Options: [Yes - Backend API, No - Library/shared code, Need more context]
0.4 Component Discovery (Brief)
For each container, scan for components. Capture in ADR-000 Component Discovery table:
| N | NN | COMPONENT_NAME | CATEGORY | GOAL | SUMMARY |
|---|
Categorization (use lowercase in table):
- foundation (01-09): Primitives others depend on (Router, AuthProvider, Database)
- feature (10+): Domain-specific (UserService, CheckoutFlow, Dashboard)
Use AskUserQuestion:
Q: "AuthMiddleware is imported by 15 files. Foundation or Feature?"
Options: [Foundation - others depend on it, Feature - domain logic, Need more context]
0.5 Ref Discovery
Look for patterns that repeat across components. Capture in ADR-000 Ref Discovery table:
| SLUG | TITLE | GOAL | Applies To |
|---|
Common ref candidates:
- Error handling patterns
- Form patterns
- Query/data fetching patterns
- Design system principles
- User flows / IA
0.6 Overview Diagram
Generate mermaid diagram showing:
- Actors â Containers â External Systems
- Key linkages
Gate 0
Before proceeding, verify:
- Context args filled (PROJECT, GOAL, SUMMARY)
- All containers identified with args
- All components identified (brief) with args
- Cross-cutting refs identified
- Overview diagram generated
If gaps: Return to discovery with Socratic questioning.
Stage 1: Details
Goal: Create all docs from inventory.
1.1 Context Doc
Create .c3/README.md from context.md template using discovered args.
Fill:
- Goal section (from PROJECT, GOAL)
- Overview diagram
- Containers table with Goal Contribution column
1.2 Container Docs
For EACH container in inventory:
1.2.1 Create container README
Create .c3/c3-N-{slug}/README.md from container.md template.
Fill:
- Goal section
- Context Connection (how it serves parent)
- Components table with Goal Contribution column
1.2.2 Create component docs
For each component in this container:
Create .c3/c3-N-{slug}/c3-NNN-{component}.md from component.md template.
Fill:
- Goal section
- Container Connection
- Related Refs table
1.2.3 Handle discoveries
If new component found during documentation:
- Add to ADR-000 Component Discovery table
- Document conflict in Conflict Resolution table
- Continue (will verify at Gate 2)
1.3 Ref Docs
For each ref in inventory:
Create .c3/refs/ref-{slug}.md from ref.md template.
Fill:
- Goal section
- Content sections
- Update Cited By as you create component docs
Gate 1
Before proceeding, verify:
- All container README.md created
- All component docs created
- All refs documented
- No new items discovered (else â update ADR-000 inventory)
If new items discovered: Return to Stage 0, update ADR-000 discovery tables.
Stage 2: Finalize
Goal: Verify integrity across all docs.
2.1 Integrity Checks
| Check | How to Verify |
|---|---|
| Context â Container | Every container in ADR-000 appears in c3-0 Containers table |
| Container â Component | Every component in container README has a doc |
| Component â Component | Linkages documented in Container README |
| * â Refs | Refs Cited By section matches component Related Refs |
2.2 Run Audit
/c3 audit
Gate 2
Before marking complete, verify:
- All integrity checks pass
-
/c3 auditpasses
If issues:
- Inventory issues (missing container/component) â Gate 0
- Detail issues (wrong Goal, missing connection) â Gate 1
- Pass â Mark ADR-000 as
implemented
Tiered Assumption Rules
| Impact | Examples | Action |
|---|---|---|
| High | New External, boundary change, component reassignment | Ask first via AskUserQuestion |
| Low | Linkage reasoning, naming fix, add to inventory | Auto-proceed, note in Conflict Resolution |
End-to-End Example
User: "Set up C3 for my project"
=== Stage 0: Inventory ===
[0.1] Run c3-init.sh, create ADR-000
[0.2] Context Discovery
Read codebase: apps/api/, apps/web/, packages/shared/
AskUserQuestion: "What is this system called?"
User: "Acme Platform"
AskUserQuestion: "Why does this system exist?"
User: "E-commerce platform for small businesses"
Fill ADR-000 Context Discovery:
| PROJECT | Acme Platform |
| GOAL | E-commerce platform for small businesses |
| SUMMARY | Full-stack e-commerce with API and web frontend |
[0.3] Container Discovery
AskUserQuestion: "Are apps/api/ and apps/web/ separate containers?"
User: "Yes"
Fill ADR-000 Container Discovery:
| 1 | API Backend | Handle business logic and data | REST API layer |
| 2 | Web Frontend | User interface | Next.js web app |
[0.4] Component Discovery
Scan apps/api/src/...
Found: auth/, products/, orders/, middleware/
AskUserQuestion: "AuthMiddleware - Foundation or Feature?"
User: "Foundation"
Fill ADR-000 Component Discovery:
| 1 | 01 | AuthMiddleware | foundation | Auth handling | JWT validation |
| 1 | 10 | ProductService | feature | Product CRUD | Catalog management |
...
[0.5] Ref Discovery
Pattern found: error handling in 5 components
Fill ADR-000 Ref Discovery:
| error-handling | Error Handling | Consistent errors | c3-101, c3-110 |
[Gate 0] â All tables filled, proceed to Stage 1
=== Stage 1: Details ===
[1.1] Create .c3/README.md from context.md template
[1.2] Create .c3/c3-1-api/README.md + component docs
[1.2] Create .c3/c3-2-web/README.md + component docs
[1.3] Create .c3/refs/ref-error-handling.md
[Gate 1] â All docs created, no new items
=== Stage 2: Finalize ===
[2.1] Integrity checks - all pass
[2.2] /c3 audit - passes
[Gate 2] â Mark ADR-000 as implemented
Done!