compact-agent 1.10.1 → 1.11.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/bin/ecc-hooks.cjs +110 -0
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/ecc.d.ts +11 -0
- package/dist/ecc.js +142 -27
- package/dist/ecc.js.map +1 -1
- package/dist/index.js +47 -7
- package/dist/index.js.map +1 -1
- package/dist/query.js +26 -0
- package/dist/query.js.map +1 -1
- package/dist/theme.js +6 -2
- package/dist/theme.js.map +1 -1
- package/package.json +1 -1
- package/resources/ecc/agents/a11y-architect.md +149 -0
- package/resources/ecc/agents/architect.md +11 -3
- package/resources/ecc/agents/build-error-resolver.md +11 -4
- package/resources/ecc/agents/chief-of-staff.md +11 -4
- package/resources/ecc/agents/code-architect.md +80 -0
- package/resources/ecc/agents/code-explorer.md +78 -0
- package/resources/ecc/agents/code-reviewer.md +89 -4
- package/resources/ecc/agents/code-simplifier.md +56 -0
- package/resources/ecc/agents/comment-analyzer.md +54 -0
- package/resources/ecc/agents/conversation-analyzer.md +61 -0
- package/resources/ecc/agents/cpp-build-resolver.md +99 -0
- package/resources/ecc/agents/cpp-reviewer.md +81 -0
- package/resources/ecc/agents/csharp-reviewer.md +110 -0
- package/resources/ecc/agents/dart-build-resolver.md +210 -0
- package/resources/ecc/agents/database-reviewer.md +11 -3
- package/resources/ecc/agents/django-build-resolver.md +252 -0
- package/resources/ecc/agents/django-reviewer.md +169 -0
- package/resources/ecc/agents/doc-updater.md +11 -3
- package/resources/ecc/agents/docs-lookup.md +77 -0
- package/resources/ecc/agents/e2e-runner.md +11 -4
- package/resources/ecc/agents/fastapi-reviewer.md +79 -0
- package/resources/ecc/agents/flutter-reviewer.md +252 -0
- package/resources/ecc/agents/fsharp-reviewer.md +109 -0
- package/resources/ecc/agents/gan-evaluator.md +218 -0
- package/resources/ecc/agents/gan-generator.md +140 -0
- package/resources/ecc/agents/gan-planner.md +108 -0
- package/resources/ecc/agents/go-build-resolver.md +11 -4
- package/resources/ecc/agents/go-reviewer.md +11 -3
- package/resources/ecc/agents/harmonyos-app-resolver.md +182 -0
- package/resources/ecc/agents/harness-optimizer.md +12 -2
- package/resources/ecc/agents/healthcare-reviewer.md +92 -0
- package/resources/ecc/agents/homelab-architect.md +107 -0
- package/resources/ecc/agents/java-build-resolver.md +275 -0
- package/resources/ecc/agents/java-reviewer.md +190 -0
- package/resources/ecc/agents/kotlin-build-resolver.md +127 -0
- package/resources/ecc/agents/kotlin-reviewer.md +168 -0
- package/resources/ecc/agents/loop-operator.md +12 -3
- package/resources/ecc/agents/mle-reviewer.md +162 -0
- package/resources/ecc/agents/network-architect.md +106 -0
- package/resources/ecc/agents/network-config-reviewer.md +106 -0
- package/resources/ecc/agents/network-troubleshooter.md +128 -0
- package/resources/ecc/agents/opensource-forker.md +207 -0
- package/resources/ecc/agents/opensource-packager.md +258 -0
- package/resources/ecc/agents/opensource-sanitizer.md +197 -0
- package/resources/ecc/agents/performance-optimizer.md +455 -0
- package/resources/ecc/agents/planner.md +11 -2
- package/resources/ecc/agents/pr-test-analyzer.md +54 -0
- package/resources/ecc/agents/python-reviewer.md +11 -3
- package/resources/ecc/agents/pytorch-build-resolver.md +129 -0
- package/resources/ecc/agents/refactor-cleaner.md +11 -4
- package/resources/ecc/agents/rust-build-resolver.md +157 -0
- package/resources/ecc/agents/rust-reviewer.md +103 -0
- package/resources/ecc/agents/security-reviewer.md +11 -3
- package/resources/ecc/agents/seo-specialist.md +71 -0
- package/resources/ecc/agents/silent-failure-hunter.md +59 -0
- package/resources/ecc/agents/swift-build-resolver.md +170 -0
- package/resources/ecc/agents/swift-reviewer.md +116 -0
- package/resources/ecc/agents/tdd-guide.md +11 -4
- package/resources/ecc/agents/type-design-analyzer.md +50 -0
- package/resources/ecc/agents/typescript-reviewer.md +121 -0
- package/resources/ecc/commands/aside.md +164 -0
- package/resources/ecc/commands/auto-update.md +28 -0
- package/resources/ecc/commands/build-fix.md +66 -0
- package/resources/ecc/commands/checkpoint.md +78 -0
- package/resources/ecc/commands/code-review.md +289 -0
- package/resources/ecc/commands/cost-report.md +107 -0
- package/resources/ecc/commands/cpp-build.md +173 -0
- package/resources/ecc/commands/cpp-review.md +132 -0
- package/resources/ecc/commands/cpp-test.md +251 -0
- package/resources/ecc/commands/ecc-guide.md +93 -0
- package/resources/ecc/commands/evolve.md +178 -0
- package/resources/ecc/commands/fastapi-review.md +39 -0
- package/resources/ecc/commands/feature-dev.md +49 -0
- package/resources/ecc/commands/flutter-build.md +164 -0
- package/resources/ecc/commands/flutter-review.md +116 -0
- package/resources/ecc/commands/flutter-test.md +144 -0
- package/resources/ecc/commands/gan-build.md +103 -0
- package/resources/ecc/commands/gan-design.md +39 -0
- package/resources/ecc/commands/go-build.md +183 -0
- package/resources/ecc/commands/go-review.md +148 -0
- package/resources/ecc/commands/go-test.md +268 -0
- package/resources/ecc/commands/gradle-build.md +70 -0
- package/resources/ecc/commands/harness-audit.md +77 -0
- package/resources/ecc/commands/hookify-configure.md +14 -0
- package/resources/ecc/commands/hookify-help.md +46 -0
- package/resources/ecc/commands/hookify-list.md +21 -0
- package/resources/ecc/commands/hookify.md +50 -0
- package/resources/ecc/commands/instinct-export.md +66 -0
- package/resources/ecc/commands/instinct-import.md +114 -0
- package/resources/ecc/commands/instinct-status.md +59 -0
- package/resources/ecc/commands/jira.md +106 -0
- package/resources/ecc/commands/kotlin-build.md +174 -0
- package/resources/ecc/commands/kotlin-review.md +140 -0
- package/resources/ecc/commands/kotlin-test.md +312 -0
- package/resources/ecc/commands/learn-eval.md +116 -0
- package/resources/ecc/commands/learn.md +74 -0
- package/resources/ecc/commands/loop-start.md +36 -0
- package/resources/ecc/commands/loop-status.md +77 -0
- package/resources/ecc/commands/model-route.md +30 -0
- package/resources/ecc/commands/multi-backend.md +162 -0
- package/resources/ecc/commands/multi-execute.md +319 -0
- package/resources/ecc/commands/multi-frontend.md +162 -0
- package/resources/ecc/commands/multi-plan.md +272 -0
- package/resources/ecc/commands/multi-workflow.md +195 -0
- package/resources/ecc/commands/plan-prd.md +160 -0
- package/resources/ecc/commands/plan.md +200 -0
- package/resources/ecc/commands/pm2.md +276 -0
- package/resources/ecc/commands/pr.md +184 -0
- package/resources/ecc/commands/project-init.md +86 -0
- package/resources/ecc/commands/projects.md +39 -0
- package/resources/ecc/commands/promote.md +41 -0
- package/resources/ecc/commands/prp-commit.md +112 -0
- package/resources/ecc/commands/prp-implement.md +385 -0
- package/resources/ecc/commands/prp-plan.md +502 -0
- package/resources/ecc/commands/prp-pr.md +184 -0
- package/resources/ecc/commands/prp-prd.md +447 -0
- package/resources/ecc/commands/prune.md +31 -0
- package/resources/ecc/commands/python-review.md +297 -0
- package/resources/ecc/commands/quality-gate.md +33 -0
- package/resources/ecc/commands/refactor-clean.md +84 -0
- package/resources/ecc/commands/resume-session.md +156 -0
- package/resources/ecc/commands/review-pr.md +37 -0
- package/resources/ecc/commands/rust-build.md +187 -0
- package/resources/ecc/commands/rust-review.md +142 -0
- package/resources/ecc/commands/rust-test.md +308 -0
- package/resources/ecc/commands/santa-loop.md +175 -0
- package/resources/ecc/commands/save-session.md +275 -0
- package/resources/ecc/commands/security-scan.md +92 -0
- package/resources/ecc/commands/sessions.md +339 -0
- package/resources/ecc/commands/setup-pm.md +80 -0
- package/resources/ecc/commands/skill-create.md +174 -0
- package/resources/ecc/commands/skill-health.md +54 -0
- package/resources/ecc/commands/test-coverage.md +73 -0
- package/resources/ecc/commands/update-codemaps.md +76 -0
- package/resources/ecc/commands/update-docs.md +88 -0
- package/resources/ecc/rules/README.md +120 -0
- package/resources/ecc/rules/angular/coding-style.md +182 -0
- package/resources/ecc/rules/angular/hooks.md +25 -0
- package/resources/ecc/rules/angular/patterns.md +249 -0
- package/resources/ecc/rules/angular/security.md +87 -0
- package/resources/ecc/rules/angular/testing.md +164 -0
- package/resources/ecc/rules/arkts/coding-style.md +153 -0
- package/resources/ecc/rules/arkts/hooks.md +135 -0
- package/resources/ecc/rules/arkts/patterns.md +236 -0
- package/resources/ecc/rules/arkts/security.md +141 -0
- package/resources/ecc/rules/arkts/testing.md +126 -0
- package/resources/ecc/rules/{common-agents.md → common/agents.md} +2 -4
- package/resources/ecc/rules/common/code-review.md +124 -0
- package/resources/ecc/rules/{common-coding-style.md → common/coding-style.md} +42 -4
- package/resources/ecc/rules/common/development-workflow.md +44 -0
- package/resources/ecc/rules/{common-git-workflow.md → common/git-workflow.md} +1 -5
- package/resources/ecc/rules/{common-hooks.md → common/hooks.md} +0 -4
- package/resources/ecc/rules/{common-patterns.md → common/patterns.md} +0 -4
- package/resources/ecc/rules/{common-performance.md → common/performance.md} +0 -4
- package/resources/ecc/rules/{common-security.md → common/security.md} +0 -4
- package/resources/ecc/rules/{common-testing.md → common/testing.md} +28 -4
- package/resources/ecc/rules/cpp/coding-style.md +44 -0
- package/resources/ecc/rules/cpp/hooks.md +39 -0
- package/resources/ecc/rules/cpp/patterns.md +51 -0
- package/resources/ecc/rules/cpp/security.md +51 -0
- package/resources/ecc/rules/cpp/testing.md +44 -0
- package/resources/ecc/rules/csharp/coding-style.md +72 -0
- package/resources/ecc/rules/csharp/hooks.md +25 -0
- package/resources/ecc/rules/csharp/patterns.md +50 -0
- package/resources/ecc/rules/csharp/security.md +58 -0
- package/resources/ecc/rules/csharp/testing.md +46 -0
- package/resources/ecc/rules/dart/coding-style.md +159 -0
- package/resources/ecc/rules/dart/hooks.md +66 -0
- package/resources/ecc/rules/dart/patterns.md +261 -0
- package/resources/ecc/rules/dart/security.md +135 -0
- package/resources/ecc/rules/dart/testing.md +215 -0
- package/resources/ecc/rules/fsharp/coding-style.md +112 -0
- package/resources/ecc/rules/fsharp/hooks.md +26 -0
- package/resources/ecc/rules/fsharp/patterns.md +111 -0
- package/resources/ecc/rules/fsharp/security.md +76 -0
- package/resources/ecc/rules/fsharp/testing.md +62 -0
- package/resources/ecc/rules/{golang-coding-style.md → golang/coding-style.md} +6 -5
- package/resources/ecc/rules/{golang-hooks.md → golang/hooks.md} +5 -4
- package/resources/ecc/rules/{golang-patterns.md → golang/patterns.md} +5 -4
- package/resources/ecc/rules/{golang-security.md → golang/security.md} +5 -4
- package/resources/ecc/rules/{golang-testing.md → golang/testing.md} +5 -4
- package/resources/ecc/rules/java/coding-style.md +114 -0
- package/resources/ecc/rules/java/hooks.md +18 -0
- package/resources/ecc/rules/java/patterns.md +147 -0
- package/resources/ecc/rules/java/security.md +101 -0
- package/resources/ecc/rules/java/testing.md +133 -0
- package/resources/ecc/rules/kotlin/coding-style.md +86 -0
- package/resources/ecc/rules/{kotlin-hooks.md → kotlin/hooks.md} +5 -4
- package/resources/ecc/rules/kotlin/patterns.md +146 -0
- package/resources/ecc/rules/kotlin/security.md +82 -0
- package/resources/ecc/rules/kotlin/testing.md +128 -0
- package/resources/ecc/rules/perl/coding-style.md +46 -0
- package/resources/ecc/rules/perl/hooks.md +22 -0
- package/resources/ecc/rules/perl/patterns.md +76 -0
- package/resources/ecc/rules/perl/security.md +69 -0
- package/resources/ecc/rules/perl/testing.md +54 -0
- package/resources/ecc/rules/php/coding-style.md +40 -0
- package/resources/ecc/rules/{php-hooks.md → php/hooks.md} +7 -4
- package/resources/ecc/rules/php/patterns.md +33 -0
- package/resources/ecc/rules/php/security.md +37 -0
- package/resources/ecc/rules/php/testing.md +39 -0
- package/resources/ecc/rules/{python-coding-style.md → python/coding-style.md} +4 -4
- package/resources/ecc/rules/python/fastapi.md +58 -0
- package/resources/ecc/rules/{python-hooks.md → python/hooks.md} +4 -4
- package/resources/ecc/rules/{python-patterns.md → python/patterns.md} +4 -4
- package/resources/ecc/rules/{python-security.md → python/security.md} +4 -4
- package/resources/ecc/rules/{python-testing.md → python/testing.md} +4 -4
- package/resources/ecc/rules/ruby/coding-style.md +46 -0
- package/resources/ecc/rules/ruby/hooks.md +37 -0
- package/resources/ecc/rules/ruby/patterns.md +44 -0
- package/resources/ecc/rules/ruby/security.md +51 -0
- package/resources/ecc/rules/ruby/testing.md +51 -0
- package/resources/ecc/rules/rust/coding-style.md +151 -0
- package/resources/ecc/rules/rust/hooks.md +16 -0
- package/resources/ecc/rules/rust/patterns.md +168 -0
- package/resources/ecc/rules/rust/security.md +141 -0
- package/resources/ecc/rules/rust/testing.md +154 -0
- package/resources/ecc/rules/{swift-coding-style.md → swift/coding-style.md} +6 -6
- package/resources/ecc/rules/swift/hooks.md +20 -0
- package/resources/ecc/rules/{swift-patterns.md → swift/patterns.md} +5 -5
- package/resources/ecc/rules/{swift-security.md → swift/security.md} +7 -7
- package/resources/ecc/rules/{swift-testing.md → swift/testing.md} +5 -5
- package/resources/ecc/rules/typescript/coding-style.md +199 -0
- package/resources/ecc/rules/{typescript-hooks.md → typescript/hooks.md} +6 -4
- package/resources/ecc/rules/{typescript-patterns.md → typescript/patterns.md} +6 -4
- package/resources/ecc/rules/{typescript-security.md → typescript/security.md} +6 -4
- package/resources/ecc/rules/typescript/testing.md +18 -0
- package/resources/ecc/rules/web/coding-style.md +96 -0
- package/resources/ecc/rules/web/design-quality.md +63 -0
- package/resources/ecc/rules/web/hooks.md +129 -0
- package/resources/ecc/rules/web/patterns.md +79 -0
- package/resources/ecc/rules/web/performance.md +64 -0
- package/resources/ecc/rules/web/security.md +57 -0
- package/resources/ecc/rules/web/testing.md +55 -0
- package/resources/ecc/rules/zh/README.md +108 -0
- package/resources/ecc/rules/zh/agents.md +50 -0
- package/resources/ecc/rules/zh/code-review.md +124 -0
- package/resources/ecc/rules/zh/coding-style.md +48 -0
- package/resources/ecc/rules/zh/development-workflow.md +44 -0
- package/resources/ecc/rules/zh/git-workflow.md +24 -0
- package/resources/ecc/rules/zh/hooks.md +30 -0
- package/resources/ecc/rules/zh/patterns.md +31 -0
- package/resources/ecc/rules/zh/performance.md +55 -0
- package/resources/ecc/rules/zh/security.md +29 -0
- package/resources/ecc/rules/zh/testing.md +29 -0
- package/resources/ecc/skills/accessibility/SKILL.md +146 -0
- package/resources/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
- package/resources/ecc/skills/agent-eval/SKILL.md +145 -0
- package/resources/ecc/skills/agent-harness-construction/SKILL.md +73 -0
- package/resources/ecc/skills/agent-introspection-debugging/SKILL.md +1 -0
- package/resources/ecc/skills/agent-payment-x402/SKILL.md +224 -0
- package/resources/ecc/skills/agent-sort/SKILL.md +1 -0
- package/resources/ecc/skills/agentic-engineering/SKILL.md +63 -0
- package/resources/ecc/skills/agentic-os/SKILL.md +387 -0
- package/resources/ecc/skills/ai-first-engineering/SKILL.md +51 -0
- package/resources/ecc/skills/ai-regression-testing/SKILL.md +385 -0
- package/resources/ecc/skills/android-clean-architecture/SKILL.md +339 -0
- package/resources/ecc/skills/angular-developer/SKILL.md +154 -0
- package/resources/ecc/skills/angular-developer/references/angular-animations.md +160 -0
- package/resources/ecc/skills/angular-developer/references/angular-aria.md +410 -0
- package/resources/ecc/skills/angular-developer/references/cli.md +86 -0
- package/resources/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
- package/resources/ecc/skills/angular-developer/references/component-styling.md +91 -0
- package/resources/ecc/skills/angular-developer/references/components.md +117 -0
- package/resources/ecc/skills/angular-developer/references/creating-services.md +97 -0
- package/resources/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
- package/resources/ecc/skills/angular-developer/references/define-routes.md +67 -0
- package/resources/ecc/skills/angular-developer/references/defining-providers.md +72 -0
- package/resources/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/resources/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
- package/resources/ecc/skills/angular-developer/references/effects.md +83 -0
- package/resources/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/resources/ecc/skills/angular-developer/references/host-elements.md +80 -0
- package/resources/ecc/skills/angular-developer/references/injection-context.md +63 -0
- package/resources/ecc/skills/angular-developer/references/inputs.md +101 -0
- package/resources/ecc/skills/angular-developer/references/linked-signal.md +59 -0
- package/resources/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
- package/resources/ecc/skills/angular-developer/references/mcp.md +108 -0
- package/resources/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/resources/ecc/skills/angular-developer/references/outputs.md +86 -0
- package/resources/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
- package/resources/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/resources/ecc/skills/angular-developer/references/resource.md +77 -0
- package/resources/ecc/skills/angular-developer/references/route-animations.md +56 -0
- package/resources/ecc/skills/angular-developer/references/route-guards.md +52 -0
- package/resources/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/resources/ecc/skills/angular-developer/references/router-testing.md +87 -0
- package/resources/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/resources/ecc/skills/angular-developer/references/signal-forms.md +795 -0
- package/resources/ecc/skills/angular-developer/references/signals-overview.md +94 -0
- package/resources/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
- package/resources/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/resources/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/resources/ecc/skills/api-connector-builder/SKILL.md +120 -0
- package/resources/ecc/skills/api-design/SKILL.md +1 -0
- package/resources/ecc/skills/architecture-decision-records/SKILL.md +179 -0
- package/resources/ecc/skills/article-writing/SKILL.md +1 -0
- package/resources/ecc/skills/automation-audit-ops/SKILL.md +142 -0
- package/resources/ecc/skills/autonomous-agent-harness/SKILL.md +273 -0
- package/resources/ecc/skills/autonomous-loops/SKILL.md +610 -0
- package/resources/ecc/skills/backend-patterns/SKILL.md +8 -44
- package/resources/ecc/skills/benchmark/SKILL.md +93 -0
- package/resources/ecc/skills/blueprint/SKILL.md +105 -0
- package/resources/ecc/skills/brand-voice/SKILL.md +1 -0
- package/resources/ecc/skills/browser-qa/SKILL.md +87 -0
- package/resources/ecc/skills/bun-runtime/SKILL.md +1 -0
- package/resources/ecc/skills/canary-watch/SKILL.md +99 -0
- package/resources/ecc/skills/carrier-relationship-management/SKILL.md +212 -0
- package/resources/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/resources/ecc/skills/ck/SKILL.md +147 -0
- package/resources/ecc/skills/ck/commands/forget.mjs +44 -0
- package/resources/ecc/skills/ck/commands/info.mjs +24 -0
- package/resources/ecc/skills/ck/commands/init.mjs +143 -0
- package/resources/ecc/skills/ck/commands/list.mjs +40 -0
- package/resources/ecc/skills/ck/commands/migrate.mjs +202 -0
- package/resources/ecc/skills/ck/commands/resume.mjs +36 -0
- package/resources/ecc/skills/ck/commands/save.mjs +210 -0
- package/resources/ecc/skills/ck/commands/shared.mjs +387 -0
- package/resources/ecc/skills/ck/hooks/session-start.mjs +224 -0
- package/resources/ecc/skills/claude-devfleet/SKILL.md +103 -0
- package/resources/ecc/skills/click-path-audit/SKILL.md +244 -0
- package/resources/ecc/skills/clickhouse-io/SKILL.md +439 -0
- package/resources/ecc/skills/code-tour/SKILL.md +236 -0
- package/resources/ecc/skills/codebase-onboarding/SKILL.md +233 -0
- package/resources/ecc/skills/coding-standards/SKILL.md +1 -0
- package/resources/ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/resources/ecc/skills/configure-ecc/SKILL.md +384 -0
- package/resources/ecc/skills/connections-optimizer/SKILL.md +189 -0
- package/resources/ecc/skills/content-engine/SKILL.md +1 -0
- package/resources/ecc/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/resources/ecc/skills/context-budget/SKILL.md +135 -0
- package/resources/ecc/skills/continuous-agent-loop/SKILL.md +45 -0
- package/resources/ecc/skills/continuous-learning/SKILL.md +131 -0
- package/resources/ecc/skills/continuous-learning/config.json +18 -0
- package/resources/ecc/skills/continuous-learning/evaluate-session.sh +69 -0
- package/resources/ecc/skills/continuous-learning-v2/SKILL.md +360 -0
- package/resources/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
- package/resources/ecc/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/resources/ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/resources/ecc/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
- package/resources/ecc/skills/continuous-learning-v2/config.json +8 -0
- package/resources/ecc/skills/continuous-learning-v2/hooks/observe.sh +476 -0
- package/resources/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
- package/resources/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
- package/resources/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/resources/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/resources/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
- package/resources/ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/resources/ecc/skills/cost-tracking/SKILL.md +147 -0
- package/resources/ecc/skills/council/SKILL.md +203 -0
- package/resources/ecc/skills/cpp-coding-standards/SKILL.md +723 -0
- package/resources/ecc/skills/cpp-testing/SKILL.md +324 -0
- package/resources/ecc/skills/crosspost/SKILL.md +1 -0
- package/resources/ecc/skills/csharp-testing/SKILL.md +321 -0
- package/resources/ecc/skills/customer-billing-ops/SKILL.md +140 -0
- package/resources/ecc/skills/customs-trade-compliance/SKILL.md +263 -0
- package/resources/ecc/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/resources/ecc/skills/dashboard-builder/SKILL.md +108 -0
- package/resources/ecc/skills/data-scraper-agent/SKILL.md +764 -0
- package/resources/ecc/skills/database-migrations/SKILL.md +429 -0
- package/resources/ecc/skills/deep-research/SKILL.md +5 -0
- package/resources/ecc/skills/defi-amm-security/SKILL.md +166 -0
- package/resources/ecc/skills/deployment-patterns/SKILL.md +427 -0
- package/resources/ecc/skills/design-system/SKILL.md +82 -0
- package/resources/ecc/skills/django-celery/SKILL.md +457 -0
- package/resources/ecc/skills/django-patterns/SKILL.md +734 -0
- package/resources/ecc/skills/django-security/SKILL.md +593 -0
- package/resources/ecc/skills/django-tdd/SKILL.md +729 -0
- package/resources/ecc/skills/django-verification/SKILL.md +469 -0
- package/resources/ecc/skills/dmux-workflows/SKILL.md +52 -4
- package/resources/ecc/skills/docker-patterns/SKILL.md +364 -0
- package/resources/ecc/skills/documentation-lookup/SKILL.md +1 -0
- package/resources/ecc/skills/dotnet-patterns/SKILL.md +321 -0
- package/resources/ecc/skills/e2e-testing/SKILL.md +1 -0
- package/resources/ecc/skills/ecc-guide/SKILL.md +189 -0
- package/resources/ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/resources/ecc/skills/email-ops/SKILL.md +121 -0
- package/resources/ecc/skills/energy-procurement/SKILL.md +228 -0
- package/resources/ecc/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/resources/ecc/skills/error-handling/SKILL.md +376 -0
- package/resources/ecc/skills/eval-harness/SKILL.md +36 -1
- package/resources/ecc/skills/evm-token-decimals/SKILL.md +130 -0
- package/resources/ecc/skills/exa-search/SKILL.md +18 -80
- package/resources/ecc/skills/fal-ai-media/SKILL.md +32 -20
- package/resources/ecc/skills/fastapi-patterns/SKILL.md +327 -0
- package/resources/ecc/skills/finance-billing-ops/SKILL.md +127 -0
- package/resources/ecc/skills/flox-environments/SKILL.md +496 -0
- package/resources/ecc/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/resources/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
- package/resources/ecc/skills/frontend-design-direction/SKILL.md +92 -0
- package/resources/ecc/skills/frontend-patterns/SKILL.md +1 -6
- package/resources/ecc/skills/frontend-slides/SKILL.md +2 -1
- package/resources/ecc/skills/frontend-slides/animation-patterns.md +122 -0
- package/resources/ecc/skills/frontend-slides/html-template.md +419 -0
- package/resources/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/resources/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/resources/ecc/skills/frontend-slides/viewport-base.css +153 -0
- package/resources/ecc/skills/fsharp-testing/SKILL.md +280 -0
- package/resources/ecc/skills/gan-style-harness/SKILL.md +278 -0
- package/resources/ecc/skills/gateguard/SKILL.md +125 -0
- package/resources/ecc/skills/git-workflow/SKILL.md +715 -0
- package/resources/ecc/skills/github-ops/SKILL.md +144 -0
- package/resources/ecc/skills/golang-patterns/SKILL.md +674 -0
- package/resources/ecc/skills/golang-testing/SKILL.md +720 -0
- package/resources/ecc/skills/google-workspace-ops/SKILL.md +95 -0
- package/resources/ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/resources/ecc/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/resources/ecc/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/resources/ecc/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/resources/ecc/skills/hermes-imports/SKILL.md +88 -0
- package/resources/ecc/skills/hexagonal-architecture/SKILL.md +276 -0
- package/resources/ecc/skills/hipaa-compliance/SKILL.md +78 -0
- package/resources/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
- package/resources/ecc/skills/homelab-network-setup/SKILL.md +129 -0
- package/resources/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/resources/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/resources/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/resources/ecc/skills/hookify-rules/SKILL.md +128 -0
- package/resources/ecc/skills/inventory-demand-planning/SKILL.md +247 -0
- package/resources/ecc/skills/investor-materials/SKILL.md +1 -0
- package/resources/ecc/skills/investor-outreach/SKILL.md +1 -0
- package/resources/ecc/skills/ios-icon-gen/SKILL.md +157 -0
- package/resources/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/resources/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/resources/ecc/skills/iterative-retrieval/SKILL.md +211 -0
- package/resources/ecc/skills/java-coding-standards/SKILL.md +383 -0
- package/resources/ecc/skills/jira-integration/SKILL.md +293 -0
- package/resources/ecc/skills/jpa-patterns/SKILL.md +151 -0
- package/resources/ecc/skills/knowledge-ops/SKILL.md +154 -0
- package/resources/ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/resources/ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/resources/ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/resources/ecc/skills/kotlin-patterns/SKILL.md +711 -0
- package/resources/ecc/skills/kotlin-testing/SKILL.md +824 -0
- package/resources/ecc/skills/laravel-patterns/SKILL.md +415 -0
- package/resources/ecc/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/resources/ecc/skills/laravel-security/SKILL.md +285 -0
- package/resources/ecc/skills/laravel-tdd/SKILL.md +283 -0
- package/resources/ecc/skills/laravel-verification/SKILL.md +179 -0
- package/resources/ecc/skills/lead-intelligence/SKILL.md +321 -0
- package/resources/ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/resources/ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/resources/ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/resources/ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/resources/ecc/skills/liquid-glass-design/SKILL.md +279 -0
- package/resources/ecc/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/resources/ecc/skills/logistics-exception-management/SKILL.md +222 -0
- package/resources/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/resources/ecc/skills/manim-video/SKILL.md +89 -0
- package/resources/ecc/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/resources/ecc/skills/market-research/SKILL.md +1 -0
- package/resources/ecc/skills/mcp-server-patterns/SKILL.md +3 -0
- package/resources/ecc/skills/messages-ops/SKILL.md +104 -0
- package/resources/ecc/skills/mle-workflow/SKILL.md +1 -1
- package/resources/ecc/skills/motion-advanced/SKILL.md +596 -0
- package/resources/ecc/skills/motion-foundations/SKILL.md +299 -0
- package/resources/ecc/skills/motion-patterns/SKILL.md +435 -0
- package/resources/ecc/skills/motion-ui/SKILL.md +575 -0
- package/resources/ecc/skills/mysql-patterns/SKILL.md +412 -0
- package/resources/ecc/skills/nanoclaw-repl/SKILL.md +33 -0
- package/resources/ecc/skills/nestjs-patterns/SKILL.md +230 -0
- package/resources/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/resources/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/resources/ecc/skills/network-config-validation/SKILL.md +210 -0
- package/resources/ecc/skills/network-interface-health/SKILL.md +152 -0
- package/resources/ecc/skills/nextjs-turbopack/SKILL.md +1 -0
- package/resources/ecc/skills/nodejs-keccak256/SKILL.md +102 -0
- package/resources/ecc/skills/nutrient-document-processing/SKILL.md +167 -0
- package/resources/ecc/skills/nuxt4-patterns/SKILL.md +100 -0
- package/resources/ecc/skills/openclaw-persona-forge/SKILL.md +288 -0
- package/resources/ecc/skills/openclaw-persona-forge/gacha.py +224 -0
- package/resources/ecc/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/resources/ecc/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/resources/ecc/skills/opensource-pipeline/SKILL.md +255 -0
- package/resources/ecc/skills/perl-patterns/SKILL.md +504 -0
- package/resources/ecc/skills/perl-security/SKILL.md +503 -0
- package/resources/ecc/skills/perl-testing/SKILL.md +475 -0
- package/resources/ecc/skills/plan-orchestrate/SKILL.md +262 -0
- package/resources/ecc/skills/plankton-code-quality/SKILL.md +236 -0
- package/resources/ecc/skills/postgres-patterns/SKILL.md +147 -0
- package/resources/ecc/skills/product-capability/SKILL.md +1 -0
- package/resources/ecc/skills/product-lens/SKILL.md +92 -0
- package/resources/ecc/skills/production-audit/SKILL.md +206 -0
- package/resources/ecc/skills/production-scheduling/SKILL.md +238 -0
- package/resources/ecc/skills/project-flow-ops/SKILL.md +111 -0
- package/resources/ecc/skills/prompt-optimizer/SKILL.md +398 -0
- package/resources/ecc/skills/python-patterns/SKILL.md +750 -0
- package/resources/ecc/skills/python-testing/SKILL.md +816 -0
- package/resources/ecc/skills/pytorch-patterns/SKILL.md +396 -0
- package/resources/ecc/skills/quality-nonconformance/SKILL.md +260 -0
- package/resources/ecc/skills/quarkus-patterns/SKILL.md +722 -0
- package/resources/ecc/skills/quarkus-security/SKILL.md +467 -0
- package/resources/ecc/skills/quarkus-tdd/SKILL.md +811 -0
- package/resources/ecc/skills/quarkus-verification/SKILL.md +479 -0
- package/resources/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/resources/ecc/skills/redis-patterns/SKILL.md +403 -0
- package/resources/ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/resources/ecc/skills/remotion-video-creation/SKILL.md +43 -0
- package/resources/ecc/skills/remotion-video-creation/rules/3d.md +86 -0
- package/resources/ecc/skills/remotion-video-creation/rules/animations.md +29 -0
- package/resources/ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/resources/ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/resources/ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/resources/ecc/skills/remotion-video-creation/rules/assets.md +78 -0
- package/resources/ecc/skills/remotion-video-creation/rules/audio.md +172 -0
- package/resources/ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/resources/ecc/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/resources/ecc/skills/remotion-video-creation/rules/charts.md +58 -0
- package/resources/ecc/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/resources/ecc/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/resources/ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/resources/ecc/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/resources/ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/resources/ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/resources/ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/resources/ecc/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/resources/ecc/skills/remotion-video-creation/rules/images.md +130 -0
- package/resources/ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/resources/ecc/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/resources/ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/resources/ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/resources/ecc/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/resources/ecc/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/resources/ecc/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/resources/ecc/skills/remotion-video-creation/rules/timing.md +179 -0
- package/resources/ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/resources/ecc/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/resources/ecc/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/resources/ecc/skills/remotion-video-creation/rules/videos.md +171 -0
- package/resources/ecc/skills/repo-scan/SKILL.md +78 -0
- package/resources/ecc/skills/research-ops/SKILL.md +112 -0
- package/resources/ecc/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/resources/ecc/skills/rules-distill/SKILL.md +264 -0
- package/resources/ecc/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/resources/ecc/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/resources/ecc/skills/rust-patterns/SKILL.md +499 -0
- package/resources/ecc/skills/rust-testing/SKILL.md +500 -0
- package/resources/ecc/skills/safety-guard/SKILL.md +75 -0
- package/resources/ecc/skills/santa-method/SKILL.md +306 -0
- package/resources/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/resources/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/resources/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/resources/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/resources/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/resources/ecc/skills/search-first/SKILL.md +182 -0
- package/resources/ecc/skills/security-bounty-hunter/SKILL.md +99 -0
- package/resources/ecc/skills/security-review/SKILL.md +11 -2
- package/resources/ecc/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/resources/ecc/skills/security-scan/SKILL.md +165 -0
- package/resources/ecc/skills/seo/SKILL.md +154 -0
- package/resources/ecc/skills/skill-comply/SKILL.md +58 -0
- package/resources/ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/resources/ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/resources/ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/resources/ecc/skills/skill-comply/prompts/classifier.md +24 -0
- package/resources/ecc/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/resources/ecc/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/resources/ecc/skills/skill-comply/pyproject.toml +15 -0
- package/resources/ecc/skills/skill-comply/scripts/__init__.py +0 -0
- package/resources/ecc/skills/skill-comply/scripts/classifier.py +85 -0
- package/resources/ecc/skills/skill-comply/scripts/grader.py +124 -0
- package/resources/ecc/skills/skill-comply/scripts/parser.py +107 -0
- package/resources/ecc/skills/skill-comply/scripts/report.py +170 -0
- package/resources/ecc/skills/skill-comply/scripts/run.py +127 -0
- package/resources/ecc/skills/skill-comply/scripts/runner.py +186 -0
- package/resources/ecc/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/resources/ecc/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/resources/ecc/skills/skill-comply/scripts/utils.py +13 -0
- package/resources/ecc/skills/skill-comply/tests/test_grader.py +197 -0
- package/resources/ecc/skills/skill-comply/tests/test_parser.py +90 -0
- package/resources/ecc/skills/skill-comply/tests/test_runner.py +172 -0
- package/resources/ecc/skills/skill-scout/SKILL.md +140 -0
- package/resources/ecc/skills/skill-stocktake/SKILL.md +194 -0
- package/resources/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/resources/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/resources/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/resources/ecc/skills/social-graph-ranker/SKILL.md +154 -0
- package/resources/ecc/skills/springboot-patterns/SKILL.md +314 -0
- package/resources/ecc/skills/springboot-security/SKILL.md +272 -0
- package/resources/ecc/skills/springboot-tdd/SKILL.md +158 -0
- package/resources/ecc/skills/springboot-verification/SKILL.md +231 -0
- package/resources/ecc/skills/strategic-compact/SKILL.md +31 -2
- package/resources/ecc/skills/strategic-compact/suggest-compact.sh +54 -0
- package/resources/ecc/skills/swift-actor-persistence/SKILL.md +143 -0
- package/resources/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/resources/ecc/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/resources/ecc/skills/swiftui-patterns/SKILL.md +259 -0
- package/resources/ecc/skills/tdd-workflow/SKILL.md +54 -0
- package/resources/ecc/skills/team-builder/SKILL.md +168 -0
- package/resources/ecc/skills/terminal-ops/SKILL.md +109 -0
- package/resources/ecc/skills/tinystruct-patterns/SKILL.md +131 -0
- package/resources/ecc/skills/tinystruct-patterns/references/architecture.md +77 -0
- package/resources/ecc/skills/tinystruct-patterns/references/data-handling.md +35 -0
- package/resources/ecc/skills/tinystruct-patterns/references/routing.md +57 -0
- package/resources/ecc/skills/tinystruct-patterns/references/system-usage.md +74 -0
- package/resources/ecc/skills/tinystruct-patterns/references/testing.md +59 -0
- package/resources/ecc/skills/token-budget-advisor/SKILL.md +133 -0
- package/resources/ecc/skills/ui-demo/SKILL.md +465 -0
- package/resources/ecc/skills/ui-to-vue/SKILL.md +134 -0
- package/resources/ecc/skills/unified-notifications-ops/SKILL.md +187 -0
- package/resources/ecc/skills/verification-loop/SKILL.md +1 -0
- package/resources/ecc/skills/video-editing/SKILL.md +4 -1
- package/resources/ecc/skills/videodb/SKILL.md +374 -0
- package/resources/ecc/skills/videodb/reference/api-reference.md +550 -0
- package/resources/ecc/skills/videodb/reference/capture-reference.md +407 -0
- package/resources/ecc/skills/videodb/reference/capture.md +101 -0
- package/resources/ecc/skills/videodb/reference/editor.md +443 -0
- package/resources/ecc/skills/videodb/reference/generative.md +331 -0
- package/resources/ecc/skills/videodb/reference/rtstream-reference.md +564 -0
- package/resources/ecc/skills/videodb/reference/rtstream.md +65 -0
- package/resources/ecc/skills/videodb/reference/search.md +230 -0
- package/resources/ecc/skills/videodb/reference/streaming.md +406 -0
- package/resources/ecc/skills/videodb/reference/use-cases.md +118 -0
- package/resources/ecc/skills/videodb/scripts/ws_listener.py +282 -0
- package/resources/ecc/skills/visa-doc-translate/README.md +86 -0
- package/resources/ecc/skills/visa-doc-translate/SKILL.md +117 -0
- package/resources/ecc/skills/vite-patterns/SKILL.md +449 -0
- package/resources/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
- package/resources/ecc/skills/workspace-surface-audit/SKILL.md +125 -0
- package/resources/ecc/skills/x-api/SKILL.md +5 -0
- package/resources/ecc/agents/architect.json +0 -16
- package/resources/ecc/agents/build-error-resolver.json +0 -17
- package/resources/ecc/agents/chief-of-staff.json +0 -17
- package/resources/ecc/agents/code-reviewer.json +0 -16
- package/resources/ecc/agents/database-reviewer.json +0 -16
- package/resources/ecc/agents/doc-updater.json +0 -16
- package/resources/ecc/agents/e2e-runner.json +0 -17
- package/resources/ecc/agents/go-build-resolver.json +0 -17
- package/resources/ecc/agents/go-reviewer.json +0 -16
- package/resources/ecc/agents/harness-optimizer.json +0 -15
- package/resources/ecc/agents/loop-operator.json +0 -16
- package/resources/ecc/agents/planner.json +0 -15
- package/resources/ecc/agents/python-reviewer.json +0 -16
- package/resources/ecc/agents/refactor-cleaner.json +0 -17
- package/resources/ecc/agents/security-reviewer.json +0 -16
- package/resources/ecc/agents/tdd-guide.json +0 -17
- package/resources/ecc/commands/add-language-rules.md +0 -39
- package/resources/ecc/commands/database-migration.md +0 -36
- package/resources/ecc/commands/feature-development.md +0 -38
- package/resources/ecc/rules/common-development-workflow.md +0 -33
- package/resources/ecc/rules/kotlin-coding-style.md +0 -39
- package/resources/ecc/rules/kotlin-patterns.md +0 -50
- package/resources/ecc/rules/kotlin-security.md +0 -58
- package/resources/ecc/rules/kotlin-testing.md +0 -38
- package/resources/ecc/rules/php-coding-style.md +0 -25
- package/resources/ecc/rules/php-patterns.md +0 -23
- package/resources/ecc/rules/php-security.md +0 -24
- package/resources/ecc/rules/php-testing.md +0 -26
- package/resources/ecc/rules/swift-hooks.md +0 -20
- package/resources/ecc/rules/typescript-coding-style.md +0 -63
- package/resources/ecc/rules/typescript-testing.md +0 -16
- package/resources/ecc/skills/agent-introspection-debugging/agents/openai.yaml +0 -7
- package/resources/ecc/skills/agent-sort/agents/openai.yaml +0 -7
- package/resources/ecc/skills/api-design/agents/openai.yaml +0 -7
- package/resources/ecc/skills/article-writing/agents/openai.yaml +0 -7
- package/resources/ecc/skills/backend-patterns/agents/openai.yaml +0 -7
- package/resources/ecc/skills/brand-voice/agents/openai.yaml +0 -7
- package/resources/ecc/skills/bun-runtime/agents/openai.yaml +0 -7
- package/resources/ecc/skills/coding-standards/agents/openai.yaml +0 -7
- package/resources/ecc/skills/content-engine/agents/openai.yaml +0 -7
- package/resources/ecc/skills/crosspost/agents/openai.yaml +0 -7
- package/resources/ecc/skills/deep-research/agents/openai.yaml +0 -7
- package/resources/ecc/skills/dmux-workflows/agents/openai.yaml +0 -7
- package/resources/ecc/skills/documentation-lookup/agents/openai.yaml +0 -7
- package/resources/ecc/skills/e2e-testing/agents/openai.yaml +0 -7
- package/resources/ecc/skills/eval-harness/agents/openai.yaml +0 -7
- package/resources/ecc/skills/everything-claude-code/SKILL.md +0 -442
- package/resources/ecc/skills/everything-claude-code/agents/openai.yaml +0 -7
- package/resources/ecc/skills/exa-search/agents/openai.yaml +0 -7
- package/resources/ecc/skills/fal-ai-media/agents/openai.yaml +0 -7
- package/resources/ecc/skills/frontend-patterns/agents/openai.yaml +0 -7
- package/resources/ecc/skills/frontend-slides/agents/openai.yaml +0 -7
- package/resources/ecc/skills/investor-materials/agents/openai.yaml +0 -7
- package/resources/ecc/skills/investor-outreach/agents/openai.yaml +0 -7
- package/resources/ecc/skills/market-research/agents/openai.yaml +0 -7
- package/resources/ecc/skills/mcp-server-patterns/agents/openai.yaml +0 -7
- package/resources/ecc/skills/mle-workflow/agents/openai.yaml +0 -7
- package/resources/ecc/skills/nextjs-turbopack/agents/openai.yaml +0 -7
- package/resources/ecc/skills/product-capability/agents/openai.yaml +0 -7
- package/resources/ecc/skills/security-review/agents/openai.yaml +0 -7
- package/resources/ecc/skills/strategic-compact/agents/openai.yaml +0 -7
- package/resources/ecc/skills/tdd-workflow/agents/openai.yaml +0 -7
- package/resources/ecc/skills/verification-loop/agents/openai.yaml +0 -7
- package/resources/ecc/skills/video-editing/agents/openai.yaml +0 -7
- package/resources/ecc/skills/x-api/agents/openai.yaml +0 -7
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Angular Signals Overview
|
|
2
|
+
|
|
3
|
+
Signals are the foundation of reactivity in modern Angular applications. A **signal** is a wrapper around a value that notifies interested consumers when that value changes.
|
|
4
|
+
|
|
5
|
+
## Writable Signals (`signal`)
|
|
6
|
+
|
|
7
|
+
Use `signal()` to create state that can be directly updated.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import {signal} from '@angular/core';
|
|
11
|
+
|
|
12
|
+
// Create a writable signal
|
|
13
|
+
const count = signal(0);
|
|
14
|
+
|
|
15
|
+
// Read the value (always requires calling the getter function)
|
|
16
|
+
console.log(count());
|
|
17
|
+
|
|
18
|
+
// Update the value directly
|
|
19
|
+
count.set(3);
|
|
20
|
+
|
|
21
|
+
// Update based on the previous value
|
|
22
|
+
count.update((value) => value + 1);
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Exposing as Readonly
|
|
26
|
+
|
|
27
|
+
When exposing state from a service, it is a best practice to expose a readonly version to prevent external mutation.
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
private readonly _count = signal(0);
|
|
31
|
+
// Consumers can read this, but cannot call .set() or .update()
|
|
32
|
+
readonly count = this._count.asReadonly();
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Computed Signals (`computed`)
|
|
36
|
+
|
|
37
|
+
Use `computed()` to create read-only signals that derive their value from other signals.
|
|
38
|
+
|
|
39
|
+
- **Lazily Evaluated**: The derivation function doesn't run until the computed signal is read.
|
|
40
|
+
- **Memoized**: The result is cached. It only recalculates when one of the signals it depends on changes.
|
|
41
|
+
- **Dynamic Dependencies**: Only the signals _actually read_ during the derivation are tracked.
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import {signal, computed} from '@angular/core';
|
|
45
|
+
|
|
46
|
+
const count = signal(0);
|
|
47
|
+
const doubleCount = computed(() => count() * 2);
|
|
48
|
+
|
|
49
|
+
// doubleCount automatically updates when count changes.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Reactive Contexts
|
|
53
|
+
|
|
54
|
+
A **reactive context** is a runtime state where Angular monitors signal reads to establish a dependency.
|
|
55
|
+
|
|
56
|
+
Angular automatically enters a reactive context when evaluating:
|
|
57
|
+
|
|
58
|
+
- `computed` signals
|
|
59
|
+
- `effect` callbacks
|
|
60
|
+
- `linkedSignal` computations
|
|
61
|
+
- Component templates
|
|
62
|
+
|
|
63
|
+
### Untracked Reads (`untracked`)
|
|
64
|
+
|
|
65
|
+
If you need to read a signal inside a reactive context _without_ creating a dependency (so that the context doesn't re-run when the signal changes), use `untracked()`.
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import {effect, untracked} from '@angular/core';
|
|
69
|
+
|
|
70
|
+
effect(() => {
|
|
71
|
+
// This effect only runs when currentUser changes.
|
|
72
|
+
// It does NOT run when counter changes, even though counter is read here.
|
|
73
|
+
console.log(`User: ${currentUser()}, Count: ${untracked(counter)}`);
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Async Operations in Reactive Contexts
|
|
78
|
+
|
|
79
|
+
The reactive context is only active for **synchronous** code. Signal reads after an `await` will not be tracked. **Always read signals before asynchronous boundaries.**
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// Incorrect: theme() is not tracked because it is read after await
|
|
83
|
+
effect(async () => {
|
|
84
|
+
const data = await fetchUserData();
|
|
85
|
+
console.log(theme());
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Correct: Read the signal before the await
|
|
89
|
+
effect(async () => {
|
|
90
|
+
const currentTheme = theme();
|
|
91
|
+
const data = await fetchUserData();
|
|
92
|
+
console.log(currentTheme);
|
|
93
|
+
});
|
|
94
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Using Tailwind CSS with Angular
|
|
2
|
+
|
|
3
|
+
Tailwind CSS is a utility-first CSS framework that integrates seamlessly with Angular.
|
|
4
|
+
|
|
5
|
+
**CRITICAL AGENT GUIDANCE: ALWAYS focus on Tailwind CSS v4 practices. DO NOT revert to old Tailwind v3 patterns (like creating `tailwind.config.js` with `@tailwind` directives) as this will break the application build. Modern Angular projects use Tailwind v4.**
|
|
6
|
+
|
|
7
|
+
## Automated Setup (Recommended)
|
|
8
|
+
|
|
9
|
+
The easiest way to add Tailwind CSS to an Angular project is via the Angular CLI:
|
|
10
|
+
|
|
11
|
+
```shell
|
|
12
|
+
ng add tailwindcss
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This will automatically:
|
|
16
|
+
|
|
17
|
+
1. Install `tailwindcss` and peer dependencies.
|
|
18
|
+
2. Configure the project to use Tailwind CSS.
|
|
19
|
+
3. Add the proper import to your global styles.
|
|
20
|
+
|
|
21
|
+
## Manual Setup (Tailwind v4)
|
|
22
|
+
|
|
23
|
+
If setting up manually, use the following Tailwind v4 pattern:
|
|
24
|
+
|
|
25
|
+
### 1. Install Dependencies
|
|
26
|
+
|
|
27
|
+
Install Tailwind CSS and PostCSS:
|
|
28
|
+
|
|
29
|
+
```shell
|
|
30
|
+
npm install tailwindcss @tailwindcss/postcss postcss
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Configure PostCSS
|
|
34
|
+
|
|
35
|
+
Create a `.postcssrc.json` file in the project root:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"plugins": {
|
|
40
|
+
"@tailwindcss/postcss": {}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
_(Do NOT create a `tailwind.config.js` file! Configuration in v4 is handled through CSS variables)._
|
|
46
|
+
|
|
47
|
+
### 3. Import Tailwind CSS
|
|
48
|
+
|
|
49
|
+
In your global styles file (e.g., `src/styles.css`), add the standard v4 import:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
@import 'tailwindcss';
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
_(If using SCSS, use `@use 'tailwindcss';` instead)._
|
|
56
|
+
|
|
57
|
+
### 4. Use Utility Classes
|
|
58
|
+
|
|
59
|
+
You can now use Tailwind classes directly in your component templates:
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<h1 class="text-3xl font-bold underline">Hello world!</h1>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Summary for AI Agents
|
|
66
|
+
|
|
67
|
+
- **Do not use `@tailwind base; @tailwind components; @tailwind utilities;`**. Use `@import 'tailwindcss';`.
|
|
68
|
+
- **Do not create `tailwind.config.js`**. Configuration is managed directly in CSS via theme variables or using PostCSS configurations.
|
|
69
|
+
- Stick strictly to v4 syntax and workflows.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Template-Driven Forms
|
|
2
|
+
|
|
3
|
+
Template-driven forms use two-way data binding (`[(ngModel)]`) to update the data model in the component as changes are made in the template and vice versa. They are ideal for simple forms and use directives in the HTML template to manage form state and validation.
|
|
4
|
+
|
|
5
|
+
## Core Directives
|
|
6
|
+
|
|
7
|
+
Template-driven forms rely on the `FormsModule` which provides these key directives:
|
|
8
|
+
|
|
9
|
+
- `NgModel`: Reconciles value changes in the form element with the data model (`[(ngModel)]`).
|
|
10
|
+
- `NgForm`: Automatically creates a top-level `FormGroup` bound to the `<form>` tag.
|
|
11
|
+
- `NgModelGroup`: Creates a nested `FormGroup` bound to a DOM element.
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
First, import `FormsModule` into your component or module.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {Component} from '@angular/core';
|
|
19
|
+
import {FormsModule} from '@angular/forms';
|
|
20
|
+
|
|
21
|
+
@Component({
|
|
22
|
+
selector: 'app-user-form',
|
|
23
|
+
imports: [FormsModule],
|
|
24
|
+
templateUrl: './user-form.component.html',
|
|
25
|
+
})
|
|
26
|
+
export class UserForm {
|
|
27
|
+
user = {name: '', role: 'Guest'};
|
|
28
|
+
|
|
29
|
+
onSubmit() {
|
|
30
|
+
console.log('Form submitted!', this.user);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Building the Form Template
|
|
36
|
+
|
|
37
|
+
### Two-Way Binding with `[(ngModel)]`
|
|
38
|
+
|
|
39
|
+
Use `[(ngModel)]` on input elements. **Every element using `[(ngModel)]` MUST have a `name` attribute.** Angular uses the `name` attribute to register the control with the parent `NgForm`.
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<form #userForm="ngForm" (ngSubmit)="onSubmit()">
|
|
43
|
+
<!-- Basic Input -->
|
|
44
|
+
<div>
|
|
45
|
+
<label for="name">Name:</label>
|
|
46
|
+
<input type="text" id="name" required [(ngModel)]="user.name" name="name" #nameCtrl="ngModel" />
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<!-- Select Box -->
|
|
50
|
+
<div>
|
|
51
|
+
<label for="role">Role:</label>
|
|
52
|
+
<select id="role" [(ngModel)]="user.role" name="role">
|
|
53
|
+
<option value="Admin">Admin</option>
|
|
54
|
+
<option value="Guest">Guest</option>
|
|
55
|
+
</select>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<!-- Submit Button (disabled if form is invalid) -->
|
|
59
|
+
<button type="submit" [disabled]="!userForm.form.valid">Submit</button>
|
|
60
|
+
</form>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Form and Control State
|
|
64
|
+
|
|
65
|
+
Angular automatically applies CSS classes to controls and forms based on their state:
|
|
66
|
+
|
|
67
|
+
| State | Class if True | Class if False |
|
|
68
|
+
| :------------- | :-------------------------------- | :------------- |
|
|
69
|
+
| Visited | `ng-touched` | `ng-untouched` |
|
|
70
|
+
| Value Changed | `ng-dirty` | `ng-pristine` |
|
|
71
|
+
| Value is Valid | `ng-valid` | `ng-invalid` |
|
|
72
|
+
| Form Submitted | `ng-submitted` (on `<form>` only) | - |
|
|
73
|
+
|
|
74
|
+
You can use these classes to provide visual feedback in your CSS:
|
|
75
|
+
|
|
76
|
+
```css
|
|
77
|
+
.ng-valid[required],
|
|
78
|
+
.ng-valid.required {
|
|
79
|
+
border-left: 5px solid #42a948; /* green */
|
|
80
|
+
}
|
|
81
|
+
.ng-invalid:not(form) {
|
|
82
|
+
border-left: 5px solid #a94442; /* red */
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Validation and Error Messages
|
|
87
|
+
|
|
88
|
+
To display error messages conditionally, export the `ngModel` directive to a template reference variable (e.g., `#nameCtrl="ngModel"`).
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<input type="text" id="name" required [(ngModel)]="user.name" name="name" #nameCtrl="ngModel" />
|
|
92
|
+
|
|
93
|
+
<!-- Show error only if the control is invalid AND (touched OR dirty) -->
|
|
94
|
+
@if (nameCtrl.invalid && (nameCtrl.dirty || nameCtrl.touched)) {
|
|
95
|
+
<div class="alert alert-danger">
|
|
96
|
+
@if (nameCtrl.errors?.['required']) {
|
|
97
|
+
<div>Name is required.</div>
|
|
98
|
+
}
|
|
99
|
+
</div>
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Submitting the Form
|
|
104
|
+
|
|
105
|
+
1. Use the `(ngSubmit)` event on the `<form>` element.
|
|
106
|
+
2. Bind the submit button's disabled state to the overall form validity using the `NgForm` template reference variable (e.g., `[disabled]="!userForm.form.valid"`).
|
|
107
|
+
|
|
108
|
+
## Resetting the Form
|
|
109
|
+
|
|
110
|
+
To programmatically reset the form to its pristine state (clearing values and validation flags), use the `reset()` method on the `NgForm` instance.
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<button type="button" (click)="userForm.reset()">Reset</button>
|
|
114
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Testing Fundamentals
|
|
2
|
+
|
|
3
|
+
This guide covers the fundamental principles and practices for writing Angular unit and component tests. Use the runner already configured in the project.
|
|
4
|
+
|
|
5
|
+
## Core Philosophy: Async-First
|
|
6
|
+
|
|
7
|
+
Modern Angular applications often schedule state changes asynchronously, especially when using signals or zoneless change detection. Tests should account for this.
|
|
8
|
+
|
|
9
|
+
Prefer the "Act, Wait, Assert" pattern:
|
|
10
|
+
|
|
11
|
+
1. **Act:** Update state or perform an action (e.g., set a component input, click a button).
|
|
12
|
+
2. **Wait:** Use `await fixture.whenStable()` to allow the framework to process the scheduled update and render the changes.
|
|
13
|
+
3. **Assert:** Verify the outcome.
|
|
14
|
+
|
|
15
|
+
### Basic Test Structure Example
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
|
19
|
+
import {MyComponent} from './my.component';
|
|
20
|
+
|
|
21
|
+
describe('MyComponent', () => {
|
|
22
|
+
let component: MyComponent;
|
|
23
|
+
let fixture: ComponentFixture<MyComponent>;
|
|
24
|
+
let h1: HTMLElement;
|
|
25
|
+
|
|
26
|
+
beforeEach(async () => {
|
|
27
|
+
// 1. Configure the test module
|
|
28
|
+
await TestBed.configureTestingModule({
|
|
29
|
+
imports: [MyComponent],
|
|
30
|
+
}).compileComponents();
|
|
31
|
+
|
|
32
|
+
// 2. Create the component fixture
|
|
33
|
+
fixture = TestBed.createComponent(MyComponent);
|
|
34
|
+
component = fixture.componentInstance;
|
|
35
|
+
h1 = fixture.nativeElement.querySelector('h1');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('should display the default title', async () => {
|
|
39
|
+
// ACT: (Implicit) Component is created with default state.
|
|
40
|
+
// WAIT for initial data binding.
|
|
41
|
+
await fixture.whenStable();
|
|
42
|
+
// ASSERT the initial state.
|
|
43
|
+
expect(h1.textContent).toContain('Default Title');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should display a different title after a change', async () => {
|
|
47
|
+
// ACT: Change the component's title property.
|
|
48
|
+
component.title.set('New Test Title');
|
|
49
|
+
|
|
50
|
+
// WAIT for the asynchronous update to complete.
|
|
51
|
+
await fixture.whenStable();
|
|
52
|
+
|
|
53
|
+
// ASSERT the DOM has been updated.
|
|
54
|
+
expect(h1.textContent).toContain('New Test Title');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## TestBed and ComponentFixture
|
|
60
|
+
|
|
61
|
+
- **`TestBed`**: The primary utility for creating a test-specific Angular module. Use `TestBed.configureTestingModule({...})` in your `beforeEach` to declare components, provide services, and set up imports needed for your test.
|
|
62
|
+
- **`ComponentFixture`**: A handle on the created component instance and its environment.
|
|
63
|
+
- `fixture.componentInstance`: Access the component's class instance.
|
|
64
|
+
- `fixture.nativeElement`: Access the component's root DOM element.
|
|
65
|
+
- `fixture.debugElement`: An Angular-specific wrapper around the `nativeElement` that provides safer, platform-agnostic ways to query the DOM (e.g., `debugElement.query(By.css('p'))`).
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-connector-builder
|
|
3
|
+
description: Build a new API connector or provider by matching the target repo's existing integration pattern exactly. Use when adding one more integration without inventing a second architecture.
|
|
4
|
+
origin: ECC direct-port adaptation
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# API Connector Builder
|
|
9
|
+
|
|
10
|
+
Use this when the job is to add a repo-native integration surface, not just a generic HTTP client.
|
|
11
|
+
|
|
12
|
+
The point is to match the host repository's pattern:
|
|
13
|
+
|
|
14
|
+
- connector layout
|
|
15
|
+
- config schema
|
|
16
|
+
- auth model
|
|
17
|
+
- error handling
|
|
18
|
+
- test style
|
|
19
|
+
- registration/discovery wiring
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- "Build a Jira connector for this project"
|
|
24
|
+
- "Add a Slack provider following the existing pattern"
|
|
25
|
+
- "Create a new integration for this API"
|
|
26
|
+
- "Build a plugin that matches the repo's connector style"
|
|
27
|
+
|
|
28
|
+
## Guardrails
|
|
29
|
+
|
|
30
|
+
- do not invent a new integration architecture when the repo already has one
|
|
31
|
+
- do not start from vendor docs alone; start from existing in-repo connectors first
|
|
32
|
+
- do not stop at transport code if the repo expects registry wiring, tests, and docs
|
|
33
|
+
- do not cargo-cult old connectors if the repo has a newer current pattern
|
|
34
|
+
|
|
35
|
+
## Workflow
|
|
36
|
+
|
|
37
|
+
### 1. Learn the house style
|
|
38
|
+
|
|
39
|
+
Inspect at least 2 existing connectors/providers and map:
|
|
40
|
+
|
|
41
|
+
- file layout
|
|
42
|
+
- abstraction boundaries
|
|
43
|
+
- config model
|
|
44
|
+
- retry / pagination conventions
|
|
45
|
+
- registry hooks
|
|
46
|
+
- test fixtures and naming
|
|
47
|
+
|
|
48
|
+
### 2. Narrow the target integration
|
|
49
|
+
|
|
50
|
+
Define only the surface the repo actually needs:
|
|
51
|
+
|
|
52
|
+
- auth flow
|
|
53
|
+
- key entities
|
|
54
|
+
- core read/write operations
|
|
55
|
+
- pagination and rate limits
|
|
56
|
+
- webhook or polling model
|
|
57
|
+
|
|
58
|
+
### 3. Build in repo-native layers
|
|
59
|
+
|
|
60
|
+
Typical slices:
|
|
61
|
+
|
|
62
|
+
- config/schema
|
|
63
|
+
- client/transport
|
|
64
|
+
- mapping layer
|
|
65
|
+
- connector/provider entrypoint
|
|
66
|
+
- registration
|
|
67
|
+
- tests
|
|
68
|
+
|
|
69
|
+
### 4. Validate against the source pattern
|
|
70
|
+
|
|
71
|
+
The new connector should look obvious in the codebase, not imported from a different ecosystem.
|
|
72
|
+
|
|
73
|
+
## Reference Shapes
|
|
74
|
+
|
|
75
|
+
### Provider-style
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
providers/
|
|
79
|
+
existing_provider/
|
|
80
|
+
__init__.py
|
|
81
|
+
provider.py
|
|
82
|
+
config.py
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Connector-style
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
integrations/
|
|
89
|
+
existing/
|
|
90
|
+
client.py
|
|
91
|
+
models.py
|
|
92
|
+
connector.py
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### TypeScript plugin-style
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
src/integrations/
|
|
99
|
+
existing/
|
|
100
|
+
index.ts
|
|
101
|
+
client.ts
|
|
102
|
+
types.ts
|
|
103
|
+
test.ts
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Quality Checklist
|
|
107
|
+
|
|
108
|
+
- [ ] matches an existing in-repo integration pattern
|
|
109
|
+
- [ ] config validation exists
|
|
110
|
+
- [ ] auth and error handling are explicit
|
|
111
|
+
- [ ] pagination/retry behavior follows repo norms
|
|
112
|
+
- [ ] registry/discovery wiring is complete
|
|
113
|
+
- [ ] tests mirror the host repo's style
|
|
114
|
+
- [ ] docs/examples are updated if expected by the repo
|
|
115
|
+
|
|
116
|
+
## Related Skills
|
|
117
|
+
|
|
118
|
+
- `backend-patterns`
|
|
119
|
+
- `mcp-server-patterns`
|
|
120
|
+
- `github-ops`
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture-decision-records
|
|
3
|
+
description: Capture architectural decisions made during Claude Code sessions as structured ADRs. Auto-detects decision moments, records context, alternatives considered, and rationale. Maintains an ADR log so future developers understand why the codebase is shaped the way it is.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Architecture Decision Records
|
|
8
|
+
|
|
9
|
+
Capture architectural decisions as they happen during coding sessions. Instead of decisions living only in Slack threads, PR comments, or someone's memory, this skill produces structured ADR documents that live alongside the code.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- User explicitly says "let's record this decision" or "ADR this"
|
|
14
|
+
- User chooses between significant alternatives (framework, library, pattern, database, API design)
|
|
15
|
+
- User says "we decided to..." or "the reason we're doing X instead of Y is..."
|
|
16
|
+
- User asks "why did we choose X?" (read existing ADRs)
|
|
17
|
+
- During planning phases when architectural trade-offs are discussed
|
|
18
|
+
|
|
19
|
+
## ADR Format
|
|
20
|
+
|
|
21
|
+
Use the lightweight ADR format proposed by Michael Nygard, adapted for AI-assisted development:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# ADR-NNNN: [Decision Title]
|
|
25
|
+
|
|
26
|
+
**Date**: YYYY-MM-DD
|
|
27
|
+
**Status**: proposed | accepted | deprecated | superseded by ADR-NNNN
|
|
28
|
+
**Deciders**: [who was involved]
|
|
29
|
+
|
|
30
|
+
## Context
|
|
31
|
+
|
|
32
|
+
What is the issue that we're seeing that is motivating this decision or change?
|
|
33
|
+
|
|
34
|
+
[2-5 sentences describing the situation, constraints, and forces at play]
|
|
35
|
+
|
|
36
|
+
## Decision
|
|
37
|
+
|
|
38
|
+
What is the change that we're proposing and/or doing?
|
|
39
|
+
|
|
40
|
+
[1-3 sentences stating the decision clearly]
|
|
41
|
+
|
|
42
|
+
## Alternatives Considered
|
|
43
|
+
|
|
44
|
+
### Alternative 1: [Name]
|
|
45
|
+
- **Pros**: [benefits]
|
|
46
|
+
- **Cons**: [drawbacks]
|
|
47
|
+
- **Why not**: [specific reason this was rejected]
|
|
48
|
+
|
|
49
|
+
### Alternative 2: [Name]
|
|
50
|
+
- **Pros**: [benefits]
|
|
51
|
+
- **Cons**: [drawbacks]
|
|
52
|
+
- **Why not**: [specific reason this was rejected]
|
|
53
|
+
|
|
54
|
+
## Consequences
|
|
55
|
+
|
|
56
|
+
What becomes easier or more difficult to do because of this change?
|
|
57
|
+
|
|
58
|
+
### Positive
|
|
59
|
+
- [benefit 1]
|
|
60
|
+
- [benefit 2]
|
|
61
|
+
|
|
62
|
+
### Negative
|
|
63
|
+
- [trade-off 1]
|
|
64
|
+
- [trade-off 2]
|
|
65
|
+
|
|
66
|
+
### Risks
|
|
67
|
+
- [risk and mitigation]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Workflow
|
|
71
|
+
|
|
72
|
+
### Capturing a New ADR
|
|
73
|
+
|
|
74
|
+
When a decision moment is detected:
|
|
75
|
+
|
|
76
|
+
1. **Initialize (first time only)** — if `docs/adr/` does not exist, ask the user for confirmation before creating the directory, a `README.md` seeded with the index table header (see ADR Index Format below), and a blank `template.md` for manual use. Do not create files without explicit consent.
|
|
77
|
+
2. **Identify the decision** — extract the core architectural choice being made
|
|
78
|
+
3. **Gather context** — what problem prompted this? What constraints exist?
|
|
79
|
+
4. **Document alternatives** — what other options were considered? Why were they rejected?
|
|
80
|
+
5. **State consequences** — what are the trade-offs? What becomes easier/harder?
|
|
81
|
+
6. **Assign a number** — scan existing ADRs in `docs/adr/` and increment
|
|
82
|
+
7. **Confirm and write** — present the draft ADR to the user for review. Only write to `docs/adr/NNNN-decision-title.md` after explicit approval. If the user declines, discard the draft without writing any files.
|
|
83
|
+
8. **Update the index** — append to `docs/adr/README.md`
|
|
84
|
+
|
|
85
|
+
### Reading Existing ADRs
|
|
86
|
+
|
|
87
|
+
When a user asks "why did we choose X?":
|
|
88
|
+
|
|
89
|
+
1. Check if `docs/adr/` exists — if not, respond: "No ADRs found in this project. Would you like to start recording architectural decisions?"
|
|
90
|
+
2. If it exists, scan `docs/adr/README.md` index for relevant entries
|
|
91
|
+
3. Read matching ADR files and present the Context and Decision sections
|
|
92
|
+
4. If no match is found, respond: "No ADR found for that decision. Would you like to record one now?"
|
|
93
|
+
|
|
94
|
+
### ADR Directory Structure
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
docs/
|
|
98
|
+
└── adr/
|
|
99
|
+
├── README.md ← index of all ADRs
|
|
100
|
+
├── 0001-use-nextjs.md
|
|
101
|
+
├── 0002-postgres-over-mongo.md
|
|
102
|
+
├── 0003-rest-over-graphql.md
|
|
103
|
+
└── template.md ← blank template for manual use
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### ADR Index Format
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
# Architecture Decision Records
|
|
110
|
+
|
|
111
|
+
| ADR | Title | Status | Date |
|
|
112
|
+
|-----|-------|--------|------|
|
|
113
|
+
| [0001](0001-use-nextjs.md) | Use Next.js as frontend framework | accepted | 2026-01-15 |
|
|
114
|
+
| [0002](0002-postgres-over-mongo.md) | PostgreSQL over MongoDB for primary datastore | accepted | 2026-01-20 |
|
|
115
|
+
| [0003](0003-rest-over-graphql.md) | REST API over GraphQL | accepted | 2026-02-01 |
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Decision Detection Signals
|
|
119
|
+
|
|
120
|
+
Watch for these patterns in conversation that indicate an architectural decision:
|
|
121
|
+
|
|
122
|
+
**Explicit signals**
|
|
123
|
+
- "Let's go with X"
|
|
124
|
+
- "We should use X instead of Y"
|
|
125
|
+
- "The trade-off is worth it because..."
|
|
126
|
+
- "Record this as an ADR"
|
|
127
|
+
|
|
128
|
+
**Implicit signals** (suggest recording an ADR — do not auto-create without user confirmation)
|
|
129
|
+
- Comparing two frameworks or libraries and reaching a conclusion
|
|
130
|
+
- Making a database schema design choice with stated rationale
|
|
131
|
+
- Choosing between architectural patterns (monolith vs microservices, REST vs GraphQL)
|
|
132
|
+
- Deciding on authentication/authorization strategy
|
|
133
|
+
- Selecting deployment infrastructure after evaluating alternatives
|
|
134
|
+
|
|
135
|
+
## What Makes a Good ADR
|
|
136
|
+
|
|
137
|
+
### Do
|
|
138
|
+
- **Be specific** — "Use Prisma ORM" not "use an ORM"
|
|
139
|
+
- **Record the why** — the rationale matters more than the what
|
|
140
|
+
- **Include rejected alternatives** — future developers need to know what was considered
|
|
141
|
+
- **State consequences honestly** — every decision has trade-offs
|
|
142
|
+
- **Keep it short** — an ADR should be readable in 2 minutes
|
|
143
|
+
- **Use present tense** — "We use X" not "We will use X"
|
|
144
|
+
|
|
145
|
+
### Don't
|
|
146
|
+
- Record trivial decisions — variable naming or formatting choices don't need ADRs
|
|
147
|
+
- Write essays — if the context section exceeds 10 lines, it's too long
|
|
148
|
+
- Omit alternatives — "we just picked it" is not a valid rationale
|
|
149
|
+
- Backfill without marking it — if recording a past decision, note the original date
|
|
150
|
+
- Let ADRs go stale — superseded decisions should reference their replacement
|
|
151
|
+
|
|
152
|
+
## ADR Lifecycle
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
proposed → accepted → [deprecated | superseded by ADR-NNNN]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
- **proposed**: decision is under discussion, not yet committed
|
|
159
|
+
- **accepted**: decision is in effect and being followed
|
|
160
|
+
- **deprecated**: decision is no longer relevant (e.g., feature removed)
|
|
161
|
+
- **superseded**: a newer ADR replaces this one (always link the replacement)
|
|
162
|
+
|
|
163
|
+
## Categories of Decisions Worth Recording
|
|
164
|
+
|
|
165
|
+
| Category | Examples |
|
|
166
|
+
|----------|---------|
|
|
167
|
+
| **Technology choices** | Framework, language, database, cloud provider |
|
|
168
|
+
| **Architecture patterns** | Monolith vs microservices, event-driven, CQRS |
|
|
169
|
+
| **API design** | REST vs GraphQL, versioning strategy, auth mechanism |
|
|
170
|
+
| **Data modeling** | Schema design, normalization decisions, caching strategy |
|
|
171
|
+
| **Infrastructure** | Deployment model, CI/CD pipeline, monitoring stack |
|
|
172
|
+
| **Security** | Auth strategy, encryption approach, secret management |
|
|
173
|
+
| **Testing** | Test framework, coverage targets, E2E vs integration balance |
|
|
174
|
+
| **Process** | Branching strategy, review process, release cadence |
|
|
175
|
+
|
|
176
|
+
## Integration with Other Skills
|
|
177
|
+
|
|
178
|
+
- **Planner agent**: when the planner proposes architecture changes, suggest creating an ADR
|
|
179
|
+
- **Code reviewer agent**: flag PRs that introduce architectural changes without a corresponding ADR
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: article-writing
|
|
3
3
|
description: Write articles, guides, blog posts, tutorials, newsletter issues, and other long-form content in a distinctive voice derived from supplied examples or brand guidance. Use when the user wants polished written content longer than a paragraph, especially when voice consistency, structure, and credibility matter.
|
|
4
|
+
origin: ECC
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Article Writing
|