@softspark/ai-toolkit 1.4.2 → 1.5.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 +26 -0
- package/README.md +5 -4
- package/action.yml +2 -1
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/ARCHITECTURE.md +2 -1
- package/app/plugins/memory-pack/scripts/strip_private.py +1 -1
- package/app/skills/hipaa-validate/SKILL.md +345 -0
- package/app/skills/hipaa-validate/reference/hipaa-rules.md +303 -0
- package/app/skills/hipaa-validate/reference/phi-identifiers.md +45 -0
- package/app/skills/hipaa-validate/scripts/hipaa_scan.py +752 -0
- package/app/skills/write-a-prd/scripts/frame-template.html +1 -25
- package/app/skills/write-a-prd/scripts/poll.js +23 -0
- package/app/skills/write-a-prd/scripts/visual-server.cjs +11 -1
- package/kb/procedures/maintenance-sop.md +43 -19
- package/kb/procedures/release-preparation-sop.md +277 -0
- package/kb/reference/agents-catalog.md +2 -2
- package/kb/reference/architecture-overview.md +3 -3
- package/kb/reference/distribution-model.md +2 -2
- package/kb/reference/global-install-model.md +7 -3
- package/kb/reference/hooks-catalog.md +3 -3
- package/kb/reference/skills-catalog.md +4 -3
- package/llms-full.txt +349 -36
- package/llms.txt +1 -0
- package/manifest.json +1 -1
- package/package.json +2 -2
- package/scripts/install.py +51 -0
package/llms-full.txt
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [No Hardcoded Counts in Secondary Docs](kb/best-practices/no-hardcoded-counts.md)
|
|
16
16
|
- [How-To Guides](kb/howto/README.md)
|
|
17
17
|
- [SOP: Claude Toolkit Maintenance](kb/procedures/maintenance-sop.md)
|
|
18
|
+
- [SOP: Release Preparation](kb/procedures/release-preparation-sop.md)
|
|
18
19
|
- [SOP: Release Verification](kb/procedures/release-verification-sop.md)
|
|
19
20
|
- [Agents Catalog](kb/reference/agents-catalog.md)
|
|
20
21
|
- [Anti-Pattern Registry Format](kb/reference/anti-pattern-registry-format.md)
|
|
@@ -84,6 +85,7 @@
|
|
|
84
85
|
- **git-mastery**: Loaded when user asks about advanced Git workflows or history rewriting
|
|
85
86
|
- **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
87
|
- **health**: Report service and infrastructure health status
|
|
88
|
+
- **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
89
|
- **hive-mind**: Loaded when orchestrating multi-agent swarms or consensus workflows
|
|
88
90
|
- **hook-creator**: Creates new Claude Code hooks with guided workflow, strict conventions, and validation
|
|
89
91
|
- **index**: Index codebase into the knowledge base
|
|
@@ -272,9 +274,9 @@ title: "SOP: Claude Toolkit Maintenance"
|
|
|
272
274
|
category: procedures
|
|
273
275
|
service: ai-toolkit
|
|
274
276
|
tags: [sop, maintenance, agents, skills, install]
|
|
275
|
-
version: "1.
|
|
277
|
+
version: "1.4.2"
|
|
276
278
|
created: "2026-03-23"
|
|
277
|
-
last_updated: "2026-04-
|
|
279
|
+
last_updated: "2026-04-09"
|
|
278
280
|
description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
|
|
279
281
|
---
|
|
280
282
|
|
|
@@ -291,18 +293,30 @@ cd /path/to/new-project
|
|
|
291
293
|
ai-toolkit install --local
|
|
292
294
|
```
|
|
293
295
|
|
|
294
|
-
|
|
296
|
+
By default, `--local` installs Claude Code configs only:
|
|
295
297
|
- `CLAUDE.md` — project-specific rules template (only if missing)
|
|
296
298
|
- `.claude/settings.local.json` — MCP servers, env vars, permissions (only if missing, initialized with MCP defaults)
|
|
297
299
|
- `.claude/constitution.md` — toolkit constitution **injected** via markers (preserves user content)
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
-
|
|
300
|
+
|
|
301
|
+
To also install editor configs, use `--editors`:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
ai-toolkit install --local --editors all # all supported editors
|
|
305
|
+
ai-toolkit install --local --editors cursor,aider # specific editors only
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Supported editors: `cursor`, `windsurf`, `cline`, `roo`, `aider`, `augment`, `copilot`, `antigravity`.
|
|
309
|
+
|
|
310
|
+
To restrict which language rules are injected into `CLAUDE.md`, use `--lang`:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
ai-toolkit install --local --lang python,typescript
|
|
314
|
+
```
|
|
303
315
|
|
|
304
316
|
**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
317
|
|
|
318
|
+
**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.
|
|
319
|
+
|
|
306
320
|
Then edit `CLAUDE.md`:
|
|
307
321
|
```markdown
|
|
308
322
|
# My Project
|
|
@@ -359,11 +373,14 @@ ai-toolkit update
|
|
|
359
373
|
`update` is a semantic alias for `install` — use it for all re-apply flows. Supports the same flags:
|
|
360
374
|
|
|
361
375
|
```bash
|
|
362
|
-
ai-toolkit update --only agents,hooks
|
|
363
|
-
ai-toolkit update --local
|
|
364
|
-
ai-toolkit update --
|
|
376
|
+
ai-toolkit update --only agents,hooks # re-apply only specific components
|
|
377
|
+
ai-toolkit update --local # refresh project-local Claude Code configs; auto-detects editors from existing project files (no --editors needed)
|
|
378
|
+
ai-toolkit update --local --editors cursor,windsurf # override auto-detection and target specific editors
|
|
379
|
+
ai-toolkit update --list # dry-run: show what would change
|
|
365
380
|
```
|
|
366
381
|
|
|
382
|
+
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.
|
|
383
|
+
|
|
367
384
|
---
|
|
368
385
|
|
|
369
386
|
## Register a Rule from Another Repo
|
|
@@ -502,15 +519,14 @@ ai-toolkit benchmark-ecosystem --offline # benchmark snapshot
|
|
|
502
519
|
Changes propagate instantly to all machines via symlinks. After any change:
|
|
503
520
|
|
|
504
521
|
```bash
|
|
505
|
-
|
|
506
|
-
|
|
522
|
+
npm run generate:all # FIRST: regenerate AGENTS.md, llms.txt, all platform configs
|
|
523
|
+
scripts/validate.py # then validate — must pass before commit
|
|
524
|
+
npm test # then test — must pass before commit
|
|
507
525
|
```
|
|
508
526
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
npm run generate:all # regenerates AGENTS.md, llms.txt, all platform configs
|
|
513
|
-
```
|
|
527
|
+
Run `generate:all` before validate and test so that generated artifacts are current when
|
|
528
|
+
the metadata contract tests run. Committing without regenerating first causes artifact
|
|
529
|
+
drift and fails CI.
|
|
514
530
|
|
|
515
531
|
## Release Checklist
|
|
516
532
|
|
|
@@ -541,7 +557,17 @@ npm test # full bats suite including metadata contracts and CLI tests
|
|
|
541
557
|
The metadata contract tests (`tests/test_metadata_contracts.bats`) catch drift
|
|
542
558
|
automatically. If they fail, fix the stale numbers before continuing.
|
|
543
559
|
|
|
544
|
-
### 5.
|
|
560
|
+
### 5. Check for artifact drift
|
|
561
|
+
|
|
562
|
+
```bash
|
|
563
|
+
git diff --stat
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
Review the diff to confirm that all generated files (`AGENTS.md`, `llms.txt`, platform
|
|
567
|
+
configs) reflect the current state. If `generate:all` produced unexpected changes,
|
|
568
|
+
investigate before staging.
|
|
569
|
+
|
|
570
|
+
### 6. Commit and tag
|
|
545
571
|
|
|
546
572
|
```bash
|
|
547
573
|
git add -A
|
|
@@ -576,6 +602,288 @@ What `uninstall` does:
|
|
|
576
602
|
|
|
577
603
|
---
|
|
578
604
|
|
|
605
|
+
## kb/procedures/release-preparation-sop.md
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
title: "SOP: Release Preparation"
|
|
609
|
+
category: procedures
|
|
610
|
+
service: ai-toolkit
|
|
611
|
+
tags: [sop, release, version, publish, changelog, semver]
|
|
612
|
+
version: "1.5.0"
|
|
613
|
+
created: "2026-04-10"
|
|
614
|
+
last_updated: "2026-04-10"
|
|
615
|
+
description: "Step-by-step checklist for preparing a new ai-toolkit release — version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag."
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
# SOP: Release Preparation
|
|
619
|
+
|
|
620
|
+
Complete checklist for preparing a new `@softspark/ai-toolkit` release.
|
|
621
|
+
Run this **before** tagging. After tagging and publishing, run the
|
|
622
|
+
[Release Verification SOP](release-verification-sop.md) to smoke-test.
|
|
623
|
+
|
|
624
|
+
**Pipeline:**
|
|
625
|
+
```
|
|
626
|
+
Release Preparation (this SOP) → git tag → CI publish → Release Verification SOP
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
**Time:** 5-10 minutes
|
|
630
|
+
|
|
631
|
+
---
|
|
632
|
+
|
|
633
|
+
## Quick Checklist (TL;DR)
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
# 1. Decide version bump
|
|
637
|
+
# patch (1.4.2 → 1.4.3): bugfix, typo, doc fix
|
|
638
|
+
# minor (1.4.2 → 1.5.0): new feature, new skill, new flag
|
|
639
|
+
# major (1.4.2 → 2.0.0): breaking change
|
|
640
|
+
|
|
641
|
+
# 2. Sync version across all files
|
|
642
|
+
python3 scripts/sync_version.py X.Y.Z # if script exists, else manual
|
|
643
|
+
|
|
644
|
+
# 3. Write CHANGELOG.md entry
|
|
645
|
+
# 4. Regenerate artifacts
|
|
646
|
+
python3 scripts/generate_agents_md.py > AGENTS.md
|
|
647
|
+
python3 scripts/generate_llms_txt.py > llms.txt
|
|
648
|
+
python3 scripts/generate_llms_txt.py --full > llms-full.txt
|
|
649
|
+
|
|
650
|
+
# 5. Validate + audit + test
|
|
651
|
+
python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
|
|
652
|
+
|
|
653
|
+
# 6. Commit + tag + push
|
|
654
|
+
git add -A && git commit -m "chore: release vX.Y.Z"
|
|
655
|
+
git tag vX.Y.Z
|
|
656
|
+
git push origin main --tags
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
---
|
|
660
|
+
|
|
661
|
+
## Phase 1: Determine Version Bump
|
|
662
|
+
|
|
663
|
+
Follow [Semantic Versioning](https://semver.org/):
|
|
664
|
+
|
|
665
|
+
| Change Type | Bump | Examples |
|
|
666
|
+
|-------------|------|---------|
|
|
667
|
+
| Bugfix, typo, doc-only | **patch** | Fix install flag, correct description |
|
|
668
|
+
| New feature, skill, agent, flag | **minor** | Add `/hipaa-validate`, add `--output json` |
|
|
669
|
+
| Breaking CLI change, removed skill, config format change | **major** | Rename `install` to `setup`, remove skill |
|
|
670
|
+
|
|
671
|
+
**Rule:** When in doubt, bump minor.
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## Phase 2: Sync Version in All Files
|
|
676
|
+
|
|
677
|
+
The canonical version lives in `package.json`. These files **must** match:
|
|
678
|
+
|
|
679
|
+
### Mandatory sync (every release)
|
|
680
|
+
|
|
681
|
+
| File | Field | How to update |
|
|
682
|
+
|------|-------|---------------|
|
|
683
|
+
| `package.json` | `"version": "X.Y.Z"` | Edit directly |
|
|
684
|
+
| `manifest.json` | `"version": "X.Y.Z"` | Edit directly |
|
|
685
|
+
| `app/.claude-plugin/plugin.json` | `"version": "X.Y.Z"` | Edit directly |
|
|
686
|
+
|
|
687
|
+
### Auto-synced (no manual action)
|
|
688
|
+
|
|
689
|
+
| File | Mechanism |
|
|
690
|
+
|------|-----------|
|
|
691
|
+
| `package-lock.json` | Regenerated by `npm install --package-lock-only` |
|
|
692
|
+
|
|
693
|
+
### Conditional sync (only if the doc was modified in this release)
|
|
694
|
+
|
|
695
|
+
| File | Field | When to update |
|
|
696
|
+
|------|-------|---------------|
|
|
697
|
+
| `kb/procedures/maintenance-sop.md` | frontmatter `version:` | If SOP content changed |
|
|
698
|
+
| `kb/reference/skills-catalog.md` | frontmatter `version:` | If skills added/removed |
|
|
699
|
+
| `kb/reference/agents-catalog.md` | frontmatter `version:` | If agents added/removed |
|
|
700
|
+
| `kb/reference/hooks-catalog.md` | frontmatter `version:` | If hooks changed |
|
|
701
|
+
| `kb/reference/architecture-overview.md` | frontmatter `version:` | If architecture changed |
|
|
702
|
+
| `kb/reference/distribution-model.md` | frontmatter `version:` | If install model changed |
|
|
703
|
+
| `kb/reference/global-install-model.md` | frontmatter `version:` | If install model changed |
|
|
704
|
+
|
|
705
|
+
> **Note:** KB `version:` fields track the **document version**, not the toolkit version.
|
|
706
|
+
> Only bump them when the document content actually changes in this release.
|
|
707
|
+
|
|
708
|
+
### Count sync (if skills/agents/hooks changed)
|
|
709
|
+
|
|
710
|
+
| File | What to check |
|
|
711
|
+
|------|---------------|
|
|
712
|
+
| `package.json` | `"description"` — skill/agent count |
|
|
713
|
+
| `README.md` | Badge counts, "What You Get" table |
|
|
714
|
+
| `app/ARCHITECTURE.md` | Section headings with counts |
|
|
715
|
+
|
|
716
|
+
> **Tip:** `validate.py --strict` and `npm test` (metadata contract tests) catch
|
|
717
|
+
> count drift automatically. If tests pass, counts are correct.
|
|
718
|
+
|
|
719
|
+
### Verification command
|
|
720
|
+
|
|
721
|
+
After syncing, verify all mandatory files match:
|
|
722
|
+
|
|
723
|
+
```bash
|
|
724
|
+
VERSION=$(python3 -c "import json; print(json.load(open('package.json'))['version'])")
|
|
725
|
+
echo "Target: $VERSION"
|
|
726
|
+
echo "manifest.json: $(python3 -c "import json; print(json.load(open('manifest.json'))['version'])")"
|
|
727
|
+
echo "plugin.json: $(python3 -c "import json; print(json.load(open('app/.claude-plugin/plugin.json'))['version'])")"
|
|
728
|
+
echo "package-lock.json: $(python3 -c "import json; print(json.load(open('package-lock.json'))['version'])")"
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
All four must print the same version. If not, fix before proceeding.
|
|
732
|
+
|
|
733
|
+
---
|
|
734
|
+
|
|
735
|
+
## Phase 3: Write CHANGELOG Entry
|
|
736
|
+
|
|
737
|
+
Add entry at the top of `CHANGELOG.md` (after the header, before previous release):
|
|
738
|
+
|
|
739
|
+
```markdown
|
|
740
|
+
## vX.Y.Z — Short Title (YYYY-MM-DD)
|
|
741
|
+
|
|
742
|
+
### Added
|
|
743
|
+
- **Feature name** — description
|
|
744
|
+
|
|
745
|
+
### Changed
|
|
746
|
+
- **What changed** — old behavior → new behavior
|
|
747
|
+
|
|
748
|
+
### Fixed
|
|
749
|
+
- **Bug description** — what was broken and how it's fixed
|
|
750
|
+
|
|
751
|
+
### Removed
|
|
752
|
+
- **What was removed** — migration path if any
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
**Rules:**
|
|
756
|
+
- Use **bold** for feature names
|
|
757
|
+
- Start descriptions with a verb (Added, Changed, Fixed, Removed)
|
|
758
|
+
- Reference skill names with backticks and slash: `/hipaa-validate`
|
|
759
|
+
- Include script names: `scripts/hipaa_scan.py`
|
|
760
|
+
- Include count changes: `Skill count: 91 → 92`
|
|
761
|
+
- Date format: `YYYY-MM-DD`
|
|
762
|
+
- Title: short, descriptive, no version number repetition
|
|
763
|
+
|
|
764
|
+
---
|
|
765
|
+
|
|
766
|
+
## Phase 4: Regenerate Artifacts
|
|
767
|
+
|
|
768
|
+
```bash
|
|
769
|
+
python3 scripts/generate_agents_md.py > AGENTS.md
|
|
770
|
+
python3 scripts/generate_llms_txt.py > llms.txt
|
|
771
|
+
python3 scripts/generate_llms_txt.py --full > llms-full.txt
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
Check if anything actually changed:
|
|
775
|
+
|
|
776
|
+
```bash
|
|
777
|
+
git diff --stat AGENTS.md llms.txt llms-full.txt
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
If no diff, the artifacts are already current. If there is a diff, stage them.
|
|
781
|
+
|
|
782
|
+
---
|
|
783
|
+
|
|
784
|
+
## Phase 5: Validate, Audit, Test
|
|
785
|
+
|
|
786
|
+
Run the full quality gate:
|
|
787
|
+
|
|
788
|
+
```bash
|
|
789
|
+
python3 scripts/validate.py --strict
|
|
790
|
+
python3 scripts/audit_skills.py --ci
|
|
791
|
+
npm test
|
|
792
|
+
```
|
|
793
|
+
|
|
794
|
+
**Expected results:**
|
|
795
|
+
- `validate.py`: `Errors: 0 | Warnings: 0 | VALIDATION PASSED`
|
|
796
|
+
- `audit_skills.py`: `HIGH: 0 | WARN: 0` (INFO is acceptable)
|
|
797
|
+
- `npm test`: `1..N` with zero `not ok`
|
|
798
|
+
|
|
799
|
+
**One-liner:**
|
|
800
|
+
```bash
|
|
801
|
+
python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
**If tests fail:** Fix the issue, do NOT skip. Common failures:
|
|
805
|
+
- Stale counts → re-run `generate:all` or fix README/ARCHITECTURE
|
|
806
|
+
- Missing frontmatter → add to new KB docs
|
|
807
|
+
- Broken symlink → `ai-toolkit doctor --fix`
|
|
808
|
+
|
|
809
|
+
---
|
|
810
|
+
|
|
811
|
+
## Phase 6: Commit
|
|
812
|
+
|
|
813
|
+
Stage all release files:
|
|
814
|
+
|
|
815
|
+
```bash
|
|
816
|
+
git add package.json manifest.json app/.claude-plugin/plugin.json
|
|
817
|
+
git add package-lock.json
|
|
818
|
+
git add CHANGELOG.md
|
|
819
|
+
git add AGENTS.md llms.txt llms-full.txt
|
|
820
|
+
git add -p # review and stage any other changes
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
Commit:
|
|
824
|
+
|
|
825
|
+
```bash
|
|
826
|
+
git commit -m "chore: release vX.Y.Z"
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
---
|
|
830
|
+
|
|
831
|
+
## Phase 7: Tag and Push
|
|
832
|
+
|
|
833
|
+
```bash
|
|
834
|
+
git tag vX.Y.Z
|
|
835
|
+
git push origin main --tags
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
This triggers `.github/workflows/publish.yml` which:
|
|
839
|
+
1. Runs `validate.py --strict`
|
|
840
|
+
2. Runs `npm test`
|
|
841
|
+
3. Publishes to npm as `@softspark/ai-toolkit@X.Y.Z`
|
|
842
|
+
|
|
843
|
+
**After CI completes:** Run the [Release Verification SOP](release-verification-sop.md)
|
|
844
|
+
to smoke-test the published package.
|
|
845
|
+
|
|
846
|
+
---
|
|
847
|
+
|
|
848
|
+
## Rollback
|
|
849
|
+
|
|
850
|
+
If a bad release was published:
|
|
851
|
+
|
|
852
|
+
```bash
|
|
853
|
+
# Unpublish from npm (within 72h)
|
|
854
|
+
npm unpublish @softspark/ai-toolkit@X.Y.Z
|
|
855
|
+
|
|
856
|
+
# Or deprecate (preferred — doesn't break existing installs)
|
|
857
|
+
npm deprecate @softspark/ai-toolkit@X.Y.Z "Known issue: <description>. Use vA.B.C instead."
|
|
858
|
+
|
|
859
|
+
# Delete tag
|
|
860
|
+
git tag -d vX.Y.Z
|
|
861
|
+
git push origin --delete vX.Y.Z
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
---
|
|
865
|
+
|
|
866
|
+
## Checklist Summary
|
|
867
|
+
|
|
868
|
+
| # | Step | Command / Action | Pass Criteria |
|
|
869
|
+
|---|------|-----------------|---------------|
|
|
870
|
+
| 1 | Version bump type | Decide patch/minor/major | — |
|
|
871
|
+
| 2 | `package.json` version | Edit `"version"` | Matches target |
|
|
872
|
+
| 3 | `manifest.json` version | Edit `"version"` | Matches target |
|
|
873
|
+
| 4 | `plugin.json` version | Edit `"version"` | Matches target |
|
|
874
|
+
| 5 | `package-lock.json` | `npm install --package-lock-only` | Matches target |
|
|
875
|
+
| 6 | Count sync | Check `package.json` description, README | `validate.py` passes |
|
|
876
|
+
| 7 | CHANGELOG.md | Add release entry | Entry exists for vX.Y.Z |
|
|
877
|
+
| 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_llms_txt.py` | No unexpected diff |
|
|
878
|
+
| 9 | Validate | `validate.py --strict` | 0 errors, 0 warnings |
|
|
879
|
+
| 10 | Security audit | `audit_skills.py --ci` | 0 HIGH |
|
|
880
|
+
| 11 | Tests | `npm test` | All pass |
|
|
881
|
+
| 12 | Commit | `git commit` | Clean working tree |
|
|
882
|
+
| 13 | Tag | `git tag vX.Y.Z` | Tag exists |
|
|
883
|
+
| 14 | Push | `git push origin main --tags` | CI triggered |
|
|
884
|
+
|
|
885
|
+
---
|
|
886
|
+
|
|
579
887
|
## kb/procedures/release-verification-sop.md
|
|
580
888
|
|
|
581
889
|
---
|
|
@@ -871,9 +1179,9 @@ title: "AI Toolkit - Agents Catalog"
|
|
|
871
1179
|
category: reference
|
|
872
1180
|
service: ai-toolkit
|
|
873
1181
|
tags: [agents, catalog, roles, ai-development]
|
|
874
|
-
version: "1.
|
|
1182
|
+
version: "1.4.2"
|
|
875
1183
|
created: "2026-03-23"
|
|
876
|
-
last_updated: "2026-
|
|
1184
|
+
last_updated: "2026-04-09"
|
|
877
1185
|
description: "Complete catalog of specialized agents with roles, models, and use cases."
|
|
878
1186
|
---
|
|
879
1187
|
|
|
@@ -1223,9 +1531,9 @@ title: "AI Toolkit - Architecture Overview"
|
|
|
1223
1531
|
category: reference
|
|
1224
1532
|
service: ai-toolkit
|
|
1225
1533
|
tags: [architecture, overview, design, structure]
|
|
1226
|
-
version: "1.4.
|
|
1534
|
+
version: "1.4.2"
|
|
1227
1535
|
created: "2026-03-23"
|
|
1228
|
-
last_updated: "2026-04-
|
|
1536
|
+
last_updated: "2026-04-09"
|
|
1229
1537
|
description: "Architecture of ai-toolkit: directory layout, global install model, skill tiers, and integration with projects."
|
|
1230
1538
|
---
|
|
1231
1539
|
|
|
@@ -1397,7 +1705,7 @@ Three tiers determine how to approach a task:
|
|
|
1397
1705
|
|
|
1398
1706
|
| Type | Field | Invocation | Count |
|
|
1399
1707
|
|------|-------|-----------|-------|
|
|
1400
|
-
| Task | `disable-model-invocation: true` | User via `/skill` only |
|
|
1708
|
+
| Task | `disable-model-invocation: true` | User via `/skill` only | 29 |
|
|
1401
1709
|
| Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
|
|
1402
1710
|
| Knowledge | `user-invocable: false` | Claude auto-loads | 32 |
|
|
1403
1711
|
|
|
@@ -2546,9 +2854,9 @@ title: "Distribution Model"
|
|
|
2546
2854
|
category: reference
|
|
2547
2855
|
service: ai-toolkit
|
|
2548
2856
|
tags: [architecture, distribution, symlinks, npm, install]
|
|
2549
|
-
version: "1.
|
|
2857
|
+
version: "1.4.2"
|
|
2550
2858
|
created: "2026-03-23"
|
|
2551
|
-
last_updated: "2026-
|
|
2859
|
+
last_updated: "2026-04-09"
|
|
2552
2860
|
description: "Reference description of how ai-toolkit is delivered and propagated on a developer machine."
|
|
2553
2861
|
---
|
|
2554
2862
|
|
|
@@ -2794,9 +3102,9 @@ title: "Global Install Model"
|
|
|
2794
3102
|
category: reference
|
|
2795
3103
|
service: ai-toolkit
|
|
2796
3104
|
tags: [install, global, claude, local-setup]
|
|
2797
|
-
version: "1.
|
|
3105
|
+
version: "1.4.2"
|
|
2798
3106
|
created: "2026-03-26"
|
|
2799
|
-
last_updated: "2026-
|
|
3107
|
+
last_updated: "2026-04-09"
|
|
2800
3108
|
description: "Reference description of the global install target, local project setup, and command responsibilities in ai-toolkit."
|
|
2801
3109
|
---
|
|
2802
3110
|
|
|
@@ -2814,8 +3122,10 @@ That means one machine-level install provides agents, skills, hooks, and rules t
|
|
|
2814
3122
|
|---------|--------|---------|
|
|
2815
3123
|
| `ai-toolkit install` | `~/.claude/` | first-time machine setup |
|
|
2816
3124
|
| `ai-toolkit update` | `~/.claude/` | re-apply after package or rule changes |
|
|
2817
|
-
| `ai-toolkit install --local` | current project |
|
|
2818
|
-
| `ai-toolkit
|
|
3125
|
+
| `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. |
|
|
3126
|
+
| `ai-toolkit install --local --lang <lang>` | current project | explicit language selection for rules (e.g. `--lang typescript`, `--lang go,python`); auto-detected when omitted |
|
|
3127
|
+
| `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
|
|
3128
|
+
| `ai-toolkit update --local` | current project | refresh project configs; auto-detects editors from existing files |
|
|
2819
3129
|
| `ai-toolkit add-rule` | `~/.ai-toolkit/rules/` | register a global rule |
|
|
2820
3130
|
| `ai-toolkit remove-rule` | `~/.ai-toolkit/rules/` | unregister a global rule |
|
|
2821
3131
|
|
|
@@ -2836,6 +3146,8 @@ These files still stay local to a repository:
|
|
|
2836
3146
|
- `.clinerules`
|
|
2837
3147
|
- `.roomodes`
|
|
2838
3148
|
- `.aider.conf.yml`
|
|
3149
|
+
- `.augment/rules/ai-toolkit-*.md`
|
|
3150
|
+
- `.agent/rules/*.md` and `.agent/workflows/*.md` (Google Antigravity)
|
|
2839
3151
|
- `.git/hooks/pre-commit` (fallback)
|
|
2840
3152
|
- project-specific documentation or safety overlays
|
|
2841
3153
|
|
|
@@ -3060,9 +3372,9 @@ title: "Hooks Catalog"
|
|
|
3060
3372
|
category: reference
|
|
3061
3373
|
service: ai-toolkit
|
|
3062
3374
|
tags: [hooks, quality, safety, enforcement, settings.json]
|
|
3063
|
-
version: "1.
|
|
3375
|
+
version: "1.4.2"
|
|
3064
3376
|
created: "2026-03-27"
|
|
3065
|
-
last_updated: "2026-04-
|
|
3377
|
+
last_updated: "2026-04-09"
|
|
3066
3378
|
description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
|
|
3067
3379
|
---
|
|
3068
3380
|
|
|
@@ -3437,7 +3749,7 @@ Set in `.claude/settings.local.json`:
|
|
|
3437
3749
|
|
|
3438
3750
|
**Hook script not found:**
|
|
3439
3751
|
```bash
|
|
3440
|
-
ls ~/.ai-toolkit/hooks/ # should list
|
|
3752
|
+
ls ~/.ai-toolkit/hooks/ # should list 21 .sh files (plus _profile-check.sh helper)
|
|
3441
3753
|
ai-toolkit update # re-copies scripts
|
|
3442
3754
|
```
|
|
3443
3755
|
|
|
@@ -4426,9 +4738,9 @@ title: "AI Toolkit - Skills Catalog"
|
|
|
4426
4738
|
category: reference
|
|
4427
4739
|
service: ai-toolkit
|
|
4428
4740
|
tags: [skills, domain-knowledge, catalog, task-skills, hybrid-skills]
|
|
4429
|
-
version: "1.4.
|
|
4741
|
+
version: "1.4.2"
|
|
4430
4742
|
created: "2026-03-23"
|
|
4431
|
-
last_updated: "2026-04-
|
|
4743
|
+
last_updated: "2026-04-09"
|
|
4432
4744
|
description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."
|
|
4433
4745
|
---
|
|
4434
4746
|
|
|
@@ -4444,7 +4756,7 @@ All functionality is unified under skills. Task and hybrid skills are user-invoc
|
|
|
4444
4756
|
| **2 — Multi-agent workflow** | `/workflow <type>` | Cross-cutting task with known pattern |
|
|
4445
4757
|
| **3 — Custom parallelism** | `/orchestrate`, `/swarm` | No predefined workflow matches |
|
|
4446
4758
|
|
|
4447
|
-
## Task Skills (
|
|
4759
|
+
## Task Skills (29)
|
|
4448
4760
|
|
|
4449
4761
|
Task skills execute a specific action. Invoked via slash commands. `disable-model-invocation: true`.
|
|
4450
4762
|
|
|
@@ -4478,6 +4790,7 @@ Task skills execute a specific action. Invoked via slash commands. `disable-mode
|
|
|
4478
4790
|
| **health** | `/health` | medium | Check health of project services (auto-detect) |
|
|
4479
4791
|
| **prd-to-issues** | `/prd-to-issues` | medium | Break PRD into GitHub issues with vertical slices and HITL/AFK tagging |
|
|
4480
4792
|
| **skill-audit** | `/skill-audit` | medium | Scan skills and agents for security risks: dangerous patterns, secrets, excessive permissions |
|
|
4793
|
+
| **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
4794
|
|
|
4482
4795
|
## Hybrid Skills (31)
|
|
4483
4796
|
|
package/llms.txt
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [No Hardcoded Counts in Secondary Docs](kb/best-practices/no-hardcoded-counts.md)
|
|
16
16
|
- [How-To Guides](kb/howto/README.md)
|
|
17
17
|
- [SOP: Claude Toolkit Maintenance](kb/procedures/maintenance-sop.md)
|
|
18
|
+
- [SOP: Release Preparation](kb/procedures/release-preparation-sop.md)
|
|
18
19
|
- [SOP: Release Verification](kb/procedures/release-verification-sop.md)
|
|
19
20
|
- [Agents Catalog](kb/reference/agents-catalog.md)
|
|
20
21
|
- [Anti-Pattern Registry Format](kb/reference/anti-pattern-registry-format.md)
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Professional-grade AI coding toolkit:
|
|
3
|
+
"version": "1.5.1",
|
|
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",
|
package/scripts/install.py
CHANGED
|
@@ -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"]:
|