@ccoalm/ccl-skills 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +49 -0
- package/dist/assets/marketplace/.agents/plugins/marketplace.json +12 -0
- package/dist/assets/marketplace/.claude-plugin/marketplace.json +13 -0
- package/dist/assets/marketplace/marketplace-manifest.json +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/marketplace.json +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/plugin.json +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.codex-plugin/plugin.json +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.worktree-only +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/agent-context/session-start.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/agent-context/subagent-start.md +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/AGENTS.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-delegation-owner.sh +125 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-edit-isolation.sh +102 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-merge-authorization.sh +1156 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/hooks.json +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/merge-authorization-prompt.sh +142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-guard.sh +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-stop.sh +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/remind-post-merge-cleanup.sh +144 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-context.sh +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-start.sh +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/skill-extraction-gate-stop.sh +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/subagent-start.sh +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_delegation_owner.sh +329 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_edit_isolation.sh +322 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_merge_authorization.sh +902 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_merge_authorization_prompt.sh +178 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_remind_post_merge_cleanup.sh +121 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_session_start.sh +170 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/AGENTS.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +564 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-install-skills.md +14 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-update-skills.md +44 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-verify-skills.md +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-worktree-check.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/AGENTS.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/README.md +276 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.example.json +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.sh +1307 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/test.sh +941 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/SKILL.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +188 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/android-dev.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/flutter-dev.md +80 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/ios-dev.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/kotlin-multiplatform.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-platform-boundaries.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/source-evidence-map.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +353 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md +98 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_envelope.py +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_timeout_exit.sh +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +1438 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +324 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/concern_excerpt.py +295 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/egress_schema.py +214 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/init_policy_matrix.py +642 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_packet_mcp.py +181 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +1165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +1190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_cli_review.py +946 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_opencode_review.py +474 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_probe_result.py +1899 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_review_json.py +200 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +2845 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.sh +6 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/run_claude_capture.py +71 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/runtime-surface-verification-design.md +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_classify_envelope.sh +68 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +2311 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_cli_review_wrappers.sh +1832 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_code_review_identity.sh +73 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_concern_excerpt.sh +245 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_egress_schema.sh +177 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_init_policy_matrix.sh +272 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_kimi_packet_mcp.py +195 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_concurrency.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_retry.sh +1005 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_opencode_review.sh +258 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_probe_result.sh +574 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_review_json.sh +349 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +434 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_order.sh +264 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +2412 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/verify_native_skill_binding.py +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +153 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/diagnosis-playbook.md +54 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/prevention-routing.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/SKILL.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/references/security-review-gate.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/SKILL.md +165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/api-security-boundaries.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +160 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/artifact-generation-architecture.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/audit-history-architecture.md +29 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/bulk-workflow-architecture.md +33 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/config-rule-routing-architecture.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/cross-cutting-concerns.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-modeling-and-migrations.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-platform-architecture.md +210 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/dependency-platform.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/developer-tooling-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/error-contract-architecture.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/event-driven-architecture.md +260 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/http-gateway-architecture.md +74 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/mq-consumer-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +275 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/notification-architecture.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/ops-checklist.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/performance-capacity-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/protobuf-contract-architecture.md +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/redis-cache-coordination.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/release-runtime-readiness.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/replay-comparison-architecture.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/runtime-observability.md +94 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/service-scaffold.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/source-evidence-map.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/workflow-state-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +159 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/artifact-generation-patterns.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/audit-history-patterns.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/bulk-import-export-patterns.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/config-rule-routing-patterns.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/data-access-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/db-schema-and-dal-patterns.md +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/dependency-client-patterns.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/developer-tooling-patterns.md +70 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/domain-feature-patterns.md +78 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/engineering-patterns.md +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/error-contract-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/feature-playbook.md +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/http-gateway-client-patterns.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/mq-consumer-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/notification-patterns.md +42 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/observability-implementation-patterns.md +101 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/performance-capacity-patterns.md +44 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/protobuf-contract-patterns.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/public-api-integration-patterns.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/quality-and-testing-patterns.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/redis-cache-lock-patterns.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/release-ops-patterns.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/reliability-patterns.md +83 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/replay-comparison-patterns.md +32 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/scaffold-and-codegen.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/source-evidence-map.md +54 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/state-machine-task-patterns.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/SKILL.md +80 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +117 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-approval-auto-reviewer.md +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-command-sandbox.md +441 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-context-freshness.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-credentials-auth.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-extensions-skills.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-file-edit-protocol.md +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-ide-integration.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-input-ingestion.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-instruction-composition.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-lifecycle-hooks.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-messaging.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-runtime-bootstrap.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-session-persistence.md +448 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-task-orchestration.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-tool-dispatch.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-turn-lifecycle.md +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/inference-capacity-operations.md +162 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/llm-client-gateway.md +156 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/model-prompt-evaluation.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/retrieval-agent-safety.md +273 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +202 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/contracts-and-state.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/cross-stack-alignment.md +94 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/framework-choice.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/online-practice-uptake.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/platform-capabilities.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/product-page-checklist.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/qa-release.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/source-evidence-map.md +82 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/SKILL.md +103 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/agents/openai.yaml +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/references/multi-agent-delegation-playbook.md +100 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/SKILL.md +70 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-data-acquisition.md +549 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-disclosure-channels.md +97 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/research-prompts.md +66 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/AGENTS.md +32 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/test-public-data-acquisition-recipes.sh +379 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +244 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/alerting-and-on-call.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/framework-middleware-checklist.md +142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/infra-component-deployment.md +268 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-correlation-recipe.md +124 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-schema-canonical.md +208 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/metrics-conventions.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/obs-stack-architecture.md +107 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +95 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/source-register.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +303 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/canary-and-rollout-strategy.md +163 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/config-center-via-etcd.md +245 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/custom-control-plane-boundary.md +298 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-cli-concrete-recipe.md +312 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-pipeline.md +165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/env-and-lane-matrix.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/lane-orchestration-control-plane.md +383 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/multi-region-and-cluster.md +135 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +149 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/python-package-registry-release.md +462 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/rollback-playbook.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/secret-and-config-management.md +231 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/version-authority-and-deprecation.md +21 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/SKILL.md +276 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/dual-sidecar-and-traffic-config-center.md +127 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/framework-middleware.md +143 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/grpc-authority-workaround.md +90 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/http-response-envelope-contract.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/mesh-architecture.md +127 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/multi-env-routing.md +192 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/protobuf-http-contract-signals.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +124 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/rpc-framework-recipe.md +494 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-choice.md +113 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-migration-playbook.md +231 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-recipe.md +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +235 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/adr-convention.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-checklist.md +30 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-evaluation-report-template.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-execution-spec.md +108 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-sop.md +457 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-templates.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/artifact-egress-confidentiality.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/code-review-checklist.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/cross-repo-coordination.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +192 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-review-gate-mechanics.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/diagnostic-spec-match-gate.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dispatch-owner-skills.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dormant-code-activation.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/existing-project-assessment-report.md +223 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/external-skill-augmentation.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/feature-deprecation-cascade.md +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/high-risk-resilience-gates.md +73 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-completeness-and-minimality.md +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-entry-reentry-gate.md +122 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/modular-monolith-heuristic.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/pre-final-continuation-gate.md +115 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/problem-resolution-and-learning.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-attributes.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-remediation-program.md +88 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +27 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/refactoring-discipline.md +52 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/review-reception.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/shared-gate-artifact-classification.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/source-evidence-map.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/status-tracker-sync.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/sync-spec-repo-contract.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/worktree-mechanics.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/check-agent-contract-coverage.sh +213 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +136 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/agents/openai.yaml +9 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/analytics-visualization-interactions.md +206 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +108 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/complex-creation-interactions.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +214 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +97 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +63 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +250 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +324 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-web-desktop-patterns.md +456 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/resource-management-interactions.md +113 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/scenario-community-patterns.md +133 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/trust-sensitive-ai-and-data-patterns.md +96 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +176 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +111 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/SKILL.md +157 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/ai-service-integration-boundaries.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-contract-and-schema.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-security-boundaries.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/architecture-playbook.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/async-execution-model.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/background-jobs-and-scheduling.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/batch-and-pipeline-architecture.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/config-secrets-runtime.md +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-modeling-and-migrations.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-platform-architecture.md +211 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/event-driven-architecture.md +263 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +281 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/observability-and-ops.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/packaging-runtime-readiness.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/redis-cache-coordination.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/reliability-and-error-contract.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/source-evidence-map.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/web-framework-boundaries.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +143 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/ai-service-wiring-patterns.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/async-and-worker-patterns.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/background-job-patterns.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/batch-and-artifact-patterns.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/dependency-client-patterns.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/error-handling-patterns.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/feature-playbook.md +43 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/observability-implementation-patterns.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/project-structure-and-tooling.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/public-api-security-patterns.md +52 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/redis-cache-lock-patterns.md +78 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/schema-and-validation-patterns.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/source-evidence-map.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/sqlalchemy-and-migrations-patterns.md +99 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/testing-and-quality-patterns.md +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/web-framework-patterns.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/config-runtime-readback.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/mr-merge-authorization.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/post-release-env-reset.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-closeout-evidence.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-scope-confirmation.md +21 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/tag-and-prod-pipeline-gate.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/test-scope-prompt.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/watcher-discipline.md +14 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/SKILL.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/comment-safe-release-doc.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-evidence-workflow.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-testing-scope-section.md +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/SKILL.md +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/SKILL.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/prd-composition-contract.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/requirement-closure-contract.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/security-four-questions.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/SKILL.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md +88 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +337 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/analysis-parse-fix-test-challenge-replay.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/attribution-verification.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/bootstrap-slim-c3-obligation-table.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/coverage-exhaustion-traps.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/description-authoring.md +162 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +507 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/evidence-card-template.md +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/example-domain-preselect.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-lifecycle-handoff.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md +286 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/incident-postmortem-extraction.md +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/l0-l1-l2-routing.md +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/online-skill-review.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/parallel-stack-references-pattern.md +164 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +90 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/recurring-anti-patterns-checklist.md +320 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/resume-paused-delivery.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-feedback-mining.md +33 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-finding-standards.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-rubric.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/rule-consolidation.md +118 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/skill-listing-budget.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +254 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +658 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/two-source-extraction-pattern.md +167 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-routing-map.md +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +180 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +1452 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-evidence-card-leak.sh +491 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-mr-target-freshness.sh +173 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-size-budget.sh +488 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-sync-pointers.sh +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-golden-trace.rb +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-health.rb +327 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing-bank.rb +401 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing.rb +248 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/generic-r0-leak-scan.sh +282 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/governing-chain-diff.py +321 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +964 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +708 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/skill-behavior-eval.py +540 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-lifecycle.rb +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-pending-status.rb +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh +829 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +1203 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_r0_status.sh +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_register_pending_exclusion.sh +137 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +173 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_route_drift.sh +377 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_size_budget.sh +833 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +491 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_source_register_lifecycle.sh +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_mr_target_freshness.sh +261 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_sync_pointers.sh +538 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_controlled_escalation_pins.sh +154 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_grader_diagnostics.sh +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_surface_binding.sh +178 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_prose_target.sh +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_generic_r0_leak_scan.sh +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_git_identity_predicate_gate.sh +243 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_governing_chain_diff.sh +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_dateless_host.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_resolution.sh +724 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +414 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_regression_runner_registration.sh +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_bank_integrity.sh +205 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_credential_cwd.sh +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +111 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_root_depth.sh +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +257 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +98 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/input-state-machines.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/streaming-rich-output.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/terminal-side-channels.md +96 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/SKILL.md +408 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/bitable-setup.md +573 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/README.md +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/github-actions.yml +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/gitlab-ci.yml +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/jenkins.Jenkinsfile +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/classical-test-design-techniques.md +279 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/gen_report.py +2807 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/makefile-template.md +200 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/report-config-schema.md +272 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/run_pytestless.py +475 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/source-to-case-workflows.md +258 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-marker-conventions.md +316 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-review-and-prioritization.md +145 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/AGENTS.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.dart +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.go +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.py +135 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.ts +285 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/test_gen_report.py +2144 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/update-lifecycle.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +212 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/ci-fixtures-and-flake-control.md +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +50 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/data-and-workflow-testing.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/design-closed-contract-oracles.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/e2e-real-flow-testing.md +71 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/fitness-functions.md +240 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/integration-contract-testing.md +235 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/non-functional-specialized-scenarios.md +296 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/rd-testing-standard-template.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/run-killing-mutation-walk.md +43 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/scenario-testing.md +136 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/source-evidence-map.md +59 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/structured-tc-input-translation.md +67 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +392 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-data-and-determinism.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-topology-and-commands.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/unit-testing.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/vendored-contract-drift-checklist.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/verify-enforcement-mechanisms.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/AGENTS.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.py +140 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.test.sh +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.py +170 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.test.sh +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.go +198 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.test.sh +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/test_mutation_backup_recipe.sh +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +184 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/comment-safe-feishu.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/cross-model-co-review.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/delivery-face-closeout.md +60 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/doc-charter-first.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/session-vantage-leakage.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/embedded-h5-in-host.md +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/react-architecture.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/source-evidence-map.md +60 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-quality-release.md +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-ui-quality.md +83 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/SKILL.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/references/shared-branch-rebase.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/AGENTS.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_status.sh +207 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_sweep.sh +481 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-status.sh +325 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-sweep.sh +245 -0
- package/dist/assets/release.json +2797 -0
- package/dist/claude-adapter.d.ts +9 -0
- package/dist/claude-adapter.js +240 -0
- package/dist/cli-worker.d.ts +1 -0
- package/dist/cli-worker.js +32 -0
- package/dist/cli.d.ts +22 -0
- package/dist/cli.js +214 -0
- package/dist/codex-host.d.ts +30 -0
- package/dist/codex-host.js +162 -0
- package/dist/fs-safe.d.ts +21 -0
- package/dist/fs-safe.js +241 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/manifest.d.ts +8 -0
- package/dist/manifest.js +135 -0
- package/dist/opencode-adapter.d.ts +10 -0
- package/dist/opencode-adapter.js +416 -0
- package/dist/operations.d.ts +3 -0
- package/dist/operations.js +956 -0
- package/dist/paths.d.ts +20 -0
- package/dist/paths.js +4 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.js +1 -0
- package/dist/unified.d.ts +4 -0
- package/dist/unified.js +64 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +5 -0
- package/package.json +35 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Verify CCL skills and OpenCode local discovery
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Verify the CCL skills repository and OpenCode discovery state.
|
|
6
|
+
|
|
7
|
+
Run these checks from the repository root:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bash -n scripts/install.sh && bash -n scripts/install-opencode.sh
|
|
11
|
+
python3 -m json.tool opencode.json >/dev/null
|
|
12
|
+
git diff --check
|
|
13
|
+
bash skills/skill-extraction-workflow/scripts/check-ccl-skills.sh .
|
|
14
|
+
tmp_home=$(mktemp -d)
|
|
15
|
+
skills_json=$(mktemp)
|
|
16
|
+
real_home=${HOME:-}
|
|
17
|
+
HOME="$tmp_home" OPENCODE_DISABLE_EXTERNAL_SKILLS=1 opencode debug skill > "$skills_json"
|
|
18
|
+
HOME="$tmp_home" REAL_HOME="$real_home" SKILLS_JSON="$skills_json" python3 - <<'PY'
|
|
19
|
+
import json
|
|
20
|
+
import os
|
|
21
|
+
import urllib.parse
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def parse_frontmatter_name(path):
|
|
26
|
+
lines = path.read_text(encoding='utf-8').splitlines()
|
|
27
|
+
if not lines or lines[0].strip() != '---':
|
|
28
|
+
return None
|
|
29
|
+
for line in lines[1:]:
|
|
30
|
+
if line.strip() == '---':
|
|
31
|
+
return None
|
|
32
|
+
if line.startswith('name:'):
|
|
33
|
+
return line.split(':', 1)[1].strip().strip('"\'') or None
|
|
34
|
+
return None
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def location_path(value):
|
|
38
|
+
text = str(value or '')
|
|
39
|
+
if text.startswith('file://'):
|
|
40
|
+
return Path(urllib.parse.unquote(urllib.parse.urlparse(text).path)).resolve()
|
|
41
|
+
return Path(text).resolve() if text else None
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
repo = Path.cwd().resolve()
|
|
45
|
+
skills_root = repo / 'skills'
|
|
46
|
+
expected = {}
|
|
47
|
+
for skill_file in sorted(skills_root.glob('*/SKILL.md')):
|
|
48
|
+
dirname = skill_file.parent.name
|
|
49
|
+
fm_name = parse_frontmatter_name(skill_file)
|
|
50
|
+
if fm_name and fm_name != dirname:
|
|
51
|
+
raise AssertionError(f'frontmatter name mismatch: {skill_file}: name={fm_name!r} dir={dirname!r}')
|
|
52
|
+
expected[dirname] = skill_file.resolve()
|
|
53
|
+
|
|
54
|
+
skills = json.load(open(os.environ['SKILLS_JSON'], encoding='utf-8'))
|
|
55
|
+
actual = {}
|
|
56
|
+
for item in skills:
|
|
57
|
+
loc = location_path(item.get('location'))
|
|
58
|
+
if not loc:
|
|
59
|
+
continue
|
|
60
|
+
try:
|
|
61
|
+
loc.relative_to(skills_root.resolve())
|
|
62
|
+
except ValueError:
|
|
63
|
+
continue
|
|
64
|
+
name = item.get('name') or (loc.parent.name if loc.name == 'SKILL.md' else None)
|
|
65
|
+
if name:
|
|
66
|
+
actual[str(name)] = loc
|
|
67
|
+
|
|
68
|
+
expected_names = set(expected)
|
|
69
|
+
actual_names = set(actual)
|
|
70
|
+
missing = sorted(expected_names - actual_names)
|
|
71
|
+
extra = sorted(actual_names - expected_names)
|
|
72
|
+
print('expected_local_skill_count=', len(expected_names))
|
|
73
|
+
print('actual_local_skill_count=', len(actual_names))
|
|
74
|
+
print('missing_local_skills=', ','.join(missing) or '<none>')
|
|
75
|
+
print('extra_local_skills=', ','.join(extra) or '<none>')
|
|
76
|
+
if missing or extra:
|
|
77
|
+
raise AssertionError({'missing': missing, 'extra': extra, 'actual': sorted(actual_names), 'expected': sorted(expected_names)})
|
|
78
|
+
|
|
79
|
+
real_home = os.environ.get('REAL_HOME')
|
|
80
|
+
if real_home:
|
|
81
|
+
global_root = Path(real_home).expanduser() / '.config' / 'opencode' / 'skills'
|
|
82
|
+
duplicates = sorted(name for name in expected_names if (global_root / name / 'SKILL.md').exists())
|
|
83
|
+
if duplicates:
|
|
84
|
+
print('warning_global_skill_snapshots=', ','.join(duplicates))
|
|
85
|
+
print('warning_global_skill_snapshots_note=these are independent installed snapshots; repo development should trust this isolated local verify. To refresh global OpenCode skills, run install/update and restart OpenCode.')
|
|
86
|
+
PY
|
|
87
|
+
rm -rf "$tmp_home" "$skills_json"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Report pass/fail honestly. Do not claim OpenCode support is verified if any command fails.
|
|
91
|
+
|
|
92
|
+
## Injection liveness probe (do this in-session, not via shell)
|
|
93
|
+
|
|
94
|
+
The bootstrap injection rides OpenCode's `experimental.chat.system.transform`
|
|
95
|
+
plugin API; an OpenCode upgrade can rename/remove it and the plugin fails
|
|
96
|
+
SILENTLY (all hooks are wrapped to never break startup). Skill discovery
|
|
97
|
+
passing does NOT prove injection. So, as the agent running this command,
|
|
98
|
+
check your CURRENT system prompt: it must contain the dedupe marker string
|
|
99
|
+
formed by joining `ccl-skills` and `-routing` into one hyphenated word
|
|
100
|
+
(written SPLIT here on purpose — if this command spelled the marker out, the
|
|
101
|
+
command text itself would satisfy the check and a dead injection would still
|
|
102
|
+
report LIVE). Search your system prompt for that joined word outside of this
|
|
103
|
+
command's own text. Report one line:
|
|
104
|
+
|
|
105
|
+
- marker present -> `bootstrap injection: LIVE`
|
|
106
|
+
- marker absent -> `bootstrap injection: NOT LIVE` — remediate: confirm the
|
|
107
|
+
plugin file is in `~/.config/opencode/plugins/`, restart OpenCode, and if it
|
|
108
|
+
still fails check OpenCode release notes for the experimental hook rename and
|
|
109
|
+
report to the ccl-skills maintainer (do not self-patch the plugin API).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Check whether current repository is safe for editing under repository worktree rules
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Check the current repository's worktree isolation state before editing.
|
|
6
|
+
|
|
7
|
+
Run the repo-local preflight first:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bash skills/worktree-isolation/scripts/worktree-status.sh --slug <task-slug>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If it prints `UNSAFE`, do not edit. Create the feature worktree with the printed
|
|
14
|
+
`git worktree add -b ...` command, then continue inside that new path. New lanes
|
|
15
|
+
default to (and are recommended to use) the primary checkout root at
|
|
16
|
+
`.work/worktrees/<task-slug>`; per-lane local metadata is conventionally
|
|
17
|
+
`.work/lanes/<task-slug>.json` and the status script only prints the snippet/path
|
|
18
|
+
(it does not write metadata). The `.work/worktrees` location is a convention, not
|
|
19
|
+
a hard safety condition: an existing independent feature worktree outside it can
|
|
20
|
+
still report `SAFE` when the hard conditions hold (independent worktree, named
|
|
21
|
+
feature branch, not a submodule, not detached, clean tree, confirmed base); in
|
|
22
|
+
that case the script only emits a non-blocking warning suggesting `.work/worktrees`
|
|
23
|
+
for new lanes.
|
|
24
|
+
|
|
25
|
+
If the script is missing, fallback to:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
git status --short --branch
|
|
29
|
+
git rev-parse --show-toplevel
|
|
30
|
+
git rev-parse --git-dir
|
|
31
|
+
git rev-parse --git-common-dir
|
|
32
|
+
git symbolic-ref --quiet --short HEAD || true
|
|
33
|
+
test -f .worktree-only && printf '.worktree-only present\n' || printf '.worktree-only absent\n'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If `.worktree-only` is present and the current checkout is `main` or `master` with `git-dir == git-common-dir`, stop and create a feature worktree before editing. Manual fallback creation should anchor on the primary checkout root, derived from the parent of `git rev-parse --git-common-dir`, e.g. `git worktree add -b <branch> <primary-root>/.work/worktrees/<slug> <base>`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# scripts/owner-dispatch Agent Contract
|
|
2
|
+
|
|
3
|
+
Owner-dispatch scripts enforce that agents load the correct owner skill before
|
|
4
|
+
editing protected surfaces.
|
|
5
|
+
|
|
6
|
+
Trust boundary (same as the sibling control-plane engine — see
|
|
7
|
+
`scripts/control-plane/README.md`): **the adversary is the actor being gated, not the
|
|
8
|
+
environment.** That actor does not own the job environment — the CI files defining it are
|
|
9
|
+
themselves gated paths, and anyone who can set the environment can skip the gate outright.
|
|
10
|
+
Environment-borne redirection is therefore out of scope, and reviewers should close such
|
|
11
|
+
findings as out-of-scope. The environment handling that exists here (disabling replace refs
|
|
12
|
+
and the legacy grafts file for ancestry) is accident protection — a repository legitimately
|
|
13
|
+
carrying either would otherwise get a silently wrong verdict — not a security control.
|
|
14
|
+
|
|
15
|
+
Rules:
|
|
16
|
+
|
|
17
|
+
- Keep policy decisions auditable and fail-closed for strict mode.
|
|
18
|
+
- Do not silently broaden write permissions or downgrade a required owner to
|
|
19
|
+
advisory.
|
|
20
|
+
- Tests must cover allow, deny, ask, stale state, and generated/vendored
|
|
21
|
+
boundary cases.
|
|
22
|
+
- This is a shared enforcement surface; non-wording changes require review,
|
|
23
|
+
challenge, and behavioral evidence.
|
|
24
|
+
|
|
25
|
+
Validation:
|
|
26
|
+
|
|
27
|
+
- `bash scripts/owner-dispatch/test.sh`
|
|
28
|
+
- `bash skills/skill-extraction-workflow/scripts/check-ccl-skills.sh .`
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# owner-dispatch — mechanical firing for the owner-invoke gate
|
|
2
|
+
|
|
3
|
+
## The problem this solves
|
|
4
|
+
|
|
5
|
+
The owner-invoke rule — *invoke (load) the owning stack/design skill at each product-R&D
|
|
6
|
+
phase transition, before producing substance; naming an owner is not invoking it* — lived
|
|
7
|
+
only as prose in `product-rd-workflow/SKILL.md` (the owner-dispatch firing gate) and as
|
|
8
|
+
salience in `agent-context/session-start.md`. It recurringly **did not fire**: the failing action is
|
|
9
|
+
agent-initiated and intent-dependent, so a stronger prompt cannot enforce it.
|
|
10
|
+
|
|
11
|
+
Industry practice is unanimous that a must-happen step is enforced with a **code gate that
|
|
12
|
+
blocks, run as a separate check** — never a stronger prompt:
|
|
13
|
+
|
|
14
|
+
- Anthropic, *Building Effective Agents*: add programmatic **gates on intermediate steps**;
|
|
15
|
+
**poka-yoke** your tools; prefer deterministic control flow where steps cannot be bypassed.
|
|
16
|
+
- Claude Code **hooks**: `PreToolUse` deny/ask and `Stop`/`SubagentStop` block are enforced *at the
|
|
17
|
+
interpreter level* — "fundamentally different from asking Claude to follow a rule in a
|
|
18
|
+
system prompt".
|
|
19
|
+
- OpenAI Agents SDK **guardrails**: a tripwire raises an exception and halts the run, run as
|
|
20
|
+
a **separate** check — "deterministic enforcement rather than relying on the primary
|
|
21
|
+
model's compliance"; **Structured Outputs** / `tool_choice:"required"` make a required
|
|
22
|
+
step unskippable.
|
|
23
|
+
|
|
24
|
+
This subsystem is that gate. It mirrors the repo's existing `guard-edit-isolation.sh`
|
|
25
|
+
PreToolUse pattern and is built on the hook decision model in
|
|
26
|
+
`skills/llm-inference-integration/references/agent-lifecycle-hooks.md`.
|
|
27
|
+
|
|
28
|
+
## Surfaces (defense in depth)
|
|
29
|
+
|
|
30
|
+
| Surface | When | Hard? | Bypassable? |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| `PreToolUse` (Edit/Write/MultiEdit/NotebookEdit + Bash) → `owner-dispatch-guard.sh` | at the first product-code edit (**fires in subagents too** — Claude Code runs PreToolUse inside dispatched workers, carrying `agent_id`) | Claude: precise file edits `ask` (or `deny` if `strict`); **Bash writes are record-only — silent allow, no prompt** (they only drop an activity marker for the Stop backstop). Codex: advisory (ignores the decision). | Yes — the Bash heuristic never blocks (it over-matches read-only commands, so prompting on it is pure noise); many Bash write forms also slip it. This surface is a fast nudge on precise edits, not the gate. |
|
|
33
|
+
| `SubagentStart` → `subagent-start.sh` | when any subagent is spawned | injects a slim, **self-gating** ccl-skills routing pointer (impl/test/design/doc workers invoke their owning skill; read-only workers ignore it) — SessionStart's routing is NOT inherited by subagents, so this is their only see-it surface. Informational: SubagentStart **cannot block**. | n/a — additive context only; never overrides an owner-set the controller named in the dispatch prompt. |
|
|
34
|
+
| `Stop` / `SubagentStop` → `owner-dispatch-stop.sh` | at session/subagent end, **only if that actor actually changed gated code** (current tree diffed against a baseline snapshot taken at the first touch) with no boundary or with required owners not actually invoked | Claude: blocks **once per actor per session** — `SubagentStop` verifies `agent_transcript_path` when present; a legacy controller-transcript fallback never uses strict empty-set proof. Zero Skill calls are a miss only when the worker tool-event shape is verifiable. `agent_id` scopes activity/cap/waiver so siblings do not contaminate each other. Codex: advisory. | one-block cap + fail-open for unreadable/malformed/shape-drifted evidence + evidence-gate (read-only / rejected / reverted / pre-existing-dirty actors never block) means it never traps the user. |
|
|
35
|
+
| `ci` subcommand (pre-commit / CI) | at commit/merge | host-agnostic; rejects gated changes lacking an updated map, and rejects changes that remove/disable/malform the config or point the artifact off-tree | The durable backstop — **but only as un-bypassable as the CI job itself** (needs pipelines-must-succeed + protected branch + CODEOWNERS, per the repo deployment checklist). |
|
|
36
|
+
|
|
37
|
+
## Safety posture (every default is the safe one)
|
|
38
|
+
|
|
39
|
+
- **Opt-in, and only via a committed config.** The gate activates only when
|
|
40
|
+
`.owner-dispatch.json` is **tracked in git at the repo top-level** and `enabled:true`. An
|
|
41
|
+
untracked file, a parent-directory config, or a config in a nested non-repo cannot gate an
|
|
42
|
+
unrelated repo. No config / disabled / malformed ⇒ complete no-op. ccl-skills itself
|
|
43
|
+
ships no config (its edits are shared-skill/process edits, exempt from owner-load).
|
|
44
|
+
- **Fail-open (in-session hooks).** owner-dispatch is a process nudge, not a data-loss denial;
|
|
45
|
+
the in-session hooks never hard-block on their own failure. A missing `jq` ⇒ **silent**
|
|
46
|
+
allow (can't determine opt-in, and crying wolf on every edit would be worse). A missing or
|
|
47
|
+
malformed config ⇒ silent allow (treated as not-opted-in). An unwritable/unsafe state dir ⇒
|
|
48
|
+
allow (and `strict` downgrades to `ask`). The cheap opt-in walk runs before any git/jq, so a
|
|
49
|
+
non-opted repo pays almost nothing.
|
|
50
|
+
- **Default `ask`, not `deny`.** Hard `deny` is the explicit `strict:true` opt-in, is
|
|
51
|
+
Claude-only, and applies **only to the precise Edit/Write/MultiEdit/NotebookEdit file
|
|
52
|
+
paths** — a write-like **Bash** command is matched only heuristically (it over-matches
|
|
53
|
+
read-only commands and can never be sure), so it is **record-only: silent allow, never a
|
|
54
|
+
prompt and never a deny**, even under `strict`. The Stop hook + `ci` catch what the Bash
|
|
55
|
+
heuristic can only hint at. `strict` also downgrades to `ask` when the state dir can't be
|
|
56
|
+
written (so it can never brick a repo).
|
|
57
|
+
- **Agent self-resolves the boundary; it is not a user-authorization prompt.** The deny/ask/Stop
|
|
58
|
+
message is addressed to the **agent**: invoke the owning skills, then `record --owners` to clear
|
|
59
|
+
the boundary — do not punt it to the user as an approval. It clears **only this gate**; separate
|
|
60
|
+
user-authorized actions (merge, push, destructive cleanup, scope/product decisions) still require
|
|
61
|
+
the user. `record` takes out a **per-worktree TTL lease**, not a per-slice token: it stays
|
|
62
|
+
valid until the TTL expires as long as work continues forward from the recorded commit
|
|
63
|
+
(committing does NOT invalidate it; switching to a divergent line does). The gate cannot
|
|
64
|
+
tell two deliveries apart inside one lease, so a second slice on the same line within the
|
|
65
|
+
TTL is not re-prompted — record at the start of a slice, then edit freely, and re-record
|
|
66
|
+
when you have genuinely moved on to different work. When
|
|
67
|
+
waiving via `touch …waiver`, first classify the edit as genuinely narrow-exempt; otherwise invoke
|
|
68
|
+
owners and record.
|
|
69
|
+
- **`strict:true` is a maintainer/config decision, not an agent prompt-reduction knob, and not a
|
|
70
|
+
safety guarantee.** Flipping `strict` is committed, team-wide repo config — make it a separate
|
|
71
|
+
reviewed config-only change, never something an agent toggles inside a product edit to stop being
|
|
72
|
+
prompted. What it buys is narrow: it reduces **Claude** user prompts for *precise file-edit* hooks
|
|
73
|
+
by turning `ask` into an agent-facing `deny` the agent self-clears. It does **not** make the gate
|
|
74
|
+
safe on its own — it is fail-open, downgrades to `ask` when the state dir is unwritable, never
|
|
75
|
+
hard-denies heuristic Bash, is advisory on Codex, and does not replace CI / protected branches /
|
|
76
|
+
CODEOWNERS / human map review (the durable backstop).
|
|
77
|
+
- **Stop / SubagentStop never traps the user.** It requires a real `session_id` (fail-open
|
|
78
|
+
without one), inspects only the current `PWD` repo, blocks **at most once per actor per
|
|
79
|
+
session**, is skipped by a `waiver`, and fails open if the cap can't be persisted (read-only
|
|
80
|
+
FS). The same engine serves both events and scopes by `agent_id` (present only on
|
|
81
|
+
SubagentStop): the main Stop cap is `s.$sidf.blocked`, a subagent's is `s.$sidf.a.$aidf.blocked`
|
|
82
|
+
(independent — a subagent block never consumes the main nudge or vice versa); a **session-level
|
|
83
|
+
waiver** (`s.$sidf.waiver`) suppresses both, a **per-subagent waiver** (`s.$sidf.a.$aidf.waiver`)
|
|
84
|
+
suppresses only that subagent. It is **evidence-gated**: the main Stop blocks only when the
|
|
85
|
+
session actually changed a gated path (the current tree — committed, staged, or unstaged —
|
|
86
|
+
diffed against a baseline of HEAD + globs + content-hashed pre-session dirty paths captured at
|
|
87
|
+
the first touch, classified under baseline∪current globs); **SubagentStop is actor-precise** —
|
|
88
|
+
it blocks only when a gated path THIS subagent actually touched (its recorded Edit/Write paths)
|
|
89
|
+
is among that changed set, so a sibling's change never blames it, and a Bash-only subagent
|
|
90
|
+
(sentinel, no path list) is not attributable and is not blocked here. Read-only/dispatch-only,
|
|
91
|
+
rejected/undone, reverted/stashed-to-baseline, and untouched-pre-existing-dirty actors produce
|
|
92
|
+
no new gated change and never block. No baseline (write failed) ⇒ the **main Stop** falls
|
|
93
|
+
back to a conservative dirty-only check, while **SubagentStop cannot attribute and therefore
|
|
94
|
+
allows** (the missing per-actor evidence must not become a sibling-blaming session-wide block;
|
|
95
|
+
the session Stop / `ci` remain the backstop). Stop
|
|
96
|
+
inspects the **working tree**, so gated work parked only in the index/HEAD with the worktree
|
|
97
|
+
deliberately restored to baseline (`git add` + `git restore --worktree`; commit + `git checkout
|
|
98
|
+
<base> --`), a write the Bash heuristic never recorded (`node -e …`), a config mutation, or a
|
|
99
|
+
cross-`PWD` repo is out of this nudge's reach — `ci` (diffs base..HEAD at commit/merge) is the
|
|
100
|
+
reliable backstop for all of those. Stop is a fast in-session nudge, not the enforcement boundary.
|
|
101
|
+
- **Symlink-safe state.** State lives under `<git-dir>/owner-dispatch`; writes refuse/replace
|
|
102
|
+
symlinked paths and use `mktemp`+atomic-rename. (Residual TOCTOU there requires write access
|
|
103
|
+
to your `.git` — at which point the attacker already owns the repo.)
|
|
104
|
+
- **Boundary records** are bound to repo root + expiry + **HEAD continuity**, under the
|
|
105
|
+
per-worktree git dir (never committed). A hand-moved or expired record no longer counts.
|
|
106
|
+
**Validity requires the recorded `.head` to be an ANCESTOR of the current HEAD, not equal to
|
|
107
|
+
it.** Equality was wrong because the gate demands recording before the first gated edit while
|
|
108
|
+
a delivery's own commit lands after it — so equality invalidated the boundary of every
|
|
109
|
+
delivery that commits, and the only strategy that satisfied it was re-recording at session
|
|
110
|
+
end, i.e. post-hoc attestation. Dropping the HEAD condition entirely was also wrong: equality
|
|
111
|
+
was incidentally catching history discontinuities (branch switch, reset, amend, rebase), which
|
|
112
|
+
genuinely are different work. So `.head` is **gate-critical**, not decoration — it is the
|
|
113
|
+
anchor the continuity check is evaluated against, with replacement refs disabled so a
|
|
114
|
+
`git replace --graft` cannot fake ancestry. An unusable recorded head fails closed.
|
|
115
|
+
- **The TTL is the only thing that ages a boundary out** on a continuous line of work — reuse is
|
|
116
|
+
still scoped to a valid record for the same repo root, under that worktree's own git dir, on a
|
|
117
|
+
descendant of the recorded commit. Within those bounds a *different* actor
|
|
118
|
+
inherits an existing boundary: PreToolUse does not read the transcript at all, and Stop's
|
|
119
|
+
invocation check clears that actor too whenever it invoked the same owner names — which is
|
|
120
|
+
the normal case for a repo with a stable owner set. So "record before first edit" is not
|
|
121
|
+
enforced per-actor; treat the boundary as a per-worktree, time-bounded record.
|
|
122
|
+
- **`record` is in-session self-attestation** — `record --owners "…"` is trusted, not verified
|
|
123
|
+
against actual owner invocation; it unblocks editing until the TTL expires. The real
|
|
124
|
+
verification is the human/CI **map artifact**, checked by `ci`.
|
|
125
|
+
|
|
126
|
+
## Bootstrap a repo (one-click)
|
|
127
|
+
|
|
128
|
+
`install-gates` vendors the gate **mechanics** into a product repo in one step — the engine
|
|
129
|
+
script, a default config, and a warn-only CI fragment. It installs **both** repo-local gates
|
|
130
|
+
(`owner-dispatch` and `agents-file-coverage-gate`) since they share the same vendor-and-wire shape;
|
|
131
|
+
pass `--gates owner-dispatch` for this gate alone.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
make install-gates TARGET=/path/to/product-repo # both gates, warn-only
|
|
135
|
+
# or: bash scripts/install-gates.sh /path/to/product-repo [--gates owner-dispatch]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
What it does for owner-dispatch:
|
|
139
|
+
|
|
140
|
+
- vendors `scripts/owner-dispatch/owner-dispatch.sh` into the target (CI/hooks can't reach the
|
|
141
|
+
plugin cache, so the engine must live in-tree); re-running **refreshes** it to the current
|
|
142
|
+
plugin version (fixes drift) and **never** overwrites an existing `.owner-dispatch.json`;
|
|
143
|
+
- writes a default `.owner-dispatch.json` with **`enabled:false`** — the gate is a complete
|
|
144
|
+
no-op until you deliberately turn it on. The default `product_globs` are a generic guess the
|
|
145
|
+
installer cannot verify against your layout;
|
|
146
|
+
- generates `ci/agent-gates.gitlab-ci.yml` with the owner-dispatch `ci` job scoped to **MR
|
|
147
|
+
pipelines** (`$CI_MERGE_REQUEST_IID`) so the diff base SHA always exists — no shallow-clone
|
|
148
|
+
`merge-base` guesswork — and `allow_failure: true` so a fresh repo never breaks.
|
|
149
|
+
|
|
150
|
+
It installs **mechanics, not obligations** — it cannot write your real `product_globs`, the
|
|
151
|
+
owner-dispatch map a gated change owes, or decide the enforce flip. Finish the rollout by hand:
|
|
152
|
+
|
|
153
|
+
1. Edit `product_globs` / `exclude_globs` to this repo's source layout, then **prove the globs
|
|
154
|
+
match** — `owner-dispatch.sh status` only shows opt-in/boundary state, it does not exercise
|
|
155
|
+
the gate. After you enable+commit the config, run `owner-dispatch.sh ci --base <sha>` on a
|
|
156
|
+
branch that edits a real gated file and confirm it classifies that file as gated (a generic
|
|
157
|
+
glob can silently gate nothing — see *Writing globs* below).
|
|
158
|
+
2. Flip `enabled:true` in a **separate config-only change** (no gated product files in that
|
|
159
|
+
diff, so it passes `ci` cleanly), then add `include: { local: ci/agent-gates.gitlab-ci.yml }`
|
|
160
|
+
to `.gitlab-ci.yml`.
|
|
161
|
+
3. To **enforce** (block, not warn): once contracts/maps exist, remove `allow_failure` from the
|
|
162
|
+
CI job (a deliberate, separately-reviewed change — the installer never does this for you).
|
|
163
|
+
Enabling on a repo with pending gated changes owes a map in that same MR — keep the install
|
|
164
|
+
change and the product change separate.
|
|
165
|
+
|
|
166
|
+
## Usage
|
|
167
|
+
|
|
168
|
+
Or opt a **product** repo in by hand (what `install-gates` automates):
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
cp <plugin>/scripts/owner-dispatch/owner-dispatch.example.json <product-repo>/.owner-dispatch.json
|
|
172
|
+
# edit product_globs / exclude_globs / strict / ci_artifact, then commit it
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The owner, after invoking the owning skills and building the owner-dispatch map, records the
|
|
176
|
+
boundary so editing is unblocked:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
scripts/owner-dispatch/owner-dispatch.sh record --owners "product-rd-workflow,go-microservice-dev"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Wire the host-agnostic backstop into the product repo's CI / pre-commit:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
scripts/owner-dispatch/owner-dispatch.sh ci --base "$CI_MERGE_REQUEST_DIFF_BASE_SHA"
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Inspect state: `scripts/owner-dispatch/owner-dispatch.sh status`.
|
|
189
|
+
|
|
190
|
+
### Writing `product_globs` / `exclude_globs`
|
|
191
|
+
|
|
192
|
+
Globs are matched with bash `case` (extglob). Two semantics to know:
|
|
193
|
+
|
|
194
|
+
- `*` **crosses `/`** (unlike shell pathname globbing), so `src/**` matches `src/a.go`
|
|
195
|
+
**and** `src/a/b/c.go` at any depth, and `**/*.go` matches any `.go` file that has a
|
|
196
|
+
slash at any depth.
|
|
197
|
+
- A **leading `**/`** means *zero or more directories*: `**/*.go` gates a repo-**root**
|
|
198
|
+
`main.go` as well as `pkg/a/b.go`. (The engine special-cases this; bash `case` is not
|
|
199
|
+
globstar-aware on its own.) This applies to **both** `product_globs` and `exclude_globs`
|
|
200
|
+
uniformly — so `**/*_test.go` in excludes also excludes a root `foo_test.go`. Because a
|
|
201
|
+
`**/`-prefixed **exclude** therefore covers the root-level file too, size excludes to
|
|
202
|
+
intent (`**/generated.go` excludes `generated.go` at every depth **including the root**).
|
|
203
|
+
|
|
204
|
+
Gotcha: to gate a **top-level** product file, use `**/*.go` (or a bare `*.go`) — a
|
|
205
|
+
dir-prefixed glob like `src/**` only covers files under that directory. A repo whose
|
|
206
|
+
production code lives at the root with a `["src/**"]`-style config silently gates
|
|
207
|
+
nothing. Verify a new config against a **real** product file: a gated edit must `ask`
|
|
208
|
+
(`owner-dispatch.sh status` + a dry `pretool`/`ci`), not just trust the glob.
|
|
209
|
+
|
|
210
|
+
### What `ci` enforces (and its limits)
|
|
211
|
+
|
|
212
|
+
Exit codes: **0** = ok / not-opted-in / clean config-only decommit; **1** = violation;
|
|
213
|
+
**2** = could-not-verify (a gating CI job must treat 2 as failure). `ci` fails **closed**.
|
|
214
|
+
|
|
215
|
+
It rejects, when gated product files changed in the diff:
|
|
216
|
+
- a missing or stale (not-updated-in-this-change) map artifact;
|
|
217
|
+
- an `enabled` config that is schema-invalid (`product_globs` not a non-empty string array, etc.);
|
|
218
|
+
- a `ci_artifact` that is unsafe (`..`/absolute), is the config file, or points at product code
|
|
219
|
+
/ a gated changed file (so a change to that file can't self-satisfy the gate);
|
|
220
|
+
- a change that disables/removes the config **and** touches gated code (disabling the gate must
|
|
221
|
+
be a separate, reviewed, config-only commit);
|
|
222
|
+
- a change that shrinks `product_globs` / widens excludes to dodge — files are classified against
|
|
223
|
+
the **union of base and head** globs, so **config-contract changes must land in their own
|
|
224
|
+
commit**, separate from the product change they would re-scope.
|
|
225
|
+
|
|
226
|
+
It does **not** validate the map's semantic content (that the listed owners actually cover the
|
|
227
|
+
gated files) — that stays reviewer/owner judgment. And it is only as un-bypassable as the CI job
|
|
228
|
+
itself (needs pipelines-must-succeed + protected branch + CODEOWNERS on the config).
|
|
229
|
+
|
|
230
|
+
### Invocation evidence (name ≠ invoke)
|
|
231
|
+
|
|
232
|
+
`record --owners "a,b"` stores owner *names*; it cannot itself prove those owners were
|
|
233
|
+
actually **invoked** (loaded) this session — "naming an owner is not invoking it" was
|
|
234
|
+
recognition-dependent. The Stop hook now closes that mechanically: main `Stop` reads
|
|
235
|
+
`transcript_path`; `SubagentStop` reads the worker-only `agent_transcript_path` (falling back
|
|
236
|
+
only for older hosts that omit it). It parses real `Skill` tool invocations and blocks once
|
|
237
|
+
when a recorded skill-shaped owner was never loaded.
|
|
238
|
+
|
|
239
|
+
- **Reliable firing point = the Stop hook** (it gets the host transcript path on stdin; a plain
|
|
240
|
+
CLI cannot reliably locate the transcript). `owner-dispatch.sh verify-invocations
|
|
241
|
+
--owners "a,b" --transcript PATH [--empty-is-missing]` exposes the same check for tests/host
|
|
242
|
+
adapters (exit 3 = a skill-shaped owner was never invoked).
|
|
243
|
+
- **Worker-empty is evidence only under a verified shape**: a worker transcript with at
|
|
244
|
+
least one recognized assistant tool event, no malformed Skill block, and zero Skill calls
|
|
245
|
+
reports every required skill-shaped owner as missing. No transcript, malformed-only
|
|
246
|
+
evidence, or a visible Skill block whose input shape drifted stays fail-open. A legacy
|
|
247
|
+
SubagentStop fallback to the main transcript also keeps empty-set fail-open. Main-session behavior remains backward
|
|
248
|
+
compatible. The same block-once-per-actor cap, waiver, AND actual-gated-change
|
|
249
|
+
requirement as the boundary-missing block, so a no-change / reverted / read-only
|
|
250
|
+
session is never blocked even with a valid boundary present.
|
|
251
|
+
- **Native preload is not transcript evidence.** A custom worker may receive skill content
|
|
252
|
+
at startup without a `Skill` tool event. For a write worker governed by this audit, keep
|
|
253
|
+
the preload but explicitly invoke each required owner once before substance; the one-time
|
|
254
|
+
continuation message makes the worker normalize that evidence itself, never the user.
|
|
255
|
+
- **Only skill-shaped owner tokens are checked** (a single kebab token, no spaces), so a
|
|
256
|
+
free-text reference like "then the touched owner" never false-flags; a kebab token that
|
|
257
|
+
is a non-skill reference is a possible false match, which the block message calls out
|
|
258
|
+
("if it is a non-skill reference, proceed").
|
|
259
|
+
- The Skill invocation JSONL shape (`message.content[].type=="tool_use"`, `name=="Skill"`,
|
|
260
|
+
`input.skill=="<plugin>:<name>"`, in `type=="assistant"` events only) is an observed Claude Code format; a format change
|
|
261
|
+
with no parseable JSON events degrades to fail-open, never to a wrong
|
|
262
|
+
verdict.
|
|
263
|
+
|
|
264
|
+
### Strict mode escape
|
|
265
|
+
|
|
266
|
+
Under `strict:true` a precise gated edit is hard-denied (Claude only). If an edit is a genuinely
|
|
267
|
+
narrow exempt change (single bug/test/doc/config), the deny message names a per-session escape — `touch
|
|
268
|
+
<state-dir>/s.<session>.waiver` — so strict can never brick a legitimate edit. Classify the edit as
|
|
269
|
+
narrow-exempt first; if it is real product/delivery work, invoke the owners and `record` instead of
|
|
270
|
+
waiving.
|
|
271
|
+
|
|
272
|
+
## Tests
|
|
273
|
+
|
|
274
|
+
`bash scripts/owner-dispatch/test.sh` runs the RED→GREEN behavioral suite (baseline: no
|
|
275
|
+
config ⇒ silent allow; with config ⇒ gate fires; with boundary ⇒ allow; strict ⇒ deny; Stop
|
|
276
|
+
cap; CI mode).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Copy to a PRODUCT repo root as `.owner-dispatch.json` and commit it to opt that repo into the owner-dispatch firing gate. Absent or enabled:false => the gate is a complete no-op. ccl-skills itself is NOT a product repo and intentionally ships no such file (its own edits are shared-skill/process edits, exempt from owner-load).",
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"strict": false,
|
|
5
|
+
"gate_bash": true,
|
|
6
|
+
"product_globs": ["src/**", "internal/**", "app/**", "pkg/**", "cmd/**"],
|
|
7
|
+
"exclude_globs": ["**/*_test.*", "**/*.test.*", "test/**", "tests/**", "docs/**", "**/testdata/**", "**/*.gen.*"],
|
|
8
|
+
"ci_artifact": "design/owner-dispatch-map.md",
|
|
9
|
+
"owner_hint": "product-rd-workflow, then the touched stack owner (*-dev / *-architecture / testing-strategy / product-ui-ux-design)"
|
|
10
|
+
}
|