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,416 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Code review — local uncommitted changes, GitHub PR, or GitLab MR (auto-detects platform from git remote; supports github.com and code.iflytek.com)
|
|
3
|
+
argument-hint: [pr-number | mr-number | url | blank for local review]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review
|
|
7
|
+
|
|
8
|
+
> Local override of upstream `ecc/commands/code-review.md`.
|
|
9
|
+
> Adds GitLab support (including self-hosted `code.iflytek.com`) on top of the
|
|
10
|
+
> original GitHub PR flow. Do not edit the upstream file — keep changes here.
|
|
11
|
+
|
|
12
|
+
**Input**: $ARGUMENTS
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Mode Selection
|
|
17
|
+
|
|
18
|
+
If `$ARGUMENTS` contains a number, URL, or `--pr` / `--mr`:
|
|
19
|
+
→ Jump to **Remote Review Mode** (auto-detects GitHub vs GitLab).
|
|
20
|
+
|
|
21
|
+
Otherwise:
|
|
22
|
+
→ Use **Local Review Mode**.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Local Review Mode
|
|
27
|
+
|
|
28
|
+
Comprehensive security and quality review of uncommitted changes. Platform-agnostic.
|
|
29
|
+
|
|
30
|
+
### Phase 1 — GATHER
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git diff --name-only HEAD
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If no changed files, stop: "Nothing to review."
|
|
37
|
+
|
|
38
|
+
### Phase 2 — REVIEW
|
|
39
|
+
|
|
40
|
+
Read each changed file in full. Check for:
|
|
41
|
+
|
|
42
|
+
**Security Issues (CRITICAL):**
|
|
43
|
+
- Hardcoded credentials, API keys, tokens
|
|
44
|
+
- SQL injection vulnerabilities
|
|
45
|
+
- XSS vulnerabilities
|
|
46
|
+
- Missing input validation
|
|
47
|
+
- Insecure dependencies
|
|
48
|
+
- Path traversal risks
|
|
49
|
+
|
|
50
|
+
**Code Quality (HIGH):**
|
|
51
|
+
- Functions > 50 lines
|
|
52
|
+
- Files > 800 lines
|
|
53
|
+
- Nesting depth > 4 levels
|
|
54
|
+
- Missing error handling
|
|
55
|
+
- console.log statements
|
|
56
|
+
- TODO/FIXME comments
|
|
57
|
+
- Missing JSDoc for public APIs
|
|
58
|
+
|
|
59
|
+
**Best Practices (MEDIUM):**
|
|
60
|
+
- Mutation patterns (use immutable instead)
|
|
61
|
+
- Emoji usage in code/comments
|
|
62
|
+
- Missing tests for new code
|
|
63
|
+
- Accessibility issues (a11y)
|
|
64
|
+
|
|
65
|
+
### Phase 3 — REPORT
|
|
66
|
+
|
|
67
|
+
Generate report with:
|
|
68
|
+
- Severity: CRITICAL, HIGH, MEDIUM, LOW
|
|
69
|
+
- File location and line numbers
|
|
70
|
+
- Issue description
|
|
71
|
+
- Suggested fix
|
|
72
|
+
|
|
73
|
+
Block commit if CRITICAL or HIGH issues found.
|
|
74
|
+
Never approve code with security vulnerabilities.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Remote Review Mode
|
|
79
|
+
|
|
80
|
+
Comprehensive PR/MR review — fetches diff, reads full files, runs validation, posts review.
|
|
81
|
+
|
|
82
|
+
### Phase 0 — DETECT PLATFORM
|
|
83
|
+
|
|
84
|
+
Run this first, before anything else:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
remote_url=$(git remote get-url origin 2>/dev/null)
|
|
88
|
+
|
|
89
|
+
case "$remote_url" in
|
|
90
|
+
*github.com*)
|
|
91
|
+
platform=github
|
|
92
|
+
cli=gh
|
|
93
|
+
;;
|
|
94
|
+
*code.iflytek.com*)
|
|
95
|
+
platform=gitlab
|
|
96
|
+
cli=glab
|
|
97
|
+
gitlab_host=code.iflytek.com
|
|
98
|
+
;;
|
|
99
|
+
*gitlab*)
|
|
100
|
+
platform=gitlab
|
|
101
|
+
cli=glab
|
|
102
|
+
# Generic GitLab — extract host
|
|
103
|
+
gitlab_host=$(echo "$remote_url" | sed -E 's#.*[@/]([^:/]+)[:/].*#\1#')
|
|
104
|
+
;;
|
|
105
|
+
*)
|
|
106
|
+
platform=unknown
|
|
107
|
+
;;
|
|
108
|
+
esac
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
If `platform=unknown`: stop and ask the user which platform to use, or to set the origin remote.
|
|
112
|
+
|
|
113
|
+
**Tooling preconditions:**
|
|
114
|
+
- `github` → require `gh` CLI authenticated (`gh auth status`)
|
|
115
|
+
- `gitlab` → require `glab` CLI authenticated against the right host
|
|
116
|
+
(`glab auth status --hostname "$gitlab_host"`)
|
|
117
|
+
|
|
118
|
+
For `code.iflytek.com`, the one-time setup is:
|
|
119
|
+
```bash
|
|
120
|
+
glab auth login --hostname code.iflytek.com
|
|
121
|
+
# Protocol: HTTPS
|
|
122
|
+
# Authentication: Personal Access Token
|
|
123
|
+
# Token from https://code.iflytek.com/-/user_settings/personal_access_tokens
|
|
124
|
+
# Required scopes: api, read_repository
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
> If the company GitLab needs VPN/proxy, surface that to the user before proceeding.
|
|
128
|
+
|
|
129
|
+
### Phase 1 — FETCH
|
|
130
|
+
|
|
131
|
+
Parse input to determine the PR/MR number:
|
|
132
|
+
|
|
133
|
+
| Input | Action |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Number (e.g. `42`) | Use as PR/MR number |
|
|
136
|
+
| GitHub URL (`github.com/.../pull/42`) | Extract number |
|
|
137
|
+
| GitLab URL (`code.iflytek.com/.../merge_requests/42`) | Extract number |
|
|
138
|
+
| Branch name | Find via `gh pr list --head <branch>` or `glab mr list --source-branch <branch>` |
|
|
139
|
+
|
|
140
|
+
**GitHub:**
|
|
141
|
+
```bash
|
|
142
|
+
gh pr view <N> --json number,title,body,author,baseRefName,headRefName,changedFiles,additions,deletions
|
|
143
|
+
gh pr diff <N>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**GitLab (glab):**
|
|
147
|
+
```bash
|
|
148
|
+
glab mr view <N>
|
|
149
|
+
glab mr diff <N>
|
|
150
|
+
# Or via API for richer metadata:
|
|
151
|
+
glab api "projects/:fullpath/merge_requests/<N>" \
|
|
152
|
+
--hostname "$gitlab_host"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`:fullpath` is the URL-encoded project path. `glab` resolves it from the current repo's origin automatically; pass `-R OWNER/REPO` only when running outside the repo.
|
|
156
|
+
|
|
157
|
+
If PR/MR not found, stop with error. Store metadata for later phases.
|
|
158
|
+
|
|
159
|
+
### Phase 2 — CONTEXT
|
|
160
|
+
|
|
161
|
+
Build review context (platform-agnostic):
|
|
162
|
+
|
|
163
|
+
1. **Project rules** — Read `CLAUDE.md`, `.claude/docs/`, and any contributing guidelines
|
|
164
|
+
2. **Planning artifacts** — Check `.claude/prds/`, `.claude/plans/`, `.claude/reviews/`, and legacy `.claude/PRPs/{prds,plans,reports,reviews}/`
|
|
165
|
+
3. **PR/MR intent** — Parse description for goals, linked issues, test plans
|
|
166
|
+
4. **Changed files** — List all modified files and categorize by type (source, test, config, docs)
|
|
167
|
+
|
|
168
|
+
### Phase 3 — REVIEW
|
|
169
|
+
|
|
170
|
+
Read each changed file **in full** (not just the diff hunks).
|
|
171
|
+
|
|
172
|
+
Fetch full file contents at the PR/MR head revision:
|
|
173
|
+
|
|
174
|
+
**GitHub:**
|
|
175
|
+
```bash
|
|
176
|
+
gh pr diff <N> --name-only | while IFS= read -r file; do
|
|
177
|
+
gh api "repos/{owner}/{repo}/contents/$file?ref=<head-branch>" --jq '.content' | base64 -d
|
|
178
|
+
done
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**GitLab:**
|
|
182
|
+
```bash
|
|
183
|
+
# List changed files
|
|
184
|
+
glab mr diff <N> --raw | grep -E '^(\+\+\+|---) ' | awk '{print $2}' | sed 's#^[ab]/##' | sort -u
|
|
185
|
+
|
|
186
|
+
# Fetch each file at MR head SHA
|
|
187
|
+
head_sha=$(glab mr view <N> --output json | jq -r '.diff_refs.head_sha // .sha')
|
|
188
|
+
project_path=$(git remote get-url origin | sed -E 's#.*[:/]([^/]+/[^/]+)\.git$#\1#')
|
|
189
|
+
encoded_path=$(printf '%s' "$project_path" | sed 's#/#%2F#g')
|
|
190
|
+
|
|
191
|
+
# For each file:
|
|
192
|
+
encoded_file=$(printf '%s' "$file" | sed 's#/#%2F#g')
|
|
193
|
+
glab api "projects/$encoded_path/repository/files/$encoded_file/raw?ref=$head_sha" \
|
|
194
|
+
--hostname "$gitlab_host"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Apply the review checklist across 7 categories:
|
|
198
|
+
|
|
199
|
+
| Category | What to Check |
|
|
200
|
+
|---|---|
|
|
201
|
+
| **Correctness** | Logic errors, off-by-ones, null handling, edge cases, race conditions |
|
|
202
|
+
| **Type Safety** | Type mismatches, unsafe casts, `any` usage, missing generics |
|
|
203
|
+
| **Pattern Compliance** | Matches project conventions (naming, file structure, error handling, imports) |
|
|
204
|
+
| **Security** | Injection, auth gaps, secret exposure, SSRF, path traversal, XSS |
|
|
205
|
+
| **Performance** | N+1 queries, missing indexes, unbounded loops, memory leaks, large payloads |
|
|
206
|
+
| **Completeness** | Missing tests, missing error handling, incomplete migrations, missing docs |
|
|
207
|
+
| **Maintainability** | Dead code, magic numbers, deep nesting, unclear naming, missing types |
|
|
208
|
+
|
|
209
|
+
Assign severity:
|
|
210
|
+
|
|
211
|
+
| Severity | Meaning | Action |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| **CRITICAL** | Security vulnerability or data loss risk | Must fix before merge |
|
|
214
|
+
| **HIGH** | Bug or logic error likely to cause issues | Should fix before merge |
|
|
215
|
+
| **MEDIUM** | Code quality issue or missing best practice | Fix recommended |
|
|
216
|
+
| **LOW** | Style nit or minor suggestion | Optional |
|
|
217
|
+
|
|
218
|
+
### Phase 4 — VALIDATE
|
|
219
|
+
|
|
220
|
+
Run available validation commands (platform-agnostic — same as before).
|
|
221
|
+
|
|
222
|
+
Detect project type from config files (`package.json`, `Cargo.toml`, `go.mod`, `pyproject.toml`, etc.) and run the matching commands:
|
|
223
|
+
|
|
224
|
+
**Node.js / TypeScript:**
|
|
225
|
+
```bash
|
|
226
|
+
npm run typecheck 2>/dev/null || npx tsc --noEmit 2>/dev/null
|
|
227
|
+
npm run lint
|
|
228
|
+
npm test
|
|
229
|
+
npm run build
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Rust:**
|
|
233
|
+
```bash
|
|
234
|
+
cargo clippy -- -D warnings
|
|
235
|
+
cargo test
|
|
236
|
+
cargo build
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Go:**
|
|
240
|
+
```bash
|
|
241
|
+
go vet ./...
|
|
242
|
+
go test ./...
|
|
243
|
+
go build ./...
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Python:**
|
|
247
|
+
```bash
|
|
248
|
+
pytest
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Record pass/fail for each.
|
|
252
|
+
|
|
253
|
+
### Phase 5 — DECIDE
|
|
254
|
+
|
|
255
|
+
| Condition | Decision |
|
|
256
|
+
|---|---|
|
|
257
|
+
| Zero CRITICAL/HIGH issues, validation passes | **APPROVE** |
|
|
258
|
+
| Only MEDIUM/LOW issues, validation passes | **APPROVE** with comments |
|
|
259
|
+
| Any HIGH issues or validation failures | **REQUEST CHANGES** |
|
|
260
|
+
| Any CRITICAL issues | **BLOCK** — must fix before merge |
|
|
261
|
+
|
|
262
|
+
Special cases:
|
|
263
|
+
- Draft PR / WIP MR → Always use **COMMENT** (not approve/block)
|
|
264
|
+
- Only docs/config changes → Lighter review, focus on correctness
|
|
265
|
+
- Explicit `--approve` / `--request-changes` → Override decision (still report all findings)
|
|
266
|
+
|
|
267
|
+
### Phase 6 — REPORT
|
|
268
|
+
|
|
269
|
+
Write artifact at `.claude/reviews/<platform>-<N>-review.md`
|
|
270
|
+
(e.g. `.claude/reviews/pr-42-review.md` for GitHub, `.claude/reviews/mr-42-review.md` for GitLab),
|
|
271
|
+
unless the repo uses legacy `.claude/PRPs/reviews/`:
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
# Review: <PR|MR> #<N> — <TITLE>
|
|
275
|
+
|
|
276
|
+
**Platform**: GitHub | GitLab (<host>)
|
|
277
|
+
**Reviewed**: <date>
|
|
278
|
+
**Author**: <author>
|
|
279
|
+
**Branch**: <head> → <base>
|
|
280
|
+
**Decision**: APPROVE | REQUEST CHANGES | BLOCK
|
|
281
|
+
|
|
282
|
+
## Summary
|
|
283
|
+
<1-2 sentence overall assessment>
|
|
284
|
+
|
|
285
|
+
## Findings
|
|
286
|
+
|
|
287
|
+
### CRITICAL
|
|
288
|
+
<findings or "None">
|
|
289
|
+
|
|
290
|
+
### HIGH
|
|
291
|
+
<findings or "None">
|
|
292
|
+
|
|
293
|
+
### MEDIUM
|
|
294
|
+
<findings or "None">
|
|
295
|
+
|
|
296
|
+
### LOW
|
|
297
|
+
<findings or "None">
|
|
298
|
+
|
|
299
|
+
## Validation Results
|
|
300
|
+
|
|
301
|
+
| Check | Result |
|
|
302
|
+
|---|---|
|
|
303
|
+
| Type check | Pass / Fail / Skipped |
|
|
304
|
+
| Lint | Pass / Fail / Skipped |
|
|
305
|
+
| Tests | Pass / Fail / Skipped |
|
|
306
|
+
| Build | Pass / Fail / Skipped |
|
|
307
|
+
|
|
308
|
+
## Files Reviewed
|
|
309
|
+
<list of files with change type: Added/Modified/Deleted>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Phase 7 — PUBLISH
|
|
313
|
+
|
|
314
|
+
**GitHub:**
|
|
315
|
+
```bash
|
|
316
|
+
# APPROVE
|
|
317
|
+
gh pr review <N> --approve --body "<summary>"
|
|
318
|
+
|
|
319
|
+
# REQUEST CHANGES
|
|
320
|
+
gh pr review <N> --request-changes --body "<summary with required fixes>"
|
|
321
|
+
|
|
322
|
+
# COMMENT only (draft PR or informational)
|
|
323
|
+
gh pr review <N> --comment --body "<summary>"
|
|
324
|
+
|
|
325
|
+
# Inline comment on a specific line:
|
|
326
|
+
gh api "repos/{owner}/{repo}/pulls/<N>/comments" \
|
|
327
|
+
-f body="<comment>" \
|
|
328
|
+
-f path="<file>" \
|
|
329
|
+
-F line=<line-number> \
|
|
330
|
+
-f side="RIGHT" \
|
|
331
|
+
-f commit_id="$(gh pr view <N> --json headRefOid --jq .headRefOid)"
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**GitLab (glab):**
|
|
335
|
+
|
|
336
|
+
GitLab does not have one-shot "approve + body" the same way GitHub does. Use this mapping:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# APPROVE
|
|
340
|
+
glab mr approve <N>
|
|
341
|
+
glab mr note <N> --message "<summary>"
|
|
342
|
+
|
|
343
|
+
# REQUEST CHANGES
|
|
344
|
+
glab mr revoke <N> 2>/dev/null || true # remove existing approval if any
|
|
345
|
+
glab mr note <N> --message "REQUEST CHANGES:\n\n<summary with required fixes>"
|
|
346
|
+
|
|
347
|
+
# COMMENT only
|
|
348
|
+
glab mr note <N> --message "<summary>"
|
|
349
|
+
|
|
350
|
+
# BLOCK (treat like REQUEST CHANGES + draft)
|
|
351
|
+
glab mr update <N> --draft
|
|
352
|
+
glab mr note <N> --message "BLOCK:\n\n<summary>"
|
|
353
|
+
|
|
354
|
+
# Inline comment on a specific line (GitLab discussions API):
|
|
355
|
+
encoded_path=$(printf '%s' "$project_path" | sed 's#/#%2F#g')
|
|
356
|
+
head_sha=$(glab mr view <N> --output json | jq -r '.diff_refs.head_sha')
|
|
357
|
+
base_sha=$(glab mr view <N> --output json | jq -r '.diff_refs.base_sha')
|
|
358
|
+
start_sha=$(glab mr view <N> --output json | jq -r '.diff_refs.start_sha')
|
|
359
|
+
|
|
360
|
+
glab api "projects/$encoded_path/merge_requests/<N>/discussions" \
|
|
361
|
+
--hostname "$gitlab_host" \
|
|
362
|
+
--method POST \
|
|
363
|
+
-f body="<comment>" \
|
|
364
|
+
-f "position[base_sha]=$base_sha" \
|
|
365
|
+
-f "position[start_sha]=$start_sha" \
|
|
366
|
+
-f "position[head_sha]=$head_sha" \
|
|
367
|
+
-f "position[position_type]=text" \
|
|
368
|
+
-f "position[new_path]=<file>" \
|
|
369
|
+
-f "position[new_line]=<line-number>"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Phase 8 — OUTPUT
|
|
373
|
+
|
|
374
|
+
Report to user:
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
<PR|MR> #<N>: <TITLE>
|
|
378
|
+
Platform: <github|gitlab(host)>
|
|
379
|
+
Decision: <APPROVE|REQUEST_CHANGES|BLOCK>
|
|
380
|
+
|
|
381
|
+
Issues: <critical_count> critical, <high_count> high, <medium_count> medium, <low_count> low
|
|
382
|
+
Validation: <pass_count>/<total_count> checks passed
|
|
383
|
+
|
|
384
|
+
Artifacts:
|
|
385
|
+
Review: .claude/reviews/<pr|mr>-<N>-review.md
|
|
386
|
+
URL: <PR/MR URL>
|
|
387
|
+
|
|
388
|
+
Next steps:
|
|
389
|
+
- <contextual suggestions based on decision>
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Quick Reference — gh vs glab
|
|
395
|
+
|
|
396
|
+
| Action | GitHub (`gh`) | GitLab (`glab`) |
|
|
397
|
+
|---|---|---|
|
|
398
|
+
| View PR/MR | `gh pr view <N>` | `glab mr view <N>` |
|
|
399
|
+
| Show diff | `gh pr diff <N>` | `glab mr diff <N>` |
|
|
400
|
+
| List by branch | `gh pr list --head <b>` | `glab mr list --source-branch <b>` |
|
|
401
|
+
| Approve | `gh pr review <N> --approve` | `glab mr approve <N>` |
|
|
402
|
+
| Request changes | `gh pr review <N> --request-changes` | `glab mr revoke <N>` + note |
|
|
403
|
+
| Comment | `gh pr review <N> --comment` | `glab mr note <N> --message` |
|
|
404
|
+
| Raw API | `gh api ...` | `glab api ... --hostname <host>` |
|
|
405
|
+
| Auth check | `gh auth status` | `glab auth status --hostname <host>` |
|
|
406
|
+
| Auth login | `gh auth login` | `glab auth login --hostname <host>` |
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## Edge Cases
|
|
411
|
+
|
|
412
|
+
- **No CLI for detected platform**: Fall back to local-only review (read diff, skip remote publish). Warn user with the install/auth steps.
|
|
413
|
+
- **Diverged branches**: Suggest `git fetch origin && git rebase origin/<base>` before review.
|
|
414
|
+
- **Large PR/MR (>50 files)**: Warn about review scope. Focus on source changes first, then tests, then config/docs.
|
|
415
|
+
- **SSH remote with non-standard port** (e.g. `ssh://git@code.iflytek.com:30004/...`): Platform detection on the host portion still works; `glab` uses the configured HTTPS API host, not the SSH port.
|
|
416
|
+
- **Unknown platform**: Ask the user which CLI to use, or whether to fall back to local-only review.
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Create a PR/MR from current branch with unpushed commits — auto-detects GitHub vs GitLab (github.com / code.iflytek.com / generic GitLab)"
|
|
3
|
+
argument-hint: "[base-branch] (default: main)"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Create Pull Request / Merge Request
|
|
7
|
+
|
|
8
|
+
> Local override of upstream `ecc/commands/pr.md`. Adds GitLab (incl. self-hosted
|
|
9
|
+
> `code.iflytek.com`) support. Do not edit the upstream file — keep changes here.
|
|
10
|
+
|
|
11
|
+
**Input**: `$ARGUMENTS` — optional, may contain a base branch name and/or flags (e.g., `--draft`).
|
|
12
|
+
|
|
13
|
+
**Parse `$ARGUMENTS`**:
|
|
14
|
+
- Extract any recognized flags (`--draft`)
|
|
15
|
+
- Treat remaining non-flag text as the base branch name
|
|
16
|
+
- Default base branch to `main` if none specified
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Phase 0 — DETECT PLATFORM
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
remote_url=$(git remote get-url origin 2>/dev/null)
|
|
24
|
+
|
|
25
|
+
case "$remote_url" in
|
|
26
|
+
*github.com*)
|
|
27
|
+
platform=github; cli=gh ;;
|
|
28
|
+
*code.iflytek.com*)
|
|
29
|
+
platform=gitlab; cli=glab; gitlab_host=code.iflytek.com ;;
|
|
30
|
+
*gitlab*)
|
|
31
|
+
platform=gitlab; cli=glab
|
|
32
|
+
gitlab_host=$(echo "$remote_url" | sed -E 's#.*[@/]([^:/]+)[:/].*#\1#') ;;
|
|
33
|
+
*)
|
|
34
|
+
platform=unknown ;;
|
|
35
|
+
esac
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If `platform=unknown`: ask the user to confirm platform or to fix `origin`.
|
|
39
|
+
|
|
40
|
+
Auth check:
|
|
41
|
+
- `github` → `gh auth status`
|
|
42
|
+
- `gitlab` → `glab auth status --hostname "$gitlab_host"`
|
|
43
|
+
|
|
44
|
+
For `code.iflytek.com` one-time login:
|
|
45
|
+
```bash
|
|
46
|
+
glab auth login --hostname code.iflytek.com
|
|
47
|
+
# HTTPS + Personal Access Token (scope: api, read_repository, write_repository)
|
|
48
|
+
# Token: https://code.iflytek.com/-/user_settings/personal_access_tokens
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phase 1 — VALIDATE
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
git branch --show-current
|
|
57
|
+
git status --short
|
|
58
|
+
git log origin/<base>..HEAD --oneline
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
| Check | Condition | Action if Failed |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| Not on base branch | Current branch ≠ base | Stop: "Switch to a feature branch first." |
|
|
64
|
+
| Clean working directory | No uncommitted changes | Warn: "You have uncommitted changes. Commit or stash first." |
|
|
65
|
+
| Has commits ahead | `git log origin/<base>..HEAD` not empty | Stop: "No commits ahead of `<base>`. Nothing to PR." |
|
|
66
|
+
| No existing PR/MR | See platform-specific check below | Stop: "PR/MR already exists: #<number>." |
|
|
67
|
+
|
|
68
|
+
**Existing PR/MR check:**
|
|
69
|
+
|
|
70
|
+
| Platform | Command |
|
|
71
|
+
|---|---|
|
|
72
|
+
| GitHub | `gh pr list --head <branch> --json number,url --jq '.[0]'` |
|
|
73
|
+
| GitLab | `glab mr list --source-branch <branch> --output json --per-page 1 \| jq '.[0]'` |
|
|
74
|
+
|
|
75
|
+
If all checks pass, proceed.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Phase 2 — DISCOVER
|
|
80
|
+
|
|
81
|
+
### PR/MR Template
|
|
82
|
+
|
|
83
|
+
Search by platform:
|
|
84
|
+
|
|
85
|
+
**GitHub** (PR templates):
|
|
86
|
+
1. `.github/PULL_REQUEST_TEMPLATE/` directory — list and let user choose
|
|
87
|
+
2. `.github/PULL_REQUEST_TEMPLATE.md`
|
|
88
|
+
3. `.github/pull_request_template.md`
|
|
89
|
+
4. `docs/pull_request_template.md`
|
|
90
|
+
|
|
91
|
+
**GitLab** (MR templates):
|
|
92
|
+
1. `.gitlab/merge_request_templates/` directory — list and let user choose
|
|
93
|
+
2. `.gitlab/merge_request_template.md`
|
|
94
|
+
|
|
95
|
+
If found, read it and use its structure for the body.
|
|
96
|
+
|
|
97
|
+
### Commit Analysis
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
git log origin/<base>..HEAD --format="%h %s" --reverse
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- **Title**: Conventional commit format (`feat: ...`, `fix: ...`, etc.). If multiple types, use dominant one. Single commit → use its message as-is.
|
|
104
|
+
- **Summary**: Group commits by type/area.
|
|
105
|
+
|
|
106
|
+
### File Analysis
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git diff origin/<base>..HEAD --stat
|
|
110
|
+
git diff origin/<base>..HEAD --name-only
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Categorize: source, tests, docs, config, migrations.
|
|
114
|
+
|
|
115
|
+
### Planning Artifacts
|
|
116
|
+
|
|
117
|
+
Check for artifacts produced by `/plan-prd`, `/plan`, or legacy PRP workflow:
|
|
118
|
+
- `.claude/prds/` — PRDs
|
|
119
|
+
- `.claude/plans/` — Plans
|
|
120
|
+
- `.claude/PRPs/{prds,plans,reports}/` — legacy PRP paths
|
|
121
|
+
|
|
122
|
+
Reference these in the body if they exist.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Phase 3 — PUSH
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
git push -u origin HEAD
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
If push fails due to divergence:
|
|
133
|
+
```bash
|
|
134
|
+
git fetch origin
|
|
135
|
+
git rebase origin/<base>
|
|
136
|
+
git push -u origin HEAD # use --force-with-lease only after rebase
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
If rebase conflicts, stop and inform the user.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Phase 4 — CREATE
|
|
144
|
+
|
|
145
|
+
### With Template
|
|
146
|
+
|
|
147
|
+
Fill in each section using commit and file analysis. Preserve all sections — leave as "N/A" if not applicable rather than removing.
|
|
148
|
+
|
|
149
|
+
### Without Template
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
## Summary
|
|
153
|
+
<1-2 sentence description>
|
|
154
|
+
|
|
155
|
+
## Changes
|
|
156
|
+
<bulleted list grouped by area>
|
|
157
|
+
|
|
158
|
+
## Files Changed
|
|
159
|
+
<list with change type: Added/Modified/Deleted>
|
|
160
|
+
|
|
161
|
+
## Testing
|
|
162
|
+
<how changes were tested, or "Needs testing">
|
|
163
|
+
|
|
164
|
+
## Related Issues
|
|
165
|
+
<linked issues with Closes/Fixes/Relates to #N, or "None">
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Create the PR/MR
|
|
169
|
+
|
|
170
|
+
**GitHub:**
|
|
171
|
+
```bash
|
|
172
|
+
gh pr create \
|
|
173
|
+
--title "<title>" \
|
|
174
|
+
--base <base-branch> \
|
|
175
|
+
--body "<body>"
|
|
176
|
+
# Add --draft if --draft was parsed
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**GitLab:**
|
|
180
|
+
```bash
|
|
181
|
+
glab mr create \
|
|
182
|
+
--title "<title>" \
|
|
183
|
+
--target-branch <base-branch> \
|
|
184
|
+
--description "<body>" \
|
|
185
|
+
--source-branch "$(git branch --show-current)" \
|
|
186
|
+
--yes
|
|
187
|
+
# Add --draft if --draft was parsed
|
|
188
|
+
# Optional: --remove-source-branch (mirrors GitHub's "delete branch after merge")
|
|
189
|
+
# Optional: --squash-before-merge (project policy dependent)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
> GitLab note: `glab mr create` is interactive by default. `--yes` skips the prompt;
|
|
193
|
+
> if your `glab` version doesn't support it, use `--fill` to take title/desc from commits
|
|
194
|
+
> instead of the flags above, then `glab mr update` to adjust.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Phase 5 — VERIFY
|
|
199
|
+
|
|
200
|
+
**GitHub:**
|
|
201
|
+
```bash
|
|
202
|
+
gh pr view --json number,url,title,state,baseRefName,headRefName,additions,deletions,changedFiles
|
|
203
|
+
gh pr checks --json name,status,conclusion 2>/dev/null || true
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**GitLab:**
|
|
207
|
+
```bash
|
|
208
|
+
glab mr view --output json
|
|
209
|
+
glab ci status 2>/dev/null || true # pipeline status for the MR's source branch
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Phase 6 — OUTPUT
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
<PR|MR> #<number>: <title>
|
|
218
|
+
Platform: <github|gitlab(host)>
|
|
219
|
+
URL: <url>
|
|
220
|
+
Branch: <head> → <base>
|
|
221
|
+
Changes: +<additions> -<deletions> across <changedFiles> files
|
|
222
|
+
|
|
223
|
+
CI Checks: <status summary or "pending" or "none configured">
|
|
224
|
+
|
|
225
|
+
Artifacts referenced:
|
|
226
|
+
- <any PRDs/plans linked in body>
|
|
227
|
+
|
|
228
|
+
Next steps:
|
|
229
|
+
GitHub:
|
|
230
|
+
- gh pr view <N> --web → open in browser
|
|
231
|
+
- /code-review <N> → review the PR
|
|
232
|
+
- gh pr merge <N> → merge when ready
|
|
233
|
+
GitLab:
|
|
234
|
+
- glab mr view <N> --web → open in browser
|
|
235
|
+
- /code-review <N> → review the MR
|
|
236
|
+
- glab mr merge <N> → merge when ready
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
(Print only the section matching the detected platform.)
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Edge Cases
|
|
244
|
+
|
|
245
|
+
- **No `gh`/`glab` for detected platform**: Stop with install + auth instructions.
|
|
246
|
+
- **Not authenticated**: Stop with `gh auth login` or `glab auth login --hostname <host>`.
|
|
247
|
+
- **Force push needed**: After rebase, use `git push --force-with-lease` (never `--force`).
|
|
248
|
+
- **Multiple templates**: If multiple template files exist, list them and ask user to choose.
|
|
249
|
+
- **Large PR/MR (>20 files)**: Warn about scope. Suggest splitting if logically separable.
|
|
250
|
+
- **Unknown platform**: Ask user to confirm or fix the `origin` remote.
|