ctxora 6.2.2 → 6.4.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/.claude-plugin/plugin.json +11 -0
- package/README.md +104 -16
- package/README.vi.md +96 -7
- package/THIRD_PARTY_NOTICES.md +12 -0
- package/agents/ctxora-context-engineer.md +6 -0
- package/agents/ctxora-maintainer.md +6 -0
- package/agents/ctxora-reviewer.md +6 -0
- package/bin/ctxora.mjs +1 -1
- package/commands/context.md +15 -0
- package/commands/guide.md +8 -0
- package/commands/handoff.md +8 -0
- package/commands/health.md +14 -0
- package/commands/learn.md +8 -0
- package/commands/plan.md +15 -0
- package/commands/review.md +8 -0
- package/commands/route.md +6 -0
- package/docs/COMMAND-SKILL-MAP.md +25 -0
- package/docs/third-party/ECC-LICENSE +21 -0
- package/package.json +14 -1
- package/pyproject.toml +6 -1
- package/schemas/README.md +3 -0
- package/schemas/mcp-v2/context_stats.request.schema.json +10 -0
- package/schemas/mcp-v2/context_stats.response.schema.json +5 -0
- package/schemas/mcp-v2/delete_conversation_handoff.request.schema.json +17 -0
- package/schemas/mcp-v2/delete_conversation_handoff.response.schema.json +5 -0
- package/schemas/mcp-v2/ecc_search.request.schema.json +16 -0
- package/schemas/mcp-v2/ecc_search.response.schema.json +5 -0
- package/schemas/mcp-v2/ecc_status.request.schema.json +6 -0
- package/schemas/mcp-v2/ecc_status.response.schema.json +5 -0
- package/schemas/mcp-v2/error.response.schema.json +40 -0
- package/schemas/mcp-v2/handoff_conversation.request.schema.json +29 -0
- package/schemas/mcp-v2/handoff_conversation.response.schema.json +5 -0
- package/schemas/mcp-v2/invalidate_context.request.schema.json +17 -0
- package/schemas/mcp-v2/invalidate_context.response.schema.json +5 -0
- package/schemas/mcp-v2/list_conversation_handoffs.request.schema.json +16 -0
- package/schemas/mcp-v2/list_conversation_handoffs.response.schema.json +8 -0
- package/schemas/mcp-v2/memory_delete.request.schema.json +20 -0
- package/schemas/mcp-v2/memory_delete.response.schema.json +5 -0
- package/schemas/mcp-v2/memory_list.request.schema.json +19 -0
- package/schemas/mcp-v2/memory_list.response.schema.json +7 -0
- package/schemas/mcp-v2/memory_save.request.schema.json +42 -0
- package/schemas/mcp-v2/memory_save.response.schema.json +5 -0
- package/schemas/mcp-v2/memory_search.request.schema.json +26 -0
- package/schemas/mcp-v2/memory_search.response.schema.json +8 -0
- package/schemas/mcp-v2/plan_context.request.schema.json +24 -0
- package/schemas/mcp-v2/plan_context.response.schema.json +5 -0
- package/schemas/mcp-v2/prepare_context.request.schema.json +42 -0
- package/schemas/mcp-v2/prepare_context.response.schema.json +72 -0
- package/schemas/mcp-v2/purge_expired_handoffs.request.schema.json +6 -0
- package/schemas/mcp-v2/purge_expired_handoffs.response.schema.json +5 -0
- package/schemas/mcp-v2/refresh_workspace.request.schema.json +19 -0
- package/schemas/mcp-v2/refresh_workspace.response.schema.json +5 -0
- package/schemas/mcp-v2/register_workspace.request.schema.json +23 -0
- package/schemas/mcp-v2/register_workspace.response.schema.json +5 -0
- package/schemas/mcp-v2/restore_conversation_handoff.request.schema.json +17 -0
- package/schemas/mcp-v2/restore_conversation_handoff.response.schema.json +5 -0
- package/schemas/mcp-v2/retrieve_context.request.schema.json +26 -0
- package/schemas/mcp-v2/retrieve_context.response.schema.json +5 -0
- package/schemas/mcp-v2/route_skills.request.schema.json +29 -0
- package/schemas/mcp-v2/route_skills.response.schema.json +5 -0
- package/schemas/mcp-v2/skill_feedback.request.schema.json +33 -0
- package/schemas/mcp-v2/skill_feedback.response.schema.json +5 -0
- package/schemas/mcp-v2/skill_learning_status.request.schema.json +16 -0
- package/schemas/mcp-v2/skill_learning_status.response.schema.json +5 -0
- package/skills/ctxora-context-health/SKILL.md +29 -0
- package/skills/ctxora-continuous-learning/SKILL.md +26 -0
- package/skills/ctxora-navigation/SKILL.md +20 -0
- package/skills/ctxora-repository-context/SKILL.md +33 -0
- package/skills/ctxora-setup/SKILL.md +26 -0
- package/skills/ctxora-workflow-profiles/SKILL.md +30 -0
- package/src/harness_context/api/v2/contracts.py +9 -0
- package/src/harness_context/application/container.py +2 -0
- package/src/harness_context/application/context_service.py +11 -2
- package/src/harness_context/application/protocols.py +5 -0
- package/src/harness_context/bootstrap.py +4 -1
- package/src/harness_context/cli/app.py +130 -0
- package/src/harness_context/mcp/capabilities.py +1 -0
- package/src/harness_context/mcp/tool_handlers/__init__.py +5 -1
- package/src/harness_context/mcp/tool_handlers/skills.py +29 -0
- package/src/harness_context/mcp/tools.py +2 -0
- package/src/harness_context/skills/__init__.py +4 -0
- package/src/harness_context/skills/catalog.py +267 -0
- package/src/harness_context/skills/ecc/accessibility/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/accessibility/SKILL.md +147 -0
- package/src/harness_context/skills/ecc/agent-architecture-audit/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-architecture-audit/SKILL.md +257 -0
- package/src/harness_context/skills/ecc/agent-eval/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-eval/SKILL.md +147 -0
- package/src/harness_context/skills/ecc/agent-harness-construction/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-harness-construction/SKILL.md +74 -0
- package/src/harness_context/skills/ecc/agent-introspection-debugging/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-introspection-debugging/SKILL.md +154 -0
- package/src/harness_context/skills/ecc/agent-payment-x402/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-payment-x402/SKILL.md +225 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/SKILL.md +182 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/examples/high-score-example.md +87 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/examples/low-score-example.md +86 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/references/evaluation-criteria.md +71 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/references/hook-integration.md +64 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/scripts/evaluate.py +408 -0
- package/src/harness_context/skills/ecc/agent-self-evaluation/templates/evaluation-report.md +86 -0
- package/src/harness_context/skills/ecc/agent-sort/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agent-sort/SKILL.md +216 -0
- package/src/harness_context/skills/ecc/agentic-engineering/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agentic-engineering/SKILL.md +64 -0
- package/src/harness_context/skills/ecc/agentic-os/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/agentic-os/SKILL.md +388 -0
- package/src/harness_context/skills/ecc/ai-first-engineering/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ai-first-engineering/SKILL.md +52 -0
- package/src/harness_context/skills/ecc/ai-regression-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ai-regression-testing/SKILL.md +386 -0
- package/src/harness_context/skills/ecc/android-clean-architecture/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/android-clean-architecture/SKILL.md +340 -0
- package/src/harness_context/skills/ecc/angular-developer/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/angular-developer/SKILL.md +155 -0
- package/src/harness_context/skills/ecc/angular-developer/references/angular-animations.md +160 -0
- package/src/harness_context/skills/ecc/angular-developer/references/angular-aria.md +410 -0
- package/src/harness_context/skills/ecc/angular-developer/references/cli.md +86 -0
- package/src/harness_context/skills/ecc/angular-developer/references/component-harnesses.md +59 -0
- package/src/harness_context/skills/ecc/angular-developer/references/component-styling.md +91 -0
- package/src/harness_context/skills/ecc/angular-developer/references/components.md +117 -0
- package/src/harness_context/skills/ecc/angular-developer/references/creating-services.md +97 -0
- package/src/harness_context/skills/ecc/angular-developer/references/data-resolvers.md +69 -0
- package/src/harness_context/skills/ecc/angular-developer/references/define-routes.md +67 -0
- package/src/harness_context/skills/ecc/angular-developer/references/defining-providers.md +72 -0
- package/src/harness_context/skills/ecc/angular-developer/references/di-fundamentals.md +120 -0
- package/src/harness_context/skills/ecc/angular-developer/references/e2e-testing.md +56 -0
- package/src/harness_context/skills/ecc/angular-developer/references/effects.md +83 -0
- package/src/harness_context/skills/ecc/angular-developer/references/hierarchical-injectors.md +43 -0
- package/src/harness_context/skills/ecc/angular-developer/references/host-elements.md +80 -0
- package/src/harness_context/skills/ecc/angular-developer/references/injection-context.md +63 -0
- package/src/harness_context/skills/ecc/angular-developer/references/inputs.md +101 -0
- package/src/harness_context/skills/ecc/angular-developer/references/linked-signal.md +59 -0
- package/src/harness_context/skills/ecc/angular-developer/references/loading-strategies.md +61 -0
- package/src/harness_context/skills/ecc/angular-developer/references/mcp.md +108 -0
- package/src/harness_context/skills/ecc/angular-developer/references/navigate-to-routes.md +69 -0
- package/src/harness_context/skills/ecc/angular-developer/references/outputs.md +86 -0
- package/src/harness_context/skills/ecc/angular-developer/references/reactive-forms.md +122 -0
- package/src/harness_context/skills/ecc/angular-developer/references/rendering-strategies.md +44 -0
- package/src/harness_context/skills/ecc/angular-developer/references/resource.md +77 -0
- package/src/harness_context/skills/ecc/angular-developer/references/route-animations.md +56 -0
- package/src/harness_context/skills/ecc/angular-developer/references/route-guards.md +52 -0
- package/src/harness_context/skills/ecc/angular-developer/references/router-lifecycle.md +45 -0
- package/src/harness_context/skills/ecc/angular-developer/references/router-testing.md +87 -0
- package/src/harness_context/skills/ecc/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/src/harness_context/skills/ecc/angular-developer/references/signal-forms.md +795 -0
- package/src/harness_context/skills/ecc/angular-developer/references/signals-overview.md +94 -0
- package/src/harness_context/skills/ecc/angular-developer/references/tailwind-css.md +69 -0
- package/src/harness_context/skills/ecc/angular-developer/references/template-driven-forms.md +114 -0
- package/src/harness_context/skills/ecc/angular-developer/references/testing-fundamentals.md +65 -0
- package/src/harness_context/skills/ecc/api-connector-builder/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/api-connector-builder/SKILL.md +121 -0
- package/src/harness_context/skills/ecc/api-design/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/api-design/SKILL.md +524 -0
- package/src/harness_context/skills/ecc/architecture-decision-records/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/architecture-decision-records/SKILL.md +180 -0
- package/src/harness_context/skills/ecc/article-writing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/article-writing/SKILL.md +80 -0
- package/src/harness_context/skills/ecc/automation-audit-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/automation-audit-ops/SKILL.md +143 -0
- package/src/harness_context/skills/ecc/autonomous-agent-harness/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/autonomous-agent-harness/SKILL.md +274 -0
- package/src/harness_context/skills/ecc/autonomous-loops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/autonomous-loops/SKILL.md +611 -0
- package/src/harness_context/skills/ecc/backend-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/backend-patterns/SKILL.md +562 -0
- package/src/harness_context/skills/ecc/benchmark/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/benchmark/SKILL.md +95 -0
- package/src/harness_context/skills/ecc/benchmark-methodology/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/benchmark-methodology/SKILL.md +191 -0
- package/src/harness_context/skills/ecc/benchmark-optimization-loop/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/benchmark-optimization-loop/SKILL.md +71 -0
- package/src/harness_context/skills/ecc/blender-motion-state-inspection/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/blender-motion-state-inspection/SKILL.md +165 -0
- package/src/harness_context/skills/ecc/blueprint/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/blueprint/SKILL.md +106 -0
- package/src/harness_context/skills/ecc/brand-discovery/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/brand-discovery/SKILL.md +145 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/10_purpose-why.md +40 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/20_positioning.md +44 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/30_audience-niche.md +52 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/40_personality-archetype.md +57 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/50_voice-tone.md +59 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/60_narrative-story.md +50 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/70_founder-tension.md +49 -0
- package/src/harness_context/skills/ecc/brand-discovery/references/90_SYNTHESIS.md +133 -0
- package/src/harness_context/skills/ecc/brand-voice/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/brand-voice/SKILL.md +98 -0
- package/src/harness_context/skills/ecc/brand-voice/references/voice-profile-schema.md +55 -0
- package/src/harness_context/skills/ecc/browser-qa/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/browser-qa/SKILL.md +105 -0
- package/src/harness_context/skills/ecc/bun-runtime/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/bun-runtime/SKILL.md +85 -0
- package/src/harness_context/skills/ecc/canary-watch/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/canary-watch/SKILL.md +108 -0
- package/src/harness_context/skills/ecc/carrier-relationship-management/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/carrier-relationship-management/SKILL.md +212 -0
- package/src/harness_context/skills/ecc/cisco-ios-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/cisco-ios-patterns/SKILL.md +164 -0
- package/src/harness_context/skills/ecc/ck/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ck/SKILL.md +148 -0
- package/src/harness_context/skills/ecc/ck/commands/forget.mjs +44 -0
- package/src/harness_context/skills/ecc/ck/commands/info.mjs +24 -0
- package/src/harness_context/skills/ecc/ck/commands/init.mjs +143 -0
- package/src/harness_context/skills/ecc/ck/commands/list.mjs +40 -0
- package/src/harness_context/skills/ecc/ck/commands/migrate.mjs +202 -0
- package/src/harness_context/skills/ecc/ck/commands/resume.mjs +36 -0
- package/src/harness_context/skills/ecc/ck/commands/save.mjs +210 -0
- package/src/harness_context/skills/ecc/ck/commands/shared.mjs +387 -0
- package/src/harness_context/skills/ecc/ck/hooks/session-start.mjs +224 -0
- package/src/harness_context/skills/ecc/claude-devfleet/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/claude-devfleet/SKILL.md +112 -0
- package/src/harness_context/skills/ecc/click-path-audit/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/click-path-audit/SKILL.md +245 -0
- package/src/harness_context/skills/ecc/clickhouse-io/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/clickhouse-io/SKILL.md +445 -0
- package/src/harness_context/skills/ecc/code-tour/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/code-tour/SKILL.md +254 -0
- package/src/harness_context/skills/ecc/codebase-onboarding/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/codebase-onboarding/SKILL.md +234 -0
- package/src/harness_context/skills/ecc/codehealth-mcp/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/codehealth-mcp/SKILL.md +167 -0
- package/src/harness_context/skills/ecc/coding-standards/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/coding-standards/SKILL.md +551 -0
- package/src/harness_context/skills/ecc/competitive-platform-analysis/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/competitive-platform-analysis/SKILL.md +214 -0
- package/src/harness_context/skills/ecc/competitive-report-structure/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/competitive-report-structure/SKILL.md +162 -0
- package/src/harness_context/skills/ecc/compose-multiplatform-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/compose-multiplatform-patterns/SKILL.md +300 -0
- package/src/harness_context/skills/ecc/config-gc/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/config-gc/SKILL.md +120 -0
- package/src/harness_context/skills/ecc/configure-ecc/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/configure-ecc/SKILL.md +206 -0
- package/src/harness_context/skills/ecc/connections-optimizer/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/connections-optimizer/SKILL.md +190 -0
- package/src/harness_context/skills/ecc/content-engine/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/content-engine/SKILL.md +132 -0
- package/src/harness_context/skills/ecc/content-hash-cache-pattern/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/content-hash-cache-pattern/SKILL.md +162 -0
- package/src/harness_context/skills/ecc/context-budget/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/context-budget/SKILL.md +136 -0
- package/src/harness_context/skills/ecc/continuous-agent-loop/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/continuous-agent-loop/SKILL.md +46 -0
- package/src/harness_context/skills/ecc/continuous-learning/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/continuous-learning/SKILL.md +132 -0
- package/src/harness_context/skills/ecc/continuous-learning/config.json +18 -0
- package/src/harness_context/skills/ecc/continuous-learning/evaluate-session.sh +69 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/SKILL.md +377 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/agents/observer-loop.sh +372 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/agents/observer.md +189 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/agents/start-observer.sh +252 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/config.json +8 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/hooks/observe.sh +675 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/scripts/detect-project.sh +334 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/scripts/instinct-cli.py +2290 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/scripts/migrate-homunculus.sh +68 -0
- package/src/harness_context/skills/ecc/continuous-learning-v2/scripts/test_parse_instinct.py +1420 -0
- package/src/harness_context/skills/ecc/contract-first/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/contract-first/SKILL.md +287 -0
- package/src/harness_context/skills/ecc/cost-aware-llm-pipeline/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/cost-aware-llm-pipeline/SKILL.md +188 -0
- package/src/harness_context/skills/ecc/cost-tracking/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/cost-tracking/SKILL.md +97 -0
- package/src/harness_context/skills/ecc/council/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/council/SKILL.md +204 -0
- package/src/harness_context/skills/ecc/council-multi-model/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/council-multi-model/SKILL.md +167 -0
- package/src/harness_context/skills/ecc/council-multi-model/scripts/review-with-codex.js +305 -0
- package/src/harness_context/skills/ecc/cpp-coding-standards/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/cpp-coding-standards/SKILL.md +724 -0
- package/src/harness_context/skills/ecc/cpp-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/cpp-testing/SKILL.md +325 -0
- package/src/harness_context/skills/ecc/crosspost/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/crosspost/SKILL.md +123 -0
- package/src/harness_context/skills/ecc/csharp-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/csharp-testing/SKILL.md +322 -0
- package/src/harness_context/skills/ecc/customer-billing-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/customer-billing-ops/SKILL.md +141 -0
- package/src/harness_context/skills/ecc/customs-trade-compliance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/customs-trade-compliance/SKILL.md +263 -0
- package/src/harness_context/skills/ecc/dart-flutter-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dart-flutter-patterns/SKILL.md +564 -0
- package/src/harness_context/skills/ecc/dashboard-builder/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dashboard-builder/SKILL.md +109 -0
- package/src/harness_context/skills/ecc/data-scraper-agent/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/data-scraper-agent/SKILL.md +776 -0
- package/src/harness_context/skills/ecc/data-throughput-accelerator/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/data-throughput-accelerator/SKILL.md +74 -0
- package/src/harness_context/skills/ecc/database-migrations/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/database-migrations/SKILL.md +430 -0
- package/src/harness_context/skills/ecc/deep-research/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/deep-research/SKILL.md +170 -0
- package/src/harness_context/skills/ecc/defi-amm-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/defi-amm-security/SKILL.md +167 -0
- package/src/harness_context/skills/ecc/delivery-gate/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/delivery-gate/SKILL.md +126 -0
- package/src/harness_context/skills/ecc/delivery-gate/hooks/quality-gate.py +220 -0
- package/src/harness_context/skills/ecc/deployment-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/deployment-patterns/SKILL.md +428 -0
- package/src/harness_context/skills/ecc/design-system/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/design-system/SKILL.md +83 -0
- package/src/harness_context/skills/ecc/dev-team/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dev-team/SKILL.md +203 -0
- package/src/harness_context/skills/ecc/django-celery/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/django-celery/SKILL.md +458 -0
- package/src/harness_context/skills/ecc/django-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/django-patterns/SKILL.md +735 -0
- package/src/harness_context/skills/ecc/django-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/django-security/SKILL.md +644 -0
- package/src/harness_context/skills/ecc/django-tdd/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/django-tdd/SKILL.md +730 -0
- package/src/harness_context/skills/ecc/django-verification/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/django-verification/SKILL.md +470 -0
- package/src/harness_context/skills/ecc/dmux-workflows/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dmux-workflows/SKILL.md +192 -0
- package/src/harness_context/skills/ecc/docker-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/docker-patterns/SKILL.md +520 -0
- package/src/harness_context/skills/ecc/documentation-lookup/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/documentation-lookup/SKILL.md +91 -0
- package/src/harness_context/skills/ecc/dotnet-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dotnet-patterns/SKILL.md +322 -0
- package/src/harness_context/skills/ecc/dynamic-workflow-mode/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/dynamic-workflow-mode/SKILL.md +124 -0
- package/src/harness_context/skills/ecc/e2e-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/e2e-testing/SKILL.md +327 -0
- package/src/harness_context/skills/ecc/ecc-guide/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ecc-guide/SKILL.md +190 -0
- package/src/harness_context/skills/ecc/ecc-recipes/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ecc-recipes/SKILL.md +150 -0
- package/src/harness_context/skills/ecc/ecc-tools-cost-audit/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ecc-tools-cost-audit/SKILL.md +161 -0
- package/src/harness_context/skills/ecc/email-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/email-ops/SKILL.md +133 -0
- package/src/harness_context/skills/ecc/energy-procurement/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/energy-procurement/SKILL.md +228 -0
- package/src/harness_context/skills/ecc/enterprise-agent-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/enterprise-agent-ops/SKILL.md +51 -0
- package/src/harness_context/skills/ecc/error-handling/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/error-handling/SKILL.md +377 -0
- package/src/harness_context/skills/ecc/eval-harness/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/eval-harness/SKILL.md +271 -0
- package/src/harness_context/skills/ecc/evm-token-decimals/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/evm-token-decimals/SKILL.md +131 -0
- package/src/harness_context/skills/ecc/exa-search/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/exa-search/SKILL.md +117 -0
- package/src/harness_context/skills/ecc/fal-ai-media/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/fal-ai-media/SKILL.md +289 -0
- package/src/harness_context/skills/ecc/fastapi-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/fastapi-patterns/SKILL.md +514 -0
- package/src/harness_context/skills/ecc/finance-billing-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/finance-billing-ops/SKILL.md +128 -0
- package/src/harness_context/skills/ecc/flox-environments/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/flox-environments/SKILL.md +497 -0
- package/src/harness_context/skills/ecc/flutter-dart-code-review/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/flutter-dart-code-review/SKILL.md +436 -0
- package/src/harness_context/skills/ecc/foundation-models-on-device/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/foundation-models-on-device/SKILL.md +243 -0
- package/src/harness_context/skills/ecc/frontend-a11y/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/frontend-a11y/SKILL.md +446 -0
- package/src/harness_context/skills/ecc/frontend-design-direction/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/frontend-design-direction/SKILL.md +93 -0
- package/src/harness_context/skills/ecc/frontend-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/frontend-patterns/SKILL.md +657 -0
- package/src/harness_context/skills/ecc/frontend-slides/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/frontend-slides/SKILL.md +185 -0
- package/src/harness_context/skills/ecc/frontend-slides/STYLE_PRESETS.md +330 -0
- package/src/harness_context/skills/ecc/frontend-slides/animation-patterns.md +122 -0
- package/src/harness_context/skills/ecc/frontend-slides/html-template.md +419 -0
- package/src/harness_context/skills/ecc/frontend-slides/scripts/export-pdf.sh +418 -0
- package/src/harness_context/skills/ecc/frontend-slides/scripts/extract-pptx.py +96 -0
- package/src/harness_context/skills/ecc/frontend-slides/viewport-base.css +153 -0
- package/src/harness_context/skills/ecc/fsharp-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/fsharp-testing/SKILL.md +281 -0
- package/src/harness_context/skills/ecc/gan-style-harness/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/gan-style-harness/SKILL.md +279 -0
- package/src/harness_context/skills/ecc/gateguard/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/gateguard/SKILL.md +182 -0
- package/src/harness_context/skills/ecc/generating-python-installer/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/generating-python-installer/SKILL.md +820 -0
- package/src/harness_context/skills/ecc/git-workflow/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/git-workflow/SKILL.md +716 -0
- package/src/harness_context/skills/ecc/github-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/github-ops/SKILL.md +162 -0
- package/src/harness_context/skills/ecc/github-ops/references/ecc-release-checklist.md +211 -0
- package/src/harness_context/skills/ecc/golang-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/golang-patterns/SKILL.md +676 -0
- package/src/harness_context/skills/ecc/golang-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/golang-testing/SKILL.md +721 -0
- package/src/harness_context/skills/ecc/google-workspace-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/google-workspace-ops/SKILL.md +96 -0
- package/src/harness_context/skills/ecc/growth-log/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/growth-log/SKILL.md +128 -0
- package/src/harness_context/skills/ecc/healthcare-cdss-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/healthcare-cdss-patterns/SKILL.md +246 -0
- package/src/harness_context/skills/ecc/healthcare-emr-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/healthcare-emr-patterns/SKILL.md +160 -0
- package/src/harness_context/skills/ecc/healthcare-eval-harness/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/healthcare-eval-harness/SKILL.md +208 -0
- package/src/harness_context/skills/ecc/healthcare-phi-compliance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/healthcare-phi-compliance/SKILL.md +146 -0
- package/src/harness_context/skills/ecc/hermes-imports/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/hermes-imports/SKILL.md +89 -0
- package/src/harness_context/skills/ecc/hexagonal-architecture/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/hexagonal-architecture/SKILL.md +277 -0
- package/src/harness_context/skills/ecc/hipaa-compliance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/hipaa-compliance/SKILL.md +79 -0
- package/src/harness_context/skills/ecc/homelab-network-readiness/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/homelab-network-readiness/SKILL.md +170 -0
- package/src/harness_context/skills/ecc/homelab-network-setup/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/homelab-network-setup/SKILL.md +130 -0
- package/src/harness_context/skills/ecc/homelab-pihole-dns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/homelab-pihole-dns/SKILL.md +275 -0
- package/src/harness_context/skills/ecc/homelab-vlan-segmentation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/homelab-vlan-segmentation/SKILL.md +312 -0
- package/src/harness_context/skills/ecc/homelab-wireguard-vpn/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/homelab-wireguard-vpn/SKILL.md +306 -0
- package/src/harness_context/skills/ecc/hookify-rules/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/hookify-rules/SKILL.md +128 -0
- package/src/harness_context/skills/ecc/inherit-legacy-style/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/inherit-legacy-style/SKILL.md +157 -0
- package/src/harness_context/skills/ecc/intent-driven-development/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/intent-driven-development/SKILL.md +360 -0
- package/src/harness_context/skills/ecc/inventory-demand-planning/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/inventory-demand-planning/SKILL.md +247 -0
- package/src/harness_context/skills/ecc/investor-materials/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/investor-materials/SKILL.md +97 -0
- package/src/harness_context/skills/ecc/investor-outreach/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/investor-outreach/SKILL.md +92 -0
- package/src/harness_context/skills/ecc/ios-icon-gen/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ios-icon-gen/SKILL.md +158 -0
- package/src/harness_context/skills/ecc/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/src/harness_context/skills/ecc/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/src/harness_context/skills/ecc/iterative-retrieval/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/iterative-retrieval/SKILL.md +212 -0
- package/src/harness_context/skills/ecc/ito-baskets/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ito-baskets/SKILL.md +263 -0
- package/src/harness_context/skills/ecc/ito-baskets/agents/openai.yaml +4 -0
- package/src/harness_context/skills/ecc/ito-baskets/scripts/ito-baskets.js +195 -0
- package/src/harness_context/skills/ecc/ito-compute/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ito-compute/SKILL.md +165 -0
- package/src/harness_context/skills/ecc/ito-compute/agents/openai.yaml +4 -0
- package/src/harness_context/skills/ecc/ito-inference/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ito-inference/SKILL.md +119 -0
- package/src/harness_context/skills/ecc/ito-training/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ito-training/SKILL.md +123 -0
- package/src/harness_context/skills/ecc/java-coding-standards/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/java-coding-standards/SKILL.md +384 -0
- package/src/harness_context/skills/ecc/jira-integration/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/jira-integration/SKILL.md +312 -0
- package/src/harness_context/skills/ecc/jpa-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/jpa-patterns/SKILL.md +152 -0
- package/src/harness_context/skills/ecc/knowledge-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/knowledge-ops/SKILL.md +155 -0
- package/src/harness_context/skills/ecc/kotlin-coroutines-flows/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kotlin-coroutines-flows/SKILL.md +285 -0
- package/src/harness_context/skills/ecc/kotlin-exposed-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kotlin-exposed-patterns/SKILL.md +720 -0
- package/src/harness_context/skills/ecc/kotlin-ktor-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kotlin-ktor-patterns/SKILL.md +690 -0
- package/src/harness_context/skills/ecc/kotlin-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kotlin-patterns/SKILL.md +712 -0
- package/src/harness_context/skills/ecc/kotlin-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kotlin-testing/SKILL.md +825 -0
- package/src/harness_context/skills/ecc/kubernetes-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/kubernetes-patterns/SKILL.md +756 -0
- package/src/harness_context/skills/ecc/laravel-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/laravel-patterns/SKILL.md +416 -0
- package/src/harness_context/skills/ecc/laravel-plugin-discovery/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/laravel-plugin-discovery/SKILL.md +230 -0
- package/src/harness_context/skills/ecc/laravel-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/laravel-security/SKILL.md +948 -0
- package/src/harness_context/skills/ecc/laravel-tdd/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/laravel-tdd/SKILL.md +675 -0
- package/src/harness_context/skills/ecc/laravel-verification/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/laravel-verification/SKILL.md +180 -0
- package/src/harness_context/skills/ecc/latency-critical-systems/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/latency-critical-systems/SKILL.md +75 -0
- package/src/harness_context/skills/ecc/lead-intelligence/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/lead-intelligence/SKILL.md +333 -0
- package/src/harness_context/skills/ecc/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/src/harness_context/skills/ecc/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/src/harness_context/skills/ecc/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/src/harness_context/skills/ecc/lead-intelligence/agents/signal-scorer.md +60 -0
- package/src/harness_context/skills/ecc/liquid-glass-design/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/liquid-glass-design/SKILL.md +279 -0
- package/src/harness_context/skills/ecc/living-docs-governance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/living-docs-governance/SKILL.md +137 -0
- package/src/harness_context/skills/ecc/llm-trading-agent-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/llm-trading-agent-security/SKILL.md +147 -0
- package/src/harness_context/skills/ecc/logistics-exception-management/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/logistics-exception-management/SKILL.md +222 -0
- package/src/harness_context/skills/ecc/loop-design-check/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/loop-design-check/SKILL.md +143 -0
- package/src/harness_context/skills/ecc/mailtrap-email-integration/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/mailtrap-email-integration/SKILL.md +77 -0
- package/src/harness_context/skills/ecc/make-interfaces-feel-better/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/make-interfaces-feel-better/SKILL.md +152 -0
- package/src/harness_context/skills/ecc/manim-video/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/manim-video/SKILL.md +90 -0
- package/src/harness_context/skills/ecc/manim-video/assets/network_graph_scene.py +52 -0
- package/src/harness_context/skills/ecc/market-research/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/market-research/SKILL.md +87 -0
- package/src/harness_context/skills/ecc/marketing-campaign/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/marketing-campaign/SKILL.md +114 -0
- package/src/harness_context/skills/ecc/mcp-server-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/mcp-server-patterns/SKILL.md +70 -0
- package/src/harness_context/skills/ecc/messages-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/messages-ops/SKILL.md +105 -0
- package/src/harness_context/skills/ecc/ml-adoption-playbook/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ml-adoption-playbook/SKILL.md +57 -0
- package/src/harness_context/skills/ecc/mle-workflow/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/mle-workflow/SKILL.md +348 -0
- package/src/harness_context/skills/ecc/motion-advanced/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/motion-advanced/SKILL.md +597 -0
- package/src/harness_context/skills/ecc/motion-foundations/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/motion-foundations/SKILL.md +300 -0
- package/src/harness_context/skills/ecc/motion-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/motion-patterns/SKILL.md +435 -0
- package/src/harness_context/skills/ecc/motion-ui/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/motion-ui/SKILL.md +576 -0
- package/src/harness_context/skills/ecc/mysql-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/mysql-patterns/SKILL.md +413 -0
- package/src/harness_context/skills/ecc/nanoclaw-repl/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nanoclaw-repl/SKILL.md +34 -0
- package/src/harness_context/skills/ecc/nasiko-control-plane/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nasiko-control-plane/SKILL.md +49 -0
- package/src/harness_context/skills/ecc/nasiko-control-plane/agents/openai.yaml +4 -0
- package/src/harness_context/skills/ecc/nestjs-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nestjs-patterns/SKILL.md +231 -0
- package/src/harness_context/skills/ecc/netmiko-ssh-automation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/netmiko-ssh-automation/SKILL.md +174 -0
- package/src/harness_context/skills/ecc/network-bgp-diagnostics/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/network-bgp-diagnostics/SKILL.md +168 -0
- package/src/harness_context/skills/ecc/network-config-validation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/network-config-validation/SKILL.md +211 -0
- package/src/harness_context/skills/ecc/network-interface-health/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/network-interface-health/SKILL.md +153 -0
- package/src/harness_context/skills/ecc/nextjs-turbopack/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nextjs-turbopack/SKILL.md +58 -0
- package/src/harness_context/skills/ecc/nodejs-keccak256/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nodejs-keccak256/SKILL.md +103 -0
- package/src/harness_context/skills/ecc/nutrient-document-processing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nutrient-document-processing/SKILL.md +168 -0
- package/src/harness_context/skills/ecc/nuxt4-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/nuxt4-patterns/SKILL.md +101 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/SKILL.md +289 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/gacha.py +224 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/gacha.sh +5 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/error-handling.md +53 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/naming-system.md +39 -0
- package/src/harness_context/skills/ecc/openclaw-persona-forge/references/output-template.md +166 -0
- package/src/harness_context/skills/ecc/opensource-pipeline/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/opensource-pipeline/SKILL.md +256 -0
- package/src/harness_context/skills/ecc/orch-add-feature/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-add-feature/SKILL.md +45 -0
- package/src/harness_context/skills/ecc/orch-build-mvp/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-build-mvp/SKILL.md +49 -0
- package/src/harness_context/skills/ecc/orch-change-feature/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-change-feature/SKILL.md +43 -0
- package/src/harness_context/skills/ecc/orch-fix-defect/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-fix-defect/SKILL.md +43 -0
- package/src/harness_context/skills/ecc/orch-pipeline/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-pipeline/SKILL.md +121 -0
- package/src/harness_context/skills/ecc/orch-refine-code/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/orch-refine-code/SKILL.md +44 -0
- package/src/harness_context/skills/ecc/parallel-execution-optimizer/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/parallel-execution-optimizer/SKILL.md +74 -0
- package/src/harness_context/skills/ecc/perl-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/perl-patterns/SKILL.md +505 -0
- package/src/harness_context/skills/ecc/perl-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/perl-security/SKILL.md +504 -0
- package/src/harness_context/skills/ecc/perl-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/perl-testing/SKILL.md +476 -0
- package/src/harness_context/skills/ecc/plan-canvas/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/plan-canvas/SKILL.md +196 -0
- package/src/harness_context/skills/ecc/plan-orchestrate/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/plan-orchestrate/SKILL.md +263 -0
- package/src/harness_context/skills/ecc/plankton-code-quality/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/plankton-code-quality/SKILL.md +237 -0
- package/src/harness_context/skills/ecc/postgres-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/postgres-patterns/SKILL.md +148 -0
- package/src/harness_context/skills/ecc/prediction-market-oracle-research/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/prediction-market-oracle-research/SKILL.md +64 -0
- package/src/harness_context/skills/ecc/prediction-market-risk-review/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/prediction-market-risk-review/SKILL.md +61 -0
- package/src/harness_context/skills/ecc/prisma-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/prisma-patterns/SKILL.md +401 -0
- package/src/harness_context/skills/ecc/product-capability/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/product-capability/SKILL.md +142 -0
- package/src/harness_context/skills/ecc/product-lens/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/product-lens/SKILL.md +93 -0
- package/src/harness_context/skills/ecc/production-audit/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/production-audit/SKILL.md +207 -0
- package/src/harness_context/skills/ecc/production-scheduling/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/production-scheduling/SKILL.md +238 -0
- package/src/harness_context/skills/ecc/project-flow-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/project-flow-ops/SKILL.md +112 -0
- package/src/harness_context/skills/ecc/prompt-optimizer/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/prompt-optimizer/SKILL.md +398 -0
- package/src/harness_context/skills/ecc/python-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/python-patterns/SKILL.md +751 -0
- package/src/harness_context/skills/ecc/python-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/python-testing/SKILL.md +817 -0
- package/src/harness_context/skills/ecc/pytorch-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/pytorch-patterns/SKILL.md +397 -0
- package/src/harness_context/skills/ecc/quality-nonconformance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/quality-nonconformance/SKILL.md +260 -0
- package/src/harness_context/skills/ecc/quarkus-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/quarkus-patterns/SKILL.md +723 -0
- package/src/harness_context/skills/ecc/quarkus-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/quarkus-security/SKILL.md +468 -0
- package/src/harness_context/skills/ecc/quarkus-tdd/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/quarkus-tdd/SKILL.md +812 -0
- package/src/harness_context/skills/ecc/quarkus-verification/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/quarkus-verification/SKILL.md +481 -0
- package/src/harness_context/skills/ecc/ralphinho-rfc-pipeline/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ralphinho-rfc-pipeline/SKILL.md +68 -0
- package/src/harness_context/skills/ecc/react-native-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/react-native-patterns/SKILL.md +326 -0
- package/src/harness_context/skills/ecc/react-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/react-patterns/SKILL.md +342 -0
- package/src/harness_context/skills/ecc/react-performance/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/react-performance/SKILL.md +575 -0
- package/src/harness_context/skills/ecc/react-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/react-testing/SKILL.md +424 -0
- package/src/harness_context/skills/ecc/recsys-pipeline-architect/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/recsys-pipeline-architect/SKILL.md +115 -0
- package/src/harness_context/skills/ecc/recursive-decision-ledger/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/recursive-decision-ledger/SKILL.md +81 -0
- package/src/harness_context/skills/ecc/redis-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/redis-patterns/SKILL.md +404 -0
- package/src/harness_context/skills/ecc/regex-vs-llm-structured-text/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/regex-vs-llm-structured-text/SKILL.md +221 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/SKILL.md +43 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/3d.md +86 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/animations.md +29 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/assets.md +78 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/audio.md +172 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/can-decode.md +75 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/charts.md +58 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/compositions.md +146 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/display-captions.md +126 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/extract-frames.md +229 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/fonts.md +152 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/gifs.md +138 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/images.md +130 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/lottie.md +67 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/measuring-text.md +143 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/sequencing.md +106 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/tailwind.md +11 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/text-animations.md +20 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/timing.md +179 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/transitions.md +122 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/trimming.md +52 -0
- package/src/harness_context/skills/ecc/remotion-video-creation/rules/videos.md +171 -0
- package/src/harness_context/skills/ecc/repo-scan/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/repo-scan/SKILL.md +170 -0
- package/src/harness_context/skills/ecc/research-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/research-ops/SKILL.md +113 -0
- package/src/harness_context/skills/ecc/returns-reverse-logistics/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/returns-reverse-logistics/SKILL.md +240 -0
- package/src/harness_context/skills/ecc/rules-distill/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/rules-distill/SKILL.md +265 -0
- package/src/harness_context/skills/ecc/rules-distill/scripts/scan-rules.sh +58 -0
- package/src/harness_context/skills/ecc/rules-distill/scripts/scan-skills.sh +129 -0
- package/src/harness_context/skills/ecc/rust-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/rust-patterns/SKILL.md +500 -0
- package/src/harness_context/skills/ecc/rust-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/rust-testing/SKILL.md +501 -0
- package/src/harness_context/skills/ecc/safety-guard/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/safety-guard/SKILL.md +76 -0
- package/src/harness_context/skills/ecc/santa-method/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/santa-method/SKILL.md +307 -0
- package/src/harness_context/skills/ecc/scientific-db-pubmed-database/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/scientific-db-pubmed-database/SKILL.md +176 -0
- package/src/harness_context/skills/ecc/scientific-db-uspto-database/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/scientific-db-uspto-database/SKILL.md +178 -0
- package/src/harness_context/skills/ecc/scientific-pkg-gget/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/scientific-pkg-gget/SKILL.md +167 -0
- package/src/harness_context/skills/ecc/scientific-thinking-literature-review/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/scientific-thinking-literature-review/SKILL.md +193 -0
- package/src/harness_context/skills/ecc/scientific-thinking-scholar-evaluation/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/scientific-thinking-scholar-evaluation/SKILL.md +161 -0
- package/src/harness_context/skills/ecc/search-first/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/search-first/SKILL.md +183 -0
- package/src/harness_context/skills/ecc/security-bounty-hunter/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/security-bounty-hunter/SKILL.md +100 -0
- package/src/harness_context/skills/ecc/security-review/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/security-review/SKILL.md +504 -0
- package/src/harness_context/skills/ecc/security-review/cloud-infrastructure-security.md +361 -0
- package/src/harness_context/skills/ecc/security-scan/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/security-scan/SKILL.md +166 -0
- package/src/harness_context/skills/ecc/seo/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/seo/SKILL.md +155 -0
- package/src/harness_context/skills/ecc/skill-comply/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/skill-comply/SKILL.md +59 -0
- package/src/harness_context/skills/ecc/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/src/harness_context/skills/ecc/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/src/harness_context/skills/ecc/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/src/harness_context/skills/ecc/skill-comply/prompts/classifier.md +24 -0
- package/src/harness_context/skills/ecc/skill-comply/prompts/scenario_generator.md +62 -0
- package/src/harness_context/skills/ecc/skill-comply/prompts/spec_generator.md +42 -0
- package/src/harness_context/skills/ecc/skill-comply/pyproject.toml +16 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/__init__.py +0 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/classifier.py +85 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/grader.py +124 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/parser.py +107 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/report.py +170 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/run.py +127 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/runner.py +245 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/scenario_generator.py +70 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/spec_generator.py +72 -0
- package/src/harness_context/skills/ecc/skill-comply/scripts/utils.py +13 -0
- package/src/harness_context/skills/ecc/skill-comply/tests/test_grader.py +197 -0
- package/src/harness_context/skills/ecc/skill-comply/tests/test_parser.py +90 -0
- package/src/harness_context/skills/ecc/skill-comply/tests/test_runner.py +316 -0
- package/src/harness_context/skills/ecc/skill-scout/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/skill-scout/SKILL.md +141 -0
- package/src/harness_context/skills/ecc/skill-stocktake/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/skill-stocktake/SKILL.md +195 -0
- package/src/harness_context/skills/ecc/skill-stocktake/scripts/quick-diff.sh +118 -0
- package/src/harness_context/skills/ecc/skill-stocktake/scripts/save-results.sh +56 -0
- package/src/harness_context/skills/ecc/skill-stocktake/scripts/scan.sh +211 -0
- package/src/harness_context/skills/ecc/social-graph-ranker/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/social-graph-ranker/SKILL.md +155 -0
- package/src/harness_context/skills/ecc/social-publisher/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/social-publisher/SKILL.md +139 -0
- package/src/harness_context/skills/ecc/springboot-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/springboot-patterns/SKILL.md +315 -0
- package/src/harness_context/skills/ecc/springboot-security/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/springboot-security/SKILL.md +273 -0
- package/src/harness_context/skills/ecc/springboot-tdd/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/springboot-tdd/SKILL.md +159 -0
- package/src/harness_context/skills/ecc/springboot-verification/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/springboot-verification/SKILL.md +232 -0
- package/src/harness_context/skills/ecc/strategic-compact/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/strategic-compact/SKILL.md +156 -0
- package/src/harness_context/skills/ecc/swift-actor-persistence/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/swift-actor-persistence/SKILL.md +144 -0
- package/src/harness_context/skills/ecc/swift-concurrency-6-2/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/swift-concurrency-6-2/SKILL.md +216 -0
- package/src/harness_context/skills/ecc/swift-protocol-di-testing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/swift-protocol-di-testing/SKILL.md +191 -0
- package/src/harness_context/skills/ecc/swiftui-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/swiftui-patterns/SKILL.md +259 -0
- package/src/harness_context/skills/ecc/taste/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/taste/SKILL.md +264 -0
- package/src/harness_context/skills/ecc/taste/references/genre-taxonomy.md +87 -0
- package/src/harness_context/skills/ecc/tasteforge-video/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/tasteforge-video/SKILL.md +192 -0
- package/src/harness_context/skills/ecc/tdd-workflow/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/tdd-workflow/SKILL.md +583 -0
- package/src/harness_context/skills/ecc/team-agent-orchestration/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/team-agent-orchestration/SKILL.md +111 -0
- package/src/harness_context/skills/ecc/team-builder/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/team-builder/SKILL.md +169 -0
- package/src/harness_context/skills/ecc/terminal-opener/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/terminal-opener/SKILL.md +55 -0
- package/src/harness_context/skills/ecc/terminal-opener/agents/openai.yaml +4 -0
- package/src/harness_context/skills/ecc/terminal-opener/scripts/open-terminal.js +396 -0
- package/src/harness_context/skills/ecc/terminal-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/terminal-ops/SKILL.md +110 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/SKILL.md +279 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/architecture.md +90 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/data-handling.md +60 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/database.md +99 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/routing.md +64 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/system-usage.md +97 -0
- package/src/harness_context/skills/ecc/tinystruct-patterns/references/testing.md +72 -0
- package/src/harness_context/skills/ecc/token-budget-advisor/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/token-budget-advisor/SKILL.md +134 -0
- package/src/harness_context/skills/ecc/ui-demo/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ui-demo/SKILL.md +466 -0
- package/src/harness_context/skills/ecc/ui-to-vue/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/ui-to-vue/SKILL.md +135 -0
- package/src/harness_context/skills/ecc/uncloud/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/uncloud/SKILL.md +344 -0
- package/src/harness_context/skills/ecc/unified-memory/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/unified-memory/SKILL.md +170 -0
- package/src/harness_context/skills/ecc/unified-notifications-ops/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/unified-notifications-ops/SKILL.md +188 -0
- package/src/harness_context/skills/ecc/verification-loop/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/verification-loop/SKILL.md +129 -0
- package/src/harness_context/skills/ecc/video-editing/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/video-editing/SKILL.md +311 -0
- package/src/harness_context/skills/ecc/videodb/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/videodb/SKILL.md +375 -0
- package/src/harness_context/skills/ecc/videodb/reference/api-reference.md +550 -0
- package/src/harness_context/skills/ecc/videodb/reference/capture-reference.md +407 -0
- package/src/harness_context/skills/ecc/videodb/reference/capture.md +101 -0
- package/src/harness_context/skills/ecc/videodb/reference/editor.md +443 -0
- package/src/harness_context/skills/ecc/videodb/reference/generative.md +331 -0
- package/src/harness_context/skills/ecc/videodb/reference/rtstream-reference.md +564 -0
- package/src/harness_context/skills/ecc/videodb/reference/rtstream.md +65 -0
- package/src/harness_context/skills/ecc/videodb/reference/search.md +230 -0
- package/src/harness_context/skills/ecc/videodb/reference/streaming.md +406 -0
- package/src/harness_context/skills/ecc/videodb/reference/use-cases.md +118 -0
- package/src/harness_context/skills/ecc/videodb/scripts/ws_listener.py +282 -0
- package/src/harness_context/skills/ecc/visa-doc-translate/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/visa-doc-translate/README.md +86 -0
- package/src/harness_context/skills/ecc/visa-doc-translate/SKILL.md +117 -0
- package/src/harness_context/skills/ecc/vite-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/vite-patterns/SKILL.md +450 -0
- package/src/harness_context/skills/ecc/vue-patterns/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/vue-patterns/SKILL.md +471 -0
- package/src/harness_context/skills/ecc/windows-desktop-e2e/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/windows-desktop-e2e/SKILL.md +888 -0
- package/src/harness_context/skills/ecc/workspace-surface-audit/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/workspace-surface-audit/SKILL.md +126 -0
- package/src/harness_context/skills/ecc/x-api/LICENSE.ecc +21 -0
- package/src/harness_context/skills/ecc/x-api/SKILL.md +244 -0
- package/src/harness_context/skills/ecc_catalog.json +2233 -0
- package/src/harness_context/skills/router.py +400 -0
- package/src/harness_context/workspace/roots.py +1 -1
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: compose-multiplatform-patterns
|
|
3
|
+
description: Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI. Use when building Compose or Jetpack Compose UI, state, navigation, or theming in a KMP project.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Compose Multiplatform Patterns
|
|
9
|
+
|
|
10
|
+
Patterns for building shared UI across Android, iOS, Desktop, and Web using Compose Multiplatform and Jetpack Compose. Covers state management, navigation, theming, and performance.
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- Building Compose UI (Jetpack Compose or Compose Multiplatform)
|
|
15
|
+
- Managing UI state with ViewModels and Compose state
|
|
16
|
+
- Implementing navigation in KMP or Android projects
|
|
17
|
+
- Designing reusable composables and design systems
|
|
18
|
+
- Optimizing recomposition and rendering performance
|
|
19
|
+
|
|
20
|
+
## State Management
|
|
21
|
+
|
|
22
|
+
### ViewModel + Single State Object
|
|
23
|
+
|
|
24
|
+
Use a single data class for screen state. Expose it as `StateFlow` and collect in Compose:
|
|
25
|
+
|
|
26
|
+
```kotlin
|
|
27
|
+
data class ItemListState(
|
|
28
|
+
val items: List<Item> = emptyList(),
|
|
29
|
+
val isLoading: Boolean = false,
|
|
30
|
+
val error: String? = null,
|
|
31
|
+
val searchQuery: String = ""
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
class ItemListViewModel(
|
|
35
|
+
private val getItems: GetItemsUseCase
|
|
36
|
+
) : ViewModel() {
|
|
37
|
+
private val _state = MutableStateFlow(ItemListState())
|
|
38
|
+
val state: StateFlow<ItemListState> = _state.asStateFlow()
|
|
39
|
+
|
|
40
|
+
fun onSearch(query: String) {
|
|
41
|
+
_state.update { it.copy(searchQuery = query) }
|
|
42
|
+
loadItems(query)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private fun loadItems(query: String) {
|
|
46
|
+
viewModelScope.launch {
|
|
47
|
+
_state.update { it.copy(isLoading = true) }
|
|
48
|
+
getItems(query).fold(
|
|
49
|
+
onSuccess = { items -> _state.update { it.copy(items = items, isLoading = false) } },
|
|
50
|
+
onFailure = { e -> _state.update { it.copy(error = e.message, isLoading = false) } }
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Collecting State in Compose
|
|
58
|
+
|
|
59
|
+
```kotlin
|
|
60
|
+
@Composable
|
|
61
|
+
fun ItemListScreen(viewModel: ItemListViewModel = koinViewModel()) {
|
|
62
|
+
val state by viewModel.state.collectAsStateWithLifecycle()
|
|
63
|
+
|
|
64
|
+
ItemListContent(
|
|
65
|
+
state = state,
|
|
66
|
+
onSearch = viewModel::onSearch
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@Composable
|
|
71
|
+
private fun ItemListContent(
|
|
72
|
+
state: ItemListState,
|
|
73
|
+
onSearch: (String) -> Unit
|
|
74
|
+
) {
|
|
75
|
+
// Stateless composable — easy to preview and test
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Event Sink Pattern
|
|
80
|
+
|
|
81
|
+
For complex screens, use a sealed interface for events instead of multiple callback lambdas:
|
|
82
|
+
|
|
83
|
+
```kotlin
|
|
84
|
+
sealed interface ItemListEvent {
|
|
85
|
+
data class Search(val query: String) : ItemListEvent
|
|
86
|
+
data class Delete(val itemId: String) : ItemListEvent
|
|
87
|
+
data object Refresh : ItemListEvent
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// In ViewModel
|
|
91
|
+
fun onEvent(event: ItemListEvent) {
|
|
92
|
+
when (event) {
|
|
93
|
+
is ItemListEvent.Search -> onSearch(event.query)
|
|
94
|
+
is ItemListEvent.Delete -> deleteItem(event.itemId)
|
|
95
|
+
is ItemListEvent.Refresh -> loadItems(_state.value.searchQuery)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// In Composable — single lambda instead of many
|
|
100
|
+
ItemListContent(
|
|
101
|
+
state = state,
|
|
102
|
+
onEvent = viewModel::onEvent
|
|
103
|
+
)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Navigation
|
|
107
|
+
|
|
108
|
+
### Type-Safe Navigation (Compose Navigation 2.8+)
|
|
109
|
+
|
|
110
|
+
Define routes as `@Serializable` objects:
|
|
111
|
+
|
|
112
|
+
```kotlin
|
|
113
|
+
@Serializable data object HomeRoute
|
|
114
|
+
@Serializable data class DetailRoute(val id: String)
|
|
115
|
+
@Serializable data object SettingsRoute
|
|
116
|
+
|
|
117
|
+
@Composable
|
|
118
|
+
fun AppNavHost(navController: NavHostController = rememberNavController()) {
|
|
119
|
+
NavHost(navController, startDestination = HomeRoute) {
|
|
120
|
+
composable<HomeRoute> {
|
|
121
|
+
HomeScreen(onNavigateToDetail = { id -> navController.navigate(DetailRoute(id)) })
|
|
122
|
+
}
|
|
123
|
+
composable<DetailRoute> { backStackEntry ->
|
|
124
|
+
val route = backStackEntry.toRoute<DetailRoute>()
|
|
125
|
+
DetailScreen(id = route.id)
|
|
126
|
+
}
|
|
127
|
+
composable<SettingsRoute> { SettingsScreen() }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Dialog and Bottom Sheet Navigation
|
|
133
|
+
|
|
134
|
+
Use `dialog()` and overlay patterns instead of imperative show/hide:
|
|
135
|
+
|
|
136
|
+
```kotlin
|
|
137
|
+
NavHost(navController, startDestination = HomeRoute) {
|
|
138
|
+
composable<HomeRoute> { /* ... */ }
|
|
139
|
+
dialog<ConfirmDeleteRoute> { backStackEntry ->
|
|
140
|
+
val route = backStackEntry.toRoute<ConfirmDeleteRoute>()
|
|
141
|
+
ConfirmDeleteDialog(
|
|
142
|
+
itemId = route.itemId,
|
|
143
|
+
onConfirm = { navController.popBackStack() },
|
|
144
|
+
onDismiss = { navController.popBackStack() }
|
|
145
|
+
)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Composable Design
|
|
151
|
+
|
|
152
|
+
### Slot-Based APIs
|
|
153
|
+
|
|
154
|
+
Design composables with slot parameters for flexibility:
|
|
155
|
+
|
|
156
|
+
```kotlin
|
|
157
|
+
@Composable
|
|
158
|
+
fun AppCard(
|
|
159
|
+
modifier: Modifier = Modifier,
|
|
160
|
+
header: @Composable () -> Unit = {},
|
|
161
|
+
content: @Composable ColumnScope.() -> Unit,
|
|
162
|
+
actions: @Composable RowScope.() -> Unit = {}
|
|
163
|
+
) {
|
|
164
|
+
Card(modifier = modifier) {
|
|
165
|
+
Column {
|
|
166
|
+
header()
|
|
167
|
+
Column(content = content)
|
|
168
|
+
Row(horizontalArrangement = Arrangement.End, content = actions)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Modifier Ordering
|
|
175
|
+
|
|
176
|
+
Modifier order matters — apply in this sequence:
|
|
177
|
+
|
|
178
|
+
```kotlin
|
|
179
|
+
Text(
|
|
180
|
+
text = "Hello",
|
|
181
|
+
modifier = Modifier
|
|
182
|
+
.padding(16.dp) // 1. Layout (padding, size)
|
|
183
|
+
.clip(RoundedCornerShape(8.dp)) // 2. Shape
|
|
184
|
+
.background(Color.White) // 3. Drawing (background, border)
|
|
185
|
+
.clickable { } // 4. Interaction
|
|
186
|
+
)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## KMP Platform-Specific UI
|
|
190
|
+
|
|
191
|
+
### expect/actual for Platform Composables
|
|
192
|
+
|
|
193
|
+
```kotlin
|
|
194
|
+
// commonMain
|
|
195
|
+
@Composable
|
|
196
|
+
expect fun PlatformStatusBar(darkIcons: Boolean)
|
|
197
|
+
|
|
198
|
+
// androidMain
|
|
199
|
+
@Composable
|
|
200
|
+
actual fun PlatformStatusBar(darkIcons: Boolean) {
|
|
201
|
+
val systemUiController = rememberSystemUiController()
|
|
202
|
+
SideEffect { systemUiController.setStatusBarColor(Color.Transparent, darkIcons) }
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// iosMain
|
|
206
|
+
@Composable
|
|
207
|
+
actual fun PlatformStatusBar(darkIcons: Boolean) {
|
|
208
|
+
// iOS handles this via UIKit interop or Info.plist
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Performance
|
|
213
|
+
|
|
214
|
+
### Stable Types for Skippable Recomposition
|
|
215
|
+
|
|
216
|
+
Mark classes as `@Stable` or `@Immutable` when all properties are stable:
|
|
217
|
+
|
|
218
|
+
```kotlin
|
|
219
|
+
@Immutable
|
|
220
|
+
data class ItemUiModel(
|
|
221
|
+
val id: String,
|
|
222
|
+
val title: String,
|
|
223
|
+
val description: String,
|
|
224
|
+
val progress: Float
|
|
225
|
+
)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Use `key()` and Lazy Lists Correctly
|
|
229
|
+
|
|
230
|
+
```kotlin
|
|
231
|
+
LazyColumn {
|
|
232
|
+
items(
|
|
233
|
+
items = items,
|
|
234
|
+
key = { it.id } // Stable keys enable item reuse and animations
|
|
235
|
+
) { item ->
|
|
236
|
+
ItemRow(item = item)
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Defer Reads with `derivedStateOf`
|
|
242
|
+
|
|
243
|
+
```kotlin
|
|
244
|
+
val listState = rememberLazyListState()
|
|
245
|
+
val showScrollToTop by remember {
|
|
246
|
+
derivedStateOf { listState.firstVisibleItemIndex > 5 }
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Avoid Allocations in Recomposition
|
|
251
|
+
|
|
252
|
+
```kotlin
|
|
253
|
+
// BAD — new lambda and list every recomposition
|
|
254
|
+
items.filter { it.isActive }.forEach { ActiveItem(it, onClick = { handle(it) }) }
|
|
255
|
+
|
|
256
|
+
// GOOD — key each item so callbacks stay attached to the right row
|
|
257
|
+
val activeItems = remember(items) { items.filter { it.isActive } }
|
|
258
|
+
activeItems.forEach { item ->
|
|
259
|
+
key(item.id) {
|
|
260
|
+
ActiveItem(item, onClick = { handle(item) })
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Theming
|
|
266
|
+
|
|
267
|
+
### Material 3 Dynamic Theming
|
|
268
|
+
|
|
269
|
+
```kotlin
|
|
270
|
+
@Composable
|
|
271
|
+
fun AppTheme(
|
|
272
|
+
darkTheme: Boolean = isSystemInDarkTheme(),
|
|
273
|
+
dynamicColor: Boolean = true,
|
|
274
|
+
content: @Composable () -> Unit
|
|
275
|
+
) {
|
|
276
|
+
val colorScheme = when {
|
|
277
|
+
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
|
|
278
|
+
if (darkTheme) dynamicDarkColorScheme(LocalContext.current)
|
|
279
|
+
else dynamicLightColorScheme(LocalContext.current)
|
|
280
|
+
}
|
|
281
|
+
darkTheme -> darkColorScheme()
|
|
282
|
+
else -> lightColorScheme()
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
MaterialTheme(colorScheme = colorScheme, content = content)
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Anti-Patterns to Avoid
|
|
290
|
+
|
|
291
|
+
- Using `mutableStateOf` in ViewModels when `MutableStateFlow` with `collectAsStateWithLifecycle` is safer for lifecycle
|
|
292
|
+
- Passing `NavController` deep into composables — pass lambda callbacks instead
|
|
293
|
+
- Heavy computation inside `@Composable` functions — move to ViewModel or `remember {}`
|
|
294
|
+
- Using `LaunchedEffect(Unit)` as a substitute for ViewModel init — it re-runs on configuration change in some setups
|
|
295
|
+
- Creating new object instances in composable parameters — causes unnecessary recomposition
|
|
296
|
+
|
|
297
|
+
## References
|
|
298
|
+
|
|
299
|
+
See skill: `android-clean-architecture` for module structure and layering.
|
|
300
|
+
See skill: `kotlin-coroutines-flows` for coroutine and Flow patterns.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Affaan Mustafa
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: config-gc
|
|
3
|
+
description: Garbage collection for your Claude Code configuration. Periodically scans ~/.claude (skills, memory, hooks, permissions, MCP servers, caches) for redundant, stale, orphaned, or low-value items, then walks the user through a confirm-each-deletion cleanup. Use when the user says "clean up my config", "config GC", "too many skills", "audit my setup", "my .claude is bloated", or asks for a periodic config review.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Config GC — Garbage Collection for Claude Code Setups
|
|
9
|
+
|
|
10
|
+
Borrowed from runtime garbage collection: periodically scan for objects that are no longer referenced, redundant, expired, or low-value, and reclaim the space. The critical difference: **here, collection requires a human in the loop. Never delete autonomously.**
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- The user asks to clean up, audit, or slim down their Claude Code configuration
|
|
15
|
+
- The user complains about too many skills, noisy hooks, or slow session startup
|
|
16
|
+
- A monthly/periodic config review is due
|
|
17
|
+
- After installing a large skill pack (e.g. this repo), to reconcile overlaps with existing setup
|
|
18
|
+
|
|
19
|
+
Do NOT activate for: cleaning project source code (that's refactoring), clearing chat history, or uninstalling Claude Code itself.
|
|
20
|
+
|
|
21
|
+
## Design Philosophy
|
|
22
|
+
|
|
23
|
+
1. **Append-only configs leak.** Skills, memory files, hooks, and permission entries only ever get added. Without periodic review they rot silently.
|
|
24
|
+
2. **Regular audits beat one-time purges.** Scan every ~30 days, propose a small batch of candidates each time.
|
|
25
|
+
3. **Per-channel strategies.** Each accumulation type (skills, hooks, permissions, ...) has its own staleness signals — don't apply one rule everywhere.
|
|
26
|
+
4. **Soft-delete first.** Rename to `.disabled` > move to `~/.claude/_gc_trash/` > real deletion. Always keep an undo path.
|
|
27
|
+
5. **Forced human-in-the-loop.** Every candidate gets its own `[y/n/skip]` confirmation. No "yes to all" shortcut.
|
|
28
|
+
6. **Keep a log.** Every GC run appends to `~/.claude/gc_log.md`: what was touched, why, and how to undo it.
|
|
29
|
+
|
|
30
|
+
## Scan Channels
|
|
31
|
+
|
|
32
|
+
| # | Channel | Path | Staleness / redundancy signals |
|
|
33
|
+
|---|---------|------|--------------------------------|
|
|
34
|
+
| 1 | Skills | `~/.claude/skills/*/` | Heavily overlapping names; never triggered in recent transcripts; domain mismatch with the user's actual work; broken or empty SKILL.md |
|
|
35
|
+
| 2 | Memory | `~/.claude/**/memory/*.md` + its index | Multiple index entries for one topic; contents contradicting newer entries; dates that have passed; orphan files missing from the index; sub-100-word fragments that should merge |
|
|
36
|
+
| 3 | Hooks | `~/.claude/hooks/` + settings | Scripts present on disk but referenced by no hook config; old versions superseded by rewrites |
|
|
37
|
+
| 4 | Permissions | `permissions.allow` in `settings.json` / `settings.local.json` | Duplicate entries; specific entries already covered by a wildcard (e.g. `Bash(git push)` when `Bash(*)` is allowed); one-off grants from past experiments |
|
|
38
|
+
| 5 | MCP servers | `~/.claude.json` or project `.mcp.json` | Servers that fail to connect; functional duplicates; long-unused |
|
|
39
|
+
| 6 | Scheduled reminders / jobs | wherever the user keeps them | Fired one-shots older than 30 days; jobs whose target scripts no longer exist |
|
|
40
|
+
| 7 | Project history | `~/.claude/projects/*/` | Stale handoff snapshots; session records superseded by newer state |
|
|
41
|
+
| 8 | Runtime caches | `cache/`, `file-history/`, `logs/`, `shell-snapshots/` | Sort by size and mtime; propose items >30 days old and large |
|
|
42
|
+
|
|
43
|
+
## Workflow
|
|
44
|
+
|
|
45
|
+
1. **Scan** all channels (or the subset the user names). Collect candidates with: path, channel, signal that flagged it, size, last-modified.
|
|
46
|
+
2. **Rank** by confidence (broken/orphaned = high; merely old = low) and present as a numbered table. Cap each run at ~20 candidates — GC is periodic, not exhaustive.
|
|
47
|
+
3. **Confirm one by one.** For each candidate show the evidence, then ask `[y/n/skip]`. The user can stop at any point.
|
|
48
|
+
4. **Soft-delete confirmed items**: prefer `.disabled` rename for skills/hooks and `_gc_trash/<date>/` move for files. Permission entries live in JSON (no comments possible): back up the settings file, record each removed entry verbatim in `gc_log.md`, then remove it from the `allow` array with `jq`. Only hard-delete when the user explicitly asks.
|
|
49
|
+
5. **Log** the run to `~/.claude/gc_log.md`: timestamp, items actioned, undo instructions.
|
|
50
|
+
6. **Report**: reclaimed size, channels still healthy, suggested next review date.
|
|
51
|
+
|
|
52
|
+
## Example Scan Commands
|
|
53
|
+
|
|
54
|
+
Orphaned hook scripts (channel 3) — scripts on disk that no hook config references:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
for f in ~/.claude/hooks/*; do
|
|
58
|
+
name=$(basename "$f")
|
|
59
|
+
grep -rq "$name" ~/.claude/settings.json ~/.claude/settings.local.json 2>/dev/null \
|
|
60
|
+
|| echo "ORPHAN: $f"
|
|
61
|
+
done
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Redundant permission entries (channel 4) — duplicates, and specific grants shadowed by a wildcard:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
jq -r '.permissions.allow[]' ~/.claude/settings.local.json | sort | uniq -d
|
|
68
|
+
if jq -e '.permissions.allow | index("Bash(*)")' ~/.claude/settings.local.json >/dev/null; then
|
|
69
|
+
jq -r '.permissions.allow[]' ~/.claude/settings.local.json \
|
|
70
|
+
| grep '^Bash(' | grep -vF 'Bash(*)'
|
|
71
|
+
fi
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Largest stale caches (channel 8) — `du -k` instead of GNU-only `find -printf`, so it works on macOS/BSD too:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
find ~/.claude/file-history ~/.claude/shell-snapshots -type f -mtime +30 \
|
|
78
|
+
-exec du -k {} + 2>/dev/null | sort -rn | head -20
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Soft-delete with undo path (capture the date once so the log can't disagree with the directory):
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
gc_date=$(date +%Y-%m-%d)
|
|
85
|
+
mkdir -p ~/.claude/_gc_trash/$gc_date
|
|
86
|
+
mv ~/.claude/skills/dead-skill ~/.claude/_gc_trash/$gc_date/
|
|
87
|
+
echo "$(date -Iseconds) moved skills/dead-skill -> _gc_trash/$gc_date/ (undo: mv back)" >> ~/.claude/gc_log.md
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Removing a confirmed-redundant permission entry (JSON has no comments — back up, log, then edit):
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cp ~/.claude/settings.local.json ~/.claude/settings.local.json.bak
|
|
94
|
+
echo "$(date -Iseconds) removed permission entry: Bash(git push) (undo: restore from .bak or re-add)" >> ~/.claude/gc_log.md
|
|
95
|
+
jq '.permissions.allow -= ["Bash(git push)"]' ~/.claude/settings.local.json.bak \
|
|
96
|
+
> ~/.claude/settings.local.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Anti-Patterns
|
|
100
|
+
|
|
101
|
+
- **Bulk approval.** Asking "delete all 15? [y/n]" defeats the design. One item, one decision.
|
|
102
|
+
- **Hard-deleting on first pass.** If there's no `_gc_trash/` copy or `.disabled` rename, you did it wrong.
|
|
103
|
+
- **Treating "old" as "dead".** A skill untouched for 60 days may be seasonal (tax season, quarterly reviews). Age is a signal, not a verdict — that's why a human confirms.
|
|
104
|
+
- **Cleaning memory by truncation.** Merging two contradicting memory files requires reading both and keeping the newer truth, not deleting the longer one.
|
|
105
|
+
- **Touching anything outside `~/.claude`** (or the project's `.claude/`). Config GC never wanders into source trees.
|
|
106
|
+
|
|
107
|
+
## Best Practices
|
|
108
|
+
|
|
109
|
+
- Run after big additions, not just on a calendar: installing a 50-skill pack is exactly when overlap with existing skills appears.
|
|
110
|
+
- When two skills overlap, prefer disabling the one with the weaker trigger description — it's the one that was probably never firing anyway.
|
|
111
|
+
- Permission cleanup is the highest-value channel per minute spent: redundant allow-entries make security review harder.
|
|
112
|
+
- Keep `gc_log.md` forever. It's tiny, and "when did I disable that hook and why" comes up more often than you'd think.
|
|
113
|
+
|
|
114
|
+
## Related Skills
|
|
115
|
+
|
|
116
|
+
- `skill-stocktake` — audits skill *quality*; config-gc audits skill *existence*. Run stocktake on what survives GC.
|
|
117
|
+
- `workspace-surface-audit` — the additive counterpart: recommends what to install. config-gc is the subtractive half of the same lifecycle.
|
|
118
|
+
- `configure-ecc` — after installing skills with it, run config-gc to reconcile overlaps with your pre-existing setup.
|
|
119
|
+
- `continuous-learning` — produces the memory files this skill later audits.
|
|
120
|
+
- `security-review` — pairs well with the permissions channel.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Affaan Mustafa
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configure-ecc
|
|
3
|
+
description: Guide ECC installation, update, or reconfiguration from inside Claude Code, Codex, or Kimi while respecting each harness's real plugin, scope, and hook capabilities.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Configure Everything Claude Code
|
|
9
|
+
|
|
10
|
+
Run a conversational wizard inside the current harness. Inventory first, collect
|
|
11
|
+
only supported choices, preview, confirm once, apply non-interactively, verify,
|
|
12
|
+
and show the welcome only after success. Never clone ECC into a temporary
|
|
13
|
+
directory or copy plugin components by hand.
|
|
14
|
+
|
|
15
|
+
For a human-operated terminal, the canonical entry points are `ecc setup` and
|
|
16
|
+
`npx ecc-universal setup`. Inside a harness, use the explicit non-interactive
|
|
17
|
+
commands below instead.
|
|
18
|
+
|
|
19
|
+
## Route by the current harness
|
|
20
|
+
|
|
21
|
+
- In Claude Code, use the full scope-and-hook wizard below.
|
|
22
|
+
- In Codex, use Codex's native plugin lifecycle. Do not offer Claude scopes or
|
|
23
|
+
map ECC's four Claude hook profiles onto Codex.
|
|
24
|
+
- In Kimi, install the project surface under `./.kimi-code`. Kimi does not
|
|
25
|
+
provide ECC's Claude lifecycle-hook profiles.
|
|
26
|
+
- If the harness is uncertain, state the detected evidence and ask which
|
|
27
|
+
harness to configure before running a mutating command.
|
|
28
|
+
|
|
29
|
+
This skill is a post-install reconfiguration path. It cannot intercept or
|
|
30
|
+
replace a provider's built-in first-install UI.
|
|
31
|
+
|
|
32
|
+
## Claude Code: run the full conversational wizard
|
|
33
|
+
|
|
34
|
+
### 1. Inventory without changing anything
|
|
35
|
+
|
|
36
|
+
Run both commands and summarize the installed ECC scope, enabled state, and
|
|
37
|
+
marketplace source:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
claude plugin list --json
|
|
41
|
+
claude plugin marketplace list --json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Treat a single existing `ecc@ecc` installation as a reconfiguration. Do not
|
|
45
|
+
interpret Claude's provider-owned "Open home page" control as installation
|
|
46
|
+
evidence. Stop and report the recovery returned by setup for multiple ECC
|
|
47
|
+
scopes, a legacy/manual install, malformed settings, or a marketplace collision;
|
|
48
|
+
never guess which state to delete.
|
|
49
|
+
|
|
50
|
+
### 2. Collect exactly two choices
|
|
51
|
+
|
|
52
|
+
Ask exactly one scope question and require one value:
|
|
53
|
+
|
|
54
|
+
- `user | project | local`
|
|
55
|
+
- `user` is global for this user.
|
|
56
|
+
- `project` is shared through repository settings.
|
|
57
|
+
- `local` is private to the current project.
|
|
58
|
+
|
|
59
|
+
Visually mark only the selected scope as selected or installing. If the user
|
|
60
|
+
chooses a different scope from a single existing install, describe it as a
|
|
61
|
+
scope migration and include `--move-scope` in the commands below.
|
|
62
|
+
|
|
63
|
+
Ask exactly one hook-mode question and require one value:
|
|
64
|
+
|
|
65
|
+
- `off | minimal | standard | strict`
|
|
66
|
+
- `off` keeps skills and commands but disables ECC hook automation.
|
|
67
|
+
- `minimal` enables the lightest lifecycle and safety automation.
|
|
68
|
+
- `standard` balances quality and safety automation.
|
|
69
|
+
- `strict` enables the strongest checks and reminders.
|
|
70
|
+
|
|
71
|
+
Hook preference is personal Claude plugin configuration; it does not follow
|
|
72
|
+
the selected install scope.
|
|
73
|
+
|
|
74
|
+
### 3. Preview and confirm once
|
|
75
|
+
|
|
76
|
+
Prefer the plugin-bundled setup script. Substitute the two selected values and
|
|
77
|
+
include `--move-scope` only for a scope migration:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
|
|
81
|
+
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If `$CLAUDE_PLUGIN_ROOT` is unavailable, use the published npm package:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npx --yes --package ecc-universal ecc setup --mode claude-plugin \
|
|
88
|
+
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Show exactly one confirmation summary containing the planned action, one scope,
|
|
92
|
+
one hook mode, marketplace action, and any source-to-destination migration.
|
|
93
|
+
Ask one yes/no question. Do not run a bare interactive `ecc setup` through a
|
|
94
|
+
harness shell tool because that shell is commonly non-TTY.
|
|
95
|
+
|
|
96
|
+
### 4. Apply the explicit choices
|
|
97
|
+
|
|
98
|
+
After confirmation, rerun the same route without `--dry-run`. Keep every choice
|
|
99
|
+
explicit and request JSON so success can be checked deterministically:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
|
|
103
|
+
--scope <scope> --hooks <hooks> [--move-scope] --yes --json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Fallback:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx --yes --package ecc-universal ecc setup --mode claude-plugin \
|
|
110
|
+
--scope <scope> --hooks <hooks> [--move-scope] --yes --json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 5. Verify, then render the welcome
|
|
114
|
+
|
|
115
|
+
Require a zero exit status and a setup result whose `scope` and `hooks` equal
|
|
116
|
+
the selected values. Then independently run:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
claude plugin list --json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Continue only when exactly one enabled `ecc@ecc` entry exists at the selected
|
|
123
|
+
scope. When `$CLAUDE_PLUGIN_ROOT` is available, pass the successful setup
|
|
124
|
+
`action` (`installed`, `updated`, `migrated`, `resumed`, or
|
|
125
|
+
`already-migrated`) to the bundled renderer:
|
|
126
|
+
|
|
127
|
+
Before invoking it, require the provider-reported version to match
|
|
128
|
+
`ECC_VERSION_PATTERN` from `scripts/lib/terminal-welcome.js`. Reject unexpected
|
|
129
|
+
version text instead of interpolating it into a shell command.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
node -e 'const { renderTerminalWelcome } = require(process.env.CLAUDE_PLUGIN_ROOT + "/scripts/lib/terminal-welcome"); process.stdout.write(renderTerminalWelcome({ action: process.argv[1], version: process.argv[2], color: process.stdout.isTTY }));' "<action>" "<installed-version>"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Render the welcome exactly once. On failure, dry-run, cancellation, a scope or
|
|
136
|
+
hook mismatch, or unverifiable state, do not render it; report the error and
|
|
137
|
+
recovery instead. After verified changes, tell the user to run
|
|
138
|
+
`/reload-plugins` or restart Claude Code.
|
|
139
|
+
|
|
140
|
+
## Codex: use the native plugin lifecycle
|
|
141
|
+
|
|
142
|
+
Inventory with `codex plugin marketplace list --json` and
|
|
143
|
+
`codex plugin list --available --json`. Codex's native plugin command has no
|
|
144
|
+
Claude-style `user | project | local` selector. Codex native plugins do support
|
|
145
|
+
provider-specific hooks, but Codex requires explicit trust for them. Let Codex
|
|
146
|
+
show that trust decision; do not ask the Claude four-profile hook question or
|
|
147
|
+
claim those profiles map to Codex.
|
|
148
|
+
|
|
149
|
+
If the ECC marketplace is missing, add it. Otherwise refresh its snapshot:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
codex plugin marketplace add affaan-m/ECC
|
|
153
|
+
codex plugin marketplace upgrade ecc --json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Ask for one confirmation, then install or idempotently refresh the installed
|
|
157
|
+
cache and verify it:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
codex plugin add ecc@ecc --json
|
|
161
|
+
codex plugin list --json
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Continue only when the JSON reports ECC installed and provides its
|
|
165
|
+
`installedPath`. Then render the verified bundle's welcome:
|
|
166
|
+
|
|
167
|
+
Use only the exact absolute `installedPath` returned by Codex JSON. Reject
|
|
168
|
+
control characters and require the installed version to match
|
|
169
|
+
`ECC_VERSION_PATTERN`. Invoke `node` directly with this argument array; this is
|
|
170
|
+
a tool API invocation, not a shell command:
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
["<installedPath>/scripts/welcome.js", "--action", "configured", "--version", "<installed-version>"]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
If the current harness cannot invoke an executable with a separate argument
|
|
177
|
+
array, skip the welcome. Never construct a shell command from Codex JSON values.
|
|
178
|
+
|
|
179
|
+
Never claim that Claude's `off | minimal | standard | strict` profiles were
|
|
180
|
+
applied to Codex.
|
|
181
|
+
|
|
182
|
+
## Kimi: install the project surface
|
|
183
|
+
|
|
184
|
+
State the capability summary before confirmation: destination
|
|
185
|
+
`./.kimi-code`; `hooks=unsupported` for ECC lifecycle hooks. Do not ask the
|
|
186
|
+
Claude scope or hook-mode questions. Preview first:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
npx --yes --package ecc-universal ecc install --profile core --target kimi --dry-run
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Show one confirmation for that project destination, then apply the identical
|
|
193
|
+
command without `--dry-run`. Verify with:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
npx --yes --package ecc-universal ecc doctor --target kimi
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Only after doctor succeeds and the installed instructions and skills remain
|
|
200
|
+
inside `./.kimi-code`, render:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npx --yes --package ecc-universal ecc welcome --action configured
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Do not claim that Kimi installed or configured ECC lifecycle hooks.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Affaan Mustafa
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|