@softspark/ai-toolkit 1.0.0 → 1.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 +14 -1
- package/README.md +2 -6
- package/package.json +1 -1
- package/scripts/install_steps/hooks.py +30 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.1.0] - 2026-04-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Agent Teams auto-enabled** — `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` is now automatically set in `~/.claude/settings.json` via `env` field during `install` / `update`. No manual `export` needed.
|
|
14
|
+
- 2 new install tests: env var injection + user env var preservation
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- README test badge count: 308 → 310
|
|
18
|
+
|
|
19
|
+
[1.1.0]: https://github.com/softspark/ai-toolkit/releases/tag/v1.1.0
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
10
23
|
## [1.0.0] - 2026-04-02
|
|
11
24
|
|
|
12
25
|
### Added
|
|
@@ -46,7 +59,7 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
46
59
|
- CI: auto-regenerate `AGENTS.md` and `llms.txt` on push to main; publish on tags
|
|
47
60
|
- **DRY refactoring**: `scripts/_common.py` shared library for all generators and CLI scripts; `app/hooks/_profile-check.sh` for 9 hooks; CLI uses data-driven `GENERATORS` map
|
|
48
61
|
- All hooks standardized to `#!/usr/bin/env bash` shebang
|
|
49
|
-
-
|
|
62
|
+
- 310 tests across 16 test files
|
|
50
63
|
- **Iron Law enforcement** in TDD, debugging, and verification skills — anti-rationalization tables prevent agents from skipping test-first, root-cause analysis, or claiming completion without evidence
|
|
51
64
|
- **`/subagent-development`** — 2-stage review workflow: dispatch implementer → spec compliance review → code quality review per task, with 4-status protocol (DONE, DONE_WITH_CONCERNS, NEEDS_CONTEXT, BLOCKED) and prompt templates
|
|
52
65
|
- **`/repeat`** — Ralph Wiggum autonomous loop pattern with safety controls: max iterations (default 5), circuit breaker (3 consecutive failures → halt), min interval (1 minute), exit detection, stats logging
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](app/skills/)
|
|
8
8
|
[](app/agents/)
|
|
9
|
-
[](tests/)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -416,11 +416,7 @@ All packs have `status: experimental`. Each has a `plugin.json` manifest and `RE
|
|
|
416
416
|
|
|
417
417
|
## Agent Teams
|
|
418
418
|
|
|
419
|
-
Native support for `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
|
|
420
|
-
|
|
421
|
-
```bash
|
|
422
|
-
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
|
|
423
|
-
```
|
|
419
|
+
Native support for `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` — automatically enabled during `ai-toolkit install` / `update` via `env` in `~/.claude/settings.json`.
|
|
424
420
|
|
|
425
421
|
Pre-configured team presets via `/teams`:
|
|
426
422
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Professional-grade AI coding toolkit: 85 skills, 47 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider), machine-enforced safety constitution, Iron Law enforcement, persistent memory, visual brainstorming, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -25,6 +25,7 @@ def install_hooks(claude_dir: Path, hooks_scripts_dir: Path,
|
|
|
25
25
|
output_styles_dir = app_dir / "output-styles"
|
|
26
26
|
if output_styles_dir.is_dir():
|
|
27
27
|
print(" Would install: output styles to ~/.claude/output-styles/ + set outputStyle in settings.json")
|
|
28
|
+
print(" Would set: env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in settings.json")
|
|
28
29
|
return
|
|
29
30
|
|
|
30
31
|
_copy_hook_scripts(claude_dir, hooks_scripts_dir)
|
|
@@ -41,6 +42,7 @@ def install_hooks(claude_dir: Path, hooks_scripts_dir: Path,
|
|
|
41
42
|
print(" Removed: .claude/hooks.json (legacy)")
|
|
42
43
|
|
|
43
44
|
_install_output_styles(claude_dir)
|
|
45
|
+
_install_env_vars(claude_dir)
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
def _copy_hook_scripts(claude_dir: Path, hooks_scripts_dir: Path) -> None:
|
|
@@ -88,3 +90,31 @@ def _install_output_styles(claude_dir: Path) -> None:
|
|
|
88
90
|
with open(settings_path, "w", encoding="utf-8") as f:
|
|
89
91
|
json.dump(settings_data, f, indent=4)
|
|
90
92
|
print(" Set: outputStyle = 'Golden Rules' in settings.json")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# Toolkit env vars injected into settings.json
|
|
96
|
+
TOOLKIT_ENV_VARS = {
|
|
97
|
+
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _install_env_vars(claude_dir: Path) -> None:
|
|
102
|
+
"""Ensure toolkit env vars are set in settings.json."""
|
|
103
|
+
settings_path = claude_dir / "settings.json"
|
|
104
|
+
if settings_path.is_file():
|
|
105
|
+
with open(settings_path, encoding="utf-8") as f:
|
|
106
|
+
settings_data = json.load(f)
|
|
107
|
+
else:
|
|
108
|
+
settings_data = {}
|
|
109
|
+
|
|
110
|
+
env = settings_data.setdefault("env", {})
|
|
111
|
+
changed = False
|
|
112
|
+
for key, value in TOOLKIT_ENV_VARS.items():
|
|
113
|
+
if env.get(key) != value:
|
|
114
|
+
env[key] = value
|
|
115
|
+
changed = True
|
|
116
|
+
|
|
117
|
+
if changed:
|
|
118
|
+
with open(settings_path, "w", encoding="utf-8") as f:
|
|
119
|
+
json.dump(settings_data, f, indent=4)
|
|
120
|
+
print(" Set: env vars in settings.json (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)")
|