@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 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: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-99-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-664%20passing-success)](tests/)
9
+ [![Tests](https://img.shields.io/badge/tests-666%20passing-success)](tests/)
10
10
 
11
11
  ---
12
12
 
13
- ## What's New in v2.7.0
13
+ ## What's New in v2.7.2
14
14
 
15
- - **5 new skills aligned with Anthropic ecosystem** `/mcp-builder` (task skill: 4-phase MCP server build methodology, research → implement → test → evaluate) and 4 knowledge skills auto-loaded for Claude API work: `prompt-caching-patterns`, `json-mode-patterns`, `content-moderation-patterns`, `model-routing-patterns`. Skill count: 94 → 99.
16
- - **2 new output styles** in `app/output-styles/` `learning` (interactive "your turn" prompts on meaningful decisions) and `explanatory` (★ Insight blocks surfacing implementation trade-offs). Both stack with the existing `golden-rules` style.
17
- - **`/review` secrets scanner hardened** — `diff-analyzer.py` now tracks actual file line numbers (not diff offsets) per hunk, detects renames via `git diff --numstat -z`, surfaces a `warnings[]` array when falling back from branch diff to staged, and expands secret patterns (JWT, PEM private keys, Google API, Slack tokens, GitHub fine-grained PAT, unquoted env-style). Category regex tightened with word boundaries and anchored path patterns (`docs/role-permissions.md` is no longer miscategorised as security). 4 fixture tests in `tests/test_review_diff_analyzer.bats`.
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 (664 tests)
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.0",
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 | 31 |
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 | 32 |
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.0",
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": "94 skills (31 task + 31 hybrid + 32 knowledge)",
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": "94 skills (task, hybrid, knowledge)",
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.0",
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",
@@ -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: claude-sonnet-4-6")
38
- print("editor-model: claude-sonnet-4-6")
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(