@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.
- package/README.md +5 -0
- package/package.json +1 -1
- package/skills/sk:fast-track/SKILL.md +80 -0
- package/skills/sk:gates/SKILL.md +97 -0
- package/skills/sk:retro/SKILL.md +124 -0
- package/skills/sk:reverse-doc/SKILL.md +116 -0
- package/skills/sk:scope-check/SKILL.md +93 -0
- package/skills/sk:setup-claude/SKILL.md +53 -0
- package/skills/sk:setup-claude/scripts/apply_setup_claude.py +206 -6
- package/skills/sk:setup-claude/templates/.claude/agents/e2e-tester.md +46 -0
- package/skills/sk:setup-claude/templates/.claude/agents/linter.md +53 -0
- package/skills/sk:setup-claude/templates/.claude/agents/perf-auditor.md +43 -0
- package/skills/sk:setup-claude/templates/.claude/agents/security-auditor.md +47 -0
- package/skills/sk:setup-claude/templates/.claude/agents/test-runner.md +42 -0
- package/skills/sk:setup-claude/templates/.claude/rules/api.md.template +14 -0
- package/skills/sk:setup-claude/templates/.claude/rules/frontend.md.template +15 -0
- package/skills/sk:setup-claude/templates/.claude/rules/laravel.md.template +15 -0
- package/skills/sk:setup-claude/templates/.claude/rules/react.md.template +14 -0
- package/skills/sk:setup-claude/templates/.claude/rules/tests.md.template +16 -0
- package/skills/sk:setup-claude/templates/.claude/settings.json.template +76 -0
- package/skills/sk:setup-claude/templates/.claude/statusline.sh +50 -0
- package/skills/sk:setup-claude/templates/hooks/log-agent.sh +24 -0
- package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +44 -0
- package/skills/sk:setup-claude/templates/hooks/session-start.sh +53 -0
- package/skills/sk:setup-claude/templates/hooks/session-stop.sh +33 -0
- package/skills/sk:setup-claude/templates/hooks/validate-commit.sh +81 -0
- 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
|
@@ -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/`:
|