@softspark/ai-toolkit 3.0.1 → 3.1.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/AGENTS.md +13 -0
- package/CHANGELOG.md +46 -0
- package/README.md +34 -20
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/cpp-rules/SKILL.md +275 -0
- package/app/skills/csharp-rules/SKILL.md +282 -0
- package/app/skills/dart-rules/SKILL.md +299 -0
- package/app/skills/golang-rules/SKILL.md +262 -0
- package/app/skills/hook-creator/SKILL.md +7 -3
- package/app/skills/introspect/SKILL.md +1 -1
- package/app/skills/java-rules/SKILL.md +273 -0
- package/app/skills/kotlin-rules/SKILL.md +271 -0
- package/app/skills/medplum-rules/SKILL.md +271 -0
- package/app/skills/php-rules/SKILL.md +292 -0
- package/app/skills/python-rules/SKILL.md +257 -0
- package/app/skills/ruby-rules/SKILL.md +286 -0
- package/app/skills/rust-rules/SKILL.md +276 -0
- package/app/skills/swift-rules/SKILL.md +293 -0
- package/app/skills/typescript-rules/SKILL.md +249 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +14 -14
- package/bin/ai-toolkit.js +5 -1
- package/kb/history/completed/deep-coverage-v3-20260423.md +3 -3
- package/kb/history/completed/ecosystem-deep-sweep-20260423.md +1 -1
- package/kb/procedures/release-preparation-sop.md +4 -4
- package/kb/procedures/release-verification-sop.md +11 -12
- package/kb/reference/architecture-overview.md +1 -1
- package/kb/reference/cli-reference.md +14 -3
- package/kb/reference/competitive-features-implementation.md +9 -9
- package/kb/reference/global-install-model.md +29 -6
- package/kb/reference/hooks-catalog.md +8 -2
- package/kb/reference/language-rules.md +54 -18
- package/kb/reference/mcp-editor-compatibility.md +4 -3
- package/kb/reference/mcp-templates.md +3 -2
- package/kb/reference/supported-tools-registry.md +10 -8
- package/kb/reference/windows-support.md +50 -0
- package/llms-full.txt +220 -72
- package/llms.txt +1 -0
- package/manifest.json +3 -3
- package/package.json +14 -3
- package/scripts/_common.py +21 -0
- package/scripts/check_deps.py +14 -0
- package/scripts/codex_skill_adapter.py +19 -3
- package/scripts/ecosystem_tools.json +7 -7
- package/scripts/generate_cline_rules.py +17 -8
- package/scripts/generate_codex_skills.py +33 -96
- package/scripts/generate_language_rules_skills.py +232 -0
- package/scripts/generate_roo_rules.py +11 -3
- package/scripts/install.py +6 -1
- package/scripts/install_steps/ai_tools.py +154 -51
- package/scripts/install_steps/install_state.py +14 -2
- package/scripts/mcp_editors.py +7 -0
- package/scripts/stats.py +126 -39
- package/scripts/validate.py +160 -4
package/llms-full.txt
CHANGED
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
- [Supported Tools Registry](kb/reference/supported-tools-registry.md)
|
|
59
59
|
- [Config Sync](kb/reference/sync.md)
|
|
60
60
|
- [Unique Features & Differentiators](kb/reference/unique-features.md)
|
|
61
|
+
- [Windows Support](kb/reference/windows-support.md)
|
|
61
62
|
- [Troubleshooting](kb/troubleshooting/README.md)
|
|
62
63
|
|
|
63
64
|
## Skills
|
|
@@ -81,8 +82,11 @@
|
|
|
81
82
|
- **commit**: Create Conventional Commits with pre-commit validation
|
|
82
83
|
- **content-moderation-patterns**: Loaded when user builds content moderation, safety filters, or policy enforcement with Claude. Covers pre-filter vs LLM-classify, category design, confidence thresholds, and human-in-the-loop.
|
|
83
84
|
- **council**: 4-perspective decision evaluation for architecture choices. Use when user wants multi-angle analysis, needs to decide between alternatives, or mentions 'council', 'evaluate decision', 'pros cons'.
|
|
85
|
+
- **cpp-rules**: C++ coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .cpp, .cc, .cxx, .hpp, .h, CMakeLists.txt, Makefile, GoogleTest, clang-tidy. Load when writing, reviewing, or editing C++ code.
|
|
84
86
|
- **csharp-patterns**: C# and .NET development patterns: LINQ, async/await, dependency injection, records, nullable reference types, ASP.NET Core minimal APIs, EF Core, MediatR. Triggers: C#, .NET, dotnet, ASP.NET, EF Core, LINQ, IServiceCollection, record type, async C#, nullable reference types. Load when writing or reviewing C#/.NET code.
|
|
87
|
+
- **csharp-rules**: C#/.NET coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .cs, .csproj, .sln, ASP.NET, ASP.NET Core, EF Core, LINQ, NUnit, xUnit, dotnet. Load when writing, reviewing, or editing C#/.NET code.
|
|
85
88
|
- **cve-scan**: Scan project dependencies for known CVEs using native audit tools (npm, pip, composer, cargo, go, bundler, dart)
|
|
89
|
+
- **dart-rules**: Dart/Flutter coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .dart, pubspec.yaml, Flutter, Riverpod, Bloc, widget, StatelessWidget, StatefulWidget. Load when writing, reviewing, or editing Dart/Flutter code.
|
|
86
90
|
- **database-patterns**: Database schema design and query optimization: normalization, indexing strategies, joins, N+1, transactions, isolation levels, partitioning, EXPLAIN plans. Triggers: schema, table design, index, slow query, N+1, PostgreSQL, MySQL, SQL Server, SQL, EXPLAIN, query plan, transaction, deadlock. Load when designing tables or tuning queries.
|
|
87
91
|
- **debug**: Debug errors and trace root causes systematically using logs, health checks, and hypothesis-driven investigation. Use when a bug or error message is in hand — not for architectural questions or when there is no reproducible symptom.
|
|
88
92
|
- **debugging-tactics**: Root-cause debugging with 4-phase method: investigation, hypothesis, validation, fix. No fix without RCA. Triggers: bug, error, exception, stack trace, not working, intermittent, flaky, crash, regression, fails sometimes, why is X happening, broken after. Load when user reports a bug or asks to investigate failing code.
|
|
@@ -100,6 +104,7 @@
|
|
|
100
104
|
- **fix**: Apply a targeted fix to a known bug or lint error and verify it with the same command that surfaced the problem. Use when the root cause is already identified — not for unknown symptoms or open-ended debugging.
|
|
101
105
|
- **flutter-patterns**: Flutter and Dart development patterns: widget composition, state management (Riverpod/Bloc/Provider), navigation, async, platform channels, performance. Triggers: Flutter, Dart, widget, StatefulWidget, Riverpod, Bloc, Provider, pubspec, Navigator, platform channel, hot reload, StatelessWidget. Load when writing or reviewing Flutter code.
|
|
102
106
|
- **git-mastery**: Advanced Git workflows: interactive rebase, bisect, reflog, cherry-pick, worktrees, history rewriting, submodules, large-file migration (LFS/filter-repo). Triggers: git rebase, bisect, cherry-pick, reflog, force push, history rewrite, detached HEAD, merge conflict, worktree, squash, fixup, submodule. Load when user needs non-trivial Git operations.
|
|
107
|
+
- **golang-rules**: Go coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .go, go.mod, go.sum, Gin, Echo, Gorilla, testing, gofmt. Load when writing, reviewing, or editing Go code.
|
|
103
108
|
- **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'.
|
|
104
109
|
- **health**: Report service and infrastructure health status via liveness/readiness checks, resource usage, and quick diagnostics. Use when the user asks whether services are up or degraded — not for deep debugging of a known error.
|
|
105
110
|
- **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
|
|
@@ -109,11 +114,14 @@
|
|
|
109
114
|
- **instinct-review**: Review, promote, or remove learned instincts extracted from past sessions (`.claude/instincts/*.md`). Use when the user wants to curate the instinct list — not to extract new instincts or edit memory.
|
|
110
115
|
- **introspect**: Agent self-debugging and recovery. Use when stuck in loops, making repeated errors, or quality degrades. Triggers: introspect, self-debug, stuck, loop, why failing.
|
|
111
116
|
- **java-patterns**: Java development patterns: Spring Boot, CompletableFuture, records, sealed types, streams, JPA/Hibernate, Maven/Gradle, virtual threads (Loom). Triggers: Java, Spring, Spring Boot, JPA, Hibernate, Maven, Gradle, CompletableFuture, record type, sealed class, virtual thread. Load when writing or reviewing Java code.
|
|
117
|
+
- **java-rules**: Java coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .java, pom.xml, build.gradle, Spring, Spring Boot, JPA, Hibernate, JUnit, Maven, Gradle. Load when writing, reviewing, or editing Java code.
|
|
112
118
|
- **json-mode-patterns**: Loaded when user needs structured JSON output from Claude. Covers tool-use-as-JSON-mode, schema design, parsing, partial recovery, and validation.
|
|
113
119
|
- **kotlin-patterns**: Kotlin development patterns: coroutines, Flow, sealed classes, data classes, extension functions, null safety, Ktor, Jetpack Compose, KMP. Triggers: Kotlin, coroutine, Flow, suspend, Ktor, Android Kotlin, Jetpack Compose, sealed class, data class, KMP, kotlinx. Load when writing or reviewing Kotlin code.
|
|
120
|
+
- **kotlin-rules**: Kotlin coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .kt, .kts, build.gradle.kts, Ktor, Jetpack Compose, coroutines, kotlinx. Load when writing, reviewing, or editing Kotlin code.
|
|
114
121
|
- **lint**: Run the project's linter and type-checker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy, dart analyze). Use when the user asks for static-analysis feedback — not to run tests or refactor.
|
|
115
122
|
- **mcp-builder**: Build production-grade MCP (Model Context Protocol) servers from scratch using the 4-phase methodology: research, implement, test, evaluate. Use when creating new MCP integrations for external APIs, databases, or internal services.
|
|
116
123
|
- **mcp-patterns**: MCP (Model Context Protocol) server design: tool schemas, resource patterns, transport selection (stdio/SSE), client configuration, error handling, capability negotiation. Triggers: MCP, Model Context Protocol, MCP server, MCP tool, MCP resource, JSON-RPC, stdio transport, SSE transport, Claude Desktop config, Cursor MCP. Load when building or integrating MCP servers.
|
|
124
|
+
- **medplum-rules**: Medplum (FHIR healthcare) coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: medplum.config.mts, medplum.config.ts, FHIR, Medplum, Bot, Subscription, Questionnaire. Load when writing, reviewing, or editing Medplum (FHIR healthcare) code.
|
|
117
125
|
- **mem-search**: Search past coding sessions using natural language. Finds relevant observations, decisions, and context from previous work.
|
|
118
126
|
- **migrate**: Run or create database migrations with the detected tool (Alembic, Prisma, Laravel, Django, Flyway, Drizzle) and verify backups exist first. Use when the user asks to apply, roll back, or generate a migration — not for general schema design.
|
|
119
127
|
- **migration-patterns**: Zero-downtime database migration patterns: expand-contract, double-write, backfill, blue-green schema changes, feature flags, rollback safety, online DDL. Triggers: migration, schema change, zero-downtime, expand-contract, double-write, backfill, ALTER TABLE, column rename, safe deploy, online DDL. Load when planning non-trivial DB schema changes.
|
|
@@ -125,6 +133,7 @@
|
|
|
125
133
|
- **panic**: Emergency kill switch that halts all agent activity via a lockfile gate. Use when agents are looping, misbehaving, or the user wants to stop everything NOW — not for normal workflow interruptions.
|
|
126
134
|
- **performance-profiling**: Performance measurement and optimization: four golden signals (latency/traffic/errors/saturation), p50/p95/p99, baseline-change-measure loop, flame graphs, load testing. Triggers: performance, slow, latency, p99, flame graph, profile, bottleneck, optimization, load test, benchmark, CPU profiling, memory leak. Load when diagnosing or optimizing slow code or services.
|
|
127
135
|
- **persona**: Switch engineering persona at runtime: backend-lead, frontend-lead, devops-eng, junior-dev
|
|
136
|
+
- **php-rules**: PHP coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .php, composer.json, Laravel, Symfony, PHPUnit, PSR-12, Composer. Load when writing, reviewing, or editing PHP code.
|
|
128
137
|
- **plan**: Breaks down feature requests and project goals into phased implementation plans with task lists, agent assignments, dependency graphs, and success criteria. Use when the user asks to plan a feature, create an implementation roadmap, break down a coding task, or outline project phases.
|
|
129
138
|
- **plan-writing**: Implementation plan and pre-mortem drafting: phase breakdown, success criteria, risks, rollback plan, acceptance tests, estimated effort. Triggers: implementation plan, pre-mortem, phased plan, project plan, task breakdown, success criteria, rollback strategy, risk register. Load when user asks to write a plan or pre-mortem document.
|
|
130
139
|
- **plugin-creator**: Creates experimental opt-in plugin packs with manifests, conventions, and optional module scaffolding for Claude and Codex runtimes
|
|
@@ -133,6 +142,7 @@
|
|
|
133
142
|
- **prd-to-plan**: Convert a PRD into a phased implementation plan using tracer-bullet vertical slices. Use when user wants to break down a PRD, create an implementation plan, plan phases from a PRD, or mentions tracer bullets.
|
|
134
143
|
- **predict**: Analyzes code diffs and file changes to identify potential regressions, maps dependency impact across the codebase, and generates a risk-scored impact report. Use when reviewing pull requests, assessing code change risk, checking for breaking changes, or analyzing the blast radius of a diff.
|
|
135
144
|
- **prompt-caching-patterns**: Loaded when user builds with Anthropic API and needs to cut cost or latency via prompt caching. Covers TTL, cache breakpoints, stacking, invalidation, and measuring hit rate.
|
|
145
|
+
- **python-rules**: Python coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .py, .pyi, pyproject.toml, requirements.txt, Pipfile, FastAPI, Django, Flask, pytest, SQLAlchemy, ruff, mypy. Load when writing, reviewing, or editing Python code.
|
|
136
146
|
- **qa-session**: Interactive QA session where user reports bugs conversationally and agent files GitHub issues with domain language. Explores codebase in background for context. Use when user wants to report bugs, do QA, file issues conversationally, or mentions QA session.
|
|
137
147
|
- **rag-patterns**: RAG architecture: embeddings, chunking strategies, hybrid search (BM25 + vector), reranking, CRAG/self-correcting, multi-hop reasoning, evaluation metrics. Triggers: RAG, embedding, vector search, pgvector, Qdrant, Pinecone, Weaviate, chunking, reranker, retrieval, hybrid search, semantic search, knowledge base, cosine similarity. Load when building or tuning RAG systems.
|
|
138
148
|
- **refactor**: Refactor code for quality and maintainability
|
|
@@ -142,7 +152,9 @@
|
|
|
142
152
|
- **review**: Review code for quality, security, and correctness
|
|
143
153
|
- **rollback**: Roll back a git commit, database migration, or deployment to a previous known-good state with safety checks and health verification. Use when the user wants to revert recent changes safely — not to undo local edits or halt the whole system.
|
|
144
154
|
- **ruby-patterns**: Ruby and Rails development patterns: blocks, metaprogramming, ActiveRecord, Sidekiq, RSpec, Sorbet/RBS, Hanami, Roda, Rack middleware. Triggers: Ruby, Rails, ActiveRecord, Sidekiq, RSpec, gem, Gemfile, bundler, rake, Hanami, Sorbet. Load when writing or reviewing Ruby code.
|
|
155
|
+
- **ruby-rules**: Ruby coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .rb, Gemfile, .gemspec, Rails, ActiveRecord, Sidekiq, RSpec, Sorbet, rubocop. Load when writing, reviewing, or editing Ruby code.
|
|
145
156
|
- **rust-patterns**: Rust development patterns: ownership, borrowing, lifetimes, async (Tokio), error handling (Result/anyhow/thiserror), traits, macros, zero-cost abstractions, unsafe boundaries. Triggers: Rust, borrow checker, lifetime, Tokio, async Rust, cargo, trait, impl, Result, unsafe, lifetime annotation, clippy. Load when writing or reviewing Rust code.
|
|
157
|
+
- **rust-rules**: Rust coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .rs, Cargo.toml, Cargo.lock, Tokio, Axum, Serde, clippy, cargo test. Load when writing, reviewing, or editing Rust code.
|
|
146
158
|
- **search**: Search the knowledge base with semantic and hybrid modes
|
|
147
159
|
- **security-patterns**: Application security: OWASP Top 10, authN/authZ, input validation, secrets management, TLS, CSRF/XSS/SQLi, session handling, JWT, rate limiting, CSP. Triggers: security, OWASP, auth, JWT, CSRF, XSS, SQL injection, secrets, encryption, TLS, authentication, authorization, CSP, CORS, password hashing. Load when touching auth code, handling user input, or doing security review.
|
|
148
160
|
- **seo-validate**: Validate code against SEO best practices: 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. Supports React/Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue/static HTML.
|
|
@@ -151,12 +163,14 @@
|
|
|
151
163
|
- **subagent-development**: Execute implementation plans using fresh subagents per task with two-stage review: spec compliance first, then code quality. Use when executing plans with independent tasks.
|
|
152
164
|
- **swarm**: Execute tasks via Map-Reduce, Consensus, or Relay swarms
|
|
153
165
|
- **swift-patterns**: Swift and iOS development patterns: SwiftUI, Combine, async/await, property wrappers, actors, Swift Package Manager, Core Data, UIKit interop, @MainActor. Triggers: Swift, SwiftUI, Combine, iOS, Xcode, actor, property wrapper, Core Data, SPM, UIKit, @MainActor, @State, @Binding. Load when writing or reviewing Swift code.
|
|
166
|
+
- **swift-rules**: Swift coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .swift, Package.swift, .xcodeproj, SwiftUI, Combine, async/await, XCTest. Load when writing, reviewing, or editing Swift code.
|
|
154
167
|
- **tdd**: Test-driven development with red-green-refactor loop and vertical slices. Use when user wants TDD, test-first development, red-green-refactor, or building features with tests driving the implementation.
|
|
155
168
|
- **teams**: Launches pre-configured multi-agent teams for code review, debugging, feature development, security audits, and database migrations. Use when the user asks to start a multi-agent workflow, coordinate agent teams, run a team review, or needs parallel agent collaboration on a complex task.
|
|
156
169
|
- **test**: Run the project's test suite with coverage reporting, auto-detecting the framework (pytest, vitest, jest, flutter test, go test, cargo test, phpunit). Use when the user asks to run existing tests — not to author new ones test-first.
|
|
157
170
|
- **testing-patterns**: Testing strategy and craft: pyramid vs trophy, unit/integration/e2e split, fixtures, mocks vs fakes vs stubs, AAA pattern, flaky test diagnosis, coverage goals, property-based testing. Triggers: test, testing strategy, fixture, mock, stub, AAA, unit test, integration test, e2e, Playwright, Cypress, flaky, coverage, TDD, test pyramid. Load when writing, reviewing, or designing test suites.
|
|
158
171
|
- **triage-issue**: Triage a bug by deeply exploring the codebase for root cause, then create a GitHub issue with a TDD-based fix plan. Mostly hands-off — minimal user interaction. Use when user reports a bug, wants to investigate an issue, mentions triage, or wants a fix plan.
|
|
159
172
|
- **typescript-patterns**: TypeScript type safety patterns: strict mode, generics, conditional types, template literals, discriminated unions, branded types, Zod, satisfies operator, const assertions. Triggers: TypeScript, TS, generics, conditional type, utility type, strict, Zod, satisfies, discriminated union, type safety, type narrowing, template literal type. Load when writing or reviewing TypeScript code.
|
|
173
|
+
- **typescript-rules**: TypeScript/JavaScript coding rules from ai-toolkit: coding-style, frameworks, patterns, security, testing. Triggers: .ts, .tsx, .js, .jsx, package.json, tsconfig.json, React, Next.js, Vue, Vite, Vitest, Jest, ESLint. Load when writing, reviewing, or editing TypeScript/JavaScript code.
|
|
160
174
|
- **ubiquitous-language**: Extract a DDD-style ubiquitous language glossary from the conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, or mentions DDD or domain model.
|
|
161
175
|
- **verification-before-completion**: Loaded when agent is about to claim work is complete, fixed, or passing — requires running verification commands and confirming output before making any success claims. Evidence before assertions, always.
|
|
162
176
|
- **workflow**: Start and manage autonomous agent workflows
|
|
@@ -310,7 +324,7 @@ Definition of "100% coverage" chosen: **each editor works at 100% of its native
|
|
|
310
324
|
|
|
311
325
|
| # | Decision | Rule |
|
|
312
326
|
|---|----------|------|
|
|
313
|
-
| 1 | Skill propagation | `.claude/skills/` canonical. Cursor/Windsurf/opencode → compat-read (nothing). Augment/Gemini/Antigravity → **pointer skill** (1 file per editor). Codex →
|
|
327
|
+
| 1 | Skill propagation | `.claude/skills/` canonical. Cursor/Windsurf/opencode → compat-read (nothing). Augment/Gemini/Antigravity → **pointer skill** (1 file per editor). Codex → native `.agents/skills/` mirror |
|
|
314
328
|
| 2 | Global writes | Only `~/.claude/`. Cursor/Windsurf/opencode get global coverage via compat-read. Augment/Gemini/Roo require `--local` |
|
|
315
329
|
| 3 | Surface activation | **`--profile full`** turns on every native surface. `standard` stays close to today's defaults but adds niepodważalne wypełnienia (Copilot wiring + Gemini hooks). `minimal` unchanged |
|
|
316
330
|
| 4 | Default behavior | `--editors <name>` alone uses `standard`. Users who want the full stack pass `--profile full` |
|
|
@@ -354,13 +368,13 @@ Definition of "100% coverage" chosen: **each editor works at 100% of its native
|
|
|
354
368
|
**Owned files**
|
|
355
369
|
- New: `scripts/generate_gemini_skills.py` (`.gemini/skills/ai-toolkit-skill-catalogue/SKILL.md` — pointer)
|
|
356
370
|
- New: `scripts/generate_augment_skills.py` (`.augment/skills/ai-toolkit-skill-catalogue/SKILL.md` — pointer)
|
|
357
|
-
- New: `scripts/generate_codex_skills.py` (
|
|
371
|
+
- New: `scripts/generate_codex_skills.py` (Codex-native mirror to `.agents/skills/<name>/SKILL.md`)
|
|
358
372
|
- New: `tests/test_skills_native.bats` (≥15 tests)
|
|
359
373
|
|
|
360
374
|
**Must-haves**
|
|
361
375
|
- Pointer pattern same as Antigravity: 1 file per editor referencing `~/.claude/skills/<name>` and listing the catalogue.
|
|
362
376
|
- Codex mirror respects `user-invocable: false` (knowledge skills stay, task skills stay — Codex reads them all).
|
|
363
|
-
-
|
|
377
|
+
- Codex skills use the upstream `.agents/skills` discovery path.
|
|
364
378
|
|
|
365
379
|
### Bucket 4 — Install wiring + profile full + docs (devops-implementer)
|
|
366
380
|
|
|
@@ -701,7 +715,7 @@ Orchestrator's final output:
|
|
|
701
715
|
|
|
702
716
|
### Open items flagged for future passes
|
|
703
717
|
|
|
704
|
-
1. **Native `.
|
|
718
|
+
1. **Native `.agents/skills/*/SKILL.md` emission** (class B) — writes the Codex skill catalog to the upstream discovery path.
|
|
705
719
|
2. **`.opencode/skills/` duplication** — deferred indefinitely; `.claude/skills/` fallback already works.
|
|
706
720
|
3. **New generators needed**: `generate_gemini_hooks.py`, `generate_augment_agents.py`, `generate_augment_commands.py`, `generate_augment_hooks.py`.
|
|
707
721
|
4. **Cross-editor hooks unification**: Cursor and Windsurf both shipped `.cursor/hooks.json` and `.windsurf/hooks.json` — worth a dedicated shared-schema pass rather than per-editor copies.
|
|
@@ -4242,9 +4256,9 @@ title: "SOP: Release Preparation"
|
|
|
4242
4256
|
category: procedures
|
|
4243
4257
|
service: ai-toolkit
|
|
4244
4258
|
tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
|
|
4245
|
-
version: "1.10.
|
|
4259
|
+
version: "1.10.1"
|
|
4246
4260
|
created: "2026-04-10"
|
|
4247
|
-
last_updated: "2026-04-
|
|
4261
|
+
last_updated: "2026-04-28"
|
|
4248
4262
|
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, and the registry-vs-generators drift gate added in v1.10.0."
|
|
4249
4263
|
---
|
|
4250
4264
|
|
|
@@ -4518,7 +4532,7 @@ python3 scripts/audit_skills.py --sarif > audit.sarif # MANDATORY — GHAS
|
|
|
4518
4532
|
python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
|
|
4519
4533
|
|
|
4520
4534
|
# Registry / generator drift (added in 1.10.0). Meta-generators excluded.
|
|
4521
|
-
META="generate_agents_md.py|generate_llms_txt.py"
|
|
4535
|
+
META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
|
|
4522
4536
|
diff \
|
|
4523
4537
|
<(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) \
|
|
4524
4538
|
<(ls scripts/generate_*.py | grep -vE "$META" | sort -u) \
|
|
@@ -4543,7 +4557,7 @@ echo "ok: $(grep -c '^ok ' /tmp/npm-test.log) | not ok: $(grep -c '^not ok' /tmp
|
|
|
4543
4557
|
|
|
4544
4558
|
**One-liner:**
|
|
4545
4559
|
```bash
|
|
4546
|
-
python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py' | sort -u) && npm test
|
|
4560
|
+
python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py|generate_language_rules_skills\.py' | sort -u) && npm test
|
|
4547
4561
|
```
|
|
4548
4562
|
|
|
4549
4563
|
**If tests fail:** Fix the issue, do NOT skip. Common failures:
|
|
@@ -4687,9 +4701,9 @@ title: "SOP: Release Verification"
|
|
|
4687
4701
|
category: procedures
|
|
4688
4702
|
service: ai-toolkit
|
|
4689
4703
|
tags: [sop, verification, release, smoke-test, install, update, qa, provenance, sarif]
|
|
4690
|
-
version: "1.4.
|
|
4704
|
+
version: "1.4.1"
|
|
4691
4705
|
created: "2026-04-08"
|
|
4692
|
-
last_updated: "2026-04-
|
|
4706
|
+
last_updated: "2026-04-28"
|
|
4693
4707
|
description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, install, doctor, validation, tests, eject, npm provenance attestation, SARIF audit, and per-skill permissions. Reflects the v2.8.0 supply-chain standard. v1.3.0 added the single-run npm test discipline; v1.4.0 adds v3.0.0 deep-coverage checks (--profile full, --codex-skills, breaking-change surfaces, idempotence, registry drift, live-JSON parse) and refreshes stale thresholds."
|
|
4694
4708
|
---
|
|
4695
4709
|
|
|
@@ -4738,7 +4752,7 @@ python3 scripts/audit_skills.py --permissions | head -30 # 12. Broad-access s
|
|
|
4738
4752
|
npm view @softspark/ai-toolkit@X.Y.Z --json | python3 -c "import json,sys; d=json.load(sys.stdin); assert d['dist']['attestations']['provenance']['predicateType']=='https://slsa.dev/provenance/v1'; print('PROVENANCE OK')" # 13. Provenance attested on npm?
|
|
4739
4753
|
|
|
4740
4754
|
# Deep-coverage verification (Phase 9, v3.0.0+)
|
|
4741
|
-
META="generate_agents_md.py|generate_llms_txt.py"
|
|
4755
|
+
META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
|
|
4742
4756
|
diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE "$META" | sort -u) && echo "OK: registry matches" # 14. Registry <-> generators drift?
|
|
4743
4757
|
```
|
|
4744
4758
|
|
|
@@ -4808,7 +4822,7 @@ ai-toolkit status
|
|
|
4808
4822
|
- [ ] Agents >= 44
|
|
4809
4823
|
- [ ] Skills >= 99
|
|
4810
4824
|
- [ ] Hooks merged into settings.json
|
|
4811
|
-
- [ ] "Other AI Tools" section lists
|
|
4825
|
+
- [ ] "Other AI Tools" section lists documented global targets only: aider, augment, cline, codex, gemini, opencode, roo, windsurf (Cursor, Copilot, Antigravity via --local for rules)
|
|
4812
4826
|
|
|
4813
4827
|
**Verify `status`:**
|
|
4814
4828
|
- [ ] Version matches expected
|
|
@@ -5022,7 +5036,7 @@ These verify the native-surface generators shipped in v3.0.0 actually emit the r
|
|
|
5022
5036
|
D=/tmp/aitk-profile-full-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5023
5037
|
ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
|
|
5024
5038
|
--profile full --codex-skills --dry-run 2>&1 \
|
|
5025
|
-
| grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.
|
|
5039
|
+
| grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.agents/skills"
|
|
5026
5040
|
```
|
|
5027
5041
|
|
|
5028
5042
|
**Verify** — at least the following lines appear:
|
|
@@ -5030,22 +5044,21 @@ ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
|
|
|
5030
5044
|
- [ ] `.windsurf/hooks.json`
|
|
5031
5045
|
- [ ] `.gemini/settings.json` hooks AND `.gemini/commands/`
|
|
5032
5046
|
- [ ] `.augment/agents/` + `.augment/commands/` + `$HOME/.augment/settings.json`
|
|
5033
|
-
- [ ] `.
|
|
5047
|
+
- [ ] `.agents/skills/` (Codex native discovery path; refreshed by `--codex-skills`)
|
|
5034
5048
|
|
|
5035
5049
|
### 9.2 `--codex-skills` is orthogonal to `--profile`
|
|
5036
5050
|
|
|
5037
5051
|
```bash
|
|
5038
5052
|
D=/tmp/aitk-codex-skills-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5039
5053
|
ai-toolkit install --local --editors codex --profile standard --codex-skills --dry-run 2>&1 \
|
|
5040
|
-
| grep -q "Would
|
|
5054
|
+
| grep -q "Would refresh: .agents/skills" && echo "OK: --codex-skills refreshes .agents/skills without --profile full"
|
|
5041
5055
|
ai-toolkit install --local --editors codex --profile full --dry-run 2>&1 \
|
|
5042
|
-
| grep -q "Would generate: .
|
|
5043
|
-
|| echo "OK: --profile full alone does not auto-emit .codex/skills (correct — opt-in only)"
|
|
5056
|
+
| grep -q "Would generate: .agents/skills" && echo "OK: Codex skills use .agents/skills at profile full"
|
|
5044
5057
|
```
|
|
5045
5058
|
|
|
5046
5059
|
**Verify:**
|
|
5047
|
-
- [ ] `--codex-skills`
|
|
5048
|
-
- [ ] `--profile full`
|
|
5060
|
+
- [ ] `--codex-skills` refreshes `.agents/skills/` at any profile
|
|
5061
|
+
- [ ] `--profile full` never emits `.codex/skills/`; Codex skills use `.agents/skills/`
|
|
5049
5062
|
|
|
5050
5063
|
### 9.3 Breaking-change surfaces land on `--profile standard`
|
|
5051
5064
|
|
|
@@ -5095,7 +5108,7 @@ done
|
|
|
5095
5108
|
`kb/reference/supported-tools-registry.md` should enumerate every per-editor `scripts/generate_*.py` we ship. Meta-generators (`generate_agents_md.py`, `generate_llms_txt.py`) are excluded — they produce docs/artifacts, not editor configs.
|
|
5096
5109
|
|
|
5097
5110
|
```bash
|
|
5098
|
-
META="generate_agents_md.py|generate_llms_txt.py"
|
|
5111
|
+
META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
|
|
5099
5112
|
REG=$(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u)
|
|
5100
5113
|
FS=$(ls scripts/generate_*.py | grep -vE "$META" | sort -u)
|
|
5101
5114
|
diff <(echo "$REG") <(echo "$FS") && echo "OK: registry matches filesystem" || echo "DRIFT: update supported-tools-registry.md"
|
|
@@ -5710,7 +5723,7 @@ Three tiers determine how to approach a task:
|
|
|
5710
5723
|
|------|-------|-----------|-------|
|
|
5711
5724
|
| Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
|
|
5712
5725
|
| Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
|
|
5713
|
-
| Knowledge | `user-invocable: false` | Claude auto-loads |
|
|
5726
|
+
| Knowledge | `user-invocable: false` | Claude auto-loads | 49 |
|
|
5714
5727
|
|
|
5715
5728
|
## Multi-Agent Execution
|
|
5716
5729
|
|
|
@@ -6208,9 +6221,9 @@ The reference benchmark set is intentionally curated:
|
|
|
6208
6221
|
title: "CLI Reference"
|
|
6209
6222
|
category: reference
|
|
6210
6223
|
service: ai-toolkit
|
|
6211
|
-
tags: [cli, commands, reference, install, update, plugin, mcp]
|
|
6224
|
+
tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
|
|
6212
6225
|
created: "2026-04-13"
|
|
6213
|
-
last_updated: "2026-04-
|
|
6226
|
+
last_updated: "2026-04-24"
|
|
6214
6227
|
description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
|
|
6215
6228
|
---
|
|
6216
6229
|
|
|
@@ -6317,7 +6330,7 @@ Usage: ai-toolkit <command> [options]
|
|
|
6317
6330
|
|
|
6318
6331
|
| Command | Description |
|
|
6319
6332
|
|---------|-------------|
|
|
6320
|
-
| `stats` | Show skill usage statistics (`--reset` to clear, `--json` for raw output) |
|
|
6333
|
+
| `stats` | Show skill usage statistics (`--summary` for product telemetry, `--reset` to clear, `--json` for raw output) |
|
|
6321
6334
|
| `benchmark --my-config` | Compare your config vs defaults vs ecosystem |
|
|
6322
6335
|
| `benchmark-ecosystem` | Generate ecosystem benchmark snapshot |
|
|
6323
6336
|
| `create skill <name>` | Scaffold new skill from template (`--template=linter\|reviewer\|generator\|workflow\|knowledge`) |
|
|
@@ -6325,6 +6338,17 @@ Usage: ai-toolkit <command> [options]
|
|
|
6325
6338
|
| `compile-slm` | Compile toolkit into minimal SLM system prompt (`--budget`, `--model-size`, `--dry-run`) |
|
|
6326
6339
|
| `evaluate` | Run skill evaluation suite |
|
|
6327
6340
|
|
|
6341
|
+
### `stats`
|
|
6342
|
+
|
|
6343
|
+
```bash
|
|
6344
|
+
ai-toolkit stats # table of local skill usage
|
|
6345
|
+
ai-toolkit stats --summary # product telemetry summary
|
|
6346
|
+
ai-toolkit stats --summary --json # machine-readable telemetry
|
|
6347
|
+
ai-toolkit stats --reset # clear local stats
|
|
6348
|
+
```
|
|
6349
|
+
|
|
6350
|
+
`--summary` reports total invocations, unique skills used, catalog coverage, unused catalog skills, active skills in the last 7 days, and top skills. Data stays local in `~/.softspark/ai-toolkit/stats.json`.
|
|
6351
|
+
|
|
6328
6352
|
## Install / Update Options
|
|
6329
6353
|
|
|
6330
6354
|
```bash
|
|
@@ -6538,7 +6562,7 @@ tags:
|
|
|
6538
6562
|
doc_type: plan
|
|
6539
6563
|
status: completed
|
|
6540
6564
|
created: "2026-04-07"
|
|
6541
|
-
last_updated: "2026-04-
|
|
6565
|
+
last_updated: "2026-04-24"
|
|
6542
6566
|
completion: "100%"
|
|
6543
6567
|
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."
|
|
6544
6568
|
---
|
|
@@ -6667,8 +6691,8 @@ app/rules/
|
|
|
6667
6691
|
- [x] 13 languages × 5 rule files created (70 files: 13 dirs × 5 + 5 common)
|
|
6668
6692
|
- [x] `ai-toolkit install --local` auto-detects language and injects rules (two-phase: marker files + extension scan)
|
|
6669
6693
|
- [x] Manual override: `ai-toolkit install --local --lang typescript` (with aliases: go→golang, c++→cpp, cs→csharp)
|
|
6670
|
-
- [
|
|
6671
|
-
- [
|
|
6694
|
+
- [x] validate.py checks rules format
|
|
6695
|
+
- [x] Tests: dedicated `tests/test_rules.bats`
|
|
6672
6696
|
|
|
6673
6697
|
---
|
|
6674
6698
|
|
|
@@ -7022,7 +7046,7 @@ context: fork
|
|
|
7022
7046
|
- [x] `/council` invocable
|
|
7023
7047
|
- [x] 4 perspectives generated
|
|
7024
7048
|
- [x] Structured output with recommendation
|
|
7025
|
-
- [
|
|
7049
|
+
- [x] Tests: dedicated council skill contract
|
|
7026
7050
|
|
|
7027
7051
|
---
|
|
7028
7052
|
|
|
@@ -7041,7 +7065,7 @@ context: fork
|
|
|
7041
7065
|
**Success Criteria:**
|
|
7042
7066
|
- [x] Skill auto-loads when writing docs/content
|
|
7043
7067
|
- [x] Anti-trope list prevents generic LLM rhetoric
|
|
7044
|
-
- [
|
|
7068
|
+
- [x] Tests: dedicated brand-voice skill contract
|
|
7045
7069
|
|
|
7046
7070
|
---
|
|
7047
7071
|
|
|
@@ -7063,7 +7087,7 @@ context: fork
|
|
|
7063
7087
|
- [x] `/introspect` invocable when agent is stuck
|
|
7064
7088
|
- [x] Classifies failure pattern
|
|
7065
7089
|
- [x] Suggests recovery action
|
|
7066
|
-
- [
|
|
7090
|
+
- [x] Tests: dedicated introspect skill contract
|
|
7067
7091
|
|
|
7068
7092
|
---
|
|
7069
7093
|
|
|
@@ -7185,9 +7209,9 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
|
|
|
7185
7209
|
|
|
7186
7210
|
All major features shipped. Outstanding items:
|
|
7187
7211
|
|
|
7188
|
-
1. [
|
|
7189
|
-
2. [
|
|
7190
|
-
3. [
|
|
7212
|
+
1. [x] `validate.py` checks rules format (1.1)
|
|
7213
|
+
2. [x] Dedicated `test_rules` test file exists (1.1)
|
|
7214
|
+
3. [x] Dedicated tests exist for council, brand-voice, introspect skills (3.1-3.3)
|
|
7191
7215
|
4. [x] `observe-session.sh` lives in rag-mcp (consumer), not ai-toolkit — by design
|
|
7192
7216
|
|
|
7193
7217
|
---
|
|
@@ -7819,9 +7843,9 @@ title: "Global Install Model"
|
|
|
7819
7843
|
category: reference
|
|
7820
7844
|
service: ai-toolkit
|
|
7821
7845
|
tags: [install, global, claude, codex, plugins, local-setup]
|
|
7822
|
-
version: "3.0.
|
|
7846
|
+
version: "3.0.1"
|
|
7823
7847
|
created: "2026-03-26"
|
|
7824
|
-
last_updated: "2026-04-
|
|
7848
|
+
last_updated: "2026-04-28"
|
|
7825
7849
|
description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
|
|
7826
7850
|
---
|
|
7827
7851
|
|
|
@@ -7833,9 +7857,12 @@ description: "Reference description of the global install target, project-local
|
|
|
7833
7857
|
|
|
7834
7858
|
That means one machine-level install provides agents, skills, hooks, and rules to every project without committing toolkit boilerplate into each repository.
|
|
7835
7859
|
|
|
7836
|
-
|
|
7837
|
-
|
|
7838
|
-
|
|
7860
|
+
Other editor targets are opt-in and only use documented file surfaces. Cursor
|
|
7861
|
+
rules stay project-local because Cursor's global user rules are managed through
|
|
7862
|
+
the settings UI, not a stable merge-safe file. Codex remains project-local for
|
|
7863
|
+
the core toolkit install, but experimental plugin packs can layer a global
|
|
7864
|
+
Codex target in `HOME` when explicitly installed with
|
|
7865
|
+
`ai-toolkit plugin install --editor codex`.
|
|
7839
7866
|
|
|
7840
7867
|
## Command Responsibilities
|
|
7841
7868
|
|
|
@@ -7866,7 +7893,25 @@ The `--profile` flag controls how much of each editor's native surface is activa
|
|
|
7866
7893
|
| `strict` | Everything in `standard` plus git-hook wiring for commit-time safety checks. | Solo dev or tight team with zero tolerance for drift. |
|
|
7867
7894
|
| `full` | Every native surface across every editor: hooks, sub-agents, custom commands, skill pointers for Cursor / Windsurf / Gemini / Augment / Antigravity. | You want maximum coverage and understand that each editor will carry generated files under its own layout. |
|
|
7868
7895
|
|
|
7869
|
-
`--codex-skills` is an independent opt-in flag (not part of profile) that materializes the full
|
|
7896
|
+
`--codex-skills` is an independent opt-in flag (not part of profile) that materializes the full skill catalog under `.agents/skills/` for Codex. Other editors stay on compat-read or the per-editor pointer skill.
|
|
7897
|
+
|
|
7898
|
+
## Global Editor Targets
|
|
7899
|
+
|
|
7900
|
+
`ai-toolkit install --editors <name>` can write global files only for editors
|
|
7901
|
+
with documented, file-based config surfaces:
|
|
7902
|
+
|
|
7903
|
+
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md`
|
|
7904
|
+
- `gemini`: `~/.gemini/GEMINI.md`
|
|
7905
|
+
- `augment`: `~/.augment/rules/ai-toolkit.md`
|
|
7906
|
+
- `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md`
|
|
7907
|
+
- `roo`: `~/.roo/rules/ai-toolkit-*.md`
|
|
7908
|
+
- `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
|
|
7909
|
+
- `codex`: `~/AGENTS.md`, `~/.agents/rules/*`, `~/.agents/skills/*`, `~/.codex/hooks.json`
|
|
7910
|
+
- `opencode`: `~/.config/opencode/*`
|
|
7911
|
+
|
|
7912
|
+
Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
|
|
7913
|
+
Their global MCP support, where available, is handled by `ai-toolkit mcp
|
|
7914
|
+
install`, not by the rule installer.
|
|
7870
7915
|
|
|
7871
7916
|
## Why global install is the default
|
|
7872
7917
|
|
|
@@ -7882,6 +7927,7 @@ These files still stay local to a repository as part of the core install model:
|
|
|
7882
7927
|
- `.claude/settings.local.json`
|
|
7883
7928
|
- `.mcp.json`
|
|
7884
7929
|
- `.cursor/mcp.json`
|
|
7930
|
+
- `.roo/mcp.json`
|
|
7885
7931
|
- `.github/mcp.json`
|
|
7886
7932
|
- `.claude/constitution.md`
|
|
7887
7933
|
- project `AGENTS.md`
|
|
@@ -7935,6 +7981,7 @@ If `.mcp.json` exists in the current project, `ai-toolkit install --local` mirro
|
|
|
7935
7981
|
- `.claude/settings.local.json`
|
|
7936
7982
|
- `.cursor/mcp.json` when `--editors cursor` is selected
|
|
7937
7983
|
- `.github/mcp.json` when `--editors copilot` is selected
|
|
7984
|
+
- `.roo/mcp.json` when `--editors roo` is selected
|
|
7938
7985
|
|
|
7939
7986
|
Global-only editor MCP configs are not written during `install --local`. Use `ai-toolkit mcp install --editor <name...>` for those targets.
|
|
7940
7987
|
|
|
@@ -8159,9 +8206,9 @@ title: "Hooks Catalog"
|
|
|
8159
8206
|
category: reference
|
|
8160
8207
|
service: ai-toolkit
|
|
8161
8208
|
tags: [hooks, quality, safety, enforcement, settings.json]
|
|
8162
|
-
version: "1.
|
|
8209
|
+
version: "1.5.0"
|
|
8163
8210
|
created: "2026-03-27"
|
|
8164
|
-
last_updated: "2026-04-
|
|
8211
|
+
last_updated: "2026-04-24"
|
|
8165
8212
|
description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
|
|
8166
8213
|
---
|
|
8167
8214
|
|
|
@@ -8171,6 +8218,12 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
|
|
|
8171
8218
|
|
|
8172
8219
|
ai-toolkit provides 21 global hook entries across 12 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
|
|
8173
8220
|
|
|
8221
|
+
## Supported Surface
|
|
8222
|
+
|
|
8223
|
+
`scripts/validate.py` validates both event names and handler shapes before release. The accepted lifecycle surface includes `PostToolUseFailure`, `PostToolBatch`, and `UserPromptExpansion` in addition to the installed ai-toolkit events below.
|
|
8224
|
+
|
|
8225
|
+
Supported handler types are `command`, `http`, `prompt`, `agent`, and `mcp_tool`. ai-toolkit ships command hooks by default; non-command handlers are validated so external consumers can safely inject richer hook definitions through `inject-hook`.
|
|
8226
|
+
|
|
8174
8227
|
## Installation
|
|
8175
8228
|
|
|
8176
8229
|
```bash
|
|
@@ -8705,19 +8758,22 @@ title: "Language Rules System"
|
|
|
8705
8758
|
category: reference
|
|
8706
8759
|
service: ai-toolkit
|
|
8707
8760
|
tags: [rules, languages, coding-style, testing, patterns, security]
|
|
8708
|
-
version: "
|
|
8761
|
+
version: "2.0.0"
|
|
8709
8762
|
created: "2026-04-07"
|
|
8710
|
-
last_updated: "2026-04-
|
|
8711
|
-
description: "Reference for the language-specific rules system:
|
|
8763
|
+
last_updated: "2026-04-28"
|
|
8764
|
+
description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus a common set inlined into CLAUDE.md."
|
|
8712
8765
|
---
|
|
8713
8766
|
|
|
8714
8767
|
# Language Rules System
|
|
8715
8768
|
|
|
8716
8769
|
## Overview
|
|
8717
8770
|
|
|
8718
|
-
ai-toolkit ships
|
|
8771
|
+
ai-toolkit ships rule content for 13 languages/platforms plus a language-agnostic common set. Source files live under `app/rules/` and are split into two delivery channels by `ai-toolkit install --local`:
|
|
8772
|
+
|
|
8773
|
+
- **Common rules** (`app/rules/common/*.md`): full content is inlined into the project's `.claude/CLAUDE.md` under a single `<!-- TOOLKIT:language-rules START -->` marker. They cover coding-style, git-workflow, performance, security, and testing — concerns that apply regardless of language, so they stay always visible.
|
|
8774
|
+
- **Per-language rules** (`app/rules/<lang>/*.md`): emitted at build time as `<lang>-rules` knowledge skills under `app/skills/`. Each skill is `user-invocable: false`, so Claude loads it via the Agent Skills progressive-disclosure mechanism only when its description triggers match (file extensions, framework names, or matching keywords in the prompt).
|
|
8719
8775
|
|
|
8720
|
-
|
|
8776
|
+
The skills are generated from the rule files via `python3 scripts/generate_language_rules_skills.py`, which is idempotent and rerun-safe. Other editors (Cursor, Windsurf, Cline, Roo, Augment, Codex, Copilot, Antigravity, Gemini, opencode) still receive the full per-language rule content via their own generators in `scripts/dir_rules_shared.py::build_language_rules()` — Claude is the only target where the per-language content is now skill-delivered rather than inlined.
|
|
8721
8777
|
|
|
8722
8778
|
## File Structure
|
|
8723
8779
|
|
|
@@ -8754,7 +8810,7 @@ app/rules/
|
|
|
8754
8810
|
└── medplum/
|
|
8755
8811
|
```
|
|
8756
8812
|
|
|
8757
|
-
**Total:
|
|
8813
|
+
**Total: 13 per-language directories × 5 files + 1 common directory × 5 files + 3 standalone files** (see README.md for canonical count). Per-language directories ship as `<lang>-rules` knowledge skills; the common directory is inlined into CLAUDE.md.
|
|
8758
8814
|
|
|
8759
8815
|
## Supported Languages
|
|
8760
8816
|
|
|
@@ -8839,15 +8895,45 @@ ai-toolkit install --local --modules core,agents
|
|
|
8839
8895
|
|
|
8840
8896
|
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.
|
|
8841
8897
|
|
|
8842
|
-
|
|
8898
|
+
Common rules are injected into the project `CLAUDE.md` between a single named marker (the per-language markers from v1.x are no longer used):
|
|
8843
8899
|
|
|
8844
8900
|
```
|
|
8845
|
-
<!-- TOOLKIT:rules
|
|
8846
|
-
|
|
8847
|
-
|
|
8901
|
+
<!-- TOOLKIT:language-rules START -->
|
|
8902
|
+
# Language Rules
|
|
8903
|
+
|
|
8904
|
+
Common (language-agnostic) rules apply to every change in this project.
|
|
8905
|
+
Language-specific rules live in `<lang>-rules` knowledge skills (e.g.
|
|
8906
|
+
`python-rules`, `typescript-rules`) and load automatically when their
|
|
8907
|
+
triggers match.
|
|
8908
|
+
|
|
8909
|
+
Detected languages: `python-rules`, `typescript-rules`.
|
|
8910
|
+
|
|
8911
|
+
---
|
|
8912
|
+
|
|
8913
|
+
... full content of app/rules/common/*.md inlined here ...
|
|
8914
|
+
<!-- TOOLKIT:language-rules END -->
|
|
8915
|
+
```
|
|
8916
|
+
|
|
8917
|
+
Re-running `install --local` is idempotent — the existing block is replaced, not duplicated. Per-language rules are not injected into `CLAUDE.md` for Claude — they are loaded contextually via their respective `<lang>-rules` knowledge skills.
|
|
8918
|
+
|
|
8919
|
+
### Generating language-rules skills
|
|
8920
|
+
|
|
8921
|
+
The `<lang>-rules` skills under `app/skills/` are produced by:
|
|
8922
|
+
|
|
8923
|
+
```bash
|
|
8924
|
+
python3 scripts/generate_language_rules_skills.py # write all
|
|
8925
|
+
python3 scripts/generate_language_rules_skills.py --check # dry-run, exit 1 on diff
|
|
8926
|
+
python3 scripts/generate_language_rules_skills.py --langs python,rust # subset
|
|
8848
8927
|
```
|
|
8849
8928
|
|
|
8850
|
-
|
|
8929
|
+
The generator reads `app/rules/<lang>/*.md`, strips YAML frontmatter, concatenates the categories, and writes `app/skills/<lang>-rules/SKILL.md` with frontmatter:
|
|
8930
|
+
|
|
8931
|
+
- `name: <lang>-rules`
|
|
8932
|
+
- `description: ...` — language label, rule categories, and concrete trigger keywords (file extensions, framework names) so the skill activates reliably when Claude is working on that language.
|
|
8933
|
+
- `user-invocable: false` — knowledge skill, no slash command.
|
|
8934
|
+
- `allowed-tools: Read` — the skill body is reference content, not an action.
|
|
8935
|
+
|
|
8936
|
+
Rerunning the generator is idempotent. Editing rule files under `app/rules/<lang>/` and rerunning the generator is the canonical way to update a language skill.
|
|
8851
8937
|
|
|
8852
8938
|
## Manifest Module Names
|
|
8853
8939
|
|
|
@@ -8872,13 +8958,16 @@ Language rules are tracked as modules in `manifest.json`:
|
|
|
8872
8958
|
|
|
8873
8959
|
## Rules vs Skills
|
|
8874
8960
|
|
|
8875
|
-
| |
|
|
8876
|
-
|
|
8877
|
-
|
|
|
8878
|
-
| Delivery |
|
|
8879
|
-
| Visibility | Always
|
|
8880
|
-
| Scope | Per-language
|
|
8881
|
-
| Install |
|
|
8961
|
+
| | Common rules | Per-language rules | Other skills |
|
|
8962
|
+
|---|---|---|---|
|
|
8963
|
+
| Source | `app/rules/common/` | `app/rules/<lang>/` | `app/skills/<name>/SKILL.md` |
|
|
8964
|
+
| Delivery to Claude | Inlined into project `CLAUDE.md` (`--local`) | Generated as `<lang>-rules` knowledge skills, loaded contextually | Loaded contextually by description match |
|
|
8965
|
+
| Visibility | Always in context | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
|
|
8966
|
+
| Scope | Language-agnostic standards (security, git, testing, perf, style) | Per-language coding-style, frameworks, patterns, security, testing | Domain skills (testing, debugging, RAG, etc.) |
|
|
8967
|
+
| Install | `ai-toolkit install --local` | Global install (skills directory is symlinked) | Global install |
|
|
8968
|
+
| Other editors | Inlined into editor-specific rule files | Inlined into editor-specific rule files (still full content, not skills) | N/A |
|
|
8969
|
+
|
|
8970
|
+
Per-language content delivered as a knowledge skill is the same Markdown that other editors receive inlined. The split exists only for Claude, where the Agent Skills progressive-disclosure mechanism keeps the system prompt small.
|
|
8882
8971
|
|
|
8883
8972
|
## Related Documentation
|
|
8884
8973
|
|
|
@@ -9065,9 +9154,9 @@ title: "AI Toolkit - MCP Editor Compatibility"
|
|
|
9065
9154
|
category: reference
|
|
9066
9155
|
service: ai-toolkit
|
|
9067
9156
|
tags: [mcp, editors, compatibility, codex, cursor]
|
|
9068
|
-
version: "1.
|
|
9157
|
+
version: "1.1.0"
|
|
9069
9158
|
created: "2026-04-12"
|
|
9070
|
-
last_updated: "2026-04-
|
|
9159
|
+
last_updated: "2026-04-28"
|
|
9071
9160
|
description: "Official MCP support matrix and native config targets for editors supported by ai-toolkit."
|
|
9072
9161
|
---
|
|
9073
9162
|
|
|
@@ -9085,6 +9174,7 @@ ai-toolkit keeps `.mcp.json` as the project-level canonical template format and
|
|
|
9085
9174
|
| Cursor | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors `mcpServers` directly |
|
|
9086
9175
|
| GitHub Copilot | project + global | `.github/mcp.json`, `~/.copilot/mcp-config.json` | Adds Copilot-required `type` and `tools` fields |
|
|
9087
9176
|
| Gemini CLI | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Merges `mcpServers` into settings JSON |
|
|
9177
|
+
| Roo Code | project | `.roo/mcp.json` | Mirrors `mcpServers` into the documented project-level MCP file |
|
|
9088
9178
|
| Windsurf | global | `~/.codeium/windsurf/mcp_config.json` | Global-only JSON config |
|
|
9089
9179
|
| Cline | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only JSON config |
|
|
9090
9180
|
| Augment | global | `~/.augment/settings.json` | Global-only JSON settings file |
|
|
@@ -9096,7 +9186,6 @@ These editors are still supported by ai-toolkit for rules and instructions, but
|
|
|
9096
9186
|
|
|
9097
9187
|
| Editor | Reason |
|
|
9098
9188
|
|--------|--------|
|
|
9099
|
-
| Roo Code | MCP support exists, but no verified official file path was adopted in ai-toolkit |
|
|
9100
9189
|
| Aider | No verified native MCP config surface was adopted in ai-toolkit |
|
|
9101
9190
|
| Google Antigravity | MCP can be configured via UI/import flows, but no stable file target was adopted in ai-toolkit |
|
|
9102
9191
|
|
|
@@ -9115,6 +9204,7 @@ When `.mcp.json` exists in a project, `ai-toolkit install --local` mirrors its s
|
|
|
9115
9204
|
- `.claude/settings.local.json`
|
|
9116
9205
|
- `.cursor/mcp.json` when `--editors cursor` is selected
|
|
9117
9206
|
- `.github/mcp.json` when `--editors copilot` is selected
|
|
9207
|
+
- `.roo/mcp.json` when `--editors roo` is selected
|
|
9118
9208
|
|
|
9119
9209
|
Global-only clients are configured explicitly via `ai-toolkit mcp install --editor ...`.
|
|
9120
9210
|
|
|
@@ -9162,7 +9252,7 @@ ai-toolkit mcp remove <name> # Remove from .mcp.json or native editor confi
|
|
|
9162
9252
|
The `add` command merges the `mcpServers` block from the template into `.mcp.json`. If `.mcp.json` does not exist it is created. If the server name already exists in `.mcp.json`, the entry is overwritten with the template version.
|
|
9163
9253
|
|
|
9164
9254
|
The `install` command renders the same canonical template into an editor-native config format:
|
|
9165
|
-
- JSON clients with `mcpServers` blocks: Claude Code, Cursor, Gemini CLI, Windsurf, Cline, Augment
|
|
9255
|
+
- JSON clients with `mcpServers` blocks: Claude Code, Cursor, Gemini CLI, Roo Code, Windsurf, Cline, Augment
|
|
9166
9256
|
- JSON clients with additional transport metadata: GitHub Copilot
|
|
9167
9257
|
- TOML clients: Codex CLI (`[mcp_servers.<name>]`)
|
|
9168
9258
|
|
|
@@ -9176,12 +9266,13 @@ When `install` runs with `--scope project`, ai-toolkit also updates the project'
|
|
|
9176
9266
|
| `cursor` | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors canonical `mcpServers` |
|
|
9177
9267
|
| `copilot` | project + global | `.github/mcp.json`, `~/.copilot/mcp-config.json` | Adds `type` and `tools: ["*"]` automatically |
|
|
9178
9268
|
| `gemini` | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Uses Gemini CLI `mcpServers` format |
|
|
9269
|
+
| `roo` | project | `.roo/mcp.json` | Mirrors canonical `mcpServers` into Roo's project MCP file |
|
|
9179
9270
|
| `windsurf` | global | `~/.codeium/windsurf/mcp_config.json` | Global-only official config |
|
|
9180
9271
|
| `cline` | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only official config |
|
|
9181
9272
|
| `augment` | global | `~/.augment/settings.json` | Global-only settings file |
|
|
9182
9273
|
| `codex` | global | `~/.codex/config.toml` | Rendered as TOML `mcp_servers` tables |
|
|
9183
9274
|
|
|
9184
|
-
Project-local `ai-toolkit install --local` also mirrors `.mcp.json` into Claude project settings plus selected project editors that have official repository/workspace MCP files (`cursor`, `copilot`).
|
|
9275
|
+
Project-local `ai-toolkit install --local` also mirrors `.mcp.json` into Claude project settings plus selected project editors that have official repository/workspace MCP files (`cursor`, `copilot`, `roo`).
|
|
9185
9276
|
|
|
9186
9277
|
## Template List
|
|
9187
9278
|
|
|
@@ -10800,9 +10891,9 @@ title: "Supported Tools Registry"
|
|
|
10800
10891
|
category: reference
|
|
10801
10892
|
service: ai-toolkit
|
|
10802
10893
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
10803
|
-
version: "1.2.
|
|
10894
|
+
version: "1.2.1"
|
|
10804
10895
|
created: "2026-04-23"
|
|
10805
|
-
last_updated: "2026-04-
|
|
10896
|
+
last_updated: "2026-04-28"
|
|
10806
10897
|
description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
|
|
10807
10898
|
---
|
|
10808
10899
|
|
|
@@ -10844,8 +10935,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10844
10935
|
| Docs | https://cursor.com/docs |
|
|
10845
10936
|
| Changelog | https://cursor.com/changelog |
|
|
10846
10937
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
10847
|
-
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc`, `.cursor/rules/*.md`, `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `.cursor/hooks.json
|
|
10848
|
-
| Compat read paths | `.claude/skills/`, `.claude/agents/`, `.
|
|
10938
|
+
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc`, `.cursor/rules/*.md`, `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `.cursor/hooks.json` |
|
|
10939
|
+
| Compat read paths | `.claude/skills/`, `.claude/agents/`, `.agents/skills/` (Cursor cross-reads these so ai-toolkit's Claude/Codex installs work automatically) |
|
|
10849
10940
|
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full) |
|
|
10850
10941
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
10851
10942
|
|
|
@@ -10899,6 +10990,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10899
10990
|
| Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py` |
|
|
10900
10991
|
| Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
|
|
10901
10992
|
| Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Skills (`.cline/skills/`) and hooks (`.clinerules/hooks/`) remain experimental upstream and are not yet generated. |
|
|
10993
|
+
| Global install | `ai-toolkit install --editors cline` writes only documented global rules under `~/Documents/Cline/Rules/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
|
|
10902
10994
|
|
|
10903
10995
|
### Roo Code
|
|
10904
10996
|
|
|
@@ -10907,10 +10999,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10907
10999
|
| ID | `roo-code` |
|
|
10908
11000
|
| Docs | https://docs.roocode.com |
|
|
10909
11001
|
| Release notes | https://github.com/RooCodeInc/Roo-Code/releases |
|
|
10910
|
-
| Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/
|
|
11002
|
+
| Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/custom_modes.yaml`, `mcp_settings.json` (global via Roo settings UI) |
|
|
10911
11003
|
| Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
|
|
10912
11004
|
| Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
|
|
10913
|
-
| Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted — JSON is still accepted by Roo. |
|
|
11005
|
+
| Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted — JSON is still accepted by Roo. Global install writes only `~/.roo/rules/` because the exact global MCP settings path is UI-managed. |
|
|
10914
11006
|
|
|
10915
11007
|
### Aider
|
|
10916
11008
|
|
|
@@ -10922,6 +11014,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10922
11014
|
| Config paths | `.aider.conf.yml`, `CONVENTIONS.md`, `~/.aider.conf.yml` |
|
|
10923
11015
|
| Our generators | `scripts/generate_aider_conf.py`, `scripts/generate_conventions.py` |
|
|
10924
11016
|
| Tracked capabilities | `.aider.conf.yml`, `CONVENTIONS.md`, `architect`, `auto-accept-architect`, `read`, `lint-cmd`, `test-cmd`, `commit-prompt`, `attribute-co-authored-by`, `chat-language`, `commit-language`, `watch-files`, `auto-commits` |
|
|
11017
|
+
| Global install | `ai-toolkit install --editors aider` creates `~/.aider.conf.yml` only when absent and always refreshes `~/.aider-ai-toolkit-CONVENTIONS.md`; existing YAML is preserved. |
|
|
10925
11018
|
| Version probe | `aider --version` |
|
|
10926
11019
|
| Latest upstream | v0.86.1 (Aug 2025) |
|
|
10927
11020
|
|
|
@@ -10956,11 +11049,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10956
11049
|
| ID | `codex-cli` |
|
|
10957
11050
|
| Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
|
|
10958
11051
|
| Release notes | https://github.com/openai/codex/releases |
|
|
10959
|
-
| Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.
|
|
11052
|
+
| Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
|
|
10960
11053
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_rules.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
10961
11054
|
| Tracked hook events | `PreToolUse`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, `Stop`, `PermissionRequest` (6 events supported upstream in `config.toml`) |
|
|
10962
11055
|
| Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
|
|
10963
|
-
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.
|
|
11056
|
+
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
|
|
10964
11057
|
| Version probe | `codex --version` |
|
|
10965
11058
|
|
|
10966
11059
|
### opencode
|
|
@@ -11326,6 +11419,61 @@ Agents follow a research-before-action protocol enforced via rules:
|
|
|
11326
11419
|
|
|
11327
11420
|
---
|
|
11328
11421
|
|
|
11422
|
+
## kb/reference/windows-support.md
|
|
11423
|
+
|
|
11424
|
+
---
|
|
11425
|
+
title: "Windows Support"
|
|
11426
|
+
category: reference
|
|
11427
|
+
service: ai-toolkit
|
|
11428
|
+
tags: [windows, wsl, install, dependencies, hooks]
|
|
11429
|
+
created: "2026-04-24"
|
|
11430
|
+
last_updated: "2026-04-24"
|
|
11431
|
+
description: "Windows support model for ai-toolkit: WSL, Git Bash, dependency detection, and hook runtime constraints."
|
|
11432
|
+
---
|
|
11433
|
+
|
|
11434
|
+
# Windows Support
|
|
11435
|
+
|
|
11436
|
+
ai-toolkit supports Windows through two practical modes:
|
|
11437
|
+
|
|
11438
|
+
1. **WSL recommended** — best compatibility for Bash hooks, POSIX paths, symlinks, and editor configs.
|
|
11439
|
+
2. **Native Windows with Git Bash** — supported for CLI usage when Bash is available on `PATH`.
|
|
11440
|
+
|
|
11441
|
+
## Dependency Detection
|
|
11442
|
+
|
|
11443
|
+
`scripts/check_deps.py` now emits install hints for Windows package managers:
|
|
11444
|
+
|
|
11445
|
+
| Manager | Command Prefix |
|
|
11446
|
+
|---------|----------------|
|
|
11447
|
+
| winget | `winget install` |
|
|
11448
|
+
| Chocolatey | `choco install -y` |
|
|
11449
|
+
| Scoop | `scoop install` |
|
|
11450
|
+
|
|
11451
|
+
Required dependency package IDs:
|
|
11452
|
+
|
|
11453
|
+
| Dependency | winget | Chocolatey | Scoop |
|
|
11454
|
+
|------------|--------|------------|-------|
|
|
11455
|
+
| Python 3 | `Python.Python.3` | `python` | `python` |
|
|
11456
|
+
| Git | `Git.Git` | `git` | `git` |
|
|
11457
|
+
| Node.js | `OpenJS.NodeJS` | `nodejs` | `nodejs` |
|
|
11458
|
+
|
|
11459
|
+
## Hook Runtime
|
|
11460
|
+
|
|
11461
|
+
ai-toolkit hooks are Bash scripts. On Windows, use WSL or Git Bash so Claude Code can execute `~/.softspark/ai-toolkit/hooks/*.sh`.
|
|
11462
|
+
|
|
11463
|
+
Cross-platform hooks should keep the Bash entrypoint small and delegate complex work to Python or Node when Windows behavior diverges.
|
|
11464
|
+
|
|
11465
|
+
## Verification
|
|
11466
|
+
|
|
11467
|
+
```bash
|
|
11468
|
+
ai-toolkit doctor
|
|
11469
|
+
python3 scripts/check_deps.py
|
|
11470
|
+
python3 scripts/validate.py
|
|
11471
|
+
```
|
|
11472
|
+
|
|
11473
|
+
The Windows support contract is covered by `tests/test_windows_support.bats`.
|
|
11474
|
+
|
|
11475
|
+
---
|
|
11476
|
+
|
|
11329
11477
|
## kb/troubleshooting/README.md
|
|
11330
11478
|
|
|
11331
11479
|
---
|