compact-agent 1.10.0 → 1.11.0
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 +10 -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 +90 -9
- package/dist/index.js.map +1 -1
- package/dist/mempalace/index.d.ts +11 -0
- package/dist/mempalace/index.js +26 -1
- package/dist/mempalace/index.js.map +1 -1
- package/dist/system-prompt.js +2 -2
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/index.js +8 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.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,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-design-direction
|
|
3
|
+
description: Set an ECC-specific frontend design direction for production UI work. Use when building or improving websites, dashboards, applications, components, landing pages, visual tools, or any web UI that needs stronger product-specific design judgment.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Frontend Design Direction
|
|
8
|
+
|
|
9
|
+
Use this skill when the work is not just making UI function, but making it feel
|
|
10
|
+
purposeful, polished, and appropriate to the product domain.
|
|
11
|
+
|
|
12
|
+
Source: salvaged from stale community PR #1659 by `linus707`.
|
|
13
|
+
|
|
14
|
+
Note: ECC intentionally does not rebundle the canonical Anthropic
|
|
15
|
+
`frontend-design` skill. Install that from `anthropics/skills` when you want the
|
|
16
|
+
official upstream skill. This skill is the ECC-specific design-direction salvage
|
|
17
|
+
of the useful local guidance from #1659.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
- The user asks to build a web page, app, dashboard, artifact, component, or UI.
|
|
22
|
+
- The user asks to make an interface more polished, distinctive, beautiful, or
|
|
23
|
+
less generic.
|
|
24
|
+
- The implementation needs visual hierarchy, typography, color, motion, layout,
|
|
25
|
+
and interaction choices.
|
|
26
|
+
- The current UI works but reads as flat, generic, templated, or mismatched to
|
|
27
|
+
the audience.
|
|
28
|
+
|
|
29
|
+
## Design Direction
|
|
30
|
+
|
|
31
|
+
Before coding, choose a specific direction:
|
|
32
|
+
|
|
33
|
+
1. Purpose: what job does the interface do?
|
|
34
|
+
2. Audience: who repeats this workflow, and what do they need to scan first?
|
|
35
|
+
3. Tone: utilitarian, editorial, playful, industrial, refined, technical,
|
|
36
|
+
maximal, minimal, dense, calm, or another explicit direction.
|
|
37
|
+
4. Memorable detail: one design idea that makes the result feel intentional.
|
|
38
|
+
5. Constraints: framework, accessibility, performance, responsiveness, and
|
|
39
|
+
existing design system.
|
|
40
|
+
|
|
41
|
+
Match the direction to the domain. A SaaS operations tool should usually be
|
|
42
|
+
dense, quiet, and scannable. A portfolio, launch page, game, or editorial piece
|
|
43
|
+
can be more expressive. Do not force a landing-page composition onto a tool that
|
|
44
|
+
needs repeated daily use.
|
|
45
|
+
|
|
46
|
+
## Implementation Guidance
|
|
47
|
+
|
|
48
|
+
- Build the actual usable experience as the first screen unless the user
|
|
49
|
+
explicitly asks for marketing copy.
|
|
50
|
+
- Use existing project components, tokens, icon libraries, and routing patterns
|
|
51
|
+
before introducing a new visual system.
|
|
52
|
+
- Use real or generated visual assets when the interface depends on images,
|
|
53
|
+
products, places, people, gameplay, charts, or inspectable media.
|
|
54
|
+
- Prefer contextual typography and spacing over generic oversized hero text.
|
|
55
|
+
- Keep palettes multi-dimensional: avoid a UI dominated by one hue family.
|
|
56
|
+
- Use CSS variables or existing design tokens so the direction remains
|
|
57
|
+
coherent across states.
|
|
58
|
+
- Design responsive constraints explicitly: grids, aspect ratios, min/max
|
|
59
|
+
sizes, stable toolbars, and fixed-format controls should not shift when labels
|
|
60
|
+
or hover states appear.
|
|
61
|
+
- Use motion sparingly but deliberately. Prefer high-signal transitions that
|
|
62
|
+
clarify state over decorative animation.
|
|
63
|
+
- Verify text fit on mobile and desktop. Long labels must wrap or resize
|
|
64
|
+
cleanly rather than overflowing.
|
|
65
|
+
|
|
66
|
+
## Anti-Patterns
|
|
67
|
+
|
|
68
|
+
- Do not default to common generated patterns: purple gradients, decorative
|
|
69
|
+
blobs, oversized cards, vague hero copy, or stock-like atmospheric media.
|
|
70
|
+
- Do not add UI cards inside other cards.
|
|
71
|
+
- Do not use a single decorative style everywhere when the domain calls for
|
|
72
|
+
restraint.
|
|
73
|
+
- Do not hide the primary product, tool, object, or workflow behind generic
|
|
74
|
+
marketing sections.
|
|
75
|
+
- Do not add a new dependency for a design flourish unless it clearly pays for
|
|
76
|
+
itself.
|
|
77
|
+
- Do not describe the UI's features inside the UI when the controls can speak
|
|
78
|
+
for themselves.
|
|
79
|
+
|
|
80
|
+
## Review Checklist
|
|
81
|
+
|
|
82
|
+
- The first viewport immediately communicates the product, workflow, or object.
|
|
83
|
+
- The visual hierarchy supports scanning and repeated use.
|
|
84
|
+
- Typography fits the container and does not overlap adjacent content.
|
|
85
|
+
- Color choices have contrast and do not collapse into a one-note palette.
|
|
86
|
+
- Icons are used for familiar tool actions where available.
|
|
87
|
+
- Responsive layout has stable dimensions for boards, grids, toolbars,
|
|
88
|
+
controls, tiles, and counters.
|
|
89
|
+
- Assets render and carry the subject matter instead of acting as filler.
|
|
90
|
+
- Motion improves orientation and does not mask sluggishness.
|
|
91
|
+
- The result matches the repo's existing frontend conventions unless there is a
|
|
92
|
+
clear reason to depart.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-patterns
|
|
3
3
|
description: Frontend development patterns for React, Next.js, state management, performance optimization, and UI best practices.
|
|
4
|
+
origin: ECC
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Frontend Development Patterns
|
|
@@ -17,12 +18,6 @@ Modern frontend patterns for React, Next.js, and performant user interfaces.
|
|
|
17
18
|
- Handling client-side routing and navigation
|
|
18
19
|
- Building accessible, responsive UI patterns
|
|
19
20
|
|
|
20
|
-
## Privacy and Data Boundaries
|
|
21
|
-
|
|
22
|
-
Frontend examples should use synthetic or domain-generic data. Do not collect, log, persist, or display credentials, access tokens, SSNs, health data, payment details, private emails, phone numbers, or other sensitive personal data unless the user explicitly requests a scoped implementation with appropriate validation, redaction, and access controls.
|
|
23
|
-
|
|
24
|
-
Avoid adding analytics, tracking pixels, third-party scripts, or external data sinks without explicit approval. When handling user data, prefer least-privilege APIs, client-side redaction before logging, and server-side validation for every boundary.
|
|
25
|
-
|
|
26
21
|
## Component Patterns
|
|
27
22
|
|
|
28
23
|
### Composition Over Inheritance
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-slides
|
|
3
3
|
description: Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
|
|
4
|
+
origin: ECC
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Frontend Slides
|
|
7
8
|
|
|
8
9
|
Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.
|
|
9
10
|
|
|
10
|
-
Inspired by the visual exploration approach showcased in work by
|
|
11
|
+
Inspired by the visual exploration approach showcased in work by zarazhangrui (credit: @zarazhangrui).
|
|
11
12
|
|
|
12
13
|
## When to Activate
|
|
13
14
|
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Animation Patterns Reference
|
|
2
|
+
|
|
3
|
+
Use this reference when generating presentations. Match animations to the intended feeling.
|
|
4
|
+
|
|
5
|
+
## Effect-to-Feeling Guide
|
|
6
|
+
|
|
7
|
+
| Feeling | Animations | Visual Cues |
|
|
8
|
+
|---------|-----------|-------------|
|
|
9
|
+
| **Dramatic / Cinematic** | Slow fade-ins (1-1.5s), large-scale transitions (0.9 to 1), parallax scrolling | Dark backgrounds, spotlight effects, full-bleed images |
|
|
10
|
+
| **Techy / Futuristic** | Neon glow (box-shadow), glitch/scramble text, grid reveals | Particle systems (canvas), grid patterns, monospace accents, cyan/magenta/electric blue |
|
|
11
|
+
| **Playful / Friendly** | Bouncy easing (spring physics), floating/bobbing | Rounded corners, pastel/bright colors, hand-drawn elements |
|
|
12
|
+
| **Professional / Corporate** | Subtle fast animations (200-300ms), clean slides | Navy/slate/charcoal, precise spacing, data visualization focus |
|
|
13
|
+
| **Calm / Minimal** | Very slow subtle motion, gentle fades | High whitespace, muted palette, serif typography, generous padding |
|
|
14
|
+
| **Editorial / Magazine** | Staggered text reveals, image-text interplay | Strong type hierarchy, pull quotes, grid-breaking layouts, serif headlines + sans body |
|
|
15
|
+
|
|
16
|
+
## Entrance Animations
|
|
17
|
+
|
|
18
|
+
```css
|
|
19
|
+
/* Fade + Slide Up (most versatile) */
|
|
20
|
+
.reveal {
|
|
21
|
+
opacity: 0;
|
|
22
|
+
transform: translateY(30px);
|
|
23
|
+
transition: opacity 0.6s var(--ease-out-expo),
|
|
24
|
+
transform 0.6s var(--ease-out-expo);
|
|
25
|
+
}
|
|
26
|
+
.visible .reveal {
|
|
27
|
+
opacity: 1;
|
|
28
|
+
transform: translateY(0);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Scale In */
|
|
32
|
+
.reveal-scale {
|
|
33
|
+
opacity: 0;
|
|
34
|
+
transform: scale(0.9);
|
|
35
|
+
transition: opacity 0.6s, transform 0.6s var(--ease-out-expo);
|
|
36
|
+
}
|
|
37
|
+
.visible .reveal-scale {
|
|
38
|
+
opacity: 1;
|
|
39
|
+
transform: scale(1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Slide from Left */
|
|
43
|
+
.reveal-left {
|
|
44
|
+
opacity: 0;
|
|
45
|
+
transform: translateX(-50px);
|
|
46
|
+
transition: opacity 0.6s, transform 0.6s var(--ease-out-expo);
|
|
47
|
+
}
|
|
48
|
+
.visible .reveal-left {
|
|
49
|
+
opacity: 1;
|
|
50
|
+
transform: translateX(0);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Blur In */
|
|
54
|
+
.reveal-blur {
|
|
55
|
+
opacity: 0;
|
|
56
|
+
filter: blur(10px);
|
|
57
|
+
transition: opacity 0.8s, filter 0.8s var(--ease-out-expo);
|
|
58
|
+
}
|
|
59
|
+
.visible .reveal-blur {
|
|
60
|
+
opacity: 1;
|
|
61
|
+
filter: blur(0);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Background Effects
|
|
66
|
+
|
|
67
|
+
```css
|
|
68
|
+
/* Gradient Mesh — layered radial gradients for depth */
|
|
69
|
+
.gradient-bg {
|
|
70
|
+
background:
|
|
71
|
+
radial-gradient(ellipse at 20% 80%, rgba(120, 0, 255, 0.3) 0%, transparent 50%),
|
|
72
|
+
radial-gradient(ellipse at 80% 20%, rgba(0, 255, 200, 0.2) 0%, transparent 50%),
|
|
73
|
+
var(--bg-primary);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Noise Texture — inline SVG for grain */
|
|
77
|
+
.noise-bg {
|
|
78
|
+
background-image: url("data:image/svg+xml,..."); /* Inline SVG noise */
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Grid Pattern — subtle structural lines */
|
|
82
|
+
.grid-bg {
|
|
83
|
+
background-image:
|
|
84
|
+
linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px),
|
|
85
|
+
linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px);
|
|
86
|
+
background-size: 50px 50px;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Interactive Effects
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
/* 3D Tilt on Hover — adds depth to cards/panels */
|
|
94
|
+
class TiltEffect {
|
|
95
|
+
constructor(element) {
|
|
96
|
+
this.element = element;
|
|
97
|
+
this.element.style.transformStyle = 'preserve-3d';
|
|
98
|
+
this.element.style.perspective = '1000px';
|
|
99
|
+
|
|
100
|
+
this.element.addEventListener('mousemove', (e) => {
|
|
101
|
+
const rect = this.element.getBoundingClientRect();
|
|
102
|
+
const x = (e.clientX - rect.left) / rect.width - 0.5;
|
|
103
|
+
const y = (e.clientY - rect.top) / rect.height - 0.5;
|
|
104
|
+
this.element.style.transform = `rotateY(${x * 10}deg) rotateX(${-y * 10}deg)`;
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
this.element.addEventListener('mouseleave', () => {
|
|
108
|
+
this.element.style.transform = 'rotateY(0) rotateX(0)';
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Troubleshooting
|
|
115
|
+
|
|
116
|
+
| Problem | Fix |
|
|
117
|
+
|---------|-----|
|
|
118
|
+
| Fonts not loading | Check Fontshare/Google Fonts URL; ensure font names match in CSS |
|
|
119
|
+
| Animations not triggering | Verify Intersection Observer is running; check `.visible` class is being added |
|
|
120
|
+
| Scroll snap not working | Ensure `scroll-snap-type: y mandatory` on html; each slide needs `scroll-snap-align: start` |
|
|
121
|
+
| Mobile issues | Disable heavy effects at 768px breakpoint; test touch events; reduce particle count |
|
|
122
|
+
| Performance issues | Use `will-change` sparingly; prefer `transform`/`opacity` animations; throttle scroll handlers |
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# HTML Presentation Template
|
|
2
|
+
|
|
3
|
+
Reference architecture for generating slide presentations. Every presentation follows this structure.
|
|
4
|
+
|
|
5
|
+
## Base HTML Structure
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!DOCTYPE html>
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charset="UTF-8" />
|
|
12
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
13
|
+
<title>Presentation Title</title>
|
|
14
|
+
|
|
15
|
+
<!-- Fonts: use Fontshare or Google Fonts — never system fonts -->
|
|
16
|
+
<link rel="stylesheet" href="https://api.fontshare.com/v2/css?f[]=..." />
|
|
17
|
+
|
|
18
|
+
<style>
|
|
19
|
+
/* ===========================================
|
|
20
|
+
CSS CUSTOM PROPERTIES (THEME)
|
|
21
|
+
Change these to change the whole look
|
|
22
|
+
=========================================== */
|
|
23
|
+
:root {
|
|
24
|
+
/* Colors — from chosen style preset */
|
|
25
|
+
--bg-primary: #0a0f1c;
|
|
26
|
+
--bg-secondary: #111827;
|
|
27
|
+
--text-primary: #ffffff;
|
|
28
|
+
--text-secondary: #9ca3af;
|
|
29
|
+
--accent: #00ffcc;
|
|
30
|
+
--accent-glow: rgba(0, 255, 204, 0.3);
|
|
31
|
+
|
|
32
|
+
/* Typography — MUST use clamp() */
|
|
33
|
+
--font-display: "Clash Display", sans-serif;
|
|
34
|
+
--font-body: "Satoshi", sans-serif;
|
|
35
|
+
--title-size: clamp(2rem, 6vw, 5rem);
|
|
36
|
+
--subtitle-size: clamp(0.875rem, 2vw, 1.25rem);
|
|
37
|
+
--body-size: clamp(0.75rem, 1.2vw, 1rem);
|
|
38
|
+
|
|
39
|
+
/* Spacing — MUST use clamp() */
|
|
40
|
+
--slide-padding: clamp(1.5rem, 4vw, 4rem);
|
|
41
|
+
--content-gap: clamp(1rem, 2vw, 2rem);
|
|
42
|
+
|
|
43
|
+
/* Animation */
|
|
44
|
+
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
45
|
+
--duration-normal: 0.6s;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* ===========================================
|
|
49
|
+
BASE STYLES
|
|
50
|
+
=========================================== */
|
|
51
|
+
* {
|
|
52
|
+
margin: 0;
|
|
53
|
+
padding: 0;
|
|
54
|
+
box-sizing: border-box;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* --- PASTE viewport-base.css CONTENTS HERE --- */
|
|
58
|
+
|
|
59
|
+
/* ===========================================
|
|
60
|
+
ANIMATIONS
|
|
61
|
+
Trigger via .visible class (added by JS on scroll)
|
|
62
|
+
=========================================== */
|
|
63
|
+
.reveal {
|
|
64
|
+
opacity: 0;
|
|
65
|
+
transform: translateY(30px);
|
|
66
|
+
transition:
|
|
67
|
+
opacity var(--duration-normal) var(--ease-out-expo),
|
|
68
|
+
transform var(--duration-normal) var(--ease-out-expo);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.slide.visible .reveal {
|
|
72
|
+
opacity: 1;
|
|
73
|
+
transform: translateY(0);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Stagger children for sequential reveal */
|
|
77
|
+
.reveal:nth-child(1) {
|
|
78
|
+
transition-delay: 0.1s;
|
|
79
|
+
}
|
|
80
|
+
.reveal:nth-child(2) {
|
|
81
|
+
transition-delay: 0.2s;
|
|
82
|
+
}
|
|
83
|
+
.reveal:nth-child(3) {
|
|
84
|
+
transition-delay: 0.3s;
|
|
85
|
+
}
|
|
86
|
+
.reveal:nth-child(4) {
|
|
87
|
+
transition-delay: 0.4s;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ... preset-specific styles ... */
|
|
91
|
+
</style>
|
|
92
|
+
</head>
|
|
93
|
+
<body>
|
|
94
|
+
<!-- Optional: Progress bar -->
|
|
95
|
+
<div class="progress-bar"></div>
|
|
96
|
+
|
|
97
|
+
<!-- Optional: Navigation dots -->
|
|
98
|
+
<nav class="nav-dots"><!-- Generated by JS --></nav>
|
|
99
|
+
|
|
100
|
+
<!-- Slides -->
|
|
101
|
+
<section class="slide title-slide">
|
|
102
|
+
<h1 class="reveal">Presentation Title</h1>
|
|
103
|
+
<p class="reveal">Subtitle or author</p>
|
|
104
|
+
</section>
|
|
105
|
+
|
|
106
|
+
<section class="slide">
|
|
107
|
+
<div class="slide-content">
|
|
108
|
+
<h2 class="reveal">Slide Title</h2>
|
|
109
|
+
<p class="reveal">Content...</p>
|
|
110
|
+
</div>
|
|
111
|
+
</section>
|
|
112
|
+
|
|
113
|
+
<!-- More slides... -->
|
|
114
|
+
|
|
115
|
+
<script>
|
|
116
|
+
/* ===========================================
|
|
117
|
+
SLIDE PRESENTATION CONTROLLER
|
|
118
|
+
=========================================== */
|
|
119
|
+
class SlidePresentation {
|
|
120
|
+
constructor() {
|
|
121
|
+
this.slides = document.querySelectorAll(".slide");
|
|
122
|
+
this.currentSlide = 0;
|
|
123
|
+
this.setupIntersectionObserver();
|
|
124
|
+
this.setupKeyboardNav();
|
|
125
|
+
this.setupTouchNav();
|
|
126
|
+
this.setupProgressBar();
|
|
127
|
+
this.setupNavDots();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
setupIntersectionObserver() {
|
|
131
|
+
// Add .visible class when slides enter viewport
|
|
132
|
+
// Triggers CSS animations efficiently
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
setupKeyboardNav() {
|
|
136
|
+
// Arrow keys, Space, Page Up/Down
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
setupTouchNav() {
|
|
140
|
+
// Touch/swipe support for mobile
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
setupProgressBar() {
|
|
144
|
+
// Update progress bar on scroll
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
setupNavDots() {
|
|
148
|
+
// IMPORTANT: Always clear before building — if outerHTML was
|
|
149
|
+
// captured while dots were rendered, re-opening the file would
|
|
150
|
+
// append a duplicate set on top of the existing ones.
|
|
151
|
+
this.navDotsContainer.innerHTML = "";
|
|
152
|
+
// Generate and manage navigation dots
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
new SlidePresentation();
|
|
157
|
+
</script>
|
|
158
|
+
</body>
|
|
159
|
+
</html>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Required JavaScript Features
|
|
163
|
+
|
|
164
|
+
Every presentation must include:
|
|
165
|
+
|
|
166
|
+
1. **SlidePresentation Class** — Main controller with:
|
|
167
|
+
- Keyboard navigation (arrows, space, page up/down)
|
|
168
|
+
- Touch/swipe support
|
|
169
|
+
- Mouse wheel navigation
|
|
170
|
+
- Progress bar updates
|
|
171
|
+
- Navigation dots
|
|
172
|
+
|
|
173
|
+
2. **Intersection Observer** — For scroll-triggered animations:
|
|
174
|
+
- Add `.visible` class when slides enter viewport
|
|
175
|
+
- Trigger CSS transitions efficiently
|
|
176
|
+
|
|
177
|
+
3. **Optional Enhancements** (match to chosen style):
|
|
178
|
+
- Custom cursor with trail
|
|
179
|
+
- Particle system background (canvas)
|
|
180
|
+
- Parallax effects
|
|
181
|
+
- 3D tilt on hover
|
|
182
|
+
- Magnetic buttons
|
|
183
|
+
- Counter animations
|
|
184
|
+
|
|
185
|
+
4. **Inline Editing** (only if user opted in during Phase 1 — skip entirely if they said No):
|
|
186
|
+
- Edit toggle button (hidden by default, revealed via hover hotzone or `E` key)
|
|
187
|
+
- Auto-save to localStorage
|
|
188
|
+
- Export/save file functionality
|
|
189
|
+
- See "Inline Editing Implementation" section below
|
|
190
|
+
|
|
191
|
+
## Inline Editing Implementation (Opt-In Only)
|
|
192
|
+
|
|
193
|
+
**If the user chose "No" for inline editing in Phase 1, do NOT generate any edit-related HTML, CSS, or JS.**
|
|
194
|
+
|
|
195
|
+
**Do NOT use CSS `~` sibling selector for hover-based show/hide.** The CSS-only approach (`edit-hotzone:hover ~ .edit-toggle`) fails because `pointer-events: none` on the toggle button breaks the hover chain: user hovers hotzone -> button becomes visible -> mouse moves toward button -> leaves hotzone -> button disappears before click.
|
|
196
|
+
|
|
197
|
+
**Required approach: JS-based hover with 400ms delay timeout.**
|
|
198
|
+
|
|
199
|
+
HTML:
|
|
200
|
+
|
|
201
|
+
```html
|
|
202
|
+
<div class="edit-hotzone"></div>
|
|
203
|
+
<button class="edit-toggle" id="editToggle" title="Edit mode (E)">Edit</button>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
CSS (visibility controlled by JS classes only):
|
|
207
|
+
|
|
208
|
+
```css
|
|
209
|
+
/* Do NOT use CSS ~ sibling selector for this!
|
|
210
|
+
pointer-events: none breaks the hover chain.
|
|
211
|
+
Must use JS with delay timeout. */
|
|
212
|
+
.edit-hotzone {
|
|
213
|
+
position: fixed;
|
|
214
|
+
top: 0;
|
|
215
|
+
left: 0;
|
|
216
|
+
width: 80px;
|
|
217
|
+
height: 80px;
|
|
218
|
+
z-index: 10000;
|
|
219
|
+
cursor: pointer;
|
|
220
|
+
}
|
|
221
|
+
.edit-toggle {
|
|
222
|
+
opacity: 0;
|
|
223
|
+
pointer-events: none;
|
|
224
|
+
transition: opacity 0.3s ease;
|
|
225
|
+
z-index: 10001;
|
|
226
|
+
}
|
|
227
|
+
.edit-toggle.show,
|
|
228
|
+
.edit-toggle.active {
|
|
229
|
+
opacity: 1;
|
|
230
|
+
pointer-events: auto;
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
JS (three interaction methods):
|
|
235
|
+
|
|
236
|
+
```javascript
|
|
237
|
+
// 1. Click handler on the toggle button
|
|
238
|
+
document.getElementById("editToggle").addEventListener("click", () => {
|
|
239
|
+
editor.toggleEditMode();
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// 2. Hotzone hover with 400ms grace period
|
|
243
|
+
const hotzone = document.querySelector(".edit-hotzone");
|
|
244
|
+
const editToggle = document.getElementById("editToggle");
|
|
245
|
+
let hideTimeout = null;
|
|
246
|
+
|
|
247
|
+
hotzone.addEventListener("mouseenter", () => {
|
|
248
|
+
clearTimeout(hideTimeout);
|
|
249
|
+
editToggle.classList.add("show");
|
|
250
|
+
});
|
|
251
|
+
hotzone.addEventListener("mouseleave", () => {
|
|
252
|
+
hideTimeout = setTimeout(() => {
|
|
253
|
+
if (!editor.isActive) editToggle.classList.remove("show");
|
|
254
|
+
}, 400);
|
|
255
|
+
});
|
|
256
|
+
editToggle.addEventListener("mouseenter", () => {
|
|
257
|
+
clearTimeout(hideTimeout);
|
|
258
|
+
});
|
|
259
|
+
editToggle.addEventListener("mouseleave", () => {
|
|
260
|
+
hideTimeout = setTimeout(() => {
|
|
261
|
+
if (!editor.isActive) editToggle.classList.remove("show");
|
|
262
|
+
}, 400);
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
// 3. Hotzone direct click
|
|
266
|
+
hotzone.addEventListener("click", () => {
|
|
267
|
+
editor.toggleEditMode();
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// 4. Keyboard shortcut (E key, skip when editing text)
|
|
271
|
+
document.addEventListener("keydown", (e) => {
|
|
272
|
+
if (
|
|
273
|
+
(e.key === "e" || e.key === "E") &&
|
|
274
|
+
!e.target.getAttribute("contenteditable")
|
|
275
|
+
) {
|
|
276
|
+
editor.toggleEditMode();
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**CRITICAL: `exportFile()` must strip edit state before capturing outerHTML.**
|
|
282
|
+
|
|
283
|
+
When the user presses Ctrl+S in edit mode, `document.documentElement.outerHTML` captures the live DOM —
|
|
284
|
+
including `body.edit-active`, `contenteditable="true"` on every text element, and `.active`/`.show` classes on
|
|
285
|
+
the toggle button and banner. Anyone opening the saved file sees dashed outlines, a checkmark button, and an
|
|
286
|
+
edit banner, as if permanently stuck in edit mode.
|
|
287
|
+
|
|
288
|
+
Always implement `exportFile()` like this:
|
|
289
|
+
|
|
290
|
+
```javascript
|
|
291
|
+
exportFile() {
|
|
292
|
+
// Temporarily strip edit state so the saved file opens cleanly
|
|
293
|
+
const editableEls = Array.from(document.querySelectorAll('[contenteditable]'));
|
|
294
|
+
editableEls.forEach(el => el.removeAttribute('contenteditable'));
|
|
295
|
+
document.body.classList.remove('edit-active');
|
|
296
|
+
|
|
297
|
+
// Also strip UI classes from toggle button and banner
|
|
298
|
+
const editToggle = document.getElementById('editToggle');
|
|
299
|
+
const editBanner = document.querySelector('.edit-banner');
|
|
300
|
+
editToggle?.classList.remove('active', 'show');
|
|
301
|
+
editBanner?.classList.remove('active', 'show');
|
|
302
|
+
|
|
303
|
+
const html = '<!DOCTYPE html>\n' + document.documentElement.outerHTML;
|
|
304
|
+
|
|
305
|
+
// Restore edit state so the user can keep editing
|
|
306
|
+
document.body.classList.add('edit-active');
|
|
307
|
+
editableEls.forEach(el => el.setAttribute('contenteditable', 'true'));
|
|
308
|
+
editToggle?.classList.add('active');
|
|
309
|
+
editBanner?.classList.add('active');
|
|
310
|
+
|
|
311
|
+
const blob = new Blob([html], { type: 'text/html' });
|
|
312
|
+
const a = document.createElement('a');
|
|
313
|
+
a.href = URL.createObjectURL(blob);
|
|
314
|
+
a.download = 'presentation.html';
|
|
315
|
+
a.click();
|
|
316
|
+
URL.revokeObjectURL(a.href);
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## Image Pipeline (Skip If No Images)
|
|
321
|
+
|
|
322
|
+
If user chose "No images" in Phase 1, skip this entirely. If images were provided, process them before generating HTML.
|
|
323
|
+
|
|
324
|
+
**Dependency:** `pip install Pillow`
|
|
325
|
+
|
|
326
|
+
### Image Processing
|
|
327
|
+
|
|
328
|
+
```python
|
|
329
|
+
from PIL import Image, ImageDraw
|
|
330
|
+
|
|
331
|
+
# Circular crop (for logos on modern/clean styles)
|
|
332
|
+
def crop_circle(input_path, output_path):
|
|
333
|
+
img = Image.open(input_path).convert('RGBA')
|
|
334
|
+
w, h = img.size
|
|
335
|
+
size = min(w, h)
|
|
336
|
+
left, top = (w - size) // 2, (h - size) // 2
|
|
337
|
+
img = img.crop((left, top, left + size, top + size))
|
|
338
|
+
mask = Image.new('L', (size, size), 0)
|
|
339
|
+
ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)
|
|
340
|
+
img.putalpha(mask)
|
|
341
|
+
img.save(output_path, 'PNG')
|
|
342
|
+
|
|
343
|
+
# Resize (for oversized images that inflate HTML)
|
|
344
|
+
def resize_max(input_path, output_path, max_dim=1200):
|
|
345
|
+
img = Image.open(input_path)
|
|
346
|
+
img.thumbnail((max_dim, max_dim), Image.LANCZOS)
|
|
347
|
+
img.save(output_path, quality=85)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
| Situation | Operation |
|
|
351
|
+
| -------------------------------- | ----------------------------- |
|
|
352
|
+
| Square logo on rounded aesthetic | `crop_circle()` |
|
|
353
|
+
| Image > 1MB | `resize_max(max_dim=1200)` |
|
|
354
|
+
| Wrong aspect ratio | Manual crop with `img.crop()` |
|
|
355
|
+
|
|
356
|
+
Save processed images with `_processed` suffix. Never overwrite originals.
|
|
357
|
+
|
|
358
|
+
### Image Placement
|
|
359
|
+
|
|
360
|
+
**Use direct file paths** (not base64) — presentations are viewed locally:
|
|
361
|
+
|
|
362
|
+
```html
|
|
363
|
+
<img src="assets/logo_round.png" alt="Logo" class="slide-image logo" />
|
|
364
|
+
<img
|
|
365
|
+
src="assets/screenshot.png"
|
|
366
|
+
alt="Screenshot"
|
|
367
|
+
class="slide-image screenshot"
|
|
368
|
+
/>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
```css
|
|
372
|
+
.slide-image {
|
|
373
|
+
max-width: 100%;
|
|
374
|
+
max-height: min(50vh, 400px);
|
|
375
|
+
object-fit: contain;
|
|
376
|
+
border-radius: 8px;
|
|
377
|
+
}
|
|
378
|
+
.slide-image.screenshot {
|
|
379
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
380
|
+
border-radius: 12px;
|
|
381
|
+
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
|
|
382
|
+
}
|
|
383
|
+
.slide-image.logo {
|
|
384
|
+
max-height: min(30vh, 200px);
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**Adapt border/shadow colors to match the chosen style's accent.** Never repeat the same image on multiple slides (except logos on title + closing).
|
|
389
|
+
|
|
390
|
+
**Placement patterns:** Logo centered on title slide. Screenshots in two-column layouts with text. Full-bleed images as slide backgrounds with text overlay (use sparingly).
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Code Quality
|
|
395
|
+
|
|
396
|
+
**Comments:** Every section needs clear comments explaining what it does and how to modify it.
|
|
397
|
+
|
|
398
|
+
**Accessibility:**
|
|
399
|
+
|
|
400
|
+
- Semantic HTML (`<section>`, `<nav>`, `<main>`)
|
|
401
|
+
- Keyboard navigation works fully
|
|
402
|
+
- ARIA labels where needed
|
|
403
|
+
- `prefers-reduced-motion` support (included in viewport-base.css)
|
|
404
|
+
|
|
405
|
+
## File Structure
|
|
406
|
+
|
|
407
|
+
Single presentations:
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
presentation.html # Self-contained, all CSS/JS inline
|
|
411
|
+
assets/ # Images only, if any
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
Multiple presentations in one project:
|
|
415
|
+
|
|
416
|
+
```
|
|
417
|
+
[name].html
|
|
418
|
+
[name]-assets/
|
|
419
|
+
```
|