@softspark/ai-toolkit 4.0.0 → 4.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 +59 -0
- package/README.md +13 -2
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/rules/output-mode.md +28 -0
- package/kb/reference/architecture-overview.md +2 -2
- package/llms-full.txt +2 -2
- package/manifest.json +2 -2
- package/package.json +1 -1
- package/scripts/dir_rules_shared.py +20 -0
- package/scripts/generator_base.py +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,65 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v4.1.0 — Default `output-mode: concise` propagated to all editors (2026-05-06)
|
|
11
|
+
|
|
12
|
+
Minor release. Adds a global `output-mode: concise` directive that propagates to every editor config produced by ai-toolkit. Reduces token usage and removes preamble/filler from assistant responses across Claude Code, Cursor, Windsurf, Cline, Roo Code, Augment, Codex, Antigravity, GitHub Copilot, Gemini CLI, and Aider.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`app/rules/output-mode.md`** — auto-injected into `~/.claude/CLAUDE.md` (global) and project-local `CLAUDE.md` via the existing `inject_rules()` mechanism on every `ai-toolkit install` / `ai-toolkit update`.
|
|
17
|
+
- **`rule_output_mode()` in `scripts/dir_rules_shared.py`** — registered in `STANDARD_RULES`, so directory-based generators (Cursor `.mdc`, Windsurf, Cline, Roo, Augment, Codex, Antigravity) emit a dedicated `ai-toolkit-output-mode.md` file alongside the other six standard rules.
|
|
18
|
+
- **Output Mode block in `scripts/generator_base.render_generator()`** — single-file editor outputs (`GEMINI.md`, `.github/copilot-instructions.md`, `.cursorrules`, Aider `CONVENTIONS.md`) now include the directive between TOOLKIT markers.
|
|
19
|
+
|
|
20
|
+
### Directives
|
|
21
|
+
|
|
22
|
+
The `concise` mode applies these rules to assistant responses:
|
|
23
|
+
|
|
24
|
+
- No preamble — skip "I'll now…", "Sure, let me…", "Great question!"
|
|
25
|
+
- Lead with the result; explanation only if asked or non-obvious.
|
|
26
|
+
- Max 3 sentences per closed question.
|
|
27
|
+
- Tables and lists over prose for comparisons, steps, values.
|
|
28
|
+
- No trailing summaries when the diff or output already shows what changed.
|
|
29
|
+
- Drop filler adjectives ("nice", "great", "powerful", "robust").
|
|
30
|
+
- Cite as `path:line`, not paragraphs of location prose.
|
|
31
|
+
- Escalate to verbose only for architecture / RFC / ADR / trade-off documents or explicit user request.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- **Standard rule count for directory-based generators: 6 → 7**. Tests updated: `tests/test_generators.bats` (count assertions in two cases bumped from 6/8 to 7/9).
|
|
36
|
+
|
|
37
|
+
### How to opt out
|
|
38
|
+
|
|
39
|
+
- Per-session: `/brand-voice default` (or `/brand-voice strict` for tighter)
|
|
40
|
+
- Per-project: edit `output-mode:` value in project's `CLAUDE.md` or strip the `<!-- TOOLKIT:output-mode -->` block manually
|
|
41
|
+
- Re-install without rules: `ai-toolkit install --skip rules`
|
|
42
|
+
|
|
43
|
+
### Why
|
|
44
|
+
|
|
45
|
+
User feedback after v4.0.x consolidation: asked for a hook-like mechanism to enforce concise responses. The `brand-voice` skill already had `concise`/`strict` modes (shipped v3.2.0) but activation required per-project opt-in. This release flips the default to opt-out — every editor that consumes ai-toolkit configs now sees the directive immediately after install/update.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## v4.0.1 — CI hotfix: README "What You Get" table counts (2026-05-06)
|
|
50
|
+
|
|
51
|
+
Patch release. Fixes CI failure on v4.0.0 main branch — three `tests/test_metadata_contracts.bats` cases failed because the `What You Get` table in `README.md` and the skill type table in `kb/reference/architecture-overview.md` still referenced pre-consolidation counts (32 task / 32 hybrid / 48 knowledge).
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- **README.md `What You Get` table**: hybrid 32 → 30, knowledge 48 → 45 (task unchanged at 32; total 107).
|
|
56
|
+
- **`kb/reference/architecture-overview.md`**: same correction in the skill type table.
|
|
57
|
+
- **`manifest.json`**: skill subtype description updated from `(30 task + 31 hybrid + 46 knowledge)` to the correct `(32 task + 30 hybrid + 45 knowledge)`.
|
|
58
|
+
|
|
59
|
+
### Why
|
|
60
|
+
|
|
61
|
+
v4.0.0 release path missed these three count locations. They are gated by the metadata contract test suite, which I misread locally (the trailing `ok 1047` line is the *last test number*, not a pass count). Confirmed by re-running `bats tests/test_metadata_contracts.bats` directly, which shows three `not ok` failures.
|
|
62
|
+
|
|
63
|
+
### Process note
|
|
64
|
+
|
|
65
|
+
Lesson for future releases: always inspect `bats … 2>&1 | grep "^not ok"` rather than trusting tail of npm test. Updating the release-verification SOP separately.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
10
69
|
## v4.0.0 — Skill consolidation: 112 → 107, removes 5 overlapping skills (2026-05-06)
|
|
11
70
|
|
|
12
71
|
**Breaking release.** Five redundant skills removed; their substantive knowledge migrated into the surviving targets. Resolves the `/skills` listing truncation that v3.5.x partially addressed and removes user-facing overlap that made dispatch ambiguous.
|
package/README.md
CHANGED
|
@@ -14,6 +14,17 @@
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## What's New in v4.1.0
|
|
18
|
+
|
|
19
|
+
Default `output-mode: concise` directive now propagates to every editor config (Claude Code global + project-local CLAUDE.md, Cursor `.mdc` rules, Windsurf, Cline, Roo, Augment, Codex `.agents/rules`, Antigravity, GitHub Copilot, Gemini CLI, Aider). Auto-installed on every `ai-toolkit install` / `ai-toolkit update`. The `brand-voice` skill (shipped v3.2.0) auto-loads concise rules; assistants without that skill still see the directive in their config.
|
|
20
|
+
|
|
21
|
+
- **No preamble**, lead with the result, max 3 sentences per closed question, tables over prose, no trailing summaries.
|
|
22
|
+
- **Opt out**: `/brand-voice default` (session) or strip `<!-- TOOLKIT:output-mode -->` block from CLAUDE.md (permanent).
|
|
23
|
+
|
|
24
|
+
## What's New in v4.0.1
|
|
25
|
+
|
|
26
|
+
CI hotfix for v4.0.0. Corrects skill subtype counts in `README.md` "What You Get" table and `kb/reference/architecture-overview.md` (hybrid 32 → 30, knowledge 48 → 45). The metadata contract tests caught the drift on CI; v4.0.0 release path missed three count locations. No skill catalog changes — see v4.0.0 below for the actual consolidation.
|
|
27
|
+
|
|
17
28
|
## What's New in v4.0.0
|
|
18
29
|
|
|
19
30
|
**Breaking release.** Skill catalog consolidated from 112 → 107: removes 5 redundant skills, merges their substantive knowledge into the surviving targets. Eliminates `/skills` truncation and removes overlap that confused agent dispatch.
|
|
@@ -138,8 +149,8 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
138
149
|
| Component | Count | Description |
|
|
139
150
|
|-----------|-------|-------------|
|
|
140
151
|
| `skills/` (task) | 32 | Slash commands: `/commit`, `/build`, `/deploy`, `/test`, `/mcp-builder`, ... |
|
|
141
|
-
| `skills/` (hybrid) |
|
|
142
|
-
| `skills/` (knowledge) |
|
|
152
|
+
| `skills/` (hybrid) | 30 | Slash commands with agent knowledge base |
|
|
153
|
+
| `skills/` (knowledge) | 45 | Domain knowledge auto-loaded by agents (includes 13 `<lang>-rules` skills) |
|
|
143
154
|
| `agents/` | 44 | Specialized agents across 10 categories |
|
|
144
155
|
| `hooks/` | 21 global + 5 skill-scoped | Quality gates, path safety, prompt governance, session lifecycle |
|
|
145
156
|
| `plugins/` | 11 packs | Opt-in domain bundles (security, research, frontend, enterprise, 6 language packs) |
|
|
@@ -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": "4.
|
|
4
|
+
"version": "4.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SoftSpark",
|
|
7
7
|
"url": "https://github.com/softspark"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Output Mode
|
|
2
|
+
|
|
3
|
+
`output-mode: concise`
|
|
4
|
+
|
|
5
|
+
Default response mode for this project is **concise**. The `brand-voice` skill (when present in ai-toolkit) auto-loads its `concise` rules; assistants without that skill should still apply the directives below.
|
|
6
|
+
|
|
7
|
+
## Concise Mode Directives
|
|
8
|
+
|
|
9
|
+
- **No preamble.** Skip "I'll now...", "Sure, let me...", "Great question!" and similar warm-ups. Start with the answer.
|
|
10
|
+
- **Lead with the result.** Conclusion or output first; explanation only if asked or non-obvious.
|
|
11
|
+
- **Max 3 sentences per closed question.** Yes/no, single-fact, or "where is X" answers stay under three sentences.
|
|
12
|
+
- **Tables and lists over prose** when comparing options, listing steps, or showing values.
|
|
13
|
+
- **No trailing summaries.** If the diff or output already shows what changed, do not restate it.
|
|
14
|
+
- **Drop filler adjectives.** No "nice", "great", "powerful", "robust" unless the user asked for evaluation.
|
|
15
|
+
- **Cite file paths as `path:line`** instead of paragraphs describing where things live.
|
|
16
|
+
- **Reserve longer prose** for: architecture proposals, trade-off analyses, plans with risks. Everything else: terse.
|
|
17
|
+
|
|
18
|
+
## When to escalate to verbose
|
|
19
|
+
|
|
20
|
+
- User explicitly asks: "explain in detail", "walk me through", "give me the full picture".
|
|
21
|
+
- Reporting a non-obvious failure mode where missing context would mislead.
|
|
22
|
+
- Architecture / RFC / ADR / trade-off documents — those have their own structure.
|
|
23
|
+
|
|
24
|
+
## How to override
|
|
25
|
+
|
|
26
|
+
- Per-session: `/brand-voice default` (or `/brand-voice strict` for even tighter)
|
|
27
|
+
- Per-project: change this rule's `output-mode:` value in the project's `CLAUDE.md`
|
|
28
|
+
- Permanent removal: re-run `ai-toolkit install --skip rules` or strip the `<!-- TOOLKIT:output-mode -->` block manually
|
|
@@ -186,8 +186,8 @@ Three tiers determine how to approach a task:
|
|
|
186
186
|
| Type | Field | Invocation | Count |
|
|
187
187
|
|------|-------|-----------|-------|
|
|
188
188
|
| Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
|
|
189
|
-
| Hybrid | (neither) | User via `/skill` + agent knowledge |
|
|
190
|
-
| Knowledge | `user-invocable: false` | Claude auto-loads |
|
|
189
|
+
| Hybrid | (neither) | User via `/skill` + agent knowledge | 30 |
|
|
190
|
+
| Knowledge | `user-invocable: false` | Claude auto-loads | 45 |
|
|
191
191
|
|
|
192
192
|
## Multi-Agent Execution
|
|
193
193
|
|
package/llms-full.txt
CHANGED
|
@@ -6274,8 +6274,8 @@ Three tiers determine how to approach a task:
|
|
|
6274
6274
|
| Type | Field | Invocation | Count |
|
|
6275
6275
|
|------|-------|-----------|-------|
|
|
6276
6276
|
| Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
|
|
6277
|
-
| Hybrid | (neither) | User via `/skill` + agent knowledge |
|
|
6278
|
-
| Knowledge | `user-invocable: false` | Claude auto-loads |
|
|
6277
|
+
| Hybrid | (neither) | User via `/skill` + agent knowledge | 30 |
|
|
6278
|
+
| Knowledge | `user-invocable: false` | Claude auto-loads | 45 |
|
|
6279
6279
|
|
|
6280
6280
|
## Multi-Agent Execution
|
|
6281
6281
|
|
package/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.1.0",
|
|
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": "107 skills (
|
|
12
|
+
"description": "107 skills (32 task + 30 hybrid + 45 knowledge)",
|
|
13
13
|
"path": "app/skills",
|
|
14
14
|
"target": ".claude/skills",
|
|
15
15
|
"type": "symlink",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "AI coding toolkit: 107 skills, 44 agents, 12-editor write-through (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex, opencode), machine-enforced safety constitution, SARIF audit, signed npm provenance.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -105,6 +105,25 @@ def rule_quality_standards() -> str:
|
|
|
105
105
|
"""
|
|
106
106
|
|
|
107
107
|
|
|
108
|
+
def rule_output_mode() -> str:
|
|
109
|
+
return """\
|
|
110
|
+
# Output Mode
|
|
111
|
+
|
|
112
|
+
`output-mode: concise`
|
|
113
|
+
|
|
114
|
+
Default response mode is **concise**. The `brand-voice` skill (when present) auto-loads concise rules; assistants without that skill should still apply the directives below.
|
|
115
|
+
|
|
116
|
+
* No preamble — skip "I'll now...", "Sure, let me...", "Great question!" Start with the answer.
|
|
117
|
+
* Lead with the result — conclusion or output first; explanation only if asked or non-obvious.
|
|
118
|
+
* Max 3 sentences per closed question — yes/no, single-fact, or "where is X" answers stay under three sentences.
|
|
119
|
+
* Tables and lists over prose — when comparing options, listing steps, or showing values.
|
|
120
|
+
* No trailing summaries — if the diff or output already shows what changed, do not restate it.
|
|
121
|
+
* Drop filler adjectives — no "nice", "great", "powerful", "robust" unless the user asked for evaluation.
|
|
122
|
+
* Cite as `path:line` — instead of paragraphs describing where things live.
|
|
123
|
+
* Escalate to verbose only for: architecture / RFC / ADR / trade-off documents, or when the user asks for detail.
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
|
|
108
127
|
def rule_agents_and_skills() -> str:
|
|
109
128
|
"""Full listing of agents and skills — same content all platforms get."""
|
|
110
129
|
agents_count, skills_count = count_agents_and_skills()
|
|
@@ -142,6 +161,7 @@ STANDARD_RULES: dict[str, callable] = {
|
|
|
142
161
|
f"{PREFIX}security.md": rule_security,
|
|
143
162
|
f"{PREFIX}workflow.md": rule_workflow,
|
|
144
163
|
f"{PREFIX}quality-standards.md": rule_quality_standards,
|
|
164
|
+
f"{PREFIX}output-mode.md": rule_output_mode,
|
|
145
165
|
}
|
|
146
166
|
|
|
147
167
|
|
|
@@ -142,6 +142,23 @@ def render_generator(config: dict) -> None:
|
|
|
142
142
|
print()
|
|
143
143
|
print_toolkit_end()
|
|
144
144
|
|
|
145
|
+
# Default output mode directive — applies to every editor that loads this file
|
|
146
|
+
print()
|
|
147
|
+
print("<!-- TOOLKIT:output-mode START -->")
|
|
148
|
+
print("<!-- Auto-injected by ai-toolkit. Re-run to update. -->")
|
|
149
|
+
print()
|
|
150
|
+
print("# Output Mode")
|
|
151
|
+
print()
|
|
152
|
+
print("`output-mode: concise`")
|
|
153
|
+
print()
|
|
154
|
+
print("Default response mode is **concise**. Skip preamble, lead with the result, "
|
|
155
|
+
"max 3 sentences per closed question, prefer tables/lists over prose, no "
|
|
156
|
+
"trailing summaries, drop filler adjectives, cite as `path:line`. Escalate "
|
|
157
|
+
"to verbose only for architecture / RFC / ADR / trade-off documents or when "
|
|
158
|
+
"the user asks for detail.")
|
|
159
|
+
print()
|
|
160
|
+
print("<!-- TOOLKIT:output-mode END -->")
|
|
161
|
+
|
|
145
162
|
# Registered custom rules from ~/.softspark/ai-toolkit/rules/
|
|
146
163
|
if RULES_DIR.is_dir():
|
|
147
164
|
for rule_file in sorted(RULES_DIR.glob("*.md")):
|