@softspark/ai-toolkit 1.4.2 → 1.5.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/llms-full.txt CHANGED
@@ -84,6 +84,7 @@
84
84
  - **git-mastery**: Loaded when user asks about advanced Git workflows or history rewriting
85
85
  - **grill-me**: Stress-test a plan or design through relentless Socratic questioning, walking down each decision branch until reaching shared understanding. Use when user wants to stress-test a plan, get grilled, validate assumptions, or mentions 'grill me'.
86
86
  - **health**: Report service and infrastructure health status
87
+ - **hipaa-validate**: Validate code against HIPAA policy: PHI exposure, missing audit logging, unencrypted transmission/storage, access control gaps, temp file exposure, and missing BAA references
87
88
  - **hive-mind**: Loaded when orchestrating multi-agent swarms or consensus workflows
88
89
  - **hook-creator**: Creates new Claude Code hooks with guided workflow, strict conventions, and validation
89
90
  - **index**: Index codebase into the knowledge base
@@ -272,9 +273,9 @@ title: "SOP: Claude Toolkit Maintenance"
272
273
  category: procedures
273
274
  service: ai-toolkit
274
275
  tags: [sop, maintenance, agents, skills, install]
275
- version: "1.0.0"
276
+ version: "1.4.2"
276
277
  created: "2026-03-23"
277
- last_updated: "2026-04-02"
278
+ last_updated: "2026-04-09"
278
279
  description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
279
280
  ---
280
281
 
@@ -291,18 +292,30 @@ cd /path/to/new-project
291
292
  ai-toolkit install --local
292
293
  ```
293
294
 
294
- This creates/updates:
295
+ By default, `--local` installs Claude Code configs only:
295
296
  - `CLAUDE.md` — project-specific rules template (only if missing)
296
297
  - `.claude/settings.local.json` — MCP servers, env vars, permissions (only if missing, initialized with MCP defaults)
297
298
  - `.claude/constitution.md` — toolkit constitution **injected** via markers (preserves user content)
298
- - `.github/copilot-instructions.md` — GitHub Copilot rules (marker-injected)
299
- - `.clinerules` Cline rules (marker-injected)
300
- - `.roomodes` — Roo Code custom modes (generated)
301
- - `.aider.conf.yml` — Aider configuration (generated)
302
- - `.git/hooks/pre-commit` Safety fallback for quality gates (generated)
299
+
300
+ To also install editor configs, use `--editors`:
301
+
302
+ ```bash
303
+ ai-toolkit install --local --editors all # all supported editors
304
+ ai-toolkit install --local --editors cursor,aider # specific editors only
305
+ ```
306
+
307
+ Supported editors: `cursor`, `windsurf`, `cline`, `roo`, `aider`, `augment`, `copilot`, `antigravity`.
308
+
309
+ To restrict which language rules are injected into `CLAUDE.md`, use `--lang`:
310
+
311
+ ```bash
312
+ ai-toolkit install --local --lang python,typescript
313
+ ```
303
314
 
304
315
  **Note:** Hooks are global-only — merged into `~/.claude/settings.json` by `ai-toolkit install`. Project-local `--local` does not install hooks; any legacy `.claude/hooks.json` is removed automatically.
305
316
 
317
+ **Input validation (v1.4.2):** `--only`, `--skip`, `--editors`, and `--lang` are validated on input; an invalid value exits with a clear error before any changes are made.
318
+
306
319
  Then edit `CLAUDE.md`:
307
320
  ```markdown
308
321
  # My Project
@@ -359,11 +372,14 @@ ai-toolkit update
359
372
  `update` is a semantic alias for `install` — use it for all re-apply flows. Supports the same flags:
360
373
 
361
374
  ```bash
362
- ai-toolkit update --only agents,hooks # re-apply only specific components
363
- ai-toolkit update --local # also refresh project-local Copilot + Cline + Roo + Aider
364
- ai-toolkit update --list # dry-run: show what would change
375
+ ai-toolkit update --only agents,hooks # re-apply only specific components
376
+ ai-toolkit update --local # refresh project-local Claude Code configs; auto-detects editors from existing project files (no --editors needed)
377
+ ai-toolkit update --local --editors cursor,windsurf # override auto-detection and target specific editors
378
+ ai-toolkit update --list # dry-run: show what would change
365
379
  ```
366
380
 
381
+ When running `update --local`, the CLI inspects existing config files (e.g. `.cursor/rules`, `.aider.conf.yml`) to determine which editors are present and refreshes only those — no flags required.
382
+
367
383
  ---
368
384
 
369
385
  ## Register a Rule from Another Repo
@@ -502,15 +518,14 @@ ai-toolkit benchmark-ecosystem --offline # benchmark snapshot
502
518
  Changes propagate instantly to all machines via symlinks. After any change:
503
519
 
504
520
  ```bash
505
- scripts/validate.py # must pass before commit
506
- npm test # must pass before commit
521
+ npm run generate:all # FIRST: regenerate AGENTS.md, llms.txt, all platform configs
522
+ scripts/validate.py # then validate — must pass before commit
523
+ npm test # then test — must pass before commit
507
524
  ```
508
525
 
509
- If you added/removed agents or skills, also regenerate derived artifacts:
510
-
511
- ```bash
512
- npm run generate:all # regenerates AGENTS.md, llms.txt, all platform configs
513
- ```
526
+ Run `generate:all` before validate and test so that generated artifacts are current when
527
+ the metadata contract tests run. Committing without regenerating first causes artifact
528
+ drift and fails CI.
514
529
 
515
530
  ## Release Checklist
516
531
 
@@ -541,7 +556,17 @@ npm test # full bats suite including metadata contracts and CLI tests
541
556
  The metadata contract tests (`tests/test_metadata_contracts.bats`) catch drift
542
557
  automatically. If they fail, fix the stale numbers before continuing.
543
558
 
544
- ### 5. Commit and tag
559
+ ### 5. Check for artifact drift
560
+
561
+ ```bash
562
+ git diff --stat
563
+ ```
564
+
565
+ Review the diff to confirm that all generated files (`AGENTS.md`, `llms.txt`, platform
566
+ configs) reflect the current state. If `generate:all` produced unexpected changes,
567
+ investigate before staging.
568
+
569
+ ### 6. Commit and tag
545
570
 
546
571
  ```bash
547
572
  git add -A
@@ -871,9 +896,9 @@ title: "AI Toolkit - Agents Catalog"
871
896
  category: reference
872
897
  service: ai-toolkit
873
898
  tags: [agents, catalog, roles, ai-development]
874
- version: "1.3.10"
899
+ version: "1.4.2"
875
900
  created: "2026-03-23"
876
- last_updated: "2026-03-25"
901
+ last_updated: "2026-04-09"
877
902
  description: "Complete catalog of specialized agents with roles, models, and use cases."
878
903
  ---
879
904
 
@@ -1223,9 +1248,9 @@ title: "AI Toolkit - Architecture Overview"
1223
1248
  category: reference
1224
1249
  service: ai-toolkit
1225
1250
  tags: [architecture, overview, design, structure]
1226
- version: "1.4.0"
1251
+ version: "1.4.2"
1227
1252
  created: "2026-03-23"
1228
- last_updated: "2026-04-08"
1253
+ last_updated: "2026-04-09"
1229
1254
  description: "Architecture of ai-toolkit: directory layout, global install model, skill tiers, and integration with projects."
1230
1255
  ---
1231
1256
 
@@ -1397,7 +1422,7 @@ Three tiers determine how to approach a task:
1397
1422
 
1398
1423
  | Type | Field | Invocation | Count |
1399
1424
  |------|-------|-----------|-------|
1400
- | Task | `disable-model-invocation: true` | User via `/skill` only | 28 |
1425
+ | Task | `disable-model-invocation: true` | User via `/skill` only | 29 |
1401
1426
  | Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
1402
1427
  | Knowledge | `user-invocable: false` | Claude auto-loads | 32 |
1403
1428
 
@@ -2546,9 +2571,9 @@ title: "Distribution Model"
2546
2571
  category: reference
2547
2572
  service: ai-toolkit
2548
2573
  tags: [architecture, distribution, symlinks, npm, install]
2549
- version: "1.0.0"
2574
+ version: "1.4.2"
2550
2575
  created: "2026-03-23"
2551
- last_updated: "2026-03-28"
2576
+ last_updated: "2026-04-09"
2552
2577
  description: "Reference description of how ai-toolkit is delivered and propagated on a developer machine."
2553
2578
  ---
2554
2579
 
@@ -2794,9 +2819,9 @@ title: "Global Install Model"
2794
2819
  category: reference
2795
2820
  service: ai-toolkit
2796
2821
  tags: [install, global, claude, local-setup]
2797
- version: "1.0.0"
2822
+ version: "1.4.2"
2798
2823
  created: "2026-03-26"
2799
- last_updated: "2026-03-28"
2824
+ last_updated: "2026-04-09"
2800
2825
  description: "Reference description of the global install target, local project setup, and command responsibilities in ai-toolkit."
2801
2826
  ---
2802
2827
 
@@ -2814,8 +2839,10 @@ That means one machine-level install provides agents, skills, hooks, and rules t
2814
2839
  |---------|--------|---------|
2815
2840
  | `ai-toolkit install` | `~/.claude/` | first-time machine setup |
2816
2841
  | `ai-toolkit update` | `~/.claude/` | re-apply after package or rule changes |
2817
- | `ai-toolkit install --local` | current project | create local `CLAUDE.md`, `.claude/settings.local.json`, and inject constitution + Copilot + Cline + Roo Code + Aider configs. Installs git hooks fallback. |
2818
- | `ai-toolkit update --local` | current project | refresh those local project files |
2842
+ | `ai-toolkit install --local` | current project | Claude Code configs only (CLAUDE.md, settings, constitution, language rules). Add `--editors all` for other tools, or `--editors cursor,aider` for specific ones. Auto-detects editors from existing project files when `--editors` is omitted. |
2843
+ | `ai-toolkit install --local --lang <lang>` | current project | explicit language selection for rules (e.g. `--lang typescript`, `--lang go,python`); auto-detected when omitted |
2844
+ | `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
2845
+ | `ai-toolkit update --local` | current project | refresh project configs; auto-detects editors from existing files |
2819
2846
  | `ai-toolkit add-rule` | `~/.ai-toolkit/rules/` | register a global rule |
2820
2847
  | `ai-toolkit remove-rule` | `~/.ai-toolkit/rules/` | unregister a global rule |
2821
2848
 
@@ -2836,6 +2863,8 @@ These files still stay local to a repository:
2836
2863
  - `.clinerules`
2837
2864
  - `.roomodes`
2838
2865
  - `.aider.conf.yml`
2866
+ - `.augment/rules/ai-toolkit-*.md`
2867
+ - `.agent/rules/*.md` and `.agent/workflows/*.md` (Google Antigravity)
2839
2868
  - `.git/hooks/pre-commit` (fallback)
2840
2869
  - project-specific documentation or safety overlays
2841
2870
 
@@ -3060,9 +3089,9 @@ title: "Hooks Catalog"
3060
3089
  category: reference
3061
3090
  service: ai-toolkit
3062
3091
  tags: [hooks, quality, safety, enforcement, settings.json]
3063
- version: "1.1.0"
3092
+ version: "1.4.2"
3064
3093
  created: "2026-03-27"
3065
- last_updated: "2026-04-07"
3094
+ last_updated: "2026-04-09"
3066
3095
  description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
3067
3096
  ---
3068
3097
 
@@ -3437,7 +3466,7 @@ Set in `.claude/settings.local.json`:
3437
3466
 
3438
3467
  **Hook script not found:**
3439
3468
  ```bash
3440
- ls ~/.ai-toolkit/hooks/ # should list 12 .sh files (plus _profile-check.sh helper)
3469
+ ls ~/.ai-toolkit/hooks/ # should list 21 .sh files (plus _profile-check.sh helper)
3441
3470
  ai-toolkit update # re-copies scripts
3442
3471
  ```
3443
3472
 
@@ -4426,9 +4455,9 @@ title: "AI Toolkit - Skills Catalog"
4426
4455
  category: reference
4427
4456
  service: ai-toolkit
4428
4457
  tags: [skills, domain-knowledge, catalog, task-skills, hybrid-skills]
4429
- version: "1.4.0"
4458
+ version: "1.4.2"
4430
4459
  created: "2026-03-23"
4431
- last_updated: "2026-04-08"
4460
+ last_updated: "2026-04-09"
4432
4461
  description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."
4433
4462
  ---
4434
4463
 
@@ -4444,7 +4473,7 @@ All functionality is unified under skills. Task and hybrid skills are user-invoc
4444
4473
  | **2 — Multi-agent workflow** | `/workflow <type>` | Cross-cutting task with known pattern |
4445
4474
  | **3 — Custom parallelism** | `/orchestrate`, `/swarm` | No predefined workflow matches |
4446
4475
 
4447
- ## Task Skills (28)
4476
+ ## Task Skills (29)
4448
4477
 
4449
4478
  Task skills execute a specific action. Invoked via slash commands. `disable-model-invocation: true`.
4450
4479
 
@@ -4478,6 +4507,7 @@ Task skills execute a specific action. Invoked via slash commands. `disable-mode
4478
4507
  | **health** | `/health` | medium | Check health of project services (auto-detect) |
4479
4508
  | **prd-to-issues** | `/prd-to-issues` | medium | Break PRD into GitHub issues with vertical slices and HITL/AFK tagging |
4480
4509
  | **skill-audit** | `/skill-audit` | medium | Scan skills and agents for security risks: dangerous patterns, secrets, excessive permissions |
4510
+ | **hipaa-validate** | `/hipaa-validate` | medium | Scan codebase for HIPAA compliance issues: PHI exposure, missing audit logging, unencrypted transmission/storage, access control gaps, temp file exposure, and missing BAA references |
4481
4511
 
4482
4512
  ## Hybrid Skills (31)
4483
4513
 
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.4.2",
2
+ "version": "1.5.0",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "1.4.2",
4
- "description": "Professional-grade AI coding toolkit: 91 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
3
+ "version": "1.5.0",
4
+ "description": "Professional-grade AI coding toolkit: 92 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
5
5
  "keywords": [
6
6
  "claude",
7
7
  "claude-code",
@@ -257,6 +257,56 @@ def parse_args(argv: list[str]) -> dict:
257
257
  return cfg
258
258
 
259
259
 
260
+ # ---------------------------------------------------------------------------
261
+ # Input validation
262
+ # ---------------------------------------------------------------------------
263
+
264
+ VALID_COMPONENTS = {"agents", "skills", "hooks", "rules", "constitution", "architecture"}
265
+ VALID_LANGS = {"python", "typescript", "golang", "go", "rust", "java", "kotlin",
266
+ "swift", "ruby", "php", "dart", "cpp", "csharp", "c++", "c#", "cs",
267
+ "common"}
268
+
269
+
270
+ def validate_args(cfg: dict) -> None:
271
+ """Validate parsed arguments — exit non-zero on invalid values."""
272
+ from install_steps.ai_tools import ALL_EDITORS
273
+
274
+ errors: list[str] = []
275
+
276
+ # Validate --only components
277
+ if cfg["only"]:
278
+ for c in cfg["only"].split(","):
279
+ c = c.strip()
280
+ if c and c not in VALID_COMPONENTS:
281
+ errors.append(f"Unknown component in --only: '{c}' (valid: {', '.join(sorted(VALID_COMPONENTS))})")
282
+
283
+ # Validate --skip components
284
+ if cfg["skip"]:
285
+ for c in cfg["skip"].split(","):
286
+ c = c.strip()
287
+ if c and c not in VALID_COMPONENTS:
288
+ errors.append(f"Unknown component in --skip: '{c}' (valid: {', '.join(sorted(VALID_COMPONENTS))})")
289
+
290
+ # Validate --editors
291
+ if cfg["editors"] and cfg["editors"] != "all":
292
+ for e in cfg["editors"].split(","):
293
+ e = e.strip()
294
+ if e and e not in ALL_EDITORS:
295
+ errors.append(f"Unknown editor: '{e}' (valid: {', '.join(ALL_EDITORS)}, all)")
296
+
297
+ # Validate --lang
298
+ if cfg["lang"]:
299
+ for l in cfg["lang"].split(","):
300
+ l = l.strip()
301
+ if l and l.lower() not in VALID_LANGS:
302
+ errors.append(f"Unknown language: '{l}' (valid: {', '.join(sorted(VALID_LANGS - {'c++', 'c#', 'cs', 'go', 'common'}))})")
303
+
304
+ if errors:
305
+ for e in errors:
306
+ print(f"Error: {e}")
307
+ sys.exit(1)
308
+
309
+
260
310
  # ---------------------------------------------------------------------------
261
311
  # Dependency check
262
312
  # ---------------------------------------------------------------------------
@@ -408,6 +458,7 @@ def _get_toolkit_version() -> str:
408
458
 
409
459
  def main() -> None:
410
460
  cfg = parse_args(sys.argv[1:])
461
+ validate_args(cfg)
411
462
 
412
463
  # Handle --status early exit
413
464
  if cfg["status"]: