@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.
@@ -13,15 +13,15 @@ tags:
13
13
  doc_type: plan
14
14
  status: completed
15
15
  created: "2026-04-07"
16
- last_updated: "2026-04-07"
16
+ last_updated: "2026-04-09"
17
17
  completion: "100%"
18
18
  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."
19
19
  ---
20
20
 
21
21
  # Plan: Competitive Features — ai-toolkit
22
22
 
23
- **Status:** :yellow_circle: IN PROGRESS
24
- **Completion:** 100% (9/9 features)
23
+ **Status:** :white_check_mark: COMPLETED
24
+ **Completion:** 100% (8/9 features, 1 skipped)
25
25
  **Started:** 2026-04-07
26
26
  **Estimated Completion:** 2026-06-15
27
27
  **Source:** Competitive analysis of `affaan-m/everything-claude-code` (ECC) + `thedotmack/claude-mem`
@@ -30,7 +30,7 @@ description: "Implementation plan for features identified from competitive analy
30
30
 
31
31
  ## 1. Objective
32
32
 
33
- Strengthen ai-toolkit's competitive position by implementing 10 features from competitive analysis while maintaining our advantages (clean architecture, 9 editors, personas, safety constitution).
33
+ Strengthen ai-toolkit's competitive position by implementing 10 features from competitive analysis while maintaining our advantages (clean architecture, 11 editors, personas, safety constitution).
34
34
 
35
35
  **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.
36
36
 
@@ -139,11 +139,11 @@ app/rules/
139
139
  | `tests/test_rules.py` | CREATE | Tests |
140
140
 
141
141
  **Success Criteria:**
142
- - [ ] 13 languages × 5 rule files created
143
- - [ ] `ai-toolkit install --local` auto-detects language and injects rules
144
- - [ ] Manual override: `ai-toolkit install --local --lang typescript`
145
- - [ ] validate.py checks rules format
146
- - [ ] Tests: >=13 (one per language)
142
+ - [x] 13 languages × 5 rule files created (70 files: 13 dirs × 5 + 5 common)
143
+ - [x] `ai-toolkit install --local` auto-detects language and injects rules (two-phase: marker files + extension scan)
144
+ - [x] Manual override: `ai-toolkit install --local --lang typescript` (with aliases: go→golang, c++→cpp, cs→csharp)
145
+ - [ ] validate.py checks rules format (not yet implemented)
146
+ - [ ] Tests: >=13 (no test_rules file yet)
147
147
 
148
148
  ---
149
149
 
@@ -178,11 +178,11 @@ app/rules/
178
178
  | `tests/test_hooks.py` | EDIT | Tests for new hooks |
179
179
 
180
180
  **Success Criteria:**
181
- - [ ] 6 new hooks created and registerable
182
- - [ ] guard-config blocks config edits unless `--force`
183
- - [ ] mcp-health pings configured MCP servers on session start
184
- - [ ] All hooks optional (enable/disable in settings.json)
185
- - [ ] Tests: >=6 (one per hook)
181
+ - [x] 5/6 new hooks created and registerable (observe-session.sh not in app/hooks — lives in rag-mcp as consumer)
182
+ - [x] guard-config blocks config edits unless `--force`
183
+ - [x] mcp-health pings configured MCP servers on session start
184
+ - [x] All hooks optional (enable/disable in settings.json)
185
+ - [x] Tests: 89 hook tests in test_hooks.bats
186
186
 
187
187
  ---
188
188
 
@@ -239,10 +239,10 @@ ai-toolkit mcp show github # Show config details
239
239
  | `tests/test_mcp_templates.py` | CREATE | Validate JSON schemas |
240
240
 
241
241
  **Success Criteria:**
242
- - [ ] 25 MCP template configs created
243
- - [ ] `ai-toolkit mcp add <name>` merges into .mcp.json
244
- - [ ] `ai-toolkit mcp list` shows all available
245
- - [ ] Tests: >=5 (schema validation)
242
+ - [x] 25 MCP template configs created
243
+ - [x] `ai-toolkit mcp add <name>` merges into .mcp.json
244
+ - [x] `ai-toolkit mcp list` shows all available
245
+ - [x] Tests: 15 in test_mcp_manager.bats
246
246
 
247
247
  ---
248
248
 
@@ -350,11 +350,11 @@ All entries are tagged with "_source": "<source-name>" for idempotent updates.
350
350
  | `add-rule <file.md>` | `~/.ai-toolkit/rules/` | File copy + re-inject all | Yes |
351
351
 
352
352
  **Success Criteria:**
353
- - [ ] `inject-hook ./my-hooks.json` merges hooks with auto-derived `_source` tag
354
- - [ ] `remove-hook my-hooks` strips all entries with that `_source`
355
- - [ ] Re-running is idempotent (update, not duplicate)
356
- - [ ] Existing ai-toolkit hooks (`_source: "ai-toolkit"`) are never touched
357
- - [ ] Tests: >=6 (inject, remove, idempotent, coexistence, malformed input, missing file)
353
+ - [x] `inject-hook ./my-hooks.json` merges hooks with auto-derived `_source` tag
354
+ - [x] `remove-hook my-hooks` strips all entries with that `_source`
355
+ - [x] Re-running is idempotent (update, not duplicate)
356
+ - [x] Existing ai-toolkit hooks (`_source: "ai-toolkit"`) are never touched
357
+ - [x] Tests: 17 in test_inject_hook.bats
358
358
 
359
359
  ---
360
360
 
@@ -449,13 +449,13 @@ ai-toolkit status # Show installed modules
449
449
  ```
450
450
 
451
451
  **Success Criteria:**
452
- - [ ] manifest.json defines all modules with dependencies
453
- - [ ] install --modules allows granular selection
454
- - [ ] install --auto-detect detects language from project files
455
- - [ ] state.json tracks what's installed
456
- - [ ] update only changes modified files (content hash)
457
- - [ ] Backward compatible with existing install
458
- - [ ] Tests: >=10
452
+ - [x] manifest.json defines all modules with dependencies
453
+ - [x] install --modules allows granular selection
454
+ - [x] install --auto-detect detects language from project files (two-phase: markers + extensions)
455
+ - [x] state.json tracks what's installed
456
+ - [x] update only changes modified files (content hash)
457
+ - [x] Backward compatible with existing install
458
+ - [x] Tests: 35 across test_install.bats, test_install_flags.bats, test_install_state.bats
459
459
 
460
460
  ---
461
461
 
@@ -494,10 +494,10 @@ context: fork
494
494
  - **Recommendation** with confidence level
495
495
 
496
496
  **Success Criteria:**
497
- - [ ] `/council` invocable
498
- - [ ] 4 perspectives generated
499
- - [ ] Structured output with recommendation
500
- - [ ] Tests: >=2
497
+ - [x] `/council` invocable
498
+ - [x] 4 perspectives generated
499
+ - [x] Structured output with recommendation
500
+ - [ ] Tests: dedicated council tests not yet written
501
501
 
502
502
  ---
503
503
 
@@ -514,9 +514,9 @@ context: fork
514
514
  - Consistency checks (before outputting content, verify voice match)
515
515
 
516
516
  **Success Criteria:**
517
- - [ ] Skill auto-loads when writing docs/content
518
- - [ ] Anti-trope list prevents generic LLM rhetoric
519
- - [ ] Tests: >=2
517
+ - [x] Skill auto-loads when writing docs/content
518
+ - [x] Anti-trope list prevents generic LLM rhetoric
519
+ - [ ] Tests: dedicated brand-voice tests not yet written
520
520
 
521
521
  ---
522
522
 
@@ -535,10 +535,10 @@ context: fork
535
535
  5. Optionally hand off to verification
536
536
 
537
537
  **Success Criteria:**
538
- - [ ] `/introspect` invocable when agent is stuck
539
- - [ ] Classifies failure pattern
540
- - [ ] Suggests recovery action
541
- - [ ] Tests: >=2
538
+ - [x] `/introspect` invocable when agent is stuck
539
+ - [x] Classifies failure pattern
540
+ - [x] Suggests recovery action
541
+ - [ ] Tests: dedicated introspect tests not yet written
542
542
 
543
543
  ---
544
544
 
@@ -579,10 +579,7 @@ docs/
579
579
  ```
580
580
 
581
581
  **Success Criteria:**
582
- - [ ] Documentation site deployed (GitHub Pages or Vercel)
583
- - [ ] Covers: installation, skills, agents, hooks, CLI reference
584
- - [ ] Auto-generated from existing CLAUDE.md/README.md content
585
- - [ ] Tests: Build passes
582
+ - :no_entry: SKIPPED README/CLAUDE.md sufficient, no documentation site needed
586
583
 
587
584
  ---
588
585
 
@@ -628,7 +625,7 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
628
625
  | Metric | Before | Target |
629
626
  |--------|--------|--------|
630
627
  | Skills | 88 | ~91 (+3 new skills) |
631
- | Hooks | 14 | 20 (+6) |
628
+ | Hooks | 14 | 21 (+7, observe-session in rag-mcp) |
632
629
  | Language rules | ~8 (pattern skills) | 70 (13 langs × 5 + 5 common) |
633
630
  | MCP templates | 0 | 25 |
634
631
  | Install granularity | 3 profiles | 3 profiles + module-level |
@@ -659,12 +656,14 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
659
656
 
660
657
  ---
661
658
 
662
- ## 9. Next Actions
659
+ ## 9. Remaining Gaps
663
660
 
664
- 1. [ ] **Create `app/rules/common/` (5 files)** — Start with common rules
665
- 2. [ ] **Create `app/mcp-templates/` (25 configs)** — Quick win, high impact
666
- 3. [ ] **Create 6 new hooks** Independent, can parallelize
667
- 4. [ ] Review and approve this plan
661
+ All major features shipped. Outstanding items:
662
+
663
+ 1. [ ] `validate.py` does not check rules format (1.1)
664
+ 2. [ ] No dedicated `test_rules` test file (1.1)
665
+ 3. [ ] No dedicated tests for council, brand-voice, introspect skills (3.1-3.3)
666
+ 4. [x] `observe-session.sh` lives in rag-mcp (consumer), not ai-toolkit — by design
668
667
 
669
668
  ---
670
669
 
@@ -674,4 +673,4 @@ None — all features are independent of external systems.
674
673
 
675
674
  ---
676
675
 
677
- **Last Updated:** 2026-04-07
676
+ **Last Updated:** 2026-04-09
@@ -85,13 +85,16 @@ The `common/` directory uses the same structure except `frameworks.md` is replac
85
85
 
86
86
  ## Auto-Detection
87
87
 
88
- `--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:
88
+ `--local` automatically enables language auto-detection. `scripts/install_steps/detect_language.py` uses two-phase detection and merges results from both:
89
89
 
90
90
  ```bash
91
91
  ai-toolkit install --local # auto-detects language (--auto-detect is implied)
92
92
  ```
93
93
 
94
- Detection logic (first match wins when multiple markers are present):
94
+ ### Phase 1: Marker files (config-level signals)
95
+
96
+ Scans for configuration files defined in each module's `auto_detect` list in `manifest.json`:
97
+
95
98
  1. `package.json` or `tsconfig.json` → TypeScript
96
99
  2. `go.mod` → Go
97
100
  3. `Cargo.toml` → Rust
@@ -105,7 +108,13 @@ Detection logic (first match wins when multiple markers are present):
105
108
  11. `*.csproj` or `*.sln` → C#
106
109
  12. `CMakeLists.txt` or `Makefile` → C++
107
110
 
108
- Common rules are always injected regardless of detected language.
111
+ ### Phase 2: Source file extensions (actual code presence)
112
+
113
+ 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.
114
+
115
+ 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`).
116
+
117
+ Both phases contribute; results are merged and deduplicated. Common rules are always injected regardless of detected language.
109
118
 
110
119
  ## Installation
111
120
 
@@ -113,13 +122,18 @@ Common rules are always injected regardless of detected language.
113
122
  # Auto-detect language from project files (default with --local)
114
123
  ai-toolkit install --local
115
124
 
116
- # Explicitly select a language
125
+ # Explicitly select a language (implies --local, disables auto-detect)
117
126
  ai-toolkit install --local --lang typescript
118
127
 
128
+ # Multiple languages
129
+ ai-toolkit install --local --lang go,python
130
+
119
131
  # Skip auto-detect, install specific modules only
120
132
  ai-toolkit install --local --modules core,agents
121
133
  ```
122
134
 
135
+ 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.
136
+
123
137
  Language rules are injected into the project `CLAUDE.md` between named markers:
124
138
 
125
139
  ```
@@ -3,7 +3,7 @@ title: "AI Toolkit - Skills Catalog"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [skills, domain-knowledge, catalog, task-skills, hybrid-skills]
6
- version: "1.3.15"
6
+ version: "1.4.0"
7
7
  created: "2026-03-23"
8
8
  last_updated: "2026-04-08"
9
9
  description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."