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,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enforce TDD workflow for Kotlin. Write Kotest tests first, then implement. Verify 80%+ coverage with Kover.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Kotlin TDD Command
|
|
6
|
+
|
|
7
|
+
This command enforces test-driven development methodology for Kotlin code using Kotest, MockK, and Kover.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Define Types/Interfaces**: Scaffold function signatures first
|
|
12
|
+
2. **Write Kotest Tests**: Create comprehensive test specs (RED)
|
|
13
|
+
3. **Run Tests**: Verify tests fail for the right reason
|
|
14
|
+
4. **Implement Code**: Write minimal code to pass (GREEN)
|
|
15
|
+
5. **Refactor**: Improve while keeping tests green
|
|
16
|
+
6. **Check Coverage**: Ensure 80%+ coverage with Kover
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/kotlin-test` when:
|
|
21
|
+
- Implementing new Kotlin functions or classes
|
|
22
|
+
- Adding test coverage to existing Kotlin code
|
|
23
|
+
- Fixing bugs (write failing test first)
|
|
24
|
+
- Building critical business logic
|
|
25
|
+
- Learning TDD workflow in Kotlin
|
|
26
|
+
|
|
27
|
+
## TDD Cycle
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
RED -> Write failing Kotest test
|
|
31
|
+
GREEN -> Implement minimal code to pass
|
|
32
|
+
REFACTOR -> Improve code, tests stay green
|
|
33
|
+
REPEAT -> Next test case
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Example Session
|
|
37
|
+
|
|
38
|
+
````text
|
|
39
|
+
User: /kotlin-test I need a function to validate user registration requests
|
|
40
|
+
|
|
41
|
+
Agent:
|
|
42
|
+
# TDD Session: Registration Validator
|
|
43
|
+
|
|
44
|
+
## Step 1: Define Interface
|
|
45
|
+
|
|
46
|
+
```kotlin
|
|
47
|
+
// validator/RegistrationValidator.kt
|
|
48
|
+
package com.example.validator
|
|
49
|
+
|
|
50
|
+
data class RegistrationRequest(
|
|
51
|
+
val name: String,
|
|
52
|
+
val email: String,
|
|
53
|
+
val password: String,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
sealed class ValidationResult {
|
|
57
|
+
data object Valid : ValidationResult()
|
|
58
|
+
data class Invalid(val errors: List<String>) : ValidationResult()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
fun validateRegistration(request: RegistrationRequest): ValidationResult {
|
|
62
|
+
TODO("not implemented")
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Step 2: Write Kotest Tests (RED)
|
|
67
|
+
|
|
68
|
+
```kotlin
|
|
69
|
+
// validator/RegistrationValidatorTest.kt
|
|
70
|
+
package com.example.validator
|
|
71
|
+
|
|
72
|
+
import io.kotest.core.spec.style.FunSpec
|
|
73
|
+
import io.kotest.matchers.shouldBe
|
|
74
|
+
import io.kotest.matchers.types.shouldBeInstanceOf
|
|
75
|
+
|
|
76
|
+
class RegistrationValidatorTest : FunSpec({
|
|
77
|
+
test("valid registration returns Valid") {
|
|
78
|
+
val request = RegistrationRequest(
|
|
79
|
+
name = "Alice",
|
|
80
|
+
email = "alice@example.com",
|
|
81
|
+
password = "SecureP@ss1",
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
val result = validateRegistration(request)
|
|
85
|
+
|
|
86
|
+
result.shouldBeInstanceOf<ValidationResult.Valid>()
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
test("blank name returns Invalid") {
|
|
90
|
+
val request = RegistrationRequest(
|
|
91
|
+
name = "",
|
|
92
|
+
email = "alice@example.com",
|
|
93
|
+
password = "SecureP@ss1",
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
val result = validateRegistration(request)
|
|
97
|
+
|
|
98
|
+
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
99
|
+
invalid.errors shouldBe listOf("Name is required")
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
test("invalid email returns Invalid") {
|
|
103
|
+
val request = RegistrationRequest(
|
|
104
|
+
name = "Alice",
|
|
105
|
+
email = "not-an-email",
|
|
106
|
+
password = "SecureP@ss1",
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
val result = validateRegistration(request)
|
|
110
|
+
|
|
111
|
+
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
112
|
+
invalid.errors shouldBe listOf("Invalid email format")
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
test("short password returns Invalid") {
|
|
116
|
+
val request = RegistrationRequest(
|
|
117
|
+
name = "Alice",
|
|
118
|
+
email = "alice@example.com",
|
|
119
|
+
password = "short",
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
val result = validateRegistration(request)
|
|
123
|
+
|
|
124
|
+
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
125
|
+
invalid.errors shouldBe listOf("Password must be at least 8 characters")
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
test("multiple errors returns all errors") {
|
|
129
|
+
val request = RegistrationRequest(
|
|
130
|
+
name = "",
|
|
131
|
+
email = "bad",
|
|
132
|
+
password = "short",
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
val result = validateRegistration(request)
|
|
136
|
+
|
|
137
|
+
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
138
|
+
invalid.errors.size shouldBe 3
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Step 3: Run Tests - Verify FAIL
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
$ ./gradlew test
|
|
147
|
+
|
|
148
|
+
RegistrationValidatorTest > valid registration returns Valid FAILED
|
|
149
|
+
kotlin.NotImplementedError: An operation is not implemented
|
|
150
|
+
|
|
151
|
+
FAILED (5 tests, 0 passed, 5 failed)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
✓ Tests fail as expected (NotImplementedError).
|
|
155
|
+
|
|
156
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
157
|
+
|
|
158
|
+
```kotlin
|
|
159
|
+
// validator/RegistrationValidator.kt
|
|
160
|
+
package com.example.validator
|
|
161
|
+
|
|
162
|
+
private val EMAIL_REGEX = Regex("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")
|
|
163
|
+
private const val MIN_PASSWORD_LENGTH = 8
|
|
164
|
+
|
|
165
|
+
fun validateRegistration(request: RegistrationRequest): ValidationResult {
|
|
166
|
+
val errors = buildList {
|
|
167
|
+
if (request.name.isBlank()) add("Name is required")
|
|
168
|
+
if (!EMAIL_REGEX.matches(request.email)) add("Invalid email format")
|
|
169
|
+
if (request.password.length < MIN_PASSWORD_LENGTH) add("Password must be at least $MIN_PASSWORD_LENGTH characters")
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return if (errors.isEmpty()) ValidationResult.Valid
|
|
173
|
+
else ValidationResult.Invalid(errors)
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Step 5: Run Tests - Verify PASS
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
$ ./gradlew test
|
|
181
|
+
|
|
182
|
+
RegistrationValidatorTest > valid registration returns Valid PASSED
|
|
183
|
+
RegistrationValidatorTest > blank name returns Invalid PASSED
|
|
184
|
+
RegistrationValidatorTest > invalid email returns Invalid PASSED
|
|
185
|
+
RegistrationValidatorTest > short password returns Invalid PASSED
|
|
186
|
+
RegistrationValidatorTest > multiple errors returns all errors PASSED
|
|
187
|
+
|
|
188
|
+
PASSED (5 tests, 5 passed, 0 failed)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
✓ All tests passing!
|
|
192
|
+
|
|
193
|
+
## Step 6: Check Coverage
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
$ ./gradlew koverHtmlReport
|
|
197
|
+
|
|
198
|
+
Coverage: 100.0% of statements
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
✓ Coverage: 100%
|
|
202
|
+
|
|
203
|
+
## TDD Complete!
|
|
204
|
+
````
|
|
205
|
+
|
|
206
|
+
## Test Patterns
|
|
207
|
+
|
|
208
|
+
### StringSpec (Simplest)
|
|
209
|
+
|
|
210
|
+
```kotlin
|
|
211
|
+
class CalculatorTest : StringSpec({
|
|
212
|
+
"add two positive numbers" {
|
|
213
|
+
Calculator.add(2, 3) shouldBe 5
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### BehaviorSpec (BDD)
|
|
219
|
+
|
|
220
|
+
```kotlin
|
|
221
|
+
class OrderServiceTest : BehaviorSpec({
|
|
222
|
+
Given("a valid order") {
|
|
223
|
+
When("placed") {
|
|
224
|
+
Then("should be confirmed") { /* ... */ }
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
})
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Data-Driven Tests
|
|
231
|
+
|
|
232
|
+
```kotlin
|
|
233
|
+
class ParserTest : FunSpec({
|
|
234
|
+
context("valid inputs") {
|
|
235
|
+
withData("2026-01-15", "2026-12-31", "2000-01-01") { input ->
|
|
236
|
+
parseDate(input).shouldNotBeNull()
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
})
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Coroutine Testing
|
|
243
|
+
|
|
244
|
+
```kotlin
|
|
245
|
+
class AsyncServiceTest : FunSpec({
|
|
246
|
+
test("concurrent fetch completes") {
|
|
247
|
+
runTest {
|
|
248
|
+
val result = service.fetchAll()
|
|
249
|
+
result.shouldNotBeEmpty()
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
})
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Coverage Commands
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Run tests with coverage
|
|
259
|
+
./gradlew koverHtmlReport
|
|
260
|
+
|
|
261
|
+
# Verify coverage thresholds
|
|
262
|
+
./gradlew koverVerify
|
|
263
|
+
|
|
264
|
+
# XML report for CI
|
|
265
|
+
./gradlew koverXmlReport
|
|
266
|
+
|
|
267
|
+
# Open HTML report
|
|
268
|
+
open build/reports/kover/html/index.html
|
|
269
|
+
|
|
270
|
+
# Run specific test class
|
|
271
|
+
./gradlew test --tests "com.example.UserServiceTest"
|
|
272
|
+
|
|
273
|
+
# Run with verbose output
|
|
274
|
+
./gradlew test --info
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Coverage Targets
|
|
278
|
+
|
|
279
|
+
| Code Type | Target |
|
|
280
|
+
|-----------|--------|
|
|
281
|
+
| Critical business logic | 100% |
|
|
282
|
+
| Public APIs | 90%+ |
|
|
283
|
+
| General code | 80%+ |
|
|
284
|
+
| Generated code | Exclude |
|
|
285
|
+
|
|
286
|
+
## TDD Best Practices
|
|
287
|
+
|
|
288
|
+
**DO:**
|
|
289
|
+
- Write test FIRST, before any implementation
|
|
290
|
+
- Run tests after each change
|
|
291
|
+
- Use Kotest matchers for expressive assertions
|
|
292
|
+
- Use MockK's `coEvery`/`coVerify` for suspend functions
|
|
293
|
+
- Test behavior, not implementation details
|
|
294
|
+
- Include edge cases (empty, null, max values)
|
|
295
|
+
|
|
296
|
+
**DON'T:**
|
|
297
|
+
- Write implementation before tests
|
|
298
|
+
- Skip the RED phase
|
|
299
|
+
- Test private functions directly
|
|
300
|
+
- Use `Thread.sleep()` in coroutine tests
|
|
301
|
+
- Ignore flaky tests
|
|
302
|
+
|
|
303
|
+
## Related Commands
|
|
304
|
+
|
|
305
|
+
- `/kotlin-build` - Fix build errors
|
|
306
|
+
- `/kotlin-review` - Review code after implementation
|
|
307
|
+
- `/verify` - Run full verification loop
|
|
308
|
+
|
|
309
|
+
## Related
|
|
310
|
+
|
|
311
|
+
- Skill: `skills/kotlin-testing/`
|
|
312
|
+
- Skill: `skills/tdd-workflow/`
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Extract reusable patterns from the session, self-evaluate quality before saving, and determine the right save location (Global vs Project)."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /learn-eval - Extract, Evaluate, then Save
|
|
6
|
+
|
|
7
|
+
Extends `/learn` with a quality gate, save-location decision, and knowledge-placement awareness before writing any skill file.
|
|
8
|
+
|
|
9
|
+
## What to Extract
|
|
10
|
+
|
|
11
|
+
Look for:
|
|
12
|
+
|
|
13
|
+
1. **Error Resolution Patterns** — root cause + fix + reusability
|
|
14
|
+
2. **Debugging Techniques** — non-obvious steps, tool combinations
|
|
15
|
+
3. **Workarounds** — library quirks, API limitations, version-specific fixes
|
|
16
|
+
4. **Project-Specific Patterns** — conventions, architecture decisions, integration patterns
|
|
17
|
+
|
|
18
|
+
## Process
|
|
19
|
+
|
|
20
|
+
1. Review the session for extractable patterns
|
|
21
|
+
2. Identify the most valuable/reusable insight
|
|
22
|
+
|
|
23
|
+
3. **Determine save location:**
|
|
24
|
+
- Ask: "Would this pattern be useful in a different project?"
|
|
25
|
+
- **Global** (`~/.claude/skills/learned/`): Generic patterns usable across 2+ projects (bash compatibility, LLM API behavior, debugging techniques, etc.)
|
|
26
|
+
- **Project** (`.claude/skills/learned/` in current project): Project-specific knowledge (quirks of a particular config file, project-specific architecture decisions, etc.)
|
|
27
|
+
- When in doubt, choose Global (moving Global → Project is easier than the reverse)
|
|
28
|
+
|
|
29
|
+
4. Draft the skill file using this format:
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
---
|
|
33
|
+
name: pattern-name
|
|
34
|
+
description: "Under 130 characters"
|
|
35
|
+
user-invocable: false
|
|
36
|
+
origin: auto-extracted
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# [Descriptive Pattern Name]
|
|
40
|
+
|
|
41
|
+
**Extracted:** [Date]
|
|
42
|
+
**Context:** [Brief description of when this applies]
|
|
43
|
+
|
|
44
|
+
## Problem
|
|
45
|
+
[What problem this solves - be specific]
|
|
46
|
+
|
|
47
|
+
## Solution
|
|
48
|
+
[The pattern/technique/workaround - with code examples]
|
|
49
|
+
|
|
50
|
+
## When to Use
|
|
51
|
+
[Trigger conditions]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
5. **Quality gate — Checklist + Holistic verdict**
|
|
55
|
+
|
|
56
|
+
### 5a. Required checklist (verify by actually reading files)
|
|
57
|
+
|
|
58
|
+
Execute **all** of the following before evaluating the draft:
|
|
59
|
+
|
|
60
|
+
- [ ] Grep `~/.claude/skills/` and relevant project `.claude/skills/` files by keyword to check for content overlap
|
|
61
|
+
- [ ] Check MEMORY.md (both project and global) for overlap
|
|
62
|
+
- [ ] Consider whether appending to an existing skill would suffice
|
|
63
|
+
- [ ] Confirm this is a reusable pattern, not a one-off fix
|
|
64
|
+
|
|
65
|
+
### 5b. Holistic verdict
|
|
66
|
+
|
|
67
|
+
Synthesize the checklist results and draft quality, then choose **one** of the following:
|
|
68
|
+
|
|
69
|
+
| Verdict | Meaning | Next Action |
|
|
70
|
+
|---------|---------|-------------|
|
|
71
|
+
| **Save** | Unique, specific, well-scoped | Proceed to Step 6 |
|
|
72
|
+
| **Improve then Save** | Valuable but needs refinement | List improvements → revise → re-evaluate (once) |
|
|
73
|
+
| **Absorb into [X]** | Should be appended to an existing skill | Show target skill and additions → Step 6 |
|
|
74
|
+
| **Drop** | Trivial, redundant, or too abstract | Explain reasoning and stop |
|
|
75
|
+
|
|
76
|
+
**Guideline dimensions** (informing the verdict, not scored):
|
|
77
|
+
|
|
78
|
+
- **Specificity & Actionability**: Contains code examples or commands that are immediately usable
|
|
79
|
+
- **Scope Fit**: Name, trigger conditions, and content are aligned and focused on a single pattern
|
|
80
|
+
- **Uniqueness**: Provides value not covered by existing skills (informed by checklist results)
|
|
81
|
+
- **Reusability**: Realistic trigger scenarios exist in future sessions
|
|
82
|
+
|
|
83
|
+
6. **Verdict-specific confirmation flow**
|
|
84
|
+
|
|
85
|
+
- **Improve then Save**: Present the required improvements + revised draft + updated checklist/verdict after one re-evaluation; if the revised verdict is **Save**, save after user confirmation, otherwise follow the new verdict
|
|
86
|
+
- **Save**: Present save path + checklist results + 1-line verdict rationale + full draft → save after user confirmation
|
|
87
|
+
- **Absorb into [X]**: Present target path + additions (diff format) + checklist results + verdict rationale → append after user confirmation
|
|
88
|
+
- **Drop**: Show checklist results + reasoning only (no confirmation needed)
|
|
89
|
+
|
|
90
|
+
7. Save / Absorb to the determined location
|
|
91
|
+
|
|
92
|
+
## Output Format for Step 5
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
### Checklist
|
|
96
|
+
- [x] skills/ grep: no overlap (or: overlap found → details)
|
|
97
|
+
- [x] MEMORY.md: no overlap (or: overlap found → details)
|
|
98
|
+
- [x] Existing skill append: new file appropriate (or: should append to [X])
|
|
99
|
+
- [x] Reusability: confirmed (or: one-off → Drop)
|
|
100
|
+
|
|
101
|
+
### Verdict: Save / Improve then Save / Absorb into [X] / Drop
|
|
102
|
+
|
|
103
|
+
**Rationale:** (1-2 sentences explaining the verdict)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Design Rationale
|
|
107
|
+
|
|
108
|
+
This version replaces the previous 5-dimension numeric scoring rubric (Specificity, Actionability, Scope Fit, Non-redundancy, Coverage scored 1-5) with a checklist-based holistic verdict system. Modern frontier models (Opus 4.6+) have strong contextual judgment — forcing rich qualitative signals into numeric scores loses nuance and can produce misleading totals. The holistic approach lets the model weigh all factors naturally, producing more accurate save/drop decisions while the explicit checklist ensures no critical check is skipped.
|
|
109
|
+
|
|
110
|
+
## Notes
|
|
111
|
+
|
|
112
|
+
- Don't extract trivial fixes (typos, simple syntax errors)
|
|
113
|
+
- Don't extract one-time issues (specific API outages, etc.)
|
|
114
|
+
- Focus on patterns that will save time in future sessions
|
|
115
|
+
- Keep skills focused — one pattern per skill
|
|
116
|
+
- When the verdict is Absorb, append to the existing skill rather than creating a new file
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# /learn - Extract Reusable Patterns
|
|
2
|
+
|
|
3
|
+
Analyze the current session and extract any patterns worth saving as skills.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
Run `/learn` at any point during a session when you've solved a non-trivial problem.
|
|
8
|
+
|
|
9
|
+
## What to Extract
|
|
10
|
+
|
|
11
|
+
Look for:
|
|
12
|
+
|
|
13
|
+
1. **Error Resolution Patterns**
|
|
14
|
+
- What error occurred?
|
|
15
|
+
- What was the root cause?
|
|
16
|
+
- What fixed it?
|
|
17
|
+
- Is this reusable for similar errors?
|
|
18
|
+
|
|
19
|
+
2. **Debugging Techniques**
|
|
20
|
+
- Non-obvious debugging steps
|
|
21
|
+
- Tool combinations that worked
|
|
22
|
+
- Diagnostic patterns
|
|
23
|
+
|
|
24
|
+
3. **Workarounds**
|
|
25
|
+
- Library quirks
|
|
26
|
+
- API limitations
|
|
27
|
+
- Version-specific fixes
|
|
28
|
+
|
|
29
|
+
4. **Project-Specific Patterns**
|
|
30
|
+
- Codebase conventions discovered
|
|
31
|
+
- Architecture decisions made
|
|
32
|
+
- Integration patterns
|
|
33
|
+
|
|
34
|
+
## Output Format
|
|
35
|
+
|
|
36
|
+
Create a skill file at `~/.claude/skills/learned/[pattern-name].md`:
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
# [Descriptive Pattern Name]
|
|
40
|
+
|
|
41
|
+
**Extracted:** [Date]
|
|
42
|
+
**Context:** [Brief description of when this applies]
|
|
43
|
+
|
|
44
|
+
## Problem
|
|
45
|
+
[What problem this solves - be specific]
|
|
46
|
+
|
|
47
|
+
## Solution
|
|
48
|
+
[The pattern/technique/workaround]
|
|
49
|
+
|
|
50
|
+
## Example
|
|
51
|
+
[Code example if applicable]
|
|
52
|
+
|
|
53
|
+
## When to Use
|
|
54
|
+
[Trigger conditions - what should activate this skill]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Process
|
|
58
|
+
|
|
59
|
+
1. Review the session for extractable patterns
|
|
60
|
+
2. Identify the most valuable/reusable insight
|
|
61
|
+
3. Draft the skill file
|
|
62
|
+
4. Ask user to confirm before saving
|
|
63
|
+
5. Save to `~/.claude/skills/learned/`
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- Don't extract trivial fixes (typos, simple syntax errors)
|
|
68
|
+
- Don't extract one-time issues (specific API outages, etc.)
|
|
69
|
+
- Focus on patterns that will save time in future sessions
|
|
70
|
+
- Keep skills focused - one pattern per skill
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Loop Start Command
|
|
2
|
+
|
|
3
|
+
Start a managed autonomous loop pattern with safety defaults.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`/loop-start [pattern] [--mode safe|fast]`
|
|
8
|
+
|
|
9
|
+
- `pattern`: `sequential`, `continuous-pr`, `rfc-dag`, `infinite`
|
|
10
|
+
- `--mode`:
|
|
11
|
+
- `safe` (default): strict quality gates and checkpoints
|
|
12
|
+
- `fast`: reduced gates for speed
|
|
13
|
+
|
|
14
|
+
## Flow
|
|
15
|
+
|
|
16
|
+
1. Confirm repository state and branch strategy.
|
|
17
|
+
2. Select loop pattern and model tier strategy.
|
|
18
|
+
3. Enable required hooks/profile for the chosen mode.
|
|
19
|
+
4. Create loop plan and write runbook under `.claude/plans/`.
|
|
20
|
+
5. Print commands to start and monitor the loop.
|
|
21
|
+
|
|
22
|
+
## Required Safety Checks
|
|
23
|
+
|
|
24
|
+
- Verify tests pass before first loop iteration.
|
|
25
|
+
- Ensure `ECC_HOOK_PROFILE` is not disabled globally.
|
|
26
|
+
- Ensure loop has explicit stop condition.
|
|
27
|
+
|
|
28
|
+
## Arguments
|
|
29
|
+
|
|
30
|
+
$ARGUMENTS:
|
|
31
|
+
- `<pattern>` optional (`sequential|continuous-pr|rfc-dag|infinite`)
|
|
32
|
+
- `--mode safe|fast` optional
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Loop Status Command
|
|
2
|
+
|
|
3
|
+
Inspect active loop state, progress, and failure signals.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`/loop-status [--watch]`
|
|
8
|
+
|
|
9
|
+
## What to Report
|
|
10
|
+
|
|
11
|
+
- active loop pattern
|
|
12
|
+
- current phase and last successful checkpoint
|
|
13
|
+
- failing checks (if any)
|
|
14
|
+
- estimated time/cost drift
|
|
15
|
+
- recommended intervention (continue/pause/stop)
|
|
16
|
+
|
|
17
|
+
## Watch Mode
|
|
18
|
+
|
|
19
|
+
When `--watch` is present, refresh status periodically and surface state changes.
|
|
20
|
+
|
|
21
|
+
## Arguments
|
|
22
|
+
|
|
23
|
+
$ARGUMENTS:
|
|
24
|
+
- `--watch` optional
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Model Route Command
|
|
2
|
+
|
|
3
|
+
Recommend the best model tier for the current task by complexity and budget.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`/model-route [task-description] [--budget low|med|high]`
|
|
8
|
+
|
|
9
|
+
## Routing Heuristic
|
|
10
|
+
|
|
11
|
+
- `haiku`: deterministic, low-risk mechanical changes
|
|
12
|
+
- `sonnet`: default for implementation and refactors
|
|
13
|
+
- `opus`: architecture, deep review, ambiguous requirements
|
|
14
|
+
|
|
15
|
+
## Required Output
|
|
16
|
+
|
|
17
|
+
- recommended model
|
|
18
|
+
- confidence level
|
|
19
|
+
- why this model fits
|
|
20
|
+
- fallback model if first attempt fails
|
|
21
|
+
|
|
22
|
+
## Arguments
|
|
23
|
+
|
|
24
|
+
$ARGUMENTS:
|
|
25
|
+
- `[task-description]` optional free-text
|
|
26
|
+
- `--budget low|med|high` optional
|