@softspark/ai-toolkit 4.24.1 → 4.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +35 -14
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/hook-creator/SKILL.md +18 -4
- package/app/surface.json +4 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +67 -19
- package/bin/ai-toolkit.js +27 -3
- package/kb/reference/architecture-overview.md +13 -5
- package/kb/reference/claude-ecosystem-expansion-foundations.md +30 -5
- package/kb/reference/cli-reference.md +27 -2
- package/kb/reference/codex-cli-compatibility.md +101 -11
- package/kb/reference/global-install-model.md +10 -8
- package/kb/reference/hooks-catalog.md +41 -5
- package/kb/reference/mcp-editor-compatibility.md +3 -3
- package/kb/reference/mcp-templates.md +3 -3
- package/kb/reference/opencode-compatibility.md +53 -5
- package/kb/reference/supported-tools-registry.md +31 -26
- package/llms-full.txt +312 -73
- package/manifest.json +1 -1
- package/package.json +6 -2
- package/scripts/antigravity_plugin.py +570 -0
- package/scripts/codex_plugin.py +764 -0
- package/scripts/ecosystem_tools.json +92 -17
- package/scripts/generate_antigravity.py +16 -14
- package/scripts/generate_antigravity_agents.py +255 -0
- package/scripts/generate_antigravity_hooks.py +344 -0
- package/scripts/generate_cline_hooks.py +391 -0
- package/scripts/generate_cline_rules.py +210 -43
- package/scripts/generate_cline_skills.py +65 -2
- package/scripts/generate_codex_hooks.py +70 -8
- package/scripts/generate_gemini_agents.py +197 -0
- package/scripts/generate_gemini_hooks.py +24 -4
- package/scripts/generate_opencode_skills.py +544 -0
- package/scripts/inject_hook_cli.py +4 -26
- package/scripts/install.py +11 -10
- package/scripts/install_steps/ai_tools.py +209 -34
- package/scripts/mcp_editors.py +9 -1
- package/scripts/plugin_schema.py +8 -7
- package/scripts/secure_fs.py +35 -0
- package/scripts/uninstall.py +162 -18
- package/scripts/validate.py +42 -12
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,45 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v4.25.0 — editor-native integrations catch up (2026-08-19)
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Codex now has an exact native hook and plugin contract.** The hook generator
|
|
15
|
+
covers all 11 supported events, including bounded `SessionEnd`, while the new
|
|
16
|
+
deterministic plugin exporter bundles required runtime resources and verifies
|
|
17
|
+
the complete archive offline before installation.
|
|
18
|
+
- **Google Antigravity gains native hooks, agents, plugin packaging, MCP mapping,
|
|
19
|
+
and install profiles.** Generated hooks use the documented five-event schema;
|
|
20
|
+
project and user installs use the current IDE and CLI paths without conflating
|
|
21
|
+
legacy compatibility surfaces.
|
|
22
|
+
- **Gemini, OpenCode, and Cline gain native assets.** Gemini receives local agent
|
|
23
|
+
files, OpenCode receives complete native skill directories, and Cline receives
|
|
24
|
+
native rules plus all eight current extension and CLI hook events.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **Claude Code validation follows the current hook and plugin schemas.** Prompt
|
|
29
|
+
and agent handlers share the documented 13-event allowlist, HTTP handlers are
|
|
30
|
+
restricted to their supported lifecycle, and current plugin surfaces include
|
|
31
|
+
workflows, output styles, and themes.
|
|
32
|
+
- **Editor installation and removal are transactional.** Profile downgrades and
|
|
33
|
+
uninstall remove only toolkit-managed assets, preserve user files, and cover
|
|
34
|
+
the new native Gemini, OpenCode, Antigravity, and Cline paths.
|
|
35
|
+
|
|
36
|
+
### Security
|
|
37
|
+
|
|
38
|
+
- **Filesystem writers reject symlink ancestry and ancestor-swap attacks.** New
|
|
39
|
+
generators and cleanup paths use pinned transactions with rollback, while
|
|
40
|
+
plugin verification rejects missing, extra, modified, or wrongly-modeled
|
|
41
|
+
archive members.
|
|
42
|
+
|
|
43
|
+
### Ecosystem
|
|
44
|
+
|
|
45
|
+
- Refreshed the 13-tool compatibility registry and upstream snapshot after
|
|
46
|
+
revalidating Claude Code, Codex CLI, Antigravity, Gemini, OpenCode, and Cline
|
|
47
|
+
against their current native contracts.
|
|
48
|
+
|
|
10
49
|
## v4.24.1 — a dead link reported itself as installed (2026-08-19)
|
|
11
50
|
|
|
12
51
|
### Fixed
|
package/README.md
CHANGED
|
@@ -6,17 +6,20 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](app/skills/)
|
|
8
8
|
[](app/agents/)
|
|
9
|
-
[](tests/)
|
|
10
10
|
|
|
11
|
-
## What's New in v4.
|
|
11
|
+
## What's New in v4.25.0
|
|
12
12
|
|
|
13
|
-
**v4.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
**v4.25.0** brings the editor integrations onto their current native surfaces:
|
|
14
|
+
|
|
15
|
+
- Codex gets its exact 11-event hook contract and a deterministic native plugin
|
|
16
|
+
exporter with offline verification.
|
|
17
|
+
- Google Antigravity gets native hooks, agents, plugin packaging, MCP mapping,
|
|
18
|
+
and local/global install profiles.
|
|
19
|
+
- Gemini gains native agents, OpenCode gains native skill directories, and Cline
|
|
20
|
+
gains native rules plus its exact 8-event hook lifecycle.
|
|
21
|
+
- Claude Code validation now matches the current prompt, agent, HTTP hook, and
|
|
22
|
+
plugin contracts, with transactional symlink protections across new writers.
|
|
20
23
|
|
|
21
24
|
See [CHANGELOG.md](CHANGELOG.md) for full history.
|
|
22
25
|
|
|
@@ -91,6 +94,24 @@ ai-toolkit claude-app export --verify
|
|
|
91
94
|
Re-export and re-upload after toolkit or registered-rule updates. Skills work
|
|
92
95
|
in Chat and Cowork; hooks and sub-agents are active only in Cowork.
|
|
93
96
|
|
|
97
|
+
### Native Codex Plugin
|
|
98
|
+
|
|
99
|
+
Build or validate the marketplace-ready Codex package without changing
|
|
100
|
+
`~/.agents` or `~/.codex`:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
ai-toolkit codex-plugin export --output ai-toolkit-codex-plugin.zip
|
|
104
|
+
ai-toolkit codex-plugin verify
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Extract the ZIP into a local marketplace under `plugins/ai-toolkit/`, add that
|
|
108
|
+
marketplace with `codex plugin marketplace add <marketplace-root>`, then install
|
|
109
|
+
from `/plugins` in Codex CLI and start a new session. Review and trust the
|
|
110
|
+
bundled hooks before use. The ZIP includes plugin-local persona definitions,
|
|
111
|
+
the briefing helper, the skill-audit helper and its local imports, and other
|
|
112
|
+
referenced skill resources. Export rejects symlinked output paths and ancestors.
|
|
113
|
+
Codex IDE does not support plugins.
|
|
114
|
+
|
|
94
115
|
### Install Profiles
|
|
95
116
|
|
|
96
117
|
```bash
|
|
@@ -118,15 +139,15 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
118
139
|
| Claude Chat / Cowork | uploaded plugin ZIP + UI global/folder instructions | Cowork only | account/app |
|
|
119
140
|
| Cursor | `.cursor/rules/*.mdc` + `.cursor/mcp.json` + `.cursor/skills/*` | ✅ | project (`~/.cursor/mcp.json` for MCP only) |
|
|
120
141
|
| Windsurf (Devin Desktop) | `~/.config/devin/AGENTS.md` + `.devin/rules/*.md` + `.devin/hooks.v1.json` + `.windsurf/skills/*` | ✅ | global + project |
|
|
121
|
-
| Gemini CLI | `~/.gemini/GEMINI.md` | ✅ |
|
|
142
|
+
| Gemini CLI | `~/.gemini/GEMINI.md` + `.gemini/settings.json` + `.gemini/{commands,skills,agents}/` | ✅ | project + user |
|
|
122
143
|
| GitHub Copilot | Project: `AGENTS.md` + `.github/copilot-instructions.md` + `.github/{instructions,prompts,agents,skills,hooks}/` + `.github/mcp.json`; user: `$COPILOT_HOME/copilot-instructions.md` + `$COPILOT_HOME/{instructions,agents,skills,hooks}/` + `$COPILOT_HOME/mcp-config.json` | ✅ | project + user |
|
|
123
|
-
| Cline |
|
|
144
|
+
| Cline | Project: `.cline/{rules,hooks,skills}/` + `.clinerules/{hooks,workflows}/`; user: `~/.cline/{rules,hooks,skills}/` + `~/Documents/Cline/{Rules,Hooks}/` compatibility | ✅ | global + project |
|
|
124
145
|
| Roo Code / [Zoo Code](https://zoocode.dev/) | `~/.roo/rules/*.md` + `.roomodes` + `.roo/rules/*.md` | — | global rules + project |
|
|
125
146
|
| Aider | `~/.aider.conf.yml` + `.aider.conf.yml` + `CONVENTIONS.md` | — | global + project |
|
|
126
147
|
| Augment | `~/.augment/rules/*.md` + `.augment/rules/ai-toolkit-*.md` | ✅ | global + project |
|
|
127
|
-
| Google Antigravity | `.agents/rules
|
|
148
|
+
| Google Antigravity | Project `.agents/{rules,workflows,skills,agents,hooks}/`; user `~/.gemini/config/{skills,agents,hooks}/`; opt-in native plugin export | ✅ | project + user |
|
|
128
149
|
| Codex CLI | Project: `AGENTS.md` + `.agents/skills/*` + `.codex/{agents,hooks}/` + `.codex/{hooks.json,config.toml}`; user: `$CODEX_HOME/{AGENTS.md,agents,hooks.json,config.toml}` + `$HOME/.agents/skills/*` | ✅ | project + user |
|
|
129
|
-
| opencode | `AGENTS.md` + `.opencode/{agents,commands,plugins}/*` + `opencode.json` | ✅ | project + global (`~/.config/opencode/`) |
|
|
150
|
+
| opencode | `AGENTS.md` + `.opencode/{agents,commands,plugins,skills}/*` + `opencode.{json,jsonc}` | ✅ | project + global (`~/.config/opencode/`) |
|
|
130
151
|
|
|
131
152
|
> Claude Code is always installed (primary platform). Other editors are selected with `--editors`; the Claude app uses the separate `claude-app export` flow because its customization store is UI/plugin-managed. The **Hooks** column marks platforms with lifecycle enforcement. Platforms marked — receive guidance without blocking hooks.
|
|
132
153
|
|
|
@@ -164,7 +185,7 @@ ai-toolkit/
|
|
|
164
185
|
│ └── ARCHITECTURE.md # Full system design
|
|
165
186
|
├── kb/ # Reference docs, procedures, plans
|
|
166
187
|
├── scripts/ # Validation, install, evaluation scripts
|
|
167
|
-
├── tests/ # Bats and Python test suite (
|
|
188
|
+
├── tests/ # Bats and Python test suite (1636 tests)
|
|
168
189
|
└── CHANGELOG.md
|
|
169
190
|
```
|
|
170
191
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "ai-toolkit",
|
|
4
4
|
"displayName": "AI Toolkit",
|
|
5
5
|
"description": "Professional-grade engineering skills, agents, rules, and lifecycle guardrails for Claude Code, Claude Chat, and Cowork.",
|
|
6
|
-
"version": "4.
|
|
6
|
+
"version": "4.25.0",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "SoftSpark",
|
|
9
9
|
"url": "https://github.com/softspark"
|
|
@@ -23,7 +23,7 @@ Create a new Claude Code hook following ai-toolkit conventions.
|
|
|
23
23
|
| `SessionEnd` | Session is closing | any | Flush logs, save transcripts |
|
|
24
24
|
| `UserPromptSubmit` | User submits a prompt | any | Prompt governance, usage tracking |
|
|
25
25
|
| `Notification` | Claude sends a notification | any | OS alerts, Slack pings |
|
|
26
|
-
| `MessageDisplay` | Assistant message
|
|
26
|
+
| `MessageDisplay` | Assistant message text streams in completed-line batches | none | Return `displayContent` to replace the rendered batch without changing the transcript |
|
|
27
27
|
|
|
28
28
|
### Tool lifecycle
|
|
29
29
|
|
|
@@ -80,6 +80,7 @@ Create a new Claude Code hook following ai-toolkit conventions.
|
|
|
80
80
|
| `WorktreeCreate` | Worktree is being created; `type: "http"` can return `hookSpecificOutput.worktreePath` | any | Provision worktree dirs |
|
|
81
81
|
| `WorktreeRemove` | Worktree is being removed | any | Cleanup |
|
|
82
82
|
| `CwdChanged` | Working directory changes during a session | any | Reactive env management (e.g., direnv) |
|
|
83
|
+
| `DirectoryAdded` | A working directory was added with `/add-dir` or SDK `register_repo_root`; runs asynchronously after the add and cannot block it | `slash_command\|register_repo_root` | Prepare a newly added repository |
|
|
83
84
|
| `FileChanged` | Tracked file is modified on disk | any | Re-lint, reload config |
|
|
84
85
|
| `ConfigChange` | Settings / config file changed | any | Re-validate, warn on drift |
|
|
85
86
|
|
|
@@ -99,7 +100,7 @@ Claude Code supports five handler `type` values in `hooks.json`:
|
|
|
99
100
|
| `command` | Run a shell script / binary | `command` (path + args) |
|
|
100
101
|
| `http` | Call a local or remote HTTP endpoint | `url` |
|
|
101
102
|
| `prompt` | Inject a prompt to the fast inline model and use its verdict | `prompt` |
|
|
102
|
-
| `agent` | Spawn
|
|
103
|
+
| `agent` | Spawn an experimental tool-using subagent to evaluate the event | `prompt` |
|
|
103
104
|
| `mcp_tool` | Invoke an MCP tool directly (no subprocess) | `server`, `tool`, `arguments` |
|
|
104
105
|
|
|
105
106
|
`command` remains the default and ai-toolkit's hook entries all use it. The other types are documented here so you can author them by hand when needed.
|
|
@@ -146,9 +147,22 @@ Required fields:
|
|
|
146
147
|
- `hooks[].command`: path to script using `$HOME/.softspark/ai-toolkit/hooks/` prefix (for `type: command`)
|
|
147
148
|
|
|
148
149
|
Optional fields (read from Claude Code docs, not emitted by ai-toolkit by default):
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
|
|
151
|
+
Common to every handler type:
|
|
152
|
+
- `hooks[].if`: one permission-rule filter (e.g. `"Bash(git push*)"`); evaluated only for tool events
|
|
153
|
+
- `hooks[].timeout`: seconds to wait before canceling the handler (type and event defaults apply if omitted)
|
|
151
154
|
- `hooks[].statusMessage`: short message surfaced in the UI while the hook runs
|
|
155
|
+
- `hooks[].once`: run once per session; only honored in skill frontmatter and ignored in settings files or agent frontmatter
|
|
156
|
+
|
|
157
|
+
Command-handler fields:
|
|
158
|
+
- `hooks[].args`: argument vector for exec form. Prefer exec form when a command uses `${CLAUDE_PROJECT_DIR}`, `${CLAUDE_PLUGIN_ROOT}`, or `${CLAUDE_PLUGIN_DATA}` path placeholders
|
|
159
|
+
- `hooks[].async`: run in the background without blocking; background hooks cannot return decisions
|
|
160
|
+
- `hooks[].asyncRewake`: run in the background and wake Claude on exit code 2; implies `async`
|
|
161
|
+
- `hooks[].shell`: choose `bash` or `powershell` for shell form; ignored when `args` selects exec form
|
|
162
|
+
|
|
163
|
+
Prompt and agent handlers both require `hooks[].prompt`; `type: agent` does not accept an agent name field. Agent handlers are experimental, so prefer `command` for production enforcement.
|
|
164
|
+
|
|
165
|
+
`MessageDisplay` has no matcher, runs once per rendered batch in interactive sessions, and defaults to a 10-second timeout. Its `displayContent` output changes only the screen text; Claude and the transcript retain the original response. `DirectoryAdded` is always asynchronous and non-blocking regardless of the handler configuration.
|
|
152
166
|
|
|
153
167
|
## Script Template
|
|
154
168
|
|
package/app/surface.json
CHANGED
|
@@ -244,6 +244,7 @@
|
|
|
244
244
|
"add-rule",
|
|
245
245
|
"agents-md",
|
|
246
246
|
"aider-conf",
|
|
247
|
+
"antigravity-plugin",
|
|
247
248
|
"antigravity-rules",
|
|
248
249
|
"augment-dir-rules",
|
|
249
250
|
"augment-rules",
|
|
@@ -251,9 +252,11 @@
|
|
|
251
252
|
"benchmark-ecosystem",
|
|
252
253
|
"claude-app",
|
|
253
254
|
"cline-dir-rules",
|
|
255
|
+
"cline-hooks",
|
|
254
256
|
"cline-rules",
|
|
255
257
|
"codex-hooks",
|
|
256
258
|
"codex-md",
|
|
259
|
+
"codex-plugin",
|
|
257
260
|
"compile-slm",
|
|
258
261
|
"config",
|
|
259
262
|
"conventions-md",
|
|
@@ -277,6 +280,7 @@
|
|
|
277
280
|
"opencode-json",
|
|
278
281
|
"opencode-md",
|
|
279
282
|
"opencode-plugin",
|
|
283
|
+
"opencode-skills",
|
|
280
284
|
"pack-codebase",
|
|
281
285
|
"plugin",
|
|
282
286
|
"projects",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"last_run": "2026-08-
|
|
2
|
+
"last_run": "2026-08-19T14:01:09Z",
|
|
3
3
|
"schema_version": 1,
|
|
4
4
|
"tools": {
|
|
5
5
|
"aider": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"augment": {
|
|
27
|
-
"docs_hash": "
|
|
27
|
+
"docs_hash": "0f7df1fdf4962938",
|
|
28
28
|
"headings": [
|
|
29
29
|
"Admin",
|
|
30
30
|
"Auggie CLI",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
"claude-app": {
|
|
69
|
-
"docs_hash": "
|
|
69
|
+
"docs_hash": "5bba2a625b109b69",
|
|
70
70
|
"headings": [
|
|
71
71
|
"Add global and folder instructions",
|
|
72
72
|
"Availability",
|
|
@@ -84,11 +84,11 @@
|
|
|
84
84
|
"Get started with Claude Cowork",
|
|
85
85
|
"Global instructions",
|
|
86
86
|
"How Claude Cowork runs your tasks",
|
|
87
|
-
"I don't see Cowork on web or mobile",
|
|
88
87
|
"I'm hitting usage limits quickly",
|
|
89
88
|
"I'm seeing "Setting up Claude's workspace" when I start Cowork; what does this mean?",
|
|
90
89
|
"Key capabilities",
|
|
91
90
|
"Permissions and security",
|
|
91
|
+
"Related Articles",
|
|
92
92
|
"Requirements",
|
|
93
93
|
"Research and analysis",
|
|
94
94
|
"Schedule recurring tasks",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
}
|
|
108
108
|
},
|
|
109
109
|
"claude-code": {
|
|
110
|
-
"docs_hash": "
|
|
110
|
+
"docs_hash": "3d4394d0bf5dd8c1",
|
|
111
111
|
"headings": [
|
|
112
112
|
"Core concepts",
|
|
113
113
|
"Documentation Index",
|
|
@@ -124,10 +124,12 @@
|
|
|
124
124
|
"markers": {
|
|
125
125
|
"ConfigChange": false,
|
|
126
126
|
"CwdChanged": false,
|
|
127
|
+
"DirectoryAdded": false,
|
|
127
128
|
"Elicitation": false,
|
|
128
129
|
"ElicitationResult": false,
|
|
129
130
|
"FileChanged": false,
|
|
130
131
|
"InstructionsLoaded": false,
|
|
132
|
+
"LSP servers": false,
|
|
131
133
|
"MCP server": true,
|
|
132
134
|
"MessageDisplay": false,
|
|
133
135
|
"Notification": false,
|
|
@@ -154,19 +156,27 @@
|
|
|
154
156
|
"UserPromptSubmit": false,
|
|
155
157
|
"WorktreeCreate": false,
|
|
156
158
|
"WorktreeRemove": false,
|
|
159
|
+
"channels": true,
|
|
157
160
|
"hook handler: agent": false,
|
|
158
161
|
"hook handler: command": false,
|
|
159
162
|
"hook handler: http": false,
|
|
160
163
|
"hook handler: mcp_tool": false,
|
|
161
164
|
"hook handler: prompt": false,
|
|
165
|
+
"monitors": false,
|
|
162
166
|
"output style": false,
|
|
167
|
+
"outputStyles": false,
|
|
168
|
+
"plugins": true,
|
|
169
|
+
"settings.json": true,
|
|
163
170
|
"slash command": false,
|
|
164
|
-
"sub-agent": true
|
|
171
|
+
"sub-agent": true,
|
|
172
|
+
"themes": true,
|
|
173
|
+
"userConfig": false,
|
|
174
|
+
"workflows": true
|
|
165
175
|
},
|
|
166
|
-
"version": "2.1.
|
|
176
|
+
"version": "2.1.235 (Claude Code)"
|
|
167
177
|
},
|
|
168
178
|
"cline": {
|
|
169
|
-
"docs_hash": "
|
|
179
|
+
"docs_hash": "bf058b01d03e0455",
|
|
170
180
|
"headings": [
|
|
171
181
|
"API Reference",
|
|
172
182
|
"Best Practices",
|
|
@@ -213,7 +223,7 @@
|
|
|
213
223
|
}
|
|
214
224
|
},
|
|
215
225
|
"codex-cli": {
|
|
216
|
-
"docs_hash": "
|
|
226
|
+
"docs_hash": "61aea7a06c8c6355",
|
|
217
227
|
"headings": [
|
|
218
228
|
"API",
|
|
219
229
|
"API Reference",
|
|
@@ -247,6 +257,7 @@
|
|
|
247
257
|
"Core concepts",
|
|
248
258
|
"Cost and throughput",
|
|
249
259
|
"Customization",
|
|
260
|
+
"Cyber safety",
|
|
250
261
|
"Deployment and model providers",
|
|
251
262
|
"Desktop app",
|
|
252
263
|
"Development workflows",
|
|
@@ -272,6 +283,7 @@
|
|
|
272
283
|
"Install Codex",
|
|
273
284
|
"Keep the coding loop in your terminal",
|
|
274
285
|
"Legacy APIs",
|
|
286
|
+
"Linux",
|
|
275
287
|
"Measurement",
|
|
276
288
|
"Media",
|
|
277
289
|
"Move work to Codex cloud",
|
|
@@ -293,7 +305,6 @@
|
|
|
293
305
|
"Review changes before they ship",
|
|
294
306
|
"Run Codex and sign in",
|
|
295
307
|
"SDKs and CLI",
|
|
296
|
-
"Safety",
|
|
297
308
|
"Safety and governance",
|
|
298
309
|
"Search and retrieval",
|
|
299
310
|
"Search for current context",
|
|
@@ -325,14 +336,18 @@
|
|
|
325
336
|
],
|
|
326
337
|
"markers": {
|
|
327
338
|
".agents/skills": false,
|
|
339
|
+
".codex-plugin/plugin.json": false,
|
|
328
340
|
".codex/agents": false,
|
|
341
|
+
"/plugins": true,
|
|
329
342
|
"AGENTS.md": true,
|
|
343
|
+
"PLUGIN_ROOT": false,
|
|
330
344
|
"config.toml": false,
|
|
331
345
|
"hook event: PermissionRequest": false,
|
|
332
346
|
"hook event: PostCompact": false,
|
|
333
347
|
"hook event: PostToolUse": false,
|
|
334
348
|
"hook event: PreCompact": false,
|
|
335
349
|
"hook event: PreToolUse": false,
|
|
350
|
+
"hook event: SessionEnd": false,
|
|
336
351
|
"hook event: SessionStart": false,
|
|
337
352
|
"hook event: Stop": false,
|
|
338
353
|
"hook event: SubagentStart": false,
|
|
@@ -342,14 +357,32 @@
|
|
|
342
357
|
"hook handler: command": false,
|
|
343
358
|
"hook handler: prompt": false,
|
|
344
359
|
"hooks": true,
|
|
360
|
+
"hooks/hooks.json": false,
|
|
345
361
|
"mcp_servers": false,
|
|
362
|
+
"plugin marketplace": false,
|
|
346
363
|
"sandbox": true
|
|
347
364
|
},
|
|
348
|
-
"version": "codex-cli 0.
|
|
365
|
+
"version": "codex-cli 0.147.0"
|
|
349
366
|
},
|
|
350
367
|
"cursor": {
|
|
351
|
-
"docs_hash": "
|
|
352
|
-
"headings": [
|
|
368
|
+
"docs_hash": "793ca4e25e676e17",
|
|
369
|
+
"headings": [
|
|
370
|
+
"Agent",
|
|
371
|
+
"CLI",
|
|
372
|
+
"Cloud Agents",
|
|
373
|
+
"Command Palette",
|
|
374
|
+
"Cursor Documentation",
|
|
375
|
+
"Customize",
|
|
376
|
+
"Get Started",
|
|
377
|
+
"Integrations",
|
|
378
|
+
"Models",
|
|
379
|
+
"More resources",
|
|
380
|
+
"Origin",
|
|
381
|
+
"SDK",
|
|
382
|
+
"Start here",
|
|
383
|
+
"Teams & Enterprise",
|
|
384
|
+
"What you can do with Cursor"
|
|
385
|
+
],
|
|
353
386
|
"markers": {
|
|
354
387
|
".cursor/rules": false,
|
|
355
388
|
"AGENTS.md": false,
|
|
@@ -364,7 +397,7 @@
|
|
|
364
397
|
}
|
|
365
398
|
},
|
|
366
399
|
"gemini-cli": {
|
|
367
|
-
"docs_hash": "
|
|
400
|
+
"docs_hash": "f343c5f7c60fefcf",
|
|
368
401
|
"headings": [
|
|
369
402
|
"Breadcrumbs",
|
|
370
403
|
"Directory actions",
|
|
@@ -381,6 +414,7 @@
|
|
|
381
414
|
"parent directory"
|
|
382
415
|
],
|
|
383
416
|
"markers": {
|
|
417
|
+
".gemini/agents/*.md": false,
|
|
384
418
|
"AfterAgent": false,
|
|
385
419
|
"AfterModel": false,
|
|
386
420
|
"AfterTool": false,
|
|
@@ -400,10 +434,11 @@
|
|
|
400
434
|
"mcpServers": false,
|
|
401
435
|
"settings.json": false,
|
|
402
436
|
"tools": true
|
|
403
|
-
}
|
|
437
|
+
},
|
|
438
|
+
"version": "0.55.1"
|
|
404
439
|
},
|
|
405
440
|
"github-copilot": {
|
|
406
|
-
"docs_hash": "
|
|
441
|
+
"docs_hash": "79d741f4e3273f8d",
|
|
407
442
|
"headings": [
|
|
408
443
|
"About Copilot auto model selection",
|
|
409
444
|
"About Copilot automations",
|
|
@@ -440,23 +475,34 @@
|
|
|
440
475
|
}
|
|
441
476
|
},
|
|
442
477
|
"google-antigravity": {
|
|
443
|
-
"docs_hash": "
|
|
478
|
+
"docs_hash": "8cbf9aaffb6b57bf",
|
|
444
479
|
"headings": [],
|
|
445
480
|
"markers": {
|
|
446
481
|
"AGENTS.md": false,
|
|
447
482
|
"GEMINI.md": false,
|
|
448
483
|
"MCP": false,
|
|
484
|
+
"PostInvocation": false,
|
|
485
|
+
"PostToolUse": false,
|
|
486
|
+
"PreInvocation": false,
|
|
487
|
+
"PreToolUse": false,
|
|
488
|
+
"Stop": false,
|
|
449
489
|
"agent manager": false,
|
|
450
490
|
"agent permissions": false,
|
|
451
491
|
"artifacts": false,
|
|
492
|
+
"global agents": false,
|
|
493
|
+
"global hooks": false,
|
|
494
|
+
"global skills": false,
|
|
452
495
|
"hooks": false,
|
|
496
|
+
"plugins": false,
|
|
453
497
|
"rules": false,
|
|
498
|
+
"serverUrl": false,
|
|
454
499
|
"skills": false,
|
|
500
|
+
"subagents": false,
|
|
455
501
|
"workflows": false
|
|
456
502
|
}
|
|
457
503
|
},
|
|
458
504
|
"opencode": {
|
|
459
|
-
"docs_hash": "
|
|
505
|
+
"docs_hash": "b112229db465d2e4",
|
|
460
506
|
"headings": [
|
|
461
507
|
"Add features",
|
|
462
508
|
"Ask questions",
|
|
@@ -479,6 +525,7 @@
|
|
|
479
525
|
"opencode.json": false,
|
|
480
526
|
"permission.skill": false,
|
|
481
527
|
"plugin event: command.executed": false,
|
|
528
|
+
"plugin event: message.part.updated": false,
|
|
482
529
|
"plugin event: message.updated": false,
|
|
483
530
|
"plugin event: permission.asked": false,
|
|
484
531
|
"plugin event: session.compacted": false,
|
|
@@ -491,6 +538,7 @@
|
|
|
491
538
|
"rules": true,
|
|
492
539
|
"skills (native .opencode/skills)": false,
|
|
493
540
|
"skills (via .claude/skills fallback)": false,
|
|
541
|
+
"skills array (local paths + HTTP URLs)": false,
|
|
494
542
|
"subagent mode": false
|
|
495
543
|
}
|
|
496
544
|
},
|
|
@@ -516,7 +564,7 @@
|
|
|
516
564
|
}
|
|
517
565
|
},
|
|
518
566
|
"windsurf": {
|
|
519
|
-
"docs_hash": "
|
|
567
|
+
"docs_hash": "fddce54b82ac479e",
|
|
520
568
|
"headings": [
|
|
521
569
|
"Accounts",
|
|
522
570
|
"Advanced",
|
package/bin/ai-toolkit.js
CHANGED
|
@@ -57,6 +57,8 @@ const SCRIPT_COMMANDS = {
|
|
|
57
57
|
'compile-slm': { script: 'compile_slm.py' },
|
|
58
58
|
'pack-codebase': { script: 'pack_codebase.py' },
|
|
59
59
|
'claude-app': { script: 'claude_app.py', toolkitCwd: true },
|
|
60
|
+
'codex-plugin': { script: 'codex_plugin.py', toolkitCwd: true },
|
|
61
|
+
'antigravity-plugin': { script: 'antigravity_plugin.py', toolkitCwd: true },
|
|
60
62
|
};
|
|
61
63
|
|
|
62
64
|
// ---------------------------------------------------------------------------
|
|
@@ -96,7 +98,8 @@ const COMMANDS = {
|
|
|
96
98
|
'copilot-instructions': 'Generate .github/copilot-instructions.md',
|
|
97
99
|
'gemini-md': 'Generate GEMINI.md for Gemini CLI',
|
|
98
100
|
'cline-rules': 'Generate .clinerules for Cline (legacy)',
|
|
99
|
-
'cline-dir-rules': 'Generate .clinerules/*.md for Cline
|
|
101
|
+
'cline-dir-rules': 'Generate .cline/rules/*.md plus .clinerules/*.md compatibility for Cline',
|
|
102
|
+
'cline-hooks': 'Generate .cline/hooks/<Event> plus .clinerules/hooks/<Event> compatibility',
|
|
100
103
|
'roo-modes': 'Generate .roomodes for Roo Code',
|
|
101
104
|
'roo-dir-rules': 'Generate .roo/rules/*.md shared rules for Roo Code',
|
|
102
105
|
'aider-conf': 'Generate .aider.conf.yml for Aider',
|
|
@@ -109,12 +112,15 @@ const COMMANDS = {
|
|
|
109
112
|
'opencode-md': 'Generate AGENTS.md for opencode',
|
|
110
113
|
'opencode-agents': 'Generate .opencode/agents/ for opencode (subagents)',
|
|
111
114
|
'opencode-commands': 'Generate .opencode/commands/ for opencode (slash commands)',
|
|
115
|
+
'opencode-skills': 'Generate .opencode/skills/ for opencode (Agent Skills)',
|
|
112
116
|
'opencode-plugin': 'Generate .opencode/plugins/ai-toolkit-hooks.js (lifecycle bridge)',
|
|
113
117
|
'opencode-json': 'Merge .mcp.json servers into opencode.json',
|
|
114
118
|
'agents-md': 'Regenerate AGENTS.md from agent definitions',
|
|
115
119
|
'compile-slm': 'Compile toolkit into a minimal SLM system prompt (--budget, --model-size, --dry-run)',
|
|
116
120
|
'pack-codebase': 'Pack the current codebase into a single AI-friendly markdown file (--budget, --include, --exclude, --dry-run)',
|
|
117
121
|
'claude-app': 'Export or verify the uploadable Claude Chat/Desktop/Cowork plugin',
|
|
122
|
+
'codex-plugin': 'Export or verify the native Codex CLI plugin package',
|
|
123
|
+
'antigravity-plugin': 'Export or verify the native Google Antigravity plugin package',
|
|
118
124
|
'llms-txt': 'Generate llms.txt and llms-full.txt',
|
|
119
125
|
'generate-all': 'Generate all platform configs at once (agents, cursor, windsurf, copilot, gemini, cline, roo, aider, augment, antigravity, codex, opencode, llms)',
|
|
120
126
|
help: 'Show this help message',
|
|
@@ -290,6 +296,17 @@ function showHelp() {
|
|
|
290
296
|
console.log(' export [--output FILE] [--no-custom-rules] [--verify]');
|
|
291
297
|
console.log(' Build a ZIP for Customize > Plugins and Cowork instructions');
|
|
292
298
|
console.log(' verify Run structural checks and the official Claude plugin validator');
|
|
299
|
+
console.log('\nOptions for codex-plugin:');
|
|
300
|
+
console.log(' export [--output FILE] Build a deterministic native Codex plugin ZIP');
|
|
301
|
+
console.log(' verify Validate structure, schema, paths, hooks, and self-containment');
|
|
302
|
+
console.log(' Install/use through a local marketplace and /plugins in Codex CLI');
|
|
303
|
+
console.log(' Codex IDE does not support plugins');
|
|
304
|
+
console.log('\nOptions for antigravity-plugin:');
|
|
305
|
+
console.log(' export [output|--output FILE] Build a deterministic Antigravity plugin ZIP');
|
|
306
|
+
console.log(' verify <archive-or-dir> Validate schema, paths, hooks, and self-containment');
|
|
307
|
+
console.log(' Install under .agents/plugins/<name>/ (workspace),');
|
|
308
|
+
console.log(' ~/.gemini/antigravity-cli/plugins/<name>/ (CLI), or');
|
|
309
|
+
console.log(' ~/.gemini/config/plugins/<name>/ (IDE/shared product)');
|
|
293
310
|
console.log('\nOptions for mcp:');
|
|
294
311
|
console.log(' list List available MCP templates');
|
|
295
312
|
console.log(' editors List editors with native MCP config adapters');
|
|
@@ -502,20 +519,25 @@ function handleGenerateAll(_args) {
|
|
|
502
519
|
for (const [name, gen] of Object.entries(GENERATORS)) {
|
|
503
520
|
// Skip codex-md and opencode-md — they inject into AGENTS.md via markers
|
|
504
521
|
// (used by install --local --editors codex|opencode), not as standalone files.
|
|
505
|
-
//
|
|
506
|
-
|
|
522
|
+
// The native Cline generator below emits both current and compatibility rules;
|
|
523
|
+
// generating the retired single-file surface first would block that directory.
|
|
524
|
+
if (name === 'codex-md' || name === 'opencode-md' || name === 'cline-rules') continue;
|
|
507
525
|
writeGeneratorOutput(gen);
|
|
508
526
|
}
|
|
509
527
|
// Directory-based generators (multi-file output)
|
|
510
528
|
run(scriptPath('generate_antigravity.py'), [CWD]);
|
|
529
|
+
run(scriptPath('generate_antigravity_hooks.py'), [CWD]);
|
|
530
|
+
run(scriptPath('generate_antigravity_agents.py'), [CWD]);
|
|
511
531
|
run(scriptPath('generate_cursor_mdc.py'), [CWD]);
|
|
512
532
|
run(scriptPath('generate_windsurf_rules.py'), [CWD]);
|
|
513
533
|
run(scriptPath('generate_cline_rules.py'), [CWD]);
|
|
534
|
+
run(scriptPath('generate_cline_hooks.py'), [CWD]);
|
|
514
535
|
run(scriptPath('generate_roo_rules.py'), [CWD]);
|
|
515
536
|
run(scriptPath('generate_augment_rules.py'), [CWD]);
|
|
516
537
|
run(scriptPath('generate_codex_hooks.py'), [CWD]);
|
|
517
538
|
run(scriptPath('generate_opencode_agents.py'), [CWD]);
|
|
518
539
|
run(scriptPath('generate_opencode_commands.py'), [CWD]);
|
|
540
|
+
run(scriptPath('generate_opencode_skills.py'), [CWD]);
|
|
519
541
|
run(scriptPath('generate_opencode_plugin.py'), [CWD]);
|
|
520
542
|
run(scriptPath('generate_opencode_json.py'), [CWD]);
|
|
521
543
|
// Single-file generators
|
|
@@ -649,12 +671,14 @@ const SPECIAL_HANDLERS = {
|
|
|
649
671
|
'cursor-mdc': (_args) => run(scriptPath('generate_cursor_mdc.py'), [CWD]),
|
|
650
672
|
'windsurf-dir-rules': (_args) => run(scriptPath('generate_windsurf_rules.py'), [CWD]),
|
|
651
673
|
'cline-dir-rules': (_args) => run(scriptPath('generate_cline_rules.py'), [CWD]),
|
|
674
|
+
'cline-hooks': (_args) => run(scriptPath('generate_cline_hooks.py'), [CWD]),
|
|
652
675
|
'roo-dir-rules': (_args) => run(scriptPath('generate_roo_rules.py'), [CWD]),
|
|
653
676
|
'conventions-md': (_args) => { const out = runGenerator('generate_conventions.py'); fs.writeFileSync(path.join(CWD, 'CONVENTIONS.md'), out); console.log('Generated: CONVENTIONS.md'); },
|
|
654
677
|
'augment-dir-rules': (_args) => run(scriptPath('generate_augment_rules.py'), [CWD]),
|
|
655
678
|
'codex-hooks': (_args) => run(scriptPath('generate_codex_hooks.py'), [CWD]),
|
|
656
679
|
'opencode-agents': (_args) => run(scriptPath('generate_opencode_agents.py'), [CWD]),
|
|
657
680
|
'opencode-commands': (_args) => run(scriptPath('generate_opencode_commands.py'), [CWD]),
|
|
681
|
+
'opencode-skills': (_args) => run(scriptPath('generate_opencode_skills.py'), [CWD]),
|
|
658
682
|
'opencode-plugin': (_args) => run(scriptPath('generate_opencode_plugin.py'), [CWD]),
|
|
659
683
|
'opencode-json': (_args) => run(scriptPath('generate_opencode_json.py'), [CWD]),
|
|
660
684
|
'generate-all': handleGenerateAll,
|
|
@@ -3,9 +3,9 @@ title: "AI Toolkit - Architecture Overview"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [architecture, overview, design, structure]
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.8.0"
|
|
7
7
|
created: "2026-03-23"
|
|
8
|
-
last_updated: "2026-08-
|
|
8
|
+
last_updated: "2026-08-19"
|
|
9
9
|
description: "Architecture of ai-toolkit: directory layout, Claude app export, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -61,7 +61,10 @@ ai-toolkit/
|
|
|
61
61
|
generate_copilot.py # Generates Copilot instructions, agents, and portable skills
|
|
62
62
|
generate_copilot_hooks.py # Generates native Copilot hooks + self-contained runtime
|
|
63
63
|
generate_gemini.py # Generates GEMINI.md (sources _common.py)
|
|
64
|
-
|
|
64
|
+
generate_gemini_agents.py # Generates native .gemini/agents/*.md definitions
|
|
65
|
+
generate_cline.py # Generates legacy .clinerules (sources _common.py)
|
|
66
|
+
generate_cline_rules.py # Dual-emits .cline/rules + .clinerules compatibility
|
|
67
|
+
generate_cline_hooks.py # Dual-emits .cline/hooks + .clinerules/hooks
|
|
65
68
|
generate_roo_modes.py # Generates .roomodes
|
|
66
69
|
generate_aider_conf.py # Generates .aider.conf.yml
|
|
67
70
|
generate_llms_txt.py # Generates llms.txt
|
|
@@ -123,7 +126,11 @@ also emits `.github/instructions`, `.github/prompts`, and native
|
|
|
123
126
|
`.github/hooks`. The user target writes the supported personal surfaces below
|
|
124
127
|
`$COPILOT_HOME` (default `~/.copilot`) and does not generate prompt files there.
|
|
125
128
|
Full-profile installs also emit native skill pointer catalogues for Cursor,
|
|
126
|
-
Windsurf, and Cline.
|
|
129
|
+
Windsurf, and Cline. Cline rules dual-emit to `.cline/rules/` and `.clinerules/`;
|
|
130
|
+
profiles `standard`, `strict`, and `full` add executable hooks under both
|
|
131
|
+
`.cline/hooks/<Event>` and `.clinerules/hooks/<Event>`. Gemini receives
|
|
132
|
+
commands, a skill pointer, and native
|
|
133
|
+
`.gemini/agents/*.md` definitions. Codex local install generates `AGENTS.md`,
|
|
127
134
|
`.agents/skills/*`, `.codex/agents/*.toml`, `.codex/hooks.json`, and
|
|
128
135
|
self-contained `.codex/hooks/*`. Global Codex install writes its user-owned
|
|
129
136
|
surfaces below `$CODEX_HOME` (default `~/.codex`) while user skills remain in
|
|
@@ -162,7 +169,8 @@ project-scoped native MCP files: `.cursor/mcp.json`, `.github/mcp.json`,
|
|
|
162
169
|
| `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
|
|
163
170
|
| `gemini-md` | `./` | Generates `GEMINI.md` |
|
|
164
171
|
| `cline-rules` | `./` | Generates `.clinerules` (legacy) |
|
|
165
|
-
| `cline-dir-rules` | `./` | Generates `.clinerules/*.md` |
|
|
172
|
+
| `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` plus `.clinerules/*.md` compatibility |
|
|
173
|
+
| `cline-hooks` | `./` | Generates eight executable files under `.cline/hooks/` and `.clinerules/hooks/` |
|
|
166
174
|
| `roo-modes` | `./` | Generates `.roomodes` |
|
|
167
175
|
| `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
|
|
168
176
|
| `aider-conf` | `./` | Generates `.aider.conf.yml` |
|