@softspark/ai-toolkit 4.11.0 → 4.12.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/AGENTS.md +0 -135
- package/CHANGELOG.md +24 -0
- package/README.md +9 -9
- package/app/.claude-plugin/plugin.json +1 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +11 -11
- package/kb/reference/codex-cli-compatibility.md +15 -10
- package/kb/reference/global-install-model.md +13 -8
- package/kb/reference/supported-tools-registry.md +32 -23
- package/llms-full.txt +60 -41
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/ecosystem_tools.json +12 -4
- package/scripts/generate_antigravity.py +15 -0
- package/scripts/generate_codex_hooks.py +8 -5
- package/scripts/generate_copilot.py +10 -3
- package/scripts/inject_hook_cli.py +16 -2
- package/scripts/install.py +2 -2
- package/scripts/install_steps/ai_tools.py +138 -8
- package/scripts/install_steps/install_state.py +9 -2
- package/scripts/plugin.py +31 -8
package/llms-full.txt
CHANGED
|
@@ -7097,8 +7097,7 @@ model.
|
|
|
7097
7097
|
|
|
7098
7098
|
`ai-toolkit install --local --editors codex` generates:
|
|
7099
7099
|
|
|
7100
|
-
- `AGENTS.md`
|
|
7101
|
-
- `.agents/rules/*.md`
|
|
7100
|
+
- `AGENTS.md` (project root; universal coding rules inlined — Codex reads instructions only from AGENTS.md, not `.agents/rules/`)
|
|
7102
7101
|
- `.agents/skills/*`
|
|
7103
7102
|
- `.codex/hooks.json`
|
|
7104
7103
|
|
|
@@ -7106,8 +7105,7 @@ model.
|
|
|
7106
7105
|
|
|
7107
7106
|
`ai-toolkit plugin install --editor codex <pack>` bootstraps or reuses:
|
|
7108
7107
|
|
|
7109
|
-
-
|
|
7110
|
-
- `~/.agents/rules/*.md`
|
|
7108
|
+
- `~/.codex/AGENTS.md` (the documented global instruction file; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
7111
7109
|
- `~/.agents/skills/*`
|
|
7112
7110
|
- `~/.codex/hooks.json`
|
|
7113
7111
|
|
|
@@ -7161,20 +7159,27 @@ The adapter also covers skills that previously depended only on Claude's
|
|
|
7161
7159
|
|
|
7162
7160
|
## Hook Compatibility
|
|
7163
7161
|
|
|
7164
|
-
Codex does not expose the full Claude hook event surface.
|
|
7165
|
-
|
|
7162
|
+
Codex does not expose the full Claude hook event surface. Codex's
|
|
7163
|
+
`HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
|
|
7164
|
+
them:
|
|
7166
7165
|
|
|
7167
7166
|
- `SessionStart`
|
|
7168
7167
|
- `PreToolUse`
|
|
7169
7168
|
- `PostToolUse`
|
|
7169
|
+
- `PermissionRequest`
|
|
7170
7170
|
- `UserPromptSubmit`
|
|
7171
|
+
- `SubagentStart`
|
|
7172
|
+
- `SubagentStop`
|
|
7173
|
+
- `PreCompact`
|
|
7171
7174
|
- `Stop`
|
|
7172
7175
|
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
`Notification`
|
|
7176
|
+
`PostCompact` is the one enum event left unwired (its only hook was the removed
|
|
7177
|
+
environment-snapshot probe). Claude-only events such as `TaskCompleted`,
|
|
7178
|
+
`TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
|
|
7179
|
+
are not available in `.codex/hooks.json`. Handler types: only `command` runs;
|
|
7180
|
+
`prompt` and `agent` are parsed by Codex but not yet executed.
|
|
7176
7181
|
|
|
7177
|
-
`inject-hook` automatically propagates Codex-compatible events to
|
|
7182
|
+
`inject-hook` automatically propagates these 9 Codex-compatible events to
|
|
7178
7183
|
`~/.codex/hooks.json` (global layer). Non-Codex events are silently skipped.
|
|
7179
7184
|
`remove-hook` cleans both Claude and Codex targets.
|
|
7180
7185
|
|
|
@@ -8714,16 +8719,22 @@ The `ai-toolkit-*` prefix in `~/.claude/rules/` is reserved for installer-manage
|
|
|
8714
8719
|
`ai-toolkit install --editors <name>` can write global files only for editors
|
|
8715
8720
|
with documented, file-based config surfaces:
|
|
8716
8721
|
|
|
8717
|
-
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
8718
|
-
- `gemini`: `~/.gemini/GEMINI.md`
|
|
8719
|
-
- `augment`: `~/.augment/rules/ai-toolkit.md`
|
|
8722
|
+
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md` plus `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is not imported by `read_config_from.windsurf`)
|
|
8723
|
+
- `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
|
|
8724
|
+
- `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
|
|
8720
8725
|
- `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
8721
|
-
- `roo`: `~/.roo/rules/ai-toolkit-*.md`
|
|
8726
|
+
- `roo`: `~/.roo/rules/ai-toolkit-*.md` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery; skipped when `codex` is also selected, which fills the same dir)
|
|
8722
8727
|
- `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
|
|
8723
|
-
- `codex`:
|
|
8728
|
+
- `codex`: `~/.codex/AGENTS.md` (coding rules inlined; the documented global instruction file — NOT `~/AGENTS.md`, which Codex never loads as global instructions), `~/.agents/skills/*`, `~/.codex/hooks.json`
|
|
8724
8729
|
- `opencode`: `~/.config/opencode/*`
|
|
8725
8730
|
|
|
8726
|
-
Cursor, GitHub Copilot, and Google Antigravity
|
|
8731
|
+
Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
|
|
8732
|
+
scoped to whatever documented HOME file surface each exposes:
|
|
8733
|
+
|
|
8734
|
+
- `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
|
|
8735
|
+
- `copilot`: `~/.copilot/copilot-instructions.md` plus `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI; VS Code and GitHub.com still use repo `.github/` files, which the local install emits).
|
|
8736
|
+
- `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
|
|
8737
|
+
|
|
8727
8738
|
Their global MCP support, where available, is handled by `ai-toolkit mcp
|
|
8728
8739
|
install`, not by the rule installer.
|
|
8729
8740
|
|
|
@@ -8782,8 +8793,7 @@ Codex wrappers so the project still receives the full skill catalog.
|
|
|
8782
8793
|
|
|
8783
8794
|
`ai-toolkit plugin install --editor codex <pack>` additionally targets:
|
|
8784
8795
|
|
|
8785
|
-
-
|
|
8786
|
-
- `~/.agents/rules/*.md`
|
|
8796
|
+
- `~/.codex/AGENTS.md` (base instructions; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
8787
8797
|
- `~/.agents/skills/*`
|
|
8788
8798
|
- `~/.codex/hooks.json`
|
|
8789
8799
|
|
|
@@ -11981,9 +11991,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11981
11991
|
| Docs | https://cursor.com/docs |
|
|
11982
11992
|
| Changelog | https://cursor.com/changelog |
|
|
11983
11993
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
11984
|
-
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md
|
|
11994
|
+
| Config paths | `.cursorrules` (**legacy** — no longer in cursor.com/docs/rules; deprecated ~0.43–0.45 in favor of `.cursor/rules/*.mdc`, still read, no removal deadline; we keep emitting for back-compat), `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/hooks.json`, `~/.cursor/hooks.json` (user-level hooks scope; enterprise system paths + dashboard team hooks not adopted, class C), `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md` |
|
|
11985
11995
|
| Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/`; subagents: `.claude/agents/`, `~/.claude/agents/`, `.codex/agents/`, `~/.codex/agents/` (`.cursor/` wins on name conflicts) |
|
|
11986
|
-
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
|
|
11996
|
+
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full local **and** global `~/.cursor/hooks.json`), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
|
|
11997
|
+
| Global install | Cursor is in `GLOBAL_CAPABLE_EDITORS` for **hooks only**: `ai-toolkit install --editors cursor` writes `~/.cursor/hooks.json` (profile ≥ standard). RULES stay project-local (Cursor's only global rules surface is the Settings UI). |
|
|
11987
11998
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
11988
11999
|
|
|
11989
12000
|
### Windsurf
|
|
@@ -11995,8 +12006,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11995
12006
|
| Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
|
|
11996
12007
|
| Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` paths still read as fallback (new canonical: `.devin/`) |
|
|
11997
12008
|
| Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
|
|
11998
|
-
| Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/`. **Hooks: Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks directly (`read_config_from.claude` default on), so globally-installed toolkit hooks work under Devin with no project-local file.** |
|
|
11999
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped,
|
|
12009
|
+
| Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/`. **Hooks: Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks directly (`read_config_from.claude` default on), so globally-installed toolkit hooks work under Devin with no project-local file.** `read_config_from` now has **7 keys** (all default true): `agents_standard`, `cursor`, `windsurf`, `claude`, `opencode`, `vscode`, `zed` — so Devin CLI also imports MCP from `~/.config/opencode/opencode.json` (our opencode global install), `~/.config/zed/settings.json`, and `.vscode/mcp.json`. |
|
|
12010
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, drop in the first release after 2026-07-01**), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`, Claude-format Devin CLI hooks), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
|
|
12011
|
+
| Global install | `ai-toolkit install --editors windsurf` writes `~/.codeium/windsurf/memories/global_rules.md` + skills pointer **and** `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is absent from `read_config_from.windsurf`, so editor-only Devin CLI installs need this). |
|
|
12000
12012
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
|
|
12001
12013
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
12002
12014
|
| Hooks migration | **Done.** Cascade `.windsurf/hooks.json` (`agent_action_name`/`tool_info` format) dies 2026-07-01 with no Devin fallback. `generate_devin_hooks.py` emits `.devin/hooks.v1.json` in the Claude-compatible format Devin CLI uses: Claude-style events (PreToolUse/PostToolUse/UserPromptSubmit/Stop/SessionStart), matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`), blocking via flat `{"decision":"block","reason":...}` + exit 2 (no `AI_TOOLKIT_HOOK_FORMAT=json` — Devin does not use Claude's `hookSpecificOutput` envelope). `post_setup_worktree`→`SessionStart`; `post_cascade_response`→`Stop` (no response text on stdin). Both hook generators run at profile=full during the transition; drop `generate_windsurf_hooks.py` in the first release after 2026-07-01. |
|
|
@@ -12009,9 +12021,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12009
12021
|
| ID | `github-copilot` |
|
|
12010
12022
|
| Docs | https://docs.github.com/en/copilot |
|
|
12011
12023
|
| Release notes | https://github.blog/changelog/label/copilot/ |
|
|
12012
|
-
| Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
|
|
12013
|
-
|
|
|
12014
|
-
|
|
|
12024
|
+
| Config paths | **Repo (`.github/`):** `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md`, `.github/hooks/*.json`. **Copilot CLI user-level (`~/.copilot/`, `COPILOT_HOME` override):** `~/.copilot/copilot-instructions.md`, `~/.copilot/instructions/*.instructions.md`, `~/.copilot/agents/*.agent.md`, `~/.copilot/skills/<name>/SKILL.md`, `~/.copilot/hooks/`, `~/.copilot/settings.json`, `~/.copilot/mcp-config.json` |
|
|
12025
|
+
| Compat read paths | skills: Copilot CLI reads personal `~/.copilot/skills` and `~/.agents/skills` (the latter populated by our codex/roo global installs) and project `.github/skills`, `.claude/skills`, `.agents/skills` — so toolkit skills are already Copilot-visible. (Note: since CLI 1.0.61 a session using `COPILOT_HOME`/`--config-dir` stops reading `~/.agents/skills`.) |
|
|
12026
|
+
| Our generators | `scripts/generate_copilot.py` (repo `.github/` and, with `config_root=~/.copilot`, global CLI instructions) |
|
|
12027
|
+
| Global install | Copilot is in `GLOBAL_CAPABLE_EDITORS`: `ai-toolkit install --editors copilot` writes `~/.copilot/copilot-instructions.md` + `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI). VS Code Copilot uses profile-level locations and GitHub.com uses repo files, so the project `.github/` emission stays. |
|
|
12028
|
+
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP, skills, CLI hooks, `~/.copilot/` |
|
|
12015
12029
|
| Tier notes | Custom agents (`.github/agents/*.agent.md`) and repo-level MCP config are Pro/Pro+/Business/Enterprise only and intentionally not integrated (class C per ecosystem-sync SOP). Copilot code review reads the nearest `AGENTS.md` automatically since the 2026-06-18 GA (all tiers); `ai-toolkit install --local --editors copilot` injects a `TOOLKIT:copilot-agents` section generated from `generate_agents_md.py` without clobbering Codex/opencode sections in the same file. The 4000-char cap on `copilot-instructions.md` / `*.instructions.md` was also removed (2026-06-12). |
|
|
12016
12030
|
|
|
12017
12031
|
### Gemini CLI
|
|
@@ -12023,9 +12037,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12023
12037
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
12024
12038
|
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.gemini/skills/*/SKILL.md`, `~/.agents/skills/*/SKILL.md` (the `.agents/skills` alias wins over `.gemini/skills` within the same tier), `.gemini/extensions/gemini-extension.json` |
|
|
12025
12039
|
| Our generators | `scripts/generate_gemini.py`, `scripts/generate_gemini_hooks.py` (profile>=standard), `scripts/generate_gemini_commands.py` (profile=full), `scripts/generate_gemini_skills.py` (profile=full) |
|
|
12026
|
-
|
|
|
12040
|
+
| Global install | `ai-toolkit install --editors gemini` writes `~/.gemini/GEMINI.md` **plus** hooks at `~/.gemini/settings.json` (profile ≥ standard) and `~/.gemini/commands/` + `~/.gemini/skills/` pointer (profile=full) — all documented user-tier surfaces. A global-only Gemini user previously got zero hooks. |
|
|
12041
|
+
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `.gemini/agents/*.md` subagents, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
|
|
12027
12042
|
| Version probe | `gemini --version` |
|
|
12028
|
-
| Latest upstream | v0.
|
|
12043
|
+
| Latest upstream | v0.49.0 (2026-06-25; the stable line skipped v0.48.0 — its preview content was promoted into v0.49.0). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.49.0 completed the `coreTools` → `tools.core` migration (auto-migrated; `tools.exclude` deprecated) — both are tool-allowlist keys we do not emit, so no generator change. Watch item: `.gemini/agents/*.md` / `~/.gemini/agents/*.md` native subagents are documented but we do not yet emit them (candidate `generate_gemini_agents.py`). |
|
|
12029
12044
|
|
|
12030
12045
|
### Cline
|
|
12031
12046
|
|
|
@@ -12046,12 +12061,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12046
12061
|
| Field | Value |
|
|
12047
12062
|
|-------|-------|
|
|
12048
12063
|
| ID | `roo-code` |
|
|
12049
|
-
| Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
|
|
12050
|
-
| Release notes | https://github.com/
|
|
12051
|
-
| Config paths | `.roomodes
|
|
12064
|
+
| Docs | https://roocodeinc.github.io/Roo-Code (frozen; docs.roocode.com 301-redirects here). Successor docs: https://docs.zoocode.dev |
|
|
12065
|
+
| Release notes | https://github.com/Zoo-Code-Org/Zoo-Code/releases (authoritative). **Original RooCodeInc/Roo-Code repo ARCHIVED/read-only since 2026-05-15, frozen at v3.54.0 — its feed is dead.** Successor project by former Roo contributors: **Zoo-Code-Org/Zoo-Code** (marketplace `ZooCodeOrganization.zoo-code`), active through v3.64.0 (2026-06-26). |
|
|
12066
|
+
| Config paths | `.roomodes` (JSON still fully supported), `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/skills/*/SKILL.md`, `~/.roo/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.agents/skills/*`, `.roo/commands/*.md`, `~/.roo/commands/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `mcp_settings.json` + global custom modes live in VS Code globalStorage (`<globalStorage>/rooveterinaryinc.roo-cline/settings/custom_modes.yaml`), NOT `~/.roo/custom_modes.yaml` |
|
|
12052
12067
|
| Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
|
|
12053
|
-
| Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups
|
|
12054
|
-
| Notes | `.roomodes`
|
|
12068
|
+
| Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups`, skills, slash commands |
|
|
12069
|
+
| Notes | Config compat with the Zoo fork is total, so both generators stay valid unchanged. `.roomodes` includes `description`/`whenToUse` for every mode (since 2026-04); JSON is still accepted (YAML is upstream-preferred but not emitted). Global install writes `~/.roo/rules/` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery, shipped v3.46.0/v3.47.2; skipped when `codex` is also selected). `~/.roo/commands/` (global slash commands, since v3.25) is a documented surface not yet generated. |
|
|
12055
12070
|
|
|
12056
12071
|
### Aider
|
|
12057
12072
|
|
|
@@ -12076,7 +12091,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12076
12091
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
12077
12092
|
| Config paths | `.augment/rules/*.md`, `.augment-guidelines` (workspace root, legacy single-file), `~/.augment/user-guidelines.md`, `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `.augment/settings.json`, `.augment/settings.local.json`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json`. Auggie CLI also discovers skills/commands from `.claude/` and `.agents/` (`.augment/` wins on precedence). |
|
|
12078
12093
|
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
|
|
12079
|
-
|
|
|
12094
|
+
| Global install | `ai-toolkit install --editors augment` writes `~/.augment/rules/ai-toolkit.md` **plus** (profile=full) `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` — all documented user-tier surfaces. A global-only Augment user previously got no hooks/agents/commands. Skills need no global emission: Auggie natively reads `~/.claude/skills/`. |
|
|
12095
|
+
| Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, `Notification`, ACP Mode, plugins/marketplace |
|
|
12096
|
+
| Latest / notes | Auggie CLI v0.31.0. Since v0.30.0 (2026-06-25) `PreToolUse`/`PostToolUse` hooks fire during sub-agent sessions, so our wired hook groups now run concurrently from parallel sub-agents — hook payload identifier is `conversation_id` (not `session_id`), a concurrency note to track. `Notification` is enum-only (doctor flipped its marker) — no dedicated handler documented, so class C (do NOT wire). Plugins/marketplace (`auggie plugin marketplace add`, `.augment-plugin`/`.claude-plugin` layouts, `enabledPlugins`/`autoUpdateMarketplaces` in settings) documented but not yet a shipping target. |
|
|
12080
12097
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
12081
12098
|
|
|
12082
12099
|
### Google Antigravity
|
|
@@ -12087,9 +12104,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12087
12104
|
| Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
|
|
12088
12105
|
| Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
|
|
12089
12106
|
| Config paths | `.agents/rules/*.md`, `.agents/workflows/*.md` (plural is the Antigravity 2.0 default; singular `.agent/rules`, `.agent/workflows` still read as fallback), `.agent/skills/*/SKILL.md` (IDE), `.agents/skills/*/SKILL.md` (CLI), `.agents/hooks.json` (CLI hooks), `.agents/mcp_config.json` (CLI MCP), `AGENTS.md`, `GEMINI.md` |
|
|
12090
|
-
|
|
|
12091
|
-
|
|
|
12092
|
-
|
|
|
12107
|
+
| Global config paths | Skills: `~/.gemini/config/skills/*/SKILL.md` (shared across all Antigravity products) and `~/.gemini/antigravity-cli/skills/*/SKILL.md` (CLI-private) — both documented in the official Skills codelab. MCP: `~/.gemini/config/mcp_config.json` (shared global, resolved by CLI v1.0.14; the `~/.gemini/antigravity-cli/mcp_config.json` path is legacy). Rules: `~/.gemini/GEMINI.md` (dual-owner with Gemini CLI — Antigravity's IDE "+ Global" writes the same file; gemini-cli#16058 closed "not planned"). Hooks: `~/.gemini/config/hooks.json` (shared, since CLI v1.0.8). |
|
|
12108
|
+
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`; `generate_global()` writes the pointer to the two HOME skill dirs) |
|
|
12109
|
+
| Global install | `ai-toolkit install --editors antigravity` writes the skill pointer to `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Rules stay project-local (no mergeable global rules file beyond the Gemini-CLI-shared `~/.gemini/GEMINI.md`, covered by `--editors gemini`). |
|
|
12110
|
+
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions, global skills, `~/.gemini/config/mcp_config.json` |
|
|
12111
|
+
| CLI notes | Antigravity CLI (GA 2026-05-19; latest CLI v1.0.14 2026-06-30, IDE 2.2.1). Hooks are IDE + CLI (`.agents/hooks.json` workspace, `~/.gemini/config/hooks.json` global; event set `PreToolUse`/`PostToolUse`/`PreInvocation`/`PostInvocation`/`Stop` — `PreInvocation`/`PostInvocation` have no Claude equivalent; shell tool is `run_command` with args at `.toolCall.args.CommandLine`). MCP: `url` is natively supported since CLI v1.0.5 (registry's old "url/httpUrl fail silently" note is stale); `serverUrl` works everywhere incl. IDE. **MCP adapter + a `generate_antigravity_hooks.py` are not yet shipped** (backlog). |
|
|
12093
12112
|
| Doc access note | Docs are JS-SPA — verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. The sitemap.xml is stale (omits the `cli-*` doc pages), so sitemap-based monitoring misses CLI doc additions. |
|
|
12094
12113
|
|
|
12095
12114
|
### Codex CLI
|
|
@@ -12097,13 +12116,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12097
12116
|
| Field | Value |
|
|
12098
12117
|
|-------|-------|
|
|
12099
12118
|
| ID | `codex-cli` |
|
|
12100
|
-
| Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.142.
|
|
12119
|
+
| Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`, `/codex/guides/agents-md`; latest stable codex-cli 0.142.5, 2026-07-01; 0.143.0 alpha) |
|
|
12101
12120
|
| Release notes | https://github.com/openai/codex/releases |
|
|
12102
|
-
| Config paths | `AGENTS.md
|
|
12121
|
+
| Config paths | **Instructions:** project `AGENTS.md` (root→cwd chain, closest wins) and global `~/.codex/AGENTS.md` (`$CODEX_HOME/AGENTS.md`; `~/.codex/AGENTS.override.md` takes precedence). NOTE: `~/AGENTS.md` is NOT a global-instruction surface — Codex only reads it if a session's cwd is exactly `$HOME`. Plus `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml`. |
|
|
12103
12122
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
12104
|
-
| Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. |
|
|
12105
|
-
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
|
|
12106
|
-
| Tracked handler types | `command` (emitted by default
|
|
12123
|
+
| Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. Global install writes `~/.codex/AGENTS.md` (not `~/AGENTS.md`, which Codex never loads globally); plugin-pack rules are marker-injected into the same file. `project_doc_max_bytes` default is 32 KiB and Codex silently truncates AGENTS.md past that (see codex-cli-compatibility.md). |
|
|
12124
|
+
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts (via `generate_codex_hooks.py` AND `inject-hook` propagation, kept in sync), mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
|
|
12125
|
+
| Tracked handler types | `command` (emitted by default; the only handler Codex actually runs). `prompt` and `agent` are parsed by Codex but NOT yet executed, so hand-authored handlers of those types are inert. |
|
|
12107
12126
|
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
|
|
12108
12127
|
| Version probe | `codex --version` |
|
|
12109
12128
|
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.0",
|
|
4
4
|
"description": "AI coding toolkit: 108 skills, 44 agents, 12-editor write-through (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex, opencode), machine-enforced safety constitution, SARIF audit, signed npm provenance.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -313,18 +313,23 @@
|
|
|
313
313
|
"kind": "editor",
|
|
314
314
|
"urls": {
|
|
315
315
|
"docs": "https://roocodeinc.github.io/Roo-Code",
|
|
316
|
-
"release_notes": "https://github.com/
|
|
316
|
+
"release_notes": "https://github.com/Zoo-Code-Org/Zoo-Code/releases",
|
|
317
317
|
"changelog": null
|
|
318
318
|
},
|
|
319
|
-
"status": "
|
|
320
|
-
"status_note": "Upstream RooCodeInc/Roo-Code
|
|
319
|
+
"status": "succeeded-by-fork",
|
|
320
|
+
"status_note": "Upstream RooCodeInc/Roo-Code archived/read-only 2026-05-15, frozen at v3.54.0; its releases feed is dead. Successor project by former Roo contributors: Zoo-Code-Org/Zoo-Code (marketplace ZooCodeOrganization.zoo-code, docs.zoocode.dev), active through v3.64.0 (2026-06-26) continuing Roo's version line. Config compat is total: same .roomodes (JSON 'still fully supported and won't be deprecated'), .roo/rules/, .roo/rules-{slug}/, .roo/skills/, .roo/commands/, ~/.roo/* paths — both generators remain valid. Watch Zoo GitHub releases as the authoritative feed (docs.zoocode.dev/update-notes is stale at v3.50.0). Skills (~/.roo/skills, ~/.agents/skills) shipped in v3.46.0/v3.47.2; ai-toolkit now installs them globally via ~/.agents/skills. Roo team pivoted to roomote.dev and recommended Cline.",
|
|
321
321
|
"config_paths": [
|
|
322
322
|
".roomodes",
|
|
323
323
|
".roo/rules/*.md",
|
|
324
324
|
".roo/rules-{slug}/*.md",
|
|
325
|
+
".roo/skills/*/SKILL.md",
|
|
326
|
+
"~/.roo/skills/*/SKILL.md",
|
|
327
|
+
".agents/skills/*/SKILL.md",
|
|
328
|
+
"~/.agents/skills/*",
|
|
329
|
+
".roo/commands/*.md",
|
|
330
|
+
"~/.roo/commands/*.md",
|
|
325
331
|
".roo/mcp.json",
|
|
326
332
|
"~/.roo/rules/",
|
|
327
|
-
"~/.roo/custom_modes.yaml",
|
|
328
333
|
"mcp_settings.json"
|
|
329
334
|
],
|
|
330
335
|
"our_generators": [
|
|
@@ -489,8 +494,11 @@
|
|
|
489
494
|
},
|
|
490
495
|
"config_paths": [
|
|
491
496
|
"AGENTS.md",
|
|
497
|
+
"~/.codex/AGENTS.md",
|
|
498
|
+
"~/.codex/AGENTS.override.md",
|
|
492
499
|
".agents/skills/*/SKILL.md",
|
|
493
500
|
".codex/hooks.json",
|
|
501
|
+
"~/.codex/hooks.json",
|
|
494
502
|
".codex/config.toml",
|
|
495
503
|
"~/.codex/config.toml"
|
|
496
504
|
],
|
|
@@ -99,6 +99,21 @@ def _write_skill_pointer(target_dir: Path) -> None:
|
|
|
99
99
|
# Main
|
|
100
100
|
# ---------------------------------------------------------------------------
|
|
101
101
|
|
|
102
|
+
def generate_global(target_dir: Path) -> None:
|
|
103
|
+
"""Write the skill pointer to Antigravity's documented HOME-scoped skill
|
|
104
|
+
dirs. ``~/.gemini/config/skills/`` is shared across all Antigravity products
|
|
105
|
+
(IDE, editor, CLI); ``~/.gemini/antigravity-cli/skills/`` is CLI-private.
|
|
106
|
+
Antigravity RULES have no documented global file surface, so only the skill
|
|
107
|
+
pointer is emitted globally (rules stay project-local).
|
|
108
|
+
"""
|
|
109
|
+
content = _pointer_skill_md()
|
|
110
|
+
for rel in (".gemini/config/skills", ".gemini/antigravity-cli/skills"):
|
|
111
|
+
skill_dir = target_dir / rel / POINTER_SKILL_NAME
|
|
112
|
+
skill_dir.mkdir(parents=True, exist_ok=True)
|
|
113
|
+
(skill_dir / "SKILL.md").write_text(content, encoding="utf-8")
|
|
114
|
+
print(f" Generated: {rel}/{POINTER_SKILL_NAME}/SKILL.md")
|
|
115
|
+
|
|
116
|
+
|
|
102
117
|
def generate(target_dir: Path, *,
|
|
103
118
|
language_modules: list[str] | None = None,
|
|
104
119
|
rules_dir: Path | None = None,
|
|
@@ -8,11 +8,14 @@ Codex exposes 10 lifecycle events (PascalCase in config.toml / hooks.json):
|
|
|
8
8
|
``PreToolUse``, ``PostToolUse``, ``PermissionRequest``, ``PreCompact``,
|
|
9
9
|
``PostCompact``, ``SessionStart``, ``UserPromptSubmit``, ``SubagentStart``,
|
|
10
10
|
``SubagentStop``, ``Stop``. PreToolUse/PostToolUse only support the ``Bash``
|
|
11
|
-
matcher. We wire
|
|
12
|
-
hook scripts, mirroring the Claude Code mapping in ``app/hooks.json``.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
matcher. We wire 9 of the 10 events in ``CODEX_HOOKS`` below to the shared
|
|
12
|
+
toolkit hook scripts, mirroring the Claude Code mapping in ``app/hooks.json``.
|
|
13
|
+
``PostCompact`` is intentionally unwired (its only hook was the removed
|
|
14
|
+
environment-snapshot probe).
|
|
15
|
+
|
|
16
|
+
Handler types in Codex: ``command`` (what we emit). ``prompt`` and ``agent``
|
|
17
|
+
are parsed by Codex but not yet executed, so hand-authored handlers of those
|
|
18
|
+
types are inert. Reference: codex-rs/config/src/hook_config.rs.
|
|
16
19
|
|
|
17
20
|
Usage:
|
|
18
21
|
python3 scripts/generate_codex_hooks.py [target-dir]
|
|
@@ -228,17 +228,24 @@ def generate(target_dir: Path, *,
|
|
|
228
228
|
language_modules: list[str] | None = None,
|
|
229
229
|
rules_dir: Path | None = None,
|
|
230
230
|
emit_prompts: bool = True,
|
|
231
|
-
emit_instructions: bool = True
|
|
231
|
+
emit_instructions: bool = True,
|
|
232
|
+
config_root: Path | None = None) -> None:
|
|
232
233
|
"""Write Copilot path-specific instructions and prompt files.
|
|
233
234
|
|
|
235
|
+
By default writes to ``<target_dir>/.github/`` (project-local). Pass
|
|
236
|
+
``config_root=~/.copilot`` for the Copilot CLI user-level global layout,
|
|
237
|
+
where instructions land in ``~/.copilot/instructions/*.instructions.md``.
|
|
238
|
+
|
|
234
239
|
``.github/copilot-instructions.md`` is intentionally not written here —
|
|
235
240
|
the legacy ``main()`` entry point still emits it to stdout so existing
|
|
236
241
|
scripts (including ``ai-toolkit install``) keep working unchanged.
|
|
237
242
|
"""
|
|
238
243
|
github_dir = target_dir / ".github"
|
|
244
|
+
instr_root = config_root if config_root is not None else github_dir
|
|
245
|
+
instr_label = "~/.copilot/instructions" if config_root is not None else ".github/instructions"
|
|
239
246
|
|
|
240
247
|
if emit_instructions:
|
|
241
|
-
instr_dir =
|
|
248
|
+
instr_dir = instr_root / "instructions"
|
|
242
249
|
instr_dir.mkdir(parents=True, exist_ok=True)
|
|
243
250
|
|
|
244
251
|
instruction_files: dict[str, callable] = dict(_make_instruction_files())
|
|
@@ -269,7 +276,7 @@ def generate(target_dir: Path, *,
|
|
|
269
276
|
|
|
270
277
|
for name, content_fn in instruction_files.items():
|
|
271
278
|
(instr_dir / name).write_text(content_fn(), encoding="utf-8")
|
|
272
|
-
print(f" Generated:
|
|
279
|
+
print(f" Generated: {instr_label}/{name}")
|
|
273
280
|
|
|
274
281
|
if emit_prompts:
|
|
275
282
|
prompt_dir = github_dir / "prompts"
|
|
@@ -49,8 +49,22 @@ sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
|
49
49
|
# Protected source tag -- this CLI must never touch ai-toolkit's own entries.
|
|
50
50
|
PROTECTED_SOURCE = "ai-toolkit"
|
|
51
51
|
|
|
52
|
-
# Codex CLI
|
|
53
|
-
|
|
52
|
+
# Codex CLI's HookEventName enum defines 10 events; we propagate the 9 that
|
|
53
|
+
# generate_codex_hooks.py also wires (all except PostCompact, whose only hook
|
|
54
|
+
# was the removed environment-snapshot probe). Keeping this in sync with the
|
|
55
|
+
# generator prevents injected custom hooks from silently losing events Codex
|
|
56
|
+
# supports.
|
|
57
|
+
CODEX_EVENTS = {
|
|
58
|
+
"SessionStart",
|
|
59
|
+
"PreToolUse",
|
|
60
|
+
"PostToolUse",
|
|
61
|
+
"PermissionRequest",
|
|
62
|
+
"UserPromptSubmit",
|
|
63
|
+
"SubagentStart",
|
|
64
|
+
"SubagentStop",
|
|
65
|
+
"PreCompact",
|
|
66
|
+
"Stop",
|
|
67
|
+
}
|
|
54
68
|
|
|
55
69
|
|
|
56
70
|
# ---------------------------------------------------------------------------
|
package/scripts/install.py
CHANGED
|
@@ -18,7 +18,7 @@ Other tools (global config locations):
|
|
|
18
18
|
- Roo Code: ~/.roo/rules/
|
|
19
19
|
- Aider: ~/.aider.conf.yml (created only if absent)
|
|
20
20
|
- Augment: ~/.augment/rules/ai-toolkit.md
|
|
21
|
-
- Codex:
|
|
21
|
+
- Codex: ~/.codex/AGENTS.md, ~/.agents/skills/, ~/.codex/hooks.json
|
|
22
22
|
- opencode: ~/.config/opencode/
|
|
23
23
|
|
|
24
24
|
Registered rules (~/.softspark/ai-toolkit/rules/*.md) are also synced into
|
|
@@ -750,7 +750,7 @@ def main() -> None:
|
|
|
750
750
|
global_eds = get_global_editors() or None
|
|
751
751
|
|
|
752
752
|
installed_eds = install_ai_tools(target_dir, rules_dir, dry_run,
|
|
753
|
-
editors=global_eds)
|
|
753
|
+
editors=global_eds, profile=profile)
|
|
754
754
|
install_persona(target_dir, persona, dry_run)
|
|
755
755
|
install_strict_git_hooks(profile, local, dry_run)
|
|
756
756
|
|