@softspark/ai-toolkit 4.19.1 → 4.21.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/CHANGELOG.md +121 -0
- package/LICENSE +201 -21
- package/NOTICE +55 -0
- package/README.md +35 -21
- package/app/.claude-plugin/plugin.json +2 -2
- package/app/hooks/_hook-io.sh +4 -0
- package/app/hooks/_locate-toolkit.sh +4 -0
- package/app/hooks/_profile-check.sh +4 -0
- package/app/hooks/_search-capability.sh +4 -0
- package/app/hooks/_session-paths.sh +4 -0
- package/app/hooks/ai-toolkit-statusline.sh +4 -0
- package/app/hooks/commit-quality.sh +4 -0
- package/app/hooks/config-desync-guard.sh +4 -0
- package/app/hooks/governance-capture.sh +4 -0
- package/app/hooks/guard-config.sh +4 -0
- package/app/hooks/guard-destructive.sh +4 -0
- package/app/hooks/guard-path.sh +4 -0
- package/app/hooks/instructions-audit.sh +4 -0
- package/app/hooks/loop-guard.sh +4 -0
- package/app/hooks/mcp-health.sh +4 -0
- package/app/hooks/notify-waiting.sh +4 -0
- package/app/hooks/post-tool-use.sh +4 -0
- package/app/hooks/pre-compact-save.sh +4 -0
- package/app/hooks/pre-compact.sh +4 -0
- package/app/hooks/quality-check.sh +4 -0
- package/app/hooks/quality-gate.sh +4 -0
- package/app/hooks/revert-guard.sh +4 -0
- package/app/hooks/save-session.sh +4 -0
- package/app/hooks/search-tracker.sh +4 -0
- package/app/hooks/session-end.sh +4 -0
- package/app/hooks/session-start.sh +4 -0
- package/app/hooks/stop-search-check.sh +4 -0
- package/app/hooks/subagent-start.sh +4 -0
- package/app/hooks/subagent-stop.sh +4 -0
- package/app/hooks/test-cohesion.sh +4 -0
- package/app/hooks/track-usage.sh +4 -0
- package/app/hooks/user-prompt-submit.sh +4 -0
- package/app/plugins/README.md +15 -15
- package/app/plugins/enterprise-pack/hooks/output-style.sh +4 -0
- package/app/plugins/enterprise-pack/hooks/status-line.sh +4 -0
- package/app/plugins/memory-pack/hooks/observation-capture.sh +4 -0
- package/app/plugins/memory-pack/hooks/session-summary.sh +4 -0
- package/app/plugins/memory-pack/scripts/init_db.py +4 -0
- package/app/plugins/memory-pack/scripts/strip_private.py +4 -0
- package/app/skills/_lib/__init__.py +4 -0
- package/app/skills/_lib/detect_utils.py +4 -0
- package/app/skills/a11y-validate/scripts/a11y-scanner.py +4 -0
- package/app/skills/analyze/scripts/complexity.py +4 -0
- package/app/skills/brand-voice/scripts/measure.py +4 -0
- package/app/skills/build/scripts/detect-build.py +4 -0
- package/app/skills/ci/scripts/ci-detect.py +4 -0
- package/app/skills/commit/scripts/pre-commit-check.py +4 -0
- package/app/skills/cve-scan/scripts/cve_scan.py +4 -0
- package/app/skills/debug/scripts/error-parser.py +4 -0
- package/app/skills/deploy/scripts/pre_deploy_check.py +4 -0
- package/app/skills/docs/scripts/doc-inventory.py +4 -0
- package/app/skills/documentation-standards/SKILL.md +25 -5
- package/app/skills/explain/scripts/dependency-graph.py +4 -0
- package/app/skills/explore/scripts/visualize.py +4 -0
- package/app/skills/fix/scripts/error-classifier.py +4 -0
- package/app/skills/health/scripts/health_check.py +4 -0
- package/app/skills/hipaa-validate/scripts/hipaa_scan.py +4 -0
- package/app/skills/lint/scripts/detect-linters.py +4 -0
- package/app/skills/migrate/scripts/migration-status.py +4 -0
- package/app/skills/plugin-creator/SKILL.md +18 -8
- package/app/skills/pr/scripts/pr-summary.py +4 -0
- package/app/skills/refactor/scripts/refactor-scan.py +4 -0
- package/app/skills/review/scripts/diff-analyzer.py +4 -0
- package/app/skills/rollback/scripts/rollback_info.py +4 -0
- package/app/skills/seo-validate/scripts/seo-scanner.py +4 -0
- package/app/skills/skill-creator/templates/reasoning-engine/search.py +4 -0
- package/app/skills/test/scripts/detect-runner.py +4 -0
- package/app/skills/write-a-prd/scripts/poll.js +4 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +3 -3
- package/benchmarks/run.py +4 -0
- package/bin/ai-toolkit.js +4 -0
- package/kb/{planning/drop-cascade-hooks-after-sunset.md → history/completed/drop-cascade-hooks-after-sunset-20260710.md} +24 -0
- package/kb/{reference/language-packs.md → history/completed/language-packs-removed-20260727.md} +32 -7
- package/kb/{planning/mcp-context-trim-v4-prd.md → history/completed/mcp-context-trim-v4-prd-obsoleted-20260727.md} +43 -9
- package/kb/history/completed/no-op-plugin-packs-removed-20260727.md +127 -0
- package/kb/history/completed/tool-output-token-reduction-closed-20260727.md +190 -0
- package/kb/procedures/release-preparation-sop.md +83 -5
- package/kb/reference/comparison.md +1 -1
- package/kb/reference/enterprise-config-guide.md +1 -1
- package/kb/reference/licensing.md +148 -0
- package/kb/reference/plugin-pack-conventions.md +24 -16
- package/llms-full.txt +1182 -530
- package/llms.txt +6 -3
- package/manifest.json +1 -1
- package/package.json +3 -2
- package/scripts/_common.py +4 -0
- package/scripts/add_rule.py +4 -0
- package/scripts/audit_skills.py +4 -0
- package/scripts/benchmark_config.py +4 -0
- package/scripts/benchmark_ecosystem.py +4 -0
- package/scripts/check_deps.py +4 -0
- package/scripts/claude_app.py +4 -0
- package/scripts/codex_skill_adapter.py +4 -0
- package/scripts/compile_slm.py +4 -0
- package/scripts/config_cli.py +4 -0
- package/scripts/config_lock.py +4 -0
- package/scripts/config_merger.py +4 -0
- package/scripts/config_resolver.py +4 -0
- package/scripts/config_scaffold.py +5 -1
- package/scripts/config_validator.py +4 -0
- package/scripts/create_skill.py +4 -0
- package/scripts/dir_rules_shared.py +4 -0
- package/scripts/doctor.py +4 -0
- package/scripts/ecosystem_doctor.py +4 -0
- package/scripts/eject.py +4 -0
- package/scripts/emission.py +4 -0
- package/scripts/evaluate_skills.py +4 -0
- package/scripts/frontmatter.py +4 -0
- package/scripts/generate_agents_md.py +4 -0
- package/scripts/generate_aider_conf.py +4 -0
- package/scripts/generate_antigravity.py +4 -0
- package/scripts/generate_augment.py +4 -0
- package/scripts/generate_augment_agents.py +4 -0
- package/scripts/generate_augment_commands.py +4 -0
- package/scripts/generate_augment_hooks.py +4 -0
- package/scripts/generate_augment_rules.py +4 -0
- package/scripts/generate_augment_skills.py +4 -0
- package/scripts/generate_cline.py +4 -0
- package/scripts/generate_cline_rules.py +4 -0
- package/scripts/generate_cline_skills.py +4 -0
- package/scripts/generate_codex.py +4 -0
- package/scripts/generate_codex_agents.py +4 -0
- package/scripts/generate_codex_hooks.py +4 -0
- package/scripts/generate_codex_skills.py +4 -0
- package/scripts/generate_conventions.py +4 -0
- package/scripts/generate_copilot.py +4 -0
- package/scripts/generate_copilot_hooks.py +4 -0
- package/scripts/generate_cursor_agents.py +4 -0
- package/scripts/generate_cursor_hooks.py +4 -0
- package/scripts/generate_cursor_mdc.py +4 -0
- package/scripts/generate_cursor_rules.py +4 -0
- package/scripts/generate_cursor_skills.py +4 -0
- package/scripts/generate_devin_hooks.py +4 -0
- package/scripts/generate_gemini.py +4 -0
- package/scripts/generate_gemini_commands.py +4 -0
- package/scripts/generate_gemini_hooks.py +4 -0
- package/scripts/generate_gemini_skills.py +4 -0
- package/scripts/generate_language_rules_skills.py +4 -0
- package/scripts/generate_llms_txt.py +4 -0
- package/scripts/generate_opencode.py +4 -0
- package/scripts/generate_opencode_agents.py +4 -0
- package/scripts/generate_opencode_commands.py +4 -0
- package/scripts/generate_opencode_json.py +4 -0
- package/scripts/generate_opencode_plugin.py +4 -0
- package/scripts/generate_roo_modes.py +4 -0
- package/scripts/generate_roo_rules.py +4 -0
- package/scripts/generate_windsurf.py +4 -0
- package/scripts/generate_windsurf_rules.py +4 -0
- package/scripts/generate_windsurf_skills.py +4 -0
- package/scripts/generator_base.py +4 -0
- package/scripts/harvest_ecosystem.py +4 -0
- package/scripts/hook_sources.py +4 -0
- package/scripts/inject_hook_cli.py +4 -0
- package/scripts/inject_mcp_cli.py +4 -0
- package/scripts/inject_rule_cli.py +4 -0
- package/scripts/inject_section_cli.py +4 -0
- package/scripts/injection.py +4 -0
- package/scripts/install.py +4 -0
- package/scripts/install_git_hooks.py +4 -0
- package/scripts/install_steps/__init__.py +4 -0
- package/scripts/install_steps/ai_tools.py +4 -0
- package/scripts/install_steps/detect_language.py +4 -0
- package/scripts/install_steps/hooks.py +4 -0
- package/scripts/install_steps/install_state.py +4 -0
- package/scripts/install_steps/markers.py +4 -0
- package/scripts/install_steps/project_registry.py +4 -0
- package/scripts/install_steps/symlinks.py +4 -0
- package/scripts/instruction_core.py +4 -0
- package/scripts/mcp_editors.py +4 -0
- package/scripts/mcp_manager.py +4 -0
- package/scripts/mcp_sources.py +4 -0
- package/scripts/merge-hooks.py +4 -0
- package/scripts/migrate.py +4 -0
- package/scripts/output_filter_retirement.py +4 -0
- package/scripts/pack_codebase.py +4 -0
- package/scripts/paths.py +4 -0
- package/scripts/plugin.py +4 -0
- package/scripts/plugin_schema.py +4 -0
- package/scripts/projects_cli.py +4 -0
- package/scripts/propagate_global.py +4 -0
- package/scripts/remove_rule.py +4 -0
- package/scripts/rule_sources.py +4 -0
- package/scripts/secure_fs.py +4 -0
- package/scripts/session_state.py +4 -0
- package/scripts/session_token_stats.py +4 -0
- package/scripts/skill_pointer.py +4 -0
- package/scripts/stats.py +4 -0
- package/scripts/sync.py +4 -0
- package/scripts/test_cohesion.py +4 -0
- package/scripts/uninstall.py +4 -0
- package/scripts/update_projects.py +4 -0
- package/scripts/url_fetch.py +4 -0
- package/scripts/validate.py +37 -1
- package/scripts/version_check.py +4 -0
- package/app/plugins/csharp-pack/README.md +0 -11
- package/app/plugins/csharp-pack/plugin.json +0 -18
- package/app/plugins/frontend-pack/README.md +0 -14
- package/app/plugins/frontend-pack/plugin.json +0 -22
- package/app/plugins/java-pack/README.md +0 -11
- package/app/plugins/java-pack/plugin.json +0 -18
- package/app/plugins/kotlin-pack/README.md +0 -11
- package/app/plugins/kotlin-pack/plugin.json +0 -18
- package/app/plugins/research-pack/README.md +0 -14
- package/app/plugins/research-pack/plugin.json +0 -22
- package/app/plugins/ruby-pack/README.md +0 -11
- package/app/plugins/ruby-pack/plugin.json +0 -18
- package/app/plugins/rust-pack/README.md +0 -11
- package/app/plugins/rust-pack/plugin.json +0 -18
- package/app/plugins/security-pack/README.md +0 -15
- package/app/plugins/security-pack/plugin.json +0 -23
- package/app/plugins/swift-pack/README.md +0 -11
- package/app/plugins/swift-pack/plugin.json +0 -18
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate .opencode/agents/*.md files for opencode (https://opencode.ai).
|
|
3
7
|
|
|
4
8
|
Each ai-toolkit agent becomes an opencode subagent with frontmatter:
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate .opencode/commands/*.md files for opencode (https://opencode.ai).
|
|
3
7
|
|
|
4
8
|
User-invocable skills become opencode slash commands. Knowledge skills
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Merge MCP servers from .mcp.json into opencode.json for opencode.
|
|
3
7
|
|
|
4
8
|
opencode MCP config: https://opencode.ai/docs/mcp-servers/
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate the ai-toolkit opencode plugin at ``.opencode/plugins/ai-toolkit-hooks.js``.
|
|
3
7
|
|
|
4
8
|
opencode plugins are JS/TS modules with a NAMED export that receive a
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate ``.roomodes`` JSON from ``app/agents/*.md``.
|
|
3
7
|
|
|
4
8
|
Roo Code's custom mode format supports these top-level properties:
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate .roo/rules/*.md shared rules for Roo Code.
|
|
3
7
|
|
|
4
8
|
Roo Code reads shared rules from .roo/rules/*.md (applied to all modes).
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate .windsurfrules from app/agents/*.md and app/skills/*/SKILL.md.
|
|
3
7
|
|
|
4
8
|
Usage: ./scripts/generate_windsurf.py > .windsurfrules
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate ``.devin/rules/*.md`` and ``.windsurf/rules/*.md`` (and workflows)
|
|
3
7
|
for Devin Desktop (formerly Windsurf).
|
|
4
8
|
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Generate a Devin/Windsurf skill pointer.
|
|
3
7
|
|
|
4
8
|
Current Devin docs list ``.windsurf/skills/`` as a supported cross-tool skill
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Shared generator pipeline for producing AI tool configs.
|
|
2
6
|
|
|
3
7
|
Each generator declares its output format via a config dict.
|
package/scripts/hook_sources.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""URL source registry for remotely-sourced hooks.
|
|
3
7
|
|
|
4
8
|
Tracks which hooks were registered from a URL so that `ai-toolkit update`
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Inject external hooks into Claude settings and native Codex hooks.
|
|
3
7
|
|
|
4
8
|
Allows external tools (MCP servers, plugins, etc.) to register their own
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Inject external MCP server templates into .mcp.json and all editor configs.
|
|
3
7
|
|
|
4
8
|
Allows external tools (MCP servers, plugins) to register their own MCP server
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""CLI wrapper around inject_rule() and remove_rule_section() from _common.
|
|
3
7
|
|
|
4
8
|
Injects a rule file into CLAUDE.md using idempotent marker-based injection.
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""CLI wrapper around inject_section() from _common.
|
|
3
7
|
|
|
4
8
|
Injects content between TOOLKIT markers into any file.
|
package/scripts/injection.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Marker-based section injection and rule management.
|
|
2
6
|
|
|
3
7
|
Handles idempotent injection of content between TOOLKIT markers
|
package/scripts/install.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""AI Toolkit Installer.
|
|
3
7
|
|
|
4
8
|
Installs toolkit GLOBALLY -- Claude Code + all supported AI tools.
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Install a fallback pre-commit hook for the ai-toolkit.
|
|
3
7
|
|
|
4
8
|
Used for non-Claude editors to enforce the constitution and quality gates.
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Detect project language from file markers and source file extensions."""
|
|
2
6
|
from __future__ import annotations
|
|
3
7
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Track installed modules and versions in ~/.softspark/ai-toolkit/state.json."""
|
|
2
6
|
from __future__ import annotations
|
|
3
7
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Project registry — tracks which directories have ai-toolkit installed locally.
|
|
2
6
|
|
|
3
7
|
Stores registry in ~/.softspark/ai-toolkit/projects.json.
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Render shared editor instructions from canonical ai-toolkit sources."""
|
|
2
6
|
from __future__ import annotations
|
|
3
7
|
|
package/scripts/mcp_editors.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Editor-specific MCP config adapters for ai-toolkit."""
|
|
3
7
|
|
|
4
8
|
from __future__ import annotations
|
package/scripts/mcp_manager.py
CHANGED
package/scripts/mcp_sources.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""URL source registry for externally-injected MCP templates.
|
|
3
7
|
|
|
4
8
|
Tracks which MCP templates were registered from a URL or local file so that
|
package/scripts/merge-hooks.py
CHANGED
package/scripts/migrate.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Migrate ai-toolkit data from ~/.ai-toolkit to ~/.softspark/ai-toolkit.
|
|
3
7
|
|
|
4
8
|
Called automatically by install.py and ai-toolkit.js on first run.
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Retirement cleanup for the v4.16.x native tool-output filter.
|
|
2
6
|
|
|
3
7
|
v4.16.0 and v4.16.1 installed a PostToolUse filter that wrote files outside the
|
package/scripts/pack_codebase.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Pack a codebase into a single AI-friendly markdown file under a token budget.
|
|
3
7
|
|
|
4
8
|
Walks the current working directory (or --root), respects .gitignore, ranks files
|
package/scripts/paths.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Centralized path constants for ai-toolkit.
|
|
2
6
|
|
|
3
7
|
All scripts MUST import paths from here — never hardcode ~/.ai-toolkit or
|
package/scripts/plugin.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""ai-toolkit plugin — install, remove, update, clean, and list plugin packs.
|
|
3
7
|
|
|
4
8
|
Usage:
|
package/scripts/plugin_schema.py
CHANGED
package/scripts/projects_cli.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Propagate rules, hooks, and MCP configs to all globally installed editors.
|
|
3
7
|
|
|
4
8
|
Called automatically after inject-rule, inject-hook, add-rule, remove-rule,
|
package/scripts/remove_rule.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""remove-rule -- Unregister a rule (opposite of add-rule).
|
|
3
7
|
|
|
4
8
|
Removes the rule file from ~/.softspark/ai-toolkit/rules/ (so it is no longer
|
package/scripts/rule_sources.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""URL source registry for remotely-sourced rules.
|
|
3
7
|
|
|
4
8
|
Tracks which rules were registered from a URL so that `ai-toolkit update`
|
package/scripts/secure_fs.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Pinned-directory filesystem mutations for trusted configuration roots.
|
|
2
6
|
|
|
3
7
|
All mutating syscalls operate relative to directory descriptors opened with
|
package/scripts/session_state.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Session edit state tracker for ai-toolkit hooks.
|
|
3
7
|
|
|
4
8
|
Stores per-session file edits so hooks can:
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Read Claude Code session JSONL files and report real token usage.
|
|
3
7
|
|
|
4
8
|
Claude Code writes one JSONL line per message to:
|
package/scripts/skill_pointer.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
3
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
4
|
+
|
|
1
5
|
"""Shared generator for editor-native ai-toolkit skill catalogue pointers."""
|
|
2
6
|
from __future__ import annotations
|
|
3
7
|
|
package/scripts/stats.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""ai-toolkit stats -- Show skill usage statistics.
|
|
3
7
|
|
|
4
8
|
Reads ~/.softspark/ai-toolkit/stats.json (populated by track-usage.sh hook)
|
package/scripts/sync.py
CHANGED
package/scripts/test_cohesion.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Test cohesion resolver for ai-toolkit hooks.
|
|
3
7
|
|
|
4
8
|
Reads a project-local or toolkit-default test-cohesion-map and answers:
|
package/scripts/uninstall.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Safely remove ai-toolkit-managed runtime data and customizations.
|
|
3
7
|
|
|
4
8
|
The default scope is the current user's global install. ``--local`` targets a
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Update all registered projects in parallel.
|
|
3
7
|
|
|
4
8
|
Reads ~/.softspark/ai-toolkit/projects.json and runs install.py --local in each
|
package/scripts/url_fetch.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Shared URL fetch utility for ai-toolkit.
|
|
3
7
|
|
|
4
8
|
HTTPS-only, timeout-capped, size-limited fetcher used by both
|
package/scripts/validate.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""AI Toolkit Validator.
|
|
3
7
|
|
|
4
8
|
Checks all agent and skill files for correctness, validates hook events,
|
|
@@ -91,9 +95,16 @@ HOOK_REQUIRED_FIELDS = {
|
|
|
91
95
|
"mcp_tool": ("server", "tool", "arguments"),
|
|
92
96
|
}
|
|
93
97
|
|
|
98
|
+
# The taxonomy. `app/skills/documentation-standards/SKILL.md` documents the same
|
|
99
|
+
# eight and is what authors read; this set is what rejects a typo. They are one
|
|
100
|
+
# list in two places, so a change belongs in both.
|
|
101
|
+
#
|
|
102
|
+
# `decisions` and `runbooks` were missing until v4.21.0 while the kb-migration
|
|
103
|
+
# SOP had been telling people to create those directories for months, so a
|
|
104
|
+
# correctly-filed ADR failed validation.
|
|
94
105
|
VALID_KB_CATEGORIES = frozenset({
|
|
95
106
|
"reference", "howto", "procedures", "troubleshooting", "best-practices",
|
|
96
|
-
"planning",
|
|
107
|
+
"decisions", "runbooks", "planning",
|
|
97
108
|
})
|
|
98
109
|
|
|
99
110
|
VALID_RULE_CATEGORIES = frozenset({
|
|
@@ -726,6 +737,31 @@ def validate_kb_documents(tk_dir: Path, vr: ValidationResult) -> None:
|
|
|
726
737
|
vr.error(f"{kb_name} - Invalid category '{kb_category}' (valid: {', '.join(sorted(VALID_KB_CATEGORIES))})")
|
|
727
738
|
kb_errors += 1
|
|
728
739
|
|
|
740
|
+
# `section` is a legacy alias for `category`, not a second axis. A
|
|
741
|
+
# document carrying both with different values is indexed twice and
|
|
742
|
+
# found once, and nothing about that is visible to its author.
|
|
743
|
+
kb_section = _fm_field(fm_lines, "section").strip()
|
|
744
|
+
if kb_section and kb_category and kb_section != kb_category:
|
|
745
|
+
vr.error(
|
|
746
|
+
f"{kb_name} - section '{kb_section}' disagrees with category "
|
|
747
|
+
f"'{kb_category}'; section is an alias and must match"
|
|
748
|
+
)
|
|
749
|
+
kb_errors += 1
|
|
750
|
+
|
|
751
|
+
# A document filed under a taxonomy directory must declare that
|
|
752
|
+
# category, or a browsing reader and a search hit disagree about what it
|
|
753
|
+
# is. The rule is scoped to directories that ARE category names on
|
|
754
|
+
# purpose: `kb/history/completed/` is a lifecycle location, not a type,
|
|
755
|
+
# and a finished plan is still a `planning` document.
|
|
756
|
+
relative = kb_file.relative_to(kb_dir).parts
|
|
757
|
+
top = relative[0] if len(relative) > 1 else ""
|
|
758
|
+
if kb_category and top in VALID_KB_CATEGORIES and top != kb_category:
|
|
759
|
+
vr.error(
|
|
760
|
+
f"{kb_name} - is in {top}/ but declares category "
|
|
761
|
+
f"'{kb_category}'; they must agree"
|
|
762
|
+
)
|
|
763
|
+
kb_errors += 1
|
|
764
|
+
|
|
729
765
|
# Validate tags is not empty
|
|
730
766
|
tags_val = _fm_field(fm_lines, "tags")
|
|
731
767
|
if tags_val:
|
package/scripts/version_check.py
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
|
|
4
|
+
# Source: https://github.com/softspark/ai-toolkit
|
|
5
|
+
|
|
2
6
|
"""Check if a newer version of ai-toolkit is available on npm.
|
|
3
7
|
|
|
4
8
|
Caches the result for 24 hours to avoid hitting npm on every session.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# csharp-pack
|
|
2
|
-
|
|
3
|
-
Curated C# and .NET development patterns pack.
|
|
4
|
-
|
|
5
|
-
## Includes
|
|
6
|
-
- Skills: `csharp-patterns`
|
|
7
|
-
|
|
8
|
-
## Use When
|
|
9
|
-
- writing C# code and need idiomatic .NET patterns,
|
|
10
|
-
- setting up new ASP.NET Core or Entity Framework projects,
|
|
11
|
-
- reviewing C# code for nullable reference types, async/await, and LINQ best practices.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "csharp-pack",
|
|
3
|
-
"description": "Domain plugin pack for C# and .NET development patterns.",
|
|
4
|
-
"version": "1.0.0",
|
|
5
|
-
"domain": "csharp",
|
|
6
|
-
"type": "plugin-pack",
|
|
7
|
-
"status": "experimental",
|
|
8
|
-
"requires": {
|
|
9
|
-
"ai-toolkit": ">=1.0.0",
|
|
10
|
-
"claude-code": ">=1.0.33"
|
|
11
|
-
},
|
|
12
|
-
"includes": {
|
|
13
|
-
"agents": [],
|
|
14
|
-
"skills": ["csharp-patterns"],
|
|
15
|
-
"rules": [],
|
|
16
|
-
"hooks": []
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frontend-pack
|
|
2
|
-
|
|
3
|
-
Curated frontend delivery pack.
|
|
4
|
-
|
|
5
|
-
## Includes
|
|
6
|
-
- Agents: `frontend-specialist`, `seo-specialist`, `code-reviewer`
|
|
7
|
-
- Skills: `design-engineering`, `typescript-patterns`, `/docs`
|
|
8
|
-
- Hooks: `post-tool-use.sh`
|
|
9
|
-
|
|
10
|
-
## Use When
|
|
11
|
-
- shipping UI-heavy features,
|
|
12
|
-
- enforcing accessibility and responsive behavior,
|
|
13
|
-
- reviewing frontend quality and polish.
|
|
14
|
-
|