@softspark/ai-toolkit 1.3.15 → 1.4.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
@@ -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 Verification](kb/procedures/release-verification-sop.md)
18
19
  - [Agents Catalog](kb/reference/agents-catalog.md)
19
20
  - [Anti-Pattern Registry Format](kb/reference/anti-pattern-registry-format.md)
20
21
  - [AI Toolkit Architecture](kb/reference/architecture-overview.md)
@@ -575,6 +576,294 @@ What `uninstall` does:
575
576
 
576
577
  ---
577
578
 
579
+ ## kb/procedures/release-verification-sop.md
580
+
581
+ ---
582
+ title: "SOP: Release Verification"
583
+ category: procedures
584
+ service: ai-toolkit
585
+ tags: [sop, verification, release, smoke-test, install, update, qa]
586
+ version: "1.1.0"
587
+ created: "2026-04-08"
588
+ last_updated: "2026-04-08"
589
+ description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, install, doctor, validation, tests, and eject from user perspective."
590
+ ---
591
+
592
+ # SOP: Release Verification
593
+
594
+ End-to-end smoke test after installing or updating `@softspark/ai-toolkit`.
595
+ Verifies all critical paths from the user's perspective.
596
+
597
+ **Use this SOP when:**
598
+ - After `npm install -g @softspark/ai-toolkit@latest`
599
+ - After `ai-toolkit update`
600
+ - Before tagging a new version (`git tag`)
601
+ - Before publishing to npm (`npm publish`)
602
+ - As a smoke test in CI/CD
603
+
604
+ **Prerequisites:**
605
+ - Node.js >= 18, Python 3, `bats`, git
606
+ - `@softspark/ai-toolkit` installed globally
607
+
608
+ **Time:** 10-15 minutes (full), 2 minutes (quick checklist)
609
+
610
+ ---
611
+
612
+ ## Quick Checklist (TL;DR)
613
+
614
+ 9 commands — if all pass, the release is ready:
615
+
616
+ ```bash
617
+ # Pre-commit (Phase 0)
618
+ python3 scripts/generate_agents_md.py > AGENTS.md # 1. Regenerate artifacts
619
+ python3 scripts/generate_llms_txt.py > llms.txt # 2. Regenerate llms.txt
620
+ python3 scripts/validate.py --strict # 3. Validation passed?
621
+ npm test # 4. All tests passed?
622
+
623
+ # Post-install verification (Phases 1-7)
624
+ ai-toolkit --version # 5. Version OK?
625
+ ai-toolkit status # 6. Status OK?
626
+ ai-toolkit doctor # 7. Health check passed?
627
+ ai-toolkit install --dry-run # 8. Global install OK?
628
+ python3 scripts/audit_skills.py --ci # 9. Security audit clean?
629
+ ```
630
+
631
+ ---
632
+
633
+ ## Phase 0: Pre-Commit & Pre-Push (2 min)
634
+
635
+ Run these commands **before every commit and push to main**. CI validates
636
+ counts but does NOT auto-regenerate — you must do it locally.
637
+
638
+ ```bash
639
+ # 1. Regenerate generated artifacts
640
+ python3 scripts/generate_agents_md.py > AGENTS.md
641
+ python3 scripts/generate_llms_txt.py > llms.txt
642
+ python3 scripts/generate_llms_txt.py --full > llms-full.txt
643
+
644
+ # 2. Validate everything (catches stale counts, missing assets)
645
+ python3 scripts/validate.py --strict
646
+
647
+ # 3. Security audit
648
+ python3 scripts/audit_skills.py --ci
649
+
650
+ # 4. Run tests
651
+ npm test
652
+
653
+ # 5. Stage and commit
654
+ git add AGENTS.md llms.txt llms-full.txt
655
+ git add -p # stage your other changes
656
+ git commit -m "feat: your change description"
657
+ ```
658
+
659
+ **Why local?** Branch protection on `main` requires PRs and status checks.
660
+ CI cannot push directly to `main`, so generated artifacts must be committed
661
+ by the developer as part of their PR.
662
+
663
+ **One-liner (copy-paste):**
664
+ ```bash
665
+ python3 scripts/generate_agents_md.py > AGENTS.md && python3 scripts/generate_llms_txt.py > llms.txt && python3 scripts/generate_llms_txt.py --full > llms-full.txt && python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
666
+ ```
667
+
668
+ ---
669
+
670
+ ## Phase 1: CLI & Version (1 min)
671
+
672
+ ```bash
673
+ ai-toolkit --version
674
+ ai-toolkit --help
675
+ which ai-toolkit
676
+ ```
677
+
678
+ **Verify:**
679
+ - [ ] `--version` returns correct semver (e.g., `1.4.0`)
680
+ - [ ] `--help` displays full command list without errors
681
+ - [ ] `which` points to global npm bin path
682
+
683
+ ---
684
+
685
+ ## Phase 2: Global Install & Status (2 min)
686
+
687
+ ```bash
688
+ ai-toolkit install --dry-run
689
+ ai-toolkit status
690
+ ```
691
+
692
+ **Verify `--dry-run`:**
693
+ - [ ] Agents >= 40
694
+ - [ ] Skills >= 80
695
+ - [ ] Hooks merged into settings.json
696
+ - [ ] "Other AI Tools" section lists cursor, windsurf, gemini, augment (antigravity via --local)
697
+
698
+ **Verify `status`:**
699
+ - [ ] Version matches expected
700
+ - [ ] Profile: minimal/standard/strict
701
+ - [ ] Modules: list of installed modules
702
+ - [ ] Latest: up to date / update available
703
+
704
+ ---
705
+
706
+ ## Phase 3: Doctor Health Check (1 min)
707
+
708
+ ```bash
709
+ ai-toolkit doctor
710
+ ```
711
+
712
+ **Expected sections (all OK):**
713
+ - Environment: node, bash, python3, bats
714
+ - Global Install: .claude exists, agents/skills symlinks (0 broken), settings.json hooks
715
+ - Hook Scripts: all present and executable
716
+ - Hook Configuration: 12 events registered
717
+ - Generated Artifacts: AGENTS.md, llms.txt, llms-full.txt
718
+ - Planned Assets: plugin.json, benchmarks, plugin packs
719
+ - Benchmark Freshness: < 30 days
720
+ - Stale Rules: all healthy
721
+
722
+ **Verify:**
723
+ - [ ] `Errors: 0 | Warnings: 0`
724
+ - [ ] `HEALTH CHECK PASSED`
725
+
726
+ If doctor detects problems: `ai-toolkit doctor --fix` auto-repairs
727
+ (broken symlinks, non-executable hooks, missing scripts, missing llms-full.txt).
728
+
729
+ ---
730
+
731
+ ## Phase 4: Local Install (2 min)
732
+
733
+ ```bash
734
+ mkdir -p /tmp/ai-toolkit-verify && cd /tmp/ai-toolkit-verify
735
+ git init -q
736
+ ai-toolkit install --local --editors all --dry-run
737
+ cd - && rm -rf /tmp/ai-toolkit-verify
738
+ ```
739
+
740
+ **Verify "Project-local" section:**
741
+ - [ ] Would create: CLAUDE.md
742
+ - [ ] Would create: .claude/settings.local.json
743
+ - [ ] Would inject: .claude/constitution.md
744
+ - [ ] Editors: all 8 listed (copilot, cursor, windsurf, cline, roo, aider, augment, antigravity)
745
+ - [ ] Would generate configs for each editor (legacy + directory-based)
746
+ - [ ] Would install: .git/hooks/pre-commit
747
+ - [ ] Would inject language rules (auto-detected)
748
+
749
+ **Also test auto-detect (no --editors flag):**
750
+ ```bash
751
+ ai-toolkit install --local --dry-run
752
+ # → Editors: none (empty project has no existing configs)
753
+ ```
754
+
755
+ ---
756
+
757
+ ## Phase 5: Validation & Security Audit (3 min)
758
+
759
+ ```bash
760
+ python3 scripts/validate.py --strict
761
+ python3 scripts/audit_skills.py --ci
762
+ ```
763
+
764
+ **Verify validate.py:**
765
+ - [ ] Agents >= 40, Skills >= 80, Tests >= 350
766
+ - [ ] Hook events: 12, Hook scripts: >= 20
767
+ - [ ] Plugin packs >= 10, KB documents >= 20
768
+ - [ ] `Errors: 0 | Warnings: 0` → `VALIDATION PASSED`
769
+
770
+ **Verify audit_skills.py:**
771
+ - [ ] `HIGH: 0` (MUST be zero — CI fails otherwise)
772
+ - [ ] `WARN: 0`
773
+ - [ ] `INFO: N` (acceptable — broad-access skills: orchestrate, swarm, teams)
774
+
775
+ ---
776
+
777
+ ## Phase 6: Tests (3-5 min)
778
+
779
+ ```bash
780
+ npm test
781
+ ```
782
+
783
+ **Verify:**
784
+ - [ ] Bats runs tests in parallel (4 jobs)
785
+ - [ ] All `ok` — zero `not ok`
786
+ - [ ] Groups: agents, autodetect, cli, generators, guards, hooks, inject,
787
+ install, kb, mcp, readme, profiles, uninstall, validate
788
+
789
+ **Key test areas:**
790
+ - Guards: rm -rf, DROP TABLE, git push --force blocked
791
+ - Install: idempotent, profiles, --only/--skip, orphan cleanup
792
+ - Eject: real files (not symlinks), inlined rules
793
+ - Uninstall: removes toolkit, preserves user content
794
+
795
+ ---
796
+
797
+ ## Phase 7: Eject (1 min)
798
+
799
+ ```bash
800
+ mkdir -p /tmp/ai-toolkit-eject-test
801
+ cd /tmp/ai-toolkit-eject-test
802
+ ai-toolkit eject
803
+ cd - && rm -rf /tmp/ai-toolkit-eject-test
804
+ ```
805
+
806
+ **Verify:**
807
+ - [ ] Agents copied as real files (not symlinks)
808
+ - [ ] Skills copied as real directories
809
+ - [ ] Rules inlined into CLAUDE.md
810
+ - [ ] constitution.md and ARCHITECTURE.md copied
811
+
812
+ ---
813
+
814
+ ## Troubleshooting
815
+
816
+ ### `ai-toolkit: command not found`
817
+
818
+ ```bash
819
+ npm install -g @softspark/ai-toolkit
820
+ # or check PATH:
821
+ export PATH="$(npm config get prefix)/bin:$PATH"
822
+ ```
823
+
824
+ ### Doctor: broken symlinks
825
+
826
+ ```bash
827
+ ai-toolkit doctor --fix # auto-repair
828
+ ai-toolkit update # or full re-install
829
+ ```
830
+
831
+ ### Tests fail: missing bats
832
+
833
+ ```bash
834
+ brew install bats-core # macOS
835
+ npm install -g bats # cross-platform
836
+ ```
837
+
838
+ ### validate.py: stale counts
839
+
840
+ README badges don't match the current agents/skills/tests counts.
841
+ Update README.md and re-run.
842
+
843
+ ### Eject: missing skills
844
+
845
+ ```bash
846
+ ai-toolkit update # re-link missing symlinks
847
+ ai-toolkit eject /tmp/test # retry
848
+ ```
849
+
850
+ ---
851
+
852
+ ## Success Criteria
853
+
854
+ | Area | Criterion |
855
+ |------|-----------|
856
+ | CLI | `--version` correct, `--help` full list, `status` current |
857
+ | Health | `doctor`: 0 errors, 0 warnings, PASSED |
858
+ | Install | `--dry-run` correct counts, `--local` all configs |
859
+ | Quality | `validate.py --strict`: PASSED |
860
+ | Security | `audit_skills.py --ci`: 0 HIGH |
861
+ | Tests | `npm test`: N/N passed, 0 failures |
862
+ | Eject | Standalone .claude/ with real files |
863
+ | Guards | Destructive commands blocked |
864
+
865
+ ---
866
+
578
867
  ## kb/reference/agents-catalog.md
579
868
 
580
869
  ---
@@ -934,7 +1223,7 @@ title: "AI Toolkit - Architecture Overview"
934
1223
  category: reference
935
1224
  service: ai-toolkit
936
1225
  tags: [architecture, overview, design, structure]
937
- version: "1.3.15"
1226
+ version: "1.4.0"
938
1227
  created: "2026-03-23"
939
1228
  last_updated: "2026-04-08"
940
1229
  description: "Architecture of ai-toolkit: directory layout, global install model, skill tiers, and integration with projects."
@@ -944,7 +1233,7 @@ description: "Architecture of ai-toolkit: directory layout, global install model
944
1233
 
945
1234
  ## Purpose
946
1235
 
947
- Shared, project-agnostic AI development toolkit for Claude Code (and compatible assistants like Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, and Augment). Provides specialized agents, skills (slash commands + knowledge), expanded lifecycle hooks, persona presets, and experimental opt-in plugin packs that teams can adopt separately from the default global install.
1236
+ Shared, project-agnostic AI development toolkit for Claude Code (and compatible assistants like Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, and Google Antigravity). Provides specialized agents, skills (slash commands + knowledge), expanded lifecycle hooks, persona presets, and experimental opt-in plugin packs that teams can adopt separately from the default global install.
948
1237
 
949
1238
  ## Design Principles
950
1239
 
@@ -1034,14 +1323,19 @@ Machine (global) Project (local)
1034
1323
 
1035
1324
  **`ai-toolkit update`** — re-apply after `npm install -g @softspark/ai-toolkit@latest` or after `add-rule` / `remove-rule`. Same as `install` but semantically correct for update flows.
1036
1325
 
1037
- **`ai-toolkit install --local`** (or `update --local`) — run per project, creates `CLAUDE.md` template + `.claude/settings.local.json` (only if missing, initialized with MCP defaults), and injects `constitution.md` + Copilot + Cline + Roo Code + Aider configs into local `.claude/` (preserves existing user content). Installs `--local` git hooks as a fallback for quality gates. Hooks are global-only not merged into project settings.
1326
+ **`ai-toolkit install --local`** — run per project. Always installs Claude Code configs (CLAUDE.md, settings.local.json, constitution.md, language rules). Editor configs are opt-in via `--editors`:
1327
+ - `--editors all` — install all 8 editors (Cursor, Windsurf, Cline, Roo, Aider, Augment, Copilot, Antigravity)
1328
+ - `--editors cursor,aider` — install only selected editors
1329
+ - (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
1330
+
1331
+ Each editor gets both legacy single-file format (for backwards compat) and new directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.cline/rules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Hooks are global-only — not merged into project settings.
1038
1332
 
1039
1333
  ## CLI Commands
1040
1334
 
1041
1335
  | Command | Target | What it does |
1042
1336
  |---------|--------|-------------|
1043
1337
  | `install` | `~/.claude/` | First-time: per-file symlinks + JSON merge + marker injection + rules |
1044
- | `install --local` | `./` | Also set up project-local: `CLAUDE.md` + `settings.local.json` + constitution + Copilot + Cline + Roo + Aider + Git Hooks (hooks stay global-only) |
1338
+ | `install --local` | `./` | Claude Code configs + editors via `--editors` (auto-detect or explicit) |
1045
1339
  | `update` | `~/.claude/` | Re-apply after npm update or after add-rule/remove-rule |
1046
1340
  | `update --local` | `./` | Re-apply + refresh project-local configs |
1047
1341
  | `uninstall` | `~/.claude/` | Strips toolkit components (preserves user content) |
@@ -1051,13 +1345,20 @@ Machine (global) Project (local)
1051
1345
  | `doctor` | toolkit | Install health, hooks, benchmark freshness, and artifact drift diagnostics |
1052
1346
  | `benchmark-ecosystem` | toolkit | Benchmark snapshot for official Claude Code and external ecosystem repos |
1053
1347
  | `evaluate` | toolkit | Skill quality report |
1054
- | `cursor-rules` | `./` | Generates `.cursorrules` |
1055
- | `windsurf-rules` | `./` | Generates `.windsurfrules` |
1348
+ | `cursor-rules` | `./` | Generates `.cursorrules` (legacy) |
1349
+ | `cursor-mdc` | `./` | Generates `.cursor/rules/*.mdc` (recommended) |
1350
+ | `windsurf-rules` | `./` | Generates `.windsurfrules` (legacy) |
1351
+ | `windsurf-dir-rules` | `./` | Generates `.windsurf/rules/*.md` |
1056
1352
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
1057
1353
  | `gemini-md` | `./` | Generates `GEMINI.md` |
1058
- | `cline-rules` | `./` | Generates `.clinerules` |
1354
+ | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
1355
+ | `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` |
1059
1356
  | `roo-modes` | `./` | Generates `.roomodes` |
1357
+ | `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
1060
1358
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
1359
+ | `conventions-md` | `./` | Generates `CONVENTIONS.md` (Aider auto-loaded) |
1360
+ | `augment-dir-rules` | `./` | Generates `.augment/rules/ai-toolkit-*.md` |
1361
+ | `antigravity-rules` | `./` | Generates `.agent/rules/` + `.agent/workflows/` |
1061
1362
  | `agents-md` | toolkit | Regenerates `AGENTS.md` |
1062
1363
  | `llms-txt` | `./` | Generates `llms.txt` |
1063
1364
  | `generate-all` | `./` | Generates all platform configs at once |
@@ -1574,15 +1875,15 @@ tags:
1574
1875
  doc_type: plan
1575
1876
  status: completed
1576
1877
  created: "2026-04-07"
1577
- last_updated: "2026-04-07"
1878
+ last_updated: "2026-04-09"
1578
1879
  completion: "100%"
1579
1880
  description: "Implementation plan for features identified from competitive analysis of everything-claude-code and claude-mem. Focus on learning system, language rules, advanced hooks, MCP templates, and rag-mcp integration. COMPLETED: 8/9 features shipped (1 skipped). See kb/reference/ for permanent documentation."
1580
1881
  ---
1581
1882
 
1582
1883
  # Plan: Competitive Features — ai-toolkit
1583
1884
 
1584
- **Status:** :yellow_circle: IN PROGRESS
1585
- **Completion:** 100% (9/9 features)
1885
+ **Status:** :white_check_mark: COMPLETED
1886
+ **Completion:** 100% (8/9 features, 1 skipped)
1586
1887
  **Started:** 2026-04-07
1587
1888
  **Estimated Completion:** 2026-06-15
1588
1889
  **Source:** Competitive analysis of `affaan-m/everything-claude-code` (ECC) + `thedotmack/claude-mem`
@@ -1591,7 +1892,7 @@ description: "Implementation plan for features identified from competitive analy
1591
1892
 
1592
1893
  ## 1. Objective
1593
1894
 
1594
- Strengthen ai-toolkit's competitive position by implementing 10 features from competitive analysis while maintaining our advantages (clean architecture, 9 editors, personas, safety constitution).
1895
+ Strengthen ai-toolkit's competitive position by implementing 10 features from competitive analysis while maintaining our advantages (clean architecture, 11 editors, personas, safety constitution).
1595
1896
 
1596
1897
  **Key design principle:** ai-toolkit is a **generic toolkit** — it does NOT know about rag-mcp or any specific consumer. Consumers (like rag-mcp) use ai-toolkit's public API (`inject-rule`, `inject-hook`, `merge-hooks`) to add their own rules and hooks.
1597
1898
 
@@ -1700,11 +2001,11 @@ app/rules/
1700
2001
  | `tests/test_rules.py` | CREATE | Tests |
1701
2002
 
1702
2003
  **Success Criteria:**
1703
- - [ ] 13 languages × 5 rule files created
1704
- - [ ] `ai-toolkit install --local` auto-detects language and injects rules
1705
- - [ ] Manual override: `ai-toolkit install --local --lang typescript`
1706
- - [ ] validate.py checks rules format
1707
- - [ ] Tests: >=13 (one per language)
2004
+ - [x] 13 languages × 5 rule files created (70 files: 13 dirs × 5 + 5 common)
2005
+ - [x] `ai-toolkit install --local` auto-detects language and injects rules (two-phase: marker files + extension scan)
2006
+ - [x] Manual override: `ai-toolkit install --local --lang typescript` (with aliases: go→golang, c++→cpp, cs→csharp)
2007
+ - [ ] validate.py checks rules format (not yet implemented)
2008
+ - [ ] Tests: >=13 (no test_rules file yet)
1708
2009
 
1709
2010
  ---
1710
2011
 
@@ -1739,11 +2040,11 @@ app/rules/
1739
2040
  | `tests/test_hooks.py` | EDIT | Tests for new hooks |
1740
2041
 
1741
2042
  **Success Criteria:**
1742
- - [ ] 6 new hooks created and registerable
1743
- - [ ] guard-config blocks config edits unless `--force`
1744
- - [ ] mcp-health pings configured MCP servers on session start
1745
- - [ ] All hooks optional (enable/disable in settings.json)
1746
- - [ ] Tests: >=6 (one per hook)
2043
+ - [x] 5/6 new hooks created and registerable (observe-session.sh not in app/hooks — lives in rag-mcp as consumer)
2044
+ - [x] guard-config blocks config edits unless `--force`
2045
+ - [x] mcp-health pings configured MCP servers on session start
2046
+ - [x] All hooks optional (enable/disable in settings.json)
2047
+ - [x] Tests: 89 hook tests in test_hooks.bats
1747
2048
 
1748
2049
  ---
1749
2050
 
@@ -1800,10 +2101,10 @@ ai-toolkit mcp show github # Show config details
1800
2101
  | `tests/test_mcp_templates.py` | CREATE | Validate JSON schemas |
1801
2102
 
1802
2103
  **Success Criteria:**
1803
- - [ ] 25 MCP template configs created
1804
- - [ ] `ai-toolkit mcp add <name>` merges into .mcp.json
1805
- - [ ] `ai-toolkit mcp list` shows all available
1806
- - [ ] Tests: >=5 (schema validation)
2104
+ - [x] 25 MCP template configs created
2105
+ - [x] `ai-toolkit mcp add <name>` merges into .mcp.json
2106
+ - [x] `ai-toolkit mcp list` shows all available
2107
+ - [x] Tests: 15 in test_mcp_manager.bats
1807
2108
 
1808
2109
  ---
1809
2110
 
@@ -1911,11 +2212,11 @@ All entries are tagged with "_source": "<source-name>" for idempotent updates.
1911
2212
  | `add-rule <file.md>` | `~/.ai-toolkit/rules/` | File copy + re-inject all | Yes |
1912
2213
 
1913
2214
  **Success Criteria:**
1914
- - [ ] `inject-hook ./my-hooks.json` merges hooks with auto-derived `_source` tag
1915
- - [ ] `remove-hook my-hooks` strips all entries with that `_source`
1916
- - [ ] Re-running is idempotent (update, not duplicate)
1917
- - [ ] Existing ai-toolkit hooks (`_source: "ai-toolkit"`) are never touched
1918
- - [ ] Tests: >=6 (inject, remove, idempotent, coexistence, malformed input, missing file)
2215
+ - [x] `inject-hook ./my-hooks.json` merges hooks with auto-derived `_source` tag
2216
+ - [x] `remove-hook my-hooks` strips all entries with that `_source`
2217
+ - [x] Re-running is idempotent (update, not duplicate)
2218
+ - [x] Existing ai-toolkit hooks (`_source: "ai-toolkit"`) are never touched
2219
+ - [x] Tests: 17 in test_inject_hook.bats
1919
2220
 
1920
2221
  ---
1921
2222
 
@@ -2010,13 +2311,13 @@ ai-toolkit status # Show installed modules
2010
2311
  ```
2011
2312
 
2012
2313
  **Success Criteria:**
2013
- - [ ] manifest.json defines all modules with dependencies
2014
- - [ ] install --modules allows granular selection
2015
- - [ ] install --auto-detect detects language from project files
2016
- - [ ] state.json tracks what's installed
2017
- - [ ] update only changes modified files (content hash)
2018
- - [ ] Backward compatible with existing install
2019
- - [ ] Tests: >=10
2314
+ - [x] manifest.json defines all modules with dependencies
2315
+ - [x] install --modules allows granular selection
2316
+ - [x] install --auto-detect detects language from project files (two-phase: markers + extensions)
2317
+ - [x] state.json tracks what's installed
2318
+ - [x] update only changes modified files (content hash)
2319
+ - [x] Backward compatible with existing install
2320
+ - [x] Tests: 35 across test_install.bats, test_install_flags.bats, test_install_state.bats
2020
2321
 
2021
2322
  ---
2022
2323
 
@@ -2055,10 +2356,10 @@ context: fork
2055
2356
  - **Recommendation** with confidence level
2056
2357
 
2057
2358
  **Success Criteria:**
2058
- - [ ] `/council` invocable
2059
- - [ ] 4 perspectives generated
2060
- - [ ] Structured output with recommendation
2061
- - [ ] Tests: >=2
2359
+ - [x] `/council` invocable
2360
+ - [x] 4 perspectives generated
2361
+ - [x] Structured output with recommendation
2362
+ - [ ] Tests: dedicated council tests not yet written
2062
2363
 
2063
2364
  ---
2064
2365
 
@@ -2075,9 +2376,9 @@ context: fork
2075
2376
  - Consistency checks (before outputting content, verify voice match)
2076
2377
 
2077
2378
  **Success Criteria:**
2078
- - [ ] Skill auto-loads when writing docs/content
2079
- - [ ] Anti-trope list prevents generic LLM rhetoric
2080
- - [ ] Tests: >=2
2379
+ - [x] Skill auto-loads when writing docs/content
2380
+ - [x] Anti-trope list prevents generic LLM rhetoric
2381
+ - [ ] Tests: dedicated brand-voice tests not yet written
2081
2382
 
2082
2383
  ---
2083
2384
 
@@ -2096,10 +2397,10 @@ context: fork
2096
2397
  5. Optionally hand off to verification
2097
2398
 
2098
2399
  **Success Criteria:**
2099
- - [ ] `/introspect` invocable when agent is stuck
2100
- - [ ] Classifies failure pattern
2101
- - [ ] Suggests recovery action
2102
- - [ ] Tests: >=2
2400
+ - [x] `/introspect` invocable when agent is stuck
2401
+ - [x] Classifies failure pattern
2402
+ - [x] Suggests recovery action
2403
+ - [ ] Tests: dedicated introspect tests not yet written
2103
2404
 
2104
2405
  ---
2105
2406
 
@@ -2140,10 +2441,7 @@ docs/
2140
2441
  ```
2141
2442
 
2142
2443
  **Success Criteria:**
2143
- - [ ] Documentation site deployed (GitHub Pages or Vercel)
2144
- - [ ] Covers: installation, skills, agents, hooks, CLI reference
2145
- - [ ] Auto-generated from existing CLAUDE.md/README.md content
2146
- - [ ] Tests: Build passes
2444
+ - :no_entry: SKIPPED README/CLAUDE.md sufficient, no documentation site needed
2147
2445
 
2148
2446
  ---
2149
2447
 
@@ -2189,7 +2487,7 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
2189
2487
  | Metric | Before | Target |
2190
2488
  |--------|--------|--------|
2191
2489
  | Skills | 88 | ~91 (+3 new skills) |
2192
- | Hooks | 14 | 20 (+6) |
2490
+ | Hooks | 14 | 21 (+7, observe-session in rag-mcp) |
2193
2491
  | Language rules | ~8 (pattern skills) | 70 (13 langs × 5 + 5 common) |
2194
2492
  | MCP templates | 0 | 25 |
2195
2493
  | Install granularity | 3 profiles | 3 profiles + module-level |
@@ -2220,12 +2518,14 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
2220
2518
 
2221
2519
  ---
2222
2520
 
2223
- ## 9. Next Actions
2521
+ ## 9. Remaining Gaps
2224
2522
 
2225
- 1. [ ] **Create `app/rules/common/` (5 files)** — Start with common rules
2226
- 2. [ ] **Create `app/mcp-templates/` (25 configs)** — Quick win, high impact
2227
- 3. [ ] **Create 6 new hooks** Independent, can parallelize
2228
- 4. [ ] Review and approve this plan
2523
+ All major features shipped. Outstanding items:
2524
+
2525
+ 1. [ ] `validate.py` does not check rules format (1.1)
2526
+ 2. [ ] No dedicated `test_rules` test file (1.1)
2527
+ 3. [ ] No dedicated tests for council, brand-voice, introspect skills (3.1-3.3)
2528
+ 4. [x] `observe-session.sh` lives in rag-mcp (consumer), not ai-toolkit — by design
2229
2529
 
2230
2530
  ---
2231
2531
 
@@ -2235,7 +2535,7 @@ None — all features are independent of external systems.
2235
2535
 
2236
2536
  ---
2237
2537
 
2238
- **Last Updated:** 2026-04-07
2538
+ **Last Updated:** 2026-04-09
2239
2539
 
2240
2540
  ---
2241
2541
 
@@ -3388,13 +3688,16 @@ The `common/` directory uses the same structure except `frameworks.md` is replac
3388
3688
 
3389
3689
  ## Auto-Detection
3390
3690
 
3391
- `--local` automatically enables language auto-detection. `scripts/install_steps/detect_language.py` scans the current directory for known marker files and selects matching language modules:
3691
+ `--local` automatically enables language auto-detection. `scripts/install_steps/detect_language.py` uses two-phase detection and merges results from both:
3392
3692
 
3393
3693
  ```bash
3394
3694
  ai-toolkit install --local # auto-detects language (--auto-detect is implied)
3395
3695
  ```
3396
3696
 
3397
- Detection logic (first match wins when multiple markers are present):
3697
+ ### Phase 1: Marker files (config-level signals)
3698
+
3699
+ Scans for configuration files defined in each module's `auto_detect` list in `manifest.json`:
3700
+
3398
3701
  1. `package.json` or `tsconfig.json` → TypeScript
3399
3702
  2. `go.mod` → Go
3400
3703
  3. `Cargo.toml` → Rust
@@ -3408,7 +3711,13 @@ Detection logic (first match wins when multiple markers are present):
3408
3711
  11. `*.csproj` or `*.sln` → C#
3409
3712
  12. `CMakeLists.txt` or `Makefile` → C++
3410
3713
 
3411
- Common rules are always injected regardless of detected language.
3714
+ ### Phase 2: Source file extensions (actual code presence)
3715
+
3716
+ Scans top-level files and one directory level deep for source file extensions (`.py`, `.ts`, `.go`, `.rs`, `.java`, `.kt`, `.swift`, `.dart`, `.cs`, `.php`, `.cpp`, `.rb`, etc.). Skips dependency/build directories (`node_modules`, `venv`, `dist`, `build`, etc.) for speed.
3717
+
3718
+ This catches cases where marker files are misleading — e.g., a Python project with a `package.json` only for its npm CLI wrapper will correctly detect both Python (via `.py` files) and TypeScript (via `package.json`).
3719
+
3720
+ Both phases contribute; results are merged and deduplicated. Common rules are always injected regardless of detected language.
3412
3721
 
3413
3722
  ## Installation
3414
3723
 
@@ -3416,13 +3725,18 @@ Common rules are always injected regardless of detected language.
3416
3725
  # Auto-detect language from project files (default with --local)
3417
3726
  ai-toolkit install --local
3418
3727
 
3419
- # Explicitly select a language
3728
+ # Explicitly select a language (implies --local, disables auto-detect)
3420
3729
  ai-toolkit install --local --lang typescript
3421
3730
 
3731
+ # Multiple languages
3732
+ ai-toolkit install --local --lang go,python
3733
+
3422
3734
  # Skip auto-detect, install specific modules only
3423
3735
  ai-toolkit install --local --modules core,agents
3424
3736
  ```
3425
3737
 
3738
+ The `--lang` flag accepts comma-separated language names and converts them to `rules-<lang>` modules. Common aliases are supported: `go` → `golang`, `c++` → `cpp`, `c#`/`cs` → `csharp`. Using `--lang` implies `--local` and disables auto-detection.
3739
+
3426
3740
  Language rules are injected into the project `CLAUDE.md` between named markers:
3427
3741
 
3428
3742
  ```
@@ -4112,7 +4426,7 @@ title: "AI Toolkit - Skills Catalog"
4112
4426
  category: reference
4113
4427
  service: ai-toolkit
4114
4428
  tags: [skills, domain-knowledge, catalog, task-skills, hybrid-skills]
4115
- version: "1.3.15"
4429
+ version: "1.4.0"
4116
4430
  created: "2026-03-23"
4117
4431
  last_updated: "2026-04-08"
4118
4432
  description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."
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 Verification](kb/procedures/release-verification-sop.md)
18
19
  - [Agents Catalog](kb/reference/agents-catalog.md)
19
20
  - [Anti-Pattern Registry Format](kb/reference/anti-pattern-registry-format.md)
20
21
  - [AI Toolkit Architecture](kb/reference/architecture-overview.md)
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.15",
2
+ "version": "1.4.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.3.15",
4
- "description": "Professional-grade AI coding toolkit: 91 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
3
+ "version": "1.4.0",
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.",
5
5
  "keywords": [
6
6
  "claude",
7
7
  "claude-code",
@@ -21,6 +21,8 @@
21
21
  "roo",
22
22
  "aider",
23
23
  "augment",
24
+ "antigravity",
25
+ "google-antigravity",
24
26
  "multi-platform"
25
27
  ],
26
28
  "homepage": "https://github.com/softspark/ai-toolkit",