@kennethsolomon/shipkit 3.7.0 → 3.9.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 (30) hide show
  1. package/README.md +181 -257
  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 +55 -0
  9. package/skills/sk:setup-claude/scripts/apply_setup_claude.py +207 -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/CLAUDE.md.template +18 -1
  23. package/skills/sk:setup-claude/templates/hooks/log-agent.sh +24 -0
  24. package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +44 -0
  25. package/skills/sk:setup-claude/templates/hooks/session-start.sh +53 -0
  26. package/skills/sk:setup-claude/templates/hooks/session-stop.sh +33 -0
  27. package/skills/sk:setup-claude/templates/hooks/validate-commit.sh +81 -0
  28. package/skills/sk:setup-claude/templates/hooks/validate-push.sh +43 -0
  29. package/skills/sk:setup-claude/templates/tasks/cross-platform.md.template +31 -0
  30. package/skills/sk:setup-optimizer/SKILL.md +2 -1
@@ -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 |
@@ -27,6 +27,7 @@ After bootstrapping a project, the recommended workflow becomes:
27
27
  - `tasks/progress.md` — chronological work log + test results
28
28
  - `tasks/lessons.md` — durable “don’t repeat mistakes” log (**never overwrite**)
29
29
  - `tasks/security-findings.md` — security audit results from `/sk:security-check` (**never overwrite**)
30
+ - `tasks/cross-platform.md` — changes that need replication in companion codebase (web <-> mobile) (**never overwrite**)
30
31
 
31
32
  ### Project Commands (in `.claude/commands/`)
32
33
  - `brainstorm.md` — invokes the global `brainstorming` skill
@@ -88,6 +89,7 @@ Never overwrite `tasks/lessons.md` — always append.
88
89
  - `tasks/progress.md`
89
90
  - `tasks/lessons.md`
90
91
  - `tasks/security-findings.md`
92
+ - `tasks/cross-platform.md`
91
93
  - `CHANGELOG.md`
92
94
  - custom `CLAUDE.md` (anything not marked `<!-- Generated by /sk:setup-claude -->`)
93
95
 
@@ -305,6 +307,59 @@ Additionally report:
305
307
  - Tools installed vs already present
306
308
  - Config files created vs skipped
307
309
 
310
+ ### Hooks (in `.claude/hooks/`)
311
+
312
+ Deployed from `templates/hooks/` to `.claude/hooks/` (made executable):
313
+
314
+ - `session-start.sh` — runs on SessionStart, loads context
315
+ - `session-stop.sh` — runs on Stop, persists session state
316
+ - `pre-compact.sh` — runs on PreCompact, saves context before compaction
317
+ - `validate-commit.sh` — PreToolUse hook for `git commit*`, validates commit messages
318
+ - `validate-push.sh` — PreToolUse hook for `git push*`, confirms before pushing
319
+ - `log-agent.sh` — SubagentStart hook, logs sub-agent launches
320
+
321
+ ### Agent Definitions (in `.claude/agents/`)
322
+
323
+ Deployed from `templates/.claude/agents/` (create-if-missing):
324
+
325
+ - `e2e-tester.md` — E2E testing agent definition
326
+ - `linter.md` — Linting agent definition
327
+ - `perf-auditor.md` — Performance auditing agent
328
+ - `security-auditor.md` — Security auditing agent
329
+ - `test-runner.md` — Test execution agent
330
+
331
+ ### Path-Scoped Rules (in `.claude/rules/`)
332
+
333
+ Deployed from `templates/.claude/rules/` based on detected stack:
334
+
335
+ | Rule file | Deployed when |
336
+ |-----------|---------------|
337
+ | `tests.md.template` | Always |
338
+ | `frontend.md.template` | Always |
339
+ | `api.md.template` | Always |
340
+ | `laravel.md.template` | Laravel detected in framework |
341
+ | `react.md.template` | React or Next.js detected in framework |
342
+
343
+ ### Settings Generation (`.claude/settings.json`)
344
+
345
+ Rendered from `templates/.claude/settings.json.template`. Contains:
346
+ - Statusline configuration (points to `.claude/statusline.sh`)
347
+ - Permission allow/deny lists for safe Bash commands
348
+ - Hook wiring for all 6 hooks above
349
+
350
+ ### Statusline Generation (`.claude/statusline.sh`)
351
+
352
+ Copied from `templates/.claude/statusline.sh` (made executable). Displays:
353
+ - Context window usage percentage
354
+ - Current model
355
+ - Current workflow step (from `tasks/workflow-status.md`)
356
+ - Git branch
357
+ - Current task name
358
+
359
+ ### Cached Detection
360
+
361
+ 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.
362
+
308
363
  ## Templates (Source of Truth)
309
364
 
310
365
  All output files are rendered from templates in `templates/`: