@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 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
- - 308 tests across 16 test files
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: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-85-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-47-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-308%20passing-success)](tests/)
9
+ [![Tests](https://img.shields.io/badge/tests-310%20passing-success)](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.0.0",
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)")