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,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/module.json5"
|
|
6
|
+
- "**/oh-package.json5"
|
|
7
|
+
---
|
|
8
|
+
# HarmonyOS / ArkTS Hooks
|
|
9
|
+
|
|
10
|
+
> This file extends [common/hooks.md](../common/hooks.md) with HarmonyOS-specific build and validation hooks.
|
|
11
|
+
|
|
12
|
+
## Build Commands
|
|
13
|
+
|
|
14
|
+
### HAP Package Build
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Build HAP package (global hvigor environment)
|
|
18
|
+
hvigorw assembleHap -p product=default
|
|
19
|
+
|
|
20
|
+
# Build with specific module
|
|
21
|
+
hvigorw assembleHap -p module=entry -p product=default
|
|
22
|
+
|
|
23
|
+
# Clean build
|
|
24
|
+
hvigorw clean
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### DevEco Studio CLI
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Check project structure
|
|
31
|
+
hvigorw --version
|
|
32
|
+
|
|
33
|
+
# Install dependencies
|
|
34
|
+
ohpm install
|
|
35
|
+
|
|
36
|
+
# Update dependencies
|
|
37
|
+
ohpm update
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Recommended PostToolUse Hooks
|
|
41
|
+
|
|
42
|
+
### After Editing .ets/.ts Files
|
|
43
|
+
|
|
44
|
+
Run hvigor build to check for ArkTS compilation errors:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"type": "PostToolUse",
|
|
49
|
+
"matcher": {
|
|
50
|
+
"tool": ["Edit", "Write"],
|
|
51
|
+
"filePath": ["**/*.ets", "**/*.ts"]
|
|
52
|
+
},
|
|
53
|
+
"hooks": [
|
|
54
|
+
{
|
|
55
|
+
"command": "hvigorw assembleHap -p product=default 2>&1 | tail -20",
|
|
56
|
+
"async": true,
|
|
57
|
+
"timeout": 60000
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### After Editing module.json5
|
|
64
|
+
|
|
65
|
+
Validate permission and ability declarations:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"type": "PostToolUse",
|
|
70
|
+
"matcher": {
|
|
71
|
+
"tool": "Edit",
|
|
72
|
+
"filePath": "**/module.json5"
|
|
73
|
+
},
|
|
74
|
+
"hooks": [
|
|
75
|
+
{
|
|
76
|
+
"command": "echo '[HarmonyOS] module.json5 modified - verify permissions and abilities'",
|
|
77
|
+
"async": false
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### After Editing oh-package.json5
|
|
84
|
+
|
|
85
|
+
Reinstall dependencies:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"type": "PostToolUse",
|
|
90
|
+
"matcher": {
|
|
91
|
+
"tool": "Edit",
|
|
92
|
+
"filePath": "**/oh-package.json5"
|
|
93
|
+
},
|
|
94
|
+
"hooks": [
|
|
95
|
+
{
|
|
96
|
+
"command": "ohpm install 2>&1 | tail -10",
|
|
97
|
+
"async": true,
|
|
98
|
+
"timeout": 30000
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## PreToolUse Hooks
|
|
105
|
+
|
|
106
|
+
### V1 Decorator Guard
|
|
107
|
+
|
|
108
|
+
Warn when code contains V1 state management decorators:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"type": "PreToolUse",
|
|
113
|
+
"matcher": {
|
|
114
|
+
"tool": ["Write", "Edit"],
|
|
115
|
+
"filePath": "**/*.ets"
|
|
116
|
+
},
|
|
117
|
+
"hooks": [
|
|
118
|
+
{
|
|
119
|
+
"command": "echo '[HarmonyOS] Reminder: Use @ComponentV2 / @Local / @Param - V1 decorators (@State, @Prop, @Link) are prohibited'"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Validation Checklist
|
|
126
|
+
|
|
127
|
+
After each implementation cycle, verify:
|
|
128
|
+
|
|
129
|
+
- [ ] `hvigorw assembleHap` completes without errors
|
|
130
|
+
- [ ] No V1 decorators in new or modified `.ets` files
|
|
131
|
+
- [ ] No `@ohos.router` imports in new or modified files
|
|
132
|
+
- [ ] All API permissions declared in `module.json5`
|
|
133
|
+
- [ ] All dependencies listed in `oh-package.json5`
|
|
134
|
+
- [ ] Resource strings added to all i18n directories
|
|
135
|
+
- [ ] Dark theme colors provided for new color resources
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
---
|
|
6
|
+
# HarmonyOS / ArkTS Patterns
|
|
7
|
+
|
|
8
|
+
> This file extends [common/patterns.md](../common/patterns.md) with HarmonyOS and ArkTS-specific patterns.
|
|
9
|
+
|
|
10
|
+
## State Management: V2 Only
|
|
11
|
+
|
|
12
|
+
**MUST use** ArkUI State Management V2. V1 decorators are deprecated and must not be used.
|
|
13
|
+
|
|
14
|
+
### V2 Decorators
|
|
15
|
+
|
|
16
|
+
| Decorator | Purpose |
|
|
17
|
+
|-----------|---------|
|
|
18
|
+
| `@ComponentV2` | Marks a struct as a V2 component |
|
|
19
|
+
| `@Local` | Local state within a component |
|
|
20
|
+
| `@Param` | Props received from parent (read-only) |
|
|
21
|
+
| `@Event` | Callback events from child to parent |
|
|
22
|
+
| `@Provider` | Provides state to descendant components |
|
|
23
|
+
| `@Consumer` | Consumes state from ancestor `@Provider` |
|
|
24
|
+
| `@Monitor` | Watches for state changes (replaces V1 `@Watch`) |
|
|
25
|
+
| `@Computed` | Derived/computed values |
|
|
26
|
+
| `@ObservedV2` | Makes a class observable for V2 state management |
|
|
27
|
+
| `@Trace` | Marks observable properties in `@ObservedV2` classes |
|
|
28
|
+
|
|
29
|
+
### Prohibited V1 Decorators
|
|
30
|
+
|
|
31
|
+
Never use: `@State`, `@Prop`, `@Link`, `@ObjectLink`, `@Observed`, `@Provide`, `@Consume`, `@Watch`, `@Component` (use `@ComponentV2` instead).
|
|
32
|
+
|
|
33
|
+
### V2 Component Example
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
@ObservedV2
|
|
37
|
+
class UserModel {
|
|
38
|
+
@Trace name: string = ''
|
|
39
|
+
@Trace age: number = 0
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@ComponentV2
|
|
43
|
+
struct UserCard {
|
|
44
|
+
@Param user: UserModel = new UserModel()
|
|
45
|
+
@Event onDelete: () => void = () => {}
|
|
46
|
+
|
|
47
|
+
build() {
|
|
48
|
+
Column() {
|
|
49
|
+
Text(this.user.name)
|
|
50
|
+
.fontSize($r('app.float.font_size_title'))
|
|
51
|
+
Text(`${this.user.age}`)
|
|
52
|
+
.fontSize($r('app.float.font_size_body'))
|
|
53
|
+
Button($r('app.string.delete'))
|
|
54
|
+
.onClick(() => this.onDelete())
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### State Synchronization
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
@ComponentV2
|
|
64
|
+
struct ParentPage {
|
|
65
|
+
@Provider('userState') userModel: UserModel = new UserModel()
|
|
66
|
+
|
|
67
|
+
build() {
|
|
68
|
+
Column() {
|
|
69
|
+
ChildComponent() // automatically receives @Consumer('userState')
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@ComponentV2
|
|
75
|
+
struct ChildComponent {
|
|
76
|
+
@Consumer('userState') userModel: UserModel = new UserModel()
|
|
77
|
+
|
|
78
|
+
build() {
|
|
79
|
+
Text(this.userModel.name)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Routing: Navigation Only
|
|
85
|
+
|
|
86
|
+
**MUST use** `Navigation` component with `NavPathStack`. Never use `@ohos.router`.
|
|
87
|
+
|
|
88
|
+
### Navigation Setup
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
@ComponentV2
|
|
92
|
+
struct MainPage {
|
|
93
|
+
@Local navPathStack: NavPathStack = new NavPathStack()
|
|
94
|
+
|
|
95
|
+
build() {
|
|
96
|
+
Navigation(this.navPathStack) {
|
|
97
|
+
// Home content
|
|
98
|
+
}
|
|
99
|
+
.navDestination(this.routerMap)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@Builder
|
|
103
|
+
routerMap(name: string, param: ESObject) {
|
|
104
|
+
if (name === 'detail') {
|
|
105
|
+
DetailPage()
|
|
106
|
+
} else if (name === 'settings') {
|
|
107
|
+
SettingsPage()
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Page Navigation
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Push a new page
|
|
117
|
+
this.navPathStack.pushPath({ name: 'detail', param: { id: '123' } })
|
|
118
|
+
|
|
119
|
+
// Replace current page
|
|
120
|
+
this.navPathStack.replacePath({ name: 'settings' })
|
|
121
|
+
|
|
122
|
+
// Pop back
|
|
123
|
+
this.navPathStack.pop()
|
|
124
|
+
|
|
125
|
+
// Pop to root
|
|
126
|
+
this.navPathStack.clear()
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### NavDestination Sub-page
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
@ComponentV2
|
|
133
|
+
struct DetailPage {
|
|
134
|
+
build() {
|
|
135
|
+
NavDestination() {
|
|
136
|
+
Column() {
|
|
137
|
+
Text($r('app.string.detail_title'))
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
.title($r('app.string.detail_nav_title'))
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Architecture Pattern: MVVM
|
|
146
|
+
|
|
147
|
+
Recommended architecture for HarmonyOS applications:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
feature/
|
|
151
|
+
|-- model/ # Data models (@ObservedV2 classes)
|
|
152
|
+
|-- viewmodel/ # Business logic (ViewModel classes)
|
|
153
|
+
|-- view/ # UI components (@ComponentV2 structs)
|
|
154
|
+
|-- service/ # API calls, data access
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
- **View**: Only rendering logic, no business logic in `build()`
|
|
158
|
+
- **ViewModel**: All business logic encapsulated here
|
|
159
|
+
- **Model**: Pure data classes with `@ObservedV2` and `@Trace`
|
|
160
|
+
- **Service**: Network requests, database operations, file I/O
|
|
161
|
+
|
|
162
|
+
## ArkUI Animation Patterns
|
|
163
|
+
|
|
164
|
+
### State-Driven Animation
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
@ComponentV2
|
|
168
|
+
struct AnimatedCard {
|
|
169
|
+
@Local isExpanded: boolean = false
|
|
170
|
+
@Local cardScale: number = 0.8
|
|
171
|
+
|
|
172
|
+
build() {
|
|
173
|
+
Column() {
|
|
174
|
+
// Content
|
|
175
|
+
}
|
|
176
|
+
.scale({ x: this.cardScale, y: this.cardScale })
|
|
177
|
+
.animation({ duration: 300, curve: Curve.EaseInOut })
|
|
178
|
+
.onClick(() => {
|
|
179
|
+
this.isExpanded = !this.isExpanded
|
|
180
|
+
this.cardScale = this.isExpanded ? 1.0 : 0.8
|
|
181
|
+
})
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Animation Rules
|
|
187
|
+
|
|
188
|
+
- Prefer native HarmonyOS animation APIs and advanced templates
|
|
189
|
+
- Use declarative UI with state-driven animations (change state variables to trigger animations)
|
|
190
|
+
- Set `renderGroup(true)` for complex sub-component animations to reduce render batches
|
|
191
|
+
- **NEVER** frequently change `width`, `height`, `padding`, `margin` during animations - severe performance impact
|
|
192
|
+
- Use `animateTo` for explicit animation control
|
|
193
|
+
- Prefer `transform` (translate, scale, rotate) and `opacity` for performant animations
|
|
194
|
+
|
|
195
|
+
## Performance Patterns
|
|
196
|
+
|
|
197
|
+
### LazyForEach for Large Lists
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
@ComponentV2
|
|
201
|
+
struct LargeList {
|
|
202
|
+
@Local dataSource: MyDataSource = new MyDataSource()
|
|
203
|
+
|
|
204
|
+
build() {
|
|
205
|
+
List() {
|
|
206
|
+
LazyForEach(this.dataSource, (item: ItemModel) => {
|
|
207
|
+
ListItem() {
|
|
208
|
+
ItemComponent({ item: item })
|
|
209
|
+
}
|
|
210
|
+
}, (item: ItemModel) => item.id)
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Component Reuse
|
|
217
|
+
|
|
218
|
+
- Extract reusable components into separate files
|
|
219
|
+
- Use `@Builder` for lightweight UI fragments within a component
|
|
220
|
+
- Use `@Param` for configurable components
|
|
221
|
+
|
|
222
|
+
## Resource References
|
|
223
|
+
|
|
224
|
+
Always define UI constants as resources and reference via `$r()`:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
// BAD: hardcoded values
|
|
228
|
+
Text('Hello')
|
|
229
|
+
.fontSize(16)
|
|
230
|
+
.fontColor('#333333')
|
|
231
|
+
|
|
232
|
+
// GOOD: resource references
|
|
233
|
+
Text($r('app.string.greeting'))
|
|
234
|
+
.fontSize($r('app.float.font_size_body'))
|
|
235
|
+
.fontColor($r('app.color.text_primary'))
|
|
236
|
+
```
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/module.json5"
|
|
6
|
+
---
|
|
7
|
+
# HarmonyOS / ArkTS Security
|
|
8
|
+
|
|
9
|
+
> This file extends [common/security.md](../common/security.md) with HarmonyOS-specific security practices.
|
|
10
|
+
|
|
11
|
+
## Permission Management
|
|
12
|
+
|
|
13
|
+
### Declare Permissions in module.json5
|
|
14
|
+
|
|
15
|
+
All system API calls requiring permissions must be declared:
|
|
16
|
+
|
|
17
|
+
```json5
|
|
18
|
+
{
|
|
19
|
+
"module": {
|
|
20
|
+
"requestPermissions": [
|
|
21
|
+
{
|
|
22
|
+
"name": "ohos.permission.INTERNET",
|
|
23
|
+
"reason": "$string:internet_permission_reason",
|
|
24
|
+
"usedScene": {
|
|
25
|
+
"abilities": ["EntryAbility"],
|
|
26
|
+
"when": "always"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Permission Checklist
|
|
35
|
+
|
|
36
|
+
Before calling system APIs, verify:
|
|
37
|
+
|
|
38
|
+
- [ ] Permission declared in `module.json5`
|
|
39
|
+
- [ ] Permission reason string defined in resources (for user-facing permissions)
|
|
40
|
+
- [ ] Runtime permission request implemented for sensitive permissions (camera, location, etc.)
|
|
41
|
+
- [ ] Permission check before API call with graceful fallback on denial
|
|
42
|
+
|
|
43
|
+
### Runtime Permission Request
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { abilityAccessCtrl, bundleManager, Permissions } from '@kit.AbilityKit';
|
|
47
|
+
|
|
48
|
+
async function checkAndRequestPermission(permission: Permissions): Promise<boolean> {
|
|
49
|
+
const atManager = abilityAccessCtrl.createAtManager();
|
|
50
|
+
const bundleInfo = await bundleManager.getBundleInfoForSelf(
|
|
51
|
+
bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION
|
|
52
|
+
);
|
|
53
|
+
const tokenId = bundleInfo.appInfo.accessTokenId;
|
|
54
|
+
const grantStatus = await atManager.checkAccessToken(tokenId, permission);
|
|
55
|
+
|
|
56
|
+
if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const result = await atManager.requestPermissionsFromUser(getContext(), [permission]);
|
|
61
|
+
return result.authResults[0] === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Secret Management
|
|
66
|
+
|
|
67
|
+
- **NEVER** hardcode API keys, tokens, or passwords in `.ets`/`.ts` source files
|
|
68
|
+
- Use HarmonyOS Preferences API for non-sensitive configuration
|
|
69
|
+
- Use HarmonyOS Keystore for sensitive credentials
|
|
70
|
+
- Environment-specific configs should be managed via build profiles
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// BAD: hardcoded secret
|
|
74
|
+
const API_KEY: string = 'sk-xxxxxxxxxxxx';
|
|
75
|
+
|
|
76
|
+
// GOOD: from build profile config (non-sensitive)
|
|
77
|
+
import { BuildProfile } from 'BuildProfile';
|
|
78
|
+
const endpoint = BuildProfile.API_ENDPOINT;
|
|
79
|
+
|
|
80
|
+
// GOOD: use HUKS to encrypt/decrypt data without exposing key material
|
|
81
|
+
import { huks } from '@kit.UniversalKeystoreKit';
|
|
82
|
+
async function decryptWithKeystore(alias: string, nonce: Uint8Array, aad: Uint8Array, cipherData: Uint8Array): Promise<Uint8Array> {
|
|
83
|
+
const options: huks.HuksOptions = {
|
|
84
|
+
properties: [
|
|
85
|
+
{ tag: huks.HuksTag.HUKS_TAG_ALGORITHM, value: huks.HuksKeyAlg.HUKS_ALG_AES },
|
|
86
|
+
{ tag: huks.HuksTag.HUKS_TAG_PURPOSE, value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT },
|
|
87
|
+
{ tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, value: huks.HuksCipherMode.HUKS_MODE_GCM },
|
|
88
|
+
{ tag: huks.HuksTag.HUKS_TAG_PADDING, value: huks.HuksKeyPadding.HUKS_PADDING_NONE },
|
|
89
|
+
{ tag: huks.HuksTag.HUKS_TAG_NONCE, value: nonce },
|
|
90
|
+
{ tag: huks.HuksTag.HUKS_TAG_ASSOCIATED_DATA, value: aad }
|
|
91
|
+
],
|
|
92
|
+
inData: cipherData
|
|
93
|
+
};
|
|
94
|
+
const handle = await huks.initSession(alias, options);
|
|
95
|
+
const result = await huks.finishSession(handle.handle, options);
|
|
96
|
+
return result.outData;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Input Validation
|
|
101
|
+
|
|
102
|
+
- Validate all user input before processing
|
|
103
|
+
- Sanitize data before displaying in UI to prevent injection
|
|
104
|
+
- Validate deep link parameters before navigation
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Validate before navigation
|
|
108
|
+
function handleDeepLink(uri: string): void {
|
|
109
|
+
const allowedPaths: string[] = ['detail', 'settings', 'profile'];
|
|
110
|
+
const parsed = new URL(uri);
|
|
111
|
+
const path = parsed.pathname.replace('/', '');
|
|
112
|
+
|
|
113
|
+
if (!allowedPaths.includes(path)) {
|
|
114
|
+
hilog.warn(0x0000, 'DeepLink', 'Invalid deep link path: %{public}s', path);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
navPathStack.pushPath({ name: path });
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Network Security
|
|
123
|
+
|
|
124
|
+
- Always use HTTPS for network requests
|
|
125
|
+
- Validate server certificates
|
|
126
|
+
- Implement request timeout and retry policies
|
|
127
|
+
- Never log sensitive data (tokens, user credentials) in network request/response logs
|
|
128
|
+
|
|
129
|
+
## Data Storage Security
|
|
130
|
+
|
|
131
|
+
- Use encrypted preferences for sensitive local data
|
|
132
|
+
- Clear sensitive data from memory when no longer needed
|
|
133
|
+
- Implement proper data lifecycle management
|
|
134
|
+
- Consider data classification (public, internal, confidential) when choosing storage mechanisms
|
|
135
|
+
|
|
136
|
+
## Dependency Security
|
|
137
|
+
|
|
138
|
+
- Only use dependencies from trusted sources (official ohpm registry)
|
|
139
|
+
- Verify dependency versions in `oh-package.json5`
|
|
140
|
+
- Regularly check for known vulnerabilities in third-party libraries
|
|
141
|
+
- Pin dependency versions to avoid unexpected updates
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/ohosTest/**"
|
|
6
|
+
---
|
|
7
|
+
# HarmonyOS / ArkTS Testing
|
|
8
|
+
|
|
9
|
+
> This file extends [common/testing.md](../common/testing.md) with HarmonyOS-specific testing practices.
|
|
10
|
+
|
|
11
|
+
## Test Framework
|
|
12
|
+
|
|
13
|
+
HarmonyOS uses the built-in test framework with `@ohos.test` capabilities:
|
|
14
|
+
|
|
15
|
+
- **Unit tests**: Located in `src/ohosTest/ets/test/`
|
|
16
|
+
- **UI tests**: Use `@ohos.UiTest` for component testing
|
|
17
|
+
- **Instrument tests**: Run on device/emulator
|
|
18
|
+
|
|
19
|
+
## Test Directory Structure
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
module/
|
|
23
|
+
|-- src/
|
|
24
|
+
| |-- main/ets/ # Production code
|
|
25
|
+
| |-- ohosTest/ets/ # Test code
|
|
26
|
+
| |-- test/
|
|
27
|
+
| | |-- Ability.test.ets
|
|
28
|
+
| | |-- List.test.ets
|
|
29
|
+
| |-- TestAbility.ets
|
|
30
|
+
| |-- TestRunner.ets
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Running Tests
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Run all tests for a module
|
|
37
|
+
hvigorw testHap -p product=default
|
|
38
|
+
|
|
39
|
+
# Run tests on connected device
|
|
40
|
+
hdc shell aa test -b com.example.app -m entry_test -s unittest /ets/TestRunner/OpenHarmonyTestRunner
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Unit Test Example
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { describe, it, expect } from '@ohos/hypium';
|
|
47
|
+
|
|
48
|
+
export default function UserViewModelTest() {
|
|
49
|
+
describe('UserViewModel', () => {
|
|
50
|
+
it('should_initialize_with_empty_state', 0, () => {
|
|
51
|
+
const vm = new UserViewModel();
|
|
52
|
+
expect(vm.userName).assertEqual('');
|
|
53
|
+
expect(vm.isLoading).assertFalse();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('should_update_user_name', 0, () => {
|
|
57
|
+
const vm = new UserViewModel();
|
|
58
|
+
vm.updateUserName('Alice');
|
|
59
|
+
expect(vm.userName).assertEqual('Alice');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('should_handle_empty_input', 0, () => {
|
|
63
|
+
const vm = new UserViewModel();
|
|
64
|
+
vm.updateUserName('');
|
|
65
|
+
expect(vm.userName).assertEqual('');
|
|
66
|
+
expect(vm.hasError).assertFalse();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## UI Test Example
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import { describe, it, expect } from '@ohos/hypium';
|
|
76
|
+
import { Driver, ON } from '@ohos.UiTest';
|
|
77
|
+
|
|
78
|
+
export default function HomePageUITest() {
|
|
79
|
+
describe('HomePage_UI', () => {
|
|
80
|
+
it('should_display_title', 0, async () => {
|
|
81
|
+
const driver = Driver.create();
|
|
82
|
+
await driver.delayMs(1000);
|
|
83
|
+
|
|
84
|
+
const title = await driver.findComponent(ON.text('Home'));
|
|
85
|
+
expect(title !== null).assertTrue();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('should_navigate_to_detail_on_click', 0, async () => {
|
|
89
|
+
const driver = Driver.create();
|
|
90
|
+
const button = await driver.findComponent(ON.id('detailButton'));
|
|
91
|
+
await button.click();
|
|
92
|
+
await driver.delayMs(500);
|
|
93
|
+
|
|
94
|
+
const detailTitle = await driver.findComponent(ON.text('Detail'));
|
|
95
|
+
expect(detailTitle !== null).assertTrue();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## TDD Workflow for HarmonyOS
|
|
102
|
+
|
|
103
|
+
Follow the standard TDD cycle adapted for HarmonyOS:
|
|
104
|
+
|
|
105
|
+
1. **RED**: Write a failing test in `ohosTest/ets/test/`
|
|
106
|
+
2. **GREEN**: Implement minimal code in `main/ets/` to pass
|
|
107
|
+
3. **REFACTOR**: Clean up while keeping tests green
|
|
108
|
+
4. **BUILD**: Run `hvigorw assembleHap` to verify compilation
|
|
109
|
+
5. **VERIFY**: Run tests on device/emulator
|
|
110
|
+
|
|
111
|
+
## Test Coverage Requirements
|
|
112
|
+
|
|
113
|
+
- Minimum 80% coverage for all critical application code (ViewModels, services, utilities)
|
|
114
|
+
- **Unit tests**: All utility functions, ViewModel logic, data models
|
|
115
|
+
- **Integration tests**: API calls, database operations, cross-module interactions
|
|
116
|
+
- **E2E / UI tests**: Critical user flows (login, navigation, data submission)
|
|
117
|
+
- Test edge cases: empty data, network errors, permission denials
|
|
118
|
+
|
|
119
|
+
## Testing Best Practices
|
|
120
|
+
|
|
121
|
+
- Keep tests independent - no shared mutable state between tests
|
|
122
|
+
- Mock network calls and system APIs in unit tests
|
|
123
|
+
- Use meaningful test names: `should_[expected_behavior]_when_[condition]`
|
|
124
|
+
- Test V2 state management reactivity: verify `@Trace` properties trigger UI updates
|
|
125
|
+
- Test Navigation flows: verify `NavPathStack` push/pop/replace operations
|
|
126
|
+
- Avoid testing framework internals - focus on business logic and user-visible behavior
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Agent orchestration: available agents, parallel execution, multi-perspective analysis"
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
1
|
# Agent Orchestration
|
|
6
2
|
|
|
7
3
|
## Available Agents
|
|
@@ -19,6 +15,8 @@ Located in `~/.claude/agents/`:
|
|
|
19
15
|
| e2e-runner | E2E testing | Critical user flows |
|
|
20
16
|
| refactor-cleaner | Dead code cleanup | Code maintenance |
|
|
21
17
|
| doc-updater | Documentation | Updating docs |
|
|
18
|
+
| rust-reviewer | Rust code review | Rust projects |
|
|
19
|
+
| harmonyos-app-resolver | HarmonyOS app development | HarmonyOS/ArkTS projects |
|
|
22
20
|
|
|
23
21
|
## Immediate Agent Usage
|
|
24
22
|
|