@softspark/ai-toolkit 4.21.0 → 4.22.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.
Files changed (35) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +40 -28
  3. package/app/.claude-plugin/plugin.json +1 -1
  4. package/app/agents/code-reviewer.md +32 -15
  5. package/app/skills/a11y-validate/SKILL.md +61 -179
  6. package/app/skills/a11y-validate/reference/scanner-categories.md +174 -0
  7. package/app/skills/brainstorm/SKILL.md +174 -0
  8. package/app/skills/brand-voice/SKILL.md +1 -1
  9. package/app/skills/ci/SKILL.md +2 -1
  10. package/app/skills/debug/SKILL.md +3 -2
  11. package/app/skills/deploy/SKILL.md +1 -1
  12. package/app/skills/explore/SKILL.md +1 -1
  13. package/app/skills/explore/scripts/visualize.py +15 -1
  14. package/app/skills/fix/SKILL.md +3 -3
  15. package/app/skills/hipaa-validate/SKILL.md +25 -221
  16. package/app/skills/hipaa-validate/reference/scanner-categories.md +224 -0
  17. package/app/skills/migrate/SKILL.md +1 -1
  18. package/app/skills/pr/SKILL.md +2 -2
  19. package/app/skills/review/SKILL.md +50 -5
  20. package/app/skills/rollback/SKILL.md +1 -1
  21. package/app/skills/seo-validate/SKILL.md +63 -309
  22. package/app/skills/seo-validate/reference/scanner-categories.md +304 -0
  23. package/app/surface.json +296 -0
  24. package/benchmarks/ecosystem-doctor-snapshot.json +15 -19
  25. package/kb/procedures/post-release-testing-sop.md +92 -3
  26. package/kb/procedures/release-preparation-sop.md +44 -2
  27. package/kb/reference/architecture-overview.md +3 -3
  28. package/kb/reference/skills-catalog.md +10 -14
  29. package/llms-full.txt +150 -22
  30. package/manifest.json +3 -3
  31. package/package.json +6 -3
  32. package/scripts/check_split.py +493 -0
  33. package/scripts/surface_manifest.py +246 -0
  34. package/scripts/sync_badges.py +133 -0
  35. package/scripts/validate.py +118 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "last_run": "2026-07-27T11:02:34Z",
2
+ "last_run": "2026-08-06T05:13:55Z",
3
3
  "schema_version": 1,
4
4
  "tools": {
5
5
  "aider": {
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "augment": {
27
- "docs_hash": "b8b7ddbeaccd618d",
27
+ "docs_hash": "68eecb3b6a49f7f1",
28
28
  "headings": [
29
29
  "Admin",
30
30
  "Auggie CLI",
@@ -51,7 +51,7 @@
51
51
  "Auggie CLI": true,
52
52
  "MCP": true,
53
53
  "Next Edit": false,
54
- "Notification": true,
54
+ "Notification": false,
55
55
  "PostToolUse": false,
56
56
  "PreToolUse": false,
57
57
  "SKILL.md": false,
@@ -66,7 +66,7 @@
66
66
  }
67
67
  },
68
68
  "claude-app": {
69
- "docs_hash": "08443e412637cd52",
69
+ "docs_hash": "670f833a8e1527c0",
70
70
  "headings": [
71
71
  "Add global and folder instructions",
72
72
  "Availability",
@@ -107,7 +107,7 @@
107
107
  }
108
108
  },
109
109
  "claude-code": {
110
- "docs_hash": "e85f8751f08026f0",
110
+ "docs_hash": "1904e0148fe997b9",
111
111
  "headings": [
112
112
  "Core concepts",
113
113
  "Documentation Index",
@@ -130,7 +130,7 @@
130
130
  "InstructionsLoaded": false,
131
131
  "MCP server": true,
132
132
  "MessageDisplay": false,
133
- "Notification": true,
133
+ "Notification": false,
134
134
  "PermissionDenied": false,
135
135
  "PermissionRequest": false,
136
136
  "PostCompact": false,
@@ -163,10 +163,10 @@
163
163
  "slash command": false,
164
164
  "sub-agent": true
165
165
  },
166
- "version": "2.1.220 (Claude Code)"
166
+ "version": "2.1.223 (Claude Code)"
167
167
  },
168
168
  "cline": {
169
- "docs_hash": "3bbabe935a9e6ebb",
169
+ "docs_hash": "e4409c39f56583e8",
170
170
  "headings": [
171
171
  "API Reference",
172
172
  "Best Practices",
@@ -213,7 +213,7 @@
213
213
  }
214
214
  },
215
215
  "codex-cli": {
216
- "docs_hash": "379d4d3760235c7f",
216
+ "docs_hash": "91d1d7112da069da",
217
217
  "headings": [
218
218
  "API",
219
219
  "API Reference",
@@ -345,10 +345,10 @@
345
345
  "mcp_servers": false,
346
346
  "sandbox": true
347
347
  },
348
- "version": "codex-cli 0.145.0"
348
+ "version": "codex-cli 0.146.0"
349
349
  },
350
350
  "cursor": {
351
- "docs_hash": "74d1366066760874",
351
+ "docs_hash": "9d032d0dae73bed2",
352
352
  "headings": [],
353
353
  "markers": {
354
354
  ".cursor/rules": false,
@@ -364,7 +364,7 @@
364
364
  }
365
365
  },
366
366
  "gemini-cli": {
367
- "docs_hash": "6e930c2fa0b827f5",
367
+ "docs_hash": "d47d074674e59f6f",
368
368
  "headings": [
369
369
  "Breadcrumbs",
370
370
  "Directory actions",
@@ -376,11 +376,7 @@
376
376
  "Latest commit",
377
377
  "More options",
378
378
  "Navigation Menu",
379
- "Provide feedback",
380
- "Saved searches",
381
- "Search code, repositories, users, issues, pull requests...",
382
379
  "Uh oh!",
383
- "Use saved searches to filter your results more quickly",
384
380
  "docs",
385
381
  "parent directory"
386
382
  ],
@@ -407,7 +403,7 @@
407
403
  }
408
404
  },
409
405
  "github-copilot": {
410
- "docs_hash": "1c6e0fd930f573fa",
406
+ "docs_hash": "ee88f952816a8535",
411
407
  "headings": [
412
408
  "About Copilot auto model selection",
413
409
  "About Copilot automations",
@@ -460,7 +456,7 @@
460
456
  }
461
457
  },
462
458
  "opencode": {
463
- "docs_hash": "297813a7e2881afe",
459
+ "docs_hash": "f09f3fbe98570961",
464
460
  "headings": [
465
461
  "Add features",
466
462
  "Ask questions",
@@ -520,7 +516,7 @@
520
516
  }
521
517
  },
522
518
  "windsurf": {
523
- "docs_hash": "56080b3b62a1de8e",
519
+ "docs_hash": "496619fda7ca4576",
524
520
  "headings": [
525
521
  "Accounts",
526
522
  "Advanced",
@@ -3,10 +3,10 @@ title: "SOP: Post-Release Testing"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, post-release, smoke-test, npm, sandbox, plugin-pack, provenance, isolation]
6
- version: "1.0.0"
6
+ version: "1.1.0"
7
7
  created: "2026-07-26"
8
- last_updated: "2026-07-26"
9
- description: "Smoke-test a published @softspark/ai-toolkit release from npm in an isolated HOME and npm prefix, without touching the maintainer's real install. Covers provenance, CLI, doctor, and the full plugin-pack lifecycle including the degraded-install path. Written for v4.18.0 and not run; v4.18.0 shipped a pack that broke every command it touched, and every step here would have caught it."
8
+ last_updated: "2026-08-06"
9
+ description: "Smoke-test a published @softspark/ai-toolkit release from npm in an isolated HOME and npm prefix, without touching the maintainer's real install. Covers provenance, CLI, doctor, per-skill script resolution, scanner wiring, and the full plugin-pack lifecycle including the degraded-install path. Written for v4.18.0 and not run; v4.18.0 shipped a pack that broke every command it touched. First actually run on v4.22.0, which added Phases 4b and 4c after that release fixed four skills whose documented script path had never resolved and two that shipped a scanner nothing invoked."
10
10
  ---
11
11
 
12
12
  # SOP: Post-Release Testing
@@ -92,6 +92,95 @@ npm install -g --prefix "$SB/npm" "@softspark/ai-toolkit@${VERSION}"
92
92
  `skills directory missing`.** That is the sandbox being empty, not a defect.
93
93
  Install first, then judge doctor.
94
94
 
95
+ ## Phase 4b: Skill scripts resolve and run from the installed copy
96
+
97
+ 23 skills ship an executable script under `scripts/`. A skill body invokes it
98
+ through `${CLAUDE_SKILL_DIR}`, which only resolves once the skill is installed —
99
+ so a wrong path is invisible in the working tree and invisible to `validate.py`,
100
+ which checks that the file exists on disk, never that the documented command
101
+ finds it.
102
+
103
+ This is exactly how four skills shipped with `$(dirname "$0")`, which expands to
104
+ the shell's directory rather than the skill's. Every one of them had been broken
105
+ for as long as the line existed.
106
+
107
+ Iterate over every skill that ships a script. Do not hand-pick the ones the
108
+ release touched — the point of this phase is to catch the ones nobody remembered.
109
+
110
+ ```bash
111
+ for D in "$HOME"/.claude/skills/*/; do
112
+ s=$(basename "$D")
113
+ [ -d "$D/scripts" ] || continue
114
+ # Match ANY interpreter and ANY extension. Narrowing this to `python3` and
115
+ # `.py` is how the first version of this phase reported "no invocation" for a
116
+ # skill that used `python`, and missed one that ran a .py file through bash.
117
+ ref=$(grep -ohE '(python3?|bash|sh|node) +\$\{CLAUDE_SKILL_DIR\}/scripts/[A-Za-z0-9_.-]+' "$D/SKILL.md" | head -1)
118
+ [ -n "$ref" ] || { printf '%-22s NO ${CLAUDE_SKILL_DIR} INVOCATION\n' "$s"; continue; }
119
+ interp=${ref%% *}
120
+ rel=${ref##*\$\{CLAUDE_SKILL_DIR\}/}
121
+ printf '%-22s %-10s %-26s ' "$s" "$interp" "$rel"
122
+ [ -f "$D/$rel" ] || { echo 'PATH DOES NOT RESOLVE'; continue; }
123
+ out=$(CLAUDE_SKILL_DIR="$D" timeout 20 "$interp" "$D/$rel" --help </dev/null 2>&1 | head -1)
124
+ printf 'rc=%s %s\n' "$?" "$(echo "$out" | cut -c1-40)"
125
+ done
126
+ ```
127
+
128
+ **Verify:**
129
+ - [ ] Every skill with a `scripts/` directory has a documented invocation
130
+ - [ ] Every documented path resolves to a file that exists
131
+ - [ ] Every script exits without a traceback and without hanging
132
+ - [ ] The interpreter matches the file: no `.py` through `bash`, no bare `python`
133
+
134
+ A skill reported as `NO ${CLAUDE_SKILL_DIR} INVOCATION` is not automatically a
135
+ defect — some ship assets rather than executables (`write-a-prd` ships `.html`,
136
+ `.js` and `.cjs`). Read the skill before filing it. What *is* always a defect is
137
+ an invocation that names a skill-owned script through any other path.
138
+
139
+ `validate.py` now fails the build on that class (`_validate_skill_script_invocations`),
140
+ so this phase is the second line rather than the first. Keep it: the validator
141
+ reasons about the source, this runs the real thing.
142
+
143
+ **`</dev/null` and `timeout` are not defensive padding.** Several of these
144
+ scripts are stdin filters (`error-parser.py`, `error-classifier.py`) documented
145
+ as `command 2>&1 | python3 …`. Probing one with `--help` and an open stdin
146
+ blocks forever, and the run looks like a slow test rather than a hung one. A
147
+ correct stdin filter answers an empty stdin with a JSON error and `rc=0`; a
148
+ traceback there is a real finding.
149
+
150
+ ## Phase 4c: Skills that wrap a scanner actually scan
151
+
152
+ For any skill whose body tells the model to run a scanner, presence of the script
153
+ is not evidence the wiring works. Build a fixture with known defects and confirm
154
+ the scanner reports them.
155
+
156
+ ```bash
157
+ FX="$SB/fixture"; mkdir -p "$FX"
158
+ cat > "$FX/index.html" <<'EOF'
159
+ <!DOCTYPE html><html><head><title>t</title></head>
160
+ <body><h1>A</h1><h3>skipped h2</h3><img src="x.png"><input type="text"><div onclick="go()">click</div></body></html>
161
+ EOF
162
+ printf '{"name":"fx","dependencies":{"react":"18"}}\n' > "$FX/package.json"
163
+
164
+ for s in a11y-validate seo-validate hipaa-validate cve-scan; do
165
+ D="$HOME/.claude/skills/$s"
166
+ script=$(ls "$D"/scripts/*.py 2>/dev/null | head -1)
167
+ [ -n "$script" ] || continue
168
+ echo "=== $s ==="
169
+ CLAUDE_SKILL_DIR="$D" timeout 60 python3 "$script" "$FX" --output json </dev/null 2>&1 | head -3
170
+ done
171
+ ```
172
+
173
+ **Verify:**
174
+ - [ ] The scanner returns findings, not an empty set — the fixture has real defects
175
+ - [ ] Findings span more than one category, proving the whole check set ran
176
+ - [ ] A scanner that exits non-zero on findings is doing its job, not failing
177
+
178
+ `a11y-validate` and `seo-validate` shipped working scanners that **no step in
179
+ either skill invoked** for their entire life before v4.22.0. The model was told to
180
+ grep the pattern tables by hand instead. Nothing in the test suite noticed,
181
+ because a script nobody calls still passes every check that asks whether it
182
+ exists.
183
+
95
184
  ## Phase 5: Plugin-pack lifecycle
96
185
 
97
186
  Run this for any pack the release touched. For a pack that downloads a binary,
@@ -3,9 +3,9 @@ title: "SOP: Release Preparation"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem, shellcheck]
6
- version: "1.13.0"
6
+ version: "1.14.0"
7
7
  created: "2026-04-10"
8
- last_updated: "2026-07-27"
8
+ last_updated: "2026-08-06"
9
9
  description: "Step-by-step checklist for preparing a new ai-toolkit release — ecosystem-sync drift check, version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag. Includes mandatory Provenance, SARIF, and checksum-pin checks added in v2.8.0, the single-run npm test discipline added in v1.8.0, the ecosystem-sync gate added in v1.9.0, the registry-vs-generators drift gate added in v1.10.0, the mandatory pre-tag ShellCheck gate added in v1.11.0 (publish.yml does not run ShellCheck, so a hook lint failure can publish while reddening main CI — see the v4.5.1 postmortem in Phase 5), the pre-push tag assertions added in v1.12.0 after v4.19.0 was tagged on the wrong commit (Phase 7), and the licensing gate added in v1.13.0 with the move to Apache-2.0 (Phase 5c)."
10
10
  ---
11
11
 
@@ -210,6 +210,48 @@ echo "package-lock.json: $(python3 -c "import json; print(json.load(open('packag
210
210
 
211
211
  All four must print the same version. If not, fix before proceeding.
212
212
 
213
+ ### Public surface review
214
+
215
+ ```bash
216
+ python3 scripts/surface_manifest.py --update
217
+ git diff app/surface.json
218
+ ```
219
+
220
+ **Every line the diff removes is a breaking change.** Restore it, or take the
221
+ deprecation path in `BACKWARD_COMPATIBILITY.md` and add a `DECISIONS.md` entry
222
+ before the tag. Lines added are new surface being adopted into protection — that
223
+ needs no ceremony.
224
+
225
+ Do not run `--update` to make a red build green. The check fails because something
226
+ users depend on disappeared; regenerating the manifest deletes the evidence, not
227
+ the problem.
228
+
229
+ ### Skill body budget ratchet
230
+
231
+ `validate.py` prints the largest skill body on every run:
232
+
233
+ ```
234
+ Body budget: largest is <skill> at <N> bytes (warn 18000, error 20000)
235
+ ```
236
+
237
+ Once that number sits at least 2000 bytes under `SKILL_BODY_BUDGET_WARN`, lower
238
+ `SKILL_BODY_BUDGET_WARN` by 2000 in `scripts/validate.py` and ship the tightened
239
+ threshold with the release. Target floor is 12000.
240
+
241
+ Two rules, both learned the hard way:
242
+
243
+ - **Never lower a threshold in the same change that something violates it.** Split
244
+ the offending skill into `SKILL.md` + `reference/` first, prove it with
245
+ `python3 scripts/check_split.py <skill> --before <pre-split SKILL.md>`, then
246
+ tighten in a follow-up.
247
+ - **Never raise a threshold to make a red build green.** A body over budget means
248
+ detail that belongs in `reference/` is loading on every trigger match, including
249
+ the accidental ones. Raising the number hides the cost, it does not remove it.
250
+
251
+ If the largest body has not moved since the previous release, leave the threshold
252
+ alone and say so in the release notes. A ratchet that never advances is honest;
253
+ one that advances past reality is not.
254
+
213
255
  ---
214
256
 
215
257
  ## Phase 3: Write CHANGELOG Entry
@@ -3,9 +3,9 @@ title: "AI Toolkit - Architecture Overview"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [architecture, overview, design, structure]
6
- version: "1.6.0"
6
+ version: "1.6.1"
7
7
  created: "2026-03-23"
8
- last_updated: "2026-07-26"
8
+ last_updated: "2026-08-06"
9
9
  description: "Architecture of ai-toolkit: directory layout, Claude app export, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
10
10
  ---
11
11
 
@@ -207,7 +207,7 @@ Three tiers determine how to approach a task:
207
207
  | Type | Field | Invocation | Count |
208
208
  |------|-------|-----------|-------|
209
209
  | Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
210
- | Hybrid | (neither) | User via `/skill` + agent knowledge | 30 |
210
+ | Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
211
211
  | Knowledge | `user-invocable: false` | Claude auto-loads | 46 |
212
212
 
213
213
  ## Multi-Agent Execution
@@ -3,9 +3,9 @@ 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.4.3"
6
+ version: "1.5.0"
7
7
  created: "2026-03-23"
8
- last_updated: "2026-04-12"
8
+ last_updated: "2026-08-06"
9
9
  description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes Codex adaptation notes, effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."
10
10
  ---
11
11
 
@@ -18,13 +18,13 @@ All functionality is unified under skills. Task and hybrid skills are user-invoc
18
18
  | Tier | Skills | When |
19
19
  |------|--------|------|
20
20
  | **1 — Quick single-agent** | `/debug`, `/review`, `/refactor`, `/analyze`, `/docs`, `/plan`, `/explain`, `/tdd`, `/grill-me`, `/triage-issue` | One concern, fast |
21
+ | **1.5 — Should we build it?** | `/brainstorm` | Pre-artifact conversation; prices the zero option and may end in "do not build this" |
21
22
  | **1.5 — Product planning** | `/write-a-prd` → `/prd-to-plan` → `/prd-to-issues` | Interview-driven PRD → vertical-slice plan → GitHub issues |
22
23
  | **1.5 — Design & architecture** | `/design-an-interface`, `/architecture-audit`, `/refactor-plan`, `/ubiquitous-language`, `/qa-session` | Parallel sub-agent exploration |
23
24
  | **2 — Multi-agent workflow** | `/workflow <type>` | Cross-cutting task with known pattern |
24
25
  | **3 — Custom parallelism** | `/orchestrate`, `/swarm` | No predefined workflow matches |
25
26
 
26
- ## Task Skills (30)
27
-
27
+ ## Task Skills
28
28
  Task skills execute a specific action. Invoked via slash commands. `disable-model-invocation: true`.
29
29
 
30
30
  | Skill | Slash Command | Effort | Description |
@@ -62,8 +62,7 @@ Task skills execute a specific action. Invoked via slash commands. `disable-mode
62
62
  | **seo-validate** | `/seo-validate` | medium | Scan codebase for SEO issues: W3C semantics, meta/OG tags, Schema.org, hreflang, Core Web Vitals (LCP/INP/CLS), resource hints, GEO, SPA/SSG/CSR crawlability, technical SEO, accessibility-for-SEO. Framework-aware (Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue/static HTML). |
63
63
  | **mcp-builder** | `/mcp-builder` | high | Build production-grade MCP servers using the 4-phase methodology (research, implement, test, evaluate). TypeScript/Python, stdio/streamable-http. |
64
64
 
65
- ## Hybrid Skills (32)
66
-
65
+ ## Hybrid Skills
67
66
  Hybrid skills combine slash-command invocation with domain knowledge that agents reference.
68
67
 
69
68
  | Skill | Slash Command | Effort | Description |
@@ -96,6 +95,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
96
95
  | **mem-search** | `/mem-search` | medium | Search past coding sessions via natural language (memory-pack) |
97
96
  | **persona** | `/persona` | low | Switch engineering persona at runtime (backend-lead, frontend-lead, devops-eng, junior-dev) |
98
97
  | **council** | `/council` | high | 4-perspective decision evaluation (Advocate, Critic, Pragmatist, User-Proxy) with synthesis and confidence-rated recommendation. Tier 1, orchestrator, `context: fork`. |
98
+ | **brainstorm** | `/brainstorm` | high | Pre-artifact conversation that prices "build nothing" as a real candidate and sends the conclusion to a separate challenger agent before routing. Six exit ramps, one of which is stop. |
99
99
  | **introspect** | `/introspect` | medium | Agent self-debugging: classify failure pattern, suggest smallest recovery action, emit structured introspection report |
100
100
  | **brand-voice** | `/brand-voice` | medium | Anti-trope list, voice principles, LLM rhetoric prevention; output modes (`concise` ≤60% tokens, `strict` ≤40%) governing conversational responses. |
101
101
 
@@ -119,8 +119,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
119
119
  | `application-deploy` | 3 | Deploy → smoke test → release notes |
120
120
  | `proactive-troubleshooting` | 4 | Investigate → check perf → preventive fix → docs |
121
121
 
122
- ## Knowledge Skills - Development (15)
123
-
122
+ ## Knowledge Skills - Development
124
123
  | Skill | Directory | Domain |
125
124
  |-------|-----------|--------|
126
125
  | **app-builder** | `skills/app-builder/` | Full-stack application architecture |
@@ -139,8 +138,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
139
138
  | **design-engineering** | `skills/design-engineering/` | UI polish, animation craft, easing, transforms, accessibility |
140
139
  | **documentation-standards** | `skills/documentation-standards/` | KB document conventions, frontmatter validation, category taxonomy |
141
140
 
142
- ## Knowledge Skills - Infrastructure (6)
143
-
141
+ ## Knowledge Skills - Infrastructure
144
142
  | Skill | Directory | Domain |
145
143
  |-------|-----------|--------|
146
144
  | **docker-devops** | `skills/docker-devops/` | Docker, deployment, infrastructure |
@@ -150,8 +148,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
150
148
  | **testing-patterns** | `skills/testing-patterns/` | Multi-language TDD: pytest, vitest, phpunit, go test, flutter |
151
149
  | **migration-patterns** | `skills/migration-patterns/` | Database migrations, API versioning, zero-downtime |
152
150
 
153
- ## Knowledge Skills - AI/RAG (6)
154
-
151
+ ## Knowledge Skills - AI/RAG
155
152
  | Skill | Directory | Domain |
156
153
  |-------|-----------|--------|
157
154
  | **rag-patterns** | `skills/rag-patterns/` | RAG pipelines, chunking, reranking, evaluation |
@@ -161,8 +158,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
161
158
  | **content-moderation-patterns** | `skills/content-moderation-patterns/` | Two-stage moderation: pre-filter + LLM classifier; categories; thresholds |
162
159
  | **model-routing-patterns** | `skills/model-routing-patterns/` | Haiku/Sonnet/Opus routing; escalation; sub-agent delegation; fallback |
163
160
 
164
- ## Knowledge Skills - Process (6)
165
-
161
+ ## Knowledge Skills - Process
166
162
  | Skill | Directory | Domain |
167
163
  |-------|-----------|--------|
168
164
  | **git-mastery** | `skills/git-mastery/` | Git workflows, branching, conflict resolution |