@softspark/ai-toolkit 2.0.1 → 2.1.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 CHANGED
@@ -7,6 +7,43 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v2.1.0 — Codex CLI Support & Native Editor MCP Install (2026-04-13)
11
+
12
+ ### Added
13
+ - **Codex CLI as 10th editor** — full support via `--editors codex`: `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*`, `.codex/hooks.json`
14
+ - **Codex skill translation layer** — Claude-only orchestration skills (orchestrate, workflow, swarm, teams, subagent-development) are automatically translated to Codex-native `spawn_agent`/`update_plan` wrappers; native skills are symlinked directly
15
+ - **Native editor MCP install** — `ai-toolkit mcp install --editor <name> --scope project|global` renders canonical `.mcp.json` templates into 8 editor-native config formats (Claude, Cursor, Copilot, Gemini, Windsurf, Cline, Augment, Codex)
16
+ - **MCP auto-sync on local install** — `install --local` mirrors `.mcp.json` into `.claude/settings.local.json` plus selected project editors (Cursor, Copilot)
17
+ - **`mcp editors` subcommand** — lists all supported native MCP adapters with scope/path info
18
+ - **Cross-editor verification SOP** — mandatory check against official docs before adding any component
19
+ - **Runtime-aware plugin installs** — `ai-toolkit plugin install|update|remove|status --editor claude|codex|all` now targets Claude and a global Codex plugin layer consistently
20
+ - **Global Codex plugin layer** — plugin packs can bootstrap `~/AGENTS.md`, `~/.agents/`, and `~/.codex/hooks.json` without changing the default project-local Codex core install model
21
+ - **Plugin lifecycle tests** — coverage for install/update/remove behavior across Claude and Codex runtimes, including shared asset retention
22
+ - **Safe Codex and Cline rule regeneration** — `generate_codex_rules.py` and `generate_cline_rules.py` now support `--skip-cleanup` to refresh standard generated rules without deleting custom overlays
23
+
24
+ ### New Files
25
+ - `scripts/mcp_editors.py` — 8 native MCP config adapters
26
+ - `scripts/codex_skill_adapter.py` — skill translation layer for Codex
27
+ - `scripts/generate_codex.py` — AGENTS.md generator with Codex orchestration guidance
28
+ - `scripts/generate_codex_hooks.py` — `.codex/hooks.json` generator
29
+ - `scripts/generate_codex_rules.py` — `.agents/rules/*.md` generator
30
+ - `kb/reference/codex-cli-compatibility.md` — Codex mapping reference
31
+ - `kb/reference/mcp-editor-compatibility.md` — native MCP support matrix
32
+ - `tests/test_plugin.bats` — runtime-aware plugin install/remove coverage
33
+
34
+ ### Changed
35
+ - **Release workflow** — `generate:all` now refreshes tracked Codex rules and uses the directory-based Cline generator that matches the current repository layout
36
+ - **Documentation** — README, KB references, maintenance SOPs, and generated artifacts now consistently describe the Claude + global Codex plugin model
37
+
38
+ ---
39
+
40
+ ## v2.0.2 — Clean Legacy Directory Removal (2026-04-12)
41
+
42
+ ### Fixed
43
+ - **Migration cleanup** — `~/.ai-toolkit/` is now fully removed after migration instead of leaving an empty directory with a `.migrated` marker
44
+
45
+ ---
46
+
10
47
  ## v2.0.1 — Migration Hook Path Fix (2026-04-12)
11
48
 
12
49
  ### Fixed
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # ai-toolkit
2
2
 
3
- > Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 92 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling — works with Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, and Google Antigravity, ready in 60 seconds.
3
+ > Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 92 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling — works with Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity, and Codex CLI, ready in 60 seconds.
4
4
 
5
5
  [![CI](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml/badge.svg)](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-92-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-575%20passing-success)](tests/)
9
+ [![Tests](https://img.shields.io/badge/tests-598%20passing-success)](tests/)
10
10
 
11
11
  ---
12
12
 
@@ -36,7 +36,7 @@ After global install, run `--local` in each project. By default, only Claude Cod
36
36
  ```bash
37
37
  cd your-project/
38
38
  ai-toolkit install --local # Claude Code only
39
- ai-toolkit install --local --editors all # + all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity)
39
+ ai-toolkit install --local --editors all # + all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity, Codex)
40
40
  ai-toolkit install --local --editors cursor,aider # + specific editors
41
41
  ai-toolkit update --local # auto-detects editors from existing project files
42
42
  ```
@@ -45,13 +45,19 @@ ai-toolkit update --local # auto-detects editors from exist
45
45
 
46
46
  ```bash
47
47
  ai-toolkit plugin list # show available packs
48
- ai-toolkit plugin install --all # install all packs
49
- ai-toolkit plugin update --all # re-apply after toolkit updates
50
- ai-toolkit plugin status # show what's installed
48
+ ai-toolkit plugin install --editor all --all # install all packs for Claude + Codex
49
+ ai-toolkit plugin install --editor codex memory-pack # Codex global target
50
+ ai-toolkit plugin update --editor all --all # re-apply after toolkit updates
51
+ ai-toolkit plugin status --editor all # show what's installed per runtime
51
52
  ai-toolkit plugin clean memory-pack --days 30 # prune old data
52
53
  ```
53
54
 
54
- After each `ai-toolkit update`, also run `ai-toolkit plugin update --all` to keep plugin hooks and scripts in sync.
55
+ `plugin` is editor-aware:
56
+ - `--editor claude` targets global Claude install in `~/.claude/`
57
+ - `--editor codex` targets global Codex assets in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`)
58
+ - `--editor all` applies both
59
+
60
+ After each `ai-toolkit update`, also run `ai-toolkit plugin update --editor all --all` to keep plugin hooks and scripts in sync.
55
61
 
56
62
  ### Install Profiles
57
63
 
@@ -139,9 +145,9 @@ Compiles the full toolkit (20K+ tokens) into a minimal system prompt that fits S
139
145
  | Aider | `.aider.conf.yml` + `CONVENTIONS.md` | `ai-toolkit install --local` | project |
140
146
  | Augment | `.augment/rules/ai-toolkit-*.md` | `ai-toolkit install --local` | project |
141
147
  | Google Antigravity | `.agent/rules/*.md` + `.agent/workflows/*.md` | `ai-toolkit install --local` | project |
142
- | Codex / OpenCode | `AGENTS.md` | `ai-toolkit agents-md` | project |
148
+ | Codex CLI | `AGENTS.md` + `.agents/rules/*.md` + `.agents/skills/*` + `.codex/hooks.json` | `ai-toolkit install --local` for project files, `ai-toolkit plugin install --editor codex` for global plugin layer | project + optional global plugin layer |
143
149
 
144
- > **Note:** Claude Code is always installed (primary platform with full feature support). Other editors are installed on demand with `--editors <list>` or auto-detected from existing project files. All platforms receive the same agent/skill catalog, guidelines, rules, language-specific rules, and registered custom rules. For editors lacking native bash lifecycle hooks, `--local` installs a Git hooks fallback (`.git/hooks/pre-commit`) to enforce quality gates pre-commit.
150
+ > **Note:** Claude Code is always installed (primary platform with full feature support). Other editors are installed on demand with `--editors <list>` or auto-detected from existing project files. All platforms receive the same agent/skill catalog, guidelines, rules, language-specific rules, and registered custom rules. Codex CLI core install remains project-local and receives all 92 skills via `.agents/skills/`: native Codex-compatible skills are symlinked directly, while Claude-native orchestration skills are translated into Codex subagent workflows during install. Experimental plugin packs can additionally target a global Codex surface in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`). For editors lacking native bash lifecycle hooks, `--local` installs a Git hooks fallback (`.git/hooks/pre-commit`) to enforce quality gates pre-commit.
145
151
 
146
152
  ---
147
153
 
@@ -524,10 +530,27 @@ Agents follow a research-before-action protocol enforced via rules:
524
530
  ai-toolkit mcp add github slack # add GitHub + Slack MCP servers
525
531
  ai-toolkit mcp list # browse all 25 templates
526
532
  ai-toolkit mcp show postgres # inspect config before adding
533
+ ai-toolkit mcp install --editor cursor --scope project github --target .
534
+ ai-toolkit mcp install --editor codex context7
527
535
  ```
528
536
 
529
537
  Templates include: GitHub, PostgreSQL, Slack, Sentry, Context7, Brave Search, Supabase, Cloudflare, Vercel, and 16 more. Each is a validated JSON config fragment merged into `.mcp.json`.
530
538
 
539
+ Native editor MCP install is available where the client exposes a stable config format:
540
+
541
+ | Editor | Scope | Native MCP Config |
542
+ |--------|-------|-------------------|
543
+ | Claude Code | project + global | `.claude/settings.local.json`, `~/.claude/settings.json` |
544
+ | Cursor | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` |
545
+ | GitHub Copilot | project + global | `.github/mcp.json`, `~/.copilot/mcp-config.json` |
546
+ | Gemini CLI | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` |
547
+ | Windsurf | global | `~/.codeium/windsurf/mcp_config.json` |
548
+ | Cline | global | `~/.cline/data/settings/cline_mcp_settings.json` |
549
+ | Augment | global | `~/.augment/settings.json` |
550
+ | Codex CLI | global | `~/.codex/config.toml` |
551
+
552
+ `install --local` now auto-syncs project `.mcp.json` into Claude project settings plus selected project editors that support repository/workspace MCP configs (`cursor`, `copilot`). Global-only clients are configured explicitly with `ai-toolkit mcp install --editor ...`.
553
+
531
554
  ---
532
555
 
533
556
  ## Language Rules
@@ -552,6 +575,7 @@ When `--editors` is used alongside detected or explicit languages, language rule
552
575
  | Roo Code | `.roo/rules/ai-toolkit-lang-<lang>.md` | always loaded |
553
576
  | Augment | `.augment/rules/ai-toolkit-lang-<lang>.md` | `agent_requested` with globs |
554
577
  | Antigravity | `.agent/rules/ai-toolkit-lang-<lang>.md` | always loaded |
578
+ | Codex CLI | `.agents/rules/ai-toolkit-lang-<lang>.md` | always loaded |
555
579
 
556
580
  Registered rules (`ai-toolkit add-rule`) are also propagated to directory-based editor configs as `ai-toolkit-custom-<name>` files.
557
581
 
@@ -667,7 +691,7 @@ ai-toolkit update # global update + parallel update ALL projects
667
691
  | Effort-based model budgeting | **Yes** | No | No | No |
668
692
  | Test suite | Yes (bats) | Yes (997 tests) | No | Yes |
669
693
  | npm/npx install | Yes | Yes | Yes | Yes |
670
- | Cross-tool support | **Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity** | 5+ tools | Smithery | Limited |
694
+ | Cross-tool support | **Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex** | 5+ tools | Smithery | Limited |
671
695
  | Selective install | Yes | Yes | Yes (72 plugins) | No |
672
696
  | Session persistence | Yes | Yes | No | No |
673
697
  | Architecture notes | **Yes** | No | No | No |
@@ -708,7 +732,7 @@ Pre-configured team presets via `/teams`:
708
732
  | Aider | `.aider.conf.yml` | project |
709
733
  | Augment | `.augment/rules/ai-toolkit-*.md` | project |
710
734
  | Google Antigravity | `.agent/rules/` + `.agent/workflows/` | project |
711
- | Codex / OpenCode | `AGENTS.md` | project |
735
+ | Codex CLI | `AGENTS.md` + `.agents/rules/` + `.agents/skills/` + `.codex/hooks.json` | project + optional global plugin layer in `HOME` |
712
736
 
713
737
  ```bash
714
738
  # First-time install (Claude + Cursor + Windsurf + Gemini)
@@ -720,7 +744,7 @@ ai-toolkit update
720
744
  # Init project (Claude Code configs only: CLAUDE.md, settings, constitution, language rules)
721
745
  ai-toolkit install --local
722
746
 
723
- # Init with all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity)
747
+ # Init with all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity, Codex)
724
748
  ai-toolkit install --local --editors all
725
749
 
726
750
  # Update project — auto-detects editors from existing config files
@@ -807,9 +831,11 @@ Usage: ai-toolkit <command> [options]
807
831
  | `inject-hook <file.json>` | Inject external hooks into settings.json (idempotent, `_source` tagged) |
808
832
  | `remove-hook <name>` | Remove injected hooks by source name |
809
833
  | `mcp list` | List available MCP server templates (25 templates) |
834
+ | `mcp editors` | List editors with native MCP config adapters and scopes |
810
835
  | `mcp add <name> [names...]` | Add MCP server template(s) to `.mcp.json` |
836
+ | `mcp install --editor <name[,..]> [names...]` | Install templates into native editor MCP config |
811
837
  | `mcp show <name>` | Show MCP template config details |
812
- | `mcp remove <name>` | Remove MCP server from `.mcp.json` |
838
+ | `mcp remove <name>` | Remove MCP server from `.mcp.json` or editor MCP config |
813
839
  | `config validate [path]` | Validate `.softspark-toolkit.json` schema + extends + enforcement |
814
840
  | `config diff [path]` | Show project vs base config differences |
815
841
  | `config init [flags]` | Create `.softspark-toolkit.json` (`--extends`, `--profile`, `--no-extends`) |
@@ -823,13 +849,13 @@ Usage: ai-toolkit <command> [options]
823
849
  | `doctor --fix` | Auto-repair broken symlinks, missing hooks, stale artifacts |
824
850
  | `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
825
851
  | `plugin list` | Show available plugin packs with install status |
826
- | `plugin install <name>` | Install a plugin pack (hooks, scripts, verify agents/skills) |
827
- | `plugin install --all` | Install all 11 plugin packs |
828
- | `plugin update <name>` | Update a plugin pack (remove + reinstall, preserves data) |
829
- | `plugin update --all` | Update all installed plugin packs |
852
+ | `plugin install <name> [--editor claude|codex|all]` | Install a plugin pack for selected runtime(s) |
853
+ | `plugin install --all [--editor claude|codex|all]` | Install all 11 plugin packs for selected runtime(s) |
854
+ | `plugin update <name> [--editor claude|codex|all]` | Update a plugin pack (remove + reinstall, preserves data) |
855
+ | `plugin update --all [--editor claude|codex|all]` | Update all installed plugin packs for selected runtime(s) |
830
856
  | `plugin clean <name> [--days N]` | Prune old plugin data (default: 90 days) |
831
- | `plugin remove <name>` | Remove a plugin pack |
832
- | `plugin status` | Show installed plugins with data stats (DB size, observation count) |
857
+ | `plugin remove <name> [--editor claude|codex|all]` | Remove a plugin pack from selected runtime(s) |
858
+ | `plugin status [--editor claude|codex|all]` | Show installed plugins with runtime-specific details |
833
859
  | `stats` | Show skill usage statistics (`--reset` to clear, `--json` for raw output) |
834
860
  | `benchmark --my-config` | Compare your installed config vs toolkit defaults vs ecosystem |
835
861
  | `benchmark-ecosystem` | Generate a benchmark snapshot for official Claude Code and external ecosystem repos |
@@ -852,6 +878,9 @@ Usage: ai-toolkit <command> [options]
852
878
  | `cline-dir-rules` | Generate `.cline/rules/*.md` for Cline |
853
879
  | `roo-dir-rules` | Generate `.roo/rules/*.md` for Roo Code |
854
880
  | `antigravity-rules` | Generate `.agent/rules/` and `.agent/workflows/` for Google Antigravity |
881
+ | `codex-md` | Generate `AGENTS.md` with marker injection for Codex CLI |
882
+ | `codex-rules` | Generate `.agents/rules/*.md` for Codex CLI |
883
+ | `codex-hooks` | Generate `.codex/hooks.json` for Codex CLI (9 hooks in 4 events) |
855
884
  | `agents-md` | Regenerate `AGENTS.md` from agent definitions |
856
885
  | `llms-txt` | Generate `llms.txt` and `llms-full.txt` |
857
886
  | `generate-all` | Generate all platform configs at once |
@@ -865,7 +894,7 @@ ai-toolkit install --skip hooks # skip listed components
865
894
  ai-toolkit install --profile minimal # profile preset: minimal | standard | strict
866
895
  ai-toolkit install --persona backend-lead # persona preset: backend-lead | frontend-lead | devops-eng | junior-dev
867
896
  ai-toolkit install --local # Claude Code only (CLAUDE.md, settings, constitution, language rules)
868
- ai-toolkit install --local --editors all # Claude Code + all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity)
897
+ ai-toolkit install --local --editors all # Claude Code + all editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity, Codex)
869
898
  ai-toolkit install --local --editors cursor,aider # Claude Code + specific editors
870
899
  ai-toolkit update --local # re-apply; auto-detects editors from existing project files
871
900
  ai-toolkit install --list # dry-run: show what would be applied
@@ -307,7 +307,7 @@ Lead Session (You)
307
307
  ### Language Rules (70 files, 13 languages)
308
308
  `app/rules/` contains per-language coding rules. Supported languages: TypeScript, Python, Go, Rust, Java, Kotlin, Swift, Dart, C#, PHP, C++, Ruby, and common (shared). Auto-detected from project files via `--auto-detect` or selected with `--modules rules-<lang>`.
309
309
 
310
- Language rules are propagated to **all configured editors** — not just Claude. `dir_rules_shared.build_language_rules()` reads `app/rules/<lang>/*.md`, strips frontmatter, and returns combined content per language. Each directory-based generator (Cursor, Windsurf, Cline, Roo, Augment, Antigravity) emits `ai-toolkit-lang-<lang>` files in its native format. Registered custom rules (`~/.softspark/ai-toolkit/rules/`) are similarly propagated as `ai-toolkit-custom-<name>` files via `build_registered_rules()`.
310
+ Language rules are propagated to **all configured editors** — not just Claude. `dir_rules_shared.build_language_rules()` reads `app/rules/<lang>/*.md`, strips frontmatter, and returns combined content per language. Each directory-based generator (Cursor, Windsurf, Cline, Roo, Augment, Antigravity, Codex) emits `ai-toolkit-lang-<lang>` files in its native format. Registered custom rules (`~/.softspark/ai-toolkit/rules/`) are similarly propagated as `ai-toolkit-custom-<name>` files via `build_registered_rules()`.
311
311
 
312
312
  ### Extension API (`inject-hook`)
313
313
  The `inject_section_cli.py` script provides a stable marker-based injection API. Any tool can add sections to `CLAUDE.md`, `constitution.md`, or `ARCHITECTURE.md` without overwriting user content, using `<!-- TOOLKIT:START:<id> -->` / `<!-- TOOLKIT:END:<id> -->` markers.
@@ -5,10 +5,15 @@ Experimental opt-in plugin packs that group existing ai-toolkit assets by domain
5
5
  These packs are **not** installed automatically by `ai-toolkit install` and are **not** part of the default install.
6
6
  They serve three purposes:
7
7
 
8
- 1. formalize a plugin-pack contract compatible with Claude Code plugin manifests,
8
+ 1. formalize a plugin-pack contract for runtime-aware plugin installation,
9
9
  2. provide curated bundles by domain,
10
10
  3. give `plugin-creator` a concrete scaffold to follow.
11
11
 
12
+ Plugin packs can target:
13
+ - Claude global runtime via `ai-toolkit plugin install --editor claude <name>`
14
+ - Codex global plugin layer via `ai-toolkit plugin install --editor codex <name>`
15
+ - both runtimes via `ai-toolkit plugin install --editor all <name>`
16
+
12
17
  Current packs:
13
18
  - `security-pack`
14
19
  - `research-pack`
@@ -16,4 +21,3 @@ Current packs:
16
21
  - `enterprise-pack`
17
22
 
18
23
  See `kb/reference/plugin-pack-conventions.md` for pack rules, validation, and adoption guidance.
19
-
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: plugin-creator
3
- description: "Creates experimental opt-in Claude Code plugin packs with manifests, conventions, and optional module scaffolding"
3
+ description: "Creates experimental opt-in plugin packs with manifests, conventions, and optional module scaffolding for Claude and Codex runtimes"
4
4
  effort: high
5
5
  disable-model-invocation: true
6
6
  argument-hint: "[plugin pack name or domain]"
@@ -11,7 +11,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
11
11
 
12
12
  $ARGUMENTS
13
13
 
14
- Create a new experimental opt-in Claude Code plugin pack following ai-toolkit conventions.
14
+ Create a new experimental opt-in plugin pack following ai-toolkit conventions.
15
15
 
16
16
  ## Workflow
17
17
 
@@ -64,7 +64,7 @@ app/plugins/<plugin-name>/
64
64
  - Prefer referencing existing toolkit assets before duplicating them
65
65
  - Pack manifests must be valid JSON with `name`, `description`, `version`, `domain`, `type`, `status`, and `includes`
66
66
  - Optional hooks must be executable and documented in the pack README
67
- - If the pack introduces policy or hook behavior, document install/opt-in semantics clearly, including that the pack is not part of the default install
67
+ - If the pack introduces policy or hook behavior, document install/opt-in semantics clearly, including supported runtimes (`claude`, `codex`, or `all`) and that the pack is not part of the default install
68
68
  - Experimental packs should remain opt-in and must not silently alter default global install behavior
69
69
 
70
70
  ## Validation Checklist
@@ -75,4 +75,3 @@ app/plugins/<plugin-name>/
75
75
  - [ ] Optional hooks are executable and use `#!/bin/bash`
76
76
  - [ ] `scripts/validate.py` passes
77
77
  - [ ] Public docs mention the pack only after the manifest and README exist
78
-
package/bin/ai-toolkit.js CHANGED
@@ -29,6 +29,7 @@ const GENERATORS = {
29
29
  'aider-conf': { script: 'generate_aider_conf.py', dest: '.aider.conf.yml' },
30
30
  'augment-rules': { script: 'generate_augment.py', dest: path.join('.augment', 'rules', 'ai-toolkit.md'), mkdir: '.augment/rules' },
31
31
  'agents-md': { script: 'generate_agents_md.py', dest: 'AGENTS.md' },
32
+ 'codex-md': { script: 'generate_codex.py', dest: 'AGENTS.md' },
32
33
  };
33
34
 
34
35
  // ---------------------------------------------------------------------------
@@ -74,7 +75,7 @@ const COMMANDS = {
74
75
  evaluate: 'Run skill evaluation suite',
75
76
  stats: 'Show skill usage statistics (--reset to clear, --json for raw output)',
76
77
  create: 'Scaffold new skill from template (e.g. create skill my-lint --template=linter)',
77
- mcp: 'Manage MCP server templates (list, show, add, remove)',
78
+ mcp: 'Manage MCP templates and install native editor MCP configs',
78
79
  config: 'Manage config inheritance (validate, diff, init, create-base, check)',
79
80
  projects: 'List and manage registered projects (--prune, remove <path>)',
80
81
  plugin: 'Manage plugin packs (install, remove, update, clean, list, status)',
@@ -94,10 +95,13 @@ const COMMANDS = {
94
95
  'augment-rules': 'Generate .augment/rules/ai-toolkit.md for Augment (legacy)',
95
96
  'augment-dir-rules': 'Generate .augment/rules/ai-toolkit-*.md for Augment (recommended)',
96
97
  'antigravity-rules': 'Generate .agent/rules/ and .agent/workflows/ for Google Antigravity',
98
+ 'codex-md': 'Generate AGENTS.md for OpenAI Codex CLI',
99
+ 'codex-rules': 'Generate .agents/rules/ for OpenAI Codex CLI',
100
+ 'codex-hooks': 'Generate .codex/hooks.json for OpenAI Codex CLI',
97
101
  'agents-md': 'Regenerate AGENTS.md from agent definitions',
98
102
  'compile-slm': 'Compile toolkit into a minimal SLM system prompt (--budget, --model-size, --dry-run)',
99
103
  'llms-txt': 'Generate llms.txt and llms-full.txt',
100
- 'generate-all': 'Generate all platform configs at once (agents, cursor, windsurf, copilot, gemini, cline, roo, aider, augment, antigravity, llms)',
104
+ 'generate-all': 'Generate all platform configs at once (agents, cursor, windsurf, copilot, gemini, cline, roo, aider, augment, antigravity, codex, llms)',
101
105
  help: 'Show this help message',
102
106
  };
103
107
 
@@ -230,20 +234,25 @@ function showHelp() {
230
234
  console.log(' <rule-file> Path to .md rule file to register globally');
231
235
  console.log(' [rule-name] Override rule name (default: filename without .md)');
232
236
  console.log('\nOptions for plugin:');
233
- console.log(' install <name> Install a plugin pack (copies hooks, links skills/agents)');
234
- console.log(' install --all Install all available plugin packs');
237
+ console.log(' install <name> Install a plugin pack (--editor claude|codex|all)');
238
+ console.log(' install --all Install all available plugin packs for selected editor(s)');
235
239
  console.log(' update <name> Update a plugin pack (remove + reinstall)');
236
- console.log(' update --all Update all installed plugin packs');
240
+ console.log(' update --all Update all installed plugin packs for selected editor(s)');
237
241
  console.log(' clean <name> Prune old data (e.g. memory-pack --days 30)');
238
242
  console.log(' remove <name> Remove a plugin pack');
239
243
  console.log(' remove --all Remove all installed plugins');
240
244
  console.log(' list Show available plugin packs with install status');
241
245
  console.log(' status Show currently installed plugins with data stats');
246
+ console.log(' --editor <list> Runtime target: claude, codex, or all (default: claude)');
242
247
  console.log('\nOptions for mcp:');
243
248
  console.log(' list List available MCP templates');
249
+ console.log(' editors List editors with native MCP config adapters');
244
250
  console.log(' show <name> Show template details');
245
251
  console.log(' add <name> [names..] [--target <path>] Add servers to .mcp.json');
246
- console.log(' remove <name> Remove a server from .mcp.json');
252
+ console.log(' install --editor <name[,..]> [--scope project|global] [--target <path>] [names..]');
253
+ console.log(' Install templates into native editor MCP config');
254
+ console.log(' remove <name> [--editor <name[,..]>] [--scope project|global] [--target <path>]');
255
+ console.log(' Remove from .mcp.json or native editor configs');
247
256
  console.log('\nOptions for doctor:');
248
257
  console.log(' --fix Auto-repair detected issues');
249
258
  console.log('\nOptions for eject:');
@@ -372,7 +381,7 @@ function handleRemoveHook(args) {
372
381
  */
373
382
  function handleMcp(args) {
374
383
  if (args.length === 0) {
375
- console.error('Usage: ai-toolkit mcp <list|show|add|remove> [args..]');
384
+ console.error('Usage: ai-toolkit mcp <list|editors|show|add|install|remove> [args..]');
376
385
  process.exit(1);
377
386
  }
378
387
  run(scriptPath('mcp_manager.py'), args);
@@ -404,6 +413,8 @@ function handleGenerateAll(_args) {
404
413
  run(scriptPath('generate_cline_rules.py'), [CWD]);
405
414
  run(scriptPath('generate_roo_rules.py'), [CWD]);
406
415
  run(scriptPath('generate_augment_rules.py'), [CWD]);
416
+ run(scriptPath('generate_codex_rules.py'), [CWD]);
417
+ run(scriptPath('generate_codex_hooks.py'), [CWD]);
407
418
  // Single-file generators
408
419
  const conventionsOut = runGenerator('generate_conventions.py');
409
420
  fs.writeFileSync(path.join(CWD, 'CONVENTIONS.md'), conventionsOut);
@@ -501,6 +512,8 @@ const SPECIAL_HANDLERS = {
501
512
  'roo-dir-rules': (_args) => run(scriptPath('generate_roo_rules.py'), [CWD]),
502
513
  'conventions-md': (_args) => { const out = runGenerator('generate_conventions.py'); fs.writeFileSync(path.join(CWD, 'CONVENTIONS.md'), out); console.log('Generated: CONVENTIONS.md'); },
503
514
  'augment-dir-rules': (_args) => run(scriptPath('generate_augment_rules.py'), [CWD]),
515
+ 'codex-rules': (_args) => run(scriptPath('generate_codex_rules.py'), [CWD]),
516
+ 'codex-hooks': (_args) => run(scriptPath('generate_codex_hooks.py'), [CWD]),
504
517
  'generate-all': handleGenerateAll,
505
518
  };
506
519
 
@@ -3,9 +3,9 @@ title: "SOP: Claude Toolkit Maintenance"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, maintenance, agents, skills, install]
6
- version: "1.4.2"
6
+ version: "1.4.4"
7
7
  created: "2026-03-23"
8
- last_updated: "2026-04-10"
8
+ last_updated: "2026-04-13"
9
9
  description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
10
10
  ---
11
11
 
@@ -34,7 +34,7 @@ ai-toolkit install --local --editors all # all supported editor
34
34
  ai-toolkit install --local --editors cursor,aider # specific editors only
35
35
  ```
36
36
 
37
- Supported editors: `cursor`, `windsurf`, `cline`, `roo`, `aider`, `augment`, `copilot`, `antigravity`.
37
+ Supported editors: `cursor`, `windsurf`, `cline`, `roo`, `aider`, `augment`, `copilot`, `antigravity`, `codex`.
38
38
 
39
39
  To restrict which language rules are injected, use `--lang`:
40
40
 
@@ -194,22 +194,22 @@ Use `PreToolUse` for blocking validations, `PostToolUse` for non-blocking feedba
194
194
  ## Managing Plugins
195
195
 
196
196
  ```bash
197
- ai-toolkit plugin list # show available packs
198
- ai-toolkit plugin install <name> # install a single pack
199
- ai-toolkit plugin install --all # install all 11 packs
200
- ai-toolkit plugin update <name> # update a pack (preserves data)
201
- ai-toolkit plugin update --all # update all installed packs
202
- ai-toolkit plugin clean <name> # prune data older than 90 days
197
+ ai-toolkit plugin list # show available packs
198
+ ai-toolkit plugin install --editor claude <name> # install for Claude global target
199
+ ai-toolkit plugin install --editor codex <name> # install for Codex global target
200
+ ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
201
+ ai-toolkit plugin update --editor all --all # re-apply all installed packs after toolkit updates
202
+ ai-toolkit plugin clean <name> # prune data older than 90 days
203
203
  ai-toolkit plugin clean <name> --days 30 # custom retention
204
- ai-toolkit plugin remove <name> # remove a pack
205
- ai-toolkit plugin status # show installed packs with data stats
204
+ ai-toolkit plugin remove --editor codex <name> # remove from one runtime only
205
+ ai-toolkit plugin status --editor all # show installed packs with runtime details
206
206
  ```
207
207
 
208
- Install copies hooks/scripts, verifies agents+skills are linked, merges hooks into `settings.json`, and runs init scripts. Update removes and reinstalls from current source (data preserved). Clean prunes old plugin data. Remove reverses install but leaves data intact. Core agents/skills are never removed.
208
+ Install copies hooks/scripts, verifies agents+skills are linked, merges hooks into the selected runtime config, and runs init scripts. For Codex, the selected runtime is the global `HOME` layer (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`). Update removes and reinstalls from current source while preserving plugin data. Clean prunes old plugin data. Remove reverses install for the selected runtime but leaves plugin data intact. Core agents/skills are never removed.
209
209
 
210
210
  Memory-pack auto-prunes observations older than 90 days on every session end (configurable via `MEMORY_RETENTION_DAYS`).
211
211
 
212
- State tracked in `~/.softspark/ai-toolkit/plugins.json`.
212
+ State is tracked per runtime in `~/.softspark/ai-toolkit/plugins.json`. After every `ai-toolkit update`, also run `ai-toolkit plugin update --editor all --all` if plugin packs are installed.
213
213
 
214
214
  ## Adding a KB Document
215
215
 
@@ -229,6 +229,51 @@ Follow the `documentation-standards` knowledge skill (`app/skills/documentation-
229
229
  2. `chmod +x` the script
230
230
  3. Reference: `` python3 ${CLAUDE_SKILL_DIR}/scripts/script.py . ``
231
231
 
232
+ ## Cross-Editor Verification (Mandatory)
233
+
234
+ **Every addition — skill, hook, MCP template, agent, rule — MUST be verified against all supported editors before merge.**
235
+
236
+ This toolkit targets 10 platforms. Each has its own config format, file path conventions, and runtime capabilities. A feature that works in Claude Code may silently break in Cursor, Codex, or Copilot if the editor's official spec diverges.
237
+
238
+ ### Verification checklist
239
+
240
+ When adding or modifying any toolkit component:
241
+
242
+ 1. **Check official docs** — before implementing, fetch the editor's current documentation (web search or Context7) to confirm the config format, file path, and feature support haven't changed
243
+ 2. **Validate output format** — ensure the generated file matches what the editor expects (JSON schema, TOML structure, MDC frontmatter, directory naming)
244
+ 3. **Test scope rules** — verify project-local vs global behavior matches the editor's own scope model
245
+ 4. **Confirm feature parity** — if the feature relies on runtime primitives (hooks, MCP, agent delegation), check whether the target editor supports them; document gaps in `kb/reference/` if not
246
+
247
+ ### Editor documentation sources
248
+
249
+ | Editor | Where to verify |
250
+ |--------|----------------|
251
+ | Claude Code | `docs.anthropic.com/claude-code` |
252
+ | Cursor | `docs.cursor.com` |
253
+ | Windsurf | `docs.codeium.com/windsurf` |
254
+ | GitHub Copilot | `docs.github.com/copilot` |
255
+ | Gemini CLI | `github.com/google-gemini/gemini-cli` |
256
+ | Cline | `github.com/cline/cline` |
257
+ | Roo Code | `github.com/RooVetGit/Roo-Code` |
258
+ | Aider | `aider.chat` |
259
+ | Augment | `docs.augmentcode.com` |
260
+ | Codex CLI | `github.com/openai/codex` |
261
+ | Google Antigravity | `developers.google.com/project-idx` |
262
+
263
+ ### When to do this
264
+
265
+ - Adding a new skill → verify it renders correctly for Codex `.agents/skills/` and all directory-based editors
266
+ - Adding a new hook → verify event name is valid in Claude and check `.codex/hooks.json` compatibility
267
+ - Adding a new MCP template → verify it installs correctly for all 8 native adapters (`mcp_editors.py`)
268
+ - Modifying generator output → check that every editor-specific generator still produces valid output
269
+ - Adding a new editor → verify ALL existing features render correctly for the new target
270
+
271
+ ### Anti-pattern
272
+
273
+ Do NOT assume an editor's format based on memory or past behavior. Editors ship breaking changes to their config surfaces. Always verify against current official docs before implementation.
274
+
275
+ ---
276
+
232
277
  ## Quality Checks
233
278
 
234
279
  ```bash
@@ -254,14 +299,17 @@ ai-toolkit benchmark-ecosystem --offline # benchmark snapshot
254
299
  Changes propagate instantly to all machines via symlinks. After any change:
255
300
 
256
301
  ```bash
257
- npm run generate:all # FIRST: regenerate AGENTS.md, llms.txt, all platform configs
302
+ npm run generate:all # FIRST: regenerate AGENTS.md, Codex rules, llms.txt, and platform configs
258
303
  scripts/validate.py # then validate — must pass before commit
259
304
  npm test # then test — must pass before commit
260
305
  ```
261
306
 
262
307
  Run `generate:all` before validate and test so that generated artifacts are current when
263
- the metadata contract tests run. Committing without regenerating first causes artifact
264
- drift and fails CI.
308
+ the metadata contract tests run. Directory-based rule generators now use ownership-aware
309
+ cleanup: repo regeneration manages only standard generated files, while `install/update`
310
+ manages standard, language, and custom overlays together. That keeps regeneration safe
311
+ without leaving stale standard artifacts behind. Committing without regenerating first
312
+ causes artifact drift and fails CI.
265
313
 
266
314
  ## Release Checklist
267
315
 
@@ -5,7 +5,7 @@ service: ai-toolkit
5
5
  tags: [sop, release, version, publish, changelog, semver]
6
6
  version: "1.5.0"
7
7
  created: "2026-04-10"
8
- last_updated: "2026-04-10"
8
+ last_updated: "2026-04-13"
9
9
  description: "Step-by-step checklist for preparing a new ai-toolkit release — version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag."
10
10
  ---
11
11
 
@@ -38,6 +38,7 @@ python3 scripts/sync_version.py X.Y.Z # if script exists, else manual
38
38
  # 3. Write CHANGELOG.md entry
39
39
  # 4. Regenerate artifacts
40
40
  python3 scripts/generate_agents_md.py > AGENTS.md
41
+ python3 scripts/generate_codex_rules.py .
41
42
  python3 scripts/generate_llms_txt.py > llms.txt
42
43
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
43
44
 
@@ -161,6 +162,7 @@ Add entry at the top of `CHANGELOG.md` (after the header, before previous releas
161
162
 
162
163
  ```bash
163
164
  python3 scripts/generate_agents_md.py > AGENTS.md
165
+ python3 scripts/generate_codex_rules.py .
164
166
  python3 scripts/generate_llms_txt.py > llms.txt
165
167
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
166
168
  ```
@@ -268,7 +270,7 @@ git push origin --delete vX.Y.Z
268
270
  | 5 | `package-lock.json` | `npm install --package-lock-only` | Matches target |
269
271
  | 6 | Count sync | Check `package.json` description, README | `validate.py` passes |
270
272
  | 7 | CHANGELOG.md | Add release entry | Entry exists for vX.Y.Z |
271
- | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_llms_txt.py` | No unexpected diff |
273
+ | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_codex_rules.py`, `generate_llms_txt.py` | No unexpected diff |
272
274
  | 9 | Validate | `validate.py --strict` | 0 errors, 0 warnings |
273
275
  | 10 | Security audit | `audit_skills.py --ci` | 0 HIGH |
274
276
  | 11 | Tests | `npm test` | All pass |
@@ -5,7 +5,7 @@ service: ai-toolkit
5
5
  tags: [sop, verification, release, smoke-test, install, update, qa]
6
6
  version: "1.1.0"
7
7
  created: "2026-04-08"
8
- last_updated: "2026-04-08"
8
+ last_updated: "2026-04-13"
9
9
  description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, install, doctor, validation, tests, and eject from user perspective."
10
10
  ---
11
11
 
@@ -31,21 +31,22 @@ Verifies all critical paths from the user's perspective.
31
31
 
32
32
  ## Quick Checklist (TL;DR)
33
33
 
34
- 9 commands — if all pass, the release is ready:
34
+ 10 commands — if all pass, the release is ready:
35
35
 
36
36
  ```bash
37
37
  # Pre-commit (Phase 0)
38
- python3 scripts/generate_agents_md.py > AGENTS.md # 1. Regenerate artifacts
39
- python3 scripts/generate_llms_txt.py > llms.txt # 2. Regenerate llms.txt
40
- python3 scripts/validate.py --strict # 3. Validation passed?
41
- npm test # 4. All tests passed?
38
+ python3 scripts/generate_agents_md.py > AGENTS.md # 1. Regenerate AGENTS.md
39
+ python3 scripts/generate_codex_rules.py . # 2. Refresh standard Codex rules
40
+ python3 scripts/generate_llms_txt.py > llms.txt # 3. Regenerate llms.txt
41
+ python3 scripts/validate.py --strict # 4. Validation passed?
42
+ npm test # 5. All tests passed?
42
43
 
43
44
  # Post-install verification (Phases 1-7)
44
- ai-toolkit --version # 5. Version OK?
45
- ai-toolkit status # 6. Status OK?
46
- ai-toolkit doctor # 7. Health check passed?
47
- ai-toolkit install --dry-run # 8. Global install OK?
48
- python3 scripts/audit_skills.py --ci # 9. Security audit clean?
45
+ ai-toolkit --version # 6. Version OK?
46
+ ai-toolkit status # 7. Status OK?
47
+ ai-toolkit doctor # 8. Health check passed?
48
+ ai-toolkit install --dry-run # 9. Global install OK?
49
+ python3 scripts/audit_skills.py --ci # 10. Security audit clean?
49
50
  ```
50
51
 
51
52
  ---
@@ -58,6 +59,7 @@ counts but does NOT auto-regenerate — you must do it locally.
58
59
  ```bash
59
60
  # 1. Regenerate generated artifacts
60
61
  python3 scripts/generate_agents_md.py > AGENTS.md
62
+ python3 scripts/generate_codex_rules.py .
61
63
  python3 scripts/generate_llms_txt.py > llms.txt
62
64
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
63
65
 
@@ -71,7 +73,7 @@ python3 scripts/audit_skills.py --ci
71
73
  npm test
72
74
 
73
75
  # 5. Stage and commit
74
- git add AGENTS.md llms.txt llms-full.txt
76
+ git add AGENTS.md .agents/rules/ai-toolkit-*.md llms.txt llms-full.txt
75
77
  git add -p # stage your other changes
76
78
  git commit -m "feat: your change description"
77
79
  ```
@@ -82,7 +84,7 @@ by the developer as part of their PR.
82
84
 
83
85
  **One-liner (copy-paste):**
84
86
  ```bash
85
- python3 scripts/generate_agents_md.py > AGENTS.md && python3 scripts/generate_llms_txt.py > llms.txt && python3 scripts/generate_llms_txt.py --full > llms-full.txt && python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
87
+ python3 scripts/generate_agents_md.py > AGENTS.md && python3 scripts/generate_codex_rules.py . && python3 scripts/generate_llms_txt.py > llms.txt && python3 scripts/generate_llms_txt.py --full > llms-full.txt && python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
86
88
  ```
87
89
 
88
90
  ---