@softspark/ai-toolkit 4.10.0 → 4.10.1
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 +14 -0
- package/README.md +11 -9
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/hooks/loop-guard.sh +0 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +20 -19
- package/kb/reference/architecture-overview.md +2 -2
- package/kb/reference/codex-cli-compatibility.md +10 -4
- package/kb/reference/supported-tools-registry.md +8 -8
- package/llms-full.txt +20 -14
- package/manifest.json +1 -1
- package/package.json +3 -1
- package/scripts/ecosystem_tools.json +2 -1
- package/scripts/generate_copilot.py +6 -0
- package/scripts/install_steps/ai_tools.py +35 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v4.10.1 — Copilot AGENTS.md install + Claude KB-first rule (2026-06-23)
|
|
11
|
+
|
|
12
|
+
Patch release. Fixes two governance regressions found in the editor-update audit: Copilot installs now emit the root `AGENTS.md` surface documented in the registry, and Claude Code receives the KB-first rule in `CLAUDE.md`, which it actually reads. Test count: 1195 → 1198.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **GitHub Copilot local install now emits root `AGENTS.md`.** `ai-toolkit install --local --editors copilot` writes the generated agent catalog into a `TOOLKIT:copilot-agents` section without clobbering existing Codex/opencode `TOOLKIT:ai-toolkit` sections or user-authored content. Dry-run output and tests now cover the `.github/copilot-instructions.md + AGENTS.md` contract.
|
|
16
|
+
- **Claude Code KB-first rule restored in the right instruction file.** `CLAUDE.md` now explicitly requires `smart_query()` or `hybrid_search_kb()` before technical/project answers; the prior generated `AGENTS.md` placement was not sufficient for Claude Code runtime enforcement.
|
|
17
|
+
- **Codex PostToolUse no longer emits unsupported `suppressOutput`.** `loop-guard.sh` no longer forces `AI_TOOLKIT_HOOK_FORMAT=json`; under Codex it stays quiet/plain unless the generator explicitly opts into a supported JSON schema.
|
|
18
|
+
- **Npm package excludes local Claude session artifacts.** `package.json` now excludes `app/**/.claude/**` so ignored maintainer-local session files cannot leak into `npm pack`.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- **Editor registry/docs aligned with implementation.** README, architecture overview, and the supported-tools registry now describe Copilot's root `AGENTS.md` emission consistently.
|
|
22
|
+
- **Ecosystem doctor baseline refreshed.** Snapshot updated for upstream Claude Code and Gemini CLI documentation content hash drift; no generator changes were required.
|
|
23
|
+
|
|
10
24
|
## v4.10.0 — Per-repo session storage outside the repo + drop dead session-context hook (2026-06-17)
|
|
11
25
|
|
|
12
26
|
Minor release. Session lifecycle hooks stop writing auto-generated files into each project's `.claude/` directory and store them per-repo under `~/.softspark/ai-toolkit/`. The dead `session-context.sh` hook (write-only, no consumer) is removed across all editor generators. Test count: 1197 → 1195.
|
package/README.md
CHANGED
|
@@ -6,16 +6,18 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](app/skills/)
|
|
8
8
|
[](app/agents/)
|
|
9
|
-
[](tests/)
|
|
10
10
|
|
|
11
|
-
## What's New in v4.10.
|
|
11
|
+
## What's New in v4.10.1
|
|
12
12
|
|
|
13
|
-
v4.10.
|
|
13
|
+
v4.10.1 fixes editor-governance gaps found in the release audit.
|
|
14
14
|
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
15
|
+
- **Copilot local installs now emit root `AGENTS.md`**: `ai-toolkit install --local --editors copilot` writes the generated agent catalog into a `TOOLKIT:copilot-agents` section while preserving existing Codex/opencode sections and user text.
|
|
16
|
+
- **Claude Code KB-first enforcement restored**: `CLAUDE.md` now carries the mandatory `smart_query()` / `hybrid_search_kb()` rule before technical/project answers, instead of relying on generated `AGENTS.md`.
|
|
17
|
+
- **Codex PostToolUse hook output fixed**: `loop-guard.sh` no longer forces Claude-style JSON with `suppressOutput` under quiet Codex hooks.
|
|
18
|
+
- **Release packaging hardened**: local `.claude` session artifacts under `app/` are excluded from `npm pack`, even if they exist in a maintainer checkout.
|
|
19
|
+
- **Docs and ecosystem baseline refreshed**: README, registry, and architecture docs now match the Copilot implementation; ecosystem-doctor snapshot is refreshed for upstream Claude/Gemini docs hash drift.
|
|
20
|
+
- **Test count**: 1195 → 1198.
|
|
19
21
|
|
|
20
22
|
See [CHANGELOG.md](CHANGELOG.md) for full history.
|
|
21
23
|
|
|
@@ -104,7 +106,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
104
106
|
| Cursor | `.cursor/rules/*.mdc` + `.cursor/mcp.json` + `.cursor/skills/*` | ✅ | project (`~/.cursor/mcp.json` for MCP only) |
|
|
105
107
|
| Windsurf (Devin Desktop) | `~/.codeium/.../global_rules.md` + `~/.codeium/windsurf/skills/*` + `.devin/rules/*.md` + `.windsurf/rules/*.md` (legacy) | ✅ | global + project |
|
|
106
108
|
| Gemini CLI | `~/.gemini/GEMINI.md` | ✅ | global |
|
|
107
|
-
| GitHub Copilot | `.github/copilot-instructions.md` | — | project |
|
|
109
|
+
| GitHub Copilot | `.github/copilot-instructions.md` + `.github/instructions/*` + `.github/prompts/*` + `AGENTS.md` | — | project |
|
|
108
110
|
| Cline | `~/Documents/Cline/Rules/*.md` + `~/.cline/skills/*` + `.clinerules/*.md` | — | global + project |
|
|
109
111
|
| Roo Code | `~/.roo/rules/*.md` + `.roomodes` + `.roo/rules/*.md` | — | global rules + project |
|
|
110
112
|
| Aider | `~/.aider.conf.yml` + `.aider.conf.yml` + `CONVENTIONS.md` | — | global + project |
|
|
@@ -148,7 +150,7 @@ ai-toolkit/
|
|
|
148
150
|
│ └── ARCHITECTURE.md # Full system design
|
|
149
151
|
├── kb/ # Reference docs, procedures, plans
|
|
150
152
|
├── scripts/ # Validation, install, evaluation scripts
|
|
151
|
-
├── tests/ # Bats test suite (
|
|
153
|
+
├── tests/ # Bats test suite (1198 tests)
|
|
152
154
|
└── CHANGELOG.md
|
|
153
155
|
```
|
|
154
156
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-toolkit",
|
|
3
3
|
"description": "Professional-grade Claude Code toolkit with persona presets, skill security auditor, expanded lifecycle hooks, experimental opt-in plugin packs, benchmark harvesting, and multi-tool support.",
|
|
4
|
-
"version": "4.10.
|
|
4
|
+
"version": "4.10.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SoftSpark",
|
|
7
7
|
"url": "https://github.com/softspark"
|
package/app/hooks/loop-guard.sh
CHANGED
|
@@ -53,7 +53,6 @@ fi
|
|
|
53
53
|
COUNT=$(grep -cxF "$HASH" "$LOG" 2>/dev/null | tr -d ' ')
|
|
54
54
|
[ -z "$COUNT" ] && COUNT=0
|
|
55
55
|
if [ "$COUNT" -ge "$THRESHOLD" ]; then
|
|
56
|
-
export AI_TOOLKIT_HOOK_FORMAT=json
|
|
57
56
|
hook_emit_context "PostToolUse" \
|
|
58
57
|
"Loop guard: the same ${TOOL_NAME} action has repeated ${COUNT}x within the last ${WINDOW} steps. If you are not making progress, stop and reassess — try a different approach or ask the user — instead of retrying the identical action."
|
|
59
58
|
fi
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"last_run": "2026-06-
|
|
2
|
+
"last_run": "2026-06-23T07:06:46Z",
|
|
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": "a0c51061febc16c4",
|
|
28
28
|
"headings": [
|
|
29
29
|
"Admin",
|
|
30
30
|
"Auggie CLI",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
"claude-code": {
|
|
69
|
-
"docs_hash": "
|
|
69
|
+
"docs_hash": "c20e5688ed230a66",
|
|
70
70
|
"headings": [
|
|
71
71
|
"Core concepts",
|
|
72
72
|
"Documentation Index",
|
|
@@ -122,10 +122,10 @@
|
|
|
122
122
|
"slash command": true,
|
|
123
123
|
"sub-agent": true
|
|
124
124
|
},
|
|
125
|
-
"version": "2.1.
|
|
125
|
+
"version": "2.1.186 (Claude Code)"
|
|
126
126
|
},
|
|
127
127
|
"cline": {
|
|
128
|
-
"docs_hash": "
|
|
128
|
+
"docs_hash": "858fa542e2aacde5",
|
|
129
129
|
"headings": [
|
|
130
130
|
"API Reference",
|
|
131
131
|
"Best Practices",
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
}
|
|
169
169
|
},
|
|
170
170
|
"codex-cli": {
|
|
171
|
-
"docs_hash": "
|
|
171
|
+
"docs_hash": "eeb0e17a839b09bd",
|
|
172
172
|
"headings": [
|
|
173
173
|
"API",
|
|
174
174
|
"API Reference",
|
|
@@ -235,10 +235,10 @@
|
|
|
235
235
|
"mcp_servers": false,
|
|
236
236
|
"sandbox": true
|
|
237
237
|
},
|
|
238
|
-
"version": "codex-cli 0.
|
|
238
|
+
"version": "codex-cli 0.142.0"
|
|
239
239
|
},
|
|
240
240
|
"cursor": {
|
|
241
|
-
"docs_hash": "
|
|
241
|
+
"docs_hash": "86b6d48e8ab40d90",
|
|
242
242
|
"headings": [],
|
|
243
243
|
"markers": {
|
|
244
244
|
".cursor/rules": false,
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
}
|
|
255
255
|
},
|
|
256
256
|
"gemini-cli": {
|
|
257
|
-
"docs_hash": "
|
|
257
|
+
"docs_hash": "c3ba6d09d810f9c3",
|
|
258
258
|
"headings": [
|
|
259
259
|
"Breadcrumbs",
|
|
260
260
|
"Directory actions",
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
}
|
|
297
297
|
},
|
|
298
298
|
"github-copilot": {
|
|
299
|
-
"docs_hash": "
|
|
299
|
+
"docs_hash": "df7c22e121dbb3d1",
|
|
300
300
|
"headings": [
|
|
301
301
|
"About Copilot auto model selection",
|
|
302
302
|
"About Copilot automations",
|
|
@@ -317,6 +317,7 @@
|
|
|
317
317
|
"Still need help?"
|
|
318
318
|
],
|
|
319
319
|
"markers": {
|
|
320
|
+
"AGENTS.md": false,
|
|
320
321
|
"Copilot Chat": true,
|
|
321
322
|
"Copilot Workspace": false,
|
|
322
323
|
"Copilot cloud agent": true,
|
|
@@ -329,7 +330,7 @@
|
|
|
329
330
|
}
|
|
330
331
|
},
|
|
331
332
|
"google-antigravity": {
|
|
332
|
-
"docs_hash": "
|
|
333
|
+
"docs_hash": "e6c90b9d937dd9f0",
|
|
333
334
|
"headings": [],
|
|
334
335
|
"markers": {
|
|
335
336
|
"AGENTS.md": false,
|
|
@@ -346,7 +347,7 @@
|
|
|
346
347
|
}
|
|
347
348
|
},
|
|
348
349
|
"opencode": {
|
|
349
|
-
"docs_hash": "
|
|
350
|
+
"docs_hash": "302de3ac69940747",
|
|
350
351
|
"headings": [
|
|
351
352
|
"Add features",
|
|
352
353
|
"Ask questions",
|
|
@@ -406,8 +407,9 @@
|
|
|
406
407
|
}
|
|
407
408
|
},
|
|
408
409
|
"windsurf": {
|
|
409
|
-
"docs_hash": "
|
|
410
|
+
"docs_hash": "cdd657d4d684c68a",
|
|
410
411
|
"headings": [
|
|
412
|
+
"Accounts",
|
|
411
413
|
"Advanced",
|
|
412
414
|
"Agent Command Center",
|
|
413
415
|
"App Deploys",
|
|
@@ -420,15 +422,15 @@
|
|
|
420
422
|
"On this page",
|
|
421
423
|
"Recommended Plugins",
|
|
422
424
|
"Releases",
|
|
425
|
+
"Security",
|
|
423
426
|
"Terminal",
|
|
424
427
|
"Usage",
|
|
425
428
|
"Welcome to Devin Desktop",
|
|
426
429
|
"Windsurf Plugins",
|
|
427
430
|
"Workflows",
|
|
428
|
-
"\u200b1. Select
|
|
429
|
-
"\u200b2.
|
|
430
|
-
"\u200b3.
|
|
431
|
-
"\u200b4. Let\u2019s Surf!",
|
|
431
|
+
"\u200b1. Select your preferred theme",
|
|
432
|
+
"\u200b2. Log In / Sign Up",
|
|
433
|
+
"\u200b3. Start Building with Devin!",
|
|
432
434
|
"\u200bCustom App Icons (beta)",
|
|
433
435
|
"\u200bDevin Desktop Next",
|
|
434
436
|
"\u200bForgot to Import VS Code Configurations?",
|
|
@@ -436,8 +438,7 @@
|
|
|
436
438
|
"\u200bOnboarding",
|
|
437
439
|
"\u200bSet Up",
|
|
438
440
|
"\u200bThings to Try",
|
|
439
|
-
"\u200bUninstall Devin Desktop"
|
|
440
|
-
"\u200bUpdate Devin Desktop"
|
|
441
|
+
"\u200bUninstall Devin Desktop"
|
|
441
442
|
],
|
|
442
443
|
"markers": {
|
|
443
444
|
"AGENTS.md": true,
|
|
@@ -54,7 +54,7 @@ ai-toolkit/
|
|
|
54
54
|
generate_agents_md.py # Regenerates AGENTS.md
|
|
55
55
|
generate_cursor_rules.py # Generates .cursorrules (sources _common.py)
|
|
56
56
|
generate_windsurf.py # Generates .windsurfrules (sources _common.py)
|
|
57
|
-
generate_copilot.py # Generates .github
|
|
57
|
+
generate_copilot.py # Generates Copilot .github/* surfaces; install also injects AGENTS.md
|
|
58
58
|
generate_gemini.py # Generates GEMINI.md (sources _common.py)
|
|
59
59
|
generate_cline.py # Generates .clinerules (sources _common.py)
|
|
60
60
|
generate_roo_modes.py # Generates .roomodes
|
|
@@ -109,7 +109,7 @@ Machine (global) Project (local)
|
|
|
109
109
|
- `--editors cursor,aider` — install only selected editors
|
|
110
110
|
- (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
|
|
111
111
|
|
|
112
|
-
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`.
|
|
112
|
+
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.github/instructions/*.instructions.md` + `.github/prompts/*.prompt.md` + root `AGENTS.md` for Copilot agent instructions, `.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`.
|
|
113
113
|
|
|
114
114
|
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`).
|
|
115
115
|
|
|
@@ -116,16 +116,22 @@ by default because Codex currently renders `additionalContext` as visible hook
|
|
|
116
116
|
context in the TUI. This keeps prompt-submit output quiet while preserving hook
|
|
117
117
|
side effects and blocking decisions such as search-first Stop enforcement.
|
|
118
118
|
|
|
119
|
-
Codex
|
|
120
|
-
|
|
119
|
+
Codex hooks must not force Claude-only JSON output fields such as
|
|
120
|
+
`suppressOutput`. In particular, advisory `PostToolUse` hooks like
|
|
121
|
+
`loop-guard.sh` run in quiet/plain mode under Codex; they keep side effects but
|
|
122
|
+
do not emit hidden Claude-style context unless a future Codex runtime explicitly
|
|
123
|
+
supports that schema.
|
|
124
|
+
|
|
125
|
+
If a future Codex runtime enables JSON context output for `UserPromptSubmit`,
|
|
126
|
+
the output must be event-specific and include the event name alongside the
|
|
127
|
+
context:
|
|
121
128
|
|
|
122
129
|
```json
|
|
123
130
|
{
|
|
124
131
|
"hookSpecificOutput": {
|
|
125
132
|
"hookEventName": "UserPromptSubmit",
|
|
126
133
|
"additionalContext": "..."
|
|
127
|
-
}
|
|
128
|
-
"suppressOutput": true
|
|
134
|
+
}
|
|
129
135
|
}
|
|
130
136
|
```
|
|
131
137
|
|
|
@@ -3,9 +3,9 @@ title: "Supported Tools Registry"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.7.0"
|
|
7
7
|
created: "2026-04-23"
|
|
8
|
-
last_updated: "2026-06-
|
|
8
|
+
last_updated: "2026-06-23"
|
|
9
9
|
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."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -28,7 +28,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
28
28
|
| ID | `claude-code` |
|
|
29
29
|
| Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
|
|
30
30
|
| Release notes | https://github.com/anthropics/claude-code/releases |
|
|
31
|
-
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.
|
|
31
|
+
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
|
|
32
32
|
| 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+) |
|
|
33
33
|
| Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
|
|
34
34
|
| 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` |
|
|
@@ -79,8 +79,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
79
79
|
| Release notes | https://github.blog/changelog/label/copilot/ |
|
|
80
80
|
| Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
|
|
81
81
|
| Our generators | `scripts/generate_copilot.py` |
|
|
82
|
-
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, MCP |
|
|
83
|
-
| 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). |
|
|
82
|
+
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
|
|
83
|
+
| 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). |
|
|
84
84
|
|
|
85
85
|
### Gemini CLI
|
|
86
86
|
|
|
@@ -93,7 +93,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
93
93
|
| 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) |
|
|
94
94
|
| 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) |
|
|
95
95
|
| Version probe | `gemini --version` |
|
|
96
|
-
| Latest upstream | v0.
|
|
96
|
+
| Latest upstream | v0.47.0 (2026-06-18). 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.48 preview migrates the `coreTools` setting to `tools.core` (a tool-allowlist key we do not emit, so no generator change). |
|
|
97
97
|
|
|
98
98
|
### Cline
|
|
99
99
|
|
|
@@ -165,7 +165,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
165
165
|
| Field | Value |
|
|
166
166
|
|-------|-------|
|
|
167
167
|
| ID | `codex-cli` |
|
|
168
|
-
| 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.
|
|
168
|
+
| 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.0, 2026-06) |
|
|
169
169
|
| Release notes | https://github.com/openai/codex/releases |
|
|
170
170
|
| 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` |
|
|
171
171
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
@@ -187,7 +187,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
187
187
|
| Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
|
|
188
188
|
| 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 |
|
|
189
189
|
| Version probe | `opencode --version` |
|
|
190
|
-
| Watch item | v1.16.0 (2026-06-05)
|
|
190
|
+
| Watch item | v1.16.0 (2026-06-05) shipped an experimental v2 skill registry (flat-file skills, `slash` frontmatter key). As of the 2026-06-23 sync (upstream v1.17.9) it is still undocumented and not stabilized: the skills docs show only the nested `SKILL.md` layout with no `slash` key, so `generate_opencode*.py` is unchanged. Re-check next sync. |
|
|
191
191
|
|
|
192
192
|
---
|
|
193
193
|
|
package/llms-full.txt
CHANGED
|
@@ -6286,7 +6286,7 @@ ai-toolkit/
|
|
|
6286
6286
|
generate_agents_md.py # Regenerates AGENTS.md
|
|
6287
6287
|
generate_cursor_rules.py # Generates .cursorrules (sources _common.py)
|
|
6288
6288
|
generate_windsurf.py # Generates .windsurfrules (sources _common.py)
|
|
6289
|
-
generate_copilot.py # Generates .github
|
|
6289
|
+
generate_copilot.py # Generates Copilot .github/* surfaces; install also injects AGENTS.md
|
|
6290
6290
|
generate_gemini.py # Generates GEMINI.md (sources _common.py)
|
|
6291
6291
|
generate_cline.py # Generates .clinerules (sources _common.py)
|
|
6292
6292
|
generate_roo_modes.py # Generates .roomodes
|
|
@@ -6341,7 +6341,7 @@ Machine (global) Project (local)
|
|
|
6341
6341
|
- `--editors cursor,aider` — install only selected editors
|
|
6342
6342
|
- (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
|
|
6343
6343
|
|
|
6344
|
-
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`.
|
|
6344
|
+
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.github/instructions/*.instructions.md` + `.github/prompts/*.prompt.md` + root `AGENTS.md` for Copilot agent instructions, `.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`.
|
|
6345
6345
|
|
|
6346
6346
|
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`).
|
|
6347
6347
|
|
|
@@ -7181,16 +7181,22 @@ by default because Codex currently renders `additionalContext` as visible hook
|
|
|
7181
7181
|
context in the TUI. This keeps prompt-submit output quiet while preserving hook
|
|
7182
7182
|
side effects and blocking decisions such as search-first Stop enforcement.
|
|
7183
7183
|
|
|
7184
|
-
Codex
|
|
7185
|
-
|
|
7184
|
+
Codex hooks must not force Claude-only JSON output fields such as
|
|
7185
|
+
`suppressOutput`. In particular, advisory `PostToolUse` hooks like
|
|
7186
|
+
`loop-guard.sh` run in quiet/plain mode under Codex; they keep side effects but
|
|
7187
|
+
do not emit hidden Claude-style context unless a future Codex runtime explicitly
|
|
7188
|
+
supports that schema.
|
|
7189
|
+
|
|
7190
|
+
If a future Codex runtime enables JSON context output for `UserPromptSubmit`,
|
|
7191
|
+
the output must be event-specific and include the event name alongside the
|
|
7192
|
+
context:
|
|
7186
7193
|
|
|
7187
7194
|
```json
|
|
7188
7195
|
{
|
|
7189
7196
|
"hookSpecificOutput": {
|
|
7190
7197
|
"hookEventName": "UserPromptSubmit",
|
|
7191
7198
|
"additionalContext": "..."
|
|
7192
|
-
}
|
|
7193
|
-
"suppressOutput": true
|
|
7199
|
+
}
|
|
7194
7200
|
}
|
|
7195
7201
|
```
|
|
7196
7202
|
|
|
@@ -11891,9 +11897,9 @@ title: "Supported Tools Registry"
|
|
|
11891
11897
|
category: reference
|
|
11892
11898
|
service: ai-toolkit
|
|
11893
11899
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
11894
|
-
version: "1.
|
|
11900
|
+
version: "1.7.0"
|
|
11895
11901
|
created: "2026-04-23"
|
|
11896
|
-
last_updated: "2026-06-
|
|
11902
|
+
last_updated: "2026-06-23"
|
|
11897
11903
|
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."
|
|
11898
11904
|
---
|
|
11899
11905
|
|
|
@@ -11916,7 +11922,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11916
11922
|
| ID | `claude-code` |
|
|
11917
11923
|
| Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
|
|
11918
11924
|
| Release notes | https://github.com/anthropics/claude-code/releases |
|
|
11919
|
-
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.
|
|
11925
|
+
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
|
|
11920
11926
|
| 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+) |
|
|
11921
11927
|
| Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
|
|
11922
11928
|
| 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` |
|
|
@@ -11967,8 +11973,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11967
11973
|
| Release notes | https://github.blog/changelog/label/copilot/ |
|
|
11968
11974
|
| Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
|
|
11969
11975
|
| Our generators | `scripts/generate_copilot.py` |
|
|
11970
|
-
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, MCP |
|
|
11971
|
-
| 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). |
|
|
11976
|
+
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
|
|
11977
|
+
| 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). |
|
|
11972
11978
|
|
|
11973
11979
|
### Gemini CLI
|
|
11974
11980
|
|
|
@@ -11981,7 +11987,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11981
11987
|
| 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) |
|
|
11982
11988
|
| 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) |
|
|
11983
11989
|
| Version probe | `gemini --version` |
|
|
11984
|
-
| Latest upstream | v0.
|
|
11990
|
+
| Latest upstream | v0.47.0 (2026-06-18). 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.48 preview migrates the `coreTools` setting to `tools.core` (a tool-allowlist key we do not emit, so no generator change). |
|
|
11985
11991
|
|
|
11986
11992
|
### Cline
|
|
11987
11993
|
|
|
@@ -12053,7 +12059,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12053
12059
|
| Field | Value |
|
|
12054
12060
|
|-------|-------|
|
|
12055
12061
|
| ID | `codex-cli` |
|
|
12056
|
-
| 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.
|
|
12062
|
+
| 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.0, 2026-06) |
|
|
12057
12063
|
| Release notes | https://github.com/openai/codex/releases |
|
|
12058
12064
|
| 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` |
|
|
12059
12065
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
@@ -12075,7 +12081,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12075
12081
|
| Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
|
|
12076
12082
|
| 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 |
|
|
12077
12083
|
| Version probe | `opencode --version` |
|
|
12078
|
-
| Watch item | v1.16.0 (2026-06-05)
|
|
12084
|
+
| Watch item | v1.16.0 (2026-06-05) shipped an experimental v2 skill registry (flat-file skills, `slash` frontmatter key). As of the 2026-06-23 sync (upstream v1.17.9) it is still undocumented and not stabilized: the skills docs show only the nested `SKILL.md` layout with no `slash` key, so `generate_opencode*.py` is unchanged. Re-check next sync. |
|
|
12079
12085
|
|
|
12080
12086
|
---
|
|
12081
12087
|
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "4.10.
|
|
3
|
+
"version": "4.10.1",
|
|
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",
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
"files": [
|
|
72
72
|
"bin/",
|
|
73
73
|
"app/",
|
|
74
|
+
"!app/**/.claude",
|
|
75
|
+
"!app/**/.claude/**",
|
|
74
76
|
"!app/**/__pycache__",
|
|
75
77
|
"!app/**/*.pyc",
|
|
76
78
|
"scripts/",
|
|
@@ -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-23",
|
|
5
5
|
"tools": [
|
|
6
6
|
{
|
|
7
7
|
"id": "claude-code",
|
|
@@ -200,6 +200,7 @@
|
|
|
200
200
|
"custom agents",
|
|
201
201
|
"prompt files",
|
|
202
202
|
"instructions.md",
|
|
203
|
+
"AGENTS.md",
|
|
203
204
|
"MCP"
|
|
204
205
|
],
|
|
205
206
|
"version_probe": null
|
|
@@ -17,6 +17,12 @@ This generator produces three surfaces, all on the OSS/Free/Pro tier
|
|
|
17
17
|
Invoked manually in VS Code Copilot Chat via ``/name``. Written only
|
|
18
18
|
when ``generate()`` is called with a target directory.
|
|
19
19
|
|
|
20
|
+
GitHub Copilot code review (generally available 2026-06-18, all tiers) now
|
|
21
|
+
automatically reads the root-level ``AGENTS.md`` when generating review
|
|
22
|
+
feedback. We already emit that file via ``scripts/generate_agents_md.py``, so
|
|
23
|
+
no Copilot-specific emission is added here; ``AGENTS.md`` is tracked in this
|
|
24
|
+
tool's ``capability_markers`` in ``scripts/ecosystem_tools.json``.
|
|
25
|
+
|
|
20
26
|
Features that live on Pro/Pro+/Business/Enterprise tiers are intentionally
|
|
21
27
|
not generated (classified as class C in the ecosystem-sync SOP):
|
|
22
28
|
* ``.github/agents/*.agent.md`` — custom agent profiles (tier-gated)
|
|
@@ -352,6 +352,39 @@ def inject_with_rules(
|
|
|
352
352
|
print(f" Updated: {target_file}")
|
|
353
353
|
|
|
354
354
|
|
|
355
|
+
def _inject_text_section(target_file: Path, section: str, text: str) -> None:
|
|
356
|
+
"""Inject generated text into one marker section without touching others."""
|
|
357
|
+
target_file.parent.mkdir(parents=True, exist_ok=True)
|
|
358
|
+
existing = target_file.read_text(encoding="utf-8") if target_file.is_file() else ""
|
|
359
|
+
existing = _trim_trailing_blanks(_strip_section(existing, section))
|
|
360
|
+
|
|
361
|
+
parts: list[str] = []
|
|
362
|
+
if existing.strip():
|
|
363
|
+
parts.append(existing)
|
|
364
|
+
parts.append("")
|
|
365
|
+
parts.extend([
|
|
366
|
+
f"<!-- TOOLKIT:{section} START -->",
|
|
367
|
+
"<!-- Auto-injected by ai-toolkit. Re-run to update. -->",
|
|
368
|
+
"",
|
|
369
|
+
text.rstrip("\n"),
|
|
370
|
+
"",
|
|
371
|
+
f"<!-- TOOLKIT:{section} END -->",
|
|
372
|
+
])
|
|
373
|
+
|
|
374
|
+
output = _collapse_blank_runs("\n".join(parts) + "\n").lstrip("\n")
|
|
375
|
+
target_file.write_text(output, encoding="utf-8")
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
def _install_copilot_agents_md(cwd: Path) -> None:
|
|
379
|
+
"""Emit root AGENTS.md for GitHub Copilot without clobbering other tools."""
|
|
380
|
+
generated = run_script("generate_agents_md.py", capture=True)
|
|
381
|
+
if not generated.strip():
|
|
382
|
+
print(" ERROR: generate_agents_md.py produced no output")
|
|
383
|
+
return
|
|
384
|
+
_inject_text_section(cwd / "AGENTS.md", "copilot-agents", generated)
|
|
385
|
+
print(" Updated: AGENTS.md (Copilot agent instructions)")
|
|
386
|
+
|
|
387
|
+
|
|
355
388
|
def run_script(script_name: str, *args: str, capture: bool = False) -> str:
|
|
356
389
|
"""Run a script from the scripts/ directory (prefers .py over .sh)."""
|
|
357
390
|
scripts_dir = toolkit_dir / "scripts"
|
|
@@ -724,7 +757,7 @@ def _install_local_dry_run(reset: bool, editors: list[str] | None = None,
|
|
|
724
757
|
|
|
725
758
|
# Editor-specific dry-run messages
|
|
726
759
|
_EDITOR_DRY_RUN = {
|
|
727
|
-
"copilot": " Would inject: .github/copilot-instructions.md",
|
|
760
|
+
"copilot": " Would inject: .github/copilot-instructions.md + AGENTS.md",
|
|
728
761
|
"cursor": " Would generate: .cursorrules + .cursor/rules/*.mdc",
|
|
729
762
|
"windsurf": " Would generate: .windsurfrules + .devin/rules/*.md + .windsurf/rules/*.md",
|
|
730
763
|
"cline": " Would generate: .clinerules/*.md",
|
|
@@ -949,6 +982,7 @@ def _create_local_ai_tool_configs(cwd: Path, rules_dir: Path,
|
|
|
949
982
|
cwd / ".github" / "copilot-instructions.md",
|
|
950
983
|
rules_dir,
|
|
951
984
|
)
|
|
985
|
+
_install_copilot_agents_md(cwd)
|
|
952
986
|
# `standard` and above: emit path-specific instructions + prompt files
|
|
953
987
|
# (directory mode). `minimal` stays backwards-compatible with v2.
|
|
954
988
|
if add_copilot_dir:
|