claudecode-omc 5.6.4 → 5.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.local/commands/code-review.md +416 -0
- package/.local/commands/pr.md +250 -0
- package/.local/commands/prp-pr.md +244 -0
- package/.local/guidelines/CLAUDE.md +47 -0
- package/.local/skills/prompt-optimizer/SKILL.md +23 -4
- package/bundled/manifest.json +4 -4
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
- package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
- package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
- package/bundled/upstream/ecc/agents/architect.md +9 -0
- package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
- package/bundled/upstream/ecc/agents/code-architect.md +9 -0
- package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
- package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
- package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
- package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
- package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
- package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
- package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
- package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
- package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
- package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
- package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
- package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
- package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
- package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
- package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
- package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
- package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
- package/bundled/upstream/ecc/agents/network-architect.md +106 -0
- package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
- package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
- package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
- package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/planner.md +9 -0
- package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
- package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
- package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
- package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
- package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
- package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
- package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
- package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
- package/bundled/upstream/ecc/commands/auto-update.md +28 -0
- package/bundled/upstream/ecc/commands/build-fix.md +4 -0
- package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
- package/bundled/upstream/ecc/commands/code-review.md +3 -3
- package/bundled/upstream/ecc/commands/cost-report.md +107 -0
- package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
- package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
- package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
- package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
- package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
- package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
- package/bundled/upstream/ecc/commands/gan-build.md +4 -0
- package/bundled/upstream/ecc/commands/gan-design.md +4 -0
- package/bundled/upstream/ecc/commands/go-build.md +1 -1
- package/bundled/upstream/ecc/commands/go-test.md +1 -1
- package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
- package/bundled/upstream/ecc/commands/jira.md +2 -2
- package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
- package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
- package/bundled/upstream/ecc/commands/learn.md +4 -0
- package/bundled/upstream/ecc/commands/loop-start.md +4 -0
- package/bundled/upstream/ecc/commands/loop-status.md +54 -1
- package/bundled/upstream/ecc/commands/model-route.md +4 -0
- package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
- package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
- package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
- package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
- package/bundled/upstream/ecc/commands/plan.md +96 -13
- package/bundled/upstream/ecc/commands/pm2.md +4 -0
- package/bundled/upstream/ecc/commands/pr.md +184 -0
- package/bundled/upstream/ecc/commands/project-init.md +86 -0
- package/bundled/upstream/ecc/commands/python-review.md +1 -1
- package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
- package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
- package/bundled/upstream/ecc/commands/rust-build.md +1 -1
- package/bundled/upstream/ecc/commands/rust-test.md +1 -1
- package/bundled/upstream/ecc/commands/security-scan.md +92 -0
- package/bundled/upstream/ecc/commands/sessions.md +6 -6
- package/bundled/upstream/ecc/commands/skill-health.md +3 -3
- package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
- package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
- package/bundled/upstream/ecc/commands/update-docs.md +4 -0
- package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
- package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
- package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
- package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
- package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
- package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
- package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
- package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
- package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
- package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
- package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
- package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
- package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
- package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
- package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
- package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
- package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
- package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
- package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
- package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
- package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
- package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
- package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
- package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
- package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
- package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
- package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
- package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
- package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
- package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
- package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
- package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
- package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
- package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
- package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
- package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
- package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
- package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
- package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
- package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
- package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
- package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
- package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
- package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
- package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
- package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
- package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
- package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
- package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
- package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
- package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
- package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
- package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
- package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
- package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
- package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
- package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
- package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
- package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
- package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
- package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
- package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
- package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
- package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
- package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
- package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
- package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
- package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
- package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
- package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
- package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
- package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
- package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
- package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
- package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/cli/index.js +1 -0
- package/src/cli/setup.js +9 -0
- package/src/cli/skill-index.js +209 -0
- package/src/cli/skill.js +4 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
- package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
- package/bundled/upstream/ecc/commands/claw.md +0 -23
- package/bundled/upstream/ecc/commands/context-budget.md +0 -23
- package/bundled/upstream/ecc/commands/devfleet.md +0 -23
- package/bundled/upstream/ecc/commands/docs.md +0 -23
- package/bundled/upstream/ecc/commands/e2e.md +0 -268
- package/bundled/upstream/ecc/commands/eval.md +0 -23
- package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
- package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
- package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
- package/bundled/upstream/ecc/commands/tdd.md +0 -231
- package/bundled/upstream/ecc/commands/verify.md +0 -23
- package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
- package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
- package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
- package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
- package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
- package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Angular Signals Overview
|
|
2
|
+
|
|
3
|
+
Signals are the foundation of reactivity in modern Angular applications. A **signal** is a wrapper around a value that notifies interested consumers when that value changes.
|
|
4
|
+
|
|
5
|
+
## Writable Signals (`signal`)
|
|
6
|
+
|
|
7
|
+
Use `signal()` to create state that can be directly updated.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import {signal} from '@angular/core';
|
|
11
|
+
|
|
12
|
+
// Create a writable signal
|
|
13
|
+
const count = signal(0);
|
|
14
|
+
|
|
15
|
+
// Read the value (always requires calling the getter function)
|
|
16
|
+
console.log(count());
|
|
17
|
+
|
|
18
|
+
// Update the value directly
|
|
19
|
+
count.set(3);
|
|
20
|
+
|
|
21
|
+
// Update based on the previous value
|
|
22
|
+
count.update((value) => value + 1);
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Exposing as Readonly
|
|
26
|
+
|
|
27
|
+
When exposing state from a service, it is a best practice to expose a readonly version to prevent external mutation.
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
private readonly _count = signal(0);
|
|
31
|
+
// Consumers can read this, but cannot call .set() or .update()
|
|
32
|
+
readonly count = this._count.asReadonly();
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Computed Signals (`computed`)
|
|
36
|
+
|
|
37
|
+
Use `computed()` to create read-only signals that derive their value from other signals.
|
|
38
|
+
|
|
39
|
+
- **Lazily Evaluated**: The derivation function doesn't run until the computed signal is read.
|
|
40
|
+
- **Memoized**: The result is cached. It only recalculates when one of the signals it depends on changes.
|
|
41
|
+
- **Dynamic Dependencies**: Only the signals _actually read_ during the derivation are tracked.
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import {signal, computed} from '@angular/core';
|
|
45
|
+
|
|
46
|
+
const count = signal(0);
|
|
47
|
+
const doubleCount = computed(() => count() * 2);
|
|
48
|
+
|
|
49
|
+
// doubleCount automatically updates when count changes.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Reactive Contexts
|
|
53
|
+
|
|
54
|
+
A **reactive context** is a runtime state where Angular monitors signal reads to establish a dependency.
|
|
55
|
+
|
|
56
|
+
Angular automatically enters a reactive context when evaluating:
|
|
57
|
+
|
|
58
|
+
- `computed` signals
|
|
59
|
+
- `effect` callbacks
|
|
60
|
+
- `linkedSignal` computations
|
|
61
|
+
- Component templates
|
|
62
|
+
|
|
63
|
+
### Untracked Reads (`untracked`)
|
|
64
|
+
|
|
65
|
+
If you need to read a signal inside a reactive context _without_ creating a dependency (so that the context doesn't re-run when the signal changes), use `untracked()`.
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import {effect, untracked} from '@angular/core';
|
|
69
|
+
|
|
70
|
+
effect(() => {
|
|
71
|
+
// This effect only runs when currentUser changes.
|
|
72
|
+
// It does NOT run when counter changes, even though counter is read here.
|
|
73
|
+
console.log(`User: ${currentUser()}, Count: ${untracked(counter)}`);
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Async Operations in Reactive Contexts
|
|
78
|
+
|
|
79
|
+
The reactive context is only active for **synchronous** code. Signal reads after an `await` will not be tracked. **Always read signals before asynchronous boundaries.**
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// Incorrect: theme() is not tracked because it is read after await
|
|
83
|
+
effect(async () => {
|
|
84
|
+
const data = await fetchUserData();
|
|
85
|
+
console.log(theme());
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Correct: Read the signal before the await
|
|
89
|
+
effect(async () => {
|
|
90
|
+
const currentTheme = theme();
|
|
91
|
+
const data = await fetchUserData();
|
|
92
|
+
console.log(currentTheme);
|
|
93
|
+
});
|
|
94
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Using Tailwind CSS with Angular
|
|
2
|
+
|
|
3
|
+
Tailwind CSS is a utility-first CSS framework that integrates seamlessly with Angular.
|
|
4
|
+
|
|
5
|
+
**CRITICAL AGENT GUIDANCE: ALWAYS focus on Tailwind CSS v4 practices. DO NOT revert to old Tailwind v3 patterns (like creating `tailwind.config.js` with `@tailwind` directives) as this will break the application build. Modern Angular projects use Tailwind v4.**
|
|
6
|
+
|
|
7
|
+
## Automated Setup (Recommended)
|
|
8
|
+
|
|
9
|
+
The easiest way to add Tailwind CSS to an Angular project is via the Angular CLI:
|
|
10
|
+
|
|
11
|
+
```shell
|
|
12
|
+
ng add tailwindcss
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This will automatically:
|
|
16
|
+
|
|
17
|
+
1. Install `tailwindcss` and peer dependencies.
|
|
18
|
+
2. Configure the project to use Tailwind CSS.
|
|
19
|
+
3. Add the proper import to your global styles.
|
|
20
|
+
|
|
21
|
+
## Manual Setup (Tailwind v4)
|
|
22
|
+
|
|
23
|
+
If setting up manually, use the following Tailwind v4 pattern:
|
|
24
|
+
|
|
25
|
+
### 1. Install Dependencies
|
|
26
|
+
|
|
27
|
+
Install Tailwind CSS and PostCSS:
|
|
28
|
+
|
|
29
|
+
```shell
|
|
30
|
+
npm install tailwindcss @tailwindcss/postcss postcss
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Configure PostCSS
|
|
34
|
+
|
|
35
|
+
Create a `.postcssrc.json` file in the project root:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"plugins": {
|
|
40
|
+
"@tailwindcss/postcss": {}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
_(Do NOT create a `tailwind.config.js` file! Configuration in v4 is handled through CSS variables)._
|
|
46
|
+
|
|
47
|
+
### 3. Import Tailwind CSS
|
|
48
|
+
|
|
49
|
+
In your global styles file (e.g., `src/styles.css`), add the standard v4 import:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
@import 'tailwindcss';
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
_(If using SCSS, use `@use 'tailwindcss';` instead)._
|
|
56
|
+
|
|
57
|
+
### 4. Use Utility Classes
|
|
58
|
+
|
|
59
|
+
You can now use Tailwind classes directly in your component templates:
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<h1 class="text-3xl font-bold underline">Hello world!</h1>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Summary for AI Agents
|
|
66
|
+
|
|
67
|
+
- **Do not use `@tailwind base; @tailwind components; @tailwind utilities;`**. Use `@import 'tailwindcss';`.
|
|
68
|
+
- **Do not create `tailwind.config.js`**. Configuration is managed directly in CSS via theme variables or using PostCSS configurations.
|
|
69
|
+
- Stick strictly to v4 syntax and workflows.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Template-Driven Forms
|
|
2
|
+
|
|
3
|
+
Template-driven forms use two-way data binding (`[(ngModel)]`) to update the data model in the component as changes are made in the template and vice versa. They are ideal for simple forms and use directives in the HTML template to manage form state and validation.
|
|
4
|
+
|
|
5
|
+
## Core Directives
|
|
6
|
+
|
|
7
|
+
Template-driven forms rely on the `FormsModule` which provides these key directives:
|
|
8
|
+
|
|
9
|
+
- `NgModel`: Reconciles value changes in the form element with the data model (`[(ngModel)]`).
|
|
10
|
+
- `NgForm`: Automatically creates a top-level `FormGroup` bound to the `<form>` tag.
|
|
11
|
+
- `NgModelGroup`: Creates a nested `FormGroup` bound to a DOM element.
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
First, import `FormsModule` into your component or module.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {Component} from '@angular/core';
|
|
19
|
+
import {FormsModule} from '@angular/forms';
|
|
20
|
+
|
|
21
|
+
@Component({
|
|
22
|
+
selector: 'app-user-form',
|
|
23
|
+
imports: [FormsModule],
|
|
24
|
+
templateUrl: './user-form.component.html',
|
|
25
|
+
})
|
|
26
|
+
export class UserForm {
|
|
27
|
+
user = {name: '', role: 'Guest'};
|
|
28
|
+
|
|
29
|
+
onSubmit() {
|
|
30
|
+
console.log('Form submitted!', this.user);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Building the Form Template
|
|
36
|
+
|
|
37
|
+
### Two-Way Binding with `[(ngModel)]`
|
|
38
|
+
|
|
39
|
+
Use `[(ngModel)]` on input elements. **Every element using `[(ngModel)]` MUST have a `name` attribute.** Angular uses the `name` attribute to register the control with the parent `NgForm`.
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<form #userForm="ngForm" (ngSubmit)="onSubmit()">
|
|
43
|
+
<!-- Basic Input -->
|
|
44
|
+
<div>
|
|
45
|
+
<label for="name">Name:</label>
|
|
46
|
+
<input type="text" id="name" required [(ngModel)]="user.name" name="name" #nameCtrl="ngModel" />
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<!-- Select Box -->
|
|
50
|
+
<div>
|
|
51
|
+
<label for="role">Role:</label>
|
|
52
|
+
<select id="role" [(ngModel)]="user.role" name="role">
|
|
53
|
+
<option value="Admin">Admin</option>
|
|
54
|
+
<option value="Guest">Guest</option>
|
|
55
|
+
</select>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<!-- Submit Button (disabled if form is invalid) -->
|
|
59
|
+
<button type="submit" [disabled]="!userForm.form.valid">Submit</button>
|
|
60
|
+
</form>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Form and Control State
|
|
64
|
+
|
|
65
|
+
Angular automatically applies CSS classes to controls and forms based on their state:
|
|
66
|
+
|
|
67
|
+
| State | Class if True | Class if False |
|
|
68
|
+
| :------------- | :-------------------------------- | :------------- |
|
|
69
|
+
| Visited | `ng-touched` | `ng-untouched` |
|
|
70
|
+
| Value Changed | `ng-dirty` | `ng-pristine` |
|
|
71
|
+
| Value is Valid | `ng-valid` | `ng-invalid` |
|
|
72
|
+
| Form Submitted | `ng-submitted` (on `<form>` only) | - |
|
|
73
|
+
|
|
74
|
+
You can use these classes to provide visual feedback in your CSS:
|
|
75
|
+
|
|
76
|
+
```css
|
|
77
|
+
.ng-valid[required],
|
|
78
|
+
.ng-valid.required {
|
|
79
|
+
border-left: 5px solid #42a948; /* green */
|
|
80
|
+
}
|
|
81
|
+
.ng-invalid:not(form) {
|
|
82
|
+
border-left: 5px solid #a94442; /* red */
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Validation and Error Messages
|
|
87
|
+
|
|
88
|
+
To display error messages conditionally, export the `ngModel` directive to a template reference variable (e.g., `#nameCtrl="ngModel"`).
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<input type="text" id="name" required [(ngModel)]="user.name" name="name" #nameCtrl="ngModel" />
|
|
92
|
+
|
|
93
|
+
<!-- Show error only if the control is invalid AND (touched OR dirty) -->
|
|
94
|
+
@if (nameCtrl.invalid && (nameCtrl.dirty || nameCtrl.touched)) {
|
|
95
|
+
<div class="alert alert-danger">
|
|
96
|
+
@if (nameCtrl.errors?.['required']) {
|
|
97
|
+
<div>Name is required.</div>
|
|
98
|
+
}
|
|
99
|
+
</div>
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Submitting the Form
|
|
104
|
+
|
|
105
|
+
1. Use the `(ngSubmit)` event on the `<form>` element.
|
|
106
|
+
2. Bind the submit button's disabled state to the overall form validity using the `NgForm` template reference variable (e.g., `[disabled]="!userForm.form.valid"`).
|
|
107
|
+
|
|
108
|
+
## Resetting the Form
|
|
109
|
+
|
|
110
|
+
To programmatically reset the form to its pristine state (clearing values and validation flags), use the `reset()` method on the `NgForm` instance.
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<button type="button" (click)="userForm.reset()">Reset</button>
|
|
114
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Testing Fundamentals
|
|
2
|
+
|
|
3
|
+
This guide covers the fundamental principles and practices for writing Angular unit and component tests. Use the runner already configured in the project.
|
|
4
|
+
|
|
5
|
+
## Core Philosophy: Async-First
|
|
6
|
+
|
|
7
|
+
Modern Angular applications often schedule state changes asynchronously, especially when using signals or zoneless change detection. Tests should account for this.
|
|
8
|
+
|
|
9
|
+
Prefer the "Act, Wait, Assert" pattern:
|
|
10
|
+
|
|
11
|
+
1. **Act:** Update state or perform an action (e.g., set a component input, click a button).
|
|
12
|
+
2. **Wait:** Use `await fixture.whenStable()` to allow the framework to process the scheduled update and render the changes.
|
|
13
|
+
3. **Assert:** Verify the outcome.
|
|
14
|
+
|
|
15
|
+
### Basic Test Structure Example
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
|
19
|
+
import {MyComponent} from './my.component';
|
|
20
|
+
|
|
21
|
+
describe('MyComponent', () => {
|
|
22
|
+
let component: MyComponent;
|
|
23
|
+
let fixture: ComponentFixture<MyComponent>;
|
|
24
|
+
let h1: HTMLElement;
|
|
25
|
+
|
|
26
|
+
beforeEach(async () => {
|
|
27
|
+
// 1. Configure the test module
|
|
28
|
+
await TestBed.configureTestingModule({
|
|
29
|
+
imports: [MyComponent],
|
|
30
|
+
}).compileComponents();
|
|
31
|
+
|
|
32
|
+
// 2. Create the component fixture
|
|
33
|
+
fixture = TestBed.createComponent(MyComponent);
|
|
34
|
+
component = fixture.componentInstance;
|
|
35
|
+
h1 = fixture.nativeElement.querySelector('h1');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('should display the default title', async () => {
|
|
39
|
+
// ACT: (Implicit) Component is created with default state.
|
|
40
|
+
// WAIT for initial data binding.
|
|
41
|
+
await fixture.whenStable();
|
|
42
|
+
// ASSERT the initial state.
|
|
43
|
+
expect(h1.textContent).toContain('Default Title');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should display a different title after a change', async () => {
|
|
47
|
+
// ACT: Change the component's title property.
|
|
48
|
+
component.title.set('New Test Title');
|
|
49
|
+
|
|
50
|
+
// WAIT for the asynchronous update to complete.
|
|
51
|
+
await fixture.whenStable();
|
|
52
|
+
|
|
53
|
+
// ASSERT the DOM has been updated.
|
|
54
|
+
expect(h1.textContent).toContain('New Test Title');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## TestBed and ComponentFixture
|
|
60
|
+
|
|
61
|
+
- **`TestBed`**: The primary utility for creating a test-specific Angular module. Use `TestBed.configureTestingModule({...})` in your `beforeEach` to declare components, provide services, and set up imports needed for your test.
|
|
62
|
+
- **`ComponentFixture`**: A handle on the created component instance and its environment.
|
|
63
|
+
- `fixture.componentInstance`: Access the component's class instance.
|
|
64
|
+
- `fixture.nativeElement`: Access the component's root DOM element.
|
|
65
|
+
- `fixture.debugElement`: An Angular-specific wrapper around the `nativeElement` that provides safer, platform-agnostic ways to query the DOM (e.g., `debugElement.query(By.css('p'))`).
|
|
@@ -8,6 +8,12 @@ origin: ECC
|
|
|
8
8
|
|
|
9
9
|
Turn Claude Code into a persistent, self-directing agent system using only native features and MCP servers.
|
|
10
10
|
|
|
11
|
+
## Consent and Safety Boundaries
|
|
12
|
+
|
|
13
|
+
Autonomous operation must be explicitly requested and scoped by the user. Do not create schedules, dispatch remote agents, write persistent memory, use computer control, post externally, modify third-party resources, or act on private communications unless the user has approved that capability and the target workspace for the current setup.
|
|
14
|
+
|
|
15
|
+
Prefer dry-run plans and local queue files before enabling recurring or event-driven actions. Keep credentials, private workspace exports, personal datasets, and account-specific automations out of reusable ECC artifacts.
|
|
16
|
+
|
|
11
17
|
## When to Activate
|
|
12
18
|
|
|
13
19
|
- User wants an agent that runs continuously or on a schedule
|
|
@@ -430,51 +430,14 @@ export const DELETE = requirePermission('delete')(
|
|
|
430
430
|
|
|
431
431
|
## Rate Limiting
|
|
432
432
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
maxRequests: number,
|
|
442
|
-
windowMs: number
|
|
443
|
-
): Promise<boolean> {
|
|
444
|
-
const now = Date.now()
|
|
445
|
-
const requests = this.requests.get(identifier) || []
|
|
446
|
-
|
|
447
|
-
// Remove old requests outside window
|
|
448
|
-
const recentRequests = requests.filter(time => now - time < windowMs)
|
|
449
|
-
|
|
450
|
-
if (recentRequests.length >= maxRequests) {
|
|
451
|
-
return false // Rate limit exceeded
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// Add current request
|
|
455
|
-
recentRequests.push(now)
|
|
456
|
-
this.requests.set(identifier, recentRequests)
|
|
457
|
-
|
|
458
|
-
return true
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
const limiter = new RateLimiter()
|
|
463
|
-
|
|
464
|
-
export async function GET(request: Request) {
|
|
465
|
-
const ip = request.headers.get('x-forwarded-for') || 'unknown'
|
|
466
|
-
|
|
467
|
-
const allowed = await limiter.checkLimit(ip, 100, 60000) // 100 req/min
|
|
468
|
-
|
|
469
|
-
if (!allowed) {
|
|
470
|
-
return NextResponse.json({
|
|
471
|
-
error: 'Rate limit exceeded'
|
|
472
|
-
}, { status: 429 })
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
// Continue with request
|
|
476
|
-
}
|
|
477
|
-
```
|
|
433
|
+
Rate limiting must use a shared store such as Redis, a gateway, or the
|
|
434
|
+
platform's native limiter. Do not use per-process in-memory counters for
|
|
435
|
+
production APIs: they reset on deploy, split across replicas, and fail open in
|
|
436
|
+
serverless or multi-instance environments.
|
|
437
|
+
|
|
438
|
+
Keep the backend layer responsible for choosing the integration point and error
|
|
439
|
+
shape; use `api-design` for the HTTP contract and `security-review` for abuse
|
|
440
|
+
case review.
|
|
478
441
|
|
|
479
442
|
## Background Jobs & Queues
|
|
480
443
|
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cisco-ios-patterns
|
|
3
|
+
description: Cisco IOS and IOS-XE review patterns for show commands, config hierarchy, wildcard masks, ACL placement, interface hygiene, and safe change-window verification.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Cisco IOS Patterns
|
|
8
|
+
|
|
9
|
+
Use this skill when reviewing Cisco IOS or IOS-XE snippets, building a
|
|
10
|
+
change-window checklist, or explaining how to collect evidence from a router or
|
|
11
|
+
switch without making the incident worse.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- Reviewing IOS or IOS-XE configuration before a planned change.
|
|
16
|
+
- Choosing read-only `show` commands for troubleshooting.
|
|
17
|
+
- Checking ACL wildcard masks and interface direction.
|
|
18
|
+
- Explaining global, interface, routing process, and line configuration modes.
|
|
19
|
+
- Verifying that a change landed in running config and was saved intentionally.
|
|
20
|
+
|
|
21
|
+
## Operating Rules
|
|
22
|
+
|
|
23
|
+
Treat IOS examples as patterns, not paste-ready production changes. Confirm the
|
|
24
|
+
platform, interface names, current config, rollback path, and out-of-band access
|
|
25
|
+
before making changes on a real device.
|
|
26
|
+
|
|
27
|
+
Prefer this workflow:
|
|
28
|
+
|
|
29
|
+
1. Capture current state with read-only commands.
|
|
30
|
+
2. Review the exact candidate config.
|
|
31
|
+
3. Confirm management access cannot be locked out.
|
|
32
|
+
4. Apply the smallest change in a maintenance window.
|
|
33
|
+
5. Re-read state, compare to the baseline, then save only after validation.
|
|
34
|
+
|
|
35
|
+
## Mode Reference
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
Router> enable
|
|
39
|
+
Router# show running-config
|
|
40
|
+
Router# configure terminal
|
|
41
|
+
Router(config)# interface GigabitEthernet0/1
|
|
42
|
+
Router(config-if)# description UPLINK-TO-CORE
|
|
43
|
+
Router(config-if)# no shutdown
|
|
44
|
+
Router(config-if)# exit
|
|
45
|
+
Router(config)# end
|
|
46
|
+
Router# show running-config interface GigabitEthernet0/1
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`running-config` is active memory. `startup-config` is what survives reload.
|
|
50
|
+
Do not save a change just because a command was accepted; validate behavior
|
|
51
|
+
first, then use `copy running-config startup-config` if the change is approved.
|
|
52
|
+
|
|
53
|
+
## Read-Only Collection
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
show version
|
|
57
|
+
show inventory
|
|
58
|
+
show processes cpu sorted
|
|
59
|
+
show memory statistics
|
|
60
|
+
show logging
|
|
61
|
+
show running-config | section line vty
|
|
62
|
+
show running-config | section interface
|
|
63
|
+
show running-config | section router bgp
|
|
64
|
+
show ip interface brief
|
|
65
|
+
show interfaces
|
|
66
|
+
show interfaces status
|
|
67
|
+
show vlan brief
|
|
68
|
+
show mac address-table
|
|
69
|
+
show spanning-tree
|
|
70
|
+
show ip route
|
|
71
|
+
show ip protocols
|
|
72
|
+
show ip access-lists
|
|
73
|
+
show route-map
|
|
74
|
+
show ip prefix-list
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Collect the specific section you need instead of dumping full config into a
|
|
78
|
+
ticket when the config may contain secrets, customer names, or private topology.
|
|
79
|
+
|
|
80
|
+
## Wildcard Masks
|
|
81
|
+
|
|
82
|
+
IOS ACL and many routing statements use wildcard masks, not subnet masks.
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
Subnet mask Wildcard mask
|
|
86
|
+
255.255.255.255 0.0.0.0
|
|
87
|
+
255.255.255.252 0.0.0.3
|
|
88
|
+
255.255.255.0 0.0.0.255
|
|
89
|
+
255.255.0.0 0.0.255.255
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Review wildcard masks before deployment. A subnet mask accidentally used as a
|
|
93
|
+
wildcard can match far more traffic than intended.
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
ip access-list extended WEB-IN
|
|
97
|
+
10 permit tcp 192.0.2.0 0.0.0.255 any eq 443
|
|
98
|
+
999 deny ip any any log
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Every ACL has an implicit deny at the end. Add an explicit logged deny when the
|
|
102
|
+
operational goal includes observing misses, and confirm logging volume is safe.
|
|
103
|
+
|
|
104
|
+
## ACL Placement Review
|
|
105
|
+
|
|
106
|
+
Before applying an ACL to an interface, answer these questions:
|
|
107
|
+
|
|
108
|
+
- Which traffic direction is being filtered, `in` or `out`?
|
|
109
|
+
- Is management traffic sourced from a known jump host or management subnet?
|
|
110
|
+
- Is there an explicit permit for required routing, DNS, NTP, monitoring, or
|
|
111
|
+
application traffic?
|
|
112
|
+
- Are hit counters available from a safe test source?
|
|
113
|
+
- Is there a rollback command and an active console or out-of-band path?
|
|
114
|
+
|
|
115
|
+
Do not test reachability by removing firewall or ACL protections. Read counters,
|
|
116
|
+
logs, and route state first.
|
|
117
|
+
|
|
118
|
+
## Interface Hygiene
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
interface GigabitEthernet0/1
|
|
122
|
+
description UPLINK-TO-CORE
|
|
123
|
+
switchport mode trunk
|
|
124
|
+
switchport trunk allowed vlan 10,20,30
|
|
125
|
+
switchport trunk native vlan 999
|
|
126
|
+
no shutdown
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Use clear descriptions, explicit switchport mode, and documented native VLANs.
|
|
130
|
+
On routed interfaces, confirm the mask, peer addressing, and routing process
|
|
131
|
+
before assuming link state means forwarding is correct.
|
|
132
|
+
|
|
133
|
+
## Change-Window Verification
|
|
134
|
+
|
|
135
|
+
Use before/after checks that match the actual change.
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
show running-config | section interface GigabitEthernet0/1
|
|
139
|
+
show interfaces GigabitEthernet0/1
|
|
140
|
+
show logging | include GigabitEthernet0/1|changed state|line protocol
|
|
141
|
+
show ip route <prefix>
|
|
142
|
+
show ip access-lists <name>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
For routing changes, also capture neighbor state and route tables before and
|
|
146
|
+
after the change. For ACL changes, compare hit counters from a planned test
|
|
147
|
+
source rather than relying on a generic ping.
|
|
148
|
+
|
|
149
|
+
## Anti-Patterns
|
|
150
|
+
|
|
151
|
+
- Applying a generated config without a device-specific diff.
|
|
152
|
+
- Saving configuration before post-change checks pass.
|
|
153
|
+
- Using a subnet mask where IOS expects a wildcard mask.
|
|
154
|
+
- Applying an ACL to the wrong interface direction.
|
|
155
|
+
- Troubleshooting by disabling ACLs, route policies, or authentication.
|
|
156
|
+
- Pasting full configs into public tools without sanitizing secrets and topology.
|
|
157
|
+
|
|
158
|
+
## See Also
|
|
159
|
+
|
|
160
|
+
- Agent: `network-config-reviewer`
|
|
161
|
+
- Agent: `network-troubleshooter`
|
|
162
|
+
- Skill: `network-config-validation`
|
|
163
|
+
- Skill: `network-interface-health`
|
|
@@ -18,7 +18,7 @@ An interactive, step-by-step installation wizard for the Everything Claude Code
|
|
|
18
18
|
## Prerequisites
|
|
19
19
|
|
|
20
20
|
This skill must be accessible to Claude Code before activation. Two ways to bootstrap:
|
|
21
|
-
1. **Via Plugin**: `/plugin install
|
|
21
|
+
1. **Via Plugin**: `/plugin install ecc@ecc` — the plugin loads this skill automatically
|
|
22
22
|
2. **Manual**: Copy only this skill to `~/.claude/skills/configure-ecc/SKILL.md`, then activate by saying "configure ecc"
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -87,7 +87,7 @@ There are 7 selectable category groups below. The detailed confirmation lists th
|
|
|
87
87
|
```
|
|
88
88
|
Question: "Which skill categories do you want to install?"
|
|
89
89
|
Options:
|
|
90
|
-
- "Framework & Language" — "Django, Laravel, Spring Boot, Go, Python, Java, Frontend, Backend patterns"
|
|
90
|
+
- "Framework & Language" — "Django, Laravel, Spring Boot, Quarkus, Go, Python, Java, Frontend, Backend patterns"
|
|
91
91
|
- "Database" — "PostgreSQL, ClickHouse, JPA/Hibernate patterns"
|
|
92
92
|
- "Workflow & Quality" — "TDD, verification, learning, security review, compaction"
|
|
93
93
|
- "Research & APIs" — "Deep research, Exa search, Claude API patterns"
|
|
@@ -101,7 +101,7 @@ Options:
|
|
|
101
101
|
|
|
102
102
|
For each selected category, print the full list of skills below and ask the user to confirm or deselect specific ones. If the list exceeds 4 items, print the list as text and use `AskUserQuestion` with an "Install all listed" option plus "Other" for the user to paste specific names.
|
|
103
103
|
|
|
104
|
-
**Category: Framework & Language (
|
|
104
|
+
**Category: Framework & Language (25 skills)**
|
|
105
105
|
|
|
106
106
|
| Skill | Description |
|
|
107
107
|
|-------|-------------|
|
|
@@ -119,9 +119,13 @@ For each selected category, print the full list of skills below and ask the user
|
|
|
119
119
|
| `frontend-slides` | Zero-dependency HTML presentations, style previews, and PPTX-to-web conversion |
|
|
120
120
|
| `golang-patterns` | Idiomatic Go patterns, conventions for robust Go applications |
|
|
121
121
|
| `golang-testing` | Go testing: table-driven tests, subtests, benchmarks, fuzzing |
|
|
122
|
-
| `java-coding-standards` | Java coding standards for Spring Boot: naming, immutability, Optional, streams |
|
|
122
|
+
| `java-coding-standards` | Java coding standards for Spring Boot and Quarkus: naming, immutability, Optional, streams, CDI |
|
|
123
123
|
| `python-patterns` | Pythonic idioms, PEP 8, type hints, best practices |
|
|
124
124
|
| `python-testing` | Python testing with pytest, TDD, fixtures, mocking, parametrization |
|
|
125
|
+
| `quarkus-patterns` | Quarkus architecture, Camel messaging, CDI services, Panache data access |
|
|
126
|
+
| `quarkus-security` | Quarkus security: JWT/OIDC, RBAC, input validation, secrets management |
|
|
127
|
+
| `quarkus-tdd` | Quarkus TDD with JUnit 5, Mockito, REST Assured, Camel testing |
|
|
128
|
+
| `quarkus-verification` | Quarkus verification: build, static analysis, tests, native compilation |
|
|
125
129
|
| `springboot-patterns` | Spring Boot architecture, REST API, layered services, caching, async |
|
|
126
130
|
| `springboot-security` | Spring Security: authn/authz, validation, CSRF, secrets, rate limiting |
|
|
127
131
|
| `springboot-tdd` | Spring Boot TDD with JUnit 5, Mockito, MockMvc, Testcontainers |
|
|
@@ -158,13 +162,14 @@ For each selected category, print the full list of skills below and ask the user
|
|
|
158
162
|
| `investor-materials` | Pitch decks, one-pagers, investor memos, and financial models |
|
|
159
163
|
| `investor-outreach` | Personalized investor cold emails, warm intros, and follow-ups |
|
|
160
164
|
|
|
161
|
-
**Category: Research & APIs (
|
|
165
|
+
**Category: Research & APIs (2 skills)**
|
|
162
166
|
|
|
163
167
|
| Skill | Description |
|
|
164
168
|
|-------|-------------|
|
|
165
169
|
| `deep-research` | Multi-source deep research using firecrawl and exa MCPs with cited reports |
|
|
166
170
|
| `exa-search` | Neural search via Exa MCP for web, code, company, and people research |
|
|
167
|
-
|
|
171
|
+
|
|
172
|
+
`claude-api` is an Anthropic canonical skill. Install it from [`anthropics/skills`](https://github.com/anthropics/skills) when you want the official Claude API workflow instead of an ECC-bundled copy.
|
|
168
173
|
|
|
169
174
|
**Category: Social & Content Distribution (2 skills)**
|
|
170
175
|
|
|
@@ -194,9 +199,20 @@ For each selected category, print the full list of skills below and ask the user
|
|
|
194
199
|
|
|
195
200
|
### 2d: Execute Installation
|
|
196
201
|
|
|
197
|
-
For each selected skill, copy the entire skill directory:
|
|
202
|
+
For each selected skill, copy the entire skill directory from the correct source root:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
# Core skills live under .agents/skills/
|
|
206
|
+
cp -R "$ECC_ROOT/.agents/skills/<skill-name>" "$TARGET/skills/"
|
|
207
|
+
|
|
208
|
+
# Niche skills live under skills/
|
|
209
|
+
cp -R "$ECC_ROOT/skills/<skill-name>" "$TARGET/skills/"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
When iterating over globbed source directories, never pass a trailing-slash source directly to `cp`. Use the directory path as the destination name explicitly:
|
|
213
|
+
|
|
198
214
|
```bash
|
|
199
|
-
cp -
|
|
215
|
+
cp -R "${src%/}" "$TARGET/skills/$(basename "${src%/}")"
|
|
200
216
|
```
|
|
201
217
|
|
|
202
218
|
Note: `continuous-learning` and `continuous-learning-v2` have extra files (config.json, hooks, scripts) — ensure the entire directory is copied, not just SKILL.md.
|
|
@@ -218,13 +234,13 @@ Options:
|
|
|
218
234
|
|
|
219
235
|
Execute installation:
|
|
220
236
|
```bash
|
|
221
|
-
# Common rules
|
|
222
|
-
cp -r $ECC_ROOT/rules/common
|
|
237
|
+
# Common rules
|
|
238
|
+
cp -r $ECC_ROOT/rules/common $TARGET/rules/common
|
|
223
239
|
|
|
224
|
-
# Language-specific rules (
|
|
225
|
-
cp -r $ECC_ROOT/rules/typescript
|
|
226
|
-
cp -r $ECC_ROOT/rules/python
|
|
227
|
-
cp -r $ECC_ROOT/rules/golang
|
|
240
|
+
# Language-specific rules (preserve per-language directories)
|
|
241
|
+
cp -r $ECC_ROOT/rules/typescript $TARGET/rules/typescript # if selected
|
|
242
|
+
cp -r $ECC_ROOT/rules/python $TARGET/rules/python # if selected
|
|
243
|
+
cp -r $ECC_ROOT/rules/golang $TARGET/rules/golang # if selected
|
|
228
244
|
```
|
|
229
245
|
|
|
230
246
|
**Important**: If the user selects any language-specific rules but NOT common rules, warn them:
|
|
@@ -263,6 +279,7 @@ grep -rn "skills/" $TARGET/skills/
|
|
|
263
279
|
Some skills reference others. Verify these dependencies:
|
|
264
280
|
- `django-tdd` may reference `django-patterns`
|
|
265
281
|
- `laravel-tdd` may reference `laravel-patterns`
|
|
282
|
+
- `quarkus-tdd` may reference `quarkus-patterns`
|
|
266
283
|
- `springboot-tdd` may reference `springboot-patterns`
|
|
267
284
|
- `continuous-learning-v2` references `~/.claude/homunculus/` directory
|
|
268
285
|
- `python-testing` may reference `python-patterns`
|