@ranimontagna/agent-toolkit 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +313 -274
  2. package/docs/assets/install-plan.svg +29 -0
  3. package/docs/assets/install-skill-packages.svg +31 -0
  4. package/docs/assets/install-status.svg +32 -0
  5. package/package.json +10 -9
  6. package/setup-agent-toolkit.sh +1 -1
  7. package/skills/backend/fastify-best-practices/LICENSE +21 -0
  8. package/skills/backend/fastify-best-practices/NOTICE.md +11 -0
  9. package/skills/backend/fastify-best-practices/SKILL.md +75 -0
  10. package/skills/backend/fastify-best-practices/rules/authentication.md +521 -0
  11. package/skills/backend/fastify-best-practices/rules/configuration.md +217 -0
  12. package/skills/backend/fastify-best-practices/rules/content-type.md +387 -0
  13. package/skills/backend/fastify-best-practices/rules/cors-security.md +445 -0
  14. package/skills/backend/fastify-best-practices/rules/database.md +320 -0
  15. package/skills/backend/fastify-best-practices/rules/decorators.md +416 -0
  16. package/skills/backend/fastify-best-practices/rules/deployment.md +423 -0
  17. package/skills/backend/fastify-best-practices/rules/error-handling.md +412 -0
  18. package/skills/backend/fastify-best-practices/rules/hooks.md +464 -0
  19. package/skills/backend/fastify-best-practices/rules/http-proxy.md +247 -0
  20. package/skills/backend/fastify-best-practices/rules/logging.md +402 -0
  21. package/skills/backend/fastify-best-practices/rules/performance.md +425 -0
  22. package/skills/backend/fastify-best-practices/rules/plugins.md +320 -0
  23. package/skills/backend/fastify-best-practices/rules/routes.md +467 -0
  24. package/skills/backend/fastify-best-practices/rules/schemas.md +585 -0
  25. package/skills/backend/fastify-best-practices/rules/serialization.md +475 -0
  26. package/skills/backend/fastify-best-practices/rules/testing.md +536 -0
  27. package/skills/backend/fastify-best-practices/rules/typescript.md +458 -0
  28. package/skills/backend/fastify-best-practices/rules/websockets.md +421 -0
  29. package/skills/backend/fastify-best-practices/tile.json +11 -0
  30. package/skills/core/agent-toolkit-maintainer/SKILL.md +16 -14
  31. package/skills/frontend/react/react-patterns/LICENSE +21 -0
  32. package/skills/frontend/react/react-patterns/NOTICE.md +11 -0
  33. package/skills/frontend/react/react-patterns/SKILL.md +341 -0
  34. package/skills/frontend/react/react-performance/LICENSE +21 -0
  35. package/skills/frontend/react/react-performance/NOTICE.md +11 -0
  36. package/skills/frontend/react/react-performance/SKILL.md +574 -0
  37. package/skills/frontend/react/react-testing/LICENSE +21 -0
  38. package/skills/frontend/react/react-testing/NOTICE.md +11 -0
  39. package/skills/frontend/react/react-testing/SKILL.md +423 -0
  40. package/skills/frontend/react-native/react-native-expert/LICENSE +21 -0
  41. package/skills/frontend/react-native/react-native-expert/NOTICE.md +11 -0
  42. package/skills/frontend/react-native/react-native-expert/SKILL.md +187 -0
  43. package/skills/frontend/react-native/react-native-expert/references/expo-router.md +187 -0
  44. package/skills/frontend/react-native/react-native-expert/references/list-optimization.md +204 -0
  45. package/skills/frontend/react-native/react-native-expert/references/platform-handling.md +188 -0
  46. package/skills/frontend/react-native/react-native-expert/references/project-structure.md +171 -0
  47. package/skills/frontend/react-native/react-native-expert/references/storage-hooks.md +173 -0
  48. package/skills/frontend/react-native/react-native-unistyles-v3/LICENSE +21 -0
  49. package/skills/frontend/react-native/react-native-unistyles-v3/NOTICE.md +11 -0
  50. package/skills/frontend/react-native/react-native-unistyles-v3/SKILL.md +159 -0
  51. package/skills/frontend/react-native/react-native-unistyles-v3/references/api-reference.md +495 -0
  52. package/skills/frontend/react-native/react-native-unistyles-v3/references/common-issues.md +389 -0
  53. package/skills/frontend/react-native/react-native-unistyles-v3/references/setup-guide.md +217 -0
  54. package/skills/frontend/react-native/react-native-unistyles-v3/references/styling-patterns.md +705 -0
  55. package/skills/frontend/react-native/react-native-unistyles-v3/references/third-party-integration.md +318 -0
package/README.md CHANGED
@@ -1,28 +1,41 @@
1
1
  # Agent Toolkit
2
2
 
3
- Personal toolkit for setting up AI coding agents with the tools I use most:
4
- RTK, Caveman, Superpowers, Graphify, GSD, third-party frontend skills and
5
- bundled personal skills.
3
+ One command to set up an AI coding-agent workspace across Claude Code, Codex
4
+ CLI, OpenCode and Gemini CLI.
6
5
 
7
- The installer source is written in TypeScript and compiled to a dependency-free
8
- Node CLI in `dist/`. The Bash file is kept only as a compatibility wrapper, so
9
- existing commands still work after building the project.
6
+ ```bash
7
+ npx -y @ranimontagna/agent-toolkit
8
+ ```
10
9
 
11
- The repository includes CI, security gates, MIT licensing, portable agent
12
- instructions and tests for the installer flows.
10
+ Agent Toolkit installs the tools and skills I use to run agentic coding
11
+ workflows: RTK, Caveman, Superpowers, Graphify, GSD, third-party frontend
12
+ skills and bundled Custom Skills.
13
13
 
14
- ## Runtimes
14
+ The installer is a TypeScript CLI published to npm. The Bash script is only a
15
+ compatibility wrapper for users who already run `setup-agent-toolkit.sh`.
15
16
 
16
- | Runtime | Support |
17
- |---|---|
18
- | Claude Code | Plugins and skills |
19
- | Codex CLI | Plugins, skills and local automation |
20
- | OpenCode | Skills plus package-driven tools |
21
- | Gemini CLI | Extensions and native Agent Skills install |
17
+ ## Install Flow
18
+
19
+ Interactive terminals use a Clack menu. The installer first shows what it can
20
+ detect locally, then asks what to install, then shows a final plan before doing
21
+ any work.
22
+
23
+ ![Detected status terminal screen](docs/assets/install-status.svg)
22
24
 
23
- ## Tools
25
+ Custom Skills are grouped by first-level package. Today this repository ships
26
+ `core`; future packages can be added under `skills/<package>/...` and they will
27
+ appear automatically in the menu.
24
28
 
25
- | Tool | What it adds |
29
+ ![Custom Skill package selection terminal screen](docs/assets/install-skill-packages.svg)
30
+
31
+ The final plan shows selected tools, runtimes, skill packages, scope and already
32
+ present skills before installation starts.
33
+
34
+ ![Install plan terminal screen](docs/assets/install-plan.svg)
35
+
36
+ ## What It Installs
37
+
38
+ | Area | What it adds |
26
39
  |---|---|
27
40
  | RTK | Token-aware shell proxy for coding-agent sessions |
28
41
  | Caveman | Terse response mode and optional agent integrations |
@@ -30,209 +43,236 @@ instructions and tests for the installer flows.
30
43
  | Graphify | Queryable knowledge graphs for codebases, docs and project context |
31
44
  | GSD | Phase-based planning, execution, verification and project control |
32
45
  | Frontend Skills | Third-party design skills installed through Agent Skills CLI |
33
- | Custom Skills | Personal skills bundled in this repository |
34
-
35
- Superpowers is installed automatically for Claude Code, Codex CLI and Gemini CLI.
36
- OpenCode support is intentionally not automated yet for Superpowers because the
37
- upstream install flow is not a stable single command. Caveman, GSD, Frontend
38
- Skills and Custom Skills can target Claude Code, Codex CLI, OpenCode and Gemini
39
- CLI. Graphify is installed through the official `graphifyy` package and
40
- registers itself for the selected runtimes.
46
+ | Custom Skills | Bundled skills from this repository, selected by package and scope |
41
47
 
42
- ## Repository Layout
48
+ ## Supported Runtimes
43
49
 
44
- ```text
45
- bin/
46
- agent-toolkit.ts Thin TypeScript entrypoint
47
- .github/
48
- workflows/
49
- ci.yml Quality and security gates
50
- AGENTS.md Shared project rules for coding agents
51
- CLAUDE.md Pointer to AGENTS.md for Claude Code
52
- src/
53
- main.ts Installer orchestration
54
- args.ts CLI flag parsing
55
- menu.ts Interactive selection
56
- runtimes.ts Runtime CLI checks
57
- skills.ts Recursive skill discovery and installation
58
- installers/ Tool-specific installers
59
- dist/
60
- bin/
61
- agent-toolkit.js Compiled CLI used by npm and the wrapper
62
- setup-agent-toolkit.sh Bash compatibility wrapper
63
- package.json CLI metadata and test scripts
64
- tools.lock.json Pinned external tool sources and RTK checksums
65
- LICENSE MIT license
66
- skills/
67
- core/
68
- agent-toolkit-maintainer/
69
- SKILL.md
70
- backend/
71
- tests/
72
- unit/
73
- *.test.ts
74
- test-agent-toolkit.sh
75
- ```
50
+ | Runtime | Support |
51
+ |---|---|
52
+ | Claude Code | Plugins and skills |
53
+ | Codex CLI | Plugins, skills and local automation |
54
+ | OpenCode | Skills plus package-driven tools |
55
+ | Gemini CLI | Extensions and native Agent Skills install |
76
56
 
77
- ## Prerequisites
57
+ Superpowers is installed automatically for Claude Code, Codex CLI and Gemini
58
+ CLI. OpenCode Superpowers support is not automated yet because the upstream
59
+ install flow is not a stable single command.
78
60
 
79
- - Node.js 22+ for the full toolkit
80
- - `npx` for Caveman, GSD and third-party frontend skills
81
- - `git` for pinned third-party frontend skill sources
82
- - `npm` when using `--install-missing-clis`
83
- - `uv` for Graphify, or `pipx` when `GRAPHIFY_INSTALLER=pipx`
84
- - `tar` or `unzip` only when RTK needs to be downloaded
85
- - The runtime CLIs you want to target: `claude`, `codex`, `opencode`, and/or `gemini`
61
+ Caveman, GSD, Frontend Skills and Custom Skills can target Claude Code, Codex
62
+ CLI, OpenCode and Gemini CLI. Graphify is installed through the official
63
+ `graphifyy` package and registers itself for selected runtimes.
86
64
 
87
- The installer can install missing selected runtime CLIs through npm when run
88
- with `--install-missing-clis`.
65
+ ## Quick Commands
89
66
 
90
- Install development dependencies and build the CLI before running from a clone:
91
-
92
- ```bash
93
- npm install
94
- npm run build
95
- ```
96
-
97
- ## Install
98
-
99
- Run the published package directly:
67
+ Run the interactive installer:
100
68
 
101
69
  ```bash
102
70
  npx -y @ranimontagna/agent-toolkit
103
71
  ```
104
72
 
105
- Interactive runs show detected local status before installation, including
106
- runtime CLIs on `PATH` and already-copied Custom Skills when those can be
107
- verified. They ask which tools, runtimes, Custom Skill packages and skill scopes
108
- to install, then show an install plan and ask for confirmation. Pressing Enter
109
- does not silently install the full kit; choose `all` explicitly when that is
110
- what you want. Interactive terminals use a visual Clack menu. Pipe answers or
111
- set `AGENT_TOOLKIT_MENU=plain` to use the line-based fallback.
112
-
113
- Run the full kit for Codex in one command:
73
+ Install the full kit for Codex CLI:
114
74
 
115
75
  ```bash
116
76
  npx -y @ranimontagna/agent-toolkit --all --codex
117
77
  ```
118
78
 
119
- Run the full kit for every supported runtime:
79
+ Install the full kit for every supported runtime:
120
80
 
121
81
  ```bash
122
82
  npx -y @ranimontagna/agent-toolkit --all --all-runtimes
123
83
  ```
124
84
 
125
- From a local clone, install development dependencies and build the CLI first:
85
+ Install only Graphify for Codex CLI:
126
86
 
127
87
  ```bash
128
- npm install
129
- npm run build
130
- bash setup-agent-toolkit.sh
88
+ npx -y @ranimontagna/agent-toolkit --graphify-only --codex
131
89
  ```
132
90
 
133
- You can also call the compiled Node CLI directly from a built clone:
91
+ Install only third-party frontend design skills for Codex CLI:
134
92
 
135
93
  ```bash
136
- node dist/bin/agent-toolkit.js
94
+ npx -y @ranimontagna/agent-toolkit --frontend-skills-only --codex
137
95
  ```
138
96
 
139
- Target one runtime:
97
+ Install only bundled Custom Skills into the current project:
140
98
 
141
99
  ```bash
142
- npx -y @ranimontagna/agent-toolkit --all --codex
100
+ npx -y @ranimontagna/agent-toolkit --skills-only --codex --local
143
101
  ```
144
102
 
145
- Install a single tool:
103
+ Install only the `core` Custom Skills package:
146
104
 
147
105
  ```bash
148
- npx -y @ranimontagna/agent-toolkit --gsd-only --all-runtimes
106
+ npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-package core
149
107
  ```
150
108
 
151
- Install Graphify for Codex only:
109
+ List bundled Custom Skills and their repository scope paths:
152
110
 
153
111
  ```bash
154
- npx -y @ranimontagna/agent-toolkit --graphify-only --codex
112
+ npx -y @ranimontagna/agent-toolkit --skills-list
155
113
  ```
156
114
 
157
- Install only third-party frontend design skills for Codex:
115
+ Install missing selected runtime CLIs before configuring them:
158
116
 
159
117
  ```bash
160
- npx -y @ranimontagna/agent-toolkit --frontend-skills-only --codex
118
+ npx -y @ranimontagna/agent-toolkit --all --gemini --install-missing-clis
161
119
  ```
162
120
 
163
- Install only bundled skills into the current project:
121
+ ## Custom Skills
164
122
 
165
- ```bash
166
- npx -y @ranimontagna/agent-toolkit --skills-only --all-runtimes --local
123
+ Bundled skills live under `skills/`.
124
+
125
+ ```text
126
+ skills/
127
+ core/
128
+ agent-toolkit-maintainer/
129
+ SKILL.md
130
+ backend/
131
+ fastify-best-practices/
132
+ SKILL.md
133
+ rules/
134
+ frontend/
135
+ react-native/
136
+ react-native-expert/
137
+ SKILL.md
138
+ react-native-unistyles-v3/
139
+ SKILL.md
140
+ react/
141
+ react-patterns/
142
+ SKILL.md
143
+ react-performance/
144
+ SKILL.md
145
+ react-testing/
146
+ SKILL.md
167
147
  ```
168
148
 
169
- Install only one bundled skill package:
149
+ The first path segment is a selectable package:
150
+
151
+ ```text
152
+ skills/<package>/<optional-scope>/<skill-name>/SKILL.md
153
+ ```
154
+
155
+ Runtime installs are flat even when repository paths are nested. For example,
156
+ `skills/backend/node/fastify-api-patterns/SKILL.md` installs as:
157
+
158
+ ```text
159
+ ~/.codex/skills/fastify-api-patterns/
160
+ ```
161
+
162
+ Use `--skills-package` to select first-level packages:
170
163
 
171
164
  ```bash
172
165
  npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-package core
173
166
  ```
174
167
 
175
- Install only React-scoped skills:
168
+ Use `--skills-scope` to select a narrower path:
176
169
 
177
170
  ```bash
178
- npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-scope frontend/react
171
+ npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-scope backend/node
179
172
  ```
180
173
 
181
- List available skills and their scope paths:
174
+ Install only React Native skills:
182
175
 
183
176
  ```bash
184
- npx -y @ranimontagna/agent-toolkit --skills-list
177
+ npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-scope frontend/react-native
185
178
  ```
186
179
 
187
- Install missing selected CLIs before configuring them:
180
+ Both filters can be combined. The selected package filter runs first, then the
181
+ scope filter narrows the result.
188
182
 
189
183
  ```bash
190
- npx -y @ranimontagna/agent-toolkit --all --gemini --install-missing-clis
184
+ npx -y @ranimontagna/agent-toolkit \
185
+ --skills-only \
186
+ --codex \
187
+ --skills-package backend \
188
+ --skills-scope backend/node
191
189
  ```
192
190
 
193
- ## Flags
191
+ Each skill must be a directory containing `SKILL.md` with frontmatter:
192
+
193
+ ```markdown
194
+ ---
195
+ name: my-skill
196
+ description: Use when doing a specific kind of task.
197
+ ---
198
+
199
+ # My Skill
200
+
201
+ Follow these steps...
202
+ ```
203
+
204
+ ### Included Skill Packages
205
+
206
+ | Package | Skill | Source |
207
+ |---|---|---|
208
+ | `core` | `agent-toolkit-maintainer` | Maintained in this repository |
209
+ | `backend` | `fastify-best-practices` | Copied from Matteo Collina's [`mcollina/skills`](https://github.com/mcollina/skills/tree/main/skills/fastify) under the MIT license |
210
+ | `frontend` | `react-native-expert` | Copied from Jeffallan's [`claude-skills`](https://github.com/Jeffallan/claude-skills/tree/main/skills/react-native-expert) under the MIT license |
211
+ | `frontend` | `react-native-unistyles-v3` | Copied from Jacek Pudysz's [`react-native-unistyles`](https://github.com/jpudysz/react-native-unistyles/tree/main/skills/react-native-unistyles-v3), declared MIT upstream |
212
+ | `frontend` | `react-patterns` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-patterns) under the MIT license |
213
+ | `frontend` | `react-performance` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-performance) under the MIT license |
214
+ | `frontend` | `react-testing` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-testing) under the MIT license |
215
+
216
+ The installer validates:
217
+
218
+ - `SKILL.md` exists;
219
+ - frontmatter starts and closes with `---`;
220
+ - `name` and `description` are present;
221
+ - `name` uses lowercase letters, numbers and hyphens;
222
+ - `description` is non-empty and under 1024 characters.
223
+
224
+ Third-party frontend design skills such as Impeccable and Taste Skill are not
225
+ vendored as bundled Custom Skills. The `frontend-skills` tool installs them
226
+ externally through the Agent Skills CLI from pinned public sources.
227
+
228
+ ## CLI Reference
194
229
 
195
230
  ```text
196
- --all Install every tool without the menu
197
- --rtk-only Install only RTK
198
- --caveman-only Install only Caveman
199
- --superpowers-only Install only Superpowers
200
- --graphify-only Install only Graphify
201
- --gsd-only Install only GSD
202
- --frontend-skills-only Install only third-party frontend skills
203
- --skills-only Install only Custom Skills
204
- --no-rtk Skip RTK
205
- --no-caveman Skip Caveman
206
- --no-superpowers Skip Superpowers
207
- --no-graphify Skip Graphify
208
- --no-gsd Skip GSD
209
- --no-frontend-skills Skip third-party frontend skills
210
- --no-skills Skip Custom Skills
211
-
212
- --all-runtimes Target Claude Code, Codex CLI, OpenCode and Gemini CLI
213
- --claude Target only Claude Code
214
- --codex Target only Codex CLI
215
- --opencode Target only OpenCode
216
- --gemini Target only Gemini CLI
217
- --no-claude Skip Claude Code
218
- --no-codex Skip Codex CLI
219
- --no-opencode Skip OpenCode
220
- --no-gemini Skip Gemini CLI
221
-
222
- --global Install runtime assets into user config directories
223
- --local Install runtime assets into the current project
224
- --skills-dir DIR Use another source directory for skills
225
- --skills-package NAME Install skills from a first-level package, repeatable
226
- --skills-scope SCOPE Install skills under a relative scope path, repeatable
227
- --skills-list List discovered skills and exit
228
- --install-missing-clis Install selected runtime CLIs if missing
229
- --allow-mutable-sources Allow explicit mutable source overrides like @latest
230
- --help, -h Show help
231
+ Tools:
232
+ --all Install every tool without the menu
233
+ --rtk-only Install only RTK
234
+ --caveman-only Install only Caveman
235
+ --superpowers-only Install only Superpowers
236
+ --graphify-only Install only Graphify
237
+ --gsd-only Install only GSD
238
+ --frontend-skills-only Install only third-party frontend skills
239
+ --skills-only Install only Custom Skills
240
+ --no-rtk Skip RTK
241
+ --no-caveman Skip Caveman
242
+ --no-superpowers Skip Superpowers
243
+ --no-graphify Skip Graphify
244
+ --no-gsd Skip GSD
245
+ --no-frontend-skills Skip third-party frontend skills
246
+ --no-skills Skip Custom Skills
247
+
248
+ Runtimes:
249
+ --all-runtimes Target Claude Code, Codex CLI, OpenCode and Gemini CLI
250
+ --claude Target only Claude Code
251
+ --codex Target only Codex CLI
252
+ --opencode Target only OpenCode
253
+ --gemini Target only Gemini CLI
254
+ --no-claude Skip Claude Code
255
+ --no-codex Skip Codex CLI
256
+ --no-opencode Skip OpenCode
257
+ --no-gemini Skip Gemini CLI
258
+
259
+ Install scope:
260
+ --global Install runtime assets into user config directories
261
+ --local Install runtime assets into the current project
262
+ --skills-dir DIR Use another source directory for Custom Skills
263
+ --skills-package NAME Install Custom Skills from a first-level package
264
+ --skills-scope SCOPE Install skills under a relative scope path
265
+ --skills-list List discovered Custom Skills and exit
266
+
267
+ Other:
268
+ --install-missing-clis Install selected runtime CLIs if missing
269
+ --allow-mutable-sources Allow explicit mutable package sources like @latest
270
+ --help, -h Show help
231
271
  ```
232
272
 
233
- ## Configuration
273
+ Repeat `--skills-package` or `--skills-scope` to select more than one filter.
234
274
 
235
- The installer can be customized with environment variables:
275
+ ## Configuration
236
276
 
237
277
  ```text
238
278
  RTK_INSTALL_DIR RTK binary install directory
@@ -246,7 +286,7 @@ GSD_SCOPE global or local
246
286
  TOOLS_LOCK_PATH External tool provenance lock path
247
287
  ALLOW_MUTABLE_SOURCES Set to 1 to allow mutable source overrides
248
288
  AGENT_TOOLKIT_MENU Set to plain to force the line-based interactive menu
249
- CUSTOM_SKILLS_DIR Source directory for custom skills
289
+ CUSTOM_SKILLS_DIR Source directory for Custom Skills
250
290
  SKILLS_PACKAGE Comma-separated first-level skill package filters
251
291
  SKILLS_SCOPE Comma-separated skill scope filters
252
292
  CLAUDE_CLI_PACKAGE npm package used to install Claude Code CLI
@@ -255,7 +295,7 @@ OPENCODE_CLI_PACKAGE npm package used to install OpenCode CLI
255
295
  GEMINI_CLI_PACKAGE npm package used to install Gemini CLI
256
296
  ```
257
297
 
258
- Defaults:
298
+ Defaults come from `tools.lock.json`:
259
299
 
260
300
  ```text
261
301
  CAVEMAN_PACKAGE=github:JuliusBrussee/caveman#655b7d9c5431f822264b7732e9901c5578ac84cf
@@ -269,181 +309,180 @@ OPENCODE_CLI_PACKAGE=opencode-ai@1.15.13
269
309
  GEMINI_CLI_PACKAGE=@google/gemini-cli@0.45.0
270
310
  ```
271
311
 
272
- These defaults come from `tools.lock.json`. Mutable overrides like `@latest`,
273
- unpinned npm packages, or GitHub package sources without a full commit SHA are
274
- blocked unless you pass `--allow-mutable-sources` or set
275
- `ALLOW_MUTABLE_SOURCES=1`.
312
+ Mutable overrides like `@latest`, unpinned npm packages or GitHub package
313
+ sources without a full commit SHA are blocked unless you pass
314
+ `--allow-mutable-sources` or set `ALLOW_MUTABLE_SOURCES=1`.
315
+
316
+ ## Security Model
317
+
318
+ This project has two supply-chain boundaries:
276
319
 
277
- ## External Tool Provenance
320
+ - repository dependencies, controlled by `pnpm-lock.yaml`, CI, `pnpm audit`,
321
+ pnpm supply-chain policies and npm release provenance;
322
+ - external tools installed by the runtime installer, controlled by
323
+ `tools.lock.json` and runtime provenance validation.
278
324
 
279
- The CI protects this repository's own dependency graph with `npm audit`,
280
- registry signature checks, dependency review and Gitleaks. The installer also
281
- protects tools downloaded later by reading `tools.lock.json` and rejecting
282
- mutable external sources by default.
325
+ Repository installs are configured in `pnpm-workspace.yaml` to delay newly
326
+ published package versions for 24 hours, enforce that delay strictly, reject
327
+ missing registry publish timestamps, block transitive exotic package sources and
328
+ fail trust downgrades for packages that previously had stronger publish
329
+ evidence.
283
330
 
284
331
  Current external sources:
285
332
 
286
333
  | Tool | Locked source | Runtime verification |
287
334
  |---|---|---|
288
335
  | RTK | GitHub release `rtk-ai/rtk@v0.42.1` | Verifies the selected asset SHA-256 before extraction |
289
- | Caveman | `JuliusBrussee/caveman` at commit `655b7d9c5431f822264b7732e9901c5578ac84cf` | Installs through an immutable GitHub npm spec |
336
+ | Caveman | `JuliusBrussee/caveman` at commit `655b7d9c5431f822264b7732e9901c5578ac84cf` | Immutable GitHub npm spec |
290
337
  | Graphify | `graphifyy==0.8.31` | Blocks unpinned package overrides |
291
338
  | GSD | `get-shit-done-cc@1.42.3` | Blocks `@latest` unless explicitly allowed |
292
- | Frontend Skills | `skills@1.5.10`, `pbakaus/impeccable` and `Leonxlnx/taste-skill` at pinned commits | Clones pinned refs, then installs selected skills through Agent Skills CLI |
293
- | Runtime CLIs | Exact npm versions for Claude, Codex, OpenCode and Gemini | Used when `--install-missing-clis` is enabled |
339
+ | Frontend Skills | `skills@1.5.10`, `pbakaus/impeccable` and `Leonxlnx/taste-skill` at pinned commits | Clones pinned refs before install |
340
+ | Runtime CLIs | Exact npm versions for Claude, Codex, OpenCode and Gemini | Used only when `--install-missing-clis` is enabled |
294
341
 
295
- Use `TOOLS_LOCK_PATH=/path/to/tools.lock.json` to test another lock file. Keep
296
- that file committed if it represents the expected public installer behavior.
342
+ Bundled third-party skills preserve upstream attribution and license files:
297
343
 
298
- ## Adding Skills
344
+ | Skill | Source commit | License |
345
+ |---|---|---|
346
+ | `fastify-best-practices` | `mcollina/skills@5b2a81354b6d10325da0db9decc9ce5ecc714138` | MIT |
347
+ | `react-native-expert` | `Jeffallan/claude-skills@e8be415bc94d8d6ebddc2fb50e5d03c6e27d4319` | MIT |
348
+ | `react-native-unistyles-v3` | `jpudysz/react-native-unistyles@8b5e9fd281a81bdfd87d4fe9e6a0b042c84c5c83` | MIT |
349
+ | `react-patterns` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
350
+ | `react-performance` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
351
+ | `react-testing` | `affaan-m/ECC@0f84c0e2796703fbda87d577b2636351418c7442` | MIT |
299
352
 
300
- Add personal skills under a scope path:
353
+ Releases use npm trusted publishing through GitHub Actions OIDC. The npm
354
+ package is published without a long-lived npm token, and npm automatically
355
+ generates provenance for public packages published through trusted publishing.
301
356
 
302
- ```text
303
- skills/<scope>/<skill-name>/SKILL.md
304
- ```
305
-
306
- Suggested organization:
357
+ ## Repository Layout
307
358
 
308
359
  ```text
360
+ bin/
361
+ agent-toolkit.ts Thin TypeScript entrypoint
362
+ .github/
363
+ workflows/
364
+ ci.yml Quality and security gates
365
+ release.yml Trusted publishing release workflow
366
+ src/
367
+ main.ts Installer orchestration
368
+ args.ts CLI flag parsing
369
+ menu.ts Interactive selection
370
+ status.ts Local install status detection
371
+ runtimes.ts Runtime CLI checks
372
+ skills.ts Recursive skill discovery and installation
373
+ installers/ Tool-specific installers
374
+ dist/
375
+ bin/
376
+ agent-toolkit.js Compiled CLI used by npm and the wrapper
377
+ docs/
378
+ assets/ README terminal screenshots
309
379
  skills/
310
380
  core/
311
381
  agent-toolkit-maintainer/
312
382
  SKILL.md
383
+ backend/
384
+ fastify-best-practices/
385
+ SKILL.md
386
+ rules/
313
387
  frontend/
388
+ react-native/
314
389
  react/
315
- react-component-architecture/
316
- SKILL.md
317
- backend/
318
- node/
319
- fastify-api-patterns/
320
- SKILL.md
321
- go/
322
- go-service-patterns/
323
- SKILL.md
324
- ```
325
-
326
- The installer discovers `SKILL.md` files recursively. The first path segment is
327
- treated as a selectable skill package, for example `core`, `frontend`, or
328
- `backend`. The remaining repository path is used only for organization; runtime
329
- installs remain flat:
330
-
331
- ```text
332
- ~/.codex/skills/react-component-architecture/
333
- ~/.codex/skills/fastify-api-patterns/
334
- ~/.codex/skills/go-service-patterns/
335
- ```
336
-
337
- Third-party frontend design skills are not bundled as personal skills. The
338
- `frontend-skills` tool installs them externally:
339
-
340
- | Runtime folder | Skill name | Source |
341
- |---|---|---|
342
- | `impeccable` | `impeccable` | `pbakaus/impeccable`, Apache-2.0 |
343
- | `design-taste-frontend` | `design-taste-frontend` | `Leonxlnx/taste-skill`, MIT |
344
-
345
- Each skill should be concise and self-contained:
346
-
347
- ```markdown
348
- ---
349
- name: my-skill
350
- description: Use when doing a specific kind of task.
351
- ---
352
-
353
- # My Skill
354
-
355
- Follow these steps...
390
+ tests/
391
+ unit/
392
+ test-agent-toolkit.sh
393
+ AGENTS.md Shared project rules for coding agents
394
+ CLAUDE.md Pointer to AGENTS.md for Claude Code
395
+ pnpm-lock.yaml Repository dependency lockfile
396
+ pnpm-workspace.yaml pnpm workspace and supply-chain policy settings
397
+ setup-agent-toolkit.sh Bash compatibility wrapper
398
+ tools.lock.json Pinned external tool sources and RTK checksums
356
399
  ```
357
400
 
358
- The installer validates the core Agent Skills requirements:
401
+ ## Development
359
402
 
360
- - each skill is a directory containing `SKILL.md`;
361
- - `SKILL.md` starts with YAML frontmatter;
362
- - `name` and `description` are required;
363
- - `name` uses lowercase letters, numbers and hyphens only;
364
- - `description` is non-empty and under 1024 characters.
403
+ Prerequisites:
365
404
 
366
- For larger skills, put detailed supporting material in `references/`, scripts in
367
- `scripts/`, and reusable assets in `assets/`.
405
+ - Node.js 22+ for the full toolkit;
406
+ - `npx` for Caveman, GSD and third-party frontend skills;
407
+ - `git` for pinned third-party frontend skill sources;
408
+ - `pnpm` 11.x for repository development;
409
+ - `npm` when using `--install-missing-clis` or publishing through npm trusted
410
+ publishing;
411
+ - `uv` for Graphify, or `pipx` when `GRAPHIFY_INSTALLER=pipx`;
412
+ - `tar` or `unzip` only when RTK needs to be downloaded;
413
+ - runtime CLIs you want to target: `claude`, `codex`, `opencode`, `gemini`.
368
414
 
369
- Use `--skills-package` to install one or more first-level packages:
415
+ Install dependencies and build from a clone:
370
416
 
371
417
  ```bash
372
- bash setup-agent-toolkit.sh --skills-only --codex --skills-package core
418
+ pnpm install
419
+ pnpm run build
420
+ bash setup-agent-toolkit.sh
373
421
  ```
374
422
 
375
- Use `--skills-scope` to install only a narrower subset:
423
+ Run the local Node CLI directly:
376
424
 
377
425
  ```bash
378
- bash setup-agent-toolkit.sh --skills-only --codex --skills-scope backend/node
426
+ node dist/bin/agent-toolkit.js
379
427
  ```
380
428
 
381
- Gemini CLI uses its native command:
429
+ Quality scripts:
382
430
 
383
431
  ```bash
384
- gemini skills install skills/<skill-name> --scope user --consent
432
+ pnpm run build
433
+ pnpm run typecheck
434
+ pnpm run lint
435
+ pnpm run lint:fix
436
+ pnpm run format
437
+ pnpm run security
438
+ pnpm run test:unit
439
+ pnpm run test:integration
440
+ pnpm test
441
+ pnpm run check
385
442
  ```
386
443
 
387
- For local/project installs, the setup uses `--scope workspace`.
388
-
389
- ## Verification
390
-
391
- Run the full local check:
392
-
393
- ```bash
394
- npm run check
395
- ```
396
-
397
- Available quality scripts:
398
-
399
- ```bash
400
- npm run build # Compile TypeScript into dist/
401
- npm run typecheck # Type-check source and unit tests
402
- npm run lint # Biome lint and format checks
403
- npm run lint:fix # Apply safe Biome fixes
404
- npm run format # Format with Biome
405
- npm run security # npm vulnerability audit and registry signature checks
406
- npm run security:audit # Fail on moderate+ vulnerable dependencies
407
- npm run security:signatures # Verify npm signatures and attestations
408
- npm run test:unit # Vitest unit tests
409
- npm run test:integration # Shell integration test
410
- npm test # Unit + integration tests
411
- ```
444
+ `pnpm run check` is the release gate. It runs lint, typecheck, unit tests, build,
445
+ compiled JavaScript syntax checks, Bash syntax checks and the shell integration
446
+ test.
412
447
 
413
448
  The shell integration test validates the wrapper, flags, fake runtime CLIs,
414
449
  installer command wiring, skill discovery and public-safe reference checks.
415
450
 
416
- The GitHub Actions CI runs four gates:
451
+ ## CI And Release
452
+
453
+ GitHub Actions runs:
417
454
 
418
455
  - `Check`: lint, typecheck, unit tests, build and integration tests;
419
456
  - `Secret scan`: Gitleaks over full Git history;
420
- - `Dependency audit`: `npm audit` and `npm audit signatures`;
421
- - `Dependency review`: blocks PRs that add moderate-or-higher vulnerable dependencies.
457
+ - `Dependency audit`: `pnpm install --frozen-lockfile --ignore-scripts` and
458
+ `pnpm audit`;
459
+ - `Dependency review`: blocks PRs that add moderate-or-higher vulnerable
460
+ dependencies.
422
461
 
423
- These gates cover repository code, npm dependencies and pull-request dependency
424
- changes. External tool version safety is handled by `tools.lock.json` plus
425
- runtime provenance checks in the installer.
462
+ Release a new npm version by updating `package.json`, pushing the change to
463
+ `main`, then pushing a matching tag:
426
464
 
427
- ## Maintenance
465
+ ```bash
466
+ git tag v0.1.6
467
+ git push origin v0.1.6
468
+ ```
469
+
470
+ The `Release` workflow runs the full check and publishes the scoped package to
471
+ npm through trusted publishing. Dependency install and checks use pnpm, but the
472
+ final publish step intentionally stays on `npm publish` because npm trusted
473
+ publishing OIDC is handled by the npm CLI. Configure the npm package trusted
474
+ publisher for GitHub Actions with workflow filename `release.yml` before
475
+ pushing a release tag.
476
+
477
+ ## Maintenance Rules
428
478
 
429
479
  Keep this repository public-safe:
430
480
 
431
481
  - do not add company-specific URLs, tokens, secrets or internal project names;
432
- - prefer public package installers and configurable sources;
482
+ - keep third-party skills on pinned public sources, and only vendor them when
483
+ the license permits copying and the repository preserves attribution;
433
484
  - keep the installer idempotent;
485
+ - keep `tools.lock.json` as the source of truth for external tool versions;
434
486
  - cover pure module behavior with Vitest;
435
487
  - keep the shell integration test around behavior that can regress;
436
488
  - document what is automatic and what still depends on each runtime CLI.
437
-
438
- Release a new npm version by updating `package.json`, pushing the change to
439
- `main`, then pushing a matching tag:
440
-
441
- ```bash
442
- git tag v0.1.4
443
- git push origin v0.1.4
444
- ```
445
-
446
- The `Release` workflow runs the full check and publishes the scoped package to
447
- npm through trusted publishing. Configure the npm package trusted publisher for
448
- GitHub Actions with workflow filename `release.yml` before pushing a release
449
- tag.