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
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: java-coding-standards
|
|
3
|
-
description: "Java coding standards for Spring Boot services: naming, immutability, Optional usage, streams, exceptions, generics, and project layout."
|
|
3
|
+
description: "Java coding standards for Spring Boot and Quarkus services: naming, immutability, Optional usage, streams, exceptions, generics, CDI, reactive patterns, and project layout. Automatically applies framework-specific conventions."
|
|
4
4
|
origin: ECC
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Java Coding Standards
|
|
8
8
|
|
|
9
|
-
Standards for readable, maintainable Java (17+) code in Spring Boot services.
|
|
9
|
+
Standards for readable, maintainable Java (17+) code in Spring Boot and Quarkus services.
|
|
10
10
|
|
|
11
|
-
## When to
|
|
11
|
+
## When to Use
|
|
12
12
|
|
|
13
|
-
- Writing or reviewing Java code in Spring Boot projects
|
|
13
|
+
- Writing or reviewing Java code in Spring Boot or Quarkus projects
|
|
14
14
|
- Enforcing naming, immutability, or exception handling conventions
|
|
15
15
|
- Working with records, sealed classes, or pattern matching (Java 17+)
|
|
16
16
|
- Reviewing use of Optional, streams, or generics
|
|
17
17
|
- Structuring packages and project layout
|
|
18
|
+
- **[QUARKUS]**: Working with CDI scopes, Panache entities, or reactive pipelines
|
|
19
|
+
|
|
20
|
+
## How It Works
|
|
21
|
+
|
|
22
|
+
### Framework Detection
|
|
23
|
+
|
|
24
|
+
Before applying standards, determine the framework from the build file:
|
|
25
|
+
|
|
26
|
+
- Build file contains `quarkus` → apply **[QUARKUS]** conventions
|
|
27
|
+
- Build file contains `spring-boot` → apply **[SPRING]** conventions
|
|
28
|
+
- Neither detected → apply shared conventions only
|
|
18
29
|
|
|
19
30
|
## Core Principles
|
|
20
31
|
|
|
@@ -22,6 +33,13 @@ Standards for readable, maintainable Java (17+) code in Spring Boot services.
|
|
|
22
33
|
- Immutable by default; minimize shared mutable state
|
|
23
34
|
- Fail fast with meaningful exceptions
|
|
24
35
|
- Consistent naming and package structure
|
|
36
|
+
- **[QUARKUS]**: Favor build-time over runtime processing; avoid runtime reflection where possible
|
|
37
|
+
|
|
38
|
+
## Examples
|
|
39
|
+
|
|
40
|
+
The sections below show concrete Spring Boot, Quarkus, and shared Java examples
|
|
41
|
+
for naming, immutability, dependency injection, reactive code, exceptions,
|
|
42
|
+
project layout, logging, configuration, and tests.
|
|
25
43
|
|
|
26
44
|
## Naming
|
|
27
45
|
|
|
@@ -36,6 +54,12 @@ public Market findBySlug(String slug) {}
|
|
|
36
54
|
|
|
37
55
|
// PASS: Constants: UPPER_SNAKE_CASE
|
|
38
56
|
private static final int MAX_PAGE_SIZE = 100;
|
|
57
|
+
|
|
58
|
+
// PASS: [QUARKUS] JAX-RS resources named as *Resource, not *Controller
|
|
59
|
+
public class MarketResource {}
|
|
60
|
+
|
|
61
|
+
// PASS: [SPRING] REST controllers named as *Controller
|
|
62
|
+
public class MarketController {}
|
|
39
63
|
```
|
|
40
64
|
|
|
41
65
|
## Immutability
|
|
@@ -49,14 +73,33 @@ public class Market {
|
|
|
49
73
|
private final String name;
|
|
50
74
|
// getters only, no setters
|
|
51
75
|
}
|
|
76
|
+
|
|
77
|
+
// PASS: [QUARKUS] Panache active-record entities use public fields (Quarkus convention)
|
|
78
|
+
@Entity
|
|
79
|
+
public class Market extends PanacheEntity {
|
|
80
|
+
public String name;
|
|
81
|
+
public MarketStatus status;
|
|
82
|
+
// Panache generates accessors at build time; public fields are idiomatic here
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// PASS: [QUARKUS] Panache MongoDB entities
|
|
86
|
+
@MongoEntity(collection = "markets")
|
|
87
|
+
public class Market extends PanacheMongoEntity {
|
|
88
|
+
public String name;
|
|
89
|
+
public MarketStatus status;
|
|
90
|
+
}
|
|
52
91
|
```
|
|
53
92
|
|
|
54
93
|
## Optional Usage
|
|
55
94
|
|
|
56
95
|
```java
|
|
57
96
|
// PASS: Return Optional from find* methods
|
|
97
|
+
// [SPRING]
|
|
58
98
|
Optional<Market> market = marketRepository.findBySlug(slug);
|
|
59
99
|
|
|
100
|
+
// [QUARKUS] Panache
|
|
101
|
+
Optional<Market> market = Market.find("slug", slug).firstResultOptional();
|
|
102
|
+
|
|
60
103
|
// PASS: Map/flatMap instead of get()
|
|
61
104
|
return market
|
|
62
105
|
.map(MarketResponse::from)
|
|
@@ -75,6 +118,77 @@ List<String> names = markets.stream()
|
|
|
75
118
|
// FAIL: Avoid complex nested streams; prefer loops for clarity
|
|
76
119
|
```
|
|
77
120
|
|
|
121
|
+
## Dependency Injection
|
|
122
|
+
|
|
123
|
+
```java
|
|
124
|
+
// PASS: [SPRING] Constructor injection (preferred over @Autowired on fields)
|
|
125
|
+
@Service
|
|
126
|
+
public class MarketService {
|
|
127
|
+
private final MarketRepository marketRepository;
|
|
128
|
+
|
|
129
|
+
public MarketService(MarketRepository marketRepository) {
|
|
130
|
+
this.marketRepository = marketRepository;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// PASS: [QUARKUS] Constructor injection
|
|
135
|
+
@ApplicationScoped
|
|
136
|
+
public class MarketService {
|
|
137
|
+
private final MarketRepository marketRepository;
|
|
138
|
+
|
|
139
|
+
@Inject
|
|
140
|
+
public MarketService(MarketRepository marketRepository) {
|
|
141
|
+
this.marketRepository = marketRepository;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// PASS: [QUARKUS] Package-private field injection (acceptable in Quarkus — avoids proxy issues)
|
|
146
|
+
@ApplicationScoped
|
|
147
|
+
public class MarketService {
|
|
148
|
+
@Inject
|
|
149
|
+
MarketRepository marketRepository;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// FAIL: [SPRING] Field injection with @Autowired
|
|
153
|
+
@Autowired
|
|
154
|
+
private MarketRepository marketRepository; // use constructor injection
|
|
155
|
+
|
|
156
|
+
// FAIL: [QUARKUS] @Singleton when interception or lazy init is needed
|
|
157
|
+
@Singleton // non-proxyable — use @ApplicationScoped instead
|
|
158
|
+
public class MarketService {}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Reactive Patterns [QUARKUS]
|
|
162
|
+
|
|
163
|
+
```java
|
|
164
|
+
// PASS: Return Uni/Multi from reactive endpoints
|
|
165
|
+
@GET
|
|
166
|
+
@Path("/{slug}")
|
|
167
|
+
public Uni<Market> findBySlug(@PathParam("slug") String slug) {
|
|
168
|
+
return Market.find("slug", slug)
|
|
169
|
+
.<Market>firstResult()
|
|
170
|
+
.onItem().ifNull().failWith(() -> new MarketNotFoundException(slug));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// PASS: Non-blocking pipeline composition
|
|
174
|
+
public Uni<OrderConfirmation> placeOrder(OrderRequest req) {
|
|
175
|
+
return validateOrder(req)
|
|
176
|
+
.chain(valid -> persistOrder(valid))
|
|
177
|
+
.chain(order -> notifyFulfillment(order));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// FAIL: Blocking call inside a Uni/Multi pipeline
|
|
181
|
+
public Uni<Market> find(String slug) {
|
|
182
|
+
Market m = Market.find("slug", slug).firstResult(); // BLOCKING — breaks event loop
|
|
183
|
+
return Uni.createFrom().item(m);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// FAIL: Subscribing more than once to a shared Uni
|
|
187
|
+
Uni<Market> shared = fetchMarket(slug);
|
|
188
|
+
shared.subscribe().with(m -> log(m));
|
|
189
|
+
shared.subscribe().with(m -> cache(m)); // double subscribe — use Uni.memoize()
|
|
190
|
+
```
|
|
191
|
+
|
|
78
192
|
## Exceptions
|
|
79
193
|
|
|
80
194
|
- Use unchecked exceptions for domain errors; wrap technical exceptions with context
|
|
@@ -85,6 +199,34 @@ List<String> names = markets.stream()
|
|
|
85
199
|
throw new MarketNotFoundException(slug);
|
|
86
200
|
```
|
|
87
201
|
|
|
202
|
+
### Centralised Exception Handling
|
|
203
|
+
|
|
204
|
+
```java
|
|
205
|
+
// [SPRING]
|
|
206
|
+
@RestControllerAdvice
|
|
207
|
+
public class GlobalExceptionHandler {
|
|
208
|
+
@ExceptionHandler(MarketNotFoundException.class)
|
|
209
|
+
public ResponseEntity<ErrorResponse> handle(MarketNotFoundException ex) {
|
|
210
|
+
return ResponseEntity.status(404).body(ErrorResponse.from(ex));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// [QUARKUS] Option A: ExceptionMapper
|
|
215
|
+
@Provider
|
|
216
|
+
public class MarketNotFoundMapper implements ExceptionMapper<MarketNotFoundException> {
|
|
217
|
+
@Override
|
|
218
|
+
public Response toResponse(MarketNotFoundException ex) {
|
|
219
|
+
return Response.status(404).entity(ErrorResponse.from(ex)).build();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// [QUARKUS] Option B: @ServerExceptionMapper (RESTEasy Reactive)
|
|
224
|
+
@ServerExceptionMapper
|
|
225
|
+
public RestResponse<ErrorResponse> handle(MarketNotFoundException ex) {
|
|
226
|
+
return RestResponse.status(Status.NOT_FOUND, ErrorResponse.from(ex));
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
88
230
|
## Generics and Type Safety
|
|
89
231
|
|
|
90
232
|
- Avoid raw types; declare generic parameters
|
|
@@ -94,7 +236,9 @@ throw new MarketNotFoundException(slug);
|
|
|
94
236
|
public <T extends Identifiable> Map<Long, T> indexById(Collection<T> items) { ... }
|
|
95
237
|
```
|
|
96
238
|
|
|
97
|
-
## Project Structure
|
|
239
|
+
## Project Structure
|
|
240
|
+
|
|
241
|
+
### [SPRING] Maven/Gradle
|
|
98
242
|
|
|
99
243
|
```
|
|
100
244
|
src/main/java/com/example/app/
|
|
@@ -110,6 +254,24 @@ src/main/resources/
|
|
|
110
254
|
src/test/java/... (mirrors main)
|
|
111
255
|
```
|
|
112
256
|
|
|
257
|
+
### [QUARKUS] Maven/Gradle
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
src/main/java/com/example/app/
|
|
261
|
+
config/ # @ConfigMapping, @ConfigProperty beans, Producers
|
|
262
|
+
resource/ # JAX-RS resources (not "controller")
|
|
263
|
+
service/
|
|
264
|
+
repository/ # PanacheRepository implementations (if not using active record)
|
|
265
|
+
domain/ # JPA/Panache entities, MongoDB entities
|
|
266
|
+
dto/
|
|
267
|
+
util/
|
|
268
|
+
mapper/ # MapStruct mappers (if used)
|
|
269
|
+
src/main/resources/
|
|
270
|
+
application.properties # Quarkus convention (YAML supported with quarkus-config-yaml)
|
|
271
|
+
import.sql # Hibernate auto-import for dev/test
|
|
272
|
+
src/test/java/... (mirrors main)
|
|
273
|
+
```
|
|
274
|
+
|
|
113
275
|
## Formatting and Style
|
|
114
276
|
|
|
115
277
|
- Use 2 or 4 spaces consistently (project standard)
|
|
@@ -124,24 +286,98 @@ src/test/java/... (mirrors main)
|
|
|
124
286
|
- Magic numbers → named constants
|
|
125
287
|
- Static mutable state → prefer dependency injection
|
|
126
288
|
- Silent catch blocks → log and act or rethrow
|
|
289
|
+
- **[QUARKUS]**: `@Singleton` where `@ApplicationScoped` is intended — breaks proxying and interception
|
|
290
|
+
- **[QUARKUS]**: Mixing `quarkus-resteasy-reactive` and `quarkus-resteasy` (classic) — pick one stack
|
|
291
|
+
- **[QUARKUS]**: Panache active-record + repository pattern in the same bounded context — pick one
|
|
127
292
|
|
|
128
293
|
## Logging
|
|
129
294
|
|
|
130
295
|
```java
|
|
296
|
+
// [SPRING] SLF4J
|
|
131
297
|
private static final Logger log = LoggerFactory.getLogger(MarketService.class);
|
|
132
298
|
log.info("fetch_market slug={}", slug);
|
|
133
299
|
log.error("failed_fetch_market slug={}", slug, ex);
|
|
300
|
+
|
|
301
|
+
// [QUARKUS] JBoss Logging (default, zero-cost at build time)
|
|
302
|
+
private static final Logger log = Logger.getLogger(MarketService.class);
|
|
303
|
+
log.infof("fetch_market slug=%s", slug);
|
|
304
|
+
log.errorf(ex, "failed_fetch_market slug=%s", slug);
|
|
305
|
+
|
|
306
|
+
// [QUARKUS] Alternative: simplified logging with @Inject
|
|
307
|
+
@Inject
|
|
308
|
+
Logger log; // CDI-injected, scoped to declaring class
|
|
134
309
|
```
|
|
135
310
|
|
|
136
311
|
## Null Handling
|
|
137
312
|
|
|
138
313
|
- Accept `@Nullable` only when unavoidable; otherwise use `@NonNull`
|
|
139
314
|
- Use Bean Validation (`@NotNull`, `@NotBlank`) on inputs
|
|
315
|
+
- **[QUARKUS]**: Apply `@Valid` on `@BeanParam`, `@RestForm`, and request body parameters
|
|
316
|
+
|
|
317
|
+
## Configuration
|
|
318
|
+
|
|
319
|
+
```java
|
|
320
|
+
// [SPRING] @ConfigurationProperties
|
|
321
|
+
@ConfigurationProperties(prefix = "market")
|
|
322
|
+
public record MarketProperties(int maxPageSize, Duration cacheTtl) {}
|
|
323
|
+
|
|
324
|
+
// [QUARKUS] @ConfigMapping (type-safe, build-time validated)
|
|
325
|
+
@ConfigMapping(prefix = "market")
|
|
326
|
+
public interface MarketConfig {
|
|
327
|
+
int maxPageSize();
|
|
328
|
+
Duration cacheTtl();
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// [QUARKUS] Simple values with @ConfigProperty
|
|
332
|
+
@ConfigProperty(name = "market.max-page-size", defaultValue = "100")
|
|
333
|
+
int maxPageSize;
|
|
334
|
+
```
|
|
140
335
|
|
|
141
336
|
## Testing Expectations
|
|
142
337
|
|
|
338
|
+
### Shared
|
|
143
339
|
- JUnit 5 + AssertJ for fluent assertions
|
|
144
340
|
- Mockito for mocking; avoid partial mocks where possible
|
|
145
341
|
- Favor deterministic tests; no hidden sleeps
|
|
146
342
|
|
|
343
|
+
### [SPRING]
|
|
344
|
+
- `@WebMvcTest` for controller slices, `@DataJpaTest` for repository slices
|
|
345
|
+
- `@SpringBootTest` reserved for full integration tests
|
|
346
|
+
- `@MockBean` for replacing beans in Spring context
|
|
347
|
+
|
|
348
|
+
### [QUARKUS]
|
|
349
|
+
- Plain JUnit 5 + Mockito for unit tests (no `@QuarkusTest`)
|
|
350
|
+
- `@QuarkusTest` reserved for CDI integration tests
|
|
351
|
+
- `@InjectMock` for replacing CDI beans in integration tests
|
|
352
|
+
- Dev Services for database/Kafka/Redis — avoid manual Testcontainers setup when Dev Services suffice
|
|
353
|
+
- `@QuarkusTestResource` for custom external service lifecycle
|
|
354
|
+
|
|
355
|
+
```java
|
|
356
|
+
// [SPRING] Controller test
|
|
357
|
+
@WebMvcTest(MarketController.class)
|
|
358
|
+
class MarketControllerTest {
|
|
359
|
+
@Autowired MockMvc mockMvc;
|
|
360
|
+
@MockBean MarketService marketService;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// [QUARKUS] Integration test
|
|
364
|
+
@QuarkusTest
|
|
365
|
+
class MarketResourceTest {
|
|
366
|
+
@InjectMock
|
|
367
|
+
MarketService marketService;
|
|
368
|
+
|
|
369
|
+
@Test
|
|
370
|
+
void should_return_404_when_market_not_found() {
|
|
371
|
+
given().when().get("/markets/unknown").then().statusCode(404);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// [QUARKUS] Unit test (no CDI, no @QuarkusTest)
|
|
376
|
+
@ExtendWith(MockitoExtension.class)
|
|
377
|
+
class MarketServiceTest {
|
|
378
|
+
@Mock MarketRepository marketRepository;
|
|
379
|
+
@InjectMocks MarketService marketService;
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
147
383
|
**Remember**: Keep code intentional, typed, and observable. Optimize for maintainability over micro-optimizations unless proven necessary.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: make-interfaces-feel-better
|
|
3
|
+
description: Apply concrete design-engineering details that make interfaces feel polished. Use when reviewing or improving UI spacing, typography, borders, shadows, motion, hit areas, icons, text wrapping, and interaction states.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Make Interfaces Feel Better
|
|
8
|
+
|
|
9
|
+
Use this skill for the small design-engineering details that compound into a
|
|
10
|
+
more polished interface.
|
|
11
|
+
|
|
12
|
+
Source: salvaged from stale community PR #1659 by `linus707`.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- The user says the UI feels off, flat, generic, cramped, jumpy, or unfinished.
|
|
17
|
+
- You are building controls, cards, lists, dashboards, navigation, forms, or
|
|
18
|
+
toolbars.
|
|
19
|
+
- A component needs hover, active, focus, enter, exit, loading, or empty states.
|
|
20
|
+
- A frontend review needs specific before/after recommendations.
|
|
21
|
+
|
|
22
|
+
## Core Principles
|
|
23
|
+
|
|
24
|
+
### Concentric Radius
|
|
25
|
+
|
|
26
|
+
For nearby nested rounded surfaces:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
outer radius = inner radius + padding
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If padding is large, treat layers as separate surfaces instead of forcing the
|
|
33
|
+
math. The point is optical coherence, not formula worship.
|
|
34
|
+
|
|
35
|
+
### Optical Alignment
|
|
36
|
+
|
|
37
|
+
Geometric centering is not always visual centering. Icon buttons, play
|
|
38
|
+
triangles, arrows, stars, and asymmetric icons often need a small offset. Fix the
|
|
39
|
+
SVG when possible; otherwise adjust with a pixel-level margin or padding change.
|
|
40
|
+
|
|
41
|
+
### Shadows And Borders
|
|
42
|
+
|
|
43
|
+
Use borders for separation and focus rings. Use layered shadows when a card,
|
|
44
|
+
button, dropdown, or popover needs depth. Shadows should be transparent and
|
|
45
|
+
subtle enough to work across backgrounds.
|
|
46
|
+
|
|
47
|
+
### Text Wrapping
|
|
48
|
+
|
|
49
|
+
- Use `text-wrap: balance` on headings and short titles.
|
|
50
|
+
- Use `text-wrap: pretty` on short-to-medium body text, captions, descriptions,
|
|
51
|
+
and list items.
|
|
52
|
+
- Avoid both on long prose, code, and preformatted content.
|
|
53
|
+
- Use `font-variant-numeric: tabular-nums` for counters, timers, prices, tables,
|
|
54
|
+
and other updating numbers.
|
|
55
|
+
|
|
56
|
+
### Font Smoothing
|
|
57
|
+
|
|
58
|
+
On macOS, apply antialiased font smoothing at the root layout when the project
|
|
59
|
+
does not already do so:
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
html {
|
|
63
|
+
-webkit-font-smoothing: antialiased;
|
|
64
|
+
-moz-osx-font-smoothing: grayscale;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Image Outlines
|
|
69
|
+
|
|
70
|
+
Images often need a subtle inset outline so their edges do not blur into the
|
|
71
|
+
surface.
|
|
72
|
+
|
|
73
|
+
```css
|
|
74
|
+
img {
|
|
75
|
+
outline: 1px solid rgba(0, 0, 0, 0.1);
|
|
76
|
+
outline-offset: -1px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@media (prefers-color-scheme: dark) {
|
|
80
|
+
img {
|
|
81
|
+
outline-color: rgba(255, 255, 255, 0.1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Use neutral black or white alpha outlines. Do not tint image outlines with the
|
|
87
|
+
brand palette.
|
|
88
|
+
|
|
89
|
+
### Motion
|
|
90
|
+
|
|
91
|
+
Use CSS transitions for interactive state changes because they can retarget
|
|
92
|
+
when the user changes intent mid-motion. Reserve keyframes for staged
|
|
93
|
+
one-shot entrances or loading sequences.
|
|
94
|
+
|
|
95
|
+
Good motion defaults:
|
|
96
|
+
|
|
97
|
+
- Enter: combine opacity, small `translateY`, and optionally blur.
|
|
98
|
+
- Exit: shorter and quieter than enter, usually 150ms.
|
|
99
|
+
- Press: `scale(0.96)` for tactile buttons, with a way to disable it when the
|
|
100
|
+
movement distracts.
|
|
101
|
+
- Icon swaps: cross-fade with opacity, scale, and blur instead of instant
|
|
102
|
+
visibility toggles.
|
|
103
|
+
|
|
104
|
+
### Transition Scope
|
|
105
|
+
|
|
106
|
+
Never use `transition: all`. Specify the changed properties:
|
|
107
|
+
|
|
108
|
+
```css
|
|
109
|
+
.button {
|
|
110
|
+
transition-property: transform, background-color, box-shadow;
|
|
111
|
+
transition-duration: 150ms;
|
|
112
|
+
transition-timing-function: ease-out;
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Use `will-change` only for first-frame stutter on compositor-friendly
|
|
117
|
+
properties such as `transform`, `opacity`, and `filter`. Never use
|
|
118
|
+
`will-change: all`.
|
|
119
|
+
|
|
120
|
+
### Hit Areas
|
|
121
|
+
|
|
122
|
+
Interactive controls should have at least a 40x40px hit area, ideally 44x44px
|
|
123
|
+
where the layout allows it. Expand with a pseudo-element when the visible icon
|
|
124
|
+
is smaller, but do not let expanded hit areas overlap.
|
|
125
|
+
|
|
126
|
+
## Review Output
|
|
127
|
+
|
|
128
|
+
When reviewing a UI polish pass, report concrete changes in before/after rows:
|
|
129
|
+
|
|
130
|
+
| Principle | Before | After |
|
|
131
|
+
| --- | --- | --- |
|
|
132
|
+
| Concentric radius | Same radius on parent and child | Parent radius accounts for padding |
|
|
133
|
+
| Tabular numbers | Counter shifts as digits change | Counter uses `tabular-nums` |
|
|
134
|
+
| Transition scope | `transition: all` | Explicit transition properties |
|
|
135
|
+
|
|
136
|
+
Include file paths and properties when they are not obvious from the snippets.
|
|
137
|
+
Omit principles that you checked but did not change.
|
|
138
|
+
|
|
139
|
+
## Checklist
|
|
140
|
+
|
|
141
|
+
- Nested rounded elements are optically coherent.
|
|
142
|
+
- Icons are visually centered.
|
|
143
|
+
- Buttons, cards, and popovers use borders or shadows for the right reason.
|
|
144
|
+
- Headings and short text avoid awkward wrapping.
|
|
145
|
+
- Dynamic numbers use tabular numerals.
|
|
146
|
+
- Images have neutral outlines where needed.
|
|
147
|
+
- Enter and exit animations are split, subtle, and interruptible where
|
|
148
|
+
appropriate.
|
|
149
|
+
- Buttons have tactile active states without exaggerated motion.
|
|
150
|
+
- `transition: all` and `will-change: all` are absent.
|
|
151
|
+
- Small controls still have usable hit areas.
|