claudecode-omc 5.5.2 → 5.6.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/.local/skills/de-ai-writing/SKILL.md +243 -0
- package/.local/skills/de-ai-writing/references/chinese-patterns.md +152 -0
- package/.local/skills/de-ai-writing/references/chinese-signals.md +121 -0
- package/.local/skills/de-ai-writing/references/domain-playbooks.md +120 -0
- package/.local/skills/de-ai-writing/references/wikipedia-signs.md +196 -0
- package/README.md +102 -10
- package/bundled/manifest.json +3 -2
- package/bundled/upstream/ecc/.omc-source/bundle.json +23 -0
- package/bundled/upstream/ecc/.omc-source/last-plan-apply.json +439 -0
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +47 -0
- package/bundled/upstream/ecc/agents/a11y-architect.md +141 -0
- package/bundled/upstream/ecc/agents/architect.md +211 -0
- package/bundled/upstream/ecc/agents/build-error-resolver.md +114 -0
- package/bundled/upstream/ecc/agents/chief-of-staff.md +151 -0
- package/bundled/upstream/ecc/agents/code-architect.md +71 -0
- package/bundled/upstream/ecc/agents/code-explorer.md +69 -0
- package/bundled/upstream/ecc/agents/code-reviewer.md +237 -0
- package/bundled/upstream/ecc/agents/code-simplifier.md +47 -0
- package/bundled/upstream/ecc/agents/comment-analyzer.md +45 -0
- package/bundled/upstream/ecc/agents/conversation-analyzer.md +52 -0
- package/bundled/upstream/ecc/agents/cpp-build-resolver.md +90 -0
- package/bundled/upstream/ecc/agents/cpp-reviewer.md +72 -0
- package/bundled/upstream/ecc/agents/csharp-reviewer.md +101 -0
- package/bundled/upstream/ecc/agents/dart-build-resolver.md +201 -0
- package/bundled/upstream/ecc/agents/database-reviewer.md +91 -0
- package/bundled/upstream/ecc/agents/doc-updater.md +107 -0
- package/bundled/upstream/ecc/agents/docs-lookup.md +68 -0
- package/bundled/upstream/ecc/agents/e2e-runner.md +107 -0
- package/bundled/upstream/ecc/agents/flutter-reviewer.md +243 -0
- package/bundled/upstream/ecc/agents/gan-evaluator.md +209 -0
- package/bundled/upstream/ecc/agents/gan-generator.md +131 -0
- package/bundled/upstream/ecc/agents/gan-planner.md +99 -0
- package/bundled/upstream/ecc/agents/go-build-resolver.md +94 -0
- package/bundled/upstream/ecc/agents/go-reviewer.md +76 -0
- package/bundled/upstream/ecc/agents/harness-optimizer.md +35 -0
- package/bundled/upstream/ecc/agents/healthcare-reviewer.md +83 -0
- package/bundled/upstream/ecc/agents/java-build-resolver.md +153 -0
- package/bundled/upstream/ecc/agents/java-reviewer.md +92 -0
- package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +118 -0
- package/bundled/upstream/ecc/agents/kotlin-reviewer.md +159 -0
- package/bundled/upstream/ecc/agents/loop-operator.md +36 -0
- package/bundled/upstream/ecc/agents/opensource-forker.md +198 -0
- package/bundled/upstream/ecc/agents/opensource-packager.md +249 -0
- package/bundled/upstream/ecc/agents/opensource-sanitizer.md +188 -0
- package/bundled/upstream/ecc/agents/performance-optimizer.md +446 -0
- package/bundled/upstream/ecc/agents/planner.md +212 -0
- package/bundled/upstream/ecc/agents/pr-test-analyzer.md +45 -0
- package/bundled/upstream/ecc/agents/python-reviewer.md +98 -0
- package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +120 -0
- package/bundled/upstream/ecc/agents/refactor-cleaner.md +85 -0
- package/bundled/upstream/ecc/agents/rust-build-resolver.md +148 -0
- package/bundled/upstream/ecc/agents/rust-reviewer.md +94 -0
- package/bundled/upstream/ecc/agents/security-reviewer.md +108 -0
- package/bundled/upstream/ecc/agents/seo-specialist.md +62 -0
- package/bundled/upstream/ecc/agents/silent-failure-hunter.md +50 -0
- package/bundled/upstream/ecc/agents/tdd-guide.md +91 -0
- package/bundled/upstream/ecc/agents/type-design-analyzer.md +41 -0
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +112 -0
- package/bundled/upstream/ecc/commands/agent-sort.md +23 -0
- package/bundled/upstream/ecc/commands/aside.md +164 -0
- package/bundled/upstream/ecc/commands/build-fix.md +62 -0
- package/bundled/upstream/ecc/commands/checkpoint.md +74 -0
- package/bundled/upstream/ecc/commands/claw.md +23 -0
- package/bundled/upstream/ecc/commands/code-review.md +289 -0
- package/bundled/upstream/ecc/commands/context-budget.md +23 -0
- package/bundled/upstream/ecc/commands/cpp-build.md +173 -0
- package/bundled/upstream/ecc/commands/cpp-review.md +132 -0
- package/bundled/upstream/ecc/commands/cpp-test.md +251 -0
- package/bundled/upstream/ecc/commands/devfleet.md +23 -0
- package/bundled/upstream/ecc/commands/docs.md +23 -0
- package/bundled/upstream/ecc/commands/e2e.md +268 -0
- package/bundled/upstream/ecc/commands/eval.md +23 -0
- package/bundled/upstream/ecc/commands/evolve.md +178 -0
- package/bundled/upstream/ecc/commands/feature-dev.md +49 -0
- package/bundled/upstream/ecc/commands/flutter-build.md +164 -0
- package/bundled/upstream/ecc/commands/flutter-review.md +116 -0
- package/bundled/upstream/ecc/commands/flutter-test.md +144 -0
- package/bundled/upstream/ecc/commands/gan-build.md +99 -0
- package/bundled/upstream/ecc/commands/gan-design.md +35 -0
- package/bundled/upstream/ecc/commands/go-build.md +183 -0
- package/bundled/upstream/ecc/commands/go-review.md +148 -0
- package/bundled/upstream/ecc/commands/go-test.md +268 -0
- package/bundled/upstream/ecc/commands/gradle-build.md +70 -0
- package/bundled/upstream/ecc/commands/harness-audit.md +73 -0
- package/bundled/upstream/ecc/commands/hookify-configure.md +14 -0
- package/bundled/upstream/ecc/commands/hookify-help.md +46 -0
- package/bundled/upstream/ecc/commands/hookify-list.md +21 -0
- package/bundled/upstream/ecc/commands/hookify.md +50 -0
- package/bundled/upstream/ecc/commands/instinct-export.md +66 -0
- package/bundled/upstream/ecc/commands/instinct-import.md +114 -0
- package/bundled/upstream/ecc/commands/instinct-status.md +59 -0
- package/bundled/upstream/ecc/commands/jira.md +106 -0
- package/bundled/upstream/ecc/commands/kotlin-build.md +174 -0
- package/bundled/upstream/ecc/commands/kotlin-review.md +140 -0
- package/bundled/upstream/ecc/commands/kotlin-test.md +312 -0
- package/bundled/upstream/ecc/commands/learn-eval.md +116 -0
- package/bundled/upstream/ecc/commands/learn.md +70 -0
- package/bundled/upstream/ecc/commands/loop-start.md +32 -0
- package/bundled/upstream/ecc/commands/loop-status.md +24 -0
- package/bundled/upstream/ecc/commands/model-route.md +26 -0
- package/bundled/upstream/ecc/commands/multi-backend.md +158 -0
- package/bundled/upstream/ecc/commands/multi-execute.md +315 -0
- package/bundled/upstream/ecc/commands/multi-frontend.md +158 -0
- package/bundled/upstream/ecc/commands/multi-plan.md +268 -0
- package/bundled/upstream/ecc/commands/multi-workflow.md +191 -0
- package/bundled/upstream/ecc/commands/orchestrate.md +135 -0
- package/bundled/upstream/ecc/commands/plan.md +117 -0
- package/bundled/upstream/ecc/commands/pm2.md +272 -0
- package/bundled/upstream/ecc/commands/projects.md +39 -0
- package/bundled/upstream/ecc/commands/promote.md +41 -0
- package/bundled/upstream/ecc/commands/prompt-optimize.md +23 -0
- package/bundled/upstream/ecc/commands/prp-commit.md +112 -0
- package/bundled/upstream/ecc/commands/prp-implement.md +385 -0
- package/bundled/upstream/ecc/commands/prp-plan.md +502 -0
- package/bundled/upstream/ecc/commands/prp-pr.md +184 -0
- package/bundled/upstream/ecc/commands/prp-prd.md +447 -0
- package/bundled/upstream/ecc/commands/prune.md +31 -0
- package/bundled/upstream/ecc/commands/python-review.md +297 -0
- package/bundled/upstream/ecc/commands/quality-gate.md +29 -0
- package/bundled/upstream/ecc/commands/refactor-clean.md +80 -0
- package/bundled/upstream/ecc/commands/resume-session.md +156 -0
- package/bundled/upstream/ecc/commands/review-pr.md +37 -0
- package/bundled/upstream/ecc/commands/rules-distill.md +20 -0
- package/bundled/upstream/ecc/commands/rust-build.md +187 -0
- package/bundled/upstream/ecc/commands/rust-review.md +142 -0
- package/bundled/upstream/ecc/commands/rust-test.md +308 -0
- package/bundled/upstream/ecc/commands/santa-loop.md +175 -0
- package/bundled/upstream/ecc/commands/save-session.md +275 -0
- package/bundled/upstream/ecc/commands/sessions.md +339 -0
- package/bundled/upstream/ecc/commands/setup-pm.md +80 -0
- package/bundled/upstream/ecc/commands/skill-create.md +174 -0
- package/bundled/upstream/ecc/commands/skill-health.md +54 -0
- package/bundled/upstream/ecc/commands/tdd.md +231 -0
- package/bundled/upstream/ecc/commands/test-coverage.md +69 -0
- package/bundled/upstream/ecc/commands/update-codemaps.md +72 -0
- package/bundled/upstream/ecc/commands/update-docs.md +84 -0
- package/bundled/upstream/ecc/commands/verify.md +23 -0
- package/bundled/upstream/ecc/hooks/README.md +237 -0
- package/bundled/upstream/ecc/hooks/hooks.json +330 -0
- package/bundled/upstream/ecc/skills/accessibility/SKILL.md +146 -0
- package/bundled/upstream/ecc/skills/agent-eval/SKILL.md +145 -0
- package/bundled/upstream/ecc/skills/agent-harness-construction/SKILL.md +73 -0
- package/bundled/upstream/ecc/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +178 -0
- package/bundled/upstream/ecc/skills/agent-sort/SKILL.md +215 -0
- package/bundled/upstream/ecc/skills/agentic-engineering/SKILL.md +63 -0
- package/bundled/upstream/ecc/skills/ai-first-engineering/SKILL.md +51 -0
- package/bundled/upstream/ecc/skills/ai-regression-testing/SKILL.md +385 -0
- package/bundled/upstream/ecc/skills/android-clean-architecture/SKILL.md +339 -0
- package/bundled/upstream/ecc/skills/api-connector-builder/SKILL.md +120 -0
- package/bundled/upstream/ecc/skills/api-design/SKILL.md +523 -0
- package/bundled/upstream/ecc/skills/architecture-decision-records/SKILL.md +179 -0
- package/bundled/upstream/ecc/skills/article-writing/SKILL.md +79 -0
- package/bundled/upstream/ecc/skills/automation-audit-ops/SKILL.md +142 -0
- package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/bundled/upstream/ecc/skills/autonomous-loops/SKILL.md +610 -0
- package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +598 -0
- package/bundled/upstream/ecc/skills/benchmark/SKILL.md +93 -0
- package/bundled/upstream/ecc/skills/blueprint/SKILL.md +105 -0
- package/bundled/upstream/ecc/skills/brand-voice/SKILL.md +97 -0
- package/bundled/upstream/ecc/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/bundled/upstream/ecc/skills/browser-qa/SKILL.md +87 -0
- package/bundled/upstream/ecc/skills/bun-runtime/SKILL.md +84 -0
- package/bundled/upstream/ecc/skills/canary-watch/SKILL.md +99 -0
- package/bundled/upstream/ecc/skills/carrier-relationship-management/SKILL.md +212 -0
- package/bundled/upstream/ecc/skills/ck/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/ck/commands/forget.mjs +44 -0
- package/bundled/upstream/ecc/skills/ck/commands/info.mjs +24 -0
- package/bundled/upstream/ecc/skills/ck/commands/init.mjs +143 -0
- package/bundled/upstream/ecc/skills/ck/commands/list.mjs +40 -0
- package/bundled/upstream/ecc/skills/ck/commands/migrate.mjs +202 -0
- package/bundled/upstream/ecc/skills/ck/commands/resume.mjs +36 -0
- package/bundled/upstream/ecc/skills/ck/commands/save.mjs +210 -0
- package/bundled/upstream/ecc/skills/ck/commands/shared.mjs +387 -0
- package/bundled/upstream/ecc/skills/ck/hooks/session-start.mjs +224 -0
- package/bundled/upstream/ecc/skills/claude-api/SKILL.md +337 -0
- package/bundled/upstream/ecc/skills/claude-devfleet/SKILL.md +103 -0
- package/bundled/upstream/ecc/skills/click-path-audit/SKILL.md +244 -0
- package/bundled/upstream/ecc/skills/clickhouse-io/SKILL.md +439 -0
- package/bundled/upstream/ecc/skills/code-tour/SKILL.md +236 -0
- package/bundled/upstream/ecc/skills/codebase-onboarding/SKILL.md +233 -0
- package/bundled/upstream/ecc/skills/coding-standards/SKILL.md +549 -0
- package/bundled/upstream/ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +367 -0
- package/bundled/upstream/ecc/skills/connections-optimizer/SKILL.md +189 -0
- package/bundled/upstream/ecc/skills/content-engine/SKILL.md +131 -0
- package/bundled/upstream/ecc/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/bundled/upstream/ecc/skills/context-budget/SKILL.md +135 -0
- package/bundled/upstream/ecc/skills/continuous-agent-loop/SKILL.md +45 -0
- package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +123 -0
- package/bundled/upstream/ecc/skills/continuous-learning/config.json +18 -0
- package/bundled/upstream/ecc/skills/continuous-learning/evaluate-session.sh +69 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +346 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +282 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/config.json +8 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +460 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +243 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/bundled/upstream/ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/bundled/upstream/ecc/skills/council/SKILL.md +203 -0
- package/bundled/upstream/ecc/skills/cpp-coding-standards/SKILL.md +723 -0
- package/bundled/upstream/ecc/skills/cpp-testing/SKILL.md +324 -0
- package/bundled/upstream/ecc/skills/crosspost/SKILL.md +111 -0
- package/bundled/upstream/ecc/skills/csharp-testing/SKILL.md +321 -0
- package/bundled/upstream/ecc/skills/customer-billing-ops/SKILL.md +140 -0
- package/bundled/upstream/ecc/skills/customs-trade-compliance/SKILL.md +263 -0
- package/bundled/upstream/ecc/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/bundled/upstream/ecc/skills/dashboard-builder/SKILL.md +108 -0
- package/bundled/upstream/ecc/skills/data-scraper-agent/SKILL.md +764 -0
- package/bundled/upstream/ecc/skills/database-migrations/SKILL.md +429 -0
- package/bundled/upstream/ecc/skills/deep-research/SKILL.md +155 -0
- package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/deployment-patterns/SKILL.md +427 -0
- package/bundled/upstream/ecc/skills/design-system/SKILL.md +82 -0
- package/bundled/upstream/ecc/skills/django-patterns/SKILL.md +734 -0
- package/bundled/upstream/ecc/skills/django-security/SKILL.md +593 -0
- package/bundled/upstream/ecc/skills/django-tdd/SKILL.md +729 -0
- package/bundled/upstream/ecc/skills/django-verification/SKILL.md +469 -0
- package/bundled/upstream/ecc/skills/dmux-workflows/SKILL.md +191 -0
- package/bundled/upstream/ecc/skills/docker-patterns/SKILL.md +364 -0
- package/bundled/upstream/ecc/skills/documentation-lookup/SKILL.md +90 -0
- package/bundled/upstream/ecc/skills/dotnet-patterns/SKILL.md +321 -0
- package/bundled/upstream/ecc/skills/e2e-testing/SKILL.md +326 -0
- package/bundled/upstream/ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/email-ops/SKILL.md +121 -0
- package/bundled/upstream/ecc/skills/energy-procurement/SKILL.md +228 -0
- package/bundled/upstream/ecc/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/bundled/upstream/ecc/skills/eval-harness/SKILL.md +270 -0
- package/bundled/upstream/ecc/skills/evm-token-decimals/SKILL.md +130 -0
- package/bundled/upstream/ecc/skills/exa-search/SKILL.md +103 -0
- package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +284 -0
- package/bundled/upstream/ecc/skills/finance-billing-ops/SKILL.md +127 -0
- package/bundled/upstream/ecc/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/bundled/upstream/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
- package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +145 -0
- package/bundled/upstream/ecc/skills/frontend-patterns/SKILL.md +642 -0
- package/bundled/upstream/ecc/skills/frontend-slides/SKILL.md +184 -0
- package/bundled/upstream/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/bundled/upstream/ecc/skills/gan-style-harness/SKILL.md +278 -0
- package/bundled/upstream/ecc/skills/gateguard/SKILL.md +121 -0
- package/bundled/upstream/ecc/skills/git-workflow/SKILL.md +715 -0
- package/bundled/upstream/ecc/skills/github-ops/SKILL.md +144 -0
- package/bundled/upstream/ecc/skills/golang-patterns/SKILL.md +674 -0
- package/bundled/upstream/ecc/skills/golang-testing/SKILL.md +720 -0
- package/bundled/upstream/ecc/skills/google-workspace-ops/SKILL.md +95 -0
- package/bundled/upstream/ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/bundled/upstream/ecc/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/bundled/upstream/ecc/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/bundled/upstream/ecc/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/bundled/upstream/ecc/skills/hexagonal-architecture/SKILL.md +276 -0
- package/bundled/upstream/ecc/skills/hipaa-compliance/SKILL.md +78 -0
- package/bundled/upstream/ecc/skills/hookify-rules/SKILL.md +128 -0
- package/bundled/upstream/ecc/skills/inventory-demand-planning/SKILL.md +247 -0
- package/bundled/upstream/ecc/skills/investor-materials/SKILL.md +96 -0
- package/bundled/upstream/ecc/skills/investor-outreach/SKILL.md +91 -0
- package/bundled/upstream/ecc/skills/iterative-retrieval/SKILL.md +211 -0
- package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/jira-integration/SKILL.md +293 -0
- package/bundled/upstream/ecc/skills/jpa-patterns/SKILL.md +151 -0
- package/bundled/upstream/ecc/skills/knowledge-ops/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/bundled/upstream/ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/bundled/upstream/ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/bundled/upstream/ecc/skills/kotlin-patterns/SKILL.md +711 -0
- package/bundled/upstream/ecc/skills/kotlin-testing/SKILL.md +824 -0
- package/bundled/upstream/ecc/skills/laravel-patterns/SKILL.md +415 -0
- package/bundled/upstream/ecc/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/bundled/upstream/ecc/skills/laravel-security/SKILL.md +285 -0
- package/bundled/upstream/ecc/skills/laravel-tdd/SKILL.md +283 -0
- package/bundled/upstream/ecc/skills/laravel-verification/SKILL.md +179 -0
- package/bundled/upstream/ecc/skills/lead-intelligence/SKILL.md +321 -0
- package/bundled/upstream/ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/bundled/upstream/ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/bundled/upstream/ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/bundled/upstream/ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/bundled/upstream/ecc/skills/liquid-glass-design/SKILL.md +279 -0
- package/bundled/upstream/ecc/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/bundled/upstream/ecc/skills/logistics-exception-management/SKILL.md +222 -0
- package/bundled/upstream/ecc/skills/manim-video/SKILL.md +89 -0
- package/bundled/upstream/ecc/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/bundled/upstream/ecc/skills/market-research/SKILL.md +75 -0
- package/bundled/upstream/ecc/skills/mcp-server-patterns/SKILL.md +69 -0
- package/bundled/upstream/ecc/skills/messages-ops/SKILL.md +104 -0
- package/bundled/upstream/ecc/skills/nanoclaw-repl/SKILL.md +33 -0
- package/bundled/upstream/ecc/skills/nestjs-patterns/SKILL.md +230 -0
- package/bundled/upstream/ecc/skills/nextjs-turbopack/SKILL.md +44 -0
- package/bundled/upstream/ecc/skills/nodejs-keccak256/SKILL.md +102 -0
- package/bundled/upstream/ecc/skills/nutrient-document-processing/SKILL.md +167 -0
- package/bundled/upstream/ecc/skills/nuxt4-patterns/SKILL.md +100 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/gacha.py +224 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/bundled/upstream/ecc/skills/opensource-pipeline/SKILL.md +255 -0
- package/bundled/upstream/ecc/skills/perl-patterns/SKILL.md +504 -0
- package/bundled/upstream/ecc/skills/perl-security/SKILL.md +503 -0
- package/bundled/upstream/ecc/skills/perl-testing/SKILL.md +475 -0
- package/bundled/upstream/ecc/skills/plankton-code-quality/SKILL.md +236 -0
- package/bundled/upstream/ecc/skills/postgres-patterns/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/product-capability/SKILL.md +141 -0
- package/bundled/upstream/ecc/skills/product-lens/SKILL.md +92 -0
- package/bundled/upstream/ecc/skills/production-scheduling/SKILL.md +238 -0
- package/bundled/upstream/ecc/skills/project-flow-ops/SKILL.md +111 -0
- package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +397 -0
- package/bundled/upstream/ecc/skills/python-patterns/SKILL.md +750 -0
- package/bundled/upstream/ecc/skills/python-testing/SKILL.md +816 -0
- package/bundled/upstream/ecc/skills/pytorch-patterns/SKILL.md +396 -0
- package/bundled/upstream/ecc/skills/quality-nonconformance/SKILL.md +260 -0
- package/bundled/upstream/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/bundled/upstream/ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/SKILL.md +43 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/3d.md +86 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/animations.md +29 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/assets.md +78 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/audio.md +172 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/charts.md +58 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/images.md +130 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/timing.md +179 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/bundled/upstream/ecc/skills/remotion-video-creation/rules/videos.md +171 -0
- package/bundled/upstream/ecc/skills/repo-scan/SKILL.md +78 -0
- package/bundled/upstream/ecc/skills/research-ops/SKILL.md +112 -0
- package/bundled/upstream/ecc/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/bundled/upstream/ecc/skills/rules-distill/SKILL.md +264 -0
- package/bundled/upstream/ecc/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/bundled/upstream/ecc/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/bundled/upstream/ecc/skills/rust-patterns/SKILL.md +499 -0
- package/bundled/upstream/ecc/skills/rust-testing/SKILL.md +500 -0
- package/bundled/upstream/ecc/skills/safety-guard/SKILL.md +75 -0
- package/bundled/upstream/ecc/skills/santa-method/SKILL.md +306 -0
- package/bundled/upstream/ecc/skills/search-first/SKILL.md +161 -0
- package/bundled/upstream/ecc/skills/security-bounty-hunter/SKILL.md +99 -0
- package/bundled/upstream/ecc/skills/security-review/SKILL.md +495 -0
- package/bundled/upstream/ecc/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/bundled/upstream/ecc/skills/security-scan/SKILL.md +165 -0
- package/bundled/upstream/ecc/skills/seo/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/skill-comply/SKILL.md +58 -0
- package/bundled/upstream/ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/bundled/upstream/ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/bundled/upstream/ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/bundled/upstream/ecc/skills/skill-comply/prompts/classifier.md +24 -0
- package/bundled/upstream/ecc/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/bundled/upstream/ecc/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/bundled/upstream/ecc/skills/skill-comply/pyproject.toml +15 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/__init__.py +0 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/classifier.py +85 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/grader.py +124 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/parser.py +107 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/report.py +170 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/run.py +127 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +161 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/bundled/upstream/ecc/skills/skill-comply/scripts/utils.py +13 -0
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_grader.py +197 -0
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_parser.py +90 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +193 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/bundled/upstream/ecc/skills/social-graph-ranker/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/springboot-patterns/SKILL.md +314 -0
- package/bundled/upstream/ecc/skills/springboot-security/SKILL.md +272 -0
- package/bundled/upstream/ecc/skills/springboot-tdd/SKILL.md +158 -0
- package/bundled/upstream/ecc/skills/springboot-verification/SKILL.md +231 -0
- package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +131 -0
- package/bundled/upstream/ecc/skills/strategic-compact/suggest-compact.sh +54 -0
- package/bundled/upstream/ecc/skills/swift-actor-persistence/SKILL.md +143 -0
- package/bundled/upstream/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/bundled/upstream/ecc/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/bundled/upstream/ecc/skills/swiftui-patterns/SKILL.md +259 -0
- package/bundled/upstream/ecc/skills/tdd-workflow/SKILL.md +463 -0
- package/bundled/upstream/ecc/skills/team-builder/SKILL.md +168 -0
- package/bundled/upstream/ecc/skills/terminal-ops/SKILL.md +109 -0
- package/bundled/upstream/ecc/skills/token-budget-advisor/SKILL.md +133 -0
- package/bundled/upstream/ecc/skills/ui-demo/SKILL.md +465 -0
- package/bundled/upstream/ecc/skills/unified-notifications-ops/SKILL.md +187 -0
- package/bundled/upstream/ecc/skills/verification-loop/SKILL.md +126 -0
- package/bundled/upstream/ecc/skills/video-editing/SKILL.md +310 -0
- package/bundled/upstream/ecc/skills/videodb/SKILL.md +374 -0
- package/bundled/upstream/ecc/skills/videodb/reference/api-reference.md +550 -0
- package/bundled/upstream/ecc/skills/videodb/reference/capture-reference.md +407 -0
- package/bundled/upstream/ecc/skills/videodb/reference/capture.md +101 -0
- package/bundled/upstream/ecc/skills/videodb/reference/editor.md +443 -0
- package/bundled/upstream/ecc/skills/videodb/reference/generative.md +331 -0
- package/bundled/upstream/ecc/skills/videodb/reference/rtstream-reference.md +564 -0
- package/bundled/upstream/ecc/skills/videodb/reference/rtstream.md +65 -0
- package/bundled/upstream/ecc/skills/videodb/reference/search.md +230 -0
- package/bundled/upstream/ecc/skills/videodb/reference/streaming.md +406 -0
- package/bundled/upstream/ecc/skills/videodb/reference/use-cases.md +118 -0
- package/bundled/upstream/ecc/skills/videodb/scripts/ws_listener.py +282 -0
- package/bundled/upstream/ecc/skills/visa-doc-translate/README.md +86 -0
- package/bundled/upstream/ecc/skills/visa-doc-translate/SKILL.md +117 -0
- package/bundled/upstream/ecc/skills/workspace-surface-audit/SKILL.md +125 -0
- package/bundled/upstream/ecc/skills/x-api/SKILL.md +230 -0
- package/bundled/upstream/superpowers/.omc-source/last-plan-apply.json +22 -0
- package/package.json +3 -1
- package/src/catalog/source-catalog.js +391 -0
- package/src/cli/artifact.js +3 -2
- package/src/cli/doctor.js +25 -4
- package/src/cli/index.js +19 -0
- package/src/cli/plan.js +220 -0
- package/src/cli/setup.js +209 -12
- package/src/cli/source.js +110 -3
- package/src/config/paths.js +31 -0
- package/src/config/sources.js +103 -10
- package/src/merge/hook-merger.js +1 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-sort
|
|
3
|
+
description: Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent Sort
|
|
8
|
+
|
|
9
|
+
Use this skill when a repo needs a project-specific ECC surface instead of the default full install.
|
|
10
|
+
|
|
11
|
+
The goal is not to guess what "feels useful." The goal is to classify ECC components with evidence from the actual codebase.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- A project only needs a subset of ECC and full installs are too noisy
|
|
16
|
+
- The repo stack is clear, but nobody wants to hand-curate skills one by one
|
|
17
|
+
- A team wants a repeatable install decision backed by grep evidence instead of opinion
|
|
18
|
+
- You need to separate always-loaded daily workflow surfaces from searchable library/reference surfaces
|
|
19
|
+
- A repo has drifted into the wrong language, rule, or hook set and needs cleanup
|
|
20
|
+
|
|
21
|
+
## Non-Negotiable Rules
|
|
22
|
+
|
|
23
|
+
- Use the current repository as the source of truth, not generic preferences
|
|
24
|
+
- Every DAILY decision must cite concrete repo evidence
|
|
25
|
+
- LIBRARY does not mean "delete"; it means "keep accessible without loading by default"
|
|
26
|
+
- Do not install hooks, rules, or scripts that the current repo cannot use
|
|
27
|
+
- Prefer ECC-native surfaces; do not introduce a second install system
|
|
28
|
+
|
|
29
|
+
## Outputs
|
|
30
|
+
|
|
31
|
+
Produce these artifacts in order:
|
|
32
|
+
|
|
33
|
+
1. DAILY inventory
|
|
34
|
+
2. LIBRARY inventory
|
|
35
|
+
3. install plan
|
|
36
|
+
4. verification report
|
|
37
|
+
5. optional `skill-library` router if the project wants one
|
|
38
|
+
|
|
39
|
+
## Classification Model
|
|
40
|
+
|
|
41
|
+
Use two buckets only:
|
|
42
|
+
|
|
43
|
+
- `DAILY`
|
|
44
|
+
- should load every session for this repo
|
|
45
|
+
- strongly matched to the repo's language, framework, workflow, or operator surface
|
|
46
|
+
- `LIBRARY`
|
|
47
|
+
- useful to retain, but not worth loading by default
|
|
48
|
+
- should remain reachable through search, router skill, or selective manual use
|
|
49
|
+
|
|
50
|
+
## Evidence Sources
|
|
51
|
+
|
|
52
|
+
Use repo-local evidence before making any classification:
|
|
53
|
+
|
|
54
|
+
- file extensions
|
|
55
|
+
- package managers and lockfiles
|
|
56
|
+
- framework configs
|
|
57
|
+
- CI and hook configs
|
|
58
|
+
- build/test scripts
|
|
59
|
+
- imports and dependency manifests
|
|
60
|
+
- repo docs that explicitly describe the stack
|
|
61
|
+
|
|
62
|
+
Useful commands include:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
rg --files
|
|
66
|
+
rg -n "typescript|react|next|supabase|django|spring|flutter|swift"
|
|
67
|
+
cat package.json
|
|
68
|
+
cat pyproject.toml
|
|
69
|
+
cat Cargo.toml
|
|
70
|
+
cat pubspec.yaml
|
|
71
|
+
cat go.mod
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Parallel Review Passes
|
|
75
|
+
|
|
76
|
+
If parallel subagents are available, split the review into these passes:
|
|
77
|
+
|
|
78
|
+
1. Agents
|
|
79
|
+
- classify `agents/*`
|
|
80
|
+
2. Skills
|
|
81
|
+
- classify `skills/*`
|
|
82
|
+
3. Commands
|
|
83
|
+
- classify `commands/*`
|
|
84
|
+
4. Rules
|
|
85
|
+
- classify `rules/*`
|
|
86
|
+
5. Hooks and scripts
|
|
87
|
+
- classify hook surfaces, MCP health checks, helper scripts, and OS compatibility
|
|
88
|
+
6. Extras
|
|
89
|
+
- classify contexts, examples, MCP configs, templates, and guidance docs
|
|
90
|
+
|
|
91
|
+
If subagents are not available, run the same passes sequentially.
|
|
92
|
+
|
|
93
|
+
## Core Workflow
|
|
94
|
+
|
|
95
|
+
### 1. Read the repo
|
|
96
|
+
|
|
97
|
+
Establish the real stack before classifying anything:
|
|
98
|
+
|
|
99
|
+
- languages in use
|
|
100
|
+
- frameworks in use
|
|
101
|
+
- primary package manager
|
|
102
|
+
- test stack
|
|
103
|
+
- lint/format stack
|
|
104
|
+
- deployment/runtime surface
|
|
105
|
+
- operator integrations already present
|
|
106
|
+
|
|
107
|
+
### 2. Build the evidence table
|
|
108
|
+
|
|
109
|
+
For every candidate surface, record:
|
|
110
|
+
|
|
111
|
+
- component path
|
|
112
|
+
- component type
|
|
113
|
+
- proposed bucket
|
|
114
|
+
- repo evidence
|
|
115
|
+
- short justification
|
|
116
|
+
|
|
117
|
+
Use this format:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
skills/frontend-patterns | skill | DAILY | 84 .tsx files, next.config.ts present | core frontend stack
|
|
121
|
+
skills/django-patterns | skill | LIBRARY | no .py files, no pyproject.toml | not active in this repo
|
|
122
|
+
rules/typescript/* | rules | DAILY | package.json + tsconfig.json | active TS repo
|
|
123
|
+
rules/python/* | rules | LIBRARY | zero Python source files | keep accessible only
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 3. Decide DAILY vs LIBRARY
|
|
127
|
+
|
|
128
|
+
Promote to `DAILY` when:
|
|
129
|
+
|
|
130
|
+
- the repo clearly uses the matching stack
|
|
131
|
+
- the component is general enough to help every session
|
|
132
|
+
- the repo already depends on the corresponding runtime or workflow
|
|
133
|
+
|
|
134
|
+
Demote to `LIBRARY` when:
|
|
135
|
+
|
|
136
|
+
- the component is off-stack
|
|
137
|
+
- the repo might need it later, but not every day
|
|
138
|
+
- it adds context overhead without immediate relevance
|
|
139
|
+
|
|
140
|
+
### 4. Build the install plan
|
|
141
|
+
|
|
142
|
+
Translate the classification into action:
|
|
143
|
+
|
|
144
|
+
- DAILY skills -> install or keep in `.claude/skills/`
|
|
145
|
+
- DAILY commands -> keep as explicit shims only if still useful
|
|
146
|
+
- DAILY rules -> install only matching language sets
|
|
147
|
+
- DAILY hooks/scripts -> keep only compatible ones
|
|
148
|
+
- LIBRARY surfaces -> keep accessible through search or `skill-library`
|
|
149
|
+
|
|
150
|
+
If the repo already uses selective installs, update that plan instead of creating another system.
|
|
151
|
+
|
|
152
|
+
### 5. Create the optional library router
|
|
153
|
+
|
|
154
|
+
If the project wants a searchable library surface, create:
|
|
155
|
+
|
|
156
|
+
- `.claude/skills/skill-library/SKILL.md`
|
|
157
|
+
|
|
158
|
+
That router should contain:
|
|
159
|
+
|
|
160
|
+
- a short explanation of DAILY vs LIBRARY
|
|
161
|
+
- grouped trigger keywords
|
|
162
|
+
- where the library references live
|
|
163
|
+
|
|
164
|
+
Do not duplicate every skill body inside the router.
|
|
165
|
+
|
|
166
|
+
### 6. Verify the result
|
|
167
|
+
|
|
168
|
+
After the plan is applied, verify:
|
|
169
|
+
|
|
170
|
+
- every DAILY file exists where expected
|
|
171
|
+
- stale language rules were not left active
|
|
172
|
+
- incompatible hooks were not installed
|
|
173
|
+
- the resulting install actually matches the repo stack
|
|
174
|
+
|
|
175
|
+
Return a compact report with:
|
|
176
|
+
|
|
177
|
+
- DAILY count
|
|
178
|
+
- LIBRARY count
|
|
179
|
+
- removed stale surfaces
|
|
180
|
+
- open questions
|
|
181
|
+
|
|
182
|
+
## Handoffs
|
|
183
|
+
|
|
184
|
+
If the next step is interactive installation or repair, hand off to:
|
|
185
|
+
|
|
186
|
+
- `configure-ecc`
|
|
187
|
+
|
|
188
|
+
If the next step is overlap cleanup or catalog review, hand off to:
|
|
189
|
+
|
|
190
|
+
- `skill-stocktake`
|
|
191
|
+
|
|
192
|
+
If the next step is broader context trimming, hand off to:
|
|
193
|
+
|
|
194
|
+
- `strategic-compact`
|
|
195
|
+
|
|
196
|
+
## Output Format
|
|
197
|
+
|
|
198
|
+
Return the result in this order:
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
STACK
|
|
202
|
+
- language/framework/runtime summary
|
|
203
|
+
|
|
204
|
+
DAILY
|
|
205
|
+
- always-loaded items with evidence
|
|
206
|
+
|
|
207
|
+
LIBRARY
|
|
208
|
+
- searchable/reference items with evidence
|
|
209
|
+
|
|
210
|
+
INSTALL PLAN
|
|
211
|
+
- what should be installed, removed, or routed
|
|
212
|
+
|
|
213
|
+
VERIFICATION
|
|
214
|
+
- checks run and remaining gaps
|
|
215
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentic-engineering
|
|
3
|
+
description: Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agentic Engineering
|
|
8
|
+
|
|
9
|
+
Use this skill for engineering workflows where AI agents perform most implementation work and humans enforce quality and risk controls.
|
|
10
|
+
|
|
11
|
+
## Operating Principles
|
|
12
|
+
|
|
13
|
+
1. Define completion criteria before execution.
|
|
14
|
+
2. Decompose work into agent-sized units.
|
|
15
|
+
3. Route model tiers by task complexity.
|
|
16
|
+
4. Measure with evals and regression checks.
|
|
17
|
+
|
|
18
|
+
## Eval-First Loop
|
|
19
|
+
|
|
20
|
+
1. Define capability eval and regression eval.
|
|
21
|
+
2. Run baseline and capture failure signatures.
|
|
22
|
+
3. Execute implementation.
|
|
23
|
+
4. Re-run evals and compare deltas.
|
|
24
|
+
|
|
25
|
+
## Task Decomposition
|
|
26
|
+
|
|
27
|
+
Apply the 15-minute unit rule:
|
|
28
|
+
- each unit should be independently verifiable
|
|
29
|
+
- each unit should have a single dominant risk
|
|
30
|
+
- each unit should expose a clear done condition
|
|
31
|
+
|
|
32
|
+
## Model Routing
|
|
33
|
+
|
|
34
|
+
- Haiku: classification, boilerplate transforms, narrow edits
|
|
35
|
+
- Sonnet: implementation and refactors
|
|
36
|
+
- Opus: architecture, root-cause analysis, multi-file invariants
|
|
37
|
+
|
|
38
|
+
## Session Strategy
|
|
39
|
+
|
|
40
|
+
- Continue session for closely-coupled units.
|
|
41
|
+
- Start fresh session after major phase transitions.
|
|
42
|
+
- Compact after milestone completion, not during active debugging.
|
|
43
|
+
|
|
44
|
+
## Review Focus for AI-Generated Code
|
|
45
|
+
|
|
46
|
+
Prioritize:
|
|
47
|
+
- invariants and edge cases
|
|
48
|
+
- error boundaries
|
|
49
|
+
- security and auth assumptions
|
|
50
|
+
- hidden coupling and rollout risk
|
|
51
|
+
|
|
52
|
+
Do not waste review cycles on style-only disagreements when automated format/lint already enforce style.
|
|
53
|
+
|
|
54
|
+
## Cost Discipline
|
|
55
|
+
|
|
56
|
+
Track per task:
|
|
57
|
+
- model
|
|
58
|
+
- token estimate
|
|
59
|
+
- retries
|
|
60
|
+
- wall-clock time
|
|
61
|
+
- success/failure
|
|
62
|
+
|
|
63
|
+
Escalate model tier only when lower tier fails with a clear reasoning gap.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-first-engineering
|
|
3
|
+
description: Engineering operating model for teams where AI agents generate a large share of implementation output.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI-First Engineering
|
|
8
|
+
|
|
9
|
+
Use this skill when designing process, reviews, and architecture for teams shipping with AI-assisted code generation.
|
|
10
|
+
|
|
11
|
+
## Process Shifts
|
|
12
|
+
|
|
13
|
+
1. Planning quality matters more than typing speed.
|
|
14
|
+
2. Eval coverage matters more than anecdotal confidence.
|
|
15
|
+
3. Review focus shifts from syntax to system behavior.
|
|
16
|
+
|
|
17
|
+
## Architecture Requirements
|
|
18
|
+
|
|
19
|
+
Prefer architectures that are agent-friendly:
|
|
20
|
+
- explicit boundaries
|
|
21
|
+
- stable contracts
|
|
22
|
+
- typed interfaces
|
|
23
|
+
- deterministic tests
|
|
24
|
+
|
|
25
|
+
Avoid implicit behavior spread across hidden conventions.
|
|
26
|
+
|
|
27
|
+
## Code Review in AI-First Teams
|
|
28
|
+
|
|
29
|
+
Review for:
|
|
30
|
+
- behavior regressions
|
|
31
|
+
- security assumptions
|
|
32
|
+
- data integrity
|
|
33
|
+
- failure handling
|
|
34
|
+
- rollout safety
|
|
35
|
+
|
|
36
|
+
Minimize time spent on style issues already covered by automation.
|
|
37
|
+
|
|
38
|
+
## Hiring and Evaluation Signals
|
|
39
|
+
|
|
40
|
+
Strong AI-first engineers:
|
|
41
|
+
- decompose ambiguous work cleanly
|
|
42
|
+
- define measurable acceptance criteria
|
|
43
|
+
- produce high-signal prompts and evals
|
|
44
|
+
- enforce risk controls under delivery pressure
|
|
45
|
+
|
|
46
|
+
## Testing Standard
|
|
47
|
+
|
|
48
|
+
Raise testing bar for generated code:
|
|
49
|
+
- required regression coverage for touched domains
|
|
50
|
+
- explicit edge-case assertions
|
|
51
|
+
- integration checks for interface boundaries
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-regression-testing
|
|
3
|
+
description: Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI Regression Testing
|
|
8
|
+
|
|
9
|
+
Testing patterns specifically designed for AI-assisted development, where the same model writes code and reviews it — creating systematic blind spots that only automated tests can catch.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- AI agent (Claude Code, Cursor, Codex) has modified API routes or backend logic
|
|
14
|
+
- A bug was found and fixed — need to prevent re-introduction
|
|
15
|
+
- Project has a sandbox/mock mode that can be leveraged for DB-free testing
|
|
16
|
+
- Running `/bug-check` or similar review commands after code changes
|
|
17
|
+
- Multiple code paths exist (sandbox vs production, feature flags, etc.)
|
|
18
|
+
|
|
19
|
+
## The Core Problem
|
|
20
|
+
|
|
21
|
+
When an AI writes code and then reviews its own work, it carries the same assumptions into both steps. This creates a predictable failure pattern:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
AI writes fix → AI reviews fix → AI says "looks correct" → Bug still exists
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Real-world example** (observed in production):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Fix 1: Added notification_settings to API response
|
|
31
|
+
→ Forgot to add it to the SELECT query
|
|
32
|
+
→ AI reviewed and missed it (same blind spot)
|
|
33
|
+
|
|
34
|
+
Fix 2: Added it to SELECT query
|
|
35
|
+
→ TypeScript build error (column not in generated types)
|
|
36
|
+
→ AI reviewed Fix 1 but didn't catch the SELECT issue
|
|
37
|
+
|
|
38
|
+
Fix 3: Changed to SELECT *
|
|
39
|
+
→ Fixed production path, forgot sandbox path
|
|
40
|
+
→ AI reviewed and missed it AGAIN (4th occurrence)
|
|
41
|
+
|
|
42
|
+
Fix 4: Test caught it instantly on first run PASS:
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The pattern: **sandbox/production path inconsistency** is the #1 AI-introduced regression.
|
|
46
|
+
|
|
47
|
+
## Sandbox-Mode API Testing
|
|
48
|
+
|
|
49
|
+
Most projects with AI-friendly architecture have a sandbox/mock mode. This is the key to fast, DB-free API testing.
|
|
50
|
+
|
|
51
|
+
### Setup (Vitest + Next.js App Router)
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// vitest.config.ts
|
|
55
|
+
import { defineConfig } from "vitest/config";
|
|
56
|
+
import path from "path";
|
|
57
|
+
|
|
58
|
+
export default defineConfig({
|
|
59
|
+
test: {
|
|
60
|
+
environment: "node",
|
|
61
|
+
globals: true,
|
|
62
|
+
include: ["__tests__/**/*.test.ts"],
|
|
63
|
+
setupFiles: ["__tests__/setup.ts"],
|
|
64
|
+
},
|
|
65
|
+
resolve: {
|
|
66
|
+
alias: {
|
|
67
|
+
"@": path.resolve(__dirname, "."),
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// __tests__/setup.ts
|
|
75
|
+
// Force sandbox mode — no database needed
|
|
76
|
+
process.env.SANDBOX_MODE = "true";
|
|
77
|
+
process.env.NEXT_PUBLIC_SUPABASE_URL = "";
|
|
78
|
+
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY = "";
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Test Helper for Next.js API Routes
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// __tests__/helpers.ts
|
|
85
|
+
import { NextRequest } from "next/server";
|
|
86
|
+
|
|
87
|
+
export function createTestRequest(
|
|
88
|
+
url: string,
|
|
89
|
+
options?: {
|
|
90
|
+
method?: string;
|
|
91
|
+
body?: Record<string, unknown>;
|
|
92
|
+
headers?: Record<string, string>;
|
|
93
|
+
sandboxUserId?: string;
|
|
94
|
+
},
|
|
95
|
+
): NextRequest {
|
|
96
|
+
const { method = "GET", body, headers = {}, sandboxUserId } = options || {};
|
|
97
|
+
const fullUrl = url.startsWith("http") ? url : `http://localhost:3000${url}`;
|
|
98
|
+
const reqHeaders: Record<string, string> = { ...headers };
|
|
99
|
+
|
|
100
|
+
if (sandboxUserId) {
|
|
101
|
+
reqHeaders["x-sandbox-user-id"] = sandboxUserId;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const init: { method: string; headers: Record<string, string>; body?: string } = {
|
|
105
|
+
method,
|
|
106
|
+
headers: reqHeaders,
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
if (body) {
|
|
110
|
+
init.body = JSON.stringify(body);
|
|
111
|
+
reqHeaders["content-type"] = "application/json";
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return new NextRequest(fullUrl, init);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export async function parseResponse(response: Response) {
|
|
118
|
+
const json = await response.json();
|
|
119
|
+
return { status: response.status, json };
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Writing Regression Tests
|
|
124
|
+
|
|
125
|
+
The key principle: **write tests for bugs that were found, not for code that works**.
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// __tests__/api/user/profile.test.ts
|
|
129
|
+
import { describe, it, expect } from "vitest";
|
|
130
|
+
import { createTestRequest, parseResponse } from "../../helpers";
|
|
131
|
+
import { GET, PATCH } from "@/app/api/user/profile/route";
|
|
132
|
+
|
|
133
|
+
// Define the contract — what fields MUST be in the response
|
|
134
|
+
const REQUIRED_FIELDS = [
|
|
135
|
+
"id",
|
|
136
|
+
"email",
|
|
137
|
+
"full_name",
|
|
138
|
+
"phone",
|
|
139
|
+
"role",
|
|
140
|
+
"created_at",
|
|
141
|
+
"avatar_url",
|
|
142
|
+
"notification_settings", // ← Added after bug found it missing
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
describe("GET /api/user/profile", () => {
|
|
146
|
+
it("returns all required fields", async () => {
|
|
147
|
+
const req = createTestRequest("/api/user/profile");
|
|
148
|
+
const res = await GET(req);
|
|
149
|
+
const { status, json } = await parseResponse(res);
|
|
150
|
+
|
|
151
|
+
expect(status).toBe(200);
|
|
152
|
+
for (const field of REQUIRED_FIELDS) {
|
|
153
|
+
expect(json.data).toHaveProperty(field);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Regression test — this exact bug was introduced by AI 4 times
|
|
158
|
+
it("notification_settings is not undefined (BUG-R1 regression)", async () => {
|
|
159
|
+
const req = createTestRequest("/api/user/profile");
|
|
160
|
+
const res = await GET(req);
|
|
161
|
+
const { json } = await parseResponse(res);
|
|
162
|
+
|
|
163
|
+
expect("notification_settings" in json.data).toBe(true);
|
|
164
|
+
const ns = json.data.notification_settings;
|
|
165
|
+
expect(ns === null || typeof ns === "object").toBe(true);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Testing Sandbox/Production Parity
|
|
171
|
+
|
|
172
|
+
The most common AI regression: fixing production path but forgetting sandbox path (or vice versa).
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
// Test that sandbox responses match the expected contract
|
|
176
|
+
describe("GET /api/user/messages (conversation list)", () => {
|
|
177
|
+
it("includes partner_name in sandbox mode", async () => {
|
|
178
|
+
const req = createTestRequest("/api/user/messages", {
|
|
179
|
+
sandboxUserId: "user-001",
|
|
180
|
+
});
|
|
181
|
+
const res = await GET(req);
|
|
182
|
+
const { json } = await parseResponse(res);
|
|
183
|
+
|
|
184
|
+
// This caught a bug where partner_name was added
|
|
185
|
+
// to production path but not sandbox path
|
|
186
|
+
if (json.data.length > 0) {
|
|
187
|
+
for (const conv of json.data) {
|
|
188
|
+
expect("partner_name" in conv).toBe(true);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Integrating Tests into Bug-Check Workflow
|
|
196
|
+
|
|
197
|
+
### Custom Command Definition
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
<!-- .claude/commands/bug-check.md -->
|
|
201
|
+
# Bug Check
|
|
202
|
+
|
|
203
|
+
## Step 1: Automated Tests (mandatory, cannot skip)
|
|
204
|
+
|
|
205
|
+
Run these commands FIRST before any code review:
|
|
206
|
+
|
|
207
|
+
npm run test # Vitest test suite
|
|
208
|
+
npm run build # TypeScript type check + build
|
|
209
|
+
|
|
210
|
+
- If tests fail → report as highest priority bug
|
|
211
|
+
- If build fails → report type errors as highest priority
|
|
212
|
+
- Only proceed to Step 2 if both pass
|
|
213
|
+
|
|
214
|
+
## Step 2: Code Review (AI review)
|
|
215
|
+
|
|
216
|
+
1. Sandbox / production path consistency
|
|
217
|
+
2. API response shape matches frontend expectations
|
|
218
|
+
3. SELECT clause completeness
|
|
219
|
+
4. Error handling with rollback
|
|
220
|
+
5. Optimistic update race conditions
|
|
221
|
+
|
|
222
|
+
## Step 3: For each bug fixed, propose a regression test
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### The Workflow
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
User: "バグチェックして" (or "/bug-check")
|
|
229
|
+
│
|
|
230
|
+
├─ Step 1: npm run test
|
|
231
|
+
│ ├─ FAIL → Bug found mechanically (no AI judgment needed)
|
|
232
|
+
│ └─ PASS → Continue
|
|
233
|
+
│
|
|
234
|
+
├─ Step 2: npm run build
|
|
235
|
+
│ ├─ FAIL → Type error found mechanically
|
|
236
|
+
│ └─ PASS → Continue
|
|
237
|
+
│
|
|
238
|
+
├─ Step 3: AI code review (with known blind spots in mind)
|
|
239
|
+
│ └─ Findings reported
|
|
240
|
+
│
|
|
241
|
+
└─ Step 4: For each fix, write a regression test
|
|
242
|
+
└─ Next bug-check catches if fix breaks
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Common AI Regression Patterns
|
|
246
|
+
|
|
247
|
+
### Pattern 1: Sandbox/Production Path Mismatch
|
|
248
|
+
|
|
249
|
+
**Frequency**: Most common (observed in 3 out of 4 regressions)
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
// FAIL: AI adds field to production path only
|
|
253
|
+
if (isSandboxMode()) {
|
|
254
|
+
return { data: { id, email, name } }; // Missing new field
|
|
255
|
+
}
|
|
256
|
+
// Production path
|
|
257
|
+
return { data: { id, email, name, notification_settings } };
|
|
258
|
+
|
|
259
|
+
// PASS: Both paths must return the same shape
|
|
260
|
+
if (isSandboxMode()) {
|
|
261
|
+
return { data: { id, email, name, notification_settings: null } };
|
|
262
|
+
}
|
|
263
|
+
return { data: { id, email, name, notification_settings } };
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Test to catch it**:
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
it("sandbox and production return same fields", async () => {
|
|
270
|
+
// In test env, sandbox mode is forced ON
|
|
271
|
+
const res = await GET(createTestRequest("/api/user/profile"));
|
|
272
|
+
const { json } = await parseResponse(res);
|
|
273
|
+
|
|
274
|
+
for (const field of REQUIRED_FIELDS) {
|
|
275
|
+
expect(json.data).toHaveProperty(field);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Pattern 2: SELECT Clause Omission
|
|
281
|
+
|
|
282
|
+
**Frequency**: Common with Supabase/Prisma when adding new columns
|
|
283
|
+
|
|
284
|
+
```typescript
|
|
285
|
+
// FAIL: New column added to response but not to SELECT
|
|
286
|
+
const { data } = await supabase
|
|
287
|
+
.from("users")
|
|
288
|
+
.select("id, email, name") // notification_settings not here
|
|
289
|
+
.single();
|
|
290
|
+
|
|
291
|
+
return { data: { ...data, notification_settings: data.notification_settings } };
|
|
292
|
+
// → notification_settings is always undefined
|
|
293
|
+
|
|
294
|
+
// PASS: Use SELECT * or explicitly include new columns
|
|
295
|
+
const { data } = await supabase
|
|
296
|
+
.from("users")
|
|
297
|
+
.select("*")
|
|
298
|
+
.single();
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Pattern 3: Error State Leakage
|
|
302
|
+
|
|
303
|
+
**Frequency**: Moderate — when adding error handling to existing components
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
// FAIL: Error state set but old data not cleared
|
|
307
|
+
catch (err) {
|
|
308
|
+
setError("Failed to load");
|
|
309
|
+
// reservations still shows data from previous tab!
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// PASS: Clear related state on error
|
|
313
|
+
catch (err) {
|
|
314
|
+
setReservations([]); // Clear stale data
|
|
315
|
+
setError("Failed to load");
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Pattern 4: Optimistic Update Without Proper Rollback
|
|
320
|
+
|
|
321
|
+
```typescript
|
|
322
|
+
// FAIL: No rollback on failure
|
|
323
|
+
const handleRemove = async (id: string) => {
|
|
324
|
+
setItems(prev => prev.filter(i => i.id !== id));
|
|
325
|
+
await fetch(`/api/items/${id}`, { method: "DELETE" });
|
|
326
|
+
// If API fails, item is gone from UI but still in DB
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
// PASS: Capture previous state and rollback on failure
|
|
330
|
+
const handleRemove = async (id: string) => {
|
|
331
|
+
const prevItems = [...items];
|
|
332
|
+
setItems(prev => prev.filter(i => i.id !== id));
|
|
333
|
+
try {
|
|
334
|
+
const res = await fetch(`/api/items/${id}`, { method: "DELETE" });
|
|
335
|
+
if (!res.ok) throw new Error("API error");
|
|
336
|
+
} catch {
|
|
337
|
+
setItems(prevItems); // Rollback
|
|
338
|
+
alert("削除に失敗しました");
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Strategy: Test Where Bugs Were Found
|
|
344
|
+
|
|
345
|
+
Don't aim for 100% coverage. Instead:
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
Bug found in /api/user/profile → Write test for profile API
|
|
349
|
+
Bug found in /api/user/messages → Write test for messages API
|
|
350
|
+
Bug found in /api/user/favorites → Write test for favorites API
|
|
351
|
+
No bug in /api/user/notifications → Don't write test (yet)
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Why this works with AI development:**
|
|
355
|
+
|
|
356
|
+
1. AI tends to make the **same category of mistake** repeatedly
|
|
357
|
+
2. Bugs cluster in complex areas (auth, multi-path logic, state management)
|
|
358
|
+
3. Once tested, that exact regression **cannot happen again**
|
|
359
|
+
4. Test count grows organically with bug fixes — no wasted effort
|
|
360
|
+
|
|
361
|
+
## Quick Reference
|
|
362
|
+
|
|
363
|
+
| AI Regression Pattern | Test Strategy | Priority |
|
|
364
|
+
|---|---|---|
|
|
365
|
+
| Sandbox/production mismatch | Assert same response shape in sandbox mode | High |
|
|
366
|
+
| SELECT clause omission | Assert all required fields in response | High |
|
|
367
|
+
| Error state leakage | Assert state cleanup on error | Medium |
|
|
368
|
+
| Missing rollback | Assert state restored on API failure | Medium |
|
|
369
|
+
| Type cast masking null | Assert field is not undefined | Medium |
|
|
370
|
+
|
|
371
|
+
## DO / DON'T
|
|
372
|
+
|
|
373
|
+
**DO:**
|
|
374
|
+
- Write tests immediately after finding a bug (before fixing it if possible)
|
|
375
|
+
- Test the API response shape, not the implementation
|
|
376
|
+
- Run tests as the first step of every bug-check
|
|
377
|
+
- Keep tests fast (< 1 second total with sandbox mode)
|
|
378
|
+
- Name tests after the bug they prevent (e.g., "BUG-R1 regression")
|
|
379
|
+
|
|
380
|
+
**DON'T:**
|
|
381
|
+
- Write tests for code that has never had a bug
|
|
382
|
+
- Trust AI self-review as a substitute for automated tests
|
|
383
|
+
- Skip sandbox path testing because "it's just mock data"
|
|
384
|
+
- Write integration tests when unit tests suffice
|
|
385
|
+
- Aim for coverage percentage — aim for regression prevention
|