@softspark/ai-toolkit 4.13.0 → 4.14.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 CHANGED
@@ -7,6 +7,23 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v4.14.1 — Keep fact-checker on Sonnet (2026-07-14)
11
+
12
+ Patch release. Reverts one of the two agent model reassignments from v4.14.0: `fact-checker` goes back to `model: sonnet`. Claim verification is accuracy-sensitive and Haiku's recall on subtle claims did not justify the cost saving. `explorer-agent` (pure read/search) stays on `model: haiku`. No count change (44 agents, 108 skills, 1216 tests).
13
+
14
+ ### Changed
15
+ - **`fact-checker` reverted to Sonnet** — `model: haiku → model: sonnet`. Quality over cost for claim verification / RAG-accuracy checks.
16
+
17
+ ## v4.14.0 — Model refresh + effort-aware routing (2026-07-14)
18
+
19
+ Minor release. Refreshes Claude model IDs to the current generation across the toolkit, teaches the routing skill to route on `effort` (not just model tier), and moves two pure-retrieval agents to Haiku. No skill/agent/hook count change (44 agents, 108 skills, 1216 tests).
20
+
21
+ ### Changed
22
+ - **Canonical model IDs bumped** — `scripts/_common.py` `DEFAULT_CLAUDE_MODELS` now resolves `opus → claude-opus-4-8` and `sonnet → claude-sonnet-5` (`haiku → claude-haiku-4-5` unchanged). This is the single source of truth generators emit.
23
+ - **`model-routing-patterns` skill refreshed** — tier table updated to Haiku 4.5 / Sonnet 5 / Opus 4.8 with per-1M pricing, added a **Fable 5** row plus a "not the default best model" caveat (target for "strongest model" stays `claude-opus-4-8`), and a new **Effort routing** section (effort is the cheaper lever before swapping models — it does not invalidate the prompt cache). Fallback-chain example IDs updated.
24
+ - **Stale example model IDs refreshed** — `json-mode-patterns`, `prompt-caching-patterns`, and `skill-creator` code samples now reference `claude-opus-4-8`.
25
+ - **Pure-retrieval agents routed to Haiku** — `explorer-agent` (Read/Grep/Glob only) and `fact-checker` (Read only) changed from `model: sonnet` to `model: haiku`, closing the gap where the routing skill recommended Haiku workers but no agent used the tier.
26
+
10
27
  ## v4.13.0 — Claude app delivery + Devin sunset cleanup (2026-07-10)
11
28
 
12
29
  Minor release. Adds a validated distribution path for Claude Chat/Desktop/Cowork, fixes the core plugin contract, and removes the retired Cascade hook surface. Test count: 1208 → 1216 (seven deprecated Cascade assertions removed; six Claude app contract tests, three editor migration/propagation tests, two state-isolation/cleanup tests, two untagged-hook diagnostics, and two dry-run regressions added).
package/README.md CHANGED
@@ -8,16 +8,14 @@
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
9
  [![Tests](https://img.shields.io/badge/tests-1216%20passing-success)](tests/)
10
10
 
11
- ## What's New in v4.13.0
11
+ ## What's New in v4.14.1
12
12
 
13
- v4.13.0 makes the Claude app a first-class distribution target and completes the Devin/Cascade migration.
13
+ v4.14.1 refreshes Claude model IDs to the current generation, makes model routing effort-aware, and tunes agent model tiers.
14
14
 
15
- - **Claude Chat/Desktop/Cowork export**: `ai-toolkit claude-app export --verify` creates an uploadable plugin ZIP and Cowork global-instructions file. Core and registered rules are packaged as app-native skills.
16
- - **Plugin contract repaired**: the official validator now accepts the manifest; app hooks use `${CLAUDE_PLUGIN_ROOT}` instead of depending on a Claude Code install.
17
- - **Cascade cleanup**: removed the dead `.windsurf/hooks.json` generator after the 2026-07-01 sunset; `.devin/hooks.v1.json` is the live Devin hook surface.
18
- - **Devin skill-path correction**: stopped emitting undocumented `.devin/skills`; the pointer remains under the currently documented `.windsurf/skills` compatibility path.
19
- - **Ecosystem refresh**: registry expanded to 13 targets and snapshots refreshed against current official documentation.
20
- - **Test count**: 1208 → 1216 (Claude app export, editor migration/propagation, state isolation, diagnostics, and dry-run accuracy covered).
15
+ - **Current model IDs**: `scripts/_common.py` now resolves `opus claude-opus-4-8` and `sonnet claude-sonnet-5` (the single source of truth generators emit); stale `claude-opus-4-7` samples across skills refreshed.
16
+ - **Effort-aware routing**: `model-routing-patterns` gains an Effort section — tuning `output_config.effort` is the cheaper lever before swapping models, and it does not invalidate the prompt cache the way a mid-session model swap does.
17
+ - **Fable 5 tier documented**: added to the routing table with pricing and a "not the default best model" caveat — for "strongest model", the target stays `claude-opus-4-8`.
18
+ - **Agent tiers tuned**: `explorer-agent` (pure read/search) runs on `model: haiku`; `fact-checker` stays on `model: sonnet` — accuracy over cost for claim verification.
21
19
 
22
20
  See [CHANGELOG.md](CHANGELOG.md) for full history.
23
21
 
@@ -3,7 +3,7 @@
3
3
  "name": "ai-toolkit",
4
4
  "displayName": "AI Toolkit",
5
5
  "description": "Professional-grade engineering skills, agents, rules, and lifecycle guardrails for Claude Code, Claude Chat, and Cowork.",
6
- "version": "4.13.0",
6
+ "version": "4.14.1",
7
7
  "author": {
8
8
  "name": "SoftSpark",
9
9
  "url": "https://github.com/softspark"
@@ -55,7 +55,7 @@ The toolkit is organised as five stacked layers. Higher layers depend on lower l
55
55
  - A skill MAY trigger an agent (`agent: <name>` frontmatter) — that's Layer 2 calling Layer 4.
56
56
  - A hook MUST NOT call a skill — hooks are deterministic shell, skills are LLM-driven.
57
57
  - A plugin MAY bundle skills + agents + hooks, but never the inverse.
58
- - Claude Code reads CLAUDE.md across layers. Claude Chat/Cowork uses app-global/folder instructions and plugin skills instead; `claude_app.py` renders core rules into `ai-toolkit-rules` for that runtime.
58
+ - Claude Code reads CLAUDE.md across layers. Claude Chat/Cowork uses app-global/folder instructions and plugin skills instead; `ai-toolkit claude-app export` (backed by `claude_app.py`) builds the uploadable plugin ZIP + Cowork global-instructions and renders core rules into `ai-toolkit-rules` for that runtime.
59
59
 
60
60
  ---
61
61
 
@@ -2,7 +2,7 @@
2
2
  name: explorer-agent
3
3
  description: "Codebase exploration and discovery agent. Use for mapping project structure, finding dependencies, understanding architecture, and research. Does NOT write code - only reads and analyzes."
4
4
  tools: Read, Grep, Glob
5
- model: sonnet
5
+ model: haiku
6
6
  color: cyan
7
7
  skills: clean-code
8
8
  ---
@@ -30,7 +30,7 @@ tools = [{
30
30
  }]
31
31
 
32
32
  response = client.messages.create(
33
- model="claude-opus-4-7",
33
+ model="claude-opus-4-8",
34
34
  max_tokens=1024,
35
35
  tools=tools,
36
36
  tool_choice={"type": "tool", "name": "record_analysis"},
@@ -55,7 +55,7 @@ When tool use is unavailable (some SDKs/proxies strip it):
55
55
 
56
56
  ```python
57
57
  response = client.messages.create(
58
- model="claude-opus-4-7",
58
+ model="claude-opus-4-8",
59
59
  max_tokens=1024,
60
60
  system="You return ONLY valid JSON. No prose, no markdown fences.",
61
61
  messages=[{
@@ -12,13 +12,30 @@ Three Claude tiers. Using Opus for everything is 10-40x more expensive than it n
12
12
 
13
13
  ## Model Characteristics (2026)
14
14
 
15
- | Model | Latency | Cost (rel.) | Strengths | When |
16
- |-------|---------|-------------|-----------|------|
17
- | Haiku 4.5 | Fastest | 1x | Classification, extraction, simple tools, moderation | Bulk processing, triage, labels |
18
- | Sonnet 4.6 | Medium | 3-5x | General coding, reasoning, most agent tasks | Default workhorse |
19
- | Opus 4.7 | Slowest | 15-30x | Complex reasoning, orchestration, architecture, large context | Hard, rare, high-stakes |
15
+ | Model | $/1M in·out | Cost (rel.) | Strengths | When |
16
+ |-------|-------------|-------------|-----------|------|
17
+ | Haiku 4.5 | $1 / $5 | 1x | Classification, extraction, simple tools, moderation | Bulk processing, triage, labels |
18
+ | Sonnet 5 | $3 / $15 | ~3x | General coding, reasoning, most agent tasks | Default workhorse |
19
+ | Opus 4.8 | $5 / $25 | ~5x | Complex reasoning, orchestration, architecture, large context | Hard, rare, high-stakes |
20
+ | Fable 5 | $10 / $50 | ~10x | Most demanding long-horizon agentic work | Only when explicitly chosen |
20
21
 
21
- Ratios are approximate and shift between releases. Re-check pricing before committing a production path.
22
+ Prices are per 1M tokens; ratios are approximate and shift between releases. Re-check pricing before committing a production path.
23
+
24
+ > **Fable 5 is not the default "best model".** Its price sits above Opus-tier, and Opus 4.8 is state-of-the-art on planning/orchestration at half the input and output cost. Reach for Fable 5 only when the user explicitly asks for it or a benchmarked task genuinely needs it — for "use the strongest model", the target is `claude-opus-4-8`.
25
+
26
+ ## Effort — the cheaper lever before swapping models
27
+
28
+ On Fable 5 / Opus 4.8 / Sonnet 5, `output_config.effort` (`low` | `medium` | `high` | `xhigh` | `max`) controls thinking depth and token spend **without changing the model** — so it does not invalidate the prompt cache the way a mid-session model swap does. Tune effort first; drop to a cheaper model only when effort alone can't hit the cost target.
29
+
30
+ | Effort | Use for |
31
+ |--------|---------|
32
+ | `low` | Latency-sensitive, non-intelligence-sensitive: chat, simple lookups, cheap subagents |
33
+ | `medium` | Cost-conscious step-down from the default |
34
+ | `high` | Default for most intelligence-sensitive work (a good quality/cost balance) |
35
+ | `xhigh` | Hardest coding and agentic tasks (Claude Code's default) |
36
+ | `max` | Correctness matters more than cost; test for diminishing returns |
37
+
38
+ In our agents, effort is set per skill/agent frontmatter (`effort:`), not swapped at runtime. Combine effort routing with model routing: e.g. `sonnet` at `high` often beats `opus` at `low` for cost-equal quality — benchmark before committing.
22
39
 
23
40
  ## Pattern 1 — Complexity Router (pre-classify)
24
41
 
@@ -69,7 +86,7 @@ When primary is rate-limited or errors, degrade gracefully:
69
86
 
70
87
  ```python
71
88
  def call_with_fallback(messages):
72
- for model in ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5"]:
89
+ for model in ["claude-opus-4-8", "claude-sonnet-5", "claude-haiku-4-5"]:
73
90
  try:
74
91
  return client.messages.create(model=model, messages=messages, ...)
75
92
  except (RateLimitError, OverloadedError):
@@ -24,7 +24,7 @@ from anthropic import Anthropic
24
24
 
25
25
  client = Anthropic()
26
26
  response = client.messages.create(
27
- model="claude-opus-4-7",
27
+ model="claude-opus-4-8",
28
28
  max_tokens=1024,
29
29
  system=[
30
30
  {
@@ -90,7 +90,7 @@ Target ratio for a well-tuned loop: `cache_read / (cache_read + input) > 0.7`. B
90
90
 
91
91
  ```typescript
92
92
  const response = await anthropic.messages.create({
93
- model: "claude-opus-4-7",
93
+ model: "claude-opus-4-8",
94
94
  max_tokens: 1024,
95
95
  system: [
96
96
  { type: "text", text: LONG_SYSTEM, cache_control: { type: "ephemeral" } }
@@ -33,7 +33,7 @@ Create a new skill following the Agent Skills standard.
33
33
  | `user-invocable` | bool | no | `false` = knowledge skill, Claude auto-loads |
34
34
  | `allowed-tools` | csv or YAML list | no | Restrict tool access for safety; YAML-style lists accepted |
35
35
  | `disallowedTools` | csv or YAML list | no | Block specific tools (plugin-shipped agents) |
36
- | `model` | string | no | Override default model (accepts full IDs like `claude-opus-4-7`) |
36
+ | `model` | string | no | Override default model (accepts full IDs like `claude-opus-4-8`) |
37
37
  | `context` | string | no | `fork` to run in isolated subagent |
38
38
  | `agent` | string | no | Agent type to use when `context: fork` |
39
39
  | `skills` | csv | no | Auto-load skills for the invoked subagent |
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.13.0",
2
+ "version": "4.14.1",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "4.13.0",
3
+ "version": "4.14.1",
4
4
  "description": "AI coding toolkit: 108 skills, 44 agents, 12 developer-tool integrations plus Claude Chat/Cowork plugin export, machine-enforced safety constitution, SARIF audit, signed npm provenance.",
5
5
  "keywords": [
6
6
  "claude",
@@ -79,8 +79,8 @@ skills_dir: Path = app_dir / "skills"
79
79
  # the client at runtime and do NOT need updating here.
80
80
  # ---------------------------------------------------------------------------
81
81
  DEFAULT_CLAUDE_MODELS: dict[str, str] = {
82
- "opus": "claude-opus-4-7",
83
- "sonnet": "claude-sonnet-4-6",
82
+ "opus": "claude-opus-4-8",
83
+ "sonnet": "claude-sonnet-5",
84
84
  "haiku": "claude-haiku-4-5",
85
85
  }
86
86