shokunin 1.1.0 → 1.3.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 +49 -42
- package/bin/install.js +52 -7
- 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 +3 -3
- package/skills/start/SKILL.md +49 -11
- 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,37 +38,41 @@ 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:
|
|
60
|
-
- A git worktree at
|
|
60
|
+
- A git worktree at `.worktrees/PROJ-123-add-user-authentication/`
|
|
61
61
|
- A branch `PROJ-123/add-user-authentication`
|
|
62
62
|
- A plan scaffold at `.claude/plans/PROJ-123.md`
|
|
63
63
|
|
|
64
|
-
Open a new terminal, `cd` into the worktree, and start Claude Code
|
|
64
|
+
Open a new terminal, `cd` into the worktree, and start Claude Code:
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
```bash
|
|
67
|
+
cd .worktrees/PROJ-123-add-user-authentication && claude
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. `/shokunin:plan` — Measure Twice, Cut Once
|
|
67
71
|
|
|
68
72
|
Before writing any code, define what you're building.
|
|
69
73
|
|
|
70
74
|
```
|
|
71
|
-
/plan Add OAuth2 authentication with Google and GitHub providers
|
|
75
|
+
/shokunin:plan Add OAuth2 authentication with Google and GitHub providers
|
|
72
76
|
```
|
|
73
77
|
|
|
74
78
|
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 +83,12 @@ The plan phase is interactive — Claude will ask about scope, edge cases, and a
|
|
|
79
83
|
|
|
80
84
|
Each task is sized for a single TDD red-green-refactor cycle.
|
|
81
85
|
|
|
82
|
-
### 3. `/build` — Steady Hands
|
|
86
|
+
### 3. `/shokunin:build` — Steady Hands
|
|
83
87
|
|
|
84
88
|
Execute the plan, one task at a time.
|
|
85
89
|
|
|
86
90
|
```
|
|
87
|
-
/build
|
|
91
|
+
/shokunin:build
|
|
88
92
|
```
|
|
89
93
|
|
|
90
94
|
Build reads the plan and works through tasks sequentially:
|
|
@@ -96,12 +100,12 @@ Build reads the plan and works through tasks sequentially:
|
|
|
96
100
|
|
|
97
101
|
You see everything. Every test written, every file edited. If something looks wrong, you can intervene immediately.
|
|
98
102
|
|
|
99
|
-
### 4. `/review` — Critical Eye
|
|
103
|
+
### 4. `/shokunin:review` — Critical Eye
|
|
100
104
|
|
|
101
105
|
Once all tasks are complete, review the full changeset.
|
|
102
106
|
|
|
103
107
|
```
|
|
104
|
-
/review
|
|
108
|
+
/shokunin:review
|
|
105
109
|
```
|
|
106
110
|
|
|
107
111
|
The review runs in a forked sub-agent using the code-reviewer, examining:
|
|
@@ -113,12 +117,12 @@ The review runs in a forked sub-agent using the code-reviewer, examining:
|
|
|
113
117
|
|
|
114
118
|
Results come back to your conversation as a structured report. You decide what to fix.
|
|
115
119
|
|
|
116
|
-
### 5. `/ship` — Deliver with Pride
|
|
120
|
+
### 5. `/shokunin:ship` — Deliver with Pride
|
|
117
121
|
|
|
118
122
|
Package the work and create a pull request.
|
|
119
123
|
|
|
120
124
|
```
|
|
121
|
-
/ship
|
|
125
|
+
/shokunin:ship
|
|
122
126
|
```
|
|
123
127
|
|
|
124
128
|
Ship will:
|
|
@@ -133,7 +137,7 @@ After the PR is merged on GitHub, clean up with `git worktree remove`.
|
|
|
133
137
|
|
|
134
138
|
## Plan File Format
|
|
135
139
|
|
|
136
|
-
Plans live at `.claude/plans/<TICKET>.md` — one per feature, tracked in git on the feature branch. `/ship` removes the plan file during the squash commit, so plans never reach main.
|
|
140
|
+
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
141
|
|
|
138
142
|
```markdown
|
|
139
143
|
# Feature: Add user authentication
|
|
@@ -180,22 +184,25 @@ with session management and token refresh.
|
|
|
180
184
|
Shokunin uses git worktrees to support working on multiple features simultaneously.
|
|
181
185
|
|
|
182
186
|
```
|
|
183
|
-
~/src/myproject/
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
+
~/src/myproject/
|
|
188
|
+
.worktrees/ gitignored
|
|
189
|
+
PROJ-123-add-auth/ worktree (Claude session B)
|
|
190
|
+
PROJ-456-fix-dashboard/ worktree (Claude session C)
|
|
191
|
+
PROJ-789-api-refactor/ worktree (Claude session D)
|
|
192
|
+
src/
|
|
193
|
+
package.json
|
|
187
194
|
```
|
|
188
195
|
|
|
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:
|
|
196
|
+
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
197
|
|
|
191
198
|
```
|
|
192
199
|
Shokunin — Work in Progress
|
|
193
200
|
|
|
194
|
-
| Worktree
|
|
195
|
-
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
| . (main)
|
|
201
|
+
| Worktree | Branch | Ticket | Status | Progress |
|
|
202
|
+
|-----------------------------------|--------------------------|----------|-------------|-----------|
|
|
203
|
+
| .worktrees/PROJ-123-add-auth | PROJ-123/add-auth | PROJ-123 | in-progress | 4/7 tasks |
|
|
204
|
+
| .worktrees/PROJ-456-fix-dash | PROJ-456/fix-dash | PROJ-456 | review | 5/5 tasks |
|
|
205
|
+
| . (main) | main | — | — | — |
|
|
199
206
|
```
|
|
200
207
|
|
|
201
208
|
## Git Strategy
|
|
@@ -204,19 +211,19 @@ Shokunin — Work in Progress
|
|
|
204
211
|
- **During development:** WIP commits (`wip: <task name>`) — safe, cheap, squashed later
|
|
205
212
|
- **At ship time:** All commits squashed into one: `PROJ-123: feat: description`
|
|
206
213
|
- **PRs:** Created via `gh pr create`, merged manually on GitHub
|
|
207
|
-
- **Cleanup:** `git worktree remove
|
|
214
|
+
- **Cleanup:** `git worktree remove .worktrees/<ticket>-<slug>` after merge
|
|
208
215
|
|
|
209
216
|
## Quick Flow
|
|
210
217
|
|
|
211
|
-
For small changes that don't need a worktree, skip `/start`:
|
|
218
|
+
For small changes that don't need a worktree, skip `/shokunin:start`:
|
|
212
219
|
|
|
213
220
|
```bash
|
|
214
221
|
git checkout -b PROJ-789/fix-date-picker
|
|
215
222
|
# then in Claude Code:
|
|
216
|
-
/plan Fix the date picker timezone bug
|
|
217
|
-
/build
|
|
218
|
-
/review
|
|
219
|
-
/ship
|
|
223
|
+
/shokunin:plan Fix the date picker timezone bug
|
|
224
|
+
/shokunin:build
|
|
225
|
+
/shokunin:review
|
|
226
|
+
/shokunin:ship
|
|
220
227
|
```
|
|
221
228
|
|
|
222
229
|
## Configuration
|
|
@@ -229,7 +236,7 @@ git checkout -b PROJ-789/fix-date-picker
|
|
|
229
236
|
|
|
230
237
|
### Permissions
|
|
231
238
|
|
|
232
|
-
Add `Bash(gh *)` to your Claude Code allow list for `/ship` to create PRs:
|
|
239
|
+
Add `Bash(gh *)` to your Claude Code allow list for `/shokunin:ship` to create PRs:
|
|
233
240
|
|
|
234
241
|
In `~/.claude/settings.json`, add to the `permissions.allow` array:
|
|
235
242
|
```json
|
package/bin/install.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const readline = require('readline');
|
|
6
|
+
const { execSync } = require('child_process');
|
|
6
7
|
|
|
7
8
|
const SKILLS = ['start', 'plan', 'build', 'review', 'ship', 'wip', 'docs'];
|
|
8
9
|
const AGENTS = ['code-reviewer'];
|
|
@@ -50,6 +51,7 @@ async function promptUser(question) {
|
|
|
50
51
|
async function main() {
|
|
51
52
|
const args = process.argv.slice(2);
|
|
52
53
|
const force = args.includes('--force');
|
|
54
|
+
const noCommit = args.includes('--no-commit');
|
|
53
55
|
|
|
54
56
|
const projectRoot = findProjectRoot(process.cwd());
|
|
55
57
|
const packageRoot = path.resolve(__dirname, '..');
|
|
@@ -133,27 +135,70 @@ async function main() {
|
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
|
|
138
|
+
// Add .worktrees/ to .gitignore
|
|
139
|
+
const gitignorePath = path.join(projectRoot, '.gitignore');
|
|
140
|
+
let gitignoreUpdated = false;
|
|
141
|
+
const worktreeEntry = '.worktrees/';
|
|
142
|
+
if (fs.existsSync(gitignorePath)) {
|
|
143
|
+
const content = fs.readFileSync(gitignorePath, 'utf8');
|
|
144
|
+
if (!content.includes(worktreeEntry)) {
|
|
145
|
+
fs.appendFileSync(gitignorePath, `\n# Shokunin worktrees\n${worktreeEntry}\n`);
|
|
146
|
+
gitignoreUpdated = true;
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
fs.writeFileSync(gitignorePath, `# Shokunin worktrees\n${worktreeEntry}\n`);
|
|
150
|
+
gitignoreUpdated = true;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Auto-commit skills to git so worktrees inherit them
|
|
154
|
+
const hasChanges = installed > 0 || updated > 0;
|
|
155
|
+
let committed = false;
|
|
156
|
+
|
|
157
|
+
if ((hasChanges || gitignoreUpdated) && !noCommit) {
|
|
158
|
+
const isGitRepo = fs.existsSync(path.join(projectRoot, '.git'));
|
|
159
|
+
if (isGitRepo) {
|
|
160
|
+
try {
|
|
161
|
+
execSync('git add .claude/skills/ .claude/agents/', { cwd: projectRoot, stdio: 'pipe' });
|
|
162
|
+
if (gitignoreUpdated) {
|
|
163
|
+
execSync('git add .gitignore', { cwd: projectRoot, stdio: 'pipe' });
|
|
164
|
+
}
|
|
165
|
+
execSync('git commit -m "chore: install shokunin engineering process skills"', { cwd: projectRoot, stdio: 'pipe' });
|
|
166
|
+
committed = true;
|
|
167
|
+
} catch {
|
|
168
|
+
// Commit may fail if nothing staged (already tracked) or no git user configured
|
|
169
|
+
committed = false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
136
174
|
// Summary
|
|
137
175
|
console.log('');
|
|
138
176
|
console.log(' Done!');
|
|
139
177
|
if (installed > 0) console.log(` Installed: ${installed}`);
|
|
140
178
|
if (updated > 0) console.log(` Updated: ${updated}`);
|
|
141
179
|
if (skipped > 0) console.log(` Unchanged: ${skipped}`);
|
|
180
|
+
if (committed) console.log(' Committed to git (skills available in worktrees)');
|
|
142
181
|
console.log('');
|
|
143
182
|
console.log(' Skills installed:');
|
|
144
183
|
for (const skill of SKILLS) {
|
|
145
|
-
console.log(`
|
|
184
|
+
console.log(` /shokunin:${skill}`);
|
|
146
185
|
}
|
|
147
186
|
console.log('');
|
|
148
187
|
console.log(' Quick start:');
|
|
149
|
-
console.log(' /start PROJ-123 my new feature # Create workspace');
|
|
150
|
-
console.log(' /plan # Design the feature');
|
|
151
|
-
console.log(' /build # Implement with TDD');
|
|
152
|
-
console.log(' /review # Code review');
|
|
153
|
-
console.log(' /ship # Squash, PR, ship it');
|
|
188
|
+
console.log(' /shokunin:start PROJ-123 my new feature # Create workspace');
|
|
189
|
+
console.log(' /shokunin:plan # Design the feature');
|
|
190
|
+
console.log(' /shokunin:build # Implement with TDD');
|
|
191
|
+
console.log(' /shokunin:review # Code review');
|
|
192
|
+
console.log(' /shokunin:ship # Squash, PR, ship it');
|
|
154
193
|
console.log('');
|
|
194
|
+
if (!committed && hasChanges) {
|
|
195
|
+
console.log(' [!] Skills were not committed to git.');
|
|
196
|
+
console.log(' Run: git add .claude/skills/ .claude/agents/ && git commit');
|
|
197
|
+
console.log(' (Skills must be committed for worktrees to inherit them)');
|
|
198
|
+
console.log('');
|
|
199
|
+
}
|
|
155
200
|
console.log(' Prerequisites:');
|
|
156
|
-
console.log(' - gh CLI installed and authenticated (for /ship)');
|
|
201
|
+
console.log(' - gh CLI installed and authenticated (for /shokunin:ship)');
|
|
157
202
|
console.log(' - Add Bash(gh *) to ~/.claude/settings.json allow list');
|
|
158
203
|
console.log('');
|
|
159
204
|
}
|
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
|
|
|
@@ -115,7 +115,7 @@ After the PR is created, tell the user:
|
|
|
115
115
|
PR created: <URL>
|
|
116
116
|
|
|
117
117
|
After the PR is merged, clean up the worktree:
|
|
118
|
-
git worktree remove
|
|
118
|
+
git worktree remove .worktrees/<ticket>-<slug>
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
## Important
|
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
|
|
|
@@ -23,22 +23,60 @@ You are the initialisation phase of the shokunin engineering process. Set up a c
|
|
|
23
23
|
|
|
24
24
|
- **Branch name:** `<ticket>/<slugified-description>` — lowercase, hyphens, no special chars
|
|
25
25
|
- Example: `PROJ-123/add-user-authentication`
|
|
26
|
-
- **Worktree directory:**
|
|
27
|
-
- Example:
|
|
26
|
+
- **Worktree directory:** `.worktrees/<ticket>-<slug>`
|
|
27
|
+
- Example: `.worktrees/PROJ-123-add-user-authentication`
|
|
28
28
|
|
|
29
|
-
### 3.
|
|
29
|
+
### 3. Ensure .worktrees/ is Gitignored
|
|
30
|
+
|
|
31
|
+
Check if `.worktrees/` is in `.gitignore`. If not, add it:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
grep -q '^\.worktrees/' .gitignore 2>/dev/null || echo '.worktrees/' >> .gitignore
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Create the `.worktrees/` directory if it doesn't exist:
|
|
30
38
|
|
|
31
39
|
```bash
|
|
32
|
-
|
|
40
|
+
mkdir -p .worktrees
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 4. Create Worktree
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
git worktree add -b <branch-name> .worktrees/<ticket>-<slug> main
|
|
33
47
|
```
|
|
34
48
|
|
|
35
49
|
If the branch already exists, ask the user if they want to resume work on it or start fresh.
|
|
36
50
|
|
|
37
|
-
###
|
|
51
|
+
### 5. Ensure Skills Exist in Worktree
|
|
52
|
+
|
|
53
|
+
Check if `.claude/skills/` exists in the new worktree. If it doesn't (e.g. skills weren't committed to main), copy them from the source repo:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Check if skills exist in the worktree
|
|
57
|
+
ls <worktree-dir>/.claude/skills/plan/SKILL.md
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If missing, copy the entire `.claude/skills/` and `.claude/agents/` directories from the current repo into the worktree:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cp -r .claude/skills <worktree-dir>/.claude/skills
|
|
64
|
+
cp -r .claude/agents <worktree-dir>/.claude/agents
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Then commit them on the feature branch so they persist:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
cd <worktree-dir>
|
|
71
|
+
git add .claude/skills/ .claude/agents/
|
|
72
|
+
git commit -m "chore: add shokunin skills to feature branch"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 7. Create Plan Scaffold
|
|
38
76
|
|
|
39
77
|
Create the directory `.claude/plans/` in the worktree if it doesn't exist.
|
|
40
78
|
|
|
41
|
-
Write `.claude/plans/<ticket>.md` with this scaffold:
|
|
79
|
+
Write `.claude/plans/<ticket>.md` in the worktree with this scaffold:
|
|
42
80
|
|
|
43
81
|
```markdown
|
|
44
82
|
# Feature: <feature description>
|
|
@@ -61,7 +99,7 @@ Write `.claude/plans/<ticket>.md` with this scaffold:
|
|
|
61
99
|
<To be captured during /plan>
|
|
62
100
|
```
|
|
63
101
|
|
|
64
|
-
###
|
|
102
|
+
### 8. Print Next Steps
|
|
65
103
|
|
|
66
104
|
Tell the user:
|
|
67
105
|
|
|
@@ -74,11 +112,11 @@ Feature workspace created:
|
|
|
74
112
|
Next: Open a new terminal and run:
|
|
75
113
|
cd <worktree-dir> && claude
|
|
76
114
|
|
|
77
|
-
Then use /plan to define the feature.
|
|
115
|
+
Then use /shokunin:plan to define the feature.
|
|
78
116
|
```
|
|
79
117
|
|
|
80
118
|
## Important
|
|
81
119
|
|
|
82
120
|
- **Never start planning or implementing** — just set up the workspace
|
|
83
121
|
- **Always create a worktree** — this enables parallel feature development
|
|
84
|
-
- **Always scaffold the plan file** — it's the entry point for `/plan`
|
|
122
|
+
- **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
|
|