@heytherevibin/skillforge 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/CODE_OF_CONDUCT.md +34 -0
- package/CONTRIBUTING.md +38 -0
- package/LICENSE +21 -0
- package/README.md +337 -0
- package/RELEASING.md +93 -0
- package/SECURITY.md +31 -0
- package/STRATEGY.md +26 -0
- package/bin/cli.js +547 -0
- package/lib/packs.js +184 -0
- package/package.json +38 -0
- package/python/app/__init__.py +0 -0
- package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
- package/python/app/__pycache__/main.cpython-312.pyc +0 -0
- package/python/app/auth.py +63 -0
- package/python/app/cli.py +78 -0
- package/python/app/db_paths.py +26 -0
- package/python/app/events_cli.py +175 -0
- package/python/app/main.py +647 -0
- package/python/app/materialize.py +138 -0
- package/python/app/mcp_server.py +610 -0
- package/python/app/route_cli.py +117 -0
- package/python/requirements-dev.txt +1 -0
- package/python/requirements.txt +7 -0
- package/python/tests/test_db_paths.py +41 -0
- package/skills/accessibility/SKILL.md +145 -0
- package/skills/agent-architecture-audit/SKILL.md +256 -0
- package/skills/agent-eval/SKILL.md +144 -0
- package/skills/agent-harness-construction/SKILL.md +72 -0
- package/skills/agent-introspection-debugging/SKILL.md +152 -0
- package/skills/agent-payment-x402/SKILL.md +224 -0
- package/skills/agent-sort/SKILL.md +214 -0
- package/skills/agentic-engineering/SKILL.md +62 -0
- package/skills/agentic-os/SKILL.md +386 -0
- package/skills/ai-first-engineering/SKILL.md +50 -0
- package/skills/ai-regression-testing/SKILL.md +384 -0
- package/skills/android-clean-architecture/SKILL.md +338 -0
- package/skills/angular-developer/SKILL.md +153 -0
- package/skills/angular-developer/references/angular-animations.md +160 -0
- package/skills/angular-developer/references/angular-aria.md +410 -0
- package/skills/angular-developer/references/cli.md +86 -0
- package/skills/angular-developer/references/component-harnesses.md +59 -0
- package/skills/angular-developer/references/component-styling.md +91 -0
- package/skills/angular-developer/references/components.md +117 -0
- package/skills/angular-developer/references/creating-services.md +97 -0
- package/skills/angular-developer/references/data-resolvers.md +69 -0
- package/skills/angular-developer/references/define-routes.md +67 -0
- package/skills/angular-developer/references/defining-providers.md +72 -0
- package/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/skills/angular-developer/references/e2e-testing.md +56 -0
- package/skills/angular-developer/references/effects.md +83 -0
- package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/skills/angular-developer/references/host-elements.md +80 -0
- package/skills/angular-developer/references/injection-context.md +63 -0
- package/skills/angular-developer/references/inputs.md +101 -0
- package/skills/angular-developer/references/linked-signal.md +59 -0
- package/skills/angular-developer/references/loading-strategies.md +61 -0
- package/skills/angular-developer/references/mcp.md +108 -0
- package/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/skills/angular-developer/references/outputs.md +86 -0
- package/skills/angular-developer/references/reactive-forms.md +122 -0
- package/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/skills/angular-developer/references/resource.md +77 -0
- package/skills/angular-developer/references/route-animations.md +56 -0
- package/skills/angular-developer/references/route-guards.md +52 -0
- package/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/skills/angular-developer/references/router-testing.md +87 -0
- package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/skills/angular-developer/references/signal-forms.md +795 -0
- package/skills/angular-developer/references/signals-overview.md +94 -0
- package/skills/angular-developer/references/tailwind-css.md +69 -0
- package/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/skills/api-connector-builder/SKILL.md +120 -0
- package/skills/api-design/SKILL.md +522 -0
- package/skills/architecture-decision-records/SKILL.md +178 -0
- package/skills/article-writing/SKILL.md +78 -0
- package/skills/automation-audit-ops/SKILL.md +141 -0
- package/skills/autonomous-agent-harness/SKILL.md +272 -0
- package/skills/autonomous-loops/SKILL.md +609 -0
- package/skills/backend-patterns/SKILL.md +560 -0
- package/skills/benchmark/SKILL.md +92 -0
- package/skills/blueprint/SKILL.md +104 -0
- package/skills/browser-qa/SKILL.md +86 -0
- package/skills/bun-runtime/SKILL.md +83 -0
- package/skills/canary-watch/SKILL.md +98 -0
- package/skills/carrier-relationship-management/SKILL.md +211 -0
- package/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/skills/ck/SKILL.md +147 -0
- package/skills/ck/commands/forget.mjs +44 -0
- package/skills/ck/commands/info.mjs +24 -0
- package/skills/ck/commands/init.mjs +143 -0
- package/skills/ck/commands/list.mjs +40 -0
- package/skills/ck/commands/migrate.mjs +202 -0
- package/skills/ck/commands/resume.mjs +36 -0
- package/skills/ck/commands/save.mjs +210 -0
- package/skills/ck/commands/shared.mjs +387 -0
- package/skills/ck/hooks/session-start.mjs +224 -0
- package/skills/claude-devfleet/SKILL.md +103 -0
- package/skills/click-path-audit/SKILL.md +244 -0
- package/skills/clickhouse-io/SKILL.md +438 -0
- package/skills/code-tour/SKILL.md +235 -0
- package/skills/codebase-onboarding/SKILL.md +232 -0
- package/skills/coding-standards/SKILL.md +548 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
- package/skills/connections-optimizer/SKILL.md +188 -0
- package/skills/content-engine/SKILL.md +126 -0
- package/skills/content-hash-cache-pattern/SKILL.md +160 -0
- package/skills/context-budget/SKILL.md +134 -0
- package/skills/continuous-agent-loop/SKILL.md +44 -0
- package/skills/continuous-learning/SKILL.md +129 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +69 -0
- package/skills/continuous-learning-v2/SKILL.md +358 -0
- package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
- package/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
- package/skills/continuous-learning-v2/config.json +8 -0
- package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
- package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
- package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
- package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
- package/skills/cost-tracking/SKILL.md +147 -0
- package/skills/council/SKILL.md +202 -0
- package/skills/cpp-coding-standards/SKILL.md +722 -0
- package/skills/cpp-testing/SKILL.md +323 -0
- package/skills/crosspost/SKILL.md +110 -0
- package/skills/csharp-testing/SKILL.md +320 -0
- package/skills/customer-billing-ops/SKILL.md +139 -0
- package/skills/customs-trade-compliance/SKILL.md +262 -0
- package/skills/dart-flutter-patterns/SKILL.md +562 -0
- package/skills/dashboard-builder/SKILL.md +108 -0
- package/skills/data-scraper-agent/SKILL.md +764 -0
- package/skills/database-migrations/SKILL.md +428 -0
- package/skills/deep-research/SKILL.md +158 -0
- package/skills/defi-amm-security/SKILL.md +166 -0
- package/skills/deployment-patterns/SKILL.md +426 -0
- package/skills/design-system/SKILL.md +81 -0
- package/skills/django-celery/SKILL.md +456 -0
- package/skills/django-patterns/SKILL.md +733 -0
- package/skills/django-security/SKILL.md +592 -0
- package/skills/django-tdd/SKILL.md +728 -0
- package/skills/django-verification/SKILL.md +468 -0
- package/skills/dmux-workflows/SKILL.md +190 -0
- package/skills/docker-patterns/SKILL.md +363 -0
- package/skills/documentation-lookup/SKILL.md +89 -0
- package/skills/dotnet-patterns/SKILL.md +320 -0
- package/skills/e2e-testing/SKILL.md +325 -0
- package/skills/email-ops/SKILL.md +120 -0
- package/skills/energy-procurement/SKILL.md +227 -0
- package/skills/enterprise-agent-ops/SKILL.md +49 -0
- package/skills/error-handling/SKILL.md +375 -0
- package/skills/eval-harness/SKILL.md +269 -0
- package/skills/evm-token-decimals/SKILL.md +130 -0
- package/skills/exa-search/SKILL.md +106 -0
- package/skills/fal-ai-media/SKILL.md +287 -0
- package/skills/fastapi-patterns/SKILL.md +327 -0
- package/skills/finance-billing-ops/SKILL.md +126 -0
- package/skills/flox-environments/SKILL.md +496 -0
- package/skills/flutter-dart-code-review/SKILL.md +434 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-design-direction/SKILL.md +92 -0
- package/skills/frontend-patterns/SKILL.md +641 -0
- package/skills/frontend-slides/SKILL.md +183 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/skills/frontend-slides/animation-patterns.md +122 -0
- package/skills/frontend-slides/html-template.md +419 -0
- package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/fsharp-testing/SKILL.md +279 -0
- package/skills/gan-style-harness/SKILL.md +278 -0
- package/skills/gateguard/SKILL.md +125 -0
- package/skills/git-workflow/SKILL.md +714 -0
- package/skills/github-ops/SKILL.md +143 -0
- package/skills/golang-patterns/SKILL.md +673 -0
- package/skills/golang-testing/SKILL.md +719 -0
- package/skills/google-workspace-ops/SKILL.md +94 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/skills/hermes-imports/SKILL.md +87 -0
- package/skills/hexagonal-architecture/SKILL.md +275 -0
- package/skills/hipaa-compliance/SKILL.md +78 -0
- package/skills/homelab-network-readiness/SKILL.md +169 -0
- package/skills/homelab-network-setup/SKILL.md +129 -0
- package/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inventory-demand-planning/SKILL.md +246 -0
- package/skills/investor-materials/SKILL.md +95 -0
- package/skills/investor-outreach/SKILL.md +90 -0
- package/skills/ios-icon-gen/SKILL.md +157 -0
- package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/skills/iterative-retrieval/SKILL.md +209 -0
- package/skills/java-coding-standards/SKILL.md +382 -0
- package/skills/jira-integration/SKILL.md +292 -0
- package/skills/jpa-patterns/SKILL.md +150 -0
- package/skills/knowledge-ops/SKILL.md +153 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
- package/skills/kotlin-patterns/SKILL.md +710 -0
- package/skills/kotlin-testing/SKILL.md +823 -0
- package/skills/laravel-patterns/SKILL.md +414 -0
- package/skills/laravel-plugin-discovery/SKILL.md +228 -0
- package/skills/laravel-security/SKILL.md +284 -0
- package/skills/laravel-tdd/SKILL.md +282 -0
- package/skills/laravel-verification/SKILL.md +178 -0
- package/skills/lead-intelligence/SKILL.md +320 -0
- package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/skills/logistics-exception-management/SKILL.md +221 -0
- package/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/skills/manim-video/SKILL.md +88 -0
- package/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/skills/market-research/SKILL.md +74 -0
- package/skills/mcp-server-patterns/SKILL.md +68 -0
- package/skills/messages-ops/SKILL.md +103 -0
- package/skills/mle-workflow/SKILL.md +345 -0
- package/skills/motion-advanced/SKILL.md +596 -0
- package/skills/motion-foundations/SKILL.md +299 -0
- package/skills/motion-patterns/SKILL.md +435 -0
- package/skills/motion-ui/SKILL.md +574 -0
- package/skills/mysql-patterns/SKILL.md +411 -0
- package/skills/nanoclaw-repl/SKILL.md +32 -0
- package/skills/nestjs-patterns/SKILL.md +229 -0
- package/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/skills/network-config-validation/SKILL.md +210 -0
- package/skills/network-interface-health/SKILL.md +152 -0
- package/skills/nextjs-turbopack/SKILL.md +43 -0
- package/skills/nodejs-keccak256/SKILL.md +102 -0
- package/skills/nutrient-document-processing/SKILL.md +166 -0
- package/skills/nuxt4-patterns/SKILL.md +99 -0
- package/skills/openclaw-persona-forge/SKILL.md +288 -0
- package/skills/openclaw-persona-forge/gacha.py +224 -0
- package/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/skills/opensource-pipeline/SKILL.md +254 -0
- package/skills/perl-patterns/SKILL.md +503 -0
- package/skills/perl-security/SKILL.md +502 -0
- package/skills/perl-testing/SKILL.md +474 -0
- package/skills/plan-orchestrate/SKILL.md +253 -0
- package/skills/plankton-code-quality/SKILL.md +236 -0
- package/skills/postgres-patterns/SKILL.md +146 -0
- package/skills/product-capability/SKILL.md +140 -0
- package/skills/product-lens/SKILL.md +91 -0
- package/skills/production-audit/SKILL.md +206 -0
- package/skills/production-scheduling/SKILL.md +237 -0
- package/skills/project-flow-ops/SKILL.md +110 -0
- package/skills/prompt-optimizer/SKILL.md +398 -0
- package/skills/python-patterns/SKILL.md +749 -0
- package/skills/python-testing/SKILL.md +815 -0
- package/skills/pytorch-patterns/SKILL.md +395 -0
- package/skills/quality-nonconformance/SKILL.md +259 -0
- package/skills/quarkus-patterns/SKILL.md +721 -0
- package/skills/quarkus-security/SKILL.md +466 -0
- package/skills/quarkus-tdd/SKILL.md +810 -0
- package/skills/quarkus-verification/SKILL.md +478 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
- package/skills/redis-patterns/SKILL.md +402 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/remotion-video-creation/rules/3d.md +86 -0
- package/skills/remotion-video-creation/rules/animations.md +29 -0
- package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/skills/remotion-video-creation/rules/assets.md +78 -0
- package/skills/remotion-video-creation/rules/audio.md +172 -0
- package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/skills/remotion-video-creation/rules/charts.md +58 -0
- package/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/skills/remotion-video-creation/rules/images.md +130 -0
- package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/skills/remotion-video-creation/rules/timing.md +179 -0
- package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/skills/remotion-video-creation/rules/videos.md +171 -0
- package/skills/repo-scan/SKILL.md +78 -0
- package/skills/research-ops/SKILL.md +111 -0
- package/skills/returns-reverse-logistics/SKILL.md +239 -0
- package/skills/rules-distill/SKILL.md +263 -0
- package/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/skills/rust-patterns/SKILL.md +498 -0
- package/skills/rust-testing/SKILL.md +499 -0
- package/skills/safety-guard/SKILL.md +74 -0
- package/skills/santa-method/SKILL.md +306 -0
- package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/skills/search-first/SKILL.md +181 -0
- package/skills/security-bounty-hunter/SKILL.md +99 -0
- package/skills/security-review/SKILL.md +502 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/seo/SKILL.md +153 -0
- package/skills/skill-comply/SKILL.md +57 -0
- package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/skills/skill-comply/prompts/classifier.md +24 -0
- package/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/skills/skill-comply/pyproject.toml +15 -0
- package/skills/skill-comply/scripts/__init__.py +0 -0
- package/skills/skill-comply/scripts/classifier.py +85 -0
- package/skills/skill-comply/scripts/grader.py +124 -0
- package/skills/skill-comply/scripts/parser.py +107 -0
- package/skills/skill-comply/scripts/report.py +170 -0
- package/skills/skill-comply/scripts/run.py +127 -0
- package/skills/skill-comply/scripts/runner.py +186 -0
- package/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/skills/skill-comply/scripts/utils.py +13 -0
- package/skills/skill-comply/tests/test_grader.py +197 -0
- package/skills/skill-comply/tests/test_parser.py +90 -0
- package/skills/skill-comply/tests/test_runner.py +172 -0
- package/skills/skill-scout/SKILL.md +139 -0
- package/skills/skill-stocktake/SKILL.md +193 -0
- package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/skills/social-graph-ranker/SKILL.md +153 -0
- package/skills/springboot-patterns/SKILL.md +313 -0
- package/skills/springboot-security/SKILL.md +271 -0
- package/skills/springboot-tdd/SKILL.md +157 -0
- package/skills/springboot-verification/SKILL.md +230 -0
- package/skills/strategic-compact/SKILL.md +129 -0
- package/skills/strategic-compact/suggest-compact.sh +54 -0
- package/skills/swift-actor-persistence/SKILL.md +142 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +189 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/tdd-workflow/SKILL.md +462 -0
- package/skills/team-builder/SKILL.md +166 -0
- package/skills/terminal-ops/SKILL.md +108 -0
- package/skills/tinystruct-patterns/SKILL.md +130 -0
- package/skills/tinystruct-patterns/references/architecture.md +77 -0
- package/skills/tinystruct-patterns/references/data-handling.md +35 -0
- package/skills/tinystruct-patterns/references/routing.md +57 -0
- package/skills/tinystruct-patterns/references/system-usage.md +74 -0
- package/skills/tinystruct-patterns/references/testing.md +59 -0
- package/skills/token-budget-advisor/SKILL.md +133 -0
- package/skills/ui-demo/SKILL.md +464 -0
- package/skills/ui-to-vue/SKILL.md +134 -0
- package/skills/unified-notifications-ops/SKILL.md +186 -0
- package/skills/verification-loop/SKILL.md +125 -0
- package/skills/video-editing/SKILL.md +309 -0
- package/skills/videodb/SKILL.md +373 -0
- package/skills/videodb/reference/api-reference.md +550 -0
- package/skills/videodb/reference/capture-reference.md +407 -0
- package/skills/videodb/reference/capture.md +101 -0
- package/skills/videodb/reference/editor.md +443 -0
- package/skills/videodb/reference/generative.md +331 -0
- package/skills/videodb/reference/rtstream-reference.md +564 -0
- package/skills/videodb/reference/rtstream.md +65 -0
- package/skills/videodb/reference/search.md +230 -0
- package/skills/videodb/reference/streaming.md +406 -0
- package/skills/videodb/reference/use-cases.md +118 -0
- package/skills/videodb/scripts/ws_listener.py +282 -0
- package/skills/visa-doc-translate/README.md +86 -0
- package/skills/visa-doc-translate/SKILL.md +117 -0
- package/skills/vite-patterns/SKILL.md +448 -0
- package/skills/windows-desktop-e2e/SKILL.md +787 -0
- package/skills/workspace-surface-audit/SKILL.md +124 -0
- package/skills/x-api/SKILL.md +233 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-orchestrate
|
|
3
|
+
description: Read a plan document, decompose it into steps, design a per-step agent chain from the the toolset catalogue, and emit ready-to-paste /orchestrate custom prompts. Generative only — never invokes /orchestrate itself. Use when the user has a multi-step plan and wants to drive it through orchestrate without composing chains by hand.
|
|
4
|
+
origin: the toolset
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Orchestrate
|
|
8
|
+
|
|
9
|
+
Bridge a plan document to `/orchestrate custom` by emitting one ready-to-paste invocation per step. The skill is generative only — it never executes `/orchestrate`. The user pastes each line when ready.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- User has a multi-step plan document (PRD, RFC, implementation plan) and wants to drive it through `/orchestrate`.
|
|
14
|
+
- User says "orchestrate this plan", "give me orchestrate prompts for each step", "compose chains for this plan".
|
|
15
|
+
- A step-by-step plan exists but the user does not want to manually pick agents per step.
|
|
16
|
+
|
|
17
|
+
Skip when:
|
|
18
|
+
- The work is one ad-hoc step → call `/orchestrate custom` directly.
|
|
19
|
+
- The plan is unreadable or empty. Lack of explicit numbering alone is not a skip condition — see the "No clear steps" edge case below.
|
|
20
|
+
|
|
21
|
+
## Inputs
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
<plan-doc-path> [--lang=python|typescript|go|rust|cpp|java|kotlin|flutter|auto] [--scope=all|step:<n>|range:<a>-<b>] [--dry-run]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- `<plan-doc-path>` — required; relative or absolute path (`@docs/...` accepted).
|
|
28
|
+
- `--lang` — reviewer language variant; defaults to `auto` (detected from project).
|
|
29
|
+
- `--scope` — limits emitted steps; defaults to `all`.
|
|
30
|
+
- `--dry-run` — print decomposition + chain rationale only; do not emit final prompts.
|
|
31
|
+
|
|
32
|
+
## Authoritative `/orchestrate` shape (do not deviate)
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
{ORCH_CMD} custom "<agent1>,<agent2>,...,<agentN>" "<task description>"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Where `{ORCH_CMD}` is determined in Phase 0 (see below). The command string in the emitted output **always uses one concrete form** — never both, never a placeholder.
|
|
39
|
+
|
|
40
|
+
- `custom` is a sequential chain; each agent's HANDOFF feeds the next.
|
|
41
|
+
- Comma-separated agent list. No spaces preferred; one space tolerated.
|
|
42
|
+
- No `--mode` / `--gate` / `--agents=...` flags exist — never invent them.
|
|
43
|
+
- Agent names come from the catalogue in this skill. Embedded double quotes in the task description are escaped as `\"`.
|
|
44
|
+
|
|
45
|
+
## the toolset install form and namespacing
|
|
46
|
+
|
|
47
|
+
Two install forms determine the prefix on **both** the slash command and every agent name. The two MUST stay in sync — one form per output, never mixed:
|
|
48
|
+
|
|
49
|
+
Let `<claude-home>` denote the Claude Code home directory: `~/.claude` on macOS/Linux, `%USERPROFILE%\.claude` on Windows. Resolve it the way the host platform resolves the user home directory (do not hardcode `~`).
|
|
50
|
+
|
|
51
|
+
| Form | Detection | `{ORCH_CMD}` | Agent name format |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| Legacy bare install | Above absent; agent files under `<claude-home>/agents/` | `/orchestrate` | `<name>` |
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## Available agent catalogue (must pick from these)
|
|
57
|
+
|
|
58
|
+
General:
|
|
59
|
+
- `planner` — requirement restatement, risk decomposition, step planning
|
|
60
|
+
- `architect` — architecture, system design, refactor proposals
|
|
61
|
+
- `tdd-guide` — write tests → implement → 80%+ coverage
|
|
62
|
+
- `code-reviewer` — generic code review
|
|
63
|
+
- `security-reviewer` — security audit, OWASP, secret leakage
|
|
64
|
+
- `refactor-cleaner` — dead code, duplicates, knip-class cleanup
|
|
65
|
+
- `doc-updater` — documentation, codemap, README
|
|
66
|
+
- `docs-lookup` — third-party library API lookups (Context7)
|
|
67
|
+
- `e2e-runner` — end-to-end test orchestration
|
|
68
|
+
- `database-reviewer` — PostgreSQL schema, migration, performance
|
|
69
|
+
- `harness-optimizer` — local agent harness configuration
|
|
70
|
+
- `loop-operator` — long-running autonomous loops
|
|
71
|
+
- `chief-of-staff` — multi-channel triage (rarely a fit for plan steps)
|
|
72
|
+
|
|
73
|
+
Build error resolvers:
|
|
74
|
+
- `build-error-resolver` (generic) / `cpp-build-resolver` / `go-build-resolver` / `java-build-resolver` / `kotlin-build-resolver` / `rust-build-resolver` / `pytorch-build-resolver`
|
|
75
|
+
|
|
76
|
+
Code reviewers:
|
|
77
|
+
- `python-reviewer` / `typescript-reviewer` / `go-reviewer` / `rust-reviewer` / `cpp-reviewer` / `java-reviewer` / `kotlin-reviewer` / `flutter-reviewer`
|
|
78
|
+
|
|
79
|
+
A misspelled agent name fails `/orchestrate`. Cross-check against this list before emitting.
|
|
80
|
+
|
|
81
|
+
## How It Works
|
|
82
|
+
|
|
83
|
+
### Phase 0 — Detect the toolset mode + language
|
|
84
|
+
|
|
85
|
+
1. Read `<plan-doc-path>`. If missing or empty, report and stop.
|
|
86
|
+
2. Detect the toolset install form once and freeze it into `SKILLFORGE_MODE`. Algorithm (run in order, stop at the first match):
|
|
87
|
+
2. Else if `<claude-home>/agents/` exists and contains at least one the toolset agent file (e.g. `tdd-guide.md`, `code-reviewer.md`) → `SKILLFORGE_MODE=legacy`.
|
|
88
|
+
3. Else → default to `SKILLFORGE_MODE=legacy` and emit a one-line warning at the top of the output: `> Warning: could not detect the toolset install; defaulting to legacy form. If you use the plugin install, edit the prefixes manually.`
|
|
89
|
+
4. If both markers exist (mixed install), `plugin` wins — the plugin namespace is the only one that resolves agent names without fuzzy matching.
|
|
90
|
+
|
|
91
|
+
From this point on, every emitted line uses the matching prefix on **both** the slash command and every agent name. **Never emit both forms in the same output.**
|
|
92
|
+
3. Resolve `--lang`. When `auto`, run a polyglot-aware detection:
|
|
93
|
+
- Probe markers: `pyproject.toml` / `uv.lock` / `requirements.txt` → python; `package.json` → typescript; `go.mod` → go; `Cargo.toml` → rust; `CMakeLists.txt` or top-level `*.cpp` → cpp; `pom.xml` / `build.gradle` (Java) → java; `build.gradle.kts` or top-level Kotlin → kotlin; `pubspec.yaml` → flutter.
|
|
94
|
+
- **Polyglot tie-break**: if more than one marker matches, pick the language whose source files outnumber the others (count via `git ls-files`, excluding `vendor/`, `node_modules/`, `dist/`, `build/`, `.venv/`, generated files, and obvious test fixtures). On a tie or when no language exceeds 60% of source files, set `lang=unknown`.
|
|
95
|
+
- No marker matched → set `lang=unknown`.
|
|
96
|
+
- `lang=unknown` is a sentinel — it is **not** an agent name. Phase 2 rules 4 and 5 turn it into `code-reviewer` / `build-error-resolver` at chain composition time.
|
|
97
|
+
4. Detect a **PyTorch sub-profile**: when `lang=python` and any of `pyproject.toml` / `requirements.txt` / `uv.lock` declares a dependency on `torch`, set `pytorch=true`. This only affects `build` chain selection (Phase 2 rule below); the reviewer remains `python-reviewer`.
|
|
98
|
+
|
|
99
|
+
### Phase 1 — Decompose steps
|
|
100
|
+
|
|
101
|
+
Identify "step units" in priority order:
|
|
102
|
+
|
|
103
|
+
1. Explicit numbering: `## Step N` / `### Phase N` / `## N. ...` / top-level ordered list.
|
|
104
|
+
2. A "Step" column in a table.
|
|
105
|
+
3. `---`-separated blocks with verb-led headings.
|
|
106
|
+
4. Otherwise treat each H2 as one step.
|
|
107
|
+
|
|
108
|
+
Per step extract `id` (1-based), `title` (≤ 80 chars), `intent` (1–3 sentences), `tags`.
|
|
109
|
+
|
|
110
|
+
### Phase 2 — Tag and pick chain
|
|
111
|
+
|
|
112
|
+
Tag by intent (multi-tag allowed; chain built from primary + stacked secondaries):
|
|
113
|
+
|
|
114
|
+
Trigger words below are matched case-insensitively. Multilingual plans are supported by matching the word stems in any language as long as the meaning aligns with the listed English trigger words.
|
|
115
|
+
|
|
116
|
+
| Tag | Trigger words | Default chain |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| `design` | architecture, design, choose, evaluate, RFC | `planner,architect` |
|
|
119
|
+
| `plan` | plan, breakdown, milestone | `planner` |
|
|
120
|
+
| `impl` | implement, build, add, create, port | `tdd-guide,<lang>-reviewer` |
|
|
121
|
+
| `test` | test, coverage, e2e, integration | `tdd-guide,e2e-runner` |
|
|
122
|
+
| `refactor` | refactor, cleanup, dedupe, split | `architect,refactor-cleaner,<lang>-reviewer` |
|
|
123
|
+
| `migration` | migrate, upgrade, rewrite, port | `architect,tdd-guide,<lang>-reviewer` |
|
|
124
|
+
| `db` | schema, migration, index, SQL, Postgres, alembic, sqlmodel | `database-reviewer,<lang>-reviewer` |
|
|
125
|
+
| `security` | encrypt, auth, secret, OWASP, PII | `security-reviewer,<lang>-reviewer` |
|
|
126
|
+
| `build` | build, compile, lint failure, CI | `<lang>-build-resolver` (falls back to `build-error-resolver`) |
|
|
127
|
+
| `docs` | docs, readme, codemap, changelog | `doc-updater` |
|
|
128
|
+
| `lookup` | lookup, reference, API usage | `docs-lookup` |
|
|
129
|
+
| `review` | review, audit, verify | `<lang>-reviewer,code-reviewer` |
|
|
130
|
+
| `loop` | loop, autonomous, watchdog | `loop-operator` |
|
|
131
|
+
|
|
132
|
+
Chain composition rules:
|
|
133
|
+
1. **Primary tag selection**: when a step matches multiple tags, the **first one in table order** (top of the table = highest priority) is the primary; the rest are secondaries. Composition rules 2 and 3 below handle specific multi-tag combinations explicitly; otherwise, append secondary chains in tag table order.
|
|
134
|
+
2. `impl` + `security` → `tdd-guide,<lang>-reviewer,security-reviewer`.
|
|
135
|
+
3. `impl` + `db` → `tdd-guide,database-reviewer,<lang>-reviewer`.
|
|
136
|
+
4. **Deduplicate** the resulting chain (preserve first occurrence). E.g. `review` + `lang=unknown` would yield `code-reviewer,code-reviewer` after rule 5; deduplication collapses it to `code-reviewer`.
|
|
137
|
+
5. `<lang>-reviewer` resolves to `code-reviewer` when `lang=unknown`.
|
|
138
|
+
6. `<lang>-build-resolver` resolves to `build-error-resolver` when `lang=unknown`. **Special case**: if Phase 0 set `pytorch=true`, use `pytorch-build-resolver` for `build` chains regardless of `<lang>`. There is no `python-build-resolver`; `--lang=python` without `pytorch=true` resolves to `build-error-resolver`.
|
|
139
|
+
7. **Zero-tag steps**: if no trigger word matches, set chain to `code-reviewer` and write `no tag matched; default review-only chain` under "Chain rationale".
|
|
140
|
+
8. Chain length ≤ 4 after deduplication. If exceeded, drop weakest tag (`lookup` and `docs` first).
|
|
141
|
+
9. Do not pair `planner` and `architect` in an `impl` chain (token waste). Pair them only on `design` steps.
|
|
142
|
+
10. Steps tagged `impl`, `refactor`, or `migration` end with a **reviewer-class** agent — any of `<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`. The most domain-specific reviewer wins the tail position (e.g. rule 2's `impl+security` ends with `security-reviewer`; rule 3's `impl+db` ends with `<lang>-reviewer` because `database-reviewer` already gates the migration earlier in the chain). `test` and `build` steps are gated by their own validators (`e2e-runner` and the build resolver respectively) and do not require an additional reviewer.
|
|
143
|
+
|
|
144
|
+
### Phase 3 — Compress task description
|
|
145
|
+
|
|
146
|
+
Each emitted `<task description>` must:
|
|
147
|
+
- Be self-contained (the first agent does not need the plan document open).
|
|
148
|
+
- Start with `[Plan: <path>#step-<id>]`.
|
|
149
|
+
- Include 1–3 verifiable Acceptance criteria.
|
|
150
|
+
- Include a Scope guard (`Out of scope: ...`) **only if the plan declares one for this step**. Inherit verbatim. If the plan has no out-of-scope statement, omit the clause entirely — do not invent one.
|
|
151
|
+
- Be 200–600 characters; one line; embedded `"` escaped as `\"`; no literal newlines.
|
|
152
|
+
|
|
153
|
+
### Phase 4 — Output
|
|
154
|
+
|
|
155
|
+
Emit Markdown using **the form determined by `SKILLFORGE_MODE`**. The output uses one form throughout — every `{ORCH_CMD}` and every agent name is rendered with the matching prefix from Phase 0. **Do not emit both forms; do not include "this is plugin form" / "strip the prefix" instructions in the rendered output.**
|
|
156
|
+
|
|
157
|
+
Concrete rendering rules:
|
|
158
|
+
|
|
159
|
+
- The overview-table "Chain" column uses the same `{AGENT(name)}` rendering.
|
|
160
|
+
- Per-step bash blocks contain only the runnable command. **No `# plugin form` or `# legacy form` comments** — the form is implicit and uniform across the whole output.
|
|
161
|
+
|
|
162
|
+
Output structure:
|
|
163
|
+
|
|
164
|
+
````markdown
|
|
165
|
+
# Plan-Orchestrate Result
|
|
166
|
+
|
|
167
|
+
**Plan**: `<path>`
|
|
168
|
+
**Lang**: `<detected-or-given>`
|
|
169
|
+
**the toolset mode**: `<plugin | legacy>`
|
|
170
|
+
**Steps**: <N>
|
|
171
|
+
**Scope**: <all | step:n | range:a-b>
|
|
172
|
+
|
|
173
|
+
## Steps overview
|
|
174
|
+
|
|
175
|
+
| # | Title | Tags | Chain |
|
|
176
|
+
|---|---|---|---|
|
|
177
|
+
| 1 | ... | impl, db | `{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}` |
|
|
178
|
+
| ... | | | |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Step 1 — <title>
|
|
183
|
+
|
|
184
|
+
**Intent**: <1–3 sentences>
|
|
185
|
+
**Tags**: <a, b>
|
|
186
|
+
**Chain rationale**: <why this chain; which agent closes the loop>
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
{ORCH_CMD} custom "{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}" "[Plan: docs/foo.md#step-1] <compressed task description>; Acceptance: <1–3 items>; Out of scope: <…>"
|
|
190
|
+
```
|
|
191
|
+
````
|
|
192
|
+
|
|
193
|
+
> The `{ORCH_CMD}` and `{AGENT(...)}` notation above describes the substitution this skill performs at runtime. The actual emitted Markdown contains the resolved strings, never the placeholders.
|
|
194
|
+
|
|
195
|
+
Append a final "Batch execution" block aggregating every step's command in order so the user can paste them all at once. **Skip the Batch block in overview-only mode** (see "Large plan" edge case): when only the overview table is being emitted, there are no per-step commands to aggregate.
|
|
196
|
+
|
|
197
|
+
### Phase 5 — Self-check (run before emitting)
|
|
198
|
+
|
|
199
|
+
- [ ] Resolved `{ORCH_CMD}` and every resolved `{AGENT(...)}` use the **same** form (`plugin` or `legacy`) — never mixed in one output.
|
|
200
|
+
- [ ] No `# plugin form` / `# legacy form` annotations and no "strip the prefix" instructions remain in the rendered output.
|
|
201
|
+
- [ ] No invented `--mode` / `--gate` / `--agents=...` fields.
|
|
202
|
+
- [ ] Each task description is single-line, double-quoted, with embedded `"` escaped.
|
|
203
|
+
- [ ] Each task description begins with `[Plan: <path>#step-<id>]` and includes Acceptance (1–3 items). The `Out of scope:` clause is present only when inherited from the plan.
|
|
204
|
+
- [ ] No duplicate agent in any chain after Phase 2 dedup.
|
|
205
|
+
- [ ] Chain length ≤ 4.
|
|
206
|
+
- [ ] Steps tagged `impl`/`refactor`/`migration` end with a reviewer-class agent (`<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`). `test` and `build` are exempt — see Phase 2 rule 10.
|
|
207
|
+
- [ ] Zero-tag steps emit `code-reviewer` with the rationale `no tag matched; default review-only chain`.
|
|
208
|
+
- [ ] Overview table lists every step in the plan, regardless of `--scope`.
|
|
209
|
+
- [ ] Per-step detail block count matches the resolved `--scope` (full plan when `--scope=all`; one block for `step:n`; range size for `range:a-b`). In overview-only mode, no per-step blocks and no Batch block are emitted.
|
|
210
|
+
|
|
211
|
+
## Edge cases
|
|
212
|
+
|
|
213
|
+
- **No clear steps**: prefer H2/H3 splitting; if still ambiguous, report "no structured steps detected" with the document outline and ask the user to confirm running by outline.
|
|
214
|
+
- **Large plan (>1500 lines)**: enter **overview-only mode** — emit only the overview table and ask the user to narrow with `--scope` before re-running for details. In this mode, skip per-step detail blocks and skip the Batch execution block.
|
|
215
|
+
- **Step too broad** (e.g. "complete all backend work"): do not force a single chain. Suggest splitting into N.a and N.b and propose a split.
|
|
216
|
+
- **Polyglot project where `--lang=auto` cannot pick a winner**: set `lang=unknown`; reviewer resolves to `code-reviewer` and build resolver to `build-error-resolver`. Mention the fallback under "Chain rationale".
|
|
217
|
+
|
|
218
|
+
## Examples
|
|
219
|
+
|
|
220
|
+
### Example 1 — Plugin mode, Python plan
|
|
221
|
+
|
|
222
|
+
Input:
|
|
223
|
+
```
|
|
224
|
+
plan-orchestrate @docs/plan/example-feature.md --lang=python
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Excerpt of expected output:
|
|
228
|
+
````markdown
|
|
229
|
+
## Step 2 — Encrypt sensitive UserProfile fields
|
|
230
|
+
|
|
231
|
+
**Intent**: Introduce an `EncryptedString` SQLAlchemy type and AES-GCM encrypt `birth_datetime` / `location` before persistence; load the key from an environment variable.
|
|
232
|
+
**Tags**: impl, security, db
|
|
233
|
+
**Chain rationale**: Security-sensitive write path, so `security-reviewer` closes the chain; `database-reviewer` validates the alembic migration; `python-reviewer` covers typing and PEP 8.
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
```
|
|
237
|
+
````
|
|
238
|
+
|
|
239
|
+
### Example 2 — Legacy mode, same step
|
|
240
|
+
|
|
241
|
+
If `SKILLFORGE_MODE=legacy` were detected, the same step would be emitted as a single uniform command (no plugin-prefixed forms anywhere in the output):
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
/orchestrate custom "tdd-guide,database-reviewer,python-reviewer,security-reviewer" "[Plan: docs/plan/example-feature.md#step-2] ..."
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
The two examples above illustrate **the two possible outputs** for two different environments. A single skill invocation produces only one of them, end to end.
|
|
248
|
+
|
|
249
|
+
## Notes
|
|
250
|
+
|
|
251
|
+
- Generative only. Never invoke `/orchestrate` from inside this skill.
|
|
252
|
+
- Match the language of the plan document for task descriptions (agent names always remain English).
|
|
253
|
+
- Do not insert "Co-Authored-By" lines or emoji in the output unless the user explicitly asks.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plankton-code-quality
|
|
3
|
+
description: "Write-time code quality enforcement using Plankton — auto-formatting, linting, and Claude-powered fixes on every file edit via hooks."
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plankton Code Quality Skill
|
|
8
|
+
|
|
9
|
+
Integration reference for Plankton (credit: @alxfazio), a write-time code quality enforcement system for Claude Code. Plankton runs formatters and linters on every file edit via PostToolUse hooks, then spawns Claude subprocesses to fix violations the agent didn't catch.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- You want automatic formatting and linting on every file edit (not just at commit time)
|
|
14
|
+
- You need defense against agents modifying linter configs to pass instead of fixing code
|
|
15
|
+
- You want tiered model routing for fixes (Haiku for simple style, Sonnet for logic, Opus for types)
|
|
16
|
+
- You work with multiple languages (Python, TypeScript, Shell, YAML, JSON, TOML, Markdown, Dockerfile)
|
|
17
|
+
|
|
18
|
+
## How It Works
|
|
19
|
+
|
|
20
|
+
### Three-Phase Architecture
|
|
21
|
+
|
|
22
|
+
Every time Claude Code edits or writes a file, Plankton's `multi_linter.sh` PostToolUse hook runs:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Phase 1: Auto-Format (Silent)
|
|
26
|
+
├─ Runs formatters (ruff format, biome, shfmt, taplo, markdownlint)
|
|
27
|
+
├─ Fixes 40-50% of issues silently
|
|
28
|
+
└─ No output to main agent
|
|
29
|
+
|
|
30
|
+
Phase 2: Collect Violations (JSON)
|
|
31
|
+
├─ Runs linters and collects unfixable violations
|
|
32
|
+
├─ Returns structured JSON: {line, column, code, message, linter}
|
|
33
|
+
└─ Still no output to main agent
|
|
34
|
+
|
|
35
|
+
Phase 3: Delegate + Verify
|
|
36
|
+
├─ Spawns claude -p subprocess with violations JSON
|
|
37
|
+
├─ Routes to model tier based on violation complexity:
|
|
38
|
+
│ ├─ Haiku: formatting, imports, style (E/W/F codes) — 120s timeout
|
|
39
|
+
│ ├─ Sonnet: complexity, refactoring (C901, PLR codes) — 300s timeout
|
|
40
|
+
│ └─ Opus: type system, deep reasoning (unresolved-attribute) — 600s timeout
|
|
41
|
+
├─ Re-runs Phase 1+2 to verify fixes
|
|
42
|
+
└─ Exit 0 if clean, Exit 2 if violations remain (reported to main agent)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### What the Main Agent Sees
|
|
46
|
+
|
|
47
|
+
| Scenario | Agent sees | Hook exit |
|
|
48
|
+
|----------|-----------|-----------|
|
|
49
|
+
| No violations | Nothing | 0 |
|
|
50
|
+
| All fixed by subprocess | Nothing | 0 |
|
|
51
|
+
| Violations remain after subprocess | `[hook] N violation(s) remain` | 2 |
|
|
52
|
+
| Advisory (duplicates, old tooling) | `[hook:advisory] ...` | 0 |
|
|
53
|
+
|
|
54
|
+
The main agent only sees issues the subprocess couldn't fix. Most quality problems are resolved transparently.
|
|
55
|
+
|
|
56
|
+
### Config Protection (Defense Against Rule-Gaming)
|
|
57
|
+
|
|
58
|
+
LLMs will modify `.ruff.toml` or `biome.json` to disable rules rather than fix code. Plankton blocks this with three layers:
|
|
59
|
+
|
|
60
|
+
1. **PreToolUse hook** — `protect_linter_configs.sh` blocks edits to all linter configs before they happen
|
|
61
|
+
2. **Stop hook** — `stop_config_guardian.sh` detects config changes via `git diff` at session end
|
|
62
|
+
3. **Protected files list** — `.ruff.toml`, `biome.json`, `.shellcheckrc`, `.yamllint`, `.hadolint.yaml`, and more
|
|
63
|
+
|
|
64
|
+
### Package Manager Enforcement
|
|
65
|
+
|
|
66
|
+
A PreToolUse hook on Bash blocks legacy package managers:
|
|
67
|
+
- `pip`, `pip3`, `poetry`, `pipenv` → Blocked (use `uv`)
|
|
68
|
+
- `npm`, `yarn`, `pnpm` → Blocked (use `bun`)
|
|
69
|
+
- Allowed exceptions: `npm audit`, `npm view`, `npm publish`
|
|
70
|
+
|
|
71
|
+
## Setup
|
|
72
|
+
|
|
73
|
+
### Quick Start
|
|
74
|
+
|
|
75
|
+
> **Note:** Plankton requires manual installation from its repository. Review the code before installing.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Install core dependencies
|
|
79
|
+
brew install jaq ruff uv
|
|
80
|
+
|
|
81
|
+
# Install Python linters
|
|
82
|
+
uv sync --all-extras
|
|
83
|
+
|
|
84
|
+
# Start Claude Code — hooks activate automatically
|
|
85
|
+
claude
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
No install command, no plugin config. The hooks in `.claude/settings.json` are picked up automatically when you run Claude Code in the Plankton directory.
|
|
89
|
+
|
|
90
|
+
### Per-Project Integration
|
|
91
|
+
|
|
92
|
+
To use Plankton hooks in your own project:
|
|
93
|
+
|
|
94
|
+
1. Copy `.claude/hooks/` directory to your project
|
|
95
|
+
2. Copy `.claude/settings.json` hook configuration
|
|
96
|
+
3. Copy linter config files (`.ruff.toml`, `biome.json`, etc.)
|
|
97
|
+
4. Install the linters for your languages
|
|
98
|
+
|
|
99
|
+
### Language-Specific Dependencies
|
|
100
|
+
|
|
101
|
+
| Language | Required | Optional |
|
|
102
|
+
|----------|----------|----------|
|
|
103
|
+
| Python | `ruff`, `uv` | `ty` (types), `vulture` (dead code), `bandit` (security) |
|
|
104
|
+
| TypeScript/JS | `biome` | `oxlint`, `semgrep`, `knip` (dead exports) |
|
|
105
|
+
| Shell | `shellcheck`, `shfmt` | — |
|
|
106
|
+
| YAML | `yamllint` | — |
|
|
107
|
+
| Markdown | `markdownlint-cli2` | — |
|
|
108
|
+
| Dockerfile | `hadolint` (>= 2.12.0) | — |
|
|
109
|
+
| TOML | `taplo` | — |
|
|
110
|
+
| JSON | `jaq` | — |
|
|
111
|
+
|
|
112
|
+
## Pairing with the toolset
|
|
113
|
+
|
|
114
|
+
### Complementary, Not Overlapping
|
|
115
|
+
|
|
116
|
+
| Concern | the toolset | Plankton |
|
|
117
|
+
|---------|-----|----------|
|
|
118
|
+
| Code quality enforcement | PostToolUse hooks (Prettier, tsc) | PostToolUse hooks (20+ linters + subprocess fixes) |
|
|
119
|
+
| Security scanning | the security scanner, security-reviewer agent | Bandit (Python), Semgrep (TypeScript) |
|
|
120
|
+
| Config protection | — | PreToolUse blocks + Stop hook detection |
|
|
121
|
+
| Package manager | Detection + setup | Enforcement (blocks legacy PMs) |
|
|
122
|
+
| CI integration | — | Pre-commit hooks for git |
|
|
123
|
+
| Model routing | Manual (`/model opus`) | Automatic (violation complexity → tier) |
|
|
124
|
+
|
|
125
|
+
### Recommended Combination
|
|
126
|
+
|
|
127
|
+
1. Install the toolset as your plugin (agents, skills, commands, rules)
|
|
128
|
+
2. Add Plankton hooks for write-time quality enforcement
|
|
129
|
+
3. Use the security scanner for security audits
|
|
130
|
+
4. Use the toolset's verification-loop as a final gate before PRs
|
|
131
|
+
|
|
132
|
+
### Avoiding Hook Conflicts
|
|
133
|
+
|
|
134
|
+
If running both the toolset and Plankton hooks:
|
|
135
|
+
- the toolset's Prettier hook and Plankton's biome formatter may conflict on JS/TS files
|
|
136
|
+
- Resolution: disable the toolset's Prettier PostToolUse hook when using Plankton (Plankton's biome is more comprehensive)
|
|
137
|
+
- Both can coexist on different file types (the toolset handles what Plankton doesn't cover)
|
|
138
|
+
|
|
139
|
+
## Configuration Reference
|
|
140
|
+
|
|
141
|
+
Plankton's `.claude/hooks/config.json` controls all behavior:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"languages": {
|
|
146
|
+
"python": true,
|
|
147
|
+
"shell": true,
|
|
148
|
+
"yaml": true,
|
|
149
|
+
"json": true,
|
|
150
|
+
"toml": true,
|
|
151
|
+
"dockerfile": true,
|
|
152
|
+
"markdown": true,
|
|
153
|
+
"typescript": {
|
|
154
|
+
"enabled": true,
|
|
155
|
+
"js_runtime": "auto",
|
|
156
|
+
"biome_nursery": "warn",
|
|
157
|
+
"semgrep": true
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"phases": {
|
|
161
|
+
"auto_format": true,
|
|
162
|
+
"subprocess_delegation": true
|
|
163
|
+
},
|
|
164
|
+
"subprocess": {
|
|
165
|
+
"tiers": {
|
|
166
|
+
"haiku": { "timeout": 120, "max_turns": 10 },
|
|
167
|
+
"sonnet": { "timeout": 300, "max_turns": 10 },
|
|
168
|
+
"opus": { "timeout": 600, "max_turns": 15 }
|
|
169
|
+
},
|
|
170
|
+
"volume_threshold": 5
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Key settings:**
|
|
176
|
+
- Disable languages you don't use to speed up hooks
|
|
177
|
+
- `volume_threshold` — violations > this count auto-escalate to a higher model tier
|
|
178
|
+
- `subprocess_delegation: false` — skip Phase 3 entirely (just report violations)
|
|
179
|
+
|
|
180
|
+
## Environment Overrides
|
|
181
|
+
|
|
182
|
+
| Variable | Purpose |
|
|
183
|
+
|----------|---------|
|
|
184
|
+
| `HOOK_SKIP_SUBPROCESS=1` | Skip Phase 3, report violations directly |
|
|
185
|
+
| `HOOK_SUBPROCESS_TIMEOUT=N` | Override tier timeout |
|
|
186
|
+
| `HOOK_DEBUG_MODEL=1` | Log model selection decisions |
|
|
187
|
+
| `HOOK_SKIP_PM=1` | Bypass package manager enforcement |
|
|
188
|
+
|
|
189
|
+
## References
|
|
190
|
+
|
|
191
|
+
- Plankton (credit: @alxfazio)
|
|
192
|
+
- Plankton REFERENCE.md — Full architecture documentation (credit: @alxfazio)
|
|
193
|
+
- Plankton SETUP.md — Detailed installation guide (credit: @alxfazio)
|
|
194
|
+
|
|
195
|
+
## the toolset v1.8 Additions
|
|
196
|
+
|
|
197
|
+
### Copyable Hook Profile
|
|
198
|
+
|
|
199
|
+
Set strict quality behavior:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
export SKILLFORGE_HOOK_PROFILE=strict
|
|
203
|
+
export SKILLFORGE_QUALITY_GATE_FIX=true
|
|
204
|
+
export SKILLFORGE_QUALITY_GATE_STRICT=true
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Language Gate Table
|
|
208
|
+
|
|
209
|
+
- TypeScript/JavaScript: Biome preferred, Prettier fallback
|
|
210
|
+
- Python: Ruff format/check
|
|
211
|
+
- Go: gofmt
|
|
212
|
+
|
|
213
|
+
### Config Tamper Guard
|
|
214
|
+
|
|
215
|
+
During quality enforcement, flag changes to config files in same iteration:
|
|
216
|
+
|
|
217
|
+
- `biome.json`, `.eslintrc*`, `prettier.config*`, `tsconfig.json`, `pyproject.toml`
|
|
218
|
+
|
|
219
|
+
If config is changed to suppress violations, require explicit review before merge.
|
|
220
|
+
|
|
221
|
+
### CI Integration Pattern
|
|
222
|
+
|
|
223
|
+
Use the same commands in CI as local hooks:
|
|
224
|
+
|
|
225
|
+
1. run formatter checks
|
|
226
|
+
2. run lint/type checks
|
|
227
|
+
3. fail fast on strict mode
|
|
228
|
+
4. publish remediation summary
|
|
229
|
+
|
|
230
|
+
### Health Metrics
|
|
231
|
+
|
|
232
|
+
Track:
|
|
233
|
+
- edits flagged by gates
|
|
234
|
+
- average remediation time
|
|
235
|
+
- repeat violations by category
|
|
236
|
+
- merge blocks due to gate failures
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: postgres-patterns
|
|
3
|
+
description: PostgreSQL database patterns for query optimization, schema design, indexing, and security. Based on Supabase best practices.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PostgreSQL Patterns
|
|
7
|
+
|
|
8
|
+
Quick reference for PostgreSQL best practices. For detailed guidance, use the `database-reviewer` agent.
|
|
9
|
+
|
|
10
|
+
## When to Activate
|
|
11
|
+
|
|
12
|
+
- Writing SQL queries or migrations
|
|
13
|
+
- Designing database schemas
|
|
14
|
+
- Troubleshooting slow queries
|
|
15
|
+
- Implementing Row Level Security
|
|
16
|
+
- Setting up connection pooling
|
|
17
|
+
|
|
18
|
+
## Quick Reference
|
|
19
|
+
|
|
20
|
+
### Index Cheat Sheet
|
|
21
|
+
|
|
22
|
+
| Query Pattern | Index Type | Example |
|
|
23
|
+
|--------------|------------|---------|
|
|
24
|
+
| `WHERE col = value` | B-tree (default) | `CREATE INDEX idx ON t (col)` |
|
|
25
|
+
| `WHERE col > value` | B-tree | `CREATE INDEX idx ON t (col)` |
|
|
26
|
+
| `WHERE a = x AND b > y` | Composite | `CREATE INDEX idx ON t (a, b)` |
|
|
27
|
+
| `WHERE jsonb @> '{}'` | GIN | `CREATE INDEX idx ON t USING gin (col)` |
|
|
28
|
+
| `WHERE tsv @@ query` | GIN | `CREATE INDEX idx ON t USING gin (col)` |
|
|
29
|
+
| Time-series ranges | BRIN | `CREATE INDEX idx ON t USING brin (col)` |
|
|
30
|
+
|
|
31
|
+
### Data Type Quick Reference
|
|
32
|
+
|
|
33
|
+
| Use Case | Correct Type | Avoid |
|
|
34
|
+
|----------|-------------|-------|
|
|
35
|
+
| IDs | `bigint` | `int`, random UUID |
|
|
36
|
+
| Strings | `text` | `varchar(255)` |
|
|
37
|
+
| Timestamps | `timestamptz` | `timestamp` |
|
|
38
|
+
| Money | `numeric(10,2)` | `float` |
|
|
39
|
+
| Flags | `boolean` | `varchar`, `int` |
|
|
40
|
+
|
|
41
|
+
### Common Patterns
|
|
42
|
+
|
|
43
|
+
**Composite Index Order:**
|
|
44
|
+
```sql
|
|
45
|
+
-- Equality columns first, then range columns
|
|
46
|
+
CREATE INDEX idx ON orders (status, created_at);
|
|
47
|
+
-- Works for: WHERE status = 'pending' AND created_at > '2024-01-01'
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Covering Index:**
|
|
51
|
+
```sql
|
|
52
|
+
CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
|
|
53
|
+
-- Avoids table lookup for SELECT email, name, created_at
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Partial Index:**
|
|
57
|
+
```sql
|
|
58
|
+
CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
|
|
59
|
+
-- Smaller index, only includes active users
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**RLS Policy (Optimized):**
|
|
63
|
+
```sql
|
|
64
|
+
CREATE POLICY policy ON orders
|
|
65
|
+
USING ((SELECT auth.uid()) = user_id); -- Wrap in SELECT!
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**UPSERT:**
|
|
69
|
+
```sql
|
|
70
|
+
INSERT INTO settings (user_id, key, value)
|
|
71
|
+
VALUES (123, 'theme', 'dark')
|
|
72
|
+
ON CONFLICT (user_id, key)
|
|
73
|
+
DO UPDATE SET value = EXCLUDED.value;
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Cursor Pagination:**
|
|
77
|
+
```sql
|
|
78
|
+
SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
|
|
79
|
+
-- O(1) vs OFFSET which is O(n)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Queue Processing:**
|
|
83
|
+
```sql
|
|
84
|
+
UPDATE jobs SET status = 'processing'
|
|
85
|
+
WHERE id = (
|
|
86
|
+
SELECT id FROM jobs WHERE status = 'pending'
|
|
87
|
+
ORDER BY created_at LIMIT 1
|
|
88
|
+
FOR UPDATE SKIP LOCKED
|
|
89
|
+
) RETURNING *;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Anti-Pattern Detection
|
|
93
|
+
|
|
94
|
+
```sql
|
|
95
|
+
-- Find unindexed foreign keys
|
|
96
|
+
SELECT conrelid::regclass, a.attname
|
|
97
|
+
FROM pg_constraint c
|
|
98
|
+
JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
|
|
99
|
+
WHERE c.contype = 'f'
|
|
100
|
+
AND NOT EXISTS (
|
|
101
|
+
SELECT 1 FROM pg_index i
|
|
102
|
+
WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
-- Find slow queries
|
|
106
|
+
SELECT query, mean_exec_time, calls
|
|
107
|
+
FROM pg_stat_statements
|
|
108
|
+
WHERE mean_exec_time > 100
|
|
109
|
+
ORDER BY mean_exec_time DESC;
|
|
110
|
+
|
|
111
|
+
-- Check table bloat
|
|
112
|
+
SELECT relname, n_dead_tup, last_vacuum
|
|
113
|
+
FROM pg_stat_user_tables
|
|
114
|
+
WHERE n_dead_tup > 1000
|
|
115
|
+
ORDER BY n_dead_tup DESC;
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Configuration Template
|
|
119
|
+
|
|
120
|
+
```sql
|
|
121
|
+
-- Connection limits (adjust for RAM)
|
|
122
|
+
ALTER SYSTEM SET max_connections = 100;
|
|
123
|
+
ALTER SYSTEM SET work_mem = '8MB';
|
|
124
|
+
|
|
125
|
+
-- Timeouts
|
|
126
|
+
ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
|
|
127
|
+
ALTER SYSTEM SET statement_timeout = '30s';
|
|
128
|
+
|
|
129
|
+
-- Monitoring
|
|
130
|
+
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
|
|
131
|
+
|
|
132
|
+
-- Security defaults
|
|
133
|
+
REVOKE ALL ON SCHEMA public FROM public;
|
|
134
|
+
|
|
135
|
+
SELECT pg_reload_conf();
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Related
|
|
139
|
+
|
|
140
|
+
- Agent: `database-reviewer` - Full database review workflow
|
|
141
|
+
- Skill: `clickhouse-io` - ClickHouse analytics patterns
|
|
142
|
+
- Skill: `backend-patterns` - API and backend patterns
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
*Based on Supabase Agent Skills (credit: Supabase team) (MIT License)*
|