@softspark/ai-toolkit 4.6.0 → 4.7.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 +18 -0
- package/README.md +11 -11
- package/app/.claude-plugin/plugin.json +1 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +21 -12
- package/kb/procedures/maintenance-sop.md +9 -8
- package/kb/procedures/release-verification-sop.md +1 -1
- package/kb/reference/architecture-overview.md +4 -4
- package/kb/reference/supported-tools-registry.md +29 -24
- package/llms-full.txt +43 -37
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/ecosystem_tools.json +60 -9
- package/scripts/generate_antigravity.py +22 -15
- package/scripts/generate_cursor_mdc.py +4 -3
- package/scripts/generate_windsurf_hooks.py +6 -0
- package/scripts/generate_windsurf_rules.py +39 -24
- package/scripts/generate_windsurf_skills.py +14 -4
- package/scripts/install_steps/ai_tools.py +21 -4
- package/scripts/validate.py +1 -0
package/llms-full.txt
CHANGED
|
@@ -4404,9 +4404,9 @@ title: "SOP: Claude Toolkit Maintenance"
|
|
|
4404
4404
|
category: procedures
|
|
4405
4405
|
service: ai-toolkit
|
|
4406
4406
|
tags: [sop, maintenance, agents, skills, install]
|
|
4407
|
-
version: "3.0
|
|
4407
|
+
version: "3.1.0"
|
|
4408
4408
|
created: "2026-03-23"
|
|
4409
|
-
last_updated: "2026-
|
|
4409
|
+
last_updated: "2026-06-10"
|
|
4410
4410
|
description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
|
|
4411
4411
|
---
|
|
4412
4412
|
|
|
@@ -4612,18 +4612,19 @@ Use this when Claude appears to ignore `CLAUDE.md`, `.claude/rules/*.md`, output
|
|
|
4612
4612
|
- `https://code.claude.com/docs/en/settings`
|
|
4613
4613
|
- `https://code.claude.com/docs/en/output-styles`
|
|
4614
4614
|
- `https://code.claude.com/docs/en/hooks`
|
|
4615
|
-
2. **
|
|
4616
|
-
3. **Verify the
|
|
4617
|
-
4. **
|
|
4618
|
-
5. **
|
|
4615
|
+
2. **Isolate with safe mode (v2.1.169+).** Start a session with `claude --safe-mode` (or `CLAUDE_CODE_SAFE_MODE=1`) — it disables hooks, skills, agents, and CLAUDE.md. If the problem persists in safe mode, the cause is upstream, not toolkit customization; if it disappears, bisect toolkit components with `ai-toolkit update --only <component>`.
|
|
4616
|
+
3. **Verify instruction loading.** Run `/memory` in Claude Code and confirm the expected `CLAUDE.md`, `CLAUDE.local.md`, and `.claude/rules/*.md` files are listed. Remember that Claude Code reads `CLAUDE.md`, not `AGENTS.md`, unless `CLAUDE.md` imports it.
|
|
4617
|
+
4. **Verify the active output style.** Check `.claude/settings.local.json` or `/config`. Output style changes apply after `/clear` or a new session.
|
|
4618
|
+
5. **Inspect installed hooks.** Ensure `~/.claude/settings.json` contains the ai-toolkit `UserPromptSubmit` and `Stop` entries. The governance hook must run with `AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json` so it injects `additionalContext` without noisy transcript output.
|
|
4619
|
+
6. **Reproduce the hook path directly.**
|
|
4619
4620
|
```bash
|
|
4620
4621
|
printf '{"session_id":"debug","prompt":"debug this technical rule issue"}' \
|
|
4621
4622
|
| AI_TOOLKIT_SEARCH_FIRST=strict AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json \
|
|
4622
4623
|
~/.softspark/ai-toolkit/hooks/user-prompt-submit.sh
|
|
4623
4624
|
```
|
|
4624
4625
|
The output must be valid JSON with `hookSpecificOutput.additionalContext`.
|
|
4625
|
-
|
|
4626
|
-
|
|
4626
|
+
7. **Check corrective enforcement.** If the assistant still skips required research, `stop-search-check.sh` should block Stop with the search-first message. If it does not, inspect `~/.softspark/ai-toolkit/state/search-required-*.flag` and the Codex/Claude transcript logs.
|
|
4627
|
+
8. **Repair drift.** Run:
|
|
4627
4628
|
```bash
|
|
4628
4629
|
ai-toolkit update --only hooks
|
|
4629
4630
|
python3 scripts/ecosystem_doctor.py --tool claude-code --format text
|
|
@@ -5372,7 +5373,7 @@ python3 scripts/audit_skills.py --ci
|
|
|
5372
5373
|
npm test
|
|
5373
5374
|
|
|
5374
5375
|
# 5. Stage and commit
|
|
5375
|
-
git add AGENTS.md
|
|
5376
|
+
git add AGENTS.md llms.txt llms-full.txt
|
|
5376
5377
|
git add -p # stage your other changes
|
|
5377
5378
|
git commit -m "feat: your change description"
|
|
5378
5379
|
```
|
|
@@ -6136,9 +6137,9 @@ title: "AI Toolkit - Architecture Overview"
|
|
|
6136
6137
|
category: reference
|
|
6137
6138
|
service: ai-toolkit
|
|
6138
6139
|
tags: [architecture, overview, design, structure]
|
|
6139
|
-
version: "1.4.
|
|
6140
|
+
version: "1.4.6"
|
|
6140
6141
|
created: "2026-03-23"
|
|
6141
|
-
last_updated: "2026-
|
|
6142
|
+
last_updated: "2026-06-10"
|
|
6142
6143
|
description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
|
|
6143
6144
|
---
|
|
6144
6145
|
|
|
@@ -6242,7 +6243,7 @@ Machine (global) Project (local)
|
|
|
6242
6243
|
- `--editors cursor,aider` — install only selected editors
|
|
6243
6244
|
- (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
|
|
6244
6245
|
|
|
6245
|
-
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md
|
|
6246
|
+
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agents/rules/*.md`, `CONVENTIONS.md`). Full-profile installs also emit native skill pointer catalogues for Cursor, Windsurf, and Cline. Codex local install additionally generates `AGENTS.md` (universal coding rules inlined — Codex reads only AGENTS.md, not `.agents/rules/`), `.agents/skills/*`, and `.codex/hooks.json`. Hooks are global-only — not merged into project settings except for editor-native local hook files such as Codex `.codex/hooks.json`. Experimental plugin packs can also layer a global Codex target in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`) when installed with `ai-toolkit plugin install --editor codex`.
|
|
6246
6247
|
|
|
6247
6248
|
If a project already has `.mcp.json`, local install mirrors its `mcpServers` entries into `.claude/settings.local.json` plus any selected editors with project-scoped native MCP files (`.cursor/mcp.json`, `.github/mcp.json`).
|
|
6248
6249
|
|
|
@@ -6266,7 +6267,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
|
|
|
6266
6267
|
| `cursor-rules` | `./` | Generates `.cursorrules` (legacy) |
|
|
6267
6268
|
| `cursor-mdc` | `./` | Generates `.cursor/rules/*.mdc` (recommended) |
|
|
6268
6269
|
| `windsurf-rules` | `./` | Generates `.windsurfrules` (legacy) |
|
|
6269
|
-
| `windsurf-dir-rules` | `./` | Generates `.windsurf/rules/*.md` |
|
|
6270
|
+
| `windsurf-dir-rules` | `./` | Generates `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit) |
|
|
6270
6271
|
| `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
|
|
6271
6272
|
| `gemini-md` | `./` | Generates `GEMINI.md` |
|
|
6272
6273
|
| `cline-rules` | `./` | Generates `.clinerules` (legacy) |
|
|
@@ -11769,9 +11770,9 @@ title: "Supported Tools Registry"
|
|
|
11769
11770
|
category: reference
|
|
11770
11771
|
service: ai-toolkit
|
|
11771
11772
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
11772
|
-
version: "1.
|
|
11773
|
+
version: "1.5.0"
|
|
11773
11774
|
created: "2026-04-23"
|
|
11774
|
-
last_updated: "2026-06-
|
|
11775
|
+
last_updated: "2026-06-09"
|
|
11775
11776
|
description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
|
|
11776
11777
|
---
|
|
11777
11778
|
|
|
@@ -11794,13 +11795,14 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11794
11795
|
| ID | `claude-code` |
|
|
11795
11796
|
| Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
|
|
11796
11797
|
| Release notes | https://github.com/anthropics/claude-code/releases |
|
|
11797
|
-
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.
|
|
11798
|
-
| Config paths | `~/.claude/settings.json`, `.claude/settings.local.json`, `CLAUDE.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
|
|
11798
|
+
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.170) |
|
|
11799
|
+
| Config paths | `~/.claude/settings.json`, `.claude/settings.json` (project, committed), `.claude/settings.local.json`, `CLAUDE.md`, `.claude/rules/*.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
|
|
11799
11800
|
| Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
|
|
11800
11801
|
| Tracked hook events | Core: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`. Tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`. Turn: `Stop`, `StopFailure`, `UserPromptExpansion`. Subagent: `SubagentStart`, `SubagentStop`. Compaction: `PreCompact`, `PostCompact`. Permissions: `PermissionRequest`, `PermissionDenied`. Elicitation: `Elicitation`, `ElicitationResult`. Teams: `TaskCreated`, `TaskCompleted`, `TeammateIdle`. Worktrees/env: `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
|
|
11801
|
-
| Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool` |
|
|
11802
|
+
| Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
|
|
11802
11803
|
| Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
|
|
11803
11804
|
| Version probe | `claude --version` |
|
|
11805
|
+
| Notes | v2.1.169 added `disableBundledSkills` setting + `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` env var (hides bundled skills/built-in slash commands from the model; toolkit skills in `.claude/skills/` are unaffected — useful when toolkit skills overlap built-ins) and `claude --safe-mode` / `CLAUDE_CODE_SAFE_MODE` (starts with hooks, skills, agents, and CLAUDE.md disabled — first isolation step when debugging toolkit rule enforcement). `fallbackModel` settings key (v2.1.166) noted as not-adopted (class C, no toolkit surface writes model settings). |
|
|
11804
11806
|
|
|
11805
11807
|
---
|
|
11806
11808
|
|
|
@@ -11814,8 +11816,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11814
11816
|
| Docs | https://cursor.com/docs |
|
|
11815
11817
|
| Changelog | https://cursor.com/changelog |
|
|
11816
11818
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
11817
|
-
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc
|
|
11818
|
-
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/` |
|
|
11819
|
+
| 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`, `.cursor/hooks.json` |
|
|
11820
|
+
| 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) |
|
|
11819
11821
|
| 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) |
|
|
11820
11822
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
11821
11823
|
|
|
@@ -11827,11 +11829,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11827
11829
|
| Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
|
|
11828
11830
|
| Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
|
|
11829
11831
|
| 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/`) |
|
|
11830
|
-
| Config paths | `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`,
|
|
11832
|
+
| Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.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`. |
|
|
11831
11833
|
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/` |
|
|
11832
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py
|
|
11834
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, deprecated**), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
|
|
11833
11835
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
|
|
11834
11836
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
11837
|
+
| Sunset notes | Cascade agent is available only through **2026-07-01**; Devin Local is the default agent since 2026-06-02. The `.windsurf/hooks.json` surface dies with Cascade — migrate to Devin CLI lifecycle hooks (docs.devin.ai/cli/extensibility/hooks/\*) before that date. Devin CLI ("Devin for Terminal") shares the Devin Local harness, reads `AGENTS.md` and the standard `SKILL.md` format; not yet a separate registry entry. |
|
|
11835
11838
|
|
|
11836
11839
|
### GitHub Copilot
|
|
11837
11840
|
|
|
@@ -11852,11 +11855,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11852
11855
|
| ID | `gemini-cli` |
|
|
11853
11856
|
| Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
|
|
11854
11857
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
11855
|
-
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `.gemini/extensions/gemini-extension.json` |
|
|
11858
|
+
| 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` |
|
|
11856
11859
|
| 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) |
|
|
11857
|
-
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent
|
|
11860
|
+
| 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-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
|
|
11858
11861
|
| Version probe | `gemini --version` |
|
|
11859
|
-
| Latest upstream | v0.45.
|
|
11862
|
+
| Latest upstream | v0.45.2 (2026-06-05). NOTE: Gemini CLI drops free/paid tiers 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist keeps Gemini CLI. |
|
|
11860
11863
|
|
|
11861
11864
|
### Cline
|
|
11862
11865
|
|
|
@@ -11865,9 +11868,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11865
11868
|
| ID | `cline` |
|
|
11866
11869
|
| Docs | https://docs.cline.bot |
|
|
11867
11870
|
| Release notes | https://github.com/cline/cline/releases |
|
|
11868
|
-
| Config paths | `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project),
|
|
11871
|
+
| Config paths | **Extension:** `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project), `~/Documents/Cline/Rules/Hooks/` (global hooks), `~/.cline/data/settings/cline_mcp_settings.json`. **CLI/SDK unified layout** (docs.cline.bot/getting-started/config; `.clinerules` is deprecated there): `.cline/{rules,hooks,plugins,skills}/`, `~/.cline/{rules,hooks,plugins,skills}/`, `CLINE_HOOKS_DIR` env var. **Cross-tool:** `AGENTS.md` + `~/.agents/AGENTS.md` (first-class rules sources), `.claude/skills/*/SKILL.md` (native discovery, always-on since v3.57.0). |
|
|
11869
11872
|
| Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py`, `scripts/generate_cline_skills.py` |
|
|
11870
|
-
| Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
|
|
11873
|
+
| Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules, `AGENTS.md`, plugins |
|
|
11874
|
+
| Plugins | `.cline/plugins/` + `~/.cline/plugins/` (JS/TS), `package.json` `cline.plugins` manifest; plugins can bundle skills. Not adopted as a distribution channel yet — candidate for shipping toolkit skills to CLI/SDK users. |
|
|
11871
11875
|
| Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Project rules still use `.clinerules/` for compatibility; global rules are written to `~/Documents/Cline/Rules/` (the documented Cline global rules dir — `~/.cline/rules/` is not a Cline-read path). Skills are emitted as a pointer catalogue in `profile=full` and global installs. |
|
|
11872
11876
|
| Global install | `ai-toolkit install --editors cline` writes documented global rules under `~/Documents/Cline/Rules/` and a skill pointer under `~/.cline/skills/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
|
|
11873
11877
|
|
|
@@ -11904,9 +11908,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11904
11908
|
| ID | `augment` |
|
|
11905
11909
|
| Docs | https://docs.augmentcode.com |
|
|
11906
11910
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
11907
|
-
| Config paths | `.augment/rules/*.md`, `.augment
|
|
11911
|
+
| 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). |
|
|
11908
11912
|
| 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) |
|
|
11909
|
-
| 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`, ACP Mode |
|
|
11913
|
+
| 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 |
|
|
11910
11914
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
11911
11915
|
|
|
11912
11916
|
### Google Antigravity
|
|
@@ -11916,19 +11920,20 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11916
11920
|
| ID | `google-antigravity` |
|
|
11917
11921
|
| Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
|
|
11918
11922
|
| Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
|
|
11919
|
-
| 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
|
|
11920
|
-
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer) |
|
|
11921
|
-
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, `AGENTS.md`, `GEMINI.md`, agent permissions |
|
|
11922
|
-
|
|
|
11923
|
+
| 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` |
|
|
11924
|
+
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
|
|
11925
|
+
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
|
|
11926
|
+
| CLI notes | Antigravity CLI (GA 2026-05-19): hooks in `.agents/hooks.json` use Claude-style event names (`PreToolUse`, not Gemini's `BeforeTool`) with a JSON stdin/stdout decision contract; MCP config `.agents/mcp_config.json` requires `serverUrl` (legacy `url`/`httpUrl` fail silently). Global MCP config path is inconsistently reported across sources (`~/.gemini/antigravity-cli/` vs `~/.gemini/config/`) — only the workspace path is registered until verified via `agy inspect`. |
|
|
11927
|
+
| 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. |
|
|
11923
11928
|
|
|
11924
11929
|
### Codex CLI
|
|
11925
11930
|
|
|
11926
11931
|
| Field | Value |
|
|
11927
11932
|
|-------|-------|
|
|
11928
11933
|
| ID | `codex-cli` |
|
|
11929
|
-
| Docs | https://developers.openai.com/codex (
|
|
11934
|
+
| 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.138.0, 2026-06) |
|
|
11930
11935
|
| Release notes | https://github.com/openai/codex/releases |
|
|
11931
|
-
| Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
|
|
11936
|
+
| Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml` |
|
|
11932
11937
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
11933
11938
|
| 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/`. |
|
|
11934
11939
|
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire all 10 to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. |
|
|
@@ -11942,12 +11947,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11942
11947
|
|-------|-------|
|
|
11943
11948
|
| ID | `opencode` |
|
|
11944
11949
|
| Docs | https://opencode.ai/docs |
|
|
11945
|
-
| Release notes | https://github.com/sst/opencode/releases |
|
|
11946
|
-
| Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md
|
|
11950
|
+
| Release notes | https://github.com/sst/opencode/releases (redirects to anomalyco/opencode) |
|
|
11951
|
+
| Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md`; skill fallback discovery: `.claude/skills/`, `.agents/skills/`, `~/.config/opencode/skills/`, `~/.claude/skills/`, `~/.agents/skills/` |
|
|
11947
11952
|
| Our generators | `scripts/generate_opencode.py`, `scripts/generate_opencode_agents.py`, `scripts/generate_opencode_commands.py`, `scripts/generate_opencode_json.py`, `scripts/generate_opencode_plugin.py` |
|
|
11948
11953
|
| Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
|
|
11949
11954
|
| Other capabilities | `opencode.json` config, primary + subagent modes, `@`-mention subagents, `/`-invocation commands, MCP (local + remote), plugin hooks in JS/TS, native `SKILL.md` discovery with Claude-compatible fallback, `permission.skill.*` matrix |
|
|
11950
11955
|
| Version probe | `opencode --version` |
|
|
11956
|
+
| Watch item | v1.16.0 (2026-06-05) ships an experimental v2 skill registry (flat-file skills, `slash` frontmatter key) — undocumented as of 2026-06-09; re-check next sync before touching `generate_opencode*.py`. |
|
|
11951
11957
|
|
|
11952
11958
|
---
|
|
11953
11959
|
|
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.7.0",
|
|
4
4
|
"description": "AI coding toolkit: 107 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",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"description": "Authoritative registry of tools ai-toolkit integrates with. Consumed by scripts/ecosystem_doctor.py to detect upstream doc/version drift.",
|
|
4
|
-
"last_updated": "2026-06-
|
|
4
|
+
"last_updated": "2026-06-10",
|
|
5
5
|
"tools": [
|
|
6
6
|
{
|
|
7
7
|
"id": "claude-code",
|
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
},
|
|
15
15
|
"config_paths": [
|
|
16
16
|
"~/.claude/settings.json",
|
|
17
|
+
".claude/settings.json",
|
|
17
18
|
".claude/settings.local.json",
|
|
18
19
|
"CLAUDE.md",
|
|
20
|
+
".claude/rules/*.md",
|
|
19
21
|
".claude/agents/*.md",
|
|
20
22
|
".claude/skills/*/SKILL.md",
|
|
21
23
|
"~/.claude/themes/*.json"
|
|
@@ -60,7 +62,8 @@
|
|
|
60
62
|
"hook handler: command",
|
|
61
63
|
"hook handler: prompt",
|
|
62
64
|
"hook handler: agent",
|
|
63
|
-
"hook handler: mcp_tool"
|
|
65
|
+
"hook handler: mcp_tool",
|
|
66
|
+
"hook handler: http"
|
|
64
67
|
],
|
|
65
68
|
"version_probe": {
|
|
66
69
|
"kind": "command",
|
|
@@ -79,7 +82,6 @@
|
|
|
79
82
|
"config_paths": [
|
|
80
83
|
".cursorrules",
|
|
81
84
|
".cursor/rules/*.mdc",
|
|
82
|
-
".cursor/rules/*.md",
|
|
83
85
|
"AGENTS.md",
|
|
84
86
|
".cursor/mcp.json",
|
|
85
87
|
"~/.cursor/mcp.json",
|
|
@@ -92,6 +94,11 @@
|
|
|
92
94
|
".codex/skills/*/SKILL.md",
|
|
93
95
|
"~/.codex/skills/*/SKILL.md",
|
|
94
96
|
".cursor/agents/*.md",
|
|
97
|
+
"~/.cursor/agents/*.md",
|
|
98
|
+
".claude/agents/*.md",
|
|
99
|
+
"~/.claude/agents/*.md",
|
|
100
|
+
".codex/agents/*.md",
|
|
101
|
+
"~/.codex/agents/*.md",
|
|
95
102
|
".cursor/hooks.json"
|
|
96
103
|
],
|
|
97
104
|
"our_generators": [
|
|
@@ -125,6 +132,12 @@
|
|
|
125
132
|
"changelog": "https://docs.devin.ai/desktop/changelog"
|
|
126
133
|
},
|
|
127
134
|
"config_paths": [
|
|
135
|
+
".devin/rules/*.md",
|
|
136
|
+
".devin/workflows/*.md",
|
|
137
|
+
".devin/skills/*/SKILL.md",
|
|
138
|
+
".devin/config.json",
|
|
139
|
+
".devin/config.local.json",
|
|
140
|
+
"~/.config/devin/config.json",
|
|
128
141
|
".windsurfrules",
|
|
129
142
|
".windsurf/rules/*.md",
|
|
130
143
|
".windsurf/workflows/*.md",
|
|
@@ -138,8 +151,10 @@
|
|
|
138
151
|
"our_generators": [
|
|
139
152
|
"scripts/generate_windsurf.py",
|
|
140
153
|
"scripts/generate_windsurf_rules.py",
|
|
141
|
-
"scripts/generate_windsurf_skills.py"
|
|
154
|
+
"scripts/generate_windsurf_skills.py",
|
|
155
|
+
"scripts/generate_windsurf_hooks.py"
|
|
142
156
|
],
|
|
157
|
+
"status_note": "Windsurf rebranded to Devin Desktop on 2026-06-02. .devin/ is the primary read+write workspace tree; .windsurfrules, .windsurf/* and ~/.codeium/windsurf/* are legacy read-only fallbacks. Our generators dual-emit .devin/* + .windsurf/*. Cascade agent is available only through 2026-07-01 (Devin Local is the default agent since 2026-06-02); the .windsurf/hooks.json surface emitted by generate_windsurf_hooks.py is Cascade-scoped and dies with Cascade — migrate to the Devin CLI lifecycle-hooks surface (docs.devin.ai/cli/extensibility/hooks/*) before that date. Devin CLI ('Devin for Terminal', launched 2026-04-29) shares the Devin Local harness, reads AGENTS.md and the same SKILL.md standard; not yet tracked as a separate registry entry.",
|
|
143
158
|
"capability_markers": [
|
|
144
159
|
"Cascade",
|
|
145
160
|
"windsurfrules",
|
|
@@ -204,6 +219,7 @@
|
|
|
204
219
|
".gemini/skills/*/SKILL.md",
|
|
205
220
|
".agents/skills/*/SKILL.md",
|
|
206
221
|
"~/.gemini/skills/*/SKILL.md",
|
|
222
|
+
"~/.agents/skills/*/SKILL.md",
|
|
207
223
|
".gemini/extensions/gemini-extension.json"
|
|
208
224
|
],
|
|
209
225
|
"our_generators": [
|
|
@@ -216,9 +232,13 @@
|
|
|
216
232
|
"settings.json",
|
|
217
233
|
"BeforeTool",
|
|
218
234
|
"AfterTool",
|
|
235
|
+
"BeforeToolSelection",
|
|
219
236
|
"BeforeAgent",
|
|
220
237
|
"AfterAgent",
|
|
221
238
|
"BeforeModel",
|
|
239
|
+
"AfterModel",
|
|
240
|
+
"Notification",
|
|
241
|
+
"PreCompress",
|
|
222
242
|
"SessionStart",
|
|
223
243
|
"SessionEnd",
|
|
224
244
|
"SKILL.md",
|
|
@@ -246,11 +266,19 @@
|
|
|
246
266
|
".clinerules/workflows/*.md",
|
|
247
267
|
".clinerules/skills/*/SKILL.md",
|
|
248
268
|
".clinerules/hooks/",
|
|
269
|
+
".cline/rules/*.md",
|
|
270
|
+
".cline/hooks/",
|
|
271
|
+
".cline/plugins/",
|
|
249
272
|
".cline/skills/*/SKILL.md",
|
|
273
|
+
"~/.cline/rules/",
|
|
274
|
+
"~/.cline/hooks/",
|
|
275
|
+
"~/.cline/plugins/",
|
|
250
276
|
"~/.cline/skills/*/SKILL.md",
|
|
251
277
|
"~/Documents/Cline/Rules/Hooks/",
|
|
252
278
|
"~/.cline/data/settings/cline_mcp_settings.json",
|
|
253
|
-
".claude/skills/*/SKILL.md"
|
|
279
|
+
".claude/skills/*/SKILL.md",
|
|
280
|
+
"AGENTS.md",
|
|
281
|
+
"~/.agents/AGENTS.md"
|
|
254
282
|
],
|
|
255
283
|
"our_generators": [
|
|
256
284
|
"scripts/generate_cline.py",
|
|
@@ -267,7 +295,9 @@
|
|
|
267
295
|
"hooks",
|
|
268
296
|
"skills",
|
|
269
297
|
"subagents",
|
|
270
|
-
"conditional rules"
|
|
298
|
+
"conditional rules",
|
|
299
|
+
"AGENTS.md",
|
|
300
|
+
"plugins"
|
|
271
301
|
],
|
|
272
302
|
"version_probe": null
|
|
273
303
|
},
|
|
@@ -357,11 +387,16 @@
|
|
|
357
387
|
},
|
|
358
388
|
"config_paths": [
|
|
359
389
|
".augment/rules/*.md",
|
|
360
|
-
".augment
|
|
390
|
+
".augment-guidelines",
|
|
361
391
|
".augment/agents/*.md",
|
|
362
392
|
".augment/commands/*.md",
|
|
363
393
|
".augment/skills/*/SKILL.md",
|
|
394
|
+
".augment/settings.json",
|
|
395
|
+
".augment/settings.local.json",
|
|
396
|
+
".claude/skills/*/SKILL.md",
|
|
397
|
+
".agents/skills/*/SKILL.md",
|
|
364
398
|
"~/.augment/rules/*.md",
|
|
399
|
+
"~/.augment/user-guidelines.md",
|
|
365
400
|
"~/.augment/agents/*.md",
|
|
366
401
|
"~/.augment/commands/*.md",
|
|
367
402
|
"~/.augment/settings.json",
|
|
@@ -369,7 +404,11 @@
|
|
|
369
404
|
],
|
|
370
405
|
"our_generators": [
|
|
371
406
|
"scripts/generate_augment.py",
|
|
372
|
-
"scripts/generate_augment_rules.py"
|
|
407
|
+
"scripts/generate_augment_rules.py",
|
|
408
|
+
"scripts/generate_augment_agents.py",
|
|
409
|
+
"scripts/generate_augment_commands.py",
|
|
410
|
+
"scripts/generate_augment_skills.py",
|
|
411
|
+
"scripts/generate_augment_hooks.py"
|
|
373
412
|
],
|
|
374
413
|
"capability_markers": [
|
|
375
414
|
".augment",
|
|
@@ -388,6 +427,7 @@
|
|
|
388
427
|
"SessionStart",
|
|
389
428
|
"SessionEnd",
|
|
390
429
|
"Stop",
|
|
430
|
+
"Notification",
|
|
391
431
|
"ACP Mode"
|
|
392
432
|
],
|
|
393
433
|
"version_probe": null
|
|
@@ -404,6 +444,9 @@
|
|
|
404
444
|
"config_paths": [
|
|
405
445
|
".agents/rules/*.md",
|
|
406
446
|
".agents/workflows/*.md",
|
|
447
|
+
".agents/skills/*/SKILL.md",
|
|
448
|
+
".agents/hooks.json",
|
|
449
|
+
".agents/mcp_config.json",
|
|
407
450
|
".agent/rules/*.md",
|
|
408
451
|
".agent/workflows/*.md",
|
|
409
452
|
".agent/skills/*/SKILL.md",
|
|
@@ -413,6 +456,7 @@
|
|
|
413
456
|
"our_generators": [
|
|
414
457
|
"scripts/generate_antigravity.py"
|
|
415
458
|
],
|
|
459
|
+
"status_note": "Antigravity CLI (GA 2026-05-19) reads workspace skills from .agents/skills/ (plural); the IDE still uses .agent/skills/ (singular) — our generator dual-emits the skill pointer to both. CLI hooks live in .agents/hooks.json with Claude-style event names (PreToolUse, not BeforeTool) and a JSON stdin/stdout decision contract. CLI MCP config is .agents/mcp_config.json with a required serverUrl field (url/httpUrl rejected silently); the GLOBAL MCP config path is reported inconsistently across sources (~/.gemini/antigravity-cli/ vs ~/.gemini/config/), so only the workspace path is registered until verified via agy inspect. Official docs are fully JS-rendered — the doctor is blind to them; verify changes manually each sync.",
|
|
416
460
|
"capability_markers": [
|
|
417
461
|
"Antigravity",
|
|
418
462
|
"agent manager",
|
|
@@ -421,6 +465,7 @@
|
|
|
421
465
|
"workflows",
|
|
422
466
|
"rules",
|
|
423
467
|
"skills",
|
|
468
|
+
"hooks",
|
|
424
469
|
"AGENTS.md",
|
|
425
470
|
"GEMINI.md",
|
|
426
471
|
"agent permissions"
|
|
@@ -440,6 +485,7 @@
|
|
|
440
485
|
"AGENTS.md",
|
|
441
486
|
".agents/skills/*/SKILL.md",
|
|
442
487
|
".codex/hooks.json",
|
|
488
|
+
".codex/config.toml",
|
|
443
489
|
"~/.codex/config.toml"
|
|
444
490
|
],
|
|
445
491
|
"our_generators": [
|
|
@@ -489,8 +535,13 @@
|
|
|
489
535
|
".opencode/plugins/*",
|
|
490
536
|
".opencode/skills/*/SKILL.md",
|
|
491
537
|
"AGENTS.md",
|
|
492
|
-
".claude/skills/*/SKILL.md"
|
|
538
|
+
".claude/skills/*/SKILL.md",
|
|
539
|
+
".agents/skills/*/SKILL.md",
|
|
540
|
+
"~/.config/opencode/skills/*/SKILL.md",
|
|
541
|
+
"~/.claude/skills/*/SKILL.md",
|
|
542
|
+
"~/.agents/skills/*/SKILL.md"
|
|
493
543
|
],
|
|
544
|
+
"status_note": "opencode v1.16.0 (2026-06-05) ships an experimental v2 skill registry with flat-file skills and a 'slash' frontmatter key; undocumented as of 2026-06-09. Watch item: re-check next sync whether the v2 format reaches the documented SKILL.md spec before touching generate_opencode*.py. Note sst/opencode redirects to anomalyco/opencode.",
|
|
494
545
|
"our_generators": [
|
|
495
546
|
"scripts/generate_opencode.py",
|
|
496
547
|
"scripts/generate_opencode_agents.py",
|
|
@@ -11,19 +11,19 @@ Antigravity reads rules from:
|
|
|
11
11
|
* ``.agents/rules/*.md`` — per-category rule files (this generator)
|
|
12
12
|
* ``.agents/workflows/*.md`` — workflow templates (this generator)
|
|
13
13
|
|
|
14
|
-
Antigravity also supports the Agent Skills standard
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
that teaches Antigravity to look up the real
|
|
19
|
-
``~/.softspark/ai-toolkit/app/skills/`` (global install) or
|
|
14
|
+
Antigravity also supports the Agent Skills standard. The IDE reads
|
|
15
|
+
``.agent/skills/<skill-name>/SKILL.md`` (singular), while the Antigravity CLI
|
|
16
|
+
(GA 2026-05-19) reads ``.agents/skills/`` (plural) — so the skill pointer is
|
|
17
|
+
dual-emitted to both. We do not duplicate our full skill catalogue; instead we
|
|
18
|
+
emit a single pointer skill that teaches Antigravity to look up the real
|
|
19
|
+
catalogue in ``~/.softspark/ai-toolkit/app/skills/`` (global install) or
|
|
20
20
|
``.claude/skills/`` (local install).
|
|
21
21
|
|
|
22
22
|
Usage:
|
|
23
23
|
python3 scripts/generate_antigravity.py [target-dir]
|
|
24
24
|
|
|
25
25
|
Writes rules/workflows to target-dir/.agents/{rules,workflows}/ and the skill
|
|
26
|
-
pointer to target-dir/.agent/skills/ (
|
|
26
|
+
pointer to target-dir/.agent/skills/ (IDE) + target-dir/.agents/skills/ (CLI).
|
|
27
27
|
"""
|
|
28
28
|
from __future__ import annotations
|
|
29
29
|
|
|
@@ -82,11 +82,17 @@ def _pointer_skill_md() -> str:
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
def _write_skill_pointer(target_dir: Path) -> None:
|
|
85
|
-
"""Write the pointer SKILL.md
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
"""Write the pointer SKILL.md for both the IDE and the CLI surface.
|
|
86
|
+
|
|
87
|
+
The IDE reads ``.agent/skills/`` (singular); the Antigravity CLI reads
|
|
88
|
+
``.agents/skills/`` (plural).
|
|
89
|
+
"""
|
|
90
|
+
content = _pointer_skill_md()
|
|
91
|
+
for tree in (".agent", ".agents"):
|
|
92
|
+
skill_dir = target_dir / tree / "skills" / POINTER_SKILL_NAME
|
|
93
|
+
skill_dir.mkdir(parents=True, exist_ok=True)
|
|
94
|
+
(skill_dir / "SKILL.md").write_text(content, encoding="utf-8")
|
|
95
|
+
print(f" Generated: {tree}/skills/{POINTER_SKILL_NAME}/SKILL.md")
|
|
90
96
|
|
|
91
97
|
|
|
92
98
|
# ---------------------------------------------------------------------------
|
|
@@ -97,10 +103,11 @@ def generate(target_dir: Path, *,
|
|
|
97
103
|
language_modules: list[str] | None = None,
|
|
98
104
|
rules_dir: Path | None = None,
|
|
99
105
|
emit_skill_pointer: bool = True) -> None:
|
|
100
|
-
"""Write ``.agents/rules
|
|
106
|
+
"""Write ``.agents/{rules,workflows}/`` and the dual skill pointers.
|
|
101
107
|
|
|
102
|
-
``emit_skill_pointer`` controls whether the pointer SKILL.md is written
|
|
103
|
-
|
|
108
|
+
``emit_skill_pointer`` controls whether the pointer SKILL.md is written
|
|
109
|
+
to ``.agent/skills/`` (IDE) and ``.agents/skills/`` (CLI). Set to
|
|
110
|
+
``False`` if you manage those directories yourself.
|
|
104
111
|
"""
|
|
105
112
|
rules = dict(STANDARD_RULES)
|
|
106
113
|
rules.update(build_language_rules(language_modules))
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Generate ``.cursor/rules/*.mdc`` files for Cursor IDE.
|
|
3
3
|
|
|
4
|
-
Cursor reads rules from ``.cursor/rules/`` (since Cursor 0.45).
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Cursor reads rules from ``.cursor/rules/`` (since Cursor 0.45). Only ``.mdc``
|
|
5
|
+
files are read — plain ``.md`` files in ``.cursor/rules/`` are ignored by the
|
|
6
|
+
rules system (per cursor.com/docs/context/rules). ``.mdc`` carries the YAML
|
|
7
|
+
frontmatter used to control activation:
|
|
7
8
|
|
|
8
9
|
- ``alwaysApply: true`` — always in context
|
|
9
10
|
- ``globs: ["**/*.ts"]`` — auto-attached for matching files
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Generate .windsurf/hooks.json for Windsurf Cascade.
|
|
3
3
|
|
|
4
|
+
DEPRECATED SURFACE: the Cascade agent is available only through 2026-07-01
|
|
5
|
+
(Devin Local is the default agent since the 2026-06-02 Devin Desktop rebrand),
|
|
6
|
+
and this hooks.json schema is Cascade-scoped. Migrate to the Devin CLI
|
|
7
|
+
lifecycle-hooks surface (docs.devin.ai/cli/extensibility/hooks/*) before that
|
|
8
|
+
date; tracked in the ecosystem registry status_note for windsurf.
|
|
9
|
+
|
|
4
10
|
Writes `<target>/.windsurf/hooks.json`. Existing user hook entries are
|
|
5
11
|
preserved; only entries tagged `_source: ai-toolkit` are replaced on
|
|
6
12
|
regeneration. Windsurf merges system / user / workspace hooks at runtime, so
|