sdtk-kit 0.3.3 → 0.3.5
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 +36 -2
- package/assets/manifest/toolkit-bundle.manifest.json +39 -29
- package/assets/manifest/toolkit-bundle.sha256.txt +14 -12
- package/assets/toolkit/toolkit/install.ps1 +31 -7
- 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/sdtk-api-doc/SKILL.md +5 -4
- package/assets/toolkit/toolkit/skills/sdtk-arch/SKILL.md +14 -12
- package/assets/toolkit/toolkit/skills/sdtk-ba/SKILL.md +7 -6
- package/assets/toolkit/toolkit/skills/sdtk-qa/SKILL.md +8 -7
- package/assets/toolkit/toolkit/skills/sdtk-test-case-spec/SKILL.md +4 -6
- package/assets/toolkit/toolkit/skills-claude/api-doc/SKILL.md +7 -6
- package/assets/toolkit/toolkit/skills-claude/arch/SKILL.md +20 -18
- package/assets/toolkit/toolkit/skills-claude/ba/SKILL.md +13 -12
- package/assets/toolkit/toolkit/skills-claude/qa/SKILL.md +14 -13
- package/assets/toolkit/toolkit/skills-claude/test-case-spec/SKILL.md +9 -11
- package/package.json +44 -44
- 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
|
@@ -36,7 +36,9 @@ sdtk generate --feature-key USER_PROFILE --feature-name "User Profile"
|
|
|
36
36
|
Initialize SDTK workspace in the current or specified project directory.
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
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)
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
Creates:
|
|
@@ -44,7 +46,9 @@ Creates:
|
|
|
44
46
|
- `sdtk.config.json` -- project configuration
|
|
45
47
|
- `sdtk.config.profiles.example.json` -- stack profile examples
|
|
46
48
|
- `CODEX.md` or `CLAUDE.md` -- runtime adapter
|
|
47
|
-
- for `--runtime claude`,
|
|
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
|
|
48
52
|
|
|
49
53
|
### `sdtk auth`
|
|
50
54
|
|
|
@@ -83,6 +87,36 @@ sdtk generate --feature-key <UPPER_SNAKE_CASE> --feature-name "<text>" [--projec
|
|
|
83
87
|
|
|
84
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.
|
|
85
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
|
+
|
|
86
120
|
### `sdtk --help` / `sdtk --version`
|
|
87
121
|
|
|
88
122
|
```bash
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"version": "0.3.5",
|
|
3
|
+
"sourceCommit": "537f76cfcb2d42882cc5fb19946f0389279e1583",
|
|
4
|
+
"buildTimestamp": "2026-03-11T08:51:43Z",
|
|
5
|
+
"fileCount": 81,
|
|
3
6
|
"files": [
|
|
4
7
|
{
|
|
5
8
|
"path": "toolkit/AGENTS.md",
|
|
@@ -8,8 +11,8 @@
|
|
|
8
11
|
},
|
|
9
12
|
{
|
|
10
13
|
"path": "toolkit/install.ps1",
|
|
11
|
-
"sha256": "
|
|
12
|
-
"size":
|
|
14
|
+
"sha256": "e717a2791fb597d7a21f57f4c4790dbc545e954f0af3ca0c47f160f78c8a2474",
|
|
15
|
+
"size": 9777
|
|
13
16
|
},
|
|
14
17
|
{
|
|
15
18
|
"path": "toolkit/runtimes/claude/CLAUDE_TEMPLATE.md",
|
|
@@ -26,10 +29,20 @@
|
|
|
26
29
|
"sha256": "5c1f5442fd3c26b8bf62db4b25e9f1c4207258c7fe52f12ed533968f77dfbf65",
|
|
27
30
|
"size": 10557
|
|
28
31
|
},
|
|
32
|
+
{
|
|
33
|
+
"path": "toolkit/scripts/install-claude-skills.ps1",
|
|
34
|
+
"sha256": "8c66c27262ad4abc3c42bbcbe3a97752a5f29956ac93397133e6780354911549",
|
|
35
|
+
"size": 4315
|
|
36
|
+
},
|
|
29
37
|
{
|
|
30
38
|
"path": "toolkit/scripts/install-codex-skills.ps1",
|
|
31
|
-
"sha256": "
|
|
32
|
-
"size":
|
|
39
|
+
"sha256": "ca64e0c2a0f13137bc6b780a57442de46a3e0551778bbcbadd4eb779c21cb203",
|
|
40
|
+
"size": 9427
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"path": "toolkit/scripts/uninstall-claude-skills.ps1",
|
|
44
|
+
"sha256": "809ffc1f96528ac1cd453214cd1c2d231ca0753f0d3c19b4a20f11835a64a152",
|
|
45
|
+
"size": 4482
|
|
33
46
|
},
|
|
34
47
|
{
|
|
35
48
|
"path": "toolkit/scripts/uninstall-codex-skills.ps1",
|
|
@@ -88,8 +101,8 @@
|
|
|
88
101
|
},
|
|
89
102
|
{
|
|
90
103
|
"path": "toolkit/skills/sdtk-api-doc/SKILL.md",
|
|
91
|
-
"sha256": "
|
|
92
|
-
"size":
|
|
104
|
+
"sha256": "2c4bc8edda84f20bf05130fdf19b9abd562dd87b03508301dff9ccd877b52a2f",
|
|
105
|
+
"size": 2248
|
|
93
106
|
},
|
|
94
107
|
{
|
|
95
108
|
"path": "toolkit/skills/sdtk-arch/references/API_DESIGN_CREATION_RULES.md",
|
|
@@ -118,13 +131,13 @@
|
|
|
118
131
|
},
|
|
119
132
|
{
|
|
120
133
|
"path": "toolkit/skills/sdtk-arch/SKILL.md",
|
|
121
|
-
"sha256": "
|
|
122
|
-
"size":
|
|
134
|
+
"sha256": "78275557bbea966134422423fb6910cecdc5468e7bf2abb777ff1c4233345639",
|
|
135
|
+
"size": 2597
|
|
123
136
|
},
|
|
124
137
|
{
|
|
125
138
|
"path": "toolkit/skills/sdtk-ba/SKILL.md",
|
|
126
|
-
"sha256": "
|
|
127
|
-
"size":
|
|
139
|
+
"sha256": "0a7c6aa20be2e29aa2124355264ee45847df76f635437c2d05ddd26f7121f12e",
|
|
140
|
+
"size": 1177
|
|
128
141
|
},
|
|
129
142
|
{
|
|
130
143
|
"path": "toolkit/skills/sdtk-design-layout/SKILL.md",
|
|
@@ -158,8 +171,8 @@
|
|
|
158
171
|
},
|
|
159
172
|
{
|
|
160
173
|
"path": "toolkit/skills/sdtk-qa/SKILL.md",
|
|
161
|
-
"sha256": "
|
|
162
|
-
"size":
|
|
174
|
+
"sha256": "564c536395227511ac9be215e41a3b5604e2f249da28319417ca75a6bfe8ed3b",
|
|
175
|
+
"size": 1459
|
|
163
176
|
},
|
|
164
177
|
{
|
|
165
178
|
"path": "toolkit/skills/sdtk-screen-design-spec/references/excel-image-export.md",
|
|
@@ -208,8 +221,8 @@
|
|
|
208
221
|
},
|
|
209
222
|
{
|
|
210
223
|
"path": "toolkit/skills/sdtk-test-case-spec/SKILL.md",
|
|
211
|
-
"sha256": "
|
|
212
|
-
"size":
|
|
224
|
+
"sha256": "727a9870a455e9c455b2c405cb52c6b9867f229fa56d8ce9408e66b6f6cae4a5",
|
|
225
|
+
"size": 2842
|
|
213
226
|
},
|
|
214
227
|
{
|
|
215
228
|
"path": "toolkit/skills-claude/api-design-spec/SKILL.md",
|
|
@@ -218,18 +231,18 @@
|
|
|
218
231
|
},
|
|
219
232
|
{
|
|
220
233
|
"path": "toolkit/skills-claude/api-doc/SKILL.md",
|
|
221
|
-
"sha256": "
|
|
222
|
-
"size":
|
|
234
|
+
"sha256": "6f6ddb470bc61d286b84418e299b360d5f148e6bed75fa50b6c8f2929e6fe49c",
|
|
235
|
+
"size": 2518
|
|
223
236
|
},
|
|
224
237
|
{
|
|
225
238
|
"path": "toolkit/skills-claude/arch/SKILL.md",
|
|
226
|
-
"sha256": "
|
|
227
|
-
"size":
|
|
239
|
+
"sha256": "e293fd71f9fc71ac63e5e53bf55fbfe9c71e186e298b2fd3429c71a4e972a8b1",
|
|
240
|
+
"size": 4175
|
|
228
241
|
},
|
|
229
242
|
{
|
|
230
243
|
"path": "toolkit/skills-claude/ba/SKILL.md",
|
|
231
|
-
"sha256": "
|
|
232
|
-
"size":
|
|
244
|
+
"sha256": "4dd1db27839c73a8ec0bba2b465b7cacffd55393a325a822ced8f2f209f6b51b",
|
|
245
|
+
"size": 2648
|
|
233
246
|
},
|
|
234
247
|
{
|
|
235
248
|
"path": "toolkit/skills-claude/design-layout/SKILL.md",
|
|
@@ -263,8 +276,8 @@
|
|
|
263
276
|
},
|
|
264
277
|
{
|
|
265
278
|
"path": "toolkit/skills-claude/qa/SKILL.md",
|
|
266
|
-
"sha256": "
|
|
267
|
-
"size":
|
|
279
|
+
"sha256": "3ab5af1b27aa0947052ef7b76abca132d89b78b74516b8668474c08c344289aa",
|
|
280
|
+
"size": 2956
|
|
268
281
|
},
|
|
269
282
|
{
|
|
270
283
|
"path": "toolkit/skills-claude/screen-design-spec/SKILL.md",
|
|
@@ -273,8 +286,8 @@
|
|
|
273
286
|
},
|
|
274
287
|
{
|
|
275
288
|
"path": "toolkit/skills-claude/test-case-spec/SKILL.md",
|
|
276
|
-
"sha256": "
|
|
277
|
-
"size":
|
|
289
|
+
"sha256": "c397431a7752fcdee1dbb7720472703d262bfcc8fb543c4562fbc24a79064769",
|
|
290
|
+
"size": 2806
|
|
278
291
|
},
|
|
279
292
|
{
|
|
280
293
|
"path": "toolkit/templates/docs/api/API_DESIGN_CREATION_RULES.md",
|
|
@@ -396,8 +409,5 @@
|
|
|
396
409
|
"sha256": "2b5d4d10019e3c9b3219d92b8123acc85872d9c76230107206e7a270a5ece5a2",
|
|
397
410
|
"size": 3255
|
|
398
411
|
}
|
|
399
|
-
]
|
|
400
|
-
"sourceCommit": "4437ad41659a38e9e80dcbf32cb03f9b6df64e0d",
|
|
401
|
-
"version": "0.3.3",
|
|
402
|
-
"fileCount": 79
|
|
412
|
+
]
|
|
403
413
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
868430474b46e4e8d27ed26b780a794936e84cf4f0278f2cc3d061f54877f498 toolkit/AGENTS.md
|
|
2
|
-
|
|
2
|
+
e717a2791fb597d7a21f57f4c4790dbc545e954f0af3ca0c47f160f78c8a2474 toolkit/install.ps1
|
|
3
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
|
|
@@ -15,21 +17,21 @@ c6147e7b01632cb6ffa017af43e4e5c9e1f98d160ed812ade1d087b1f3ca5490 toolkit/skills
|
|
|
15
17
|
13f26a3307894b9bfb570d75f6db4ccb61104064d19661ec2a26a1b9984f4c97 toolkit/skills/sdtk-api-doc/references/API_DESIGN_FLOWCHART_CREATION_RULES.md
|
|
16
18
|
decffe52425e22b3dd82e9c8f3768aefbb209ec58237107d84f583fee876ea8f toolkit/skills/sdtk-api-doc/references/FLOWCHART_CREATION_RULES.md
|
|
17
19
|
f29c6774019ef0789dfb88678e1ab31d4d8eb7b3ab69b2115368ef5d879e5276 toolkit/skills/sdtk-api-doc/references/YAML_CREATION_RULES.md
|
|
18
|
-
|
|
20
|
+
2c4bc8edda84f20bf05130fdf19b9abd562dd87b03508301dff9ccd877b52a2f toolkit/skills/sdtk-api-doc/SKILL.md
|
|
19
21
|
9adf1e46833411a861fb7426c37baac69689b9e3120a8ed1e4a3224de44a8dd2 toolkit/skills/sdtk-arch/references/API_DESIGN_CREATION_RULES.md
|
|
20
22
|
13f26a3307894b9bfb570d75f6db4ccb61104064d19661ec2a26a1b9984f4c97 toolkit/skills/sdtk-arch/references/API_DESIGN_FLOWCHART_CREATION_RULES.md
|
|
21
23
|
b1ed7f7cad8f4098bd305fa9aaea6cdf1c78cf909284547baa50235fa677d8c0 toolkit/skills/sdtk-arch/references/FLOW_ACTION_SPEC_CREATION_RULES.md
|
|
22
24
|
decffe52425e22b3dd82e9c8f3768aefbb209ec58237107d84f583fee876ea8f toolkit/skills/sdtk-arch/references/FLOWCHART_CREATION_RULES.md
|
|
23
25
|
f29c6774019ef0789dfb88678e1ab31d4d8eb7b3ab69b2115368ef5d879e5276 toolkit/skills/sdtk-arch/references/YAML_CREATION_RULES.md
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
78275557bbea966134422423fb6910cecdc5468e7bf2abb777ff1c4233345639 toolkit/skills/sdtk-arch/SKILL.md
|
|
27
|
+
0a7c6aa20be2e29aa2124355264ee45847df76f635437c2d05ddd26f7121f12e toolkit/skills/sdtk-ba/SKILL.md
|
|
26
28
|
8eabb7bdb821a91766ccd5b5fdcc1a4e876b51052cd6c6429b98b4d9946e2b1a toolkit/skills/sdtk-design-layout/SKILL.md
|
|
27
29
|
7a7f5a799247896a8ddebc5cefec25450bf9284d34044b6b69b13e4535c005a1 toolkit/skills/sdtk-dev/SKILL.md
|
|
28
30
|
4b242b5f86d0074538e14721cc66c0fbaac5757e984796145f5e4477c89c6729 toolkit/skills/sdtk-dev-backend/SKILL.md
|
|
29
31
|
390d895ab5da1fd214efecdbbd13c81e92815d4db157a7e9e8f32c79e09439dd toolkit/skills/sdtk-dev-frontend/SKILL.md
|
|
30
32
|
e6560b5a0c893d66117eedac3762bb0758553a80bcd1e7c24c84ba91f6ab7f9c toolkit/skills/sdtk-orchestrator/SKILL.md
|
|
31
33
|
7dd81943172b1d7a96093424b0ba76519db3d713272374d5c4aedb15f37adbe2 toolkit/skills/sdtk-pm/SKILL.md
|
|
32
|
-
|
|
34
|
+
564c536395227511ac9be215e41a3b5604e2f249da28319417ca75a6bfe8ed3b toolkit/skills/sdtk-qa/SKILL.md
|
|
33
35
|
97f65fd84c80e4836c9bbb82d8b7fc81527336c55dbbd82ea5e69672e21b22e4 toolkit/skills/sdtk-screen-design-spec/references/excel-image-export.md
|
|
34
36
|
a9b414a07d76e63331ffc832dea2381357f9a99e2cd82ea74f713b3a9d7acee7 toolkit/skills/sdtk-screen-design-spec/references/figma-mcp.md
|
|
35
37
|
b1ed7f7cad8f4098bd305fa9aaea6cdf1c78cf909284547baa50235fa677d8c0 toolkit/skills/sdtk-screen-design-spec/references/FLOW_ACTION_SPEC_CREATION_RULES.md
|
|
@@ -39,20 +41,20 @@ ae0bc9b120c19a142f10cc79168a8f7d6bf8a37e48341fc16cbc74bbdc2e692c toolkit/skills
|
|
|
39
41
|
876d546e077ce451082792776360a4a309cc79a34c74234f1b55f80c56b159d1 toolkit/skills/sdtk-screen-design-spec/SKILL.md
|
|
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
|
+
727a9870a455e9c455b2c405cb52c6b9867f229fa56d8ce9408e66b6f6cae4a5 toolkit/skills/sdtk-test-case-spec/SKILL.md
|
|
43
45
|
123873681ff65792a9a269b264155c65a5feb68b23e4eeb1e68cb7da1a137d54 toolkit/skills-claude/api-design-spec/SKILL.md
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
6f6ddb470bc61d286b84418e299b360d5f148e6bed75fa50b6c8f2929e6fe49c toolkit/skills-claude/api-doc/SKILL.md
|
|
47
|
+
e293fd71f9fc71ac63e5e53bf55fbfe9c71e186e298b2fd3429c71a4e972a8b1 toolkit/skills-claude/arch/SKILL.md
|
|
48
|
+
4dd1db27839c73a8ec0bba2b465b7cacffd55393a325a822ced8f2f209f6b51b toolkit/skills-claude/ba/SKILL.md
|
|
47
49
|
9765f229108c5aff27457489707218570ad83dc362353a79c2f5a78607adf4de toolkit/skills-claude/design-layout/SKILL.md
|
|
48
50
|
cea9f6512bc805d5b22a84a4ef8dbd229b4f7a3f073f9e125e933e6e79a206d5 toolkit/skills-claude/dev/SKILL.md
|
|
49
51
|
142a8fe088a4b0326ca79e00200cb5f562c53728b7adc83e6b749db6e29f1d0d toolkit/skills-claude/dev-backend/SKILL.md
|
|
50
52
|
1631bd51bc3d0106c18f4c00412f6279626bdce9f0e310822d5dcdff08063a88 toolkit/skills-claude/dev-frontend/SKILL.md
|
|
51
53
|
c8e8303f1833e71cacdf20b1f398e476b44b3de14fbffad9a404c2a68fa713a3 toolkit/skills-claude/orchestrator/SKILL.md
|
|
52
54
|
b34621fe61957e573c616ad816d591a60a6c8d1333d0bfb71f39f45b93331cb0 toolkit/skills-claude/pm/SKILL.md
|
|
53
|
-
|
|
55
|
+
3ab5af1b27aa0947052ef7b76abca132d89b78b74516b8668474c08c344289aa toolkit/skills-claude/qa/SKILL.md
|
|
54
56
|
5686da60872f1a3c6791e9a740897d4a564f40d53d54902a47fbc3165e68a1ec toolkit/skills-claude/screen-design-spec/SKILL.md
|
|
55
|
-
|
|
57
|
+
c397431a7752fcdee1dbb7720472703d262bfcc8fb543c4562fbc24a79064769 toolkit/skills-claude/test-case-spec/SKILL.md
|
|
56
58
|
9adf1e46833411a861fb7426c37baac69689b9e3120a8ed1e4a3224de44a8dd2 toolkit/templates/docs/api/API_DESIGN_CREATION_RULES.md
|
|
57
59
|
d2aa0ee3a7c5351700b3bffb4ba66e8056ed955f55903c744c694624730038cb toolkit/templates/docs/api/API_DESIGN_DETAIL_TEMPLATE.md
|
|
58
60
|
13f26a3307894b9bfb570d75f6db4ccb61104064d19661ec2a26a1b9984f4c97 toolkit/templates/docs/api/API_DESIGN_FLOWCHART_CREATION_RULES.md
|
|
@@ -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'
|
|
@@ -181,6 +184,15 @@ if (-not $ProjectPath) {
|
|
|
181
184
|
}
|
|
182
185
|
$projectRoot = Resolve-Path -LiteralPath $ProjectPath
|
|
183
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
|
+
|
|
184
196
|
if (-not $Quiet) {
|
|
185
197
|
Write-Host "SDTK toolkit : $toolkitRoot"
|
|
186
198
|
Write-Host "Project root : $projectRoot"
|
|
@@ -217,17 +229,29 @@ if (($Runtime -eq 'codex') -and (-not $SkipSkills)) {
|
|
|
217
229
|
}
|
|
218
230
|
|
|
219
231
|
Write-Host ""
|
|
220
|
-
Write-Host "Installing Codex skills
|
|
232
|
+
Write-Host "Installing Codex skills (scope: $Scope)..."
|
|
221
233
|
if ($Force) {
|
|
222
|
-
& $skillInstaller -Force | Out-Host
|
|
234
|
+
& $skillInstaller -Scope $Scope -Force | Out-Host
|
|
223
235
|
} else {
|
|
224
|
-
& $skillInstaller | Out-Host
|
|
236
|
+
& $skillInstaller -Scope $Scope | Out-Host
|
|
225
237
|
}
|
|
226
238
|
}
|
|
227
239
|
elseif (($Runtime -eq 'claude') -and (-not $SkipSkills)) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
+
}
|
|
231
255
|
}
|
|
232
256
|
|
|
233
257
|
if (-not $Quiet) {
|
|
@@ -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"
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
param(
|
|
2
|
+
[ValidateSet('project', 'user')]
|
|
3
|
+
[string]$Scope = 'user',
|
|
2
4
|
[switch]$Force
|
|
3
5
|
)
|
|
4
6
|
|
|
7
|
+
# Gate C0: Codex does not support project-local skills
|
|
8
|
+
if ($Scope -eq 'project') {
|
|
9
|
+
Write-Error "Codex does not support project-local skills. Use --scope user instead."
|
|
10
|
+
exit 1
|
|
11
|
+
}
|
|
12
|
+
|
|
5
13
|
$ErrorActionPreference = 'Stop'
|
|
6
14
|
Set-StrictMode -Version Latest
|
|
7
15
|
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[string]$ProjectPath,
|
|
3
|
+
[ValidateSet('project', 'user')]
|
|
4
|
+
[string]$Scope = 'project',
|
|
5
|
+
[string]$SkillName,
|
|
6
|
+
[switch]$All,
|
|
7
|
+
[switch]$BackupExisting,
|
|
8
|
+
[string]$BackupPath
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
$ErrorActionPreference = 'Stop'
|
|
12
|
+
Set-StrictMode -Version Latest
|
|
13
|
+
|
|
14
|
+
function Backup-Directory {
|
|
15
|
+
param(
|
|
16
|
+
[Parameter(Mandatory = $true)][string]$SourcePath,
|
|
17
|
+
[Parameter(Mandatory = $true)][string]$BackupRoot,
|
|
18
|
+
[Parameter(Mandatory = $true)][string]$Name
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
if (-not (Test-Path -LiteralPath $SourcePath)) {
|
|
22
|
+
return $null
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
New-Item -ItemType Directory -Force -Path $BackupRoot | Out-Null
|
|
26
|
+
$dest = Join-Path $BackupRoot $Name
|
|
27
|
+
if (Test-Path -LiteralPath $dest) {
|
|
28
|
+
Remove-Item -LiteralPath $dest -Recurse -Force
|
|
29
|
+
}
|
|
30
|
+
Copy-Item -LiteralPath $SourcePath -Destination $dest -Recurse -Force
|
|
31
|
+
return $dest
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if ($All -and $SkillName) {
|
|
35
|
+
throw "Use either -All or -SkillName, not both."
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
$toolkitRoot = Resolve-Path (Join-Path $PSScriptRoot '..')
|
|
39
|
+
$skillsSrc = Join-Path $toolkitRoot 'skills-claude'
|
|
40
|
+
if (-not (Test-Path -LiteralPath $skillsSrc)) {
|
|
41
|
+
throw "Missing toolkit Claude skills source directory: $skillsSrc"
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
$managedSkillNames = Get-ChildItem -LiteralPath $skillsSrc -Directory | Select-Object -ExpandProperty Name
|
|
45
|
+
if (-not $managedSkillNames -or $managedSkillNames.Count -eq 0) {
|
|
46
|
+
throw "No managed Claude skills found in: $skillsSrc"
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$targetNames = @()
|
|
50
|
+
if ($SkillName) {
|
|
51
|
+
if ($managedSkillNames -notcontains $SkillName) {
|
|
52
|
+
throw "Skill '$SkillName' is not in managed Claude skills list. Known skills: $($managedSkillNames -join ', ')"
|
|
53
|
+
}
|
|
54
|
+
$targetNames = @($SkillName)
|
|
55
|
+
} elseif ($All) {
|
|
56
|
+
$targetNames = @($managedSkillNames)
|
|
57
|
+
} else {
|
|
58
|
+
$targetNames = @($managedSkillNames)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Resolve destination based on scope
|
|
62
|
+
if ($Scope -eq 'user') {
|
|
63
|
+
$skillsDest = Join-Path $HOME '.claude/skills'
|
|
64
|
+
} else {
|
|
65
|
+
if (-not $ProjectPath) {
|
|
66
|
+
$ProjectPath = (Resolve-Path (Join-Path $toolkitRoot '..')).Path
|
|
67
|
+
}
|
|
68
|
+
$projectRoot = Resolve-Path -LiteralPath $ProjectPath
|
|
69
|
+
$skillsDest = Join-Path $projectRoot '.claude/skills'
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (-not (Test-Path -LiteralPath $skillsDest)) {
|
|
73
|
+
Write-Host "Claude skills directory not found: $skillsDest"
|
|
74
|
+
exit 0
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
$backupRootResolved = $null
|
|
78
|
+
if ($BackupExisting) {
|
|
79
|
+
if (-not $BackupPath -or $BackupPath.Trim().Length -eq 0) {
|
|
80
|
+
$timestamp = Get-Date -Format 'yyyyMMdd-HHmmss'
|
|
81
|
+
$parentDir = if ($Scope -eq 'user') { Join-Path $HOME '.claude' } else { $projectRoot }
|
|
82
|
+
$BackupPath = Join-Path $parentDir (Join-Path 'skills-backups' ("uninstall-" + $timestamp))
|
|
83
|
+
}
|
|
84
|
+
New-Item -ItemType Directory -Force -Path $BackupPath | Out-Null
|
|
85
|
+
$backupRootResolved = (Resolve-Path -LiteralPath $BackupPath).Path
|
|
86
|
+
Write-Host "Backup mode enabled: $backupRootResolved"
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
$removed = New-Object System.Collections.Generic.List[string]
|
|
90
|
+
$missing = New-Object System.Collections.Generic.List[string]
|
|
91
|
+
|
|
92
|
+
foreach ($name in $targetNames) {
|
|
93
|
+
$dest = Join-Path $skillsDest $name
|
|
94
|
+
if (-not (Test-Path -LiteralPath $dest)) {
|
|
95
|
+
$missing.Add($name) | Out-Null
|
|
96
|
+
Write-Warning "Skill not installed, skipping: $name"
|
|
97
|
+
continue
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if ($BackupExisting) {
|
|
101
|
+
$backupDest = Backup-Directory -SourcePath $dest -BackupRoot $backupRootResolved -Name $name
|
|
102
|
+
if ($backupDest) {
|
|
103
|
+
Write-Host "Backed up: $name -> $backupDest"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
Remove-Item -LiteralPath $dest -Recurse -Force
|
|
108
|
+
$removed.Add($name) | Out-Null
|
|
109
|
+
Write-Host "Uninstalled: $name"
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
# Also remove references directory if uninstalling all
|
|
113
|
+
if ($All -or (-not $SkillName)) {
|
|
114
|
+
$refDir = Join-Path $skillsDest 'references'
|
|
115
|
+
if (Test-Path -LiteralPath $refDir) {
|
|
116
|
+
if ($BackupExisting) {
|
|
117
|
+
Backup-Directory -SourcePath $refDir -BackupRoot $backupRootResolved -Name 'references' | Out-Null
|
|
118
|
+
Write-Host "Backed up: references -> $backupRootResolved/references"
|
|
119
|
+
}
|
|
120
|
+
Remove-Item -LiteralPath $refDir -Recurse -Force
|
|
121
|
+
Write-Host "Removed references directory."
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
Write-Host ""
|
|
126
|
+
Write-Host "Uninstall summary:"
|
|
127
|
+
Write-Host "- Scope: $Scope"
|
|
128
|
+
Write-Host "- Destination: $skillsDest"
|
|
129
|
+
Write-Host "- Removed: $($removed.Count)"
|
|
130
|
+
if ($removed.Count -gt 0) {
|
|
131
|
+
$removed | ForEach-Object { Write-Host " - $_" }
|
|
132
|
+
}
|
|
133
|
+
Write-Host "- Missing/Skipped: $($missing.Count)"
|
|
134
|
+
if ($missing.Count -gt 0) {
|
|
135
|
+
$missing | ForEach-Object { Write-Host " - $_" }
|
|
136
|
+
}
|
|
137
|
+
if ($backupRootResolved) {
|
|
138
|
+
Write-Host "- Backup directory: $backupRootResolved"
|
|
139
|
+
}
|
|
@@ -23,16 +23,17 @@ description: Generate OpenAPI 3.x YAML and PlantUML flow diagrams for a feature
|
|
|
23
23
|
2. Read and apply split API rule sources:
|
|
24
24
|
- `./references/YAML_CREATION_RULES.md` for YAML contract rules
|
|
25
25
|
- `./references/API_DESIGN_FLOWCHART_CREATION_RULES.md` for flow list / flowchart rules
|
|
26
|
-
3. Define endpoints mapped to UC-xx; keep path naming consistent across CRUD/search/list/mst patterns.
|
|
26
|
+
3. Define endpoints mapped to UC-xx; keep path naming consistent across CRUD/search/list/mst patterns and apply `governance/ai/core/SDTK_API_PATH_STYLE_POLICY.md` for canonical resource naming.
|
|
27
27
|
4. For each endpoint, document request/response schema and error cases.
|
|
28
28
|
5. Generate/update endpoint markdown (`[FEATURE_KEY]_ENDPOINTS.md`) with summary tables, API type grouping, and screen-logic mapping.
|
|
29
|
-
6. Generate PlantUML flows including
|
|
29
|
+
6. Generate PlantUML flows including auth, permission check, validation, main logic, and error exits.
|
|
30
30
|
7. Ensure traceability notes reference UC/BR where relevant.
|
|
31
|
-
8.
|
|
31
|
+
8. For benchmark runs, if the requirement or upstream artifacts mark an OQ as expected OPEN, keep that ambiguity explicit in flow list / endpoint docs instead of silently collapsing it.
|
|
32
|
+
9. Validate English output hygiene when generating English artifacts:
|
|
32
33
|
- no mixed-language leftovers in narrative text
|
|
33
34
|
- no mojibake/encoding corruption markers
|
|
34
35
|
- terminology consistency across endpoint detail, summary tables, and flow labels
|
|
35
|
-
|
|
36
|
+
10. If orchestrator mode requires API design detail generation (`apiDesignDetailMode=auto/on`), handoff to `sdtk-api-design-spec` after YAML + flow list are updated.
|
|
36
37
|
|
|
37
38
|
## Reference
|
|
38
39
|
- Deeper analysis: `docs/specs/API_DOC_SKILL_ANALYSIS.md` (if present).
|