@softspark/ai-toolkit 2.7.0 → 2.7.2
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 +22 -0
- package/README.md +6 -8
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/agents/ai-engineer.md +2 -0
- package/llms-full.txt +2 -2
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/scripts/_common.py +13 -0
- package/scripts/eject.py +17 -1
- package/scripts/generate_aider_conf.py +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,28 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v2.7.2 — Doc & Model-ID Consistency (2026-04-17)
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **Centralized Claude model IDs** — introduced `DEFAULT_CLAUDE_MODELS` dict in `scripts/_common.py` (single source of truth: `claude-opus-4-7`, `claude-sonnet-4-6`, `claude-haiku-4-5`). `scripts/generate_aider_conf.py` now imports the constant instead of hardcoding `claude-sonnet-4-6`. Next Anthropic model bump touches one file. Agent frontmatter aliases (`opus`/`sonnet`/`haiku`) stay version-free and are resolved at runtime.
|
|
14
|
+
- **`app/agents/ai-engineer.md`** now points to the `model-routing-patterns` skill as the single source of truth for current Claude IDs, cost tiers, and fallback chains instead of duplicating a tier table that would drift with every Anthropic release.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- **`GEMINI.md` missed 5 skills from v2.7.0** — `generate:all` was not re-run before the v2.7.0 release tag, so `GEMINI.md` did not list `prompt-caching-patterns`, `json-mode-patterns`, `content-moderation-patterns`, `model-routing-patterns`, or `/mcp-builder`. Regenerated.
|
|
18
|
+
- **`manifest.json` stale skill counts** — `components.skills.description` and `modules.skills.description` still reported `94 skills (31 task + 31 hybrid + 32 knowledge)` instead of the current `99 skills (32 task + 31 hybrid + 36 knowledge)`. Fixed in 2 places.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## v2.7.1 — Eject Output-Styles Fix (2026-04-17)
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **`ai-toolkit eject` now exports `app/output-styles/*.md`** — pre-existing gap dating back to when output-styles were introduced. `scripts/eject.py` copied agents, skills, rules, constitution, and ARCHITECTURE, but silently skipped the `output-styles/` directory. Standalone `.claude/` produced by eject had no system-prompt styles (no `golden-rules`, and after v2.7.0 no `learning`/`explanatory`). Now eject writes `.claude/output-styles/` with all source `.md` files and includes the count in the summary line: `Ejected: N agents, N skills, N rules, N output style(s)`.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **2 `tests/test_eject.bats` cases** — `eject copies output-styles directory with all source styles` (also asserts `golden-rules.md` baseline) and `eject reports output-style count in summary line`. Test count: 664 → 666.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
10
32
|
## v2.7.0 — Anthropic Ecosystem Alignment (2026-04-17)
|
|
11
33
|
|
|
12
34
|
### Added
|
package/README.md
CHANGED
|
@@ -6,17 +6,15 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](app/skills/)
|
|
8
8
|
[](app/agents/)
|
|
9
|
-
[](tests/)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
## What's New in v2.7.
|
|
13
|
+
## What's New in v2.7.2
|
|
14
14
|
|
|
15
|
-
- **
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
- **Frontmatter Schema reference** — new section in `app/ARCHITECTURE.md` and canonical spec mirror at `kb/reference/agent-skills-spec.md` (in rag-mcp KB). Documents ai-toolkit's extensions beyond `agentskills.io/specification` and the comma-separated `allowed-tools` convention enforced by `codex_skill_adapter.py` and `audit_skills.py`.
|
|
19
|
-
- **Test count:** 660 → 664.
|
|
15
|
+
- **Centralized Claude model IDs** in `scripts/_common.py` (`DEFAULT_CLAUDE_MODELS` dict). Next Anthropic model bump touches one file instead of hunting through generators.
|
|
16
|
+
- **`GEMINI.md` regenerated** to include 5 skills missed at v2.7.0 tag: `prompt-caching-patterns`, `json-mode-patterns`, `content-moderation-patterns`, `model-routing-patterns`, `/mcp-builder`.
|
|
17
|
+
- **`manifest.json` skill count corrected** — `94 skills (31/31/32)` → `99 skills (32/31/36)` in both component and module descriptions.
|
|
20
18
|
|
|
21
19
|
See [CHANGELOG.md](CHANGELOG.md) for full history.
|
|
22
20
|
|
|
@@ -144,7 +142,7 @@ ai-toolkit/
|
|
|
144
142
|
│ └── ARCHITECTURE.md # Full system design
|
|
145
143
|
├── kb/ # Reference docs, procedures, plans
|
|
146
144
|
├── scripts/ # Validation, install, evaluation scripts
|
|
147
|
-
├── tests/ # Bats test suite (
|
|
145
|
+
├── tests/ # Bats test suite (666 tests)
|
|
148
146
|
└── CHANGELOG.md
|
|
149
147
|
```
|
|
150
148
|
|
|
@@ -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": "2.7.
|
|
4
|
+
"version": "2.7.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SoftSpark",
|
|
7
7
|
"url": "https://github.com/softspark"
|
|
@@ -64,6 +64,8 @@ AI/ML integration specialist for production systems, including RAG pipeline desi
|
|
|
64
64
|
| Complex reasoning | Large | Claude Opus, GPT-4 |
|
|
65
65
|
| Local/private | Open | Llama, Mistral |
|
|
66
66
|
|
|
67
|
+
For current Claude model IDs, cost tiers, and fallback chains see the `model-routing-patterns` skill — the single source of truth that gets bumped with each Anthropic release.
|
|
68
|
+
|
|
67
69
|
### Embedding Selection
|
|
68
70
|
| Use Case | Model |
|
|
69
71
|
|----------|-------|
|
package/llms-full.txt
CHANGED
|
@@ -4647,9 +4647,9 @@ Three tiers determine how to approach a task:
|
|
|
4647
4647
|
|
|
4648
4648
|
| Type | Field | Invocation | Count |
|
|
4649
4649
|
|------|-------|-----------|-------|
|
|
4650
|
-
| Task | `disable-model-invocation: true` | User via `/skill` only |
|
|
4650
|
+
| Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
|
|
4651
4651
|
| Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
|
|
4652
|
-
| Knowledge | `user-invocable: false` | Claude auto-loads |
|
|
4652
|
+
| Knowledge | `user-invocable: false` | Claude auto-loads | 36 |
|
|
4653
4653
|
|
|
4654
4654
|
## Multi-Agent Execution
|
|
4655
4655
|
|
package/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.7.
|
|
2
|
+
"version": "2.7.2",
|
|
3
3
|
"components": {
|
|
4
4
|
"agents": {
|
|
5
5
|
"description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"tags": ["core", "agents"]
|
|
10
10
|
},
|
|
11
11
|
"skills": {
|
|
12
|
-
"description": "
|
|
12
|
+
"description": "99 skills (32 task + 31 hybrid + 36 knowledge)",
|
|
13
13
|
"path": "app/skills",
|
|
14
14
|
"target": ".claude/skills",
|
|
15
15
|
"type": "symlink",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"default": true
|
|
91
91
|
},
|
|
92
92
|
"skills": {
|
|
93
|
-
"description": "
|
|
93
|
+
"description": "99 skills (task, hybrid, knowledge)",
|
|
94
94
|
"default": true
|
|
95
95
|
},
|
|
96
96
|
"rules-common": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.2",
|
|
4
4
|
"description": "Professional-grade AI coding toolkit: 99 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity, Codex CLI, opencode), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
package/scripts/_common.py
CHANGED
|
@@ -72,6 +72,19 @@ agents_dir: Path = app_dir / "agents"
|
|
|
72
72
|
skills_dir: Path = app_dir / "skills"
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
# ---------------------------------------------------------------------------
|
|
76
|
+
# Default Claude model IDs (single source of truth — bump on Anthropic release)
|
|
77
|
+
# Consumed by generators that need to emit a concrete model string.
|
|
78
|
+
# Aliases like "opus"/"sonnet"/"haiku" in agent frontmatter are resolved by
|
|
79
|
+
# the client at runtime and do NOT need updating here.
|
|
80
|
+
# ---------------------------------------------------------------------------
|
|
81
|
+
DEFAULT_CLAUDE_MODELS: dict[str, str] = {
|
|
82
|
+
"opus": "claude-opus-4-7",
|
|
83
|
+
"sonnet": "claude-sonnet-4-6",
|
|
84
|
+
"haiku": "claude-haiku-4-5",
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
75
88
|
# ---------------------------------------------------------------------------
|
|
76
89
|
# Component filtering (for install/update)
|
|
77
90
|
# ---------------------------------------------------------------------------
|
package/scripts/eject.py
CHANGED
|
@@ -7,6 +7,7 @@ target directory with no symlinks and no dependency on ai-toolkit.
|
|
|
7
7
|
What it exports:
|
|
8
8
|
- .claude/agents/*.md (real files, not symlinks)
|
|
9
9
|
- .claude/skills/*/ (real directories, not symlinks)
|
|
10
|
+
- .claude/output-styles/*.md (system-prompt styles)
|
|
10
11
|
- .claude/CLAUDE.md (inlined rules)
|
|
11
12
|
- .claude/constitution.md (full content)
|
|
12
13
|
- .claude/ARCHITECTURE.md (full content)
|
|
@@ -90,6 +91,21 @@ def main() -> None:
|
|
|
90
91
|
rule_count += 1
|
|
91
92
|
print(f" Inlined: {rule_count} rules into CLAUDE.md")
|
|
92
93
|
|
|
94
|
+
# -- Output styles: copy as real files -----------------------------------
|
|
95
|
+
print("## Output Styles")
|
|
96
|
+
style_count = 0
|
|
97
|
+
styles_src = app_dir / "output-styles"
|
|
98
|
+
if styles_src.is_dir():
|
|
99
|
+
styles_out = claude_dir / "output-styles"
|
|
100
|
+
styles_out.mkdir(parents=True, exist_ok=True)
|
|
101
|
+
for style in sorted(styles_src.glob("*.md")):
|
|
102
|
+
dest = styles_out / style.name
|
|
103
|
+
if dest.is_symlink():
|
|
104
|
+
dest.unlink()
|
|
105
|
+
shutil.copy2(style, dest)
|
|
106
|
+
style_count += 1
|
|
107
|
+
print(f" Copied: {style_count} output style(s)")
|
|
108
|
+
|
|
93
109
|
# -- Constitution and Architecture ---------------------------------------
|
|
94
110
|
print("## Config Files")
|
|
95
111
|
for filename in ("constitution.md", "ARCHITECTURE.md"):
|
|
@@ -104,7 +120,7 @@ def main() -> None:
|
|
|
104
120
|
# -- Summary -------------------------------------------------------------
|
|
105
121
|
print()
|
|
106
122
|
print("========================")
|
|
107
|
-
print(f"Ejected: {agent_count} agents, {skill_count} skills, {rule_count} rules")
|
|
123
|
+
print(f"Ejected: {agent_count} agents, {skill_count} skills, {rule_count} rules, {style_count} output style(s)")
|
|
108
124
|
print()
|
|
109
125
|
print(f"The toolkit is now standalone in {target_dir.resolve()}/.claude/")
|
|
110
126
|
print("You can safely run: npm uninstall -g @softspark/ai-toolkit")
|
|
@@ -10,8 +10,11 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
12
12
|
|
|
13
|
+
from _common import DEFAULT_CLAUDE_MODELS
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
def main() -> None:
|
|
17
|
+
default_model = DEFAULT_CLAUDE_MODELS["sonnet"]
|
|
15
18
|
print("# Aider configuration generated by ai-toolkit")
|
|
16
19
|
print("# Regenerate using: ai-toolkit install --local")
|
|
17
20
|
print()
|
|
@@ -34,8 +37,8 @@ def main() -> None:
|
|
|
34
37
|
print(' - "go: go vet"')
|
|
35
38
|
print()
|
|
36
39
|
print("# Model configuration")
|
|
37
|
-
print("model:
|
|
38
|
-
print("editor-model:
|
|
40
|
+
print(f"model: {default_model}")
|
|
41
|
+
print(f"editor-model: {default_model}")
|
|
39
42
|
print()
|
|
40
43
|
print("# Auto-commit message formatting (matches our conventional commits)")
|
|
41
44
|
print(
|