shokunin 1.0.0 → 1.2.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 +30 -30
- package/bin/install.js +6 -23
- package/package.json +1 -1
- package/skills/build/SKILL.md +5 -5
- package/skills/docs/SKILL.md +2 -2
- package/skills/plan/SKILL.md +4 -4
- package/skills/review/SKILL.md +2 -2
- package/skills/ship/SKILL.md +2 -2
- package/skills/start/SKILL.md +4 -4
- package/skills/wip/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -15,13 +15,13 @@ No hidden sub-agents doing work you can't see. No XML plans you can't reason abo
|
|
|
15
15
|
npx shokunin@latest
|
|
16
16
|
|
|
17
17
|
# Start a feature
|
|
18
|
-
/start PROJ-123 add user authentication
|
|
18
|
+
/shokunin:start PROJ-123 add user authentication
|
|
19
19
|
|
|
20
20
|
# In the new worktree
|
|
21
|
-
/plan Add OAuth2 with Google and GitHub providers
|
|
22
|
-
/build
|
|
23
|
-
/review
|
|
24
|
-
/ship
|
|
21
|
+
/shokunin:plan Add OAuth2 with Google and GitHub providers
|
|
22
|
+
/shokunin:build
|
|
23
|
+
/shokunin:review
|
|
24
|
+
/shokunin:ship
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## Philosophy
|
|
@@ -38,22 +38,22 @@ AI-assisted development is powerful, but power without discipline produces fragi
|
|
|
38
38
|
|
|
39
39
|
| Skill | Purpose |
|
|
40
40
|
|-------|---------|
|
|
41
|
-
| `/start` | Create a git worktree, branch, and plan scaffold for a new feature |
|
|
42
|
-
| `/plan` | Design the feature interactively — produces a granular task list |
|
|
43
|
-
| `/build` | Implement tasks one by one with TDD and progress tracking |
|
|
44
|
-
| `/review` | Run a thorough code review on all changes |
|
|
45
|
-
| `/ship` | Squash commits, add Jira reference, create a pull request |
|
|
46
|
-
| `/wip` | Show all features in flight and their progress |
|
|
47
|
-
| `/docs` | Create or update technical documentation |
|
|
41
|
+
| `/shokunin:start` | Create a git worktree, branch, and plan scaffold for a new feature |
|
|
42
|
+
| `/shokunin:plan` | Design the feature interactively — produces a granular task list |
|
|
43
|
+
| `/shokunin:build` | Implement tasks one by one with TDD and progress tracking |
|
|
44
|
+
| `/shokunin:review` | Run a thorough code review on all changes |
|
|
45
|
+
| `/shokunin:ship` | Squash commits, add Jira reference, create a pull request |
|
|
46
|
+
| `/shokunin:wip` | Show all features in flight and their progress |
|
|
47
|
+
| `/shokunin:docs` | Create or update technical documentation |
|
|
48
48
|
|
|
49
49
|
## The Workflow
|
|
50
50
|
|
|
51
|
-
### 1. `/start` — Begin with Intent
|
|
51
|
+
### 1. `/shokunin:start` — Begin with Intent
|
|
52
52
|
|
|
53
53
|
Every feature starts with a clean workspace.
|
|
54
54
|
|
|
55
55
|
```
|
|
56
|
-
/start PROJ-123 add user authentication
|
|
56
|
+
/shokunin:start PROJ-123 add user authentication
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
This creates:
|
|
@@ -63,12 +63,12 @@ This creates:
|
|
|
63
63
|
|
|
64
64
|
Open a new terminal, `cd` into the worktree, and start Claude Code.
|
|
65
65
|
|
|
66
|
-
### 2. `/plan` — Measure Twice, Cut Once
|
|
66
|
+
### 2. `/shokunin:plan` — Measure Twice, Cut Once
|
|
67
67
|
|
|
68
68
|
Before writing any code, define what you're building.
|
|
69
69
|
|
|
70
70
|
```
|
|
71
|
-
/plan Add OAuth2 authentication with Google and GitHub providers
|
|
71
|
+
/shokunin:plan Add OAuth2 authentication with Google and GitHub providers
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
The plan phase is interactive — Claude will ask about scope, edge cases, and acceptance criteria. The output is a detailed plan file with:
|
|
@@ -79,12 +79,12 @@ The plan phase is interactive — Claude will ask about scope, edge cases, and a
|
|
|
79
79
|
|
|
80
80
|
Each task is sized for a single TDD red-green-refactor cycle.
|
|
81
81
|
|
|
82
|
-
### 3. `/build` — Steady Hands
|
|
82
|
+
### 3. `/shokunin:build` — Steady Hands
|
|
83
83
|
|
|
84
84
|
Execute the plan, one task at a time.
|
|
85
85
|
|
|
86
86
|
```
|
|
87
|
-
/build
|
|
87
|
+
/shokunin:build
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
Build reads the plan and works through tasks sequentially:
|
|
@@ -96,12 +96,12 @@ Build reads the plan and works through tasks sequentially:
|
|
|
96
96
|
|
|
97
97
|
You see everything. Every test written, every file edited. If something looks wrong, you can intervene immediately.
|
|
98
98
|
|
|
99
|
-
### 4. `/review` — Critical Eye
|
|
99
|
+
### 4. `/shokunin:review` — Critical Eye
|
|
100
100
|
|
|
101
101
|
Once all tasks are complete, review the full changeset.
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
/review
|
|
104
|
+
/shokunin:review
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
The review runs in a forked sub-agent using the code-reviewer, examining:
|
|
@@ -113,12 +113,12 @@ The review runs in a forked sub-agent using the code-reviewer, examining:
|
|
|
113
113
|
|
|
114
114
|
Results come back to your conversation as a structured report. You decide what to fix.
|
|
115
115
|
|
|
116
|
-
### 5. `/ship` — Deliver with Pride
|
|
116
|
+
### 5. `/shokunin:ship` — Deliver with Pride
|
|
117
117
|
|
|
118
118
|
Package the work and create a pull request.
|
|
119
119
|
|
|
120
120
|
```
|
|
121
|
-
/ship
|
|
121
|
+
/shokunin:ship
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
Ship will:
|
|
@@ -133,7 +133,7 @@ After the PR is merged on GitHub, clean up with `git worktree remove`.
|
|
|
133
133
|
|
|
134
134
|
## Plan File Format
|
|
135
135
|
|
|
136
|
-
Plans live at `.claude/plans/<TICKET>.md` — one per feature,
|
|
136
|
+
Plans live at `.claude/plans/<TICKET>.md` — one per feature, tracked in git on the feature branch. `/shokunin:ship` removes the plan file during the squash commit, so plans never reach main.
|
|
137
137
|
|
|
138
138
|
```markdown
|
|
139
139
|
# Feature: Add user authentication
|
|
@@ -186,7 +186,7 @@ Shokunin uses git worktrees to support working on multiple features simultaneous
|
|
|
186
186
|
+-- ../PROJ-789-api-refactor/ worktree (Claude session D)
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
Each worktree is a separate directory with its own branch and Claude Code session. Run `/wip` from any session to see all features in flight:
|
|
189
|
+
Each worktree is a separate directory with its own branch and Claude Code session. Run `/shokunin:wip` from any session to see all features in flight:
|
|
190
190
|
|
|
191
191
|
```
|
|
192
192
|
Shokunin — Work in Progress
|
|
@@ -208,15 +208,15 @@ Shokunin — Work in Progress
|
|
|
208
208
|
|
|
209
209
|
## Quick Flow
|
|
210
210
|
|
|
211
|
-
For small changes that don't need a worktree, skip `/start`:
|
|
211
|
+
For small changes that don't need a worktree, skip `/shokunin:start`:
|
|
212
212
|
|
|
213
213
|
```bash
|
|
214
214
|
git checkout -b PROJ-789/fix-date-picker
|
|
215
215
|
# then in Claude Code:
|
|
216
|
-
/plan Fix the date picker timezone bug
|
|
217
|
-
/build
|
|
218
|
-
/review
|
|
219
|
-
/ship
|
|
216
|
+
/shokunin:plan Fix the date picker timezone bug
|
|
217
|
+
/shokunin:build
|
|
218
|
+
/shokunin:review
|
|
219
|
+
/shokunin:ship
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
## Configuration
|
|
@@ -229,7 +229,7 @@ git checkout -b PROJ-789/fix-date-picker
|
|
|
229
229
|
|
|
230
230
|
### Permissions
|
|
231
231
|
|
|
232
|
-
Add `Bash(gh *)` to your Claude Code allow list for `/ship` to create PRs:
|
|
232
|
+
Add `Bash(gh *)` to your Claude Code allow list for `/shokunin:ship` to create PRs:
|
|
233
233
|
|
|
234
234
|
In `~/.claude/settings.json`, add to the `permissions.allow` array:
|
|
235
235
|
```json
|
package/bin/install.js
CHANGED
|
@@ -33,19 +33,6 @@ function filesDiffer(src, dest) {
|
|
|
33
33
|
return srcContent !== destContent;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
function addToGitignore(projectRoot) {
|
|
37
|
-
const gitignorePath = path.join(projectRoot, '.gitignore');
|
|
38
|
-
const entry = '.claude/plans/';
|
|
39
|
-
|
|
40
|
-
if (fs.existsSync(gitignorePath)) {
|
|
41
|
-
const content = fs.readFileSync(gitignorePath, 'utf8');
|
|
42
|
-
if (content.includes(entry)) return false;
|
|
43
|
-
fs.appendFileSync(gitignorePath, `\n# Shokunin feature plans (working documents)\n${entry}\n`);
|
|
44
|
-
} else {
|
|
45
|
-
fs.writeFileSync(gitignorePath, `# Shokunin feature plans (working documents)\n${entry}\n`);
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
36
|
|
|
50
37
|
async function promptUser(question) {
|
|
51
38
|
const rl = readline.createInterface({
|
|
@@ -146,28 +133,24 @@ async function main() {
|
|
|
146
133
|
}
|
|
147
134
|
}
|
|
148
135
|
|
|
149
|
-
// Update .gitignore
|
|
150
|
-
const gitignoreUpdated = addToGitignore(projectRoot);
|
|
151
|
-
|
|
152
136
|
// Summary
|
|
153
137
|
console.log('');
|
|
154
138
|
console.log(' Done!');
|
|
155
139
|
if (installed > 0) console.log(` Installed: ${installed}`);
|
|
156
140
|
if (updated > 0) console.log(` Updated: ${updated}`);
|
|
157
141
|
if (skipped > 0) console.log(` Unchanged: ${skipped}`);
|
|
158
|
-
if (gitignoreUpdated) console.log(' Added .claude/plans/ to .gitignore');
|
|
159
142
|
console.log('');
|
|
160
143
|
console.log(' Skills installed:');
|
|
161
144
|
for (const skill of SKILLS) {
|
|
162
|
-
console.log(`
|
|
145
|
+
console.log(` /shokunin:${skill}`);
|
|
163
146
|
}
|
|
164
147
|
console.log('');
|
|
165
148
|
console.log(' Quick start:');
|
|
166
|
-
console.log(' /start PROJ-123 my new feature # Create workspace');
|
|
167
|
-
console.log(' /plan # Design the feature');
|
|
168
|
-
console.log(' /build # Implement with TDD');
|
|
169
|
-
console.log(' /review # Code review');
|
|
170
|
-
console.log(' /ship # Squash, PR, ship it');
|
|
149
|
+
console.log(' /shokunin:start PROJ-123 my new feature # Create workspace');
|
|
150
|
+
console.log(' /shokunin:plan # Design the feature');
|
|
151
|
+
console.log(' /shokunin:build # Implement with TDD');
|
|
152
|
+
console.log(' /shokunin:review # Code review');
|
|
153
|
+
console.log(' /shokunin:ship # Squash, PR, ship it');
|
|
171
154
|
console.log('');
|
|
172
155
|
console.log(' Prerequisites:');
|
|
173
156
|
console.log(' - gh CLI installed and authenticated (for /ship)');
|
package/package.json
CHANGED
package/skills/build/SKILL.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: build
|
|
2
|
+
name: shokunin:build
|
|
3
3
|
description: Implement features by working through the task list in the plan file. Executes tasks sequentially with TDD, updates progress, and makes WIP commits.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# /build — Steady Hands
|
|
7
|
+
# /shokunin:build — Steady Hands
|
|
8
8
|
|
|
9
9
|
You are the build phase of the shokunin engineering process. Your job is to execute the plan methodically — one task at a time, with discipline and visibility.
|
|
10
10
|
|
|
@@ -19,7 +19,7 @@ Get the current branch name:
|
|
|
19
19
|
|
|
20
20
|
Extract the Jira ticket ID from the branch name (segment before the first `/`).
|
|
21
21
|
|
|
22
|
-
Read `.claude/plans/<ticket>.md`. If it doesn't exist, tell the user to run `/plan` first and stop.
|
|
22
|
+
Read `.claude/plans/<ticket>.md`. If it doesn't exist, tell the user to run `/shokunin:plan` first and stop.
|
|
23
23
|
|
|
24
24
|
### 2. Update Status
|
|
25
25
|
|
|
@@ -29,7 +29,7 @@ If the plan status is `planning`, update it to `in-progress`.
|
|
|
29
29
|
|
|
30
30
|
Scan the plan for the next task with `**Status:** [ ] pending`. Respect dependency order — if a task depends on another task that isn't `[x] complete`, skip it and find the next unblocked task.
|
|
31
31
|
|
|
32
|
-
If all tasks are complete, update the plan status to `review` and suggest the user runs `/review`. Stop.
|
|
32
|
+
If all tasks are complete, update the plan status to `review` and suggest the user runs `/shokunin:review`. Stop.
|
|
33
33
|
|
|
34
34
|
### 4. Start the Task
|
|
35
35
|
|
|
@@ -76,7 +76,7 @@ Wait for the user to confirm before proceeding.
|
|
|
76
76
|
When all tasks are complete:
|
|
77
77
|
1. Update the plan status to `review`
|
|
78
78
|
2. Present a summary of everything that was built
|
|
79
|
-
3. Suggest: "All tasks complete. Run `/review` to review the changes."
|
|
79
|
+
3. Suggest: "All tasks complete. Run `/shokunin:review` to review the changes."
|
|
80
80
|
|
|
81
81
|
## Important
|
|
82
82
|
|
package/skills/docs/SKILL.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: docs
|
|
2
|
+
name: shokunin:docs
|
|
3
3
|
description: Create or update technical documentation in the docs/ directory. Can target a specific topic or auto-detect what needs documenting from recent changes.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: [topic, component, or "all" to update everything]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# /docs — Record the Craft
|
|
8
|
+
# /shokunin:docs — Record the Craft
|
|
9
9
|
|
|
10
10
|
You are the documentation phase of the shokunin engineering process. Good documentation is part of the craft — it respects the next person who reads the code.
|
|
11
11
|
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: plan
|
|
2
|
+
name: shokunin:plan
|
|
3
3
|
description: Create or refine a feature plan with a granular, dependency-ordered task list. Use this when starting to plan a new feature or when you need to adjust an existing plan.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: [feature description or refinement instructions]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# /plan — Measure Twice, Cut Once
|
|
8
|
+
# /shokunin:plan — Measure Twice, Cut Once
|
|
9
9
|
|
|
10
|
-
You are the planning phase of the shokunin engineering process. Your job is to produce a detailed, actionable plan that `/build` can execute mechanically. Never start implementation — planning only.
|
|
10
|
+
You are the planning phase of the shokunin engineering process. Your job is to produce a detailed, actionable plan that `/shokunin:build` can execute mechanically. Never start implementation — planning only.
|
|
11
11
|
|
|
12
12
|
## Process
|
|
13
13
|
|
|
@@ -99,7 +99,7 @@ Tasks are grouped by phase, ordered by dependency, and specify exact file paths.
|
|
|
99
99
|
- **Group by phase:** e.g. Data Model, API, UI, Integration Tests
|
|
100
100
|
- **Order by dependency:** each task lists what it depends on
|
|
101
101
|
- **Specify exact file paths:** include whether each file is created or modified
|
|
102
|
-
- **Define scope precisely:** enough detail that `/build` can implement without guessing
|
|
102
|
+
- **Define scope precisely:** enough detail that `/shokunin:build` can implement without guessing
|
|
103
103
|
- **Size for TDD:** each task should map to a single red-green-refactor cycle
|
|
104
104
|
- **Include test tasks:** tests are first-class tasks, not afterthoughts
|
|
105
105
|
- **Be realistic about phases:** don't over-decompose simple features
|
package/skills/review/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: review
|
|
2
|
+
name: shokunin:review
|
|
3
3
|
description: Run a thorough code review on recent changes using the code-reviewer agent. Use this after building a feature to catch issues before shipping.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
context: fork
|
|
@@ -7,7 +7,7 @@ agent: code-reviewer
|
|
|
7
7
|
allowed-tools: Read, Grep, Glob, Bash(git diff *), Bash(git log *), Bash(git status *), Bash(git branch *)
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /review — Critical Eye
|
|
10
|
+
# /shokunin:review — Critical Eye
|
|
11
11
|
|
|
12
12
|
You are the review phase of the shokunin engineering process. Review all changes on the current branch against main with a craftsman's attention to detail.
|
|
13
13
|
|
package/skills/ship/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: ship
|
|
2
|
+
name: shokunin:ship
|
|
3
3
|
description: Squash WIP commits into a single commit with Jira reference, then create a pull request. Use this when a feature is built and reviewed.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
allowed-tools: Bash(git *), Bash(gh *)
|
|
6
6
|
argument-hint: [PR title override]
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /ship — Deliver with Pride
|
|
9
|
+
# /shokunin:ship — Deliver with Pride
|
|
10
10
|
|
|
11
11
|
You are the shipping phase of the shokunin engineering process. Package the work cleanly — one commit, clear message, traceable to the ticket.
|
|
12
12
|
|
package/skills/start/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: start
|
|
2
|
+
name: shokunin:start
|
|
3
3
|
description: Initialize a new feature with a git worktree, branch, and plan scaffold. Use this when beginning work on a new Jira ticket.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
allowed-tools: Bash(git *), Bash(mkdir *), Write, Read, Glob
|
|
6
6
|
argument-hint: <PROJ-123> <short feature description>
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /start — Begin with Intent
|
|
9
|
+
# /shokunin:start — Begin with Intent
|
|
10
10
|
|
|
11
11
|
You are the initialisation phase of the shokunin engineering process. Set up a clean workspace for a new feature.
|
|
12
12
|
|
|
@@ -74,11 +74,11 @@ Feature workspace created:
|
|
|
74
74
|
Next: Open a new terminal and run:
|
|
75
75
|
cd <worktree-dir> && claude
|
|
76
76
|
|
|
77
|
-
Then use /plan to define the feature.
|
|
77
|
+
Then use /shokunin:plan to define the feature.
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
## Important
|
|
81
81
|
|
|
82
82
|
- **Never start planning or implementing** — just set up the workspace
|
|
83
83
|
- **Always create a worktree** — this enables parallel feature development
|
|
84
|
-
- **Always scaffold the plan file** — it's the entry point for `/plan`
|
|
84
|
+
- **Always scaffold the plan file** — it's the entry point for `/shokunin:plan`
|
package/skills/wip/SKILL.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: wip
|
|
2
|
+
name: shokunin:wip
|
|
3
3
|
description: Show work in progress — list active feature worktrees, branches, and plan progress. Use this to get an overview of all features in flight.
|
|
4
4
|
allowed-tools: Bash(git worktree *), Bash(git branch *), Bash(git log *), Bash(git status *), Read, Glob
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# /wip — Survey the Workshop
|
|
7
|
+
# /shokunin:wip — Survey the Workshop
|
|
8
8
|
|
|
9
9
|
You are the status overview of the shokunin engineering process. Show the craftsman what's on the workbench.
|
|
10
10
|
|