@softspark/ai-toolkit 4.14.0 → 4.15.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 +35 -0
- package/README.md +11 -10
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/CLAUDE.md.template +3 -0
- package/app/agents/fact-checker.md +1 -1
- package/app/hooks/_search-capability.sh +3 -2
- package/app/hooks/stop-search-check.sh +2 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +73 -31
- package/kb/procedures/maintenance-sop.md +26 -13
- package/kb/procedures/release-verification-sop.md +41 -36
- package/kb/reference/architecture-overview.md +23 -7
- package/kb/reference/codex-cli-compatibility.md +96 -36
- package/kb/reference/extension-api.md +52 -9
- package/kb/reference/global-install-model.md +53 -21
- package/kb/reference/hooks-catalog.md +44 -8
- package/kb/reference/mcp-editor-compatibility.md +27 -6
- package/kb/reference/mcp-templates.md +12 -6
- package/kb/reference/opencode-compatibility.md +13 -7
- package/kb/reference/plugin-pack-conventions.md +7 -7
- package/kb/reference/skills-catalog.md +3 -3
- package/kb/reference/supported-tools-registry.md +19 -17
- package/kb/reference/windows-support.md +26 -3
- package/llms-full.txt +443 -180
- package/llms.txt +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -2
- package/scripts/codex_skill_adapter.py +448 -198
- package/scripts/dir_rules_shared.py +2 -11
- package/scripts/ecosystem_tools.json +29 -8
- package/scripts/emission.py +5 -91
- package/scripts/generate_agents_md.py +4 -87
- package/scripts/generate_codex.py +5 -95
- package/scripts/generate_codex_agents.py +242 -0
- package/scripts/generate_codex_hooks.py +648 -55
- package/scripts/generate_codex_skills.py +15 -6
- package/scripts/generate_copilot.py +771 -74
- package/scripts/generate_copilot_hooks.py +606 -0
- package/scripts/generate_cursor_hooks.py +453 -121
- package/scripts/generate_opencode_commands.py +4 -6
- package/scripts/inject_hook_cli.py +770 -205
- package/scripts/injection.py +102 -23
- package/scripts/install_steps/ai_tools.py +123 -83
- package/scripts/instruction_core.py +95 -0
- package/scripts/mcp_editors.py +934 -80
- package/scripts/mcp_manager.py +46 -26
- package/scripts/plugin.py +291 -114
- package/scripts/secure_fs.py +538 -0
- package/scripts/uninstall.py +1279 -208
|
@@ -7,8 +7,9 @@ and Gemini pointer pattern, Codex benefits from having the full skill catalog
|
|
|
7
7
|
on disk, so this generator syncs every skill in ``app/skills/`` into
|
|
8
8
|
``<target-dir>/.agents/skills/<name>/``.
|
|
9
9
|
|
|
10
|
-
The
|
|
11
|
-
|
|
10
|
+
The standalone generator keeps ``enable_codex_skills=False`` as a compatibility
|
|
11
|
+
default. Selecting Codex in the main installer installs this catalog
|
|
12
|
+
automatically; ``--codex-skills`` remains an explicit refresh option.
|
|
12
13
|
|
|
13
14
|
Implementation:
|
|
14
15
|
* Native Codex-compatible skills are symlinked to canonical ``app/skills``.
|
|
@@ -33,7 +34,12 @@ import sys
|
|
|
33
34
|
from pathlib import Path
|
|
34
35
|
|
|
35
36
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
36
|
-
from codex_skill_adapter import
|
|
37
|
+
from codex_skill_adapter import (
|
|
38
|
+
cleanup_codex_skills,
|
|
39
|
+
prepare_codex_skills_dir,
|
|
40
|
+
sync_codex_skill,
|
|
41
|
+
unmanaged_codex_skill_names,
|
|
42
|
+
)
|
|
37
43
|
from emission import skills_dir
|
|
38
44
|
|
|
39
45
|
|
|
@@ -94,15 +100,18 @@ def generate(target_dir: Path, enable_codex_skills: bool = False) -> None:
|
|
|
94
100
|
if not enable_codex_skills:
|
|
95
101
|
return
|
|
96
102
|
|
|
97
|
-
codex_skills_dir = target_dir
|
|
98
|
-
codex_skills_dir.mkdir(parents=True, exist_ok=True)
|
|
103
|
+
codex_skills_dir = prepare_codex_skills_dir(target_dir)
|
|
99
104
|
|
|
100
105
|
sources = _iter_source_skills()
|
|
106
|
+
user_names = unmanaged_codex_skill_names(codex_skills_dir, skills_dir)
|
|
101
107
|
|
|
102
108
|
linked = 0
|
|
103
109
|
adapted = 0
|
|
104
110
|
skipped = 0
|
|
105
111
|
for skill in sources:
|
|
112
|
+
if skill.name in user_names:
|
|
113
|
+
skipped += 1
|
|
114
|
+
continue
|
|
106
115
|
mode = sync_codex_skill(skill, codex_skills_dir)
|
|
107
116
|
if mode == "linked":
|
|
108
117
|
linked += 1
|
|
@@ -111,7 +120,7 @@ def generate(target_dir: Path, enable_codex_skills: bool = False) -> None:
|
|
|
111
120
|
else:
|
|
112
121
|
skipped += 1
|
|
113
122
|
|
|
114
|
-
cleanup_codex_skills(codex_skills_dir, skills_dir)
|
|
123
|
+
cleanup_codex_skills(codex_skills_dir, skills_dir, user_names)
|
|
115
124
|
|
|
116
125
|
print(
|
|
117
126
|
f" Codex skill mirror: {_count_entries(codex_skills_dir)} skills "
|