sdtk-kit 0.3.2 → 0.3.4
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 +40 -3
- package/assets/manifest/toolkit-bundle.manifest.json +87 -12
- package/assets/manifest/toolkit-bundle.sha256.txt +19 -4
- package/assets/toolkit/toolkit/AGENTS.md +20 -16
- package/assets/toolkit/toolkit/install.ps1 +122 -7
- package/assets/toolkit/toolkit/runtimes/claude/CLAUDE_TEMPLATE.md +32 -10
- package/assets/toolkit/toolkit/scripts/install-claude-skills.ps1 +129 -0
- package/assets/toolkit/toolkit/scripts/install-codex-skills.ps1 +8 -0
- package/assets/toolkit/toolkit/scripts/uninstall-claude-skills.ps1 +139 -0
- package/assets/toolkit/toolkit/skills-claude/api-design-spec/SKILL.md +76 -0
- package/assets/toolkit/toolkit/skills-claude/api-doc/SKILL.md +46 -0
- package/assets/toolkit/toolkit/skills-claude/arch/SKILL.md +70 -0
- package/assets/toolkit/toolkit/skills-claude/ba/SKILL.md +49 -0
- package/assets/toolkit/toolkit/skills-claude/design-layout/SKILL.md +25 -0
- package/assets/toolkit/toolkit/skills-claude/dev/SKILL.md +45 -0
- package/assets/toolkit/toolkit/skills-claude/dev-backend/SKILL.md +20 -0
- package/assets/toolkit/toolkit/skills-claude/dev-frontend/SKILL.md +18 -0
- package/assets/toolkit/toolkit/skills-claude/orchestrator/SKILL.md +63 -0
- package/assets/toolkit/toolkit/skills-claude/pm/SKILL.md +52 -0
- package/assets/toolkit/toolkit/skills-claude/qa/SKILL.md +47 -0
- package/assets/toolkit/toolkit/skills-claude/screen-design-spec/SKILL.md +68 -0
- package/assets/toolkit/toolkit/skills-claude/test-case-spec/SKILL.md +63 -0
- package/package.json +2 -2
- package/src/commands/help.js +30 -4
- package/src/commands/init.js +25 -1
- package/src/commands/runtime.js +217 -0
- package/src/index.js +4 -1
- package/src/lib/scope.js +68 -0
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ npm link
|
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
# 1. Initialize workspace with runtime adapter
|
|
19
|
-
sdtk init --runtime
|
|
19
|
+
sdtk init --runtime claude
|
|
20
20
|
|
|
21
21
|
# 2. Store GitHub token for entitlement
|
|
22
22
|
sdtk auth --token ghp_xxxxxxxxxxxx
|
|
@@ -24,6 +24,9 @@ sdtk auth --verify
|
|
|
24
24
|
|
|
25
25
|
# 3. Generate feature documentation (17 files)
|
|
26
26
|
sdtk generate --feature-key USER_PROFILE --feature-name "User Profile"
|
|
27
|
+
# Codex runtime remains available:
|
|
28
|
+
# sdtk init --runtime codex
|
|
29
|
+
|
|
27
30
|
```
|
|
28
31
|
|
|
29
32
|
## Commands
|
|
@@ -33,7 +36,9 @@ sdtk generate --feature-key USER_PROFILE --feature-name "User Profile"
|
|
|
33
36
|
Initialize SDTK workspace in the current or specified project directory.
|
|
34
37
|
|
|
35
38
|
```bash
|
|
36
|
-
sdtk init --runtime <codex|claude> [--project-path <path>] [--force] [--skip-
|
|
39
|
+
sdtk init --runtime <codex|claude> [--project-path <path>] [--force] [--runtime-scope <project|user>] [--skip-runtime-assets]
|
|
40
|
+
|
|
41
|
+
# Deprecated: --skip-skills (use --skip-runtime-assets instead)
|
|
37
42
|
```
|
|
38
43
|
|
|
39
44
|
Creates:
|
|
@@ -41,6 +46,9 @@ Creates:
|
|
|
41
46
|
- `sdtk.config.json` -- project configuration
|
|
42
47
|
- `sdtk.config.profiles.example.json` -- stack profile examples
|
|
43
48
|
- `CODEX.md` or `CLAUDE.md` -- runtime adapter
|
|
49
|
+
- for `--runtime claude`, skill files are installed into `.claude/skills/` (project scope, default) or `~/.claude/skills/` (user scope) unless `--skip-runtime-assets` is used
|
|
50
|
+
- for `--runtime codex`, skill files are installed into `$CODEX_HOME/skills/` or `~/.codex/skills/` (user scope only) unless `--skip-runtime-assets` is used
|
|
51
|
+
- `--skip-skills` is deprecated; use `--skip-runtime-assets` instead
|
|
44
52
|
|
|
45
53
|
### `sdtk auth`
|
|
46
54
|
|
|
@@ -79,6 +87,36 @@ sdtk generate --feature-key <UPPER_SNAKE_CASE> --feature-name "<text>" [--projec
|
|
|
79
87
|
|
|
80
88
|
Output files include: project initiation, BA spec, flow-action spec, PRD, backlog, architecture design, database spec, API specs (OpenAPI + endpoints + design detail + flow list), UI design layout, implementation plan, test cases, and QA release report.
|
|
81
89
|
|
|
90
|
+
### `sdtk runtime`
|
|
91
|
+
|
|
92
|
+
Manage runtime skill assets independently of `sdtk init`.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
sdtk runtime install --runtime <codex|claude> [--scope <project|user>]
|
|
96
|
+
sdtk runtime uninstall --runtime <codex|claude> [--scope <project|user>]
|
|
97
|
+
sdtk runtime status --runtime <codex|claude>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Scope defaults:
|
|
101
|
+
- `claude`: `project` (installs to `.claude/skills/`); `user` installs to `~/.claude/skills/`
|
|
102
|
+
- `codex`: `user` only (installs to `$CODEX_HOME/skills/` or `~/.codex/skills/`); project scope is not supported (Gate C0)
|
|
103
|
+
|
|
104
|
+
Examples:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Install Claude skills at project scope (default)
|
|
108
|
+
sdtk runtime install --runtime claude
|
|
109
|
+
|
|
110
|
+
# Install Claude skills at user scope
|
|
111
|
+
sdtk runtime install --runtime claude --scope user
|
|
112
|
+
|
|
113
|
+
# Check installed runtime assets
|
|
114
|
+
sdtk runtime status --runtime claude
|
|
115
|
+
|
|
116
|
+
# Remove runtime assets
|
|
117
|
+
sdtk runtime uninstall --runtime claude --scope project
|
|
118
|
+
```
|
|
119
|
+
|
|
82
120
|
### `sdtk --help` / `sdtk --version`
|
|
83
121
|
|
|
84
122
|
```bash
|
|
@@ -128,4 +166,3 @@ npm run verify:payload
|
|
|
128
166
|
# Smoke test npm pack
|
|
129
167
|
npm run pack:smoke
|
|
130
168
|
```
|
|
131
|
-
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"buildTimestamp": "2026-03-
|
|
2
|
+
"buildTimestamp": "2026-03-07T02:40:24Z",
|
|
3
3
|
"files": [
|
|
4
4
|
{
|
|
5
5
|
"path": "toolkit/AGENTS.md",
|
|
6
|
-
"sha256": "
|
|
7
|
-
"size":
|
|
6
|
+
"sha256": "868430474b46e4e8d27ed26b780a794936e84cf4f0278f2cc3d061f54877f498",
|
|
7
|
+
"size": 5113
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"path": "toolkit/install.ps1",
|
|
11
|
-
"sha256": "
|
|
12
|
-
"size":
|
|
11
|
+
"sha256": "e717a2791fb597d7a21f57f4c4790dbc545e954f0af3ca0c47f160f78c8a2474",
|
|
12
|
+
"size": 9777
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "toolkit/runtimes/claude/CLAUDE_TEMPLATE.md",
|
|
16
|
-
"sha256": "
|
|
17
|
-
"size":
|
|
16
|
+
"sha256": "0f3e0bfe1b5165250f0da4da5790a9e6220023752713088a0076eb7f17fd6397",
|
|
17
|
+
"size": 1933
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "toolkit/runtimes/codex/CODEX_TEMPLATE.md",
|
|
@@ -26,10 +26,20 @@
|
|
|
26
26
|
"sha256": "5c1f5442fd3c26b8bf62db4b25e9f1c4207258c7fe52f12ed533968f77dfbf65",
|
|
27
27
|
"size": 10557
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
"path": "toolkit/scripts/install-claude-skills.ps1",
|
|
31
|
+
"sha256": "8c66c27262ad4abc3c42bbcbe3a97752a5f29956ac93397133e6780354911549",
|
|
32
|
+
"size": 4315
|
|
33
|
+
},
|
|
29
34
|
{
|
|
30
35
|
"path": "toolkit/scripts/install-codex-skills.ps1",
|
|
31
|
-
"sha256": "
|
|
32
|
-
"size":
|
|
36
|
+
"sha256": "ca64e0c2a0f13137bc6b780a57442de46a3e0551778bbcbadd4eb779c21cb203",
|
|
37
|
+
"size": 9427
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"path": "toolkit/scripts/uninstall-claude-skills.ps1",
|
|
41
|
+
"sha256": "809ffc1f96528ac1cd453214cd1c2d231ca0753f0d3c19b4a20f11835a64a152",
|
|
42
|
+
"size": 4482
|
|
33
43
|
},
|
|
34
44
|
{
|
|
35
45
|
"path": "toolkit/scripts/uninstall-codex-skills.ps1",
|
|
@@ -211,6 +221,71 @@
|
|
|
211
221
|
"sha256": "72ca16e07c286910333243954610e116217ca2abb3a5e276cbe91e92eb826ad5",
|
|
212
222
|
"size": 2652
|
|
213
223
|
},
|
|
224
|
+
{
|
|
225
|
+
"path": "toolkit/skills-claude/api-design-spec/SKILL.md",
|
|
226
|
+
"sha256": "123873681ff65792a9a269b264155c65a5feb68b23e4eeb1e68cb7da1a137d54",
|
|
227
|
+
"size": 3252
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"path": "toolkit/skills-claude/api-doc/SKILL.md",
|
|
231
|
+
"sha256": "57176bb3d74e19ef5feb1a8d59d8c7c1714634f67e1d51bf4667d3f189093319",
|
|
232
|
+
"size": 2240
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"path": "toolkit/skills-claude/arch/SKILL.md",
|
|
236
|
+
"sha256": "5ab03dc8a928c6528d1ccaad427a15c686427e8fd9114421da495d9223652337",
|
|
237
|
+
"size": 4108
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"path": "toolkit/skills-claude/ba/SKILL.md",
|
|
241
|
+
"sha256": "1956fd69ff1a0adb54c8abbf06b37bd5c21b7f0ca597b6d8b94dfed0606cd2e4",
|
|
242
|
+
"size": 2551
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"path": "toolkit/skills-claude/design-layout/SKILL.md",
|
|
246
|
+
"sha256": "9765f229108c5aff27457489707218570ad83dc362353a79c2f5a78607adf4de",
|
|
247
|
+
"size": 840
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"path": "toolkit/skills-claude/dev/SKILL.md",
|
|
251
|
+
"sha256": "cea9f6512bc805d5b22a84a4ef8dbd229b4f7a3f073f9e125e933e6e79a206d5",
|
|
252
|
+
"size": 2505
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"path": "toolkit/skills-claude/dev-backend/SKILL.md",
|
|
256
|
+
"sha256": "142a8fe088a4b0326ca79e00200cb5f562c53728b7adc83e6b749db6e29f1d0d",
|
|
257
|
+
"size": 841
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"path": "toolkit/skills-claude/dev-frontend/SKILL.md",
|
|
261
|
+
"sha256": "1631bd51bc3d0106c18f4c00412f6279626bdce9f0e310822d5dcdff08063a88",
|
|
262
|
+
"size": 800
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"path": "toolkit/skills-claude/orchestrator/SKILL.md",
|
|
266
|
+
"sha256": "c8e8303f1833e71cacdf20b1f398e476b44b3de14fbffad9a404c2a68fa713a3",
|
|
267
|
+
"size": 4046
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"path": "toolkit/skills-claude/pm/SKILL.md",
|
|
271
|
+
"sha256": "b34621fe61957e573c616ad816d591a60a6c8d1333d0bfb71f39f45b93331cb0",
|
|
272
|
+
"size": 3043
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"path": "toolkit/skills-claude/qa/SKILL.md",
|
|
276
|
+
"sha256": "eb0a540d28144855b5026e7b40ce965c4049a9b56f6e7ffd9732964006f63d1a",
|
|
277
|
+
"size": 2687
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"path": "toolkit/skills-claude/screen-design-spec/SKILL.md",
|
|
281
|
+
"sha256": "5686da60872f1a3c6791e9a740897d4a564f40d53d54902a47fbc3165e68a1ec",
|
|
282
|
+
"size": 3261
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"path": "toolkit/skills-claude/test-case-spec/SKILL.md",
|
|
286
|
+
"sha256": "efd43e2087961f4e30177144c42e06b6c9b3d73f9533dad34f9ce1284fcdf126",
|
|
287
|
+
"size": 2625
|
|
288
|
+
},
|
|
214
289
|
{
|
|
215
290
|
"path": "toolkit/templates/docs/api/API_DESIGN_CREATION_RULES.md",
|
|
216
291
|
"sha256": "9adf1e46833411a861fb7426c37baac69689b9e3120a8ed1e4a3224de44a8dd2",
|
|
@@ -332,7 +407,7 @@
|
|
|
332
407
|
"size": 3255
|
|
333
408
|
}
|
|
334
409
|
],
|
|
335
|
-
"sourceCommit": "
|
|
336
|
-
"version": "0.3.
|
|
337
|
-
"fileCount":
|
|
410
|
+
"sourceCommit": "965d6ad1f80a42b8b49c4296ec7a96ffef2655e3",
|
|
411
|
+
"version": "0.3.4",
|
|
412
|
+
"fileCount": 81
|
|
338
413
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
868430474b46e4e8d27ed26b780a794936e84cf4f0278f2cc3d061f54877f498 toolkit/AGENTS.md
|
|
2
|
+
e717a2791fb597d7a21f57f4c4790dbc545e954f0af3ca0c47f160f78c8a2474 toolkit/install.ps1
|
|
3
|
+
0f3e0bfe1b5165250f0da4da5790a9e6220023752713088a0076eb7f17fd6397 toolkit/runtimes/claude/CLAUDE_TEMPLATE.md
|
|
4
4
|
4154c15c71f44d2f2caf07fb41722fa65d4f9ec7e78f798ee084effd12345c62 toolkit/runtimes/codex/CODEX_TEMPLATE.md
|
|
5
5
|
5c1f5442fd3c26b8bf62db4b25e9f1c4207258c7fe52f12ed533968f77dfbf65 toolkit/scripts/init-feature.ps1
|
|
6
|
-
|
|
6
|
+
8c66c27262ad4abc3c42bbcbe3a97752a5f29956ac93397133e6780354911549 toolkit/scripts/install-claude-skills.ps1
|
|
7
|
+
ca64e0c2a0f13137bc6b780a57442de46a3e0551778bbcbadd4eb779c21cb203 toolkit/scripts/install-codex-skills.ps1
|
|
8
|
+
809ffc1f96528ac1cd453214cd1c2d231ca0753f0d3c19b4a20f11835a64a152 toolkit/scripts/uninstall-claude-skills.ps1
|
|
7
9
|
e0d462bd6dcdb17cc003d459063ff341bd2e4f60b245cda9b7e9b9e94b3cf01f toolkit/scripts/uninstall-codex-skills.ps1
|
|
8
10
|
de2921da9ce504487d9c7d97bf862b65d0ba00b9f1593a4fbfadf41ac36adb49 toolkit/sdtk.config.json
|
|
9
11
|
21b1b0212f85c76dc6a89ae5936b39c4c1df7837a333f7a3db337f3039babb7b toolkit/sdtk.config.profiles.example.json
|
|
@@ -40,6 +42,19 @@ ae0bc9b120c19a142f10cc79168a8f7d6bf8a37e48341fc16cbc74bbdc2e692c toolkit/skills
|
|
|
40
42
|
7c21e74f5eee712c6b65665b4f10483ed008113186a92dc0a4673ce1fcd3ef5c toolkit/skills/sdtk-test-case-spec/references/TEST_CASE_CREATION_RULES.md
|
|
41
43
|
4d1e813908114f2be68007fb7373973e2c6e0aebc5a6305b8b19443d5ae477d0 toolkit/skills/sdtk-test-case-spec/scripts/validate_test_case_spec.py
|
|
42
44
|
72ca16e07c286910333243954610e116217ca2abb3a5e276cbe91e92eb826ad5 toolkit/skills/sdtk-test-case-spec/SKILL.md
|
|
45
|
+
123873681ff65792a9a269b264155c65a5feb68b23e4eeb1e68cb7da1a137d54 toolkit/skills-claude/api-design-spec/SKILL.md
|
|
46
|
+
57176bb3d74e19ef5feb1a8d59d8c7c1714634f67e1d51bf4667d3f189093319 toolkit/skills-claude/api-doc/SKILL.md
|
|
47
|
+
5ab03dc8a928c6528d1ccaad427a15c686427e8fd9114421da495d9223652337 toolkit/skills-claude/arch/SKILL.md
|
|
48
|
+
1956fd69ff1a0adb54c8abbf06b37bd5c21b7f0ca597b6d8b94dfed0606cd2e4 toolkit/skills-claude/ba/SKILL.md
|
|
49
|
+
9765f229108c5aff27457489707218570ad83dc362353a79c2f5a78607adf4de toolkit/skills-claude/design-layout/SKILL.md
|
|
50
|
+
cea9f6512bc805d5b22a84a4ef8dbd229b4f7a3f073f9e125e933e6e79a206d5 toolkit/skills-claude/dev/SKILL.md
|
|
51
|
+
142a8fe088a4b0326ca79e00200cb5f562c53728b7adc83e6b749db6e29f1d0d toolkit/skills-claude/dev-backend/SKILL.md
|
|
52
|
+
1631bd51bc3d0106c18f4c00412f6279626bdce9f0e310822d5dcdff08063a88 toolkit/skills-claude/dev-frontend/SKILL.md
|
|
53
|
+
c8e8303f1833e71cacdf20b1f398e476b44b3de14fbffad9a404c2a68fa713a3 toolkit/skills-claude/orchestrator/SKILL.md
|
|
54
|
+
b34621fe61957e573c616ad816d591a60a6c8d1333d0bfb71f39f45b93331cb0 toolkit/skills-claude/pm/SKILL.md
|
|
55
|
+
eb0a540d28144855b5026e7b40ce965c4049a9b56f6e7ffd9732964006f63d1a toolkit/skills-claude/qa/SKILL.md
|
|
56
|
+
5686da60872f1a3c6791e9a740897d4a564f40d53d54902a47fbc3165e68a1ec toolkit/skills-claude/screen-design-spec/SKILL.md
|
|
57
|
+
efd43e2087961f4e30177144c42e06b6c9b3d73f9533dad34f9ce1284fcdf126 toolkit/skills-claude/test-case-spec/SKILL.md
|
|
43
58
|
9adf1e46833411a861fb7426c37baac69689b9e3120a8ed1e4a3224de44a8dd2 toolkit/templates/docs/api/API_DESIGN_CREATION_RULES.md
|
|
44
59
|
d2aa0ee3a7c5351700b3bffb4ba66e8056ed955f55903c744c694624730038cb toolkit/templates/docs/api/API_DESIGN_DETAIL_TEMPLATE.md
|
|
45
60
|
13f26a3307894b9bfb570d75f6db4ccb61104064d19661ec2a26a1b9984f4c97 toolkit/templates/docs/api/API_DESIGN_FLOWCHART_CREATION_RULES.md
|
|
@@ -59,9 +59,9 @@ Notes:
|
|
|
59
59
|
## 5) Feature Bootstrap
|
|
60
60
|
Run from project root:
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
```
|
|
63
|
+
sdtk generate --feature-key YOUR_FEATURE --feature-name "Your Feature"
|
|
64
|
+
```
|
|
65
65
|
|
|
66
66
|
## 6) ARCH Deliverables (Extended)
|
|
67
67
|
In addition to `ARCH_DESIGN`, ARCH may generate:
|
|
@@ -90,16 +90,20 @@ In addition to `ARCH_DESIGN`, ARCH may generate:
|
|
|
90
90
|
- `off`: skip unless explicitly requested.
|
|
91
91
|
|
|
92
92
|
## 7) Mandatory Rule References
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
- Flow-action numbering policy
|
|
105
|
-
|
|
93
|
+
Rule files are installed locally by the runtime. Skills resolve these at:
|
|
94
|
+
- Claude Code: `.claude/skills/references/`
|
|
95
|
+
- Codex: `$CODEX_HOME/skills/<skill>/references/`
|
|
96
|
+
|
|
97
|
+
Available rule files:
|
|
98
|
+
- `YAML_CREATION_RULES.md` — API YAML docs
|
|
99
|
+
- `API_DESIGN_FLOWCHART_CREATION_RULES.md` — API design detail + flow docs
|
|
100
|
+
- `FLOWCHART_CREATION_RULES.md` — Flowchart (legacy compat)
|
|
101
|
+
- `API_DESIGN_CREATION_RULES.md` — API design (legacy compat)
|
|
102
|
+
- `FLOW_ACTION_SPEC_CREATION_RULES.md` — Screen flow-action specs
|
|
103
|
+
- `TEST_CASE_CREATION_RULES.md` — QA test-case specs
|
|
104
|
+
- `numbering-rules.md` — Flow-action numbering policy
|
|
105
|
+
- `figma-mcp.md` — Figma MCP integration
|
|
106
|
+
- `excel-image-export.md` — Excel image export
|
|
107
|
+
|
|
108
|
+
Flow-action numbering policy:
|
|
109
|
+
- Use one global numbering mode for the whole document (no per-screen reset).
|
|
@@ -2,9 +2,12 @@ param(
|
|
|
2
2
|
[string]$ProjectPath,
|
|
3
3
|
[switch]$Force,
|
|
4
4
|
[switch]$SkipSkills,
|
|
5
|
+
[switch]$SkipRuntimeAssets,
|
|
5
6
|
[switch]$Quiet,
|
|
6
7
|
[ValidateSet('codex', 'claude')]
|
|
7
|
-
[string]$Runtime = 'codex'
|
|
8
|
+
[string]$Runtime = 'codex',
|
|
9
|
+
[ValidateSet('project', 'user', '')]
|
|
10
|
+
[string]$Scope = ''
|
|
8
11
|
)
|
|
9
12
|
|
|
10
13
|
$ErrorActionPreference = 'Stop'
|
|
@@ -80,6 +83,94 @@ function Install-RuntimeAdapter {
|
|
|
80
83
|
throw "Unsupported runtime: $RuntimeName"
|
|
81
84
|
}
|
|
82
85
|
|
|
86
|
+
function Install-ClaudeSkills {
|
|
87
|
+
param(
|
|
88
|
+
[Parameter(Mandatory = $true)][string]$ToolkitRoot,
|
|
89
|
+
[Parameter(Mandatory = $true)][string]$ProjectRoot,
|
|
90
|
+
[Parameter(Mandatory = $true)][bool]$Overwrite
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
$skillsSource = Join-Path $ToolkitRoot 'skills-claude'
|
|
94
|
+
$skillsDest = Join-Path $ProjectRoot '.claude/skills'
|
|
95
|
+
|
|
96
|
+
if (-not (Test-Path -LiteralPath $skillsSource)) {
|
|
97
|
+
throw "Claude skills source not found: $skillsSource"
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
$skillCount = 0
|
|
101
|
+
foreach ($skillDir in (Get-ChildItem -Path $skillsSource -Directory)) {
|
|
102
|
+
$srcFile = Join-Path $skillDir.FullName 'SKILL.md'
|
|
103
|
+
if (-not (Test-Path -LiteralPath $srcFile)) { continue }
|
|
104
|
+
|
|
105
|
+
$destFile = Join-Path $skillsDest "$($skillDir.Name)/SKILL.md"
|
|
106
|
+
Copy-File -SourcePath $srcFile -DestinationPath $destFile -Overwrite $Overwrite
|
|
107
|
+
$skillCount++
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# Install reference files
|
|
111
|
+
$refDest = Join-Path $skillsDest 'references'
|
|
112
|
+
if (-not (Test-Path -LiteralPath $refDest)) {
|
|
113
|
+
New-Item -ItemType Directory -Force -Path $refDest | Out-Null
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
$refCount = 0
|
|
117
|
+
$missingRefs = @()
|
|
118
|
+
|
|
119
|
+
# 6 files from toolkit/templates/docs/
|
|
120
|
+
$templateRefs = @(
|
|
121
|
+
@{ Src = 'templates/docs/api/YAML_CREATION_RULES.md' },
|
|
122
|
+
@{ Src = 'templates/docs/api/API_DESIGN_FLOWCHART_CREATION_RULES.md' },
|
|
123
|
+
@{ Src = 'templates/docs/api/FLOWCHART_CREATION_RULES.md' },
|
|
124
|
+
@{ Src = 'templates/docs/api/API_DESIGN_CREATION_RULES.md' },
|
|
125
|
+
@{ Src = 'templates/docs/specs/FLOW_ACTION_SPEC_CREATION_RULES.md' },
|
|
126
|
+
@{ Src = 'templates/docs/qa/TEST_CASE_CREATION_RULES.md' }
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
foreach ($ref in $templateRefs) {
|
|
130
|
+
$srcPath = Join-Path $ToolkitRoot $ref.Src
|
|
131
|
+
$fileName = Split-Path -Leaf $srcPath
|
|
132
|
+
$destPath = Join-Path $refDest $fileName
|
|
133
|
+
if (Test-Path -LiteralPath $srcPath) {
|
|
134
|
+
Copy-File -SourcePath $srcPath -DestinationPath $destPath -Overwrite $Overwrite
|
|
135
|
+
$refCount++
|
|
136
|
+
} else {
|
|
137
|
+
$missingRefs += $srcPath
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
# 3 files from toolkit/skills/sdtk-screen-design-spec/references/
|
|
142
|
+
$screenRefs = @('numbering-rules.md', 'figma-mcp.md', 'excel-image-export.md')
|
|
143
|
+
foreach ($fileName in $screenRefs) {
|
|
144
|
+
$srcPath = Join-Path $ToolkitRoot "skills/sdtk-screen-design-spec/references/$fileName"
|
|
145
|
+
$destPath = Join-Path $refDest $fileName
|
|
146
|
+
if (Test-Path -LiteralPath $srcPath) {
|
|
147
|
+
Copy-File -SourcePath $srcPath -DestinationPath $destPath -Overwrite $Overwrite
|
|
148
|
+
$refCount++
|
|
149
|
+
} else {
|
|
150
|
+
$missingRefs += $srcPath
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
# Fail-fast: abort if any reference files are missing
|
|
155
|
+
if ($missingRefs.Count -gt 0) {
|
|
156
|
+
$list = ($missingRefs | ForEach-Object { " - $_" }) -join "`n"
|
|
157
|
+
throw "Claude install failed. Missing reference files:`n$list"
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
# Strict count assertions
|
|
161
|
+
$expectedSkills = 13
|
|
162
|
+
$expectedRefs = 9
|
|
163
|
+
if ($skillCount -ne $expectedSkills) {
|
|
164
|
+
throw "Claude install failed. Expected $expectedSkills skills but installed $skillCount."
|
|
165
|
+
}
|
|
166
|
+
if ($refCount -ne $expectedRefs) {
|
|
167
|
+
throw "Claude install failed. Expected $expectedRefs reference files but installed $refCount."
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
Write-Host " Skills installed: $skillCount"
|
|
171
|
+
Write-Host " Reference files : $refCount"
|
|
172
|
+
}
|
|
173
|
+
|
|
83
174
|
$toolkitRoot = Resolve-Path $PSScriptRoot
|
|
84
175
|
$canonicalRulesPath = Join-Path $toolkitRoot 'templates/docs/api/FLOWCHART_CREATION_RULES.md'
|
|
85
176
|
$canonicalRulesHash = Get-FileSha256 -Path $canonicalRulesPath
|
|
@@ -93,6 +184,15 @@ if (-not $ProjectPath) {
|
|
|
93
184
|
}
|
|
94
185
|
$projectRoot = Resolve-Path -LiteralPath $ProjectPath
|
|
95
186
|
|
|
187
|
+
# Merge SkipRuntimeAssets and legacy SkipSkills
|
|
188
|
+
if ($SkipRuntimeAssets) { $SkipSkills = $true }
|
|
189
|
+
|
|
190
|
+
# Default scope: project for Claude, user for Codex
|
|
191
|
+
if (-not $Scope -or $Scope -eq '') {
|
|
192
|
+
if ($Runtime -eq 'claude') { $Scope = 'project' }
|
|
193
|
+
else { $Scope = 'user' }
|
|
194
|
+
}
|
|
195
|
+
|
|
96
196
|
if (-not $Quiet) {
|
|
97
197
|
Write-Host "SDTK toolkit : $toolkitRoot"
|
|
98
198
|
Write-Host "Project root : $projectRoot"
|
|
@@ -129,15 +229,29 @@ if (($Runtime -eq 'codex') -and (-not $SkipSkills)) {
|
|
|
129
229
|
}
|
|
130
230
|
|
|
131
231
|
Write-Host ""
|
|
132
|
-
Write-Host "Installing Codex skills
|
|
232
|
+
Write-Host "Installing Codex skills (scope: $Scope)..."
|
|
133
233
|
if ($Force) {
|
|
134
|
-
& $skillInstaller -Force | Out-Host
|
|
234
|
+
& $skillInstaller -Scope $Scope -Force | Out-Host
|
|
135
235
|
} else {
|
|
136
|
-
& $skillInstaller | Out-Host
|
|
236
|
+
& $skillInstaller -Scope $Scope | Out-Host
|
|
137
237
|
}
|
|
138
238
|
}
|
|
139
|
-
elseif (($Runtime -eq 'claude') -and (-not $SkipSkills)
|
|
140
|
-
|
|
239
|
+
elseif (($Runtime -eq 'claude') -and (-not $SkipSkills)) {
|
|
240
|
+
$skillInstaller = Join-Path $toolkitRoot 'scripts/install-claude-skills.ps1'
|
|
241
|
+
if (-not (Test-Path -LiteralPath $skillInstaller)) {
|
|
242
|
+
# Fallback to inline Install-ClaudeSkills for backward compatibility
|
|
243
|
+
Write-Host ""
|
|
244
|
+
Write-Host "Installing Claude Code skills..."
|
|
245
|
+
Install-ClaudeSkills -ToolkitRoot $toolkitRoot -ProjectRoot $projectRoot -Overwrite ([bool]$Force)
|
|
246
|
+
} else {
|
|
247
|
+
Write-Host ""
|
|
248
|
+
Write-Host "Installing Claude Code skills (scope: $Scope)..."
|
|
249
|
+
if ($Force) {
|
|
250
|
+
& $skillInstaller -Scope $Scope -ProjectPath $projectRoot.ToString() -Force | Out-Host
|
|
251
|
+
} else {
|
|
252
|
+
& $skillInstaller -Scope $Scope -ProjectPath $projectRoot.ToString() | Out-Host
|
|
253
|
+
}
|
|
254
|
+
}
|
|
141
255
|
}
|
|
142
256
|
|
|
143
257
|
if (-not $Quiet) {
|
|
@@ -148,7 +262,8 @@ if (-not $Quiet) {
|
|
|
148
262
|
if ($Runtime -eq 'codex') {
|
|
149
263
|
Write-Host "2) Restart Codex (to load runtime adapter and skills)"
|
|
150
264
|
} else {
|
|
151
|
-
Write-Host "2) Restart Claude Code (to load CLAUDE.md
|
|
265
|
+
Write-Host "2) Restart Claude Code (to load CLAUDE.md + skills)"
|
|
266
|
+
Write-Host " Commands: /orchestrator /pm /ba /arch /dev /qa"
|
|
152
267
|
}
|
|
153
268
|
Write-Host '3) Generate feature docs:'
|
|
154
269
|
Write-Host ' sdtk generate --feature-key YOUR_FEATURE --feature-name "Your Feature"'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# CLAUDE.md
|
|
2
2
|
|
|
3
|
-
Version:
|
|
4
|
-
Last Updated: 2026-
|
|
3
|
+
Version: 2.0
|
|
4
|
+
Last Updated: 2026-03-05
|
|
5
5
|
Owner: SDTK Core Team
|
|
6
6
|
|
|
7
7
|
This file defines runtime guidance for Claude Code sessions in projects using SDTK.
|
|
@@ -9,24 +9,46 @@ This file defines runtime guidance for Claude Code sessions in projects using SD
|
|
|
9
9
|
## 1) Rule Priority
|
|
10
10
|
1. Explicit user request
|
|
11
11
|
2. `AGENTS.md` (project root)
|
|
12
|
-
3.
|
|
12
|
+
3. Installed skill content (`.claude/skills/*/SKILL.md`)
|
|
13
13
|
4. This file (`CLAUDE.md`)
|
|
14
|
-
5.
|
|
14
|
+
5. `sdtk.config.json`
|
|
15
15
|
|
|
16
16
|
## 2) Runtime Model
|
|
17
17
|
- Primary workflow: PM -> BA -> ARCH -> DEV -> QA
|
|
18
|
-
-
|
|
18
|
+
- Entry point: `/orchestrator` (recommended) or `/pm`
|
|
19
|
+
- Role commands: `/pm`, `/ba`, `/arch`, `/dev`, `/qa`
|
|
20
|
+
- Sub-skill commands: `/api-doc`, `/api-design-spec`, `/screen-design-spec`, `/design-layout`, `/test-case-spec`, `/dev-backend`, `/dev-frontend`
|
|
19
21
|
- Shared state files:
|
|
20
22
|
- `SHARED_PLANNING.md`
|
|
21
23
|
- `QUALITY_CHECKLIST.md`
|
|
22
24
|
|
|
23
25
|
## 3) Minimal Session Flow
|
|
24
|
-
1. Start with `/pm` to define feature scope.
|
|
26
|
+
1. Start with `/orchestrator` or `/pm` to define feature scope.
|
|
25
27
|
2. Move phase-by-phase without skipping gates.
|
|
26
28
|
3. Keep traceability from requirements to design, implementation, and tests.
|
|
27
29
|
4. Require code review completion before QA release decision.
|
|
28
30
|
|
|
29
|
-
## 4)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
## 4) Installed Skills
|
|
32
|
+
Skills are installed at `.claude/skills/` and provide slash commands:
|
|
33
|
+
|
|
34
|
+
| Command | Purpose |
|
|
35
|
+
|---------|---------|
|
|
36
|
+
| `/orchestrator` | Full 6-phase SDLC orchestration |
|
|
37
|
+
| `/pm` | PM initiation + planning |
|
|
38
|
+
| `/ba` | Business analysis |
|
|
39
|
+
| `/arch` | Solution architecture |
|
|
40
|
+
| `/dev` | Development + code review |
|
|
41
|
+
| `/qa` | QA testing + release decision |
|
|
42
|
+
| `/api-doc` | OpenAPI YAML + flow diagrams |
|
|
43
|
+
| `/api-design-spec` | API design detail spec |
|
|
44
|
+
| `/screen-design-spec` | Screen flow-action spec |
|
|
45
|
+
| `/design-layout` | UI screen layout wireframes |
|
|
46
|
+
| `/test-case-spec` | QA test-case spec |
|
|
47
|
+
| `/dev-backend` | Backend code conventions |
|
|
48
|
+
| `/dev-frontend` | Frontend code conventions |
|
|
49
|
+
|
|
50
|
+
Rule reference files are installed at `.claude/skills/references/`.
|
|
51
|
+
|
|
52
|
+
## 5) References
|
|
53
|
+
- `sdtk.config.json`
|
|
54
|
+
- `.claude/skills/references/` (rule files)
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[string]$ProjectPath,
|
|
3
|
+
[ValidateSet('project', 'user')]
|
|
4
|
+
[string]$Scope = 'project',
|
|
5
|
+
[switch]$Force
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
$ErrorActionPreference = 'Stop'
|
|
9
|
+
Set-StrictMode -Version Latest
|
|
10
|
+
|
|
11
|
+
function Copy-File {
|
|
12
|
+
param(
|
|
13
|
+
[Parameter(Mandatory = $true)][string]$SourcePath,
|
|
14
|
+
[Parameter(Mandatory = $true)][string]$DestinationPath,
|
|
15
|
+
[Parameter(Mandatory = $true)][bool]$Overwrite
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
if (-not (Test-Path -LiteralPath $SourcePath)) {
|
|
19
|
+
throw "Missing source: $SourcePath"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (Test-Path -LiteralPath $DestinationPath) {
|
|
23
|
+
if (-not $Overwrite) {
|
|
24
|
+
Write-Warning "Already exists (skipping). Use -Force to overwrite: $DestinationPath"
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
$parent = Split-Path -Parent $DestinationPath
|
|
30
|
+
if ($parent -and -not (Test-Path -LiteralPath $parent)) {
|
|
31
|
+
New-Item -ItemType Directory -Force -Path $parent | Out-Null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
Copy-Item -LiteralPath $SourcePath -Destination $DestinationPath -Force
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
$toolkitRoot = Resolve-Path (Join-Path $PSScriptRoot '..')
|
|
38
|
+
|
|
39
|
+
# Resolve destination based on scope
|
|
40
|
+
if ($Scope -eq 'user') {
|
|
41
|
+
$skillsDest = Join-Path $HOME '.claude/skills'
|
|
42
|
+
Write-Host "Scope: user (installing to $skillsDest)"
|
|
43
|
+
} else {
|
|
44
|
+
if (-not $ProjectPath) {
|
|
45
|
+
$ProjectPath = (Resolve-Path (Join-Path $toolkitRoot '..')).Path
|
|
46
|
+
}
|
|
47
|
+
$projectRoot = Resolve-Path -LiteralPath $ProjectPath
|
|
48
|
+
$skillsDest = Join-Path $projectRoot '.claude/skills'
|
|
49
|
+
Write-Host "Scope: project (installing to $skillsDest)"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
$skillsSource = Join-Path $toolkitRoot 'skills-claude'
|
|
53
|
+
if (-not (Test-Path -LiteralPath $skillsSource)) {
|
|
54
|
+
throw "Claude skills source not found: $skillsSource"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
$skillCount = 0
|
|
58
|
+
foreach ($skillDir in (Get-ChildItem -Path $skillsSource -Directory)) {
|
|
59
|
+
$srcFile = Join-Path $skillDir.FullName 'SKILL.md'
|
|
60
|
+
if (-not (Test-Path -LiteralPath $srcFile)) { continue }
|
|
61
|
+
|
|
62
|
+
$destFile = Join-Path $skillsDest "$($skillDir.Name)/SKILL.md"
|
|
63
|
+
Copy-File -SourcePath $srcFile -DestinationPath $destFile -Overwrite ([bool]$Force)
|
|
64
|
+
$skillCount++
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
# Install reference files
|
|
68
|
+
$refDest = Join-Path $skillsDest 'references'
|
|
69
|
+
if (-not (Test-Path -LiteralPath $refDest)) {
|
|
70
|
+
New-Item -ItemType Directory -Force -Path $refDest | Out-Null
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
$refCount = 0
|
|
74
|
+
$missingRefs = @()
|
|
75
|
+
|
|
76
|
+
# 6 files from toolkit/templates/docs/
|
|
77
|
+
$templateRefs = @(
|
|
78
|
+
@{ Src = 'templates/docs/api/YAML_CREATION_RULES.md' },
|
|
79
|
+
@{ Src = 'templates/docs/api/API_DESIGN_FLOWCHART_CREATION_RULES.md' },
|
|
80
|
+
@{ Src = 'templates/docs/api/FLOWCHART_CREATION_RULES.md' },
|
|
81
|
+
@{ Src = 'templates/docs/api/API_DESIGN_CREATION_RULES.md' },
|
|
82
|
+
@{ Src = 'templates/docs/specs/FLOW_ACTION_SPEC_CREATION_RULES.md' },
|
|
83
|
+
@{ Src = 'templates/docs/qa/TEST_CASE_CREATION_RULES.md' }
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
foreach ($ref in $templateRefs) {
|
|
87
|
+
$srcPath = Join-Path $toolkitRoot $ref.Src
|
|
88
|
+
$fileName = Split-Path -Leaf $srcPath
|
|
89
|
+
$destPath = Join-Path $refDest $fileName
|
|
90
|
+
if (Test-Path -LiteralPath $srcPath) {
|
|
91
|
+
Copy-File -SourcePath $srcPath -DestinationPath $destPath -Overwrite ([bool]$Force)
|
|
92
|
+
$refCount++
|
|
93
|
+
} else {
|
|
94
|
+
$missingRefs += $srcPath
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# 3 files from toolkit/skills/sdtk-screen-design-spec/references/
|
|
99
|
+
$screenRefs = @('numbering-rules.md', 'figma-mcp.md', 'excel-image-export.md')
|
|
100
|
+
foreach ($fileName in $screenRefs) {
|
|
101
|
+
$srcPath = Join-Path $toolkitRoot "skills/sdtk-screen-design-spec/references/$fileName"
|
|
102
|
+
$destPath = Join-Path $refDest $fileName
|
|
103
|
+
if (Test-Path -LiteralPath $srcPath) {
|
|
104
|
+
Copy-File -SourcePath $srcPath -DestinationPath $destPath -Overwrite ([bool]$Force)
|
|
105
|
+
$refCount++
|
|
106
|
+
} else {
|
|
107
|
+
$missingRefs += $srcPath
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# Fail-fast: abort if any reference files are missing
|
|
112
|
+
if ($missingRefs.Count -gt 0) {
|
|
113
|
+
$list = ($missingRefs | ForEach-Object { " - $_" }) -join "`n"
|
|
114
|
+
throw "Claude install failed. Missing reference files:`n$list"
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
# Strict count assertions
|
|
118
|
+
$expectedSkills = 13
|
|
119
|
+
$expectedRefs = 9
|
|
120
|
+
if ($skillCount -ne $expectedSkills) {
|
|
121
|
+
throw "Claude install failed. Expected $expectedSkills skills but installed $skillCount."
|
|
122
|
+
}
|
|
123
|
+
if ($refCount -ne $expectedRefs) {
|
|
124
|
+
throw "Claude install failed. Expected $expectedRefs reference files but installed $refCount."
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
Write-Host " Skills installed: $skillCount"
|
|
128
|
+
Write-Host " Reference files : $refCount"
|
|
129
|
+
Write-Host " Destination : $skillsDest"
|