@kennethsolomon/shipkit 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +5 -0
  2. package/package.json +1 -1
  3. package/skills/sk:fast-track/SKILL.md +80 -0
  4. package/skills/sk:gates/SKILL.md +97 -0
  5. package/skills/sk:retro/SKILL.md +124 -0
  6. package/skills/sk:reverse-doc/SKILL.md +116 -0
  7. package/skills/sk:scope-check/SKILL.md +93 -0
  8. package/skills/sk:setup-claude/SKILL.md +53 -0
  9. package/skills/sk:setup-claude/scripts/apply_setup_claude.py +206 -6
  10. package/skills/sk:setup-claude/templates/.claude/agents/e2e-tester.md +46 -0
  11. package/skills/sk:setup-claude/templates/.claude/agents/linter.md +53 -0
  12. package/skills/sk:setup-claude/templates/.claude/agents/perf-auditor.md +43 -0
  13. package/skills/sk:setup-claude/templates/.claude/agents/security-auditor.md +47 -0
  14. package/skills/sk:setup-claude/templates/.claude/agents/test-runner.md +42 -0
  15. package/skills/sk:setup-claude/templates/.claude/rules/api.md.template +14 -0
  16. package/skills/sk:setup-claude/templates/.claude/rules/frontend.md.template +15 -0
  17. package/skills/sk:setup-claude/templates/.claude/rules/laravel.md.template +15 -0
  18. package/skills/sk:setup-claude/templates/.claude/rules/react.md.template +14 -0
  19. package/skills/sk:setup-claude/templates/.claude/rules/tests.md.template +16 -0
  20. package/skills/sk:setup-claude/templates/.claude/settings.json.template +76 -0
  21. package/skills/sk:setup-claude/templates/.claude/statusline.sh +50 -0
  22. package/skills/sk:setup-claude/templates/hooks/log-agent.sh +24 -0
  23. package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +44 -0
  24. package/skills/sk:setup-claude/templates/hooks/session-start.sh +53 -0
  25. package/skills/sk:setup-claude/templates/hooks/session-stop.sh +33 -0
  26. package/skills/sk:setup-claude/templates/hooks/validate-commit.sh +81 -0
  27. package/skills/sk:setup-claude/templates/hooks/validate-push.sh +43 -0
package/README.md CHANGED
@@ -177,6 +177,7 @@ Requirement changes → /sk:change → re-enter at correct step
177
177
  | `/sk:plan` | Create or refresh task planning files |
178
178
  | `/sk:setup-claude` | Bootstrap project scaffolding (CLAUDE.md + tasks/) |
179
179
  | `/sk:setup-optimizer` | Enrich CLAUDE.md by scanning the codebase |
180
+ | `/sk:reverse-doc` | Generate architecture/design docs from existing code |
180
181
 
181
182
  ### Development
182
183
 
@@ -189,6 +190,7 @@ Requirement changes → /sk:change → re-enter at correct step
189
190
  | `/sk:change` | Handle a mid-workflow requirement change — assess scope and re-enter at the right step |
190
191
  | `/sk:debug` | Structured bug investigation: reproduce → isolate → fix |
191
192
  | `/sk:hotfix` | Emergency fix workflow — skips design and TDD |
193
+ | `/sk:fast-track` | Abbreviated workflow for small changes — skip planning, keep all gates |
192
194
 
193
195
  ### Prototyping
194
196
 
@@ -206,6 +208,8 @@ Requirement changes → /sk:change → re-enter at correct step
206
208
  | `/sk:perf` | Performance audit: bundle size, N+1 queries, Core Web Vitals |
207
209
  | `/sk:seo-audit` | SEO audit — dual-mode (source templates + dev server), ask-before-fix, checklist output to `tasks/seo-findings.md` |
208
210
  | `/sk:review` | Blast-radius-aware self-review across 7 dimensions + cross-file impact analysis |
211
+ | `/sk:gates` | Run all quality gates in optimized parallel batches |
212
+ | `/sk:scope-check` | Compare implementation against plan, detect scope creep |
209
213
 
210
214
  ### Shipping
211
215
 
@@ -216,6 +220,7 @@ Requirement changes → /sk:change → re-enter at correct step
216
220
  | `/sk:finish-feature` | Write changelog entry + create PR |
217
221
  | `/sk:release` | Version bump + CHANGELOG + git tag + push |
218
222
  | `/sk:features` | Sync docs/features/ specs with the codebase |
223
+ | `/sk:retro` | Post-ship retrospective: velocity, blockers, action items |
219
224
 
220
225
  ### Laravel
221
226
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kennethsolomon/shipkit",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "A structured workflow toolkit for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: sk:fast-track
3
+ description: Abbreviated workflow for small, clear changes — skip planning ceremony, keep all quality gates
4
+ user_invocable: true
5
+ allowed_tools: Read, Write, Bash, Glob, Grep, Agent, Skill
6
+ ---
7
+
8
+ # Fast-Track Flow
9
+
10
+ Abbreviated workflow for small, well-understood changes. Skips brainstorm, design, plan, and write-tests phases but still enforces all quality gates.
11
+
12
+ ## When to Use
13
+
14
+ - Config changes, dependency bumps, copy/wording changes
15
+ - Small refactors with obvious scope
16
+ - Adding a missing test for existing code
17
+ - Fixing a typo or updating documentation
18
+ - Any change where the "what" is already clear and doesn't need design exploration
19
+
20
+ ## When NOT to Use
21
+
22
+ - New features (use full workflow)
23
+ - Changes affecting multiple systems (use full workflow)
24
+ - Anything requiring design decisions (use `/sk:brainstorm` first)
25
+ - Bug fixes (use `/sk:debug` flow)
26
+
27
+ ## Guard Rails
28
+
29
+ Before proceeding, check the scope of planned changes:
30
+
31
+ 1. **Diff size check**: After implementation, run `git diff --stat HEAD`. If the diff exceeds **300 lines** changed:
32
+ > "This change is [N] lines — larger than the 300-line fast-track threshold. Consider the full workflow for better test coverage. Continue anyway? (y/n)"
33
+
34
+ 2. **New file count**: If more than **5 new files** are created:
35
+ > "You've created [N] new files. Consider running `/sk:write-tests` first. Continue anyway? (y/n)"
36
+
37
+ 3. **Migration check**: If any migration files are detected in changes, warn:
38
+ > "Migration files detected. Consider running `/sk:schema-migrate` for analysis."
39
+
40
+ ## Steps
41
+
42
+ ### 1. Context (quick)
43
+ - Read `tasks/todo.md` — pick the task or accept user's description
44
+ - Read `tasks/lessons.md` — apply active lessons as constraints
45
+
46
+ ### 2. Branch
47
+ - Run `/sk:branch` to create a feature branch
48
+
49
+ ### 3. Implement
50
+ - Write the code directly — no brainstorm, design, plan, or TDD phases
51
+ - Focus on the minimal change needed
52
+
53
+ ### 4. Commit
54
+ - Run `/sk:smart-commit` to stage and commit with conventional commit message
55
+
56
+ ### 5. Gates
57
+ - Run `/sk:gates` — all quality gates in optimized parallel batches
58
+ - This is the same gate process as the full workflow — no shortcuts on quality
59
+ - Lint, test, security, perf, review, E2E all run
60
+
61
+ ### 6. Finalize
62
+ - Run `/sk:finish-feature` for changelog + PR
63
+
64
+ ## Workflow Status
65
+
66
+ Fast-track updates `tasks/workflow-status.md` with abbreviated steps:
67
+ - Steps 1-2 (read): done
68
+ - Steps 3-6 (explore, design, accessibility, plan): skipped (fast-track)
69
+ - Steps 7-11 (branch, implement, commit): done
70
+ - Steps 12-17 (gates): handled by `/sk:gates`
71
+ - Steps 18-21 (update, finalize, sync, release): done as applicable
72
+
73
+ ## Model Routing
74
+
75
+ | Profile | Model |
76
+ |---------|-------|
77
+ | `full-sail` | opus (inherit) |
78
+ | `quality` | sonnet |
79
+ | `balanced` | sonnet |
80
+ | `budget` | haiku |
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: sk:gates
3
+ description: Run all quality gates in optimized parallel batches — one command instead of six
4
+ user_invocable: true
5
+ allowed_tools: Agent, Read, Write, Bash, Glob, Grep
6
+ ---
7
+
8
+ # Gates Orchestrator
9
+
10
+ Run all quality gates (lint, test, security, perf, review, e2e) in optimized batches. Replaces manually invoking 6 separate commands.
11
+
12
+ ## When to Use
13
+
14
+ Run `/sk:gates` after committing implementation code (step 11). This single command handles steps 12-17 of the workflow.
15
+
16
+ ## Execution Strategy
17
+
18
+ Gates are organized into 4 batches for maximum parallelism while respecting dependencies:
19
+
20
+ ### Batch 1 — Parallel Agents (lint + security + perf)
21
+
22
+ Launch 3 agents simultaneously:
23
+
24
+ 1. **Linter agent** — runs all formatters, analyzers, dep audits
25
+ 2. **Security auditor agent** — OWASP audit on changed files
26
+ 3. **Performance auditor agent** — bundle, N+1, Core Web Vitals, memory
27
+
28
+ These 3 have no dependencies on each other. Run them in parallel using the Agent tool.
29
+
30
+ Wait for all 3 to complete. Collect results.
31
+
32
+ ### Batch 2 — Test Agent (sequential, needs lint fixes)
33
+
34
+ After Batch 1 completes (lint may have auto-formatted code):
35
+
36
+ 4. **Test runner agent** — runs all test suites, ensures 100% coverage on new code
37
+
38
+ ### Batch 3 — Review (main context, needs test confirmation)
39
+
40
+ After Batch 2 completes:
41
+
42
+ 5. **Review** — runs `/sk:review` in the main context (NOT as an agent) because review needs deep code understanding and access to the full conversation history
43
+
44
+ ### Batch 4 — E2E Agent (needs review fixes)
45
+
46
+ After Batch 3 completes:
47
+
48
+ 6. **E2E tester agent** — runs full E2E verification
49
+
50
+ ## Gate Results
51
+
52
+ After all 4 batches complete, output a summary:
53
+
54
+ ```
55
+ === Gate Results ===
56
+ Lint: clean (attempt N)
57
+ Security: 0 findings (attempt N)
58
+ Perf: 0 critical/high (attempt N)
59
+ Tests: X passed, 0 failed (attempt N)
60
+ Review: 0 issues (attempt N)
61
+ E2E: Y scenarios passed (attempt N)
62
+
63
+ All gates passed. Run /sk:update-task
64
+ ```
65
+
66
+ ## Failure Handling
67
+
68
+ - Each agent handles its own fix → auto-commit → re-run loop internally
69
+ - If any agent fails after 3 attempts → stop all gates and report to user
70
+ - Do NOT proceed to the next batch if the current batch has unresolved failures
71
+ - Update `tasks/workflow-status.md` for each gate as it completes:
72
+ - Steps 12-17 marked `done` with attempt count in Notes
73
+
74
+ ## 3-Strike Protocol
75
+
76
+ If any single gate fails 3 times:
77
+ 1. Stop the entire gates process
78
+ 2. Log the failure to `tasks/progress.md`
79
+ 3. Report to user with details of what failed and what was tried
80
+ 4. Do NOT mark the step as done
81
+
82
+ ## Model Routing
83
+
84
+ The orchestrator itself runs in the main context. Agents use their own model routing:
85
+ - Linter: haiku (mechanical)
86
+ - Test runner: sonnet
87
+ - Security auditor: sonnet
88
+ - Perf auditor: sonnet
89
+ - E2E tester: sonnet
90
+ - Review: main context model (opus or sonnet depending on profile)
91
+
92
+ | Profile | Orchestrator Model |
93
+ |---------|-------------------|
94
+ | `full-sail` | opus (inherit) |
95
+ | `quality` | opus (inherit) |
96
+ | `balanced` | sonnet |
97
+ | `budget` | sonnet |
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: sk:retro
3
+ description: Post-ship retrospective analyzing velocity, blockers, and patterns to generate actionable improvements
4
+ user_invocable: true
5
+ allowed_tools: Read, Glob, Grep, Bash, Write
6
+ ---
7
+
8
+ # Retrospective
9
+
10
+ Analyze completed work after shipping a feature to generate actionable insights for the next iteration.
11
+
12
+ ## When to Use
13
+
14
+ Run `/sk:retro` after `/sk:finish-feature` or `/sk:release` to reflect on what went well, what didn't, and what to improve. Best run while context is fresh.
15
+
16
+ ## Steps
17
+
18
+ ### 1. Gather Data
19
+
20
+ Read these files to build the retrospective:
21
+
22
+ | File | What to Extract |
23
+ |------|----------------|
24
+ | `tasks/todo.md` | Planned tasks — count total, completed, dropped |
25
+ | `tasks/progress.md` | Work log — errors, resolutions, session timestamps |
26
+ | `tasks/workflow-status.md` | Step-by-step status — attempt counts, skip reasons |
27
+ | `tasks/findings.md` | Design decisions — were they validated? |
28
+ | `tasks/lessons.md` | New lessons added during this task |
29
+ | `tasks/tech-debt.md` | Tech debt logged during gates |
30
+
31
+ ### 2. Analyze Git History
32
+
33
+ ```bash
34
+ # Commits on this branch
35
+ git log main..HEAD --oneline --format="%h %s"
36
+
37
+ # Time span
38
+ git log main..HEAD --format="%ai" | tail -1 # first commit
39
+ git log main..HEAD --format="%ai" | head -1 # last commit
40
+
41
+ # Files changed
42
+ git diff main..HEAD --stat
43
+
44
+ # Commit count
45
+ git rev-list main..HEAD --count
46
+ ```
47
+
48
+ ### 3. Calculate Metrics
49
+
50
+ | Metric | How |
51
+ |--------|-----|
52
+ | **Completion rate** | Completed tasks / Planned tasks * 100 |
53
+ | **Velocity** | Commits per day, files changed per day |
54
+ | **Gate performance** | Extract attempt counts from workflow-status.md Notes (e.g., "clean on attempt 3") |
55
+ | **Blocker count** | Count "FAIL", "error", "blocked", "3-Strike" entries in tasks/progress.md |
56
+ | **Rework rate** | Count fix commits (fix(lint):, fix(test):, etc.) vs feature commits |
57
+
58
+ ### 4. Identify Patterns
59
+
60
+ - **Recurring blocker**: Same type of issue across multiple gates?
61
+ - **Estimation accuracy**: Did planned scope match actual scope? (cross-ref with `/sk:scope-check` if available)
62
+ - **Gate friction**: Which gates required the most fix cycles?
63
+ - **Previous retro follow-up**: Read previous `tasks/retro-*.md` files — were action items addressed?
64
+
65
+ ### 5. Generate Action Items
66
+
67
+ Produce 3-5 concrete, actionable improvements:
68
+ - Each action item must have: **what** to do, **why** it matters, **when** to apply it
69
+ - Prioritize systemic fixes over one-off patches
70
+ - Flag recurring unaddressed items from previous retros as process concerns
71
+
72
+ ### 6. Write Report
73
+
74
+ Save to `tasks/retro-YYYY-MM-DD.md`:
75
+
76
+ ```markdown
77
+ # Retrospective — [date] — [task name]
78
+
79
+ ## Metrics
80
+ | Metric | Value |
81
+ |--------|-------|
82
+ | Planned tasks | N |
83
+ | Completed | X / N (Y%) |
84
+ | Commits | Z |
85
+ | Time span | A days |
86
+ | Files changed | B (+C/-D) |
87
+ | Gate attempts | lint: 1, test: 2, security: 1, ... |
88
+ | Blockers | K |
89
+ | Rework rate | R% |
90
+
91
+ ## What Went Well
92
+ - [data-backed observation]
93
+
94
+ ## What Didn't Go Well
95
+ - [data-backed observation, with blocker/error references]
96
+
97
+ ## Patterns
98
+ - [recurring theme from this or previous retros]
99
+
100
+ ## Action Items
101
+ 1. **[What]** — [Why] — Apply during: [When]
102
+ 2. ...
103
+
104
+ ## Previous Action Item Follow-Up
105
+ - [Action from last retro] — [Addressed / Still open]
106
+ ```
107
+
108
+ ### 7. Summary
109
+
110
+ Output to user:
111
+ ```
112
+ Retrospective saved to tasks/retro-YYYY-MM-DD.md
113
+ Completion: X/N tasks (Y%) | Velocity: Z commits/day | Blockers: K
114
+ Top action: [most important action item]
115
+ ```
116
+
117
+ ## Model Routing
118
+
119
+ | Profile | Model |
120
+ |---------|-------|
121
+ | `full-sail` | opus (inherit) |
122
+ | `quality` | sonnet |
123
+ | `balanced` | sonnet |
124
+ | `budget` | haiku |
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: sk:reverse-doc
3
+ description: Generate architecture and design documentation from existing code by analyzing patterns and asking clarifying questions
4
+ user_invocable: true
5
+ allowed_tools: Read, Glob, Grep, Write, Agent
6
+ ---
7
+
8
+ # Reverse Document
9
+
10
+ Generate documentation from existing code — work backwards from implementation to create missing design or architecture docs.
11
+
12
+ ## When to Use
13
+
14
+ - Onboarding to an existing codebase that lacks documentation
15
+ - Formalizing a prototype into a documented design
16
+ - Capturing the "why" behind existing code before refactoring
17
+ - Creating architecture docs for a codebase you inherited
18
+
19
+ ## Arguments
20
+
21
+ ```
22
+ /sk:reverse-doc <type> <path>
23
+ ```
24
+
25
+ | Type | Output | Location |
26
+ |------|--------|----------|
27
+ | `architecture` | Architecture Decision Record | `docs/architecture/` |
28
+ | `design` | Design document (GDD-style) | `docs/design/` |
29
+ | `api` | API specification | `docs/api/` |
30
+
31
+ If no type specified, infer from the path:
32
+ - `src/core/`, `src/lib/`, `app/Services/` → architecture
33
+ - `src/components/`, `resources/views/` → design
34
+ - `routes/`, `app/Http/Controllers/` → api
35
+
36
+ ## Steps
37
+
38
+ ### Phase 1: Analyze
39
+
40
+ Launch Explore agents to analyze the target path:
41
+
42
+ 1. **Structure agent**: Map the file tree, identify entry points, trace dependency chains
43
+ 2. **Patterns agent**: Identify design patterns, abstractions, conventions used
44
+ 3. **Data flow agent**: Trace data through the system — inputs, transformations, outputs
45
+
46
+ Synthesize findings into:
47
+ - **What it does** (mechanics, behavior)
48
+ - **How it's built** (patterns, architecture, dependencies)
49
+ - **What's unclear** (inconsistencies, undocumented decisions)
50
+
51
+ ### Phase 2: Clarify
52
+
53
+ Ask the user 3-5 clarifying questions to distinguish intentional design from accidental implementation:
54
+
55
+ - "Is [pattern X] intentional, or would you change it in a refactor?"
56
+ - "What was the motivation for [architectural decision Y]?"
57
+ - "Are [components A and B] coupled by design, or is that tech debt?"
58
+
59
+ **Critical principle: Never assume intent. Always ask before documenting "why."**
60
+
61
+ The distinction between "what the code does" and "what the developer intended" is the entire value of this skill. Do not skip this phase.
62
+
63
+ ### Phase 3: Draft
64
+
65
+ Based on analysis + user answers, generate the document:
66
+
67
+ **Architecture docs include:**
68
+ - System overview and purpose
69
+ - Component diagram (text-based)
70
+ - Data flow description
71
+ - Key design decisions with rationale (from user answers)
72
+ - Dependencies and interfaces
73
+ - Trade-offs and known limitations
74
+
75
+ **Design docs include:**
76
+ - Feature overview and user-facing behavior
77
+ - Component breakdown
78
+ - State management approach
79
+ - Interaction patterns
80
+ - Edge cases and error handling
81
+
82
+ **API docs include:**
83
+ - Endpoint inventory
84
+ - Request/response schemas
85
+ - Authentication requirements
86
+ - Error codes and formats
87
+ - Rate limits and constraints
88
+
89
+ ### Phase 4: Approve
90
+
91
+ Present the draft to the user:
92
+ - Show key sections
93
+ - Highlight areas marked as "inferred" (not confirmed by user)
94
+ - Ask for corrections or additions
95
+
96
+ **Do not write the file until the user approves.**
97
+
98
+ ### Phase 5: Write
99
+
100
+ Save the approved document to the appropriate location.
101
+
102
+ Flag follow-up work:
103
+ - Related areas that also need documentation
104
+ - Inconsistencies discovered during analysis
105
+ - Suggested refactoring based on documented architecture
106
+
107
+ **Do not auto-execute follow-up work.** Present it as a list for the user to decide.
108
+
109
+ ## Model Routing
110
+
111
+ | Profile | Model |
112
+ |---------|-------|
113
+ | `full-sail` | opus (inherit) |
114
+ | `quality` | opus (inherit) |
115
+ | `balanced` | sonnet |
116
+ | `budget` | sonnet |
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: sk:scope-check
3
+ description: Compare current implementation against the plan to detect scope creep
4
+ user_invocable: true
5
+ allowed_tools: Read, Glob, Grep, Bash
6
+ ---
7
+
8
+ # Scope Check
9
+
10
+ Compare the current implementation against `tasks/todo.md` to detect scope creep and unplanned additions.
11
+
12
+ ## When to Use
13
+
14
+ Run `/sk:scope-check` mid-implementation (during or after step 10) to verify you're building what was planned — no more, no less. Useful when implementation feels like it's growing beyond the original plan.
15
+
16
+ ## Steps
17
+
18
+ ### 1. Read the Plan
19
+
20
+ - Read `tasks/todo.md` — extract all planned tasks (checkboxes)
21
+ - Count total planned tasks, completed tasks, and remaining tasks
22
+ - List planned files/areas from task descriptions
23
+
24
+ ### 2. Analyze Actual Changes
25
+
26
+ - Run `git diff main..HEAD --stat` to get files changed, insertions, deletions
27
+ - Run `git diff main..HEAD --name-only` to list all changed files
28
+ - Count new files created vs. files modified
29
+ - Identify files changed that are NOT mentioned in any todo.md task
30
+
31
+ ### 3. Compare Planned vs. Actual
32
+
33
+ For each changed file, trace it back to a planned task:
34
+ - **Planned**: File change is directly described in a todo.md checkbox
35
+ - **Supporting**: File change is a reasonable dependency of a planned task (e.g., updating imports after moving a function)
36
+ - **Unplanned**: File change has no clear connection to any planned task — this is scope creep
37
+
38
+ ### 4. Calculate Scope Bloat
39
+
40
+ ```
41
+ Planned tasks: N checkboxes in todo.md
42
+ Actual changes: M files changed
43
+ Unplanned items: U files with no matching task
44
+ Scope bloat: (U / M) * 100 = X%
45
+ ```
46
+
47
+ ### 5. Classify
48
+
49
+ | Classification | Bloat % | Recommendation |
50
+ |---------------|---------|----------------|
51
+ | **On Track** | 0-10% | Proceeding as planned. Minor supporting changes are normal. |
52
+ | **Minor Creep** | 10-25% | Some unplanned additions detected. Review if they're necessary. |
53
+ | **Significant Creep** | 25-50% | Scope has grown substantially. Consider splitting into separate tasks. |
54
+ | **Out of Control** | >50% | More unplanned work than planned. Stop and reassess with `/sk:change`. |
55
+
56
+ ### 6. Output Report
57
+
58
+ ```markdown
59
+ ## Scope Check Report — [date]
60
+
61
+ **Plan**: [N] tasks in tasks/todo.md
62
+ **Completed**: [X] / [N] tasks
63
+ **Files changed**: [M] files (+[insertions] / -[deletions])
64
+ **Unplanned changes**: [U] files
65
+
66
+ ### Classification: [On Track | Minor Creep | Significant Creep | Out of Control] ([X]%)
67
+
68
+ ### Planned Changes
69
+ - [file] — task: [matching checkbox text]
70
+ - ...
71
+
72
+ ### Supporting Changes
73
+ - [file] — supports: [which planned task]
74
+ - ...
75
+
76
+ ### Unplanned Changes
77
+ - [file] — no matching task found
78
+ - ...
79
+
80
+ ### Recommendation
81
+ [Actionable advice based on classification]
82
+ ```
83
+
84
+ ## Model Routing
85
+
86
+ Read `.shipkit/config.json` from the project root if it exists.
87
+
88
+ | Profile | Model |
89
+ |---------|-------|
90
+ | `full-sail` | opus (inherit) |
91
+ | `quality` | sonnet |
92
+ | `balanced` | haiku |
93
+ | `budget` | haiku |
@@ -305,6 +305,59 @@ Additionally report:
305
305
  - Tools installed vs already present
306
306
  - Config files created vs skipped
307
307
 
308
+ ### Hooks (in `.claude/hooks/`)
309
+
310
+ Deployed from `templates/hooks/` to `.claude/hooks/` (made executable):
311
+
312
+ - `session-start.sh` — runs on SessionStart, loads context
313
+ - `session-stop.sh` — runs on Stop, persists session state
314
+ - `pre-compact.sh` — runs on PreCompact, saves context before compaction
315
+ - `validate-commit.sh` — PreToolUse hook for `git commit*`, validates commit messages
316
+ - `validate-push.sh` — PreToolUse hook for `git push*`, confirms before pushing
317
+ - `log-agent.sh` — SubagentStart hook, logs sub-agent launches
318
+
319
+ ### Agent Definitions (in `.claude/agents/`)
320
+
321
+ Deployed from `templates/.claude/agents/` (create-if-missing):
322
+
323
+ - `e2e-tester.md` — E2E testing agent definition
324
+ - `linter.md` — Linting agent definition
325
+ - `perf-auditor.md` — Performance auditing agent
326
+ - `security-auditor.md` — Security auditing agent
327
+ - `test-runner.md` — Test execution agent
328
+
329
+ ### Path-Scoped Rules (in `.claude/rules/`)
330
+
331
+ Deployed from `templates/.claude/rules/` based on detected stack:
332
+
333
+ | Rule file | Deployed when |
334
+ |-----------|---------------|
335
+ | `tests.md.template` | Always |
336
+ | `frontend.md.template` | Always |
337
+ | `api.md.template` | Always |
338
+ | `laravel.md.template` | Laravel detected in framework |
339
+ | `react.md.template` | React or Next.js detected in framework |
340
+
341
+ ### Settings Generation (`.claude/settings.json`)
342
+
343
+ Rendered from `templates/.claude/settings.json.template`. Contains:
344
+ - Statusline configuration (points to `.claude/statusline.sh`)
345
+ - Permission allow/deny lists for safe Bash commands
346
+ - Hook wiring for all 6 hooks above
347
+
348
+ ### Statusline Generation (`.claude/statusline.sh`)
349
+
350
+ Copied from `templates/.claude/statusline.sh` (made executable). Displays:
351
+ - Context window usage percentage
352
+ - Current model
353
+ - Current workflow step (from `tasks/workflow-status.md`)
354
+ - Git branch
355
+ - Current task name
356
+
357
+ ### Cached Detection
358
+
359
+ Detection results are cached to `.shipkit/config.json` with a `detected_at` timestamp. On subsequent runs, if the cache is less than 7 days old, cached values are used instead of re-scanning. Pass `--force-detect` to bypass the cache and re-run detection from scratch.
360
+
308
361
  ## Templates (Source of Truth)
309
362
 
310
363
  All output files are rendered from templates in `templates/`: