@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,414 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Production-wiring regression for the register firing-path gate.
|
|
3
|
+
#
|
|
4
|
+
# test_register_firing_path_resolution.sh exercises the Ruby gate DIRECTLY, so it
|
|
5
|
+
# stays green even if the `ruby "$firing_path_gate" "$root"` line is deleted from
|
|
6
|
+
# check-ccl-skills.sh — the gate would be unreachable in production while its
|
|
7
|
+
# own suite reported success. That is the same unregistered-suite false green this
|
|
8
|
+
# repository has hit before, one layer up: registered, passing, and enforcing
|
|
9
|
+
# nothing. This test closes it by driving the checker ENTRYPOINT.
|
|
10
|
+
#
|
|
11
|
+
# ALIAS_AUDIT_CMD=true stands in for a passing private R0 audit so the assertion
|
|
12
|
+
# isolates firing-path enforcement from the separate R0 interim path.
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
16
|
+
CHECK_SCRIPT="$SCRIPT_DIR/check-ccl-skills.sh"
|
|
17
|
+
[ -f "$CHECK_SCRIPT" ] || { echo "FAIL: checker not found: $CHECK_SCRIPT" >&2; exit 1; }
|
|
18
|
+
ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd -P)"
|
|
19
|
+
|
|
20
|
+
TMP="$(mktemp -d "${TMPDIR:-/tmp}/regfiringwire.XXXXXX")"
|
|
21
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
22
|
+
|
|
23
|
+
passed=0
|
|
24
|
+
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
25
|
+
pass() { passed=$((passed + 1)); echo "PASS: $*"; }
|
|
26
|
+
|
|
27
|
+
# Static/executed three-way pin: the tail guard's literal must equal the
|
|
28
|
+
# script's own pass-call inventory, so a dropped or added case cannot leave the
|
|
29
|
+
# guard silently stale again (the observed drift shape: a 16 guarding 13
|
|
30
|
+
# executed cases, accumulated while this suite could not run).
|
|
31
|
+
static_pass_calls="$(grep -c '^pass "' "$0")"
|
|
32
|
+
[ "$static_pass_calls" = "14" ] \
|
|
33
|
+
|| fail "pass-call inventory drifted: counted $static_pass_calls, guard expects 14"
|
|
34
|
+
pass "executed-count guard matches the script's own pass-call inventory"
|
|
35
|
+
|
|
36
|
+
REPO="$TMP/repo"
|
|
37
|
+
git clone -q "$ROOT" "$REPO"
|
|
38
|
+
git -C "$REPO" config user.email test@example.invalid
|
|
39
|
+
git -C "$REPO" config user.name "Test User"
|
|
40
|
+
# Give the clone its own base branch and upstream, the same fixture shape the
|
|
41
|
+
# sibling register tests use. The checker resolves its diff base from
|
|
42
|
+
# `@{upstream}` and falls back to `origin/main`; a clone made while CI has the
|
|
43
|
+
# project checked out at a DETACHED HEAD carries neither, so impact-chain fails
|
|
44
|
+
# closed with `impact_chain_merge_base_missing: origin/main` and this test would
|
|
45
|
+
# red for a reason unrelated to the wiring it asserts. Pinning
|
|
46
|
+
# CCL_SKILL_BASE_REF=HEAD instead is NOT equivalent: it makes the
|
|
47
|
+
# evidence-card detector's self-test take its no-base branch and fail
|
|
48
|
+
# (`no-base clean changed-scope should be degraded`). A real branch with a real
|
|
49
|
+
# upstream keeps every other gate on its normal path.
|
|
50
|
+
git -C "$REPO" branch -f fixture-base HEAD
|
|
51
|
+
git -C "$REPO" switch -q -C fixture-work fixture-base
|
|
52
|
+
git -C "$REPO" branch --set-upstream-to=fixture-base fixture-work >/dev/null 2>&1
|
|
53
|
+
REGISTER="$REPO/skills/skill-extraction-workflow/references/source-register.md"
|
|
54
|
+
[ -f "$REGISTER" ] || fail "cloned register missing: $REGISTER"
|
|
55
|
+
|
|
56
|
+
# The distributed register starts as a source-neutral template. Add one live,
|
|
57
|
+
# repository-local locator to this clone so the wiring test can mutate a real
|
|
58
|
+
# anchor without shipping task provenance in the published repository. The
|
|
59
|
+
# anchor lives in a note file THIS FIXTURE writes and commits itself, so every
|
|
60
|
+
# byte of the anchor vocabulary is suite-owned: the previous design pinned a
|
|
61
|
+
# README heading literal (stale the moment the README evolved, undetected while
|
|
62
|
+
# the heavy lane never ran), and the replacement runtime-derivation grew a
|
|
63
|
+
# fence-parsing surface that produced same-class findings across two adversarial
|
|
64
|
+
# rounds (fenced decoy, mixed-marker fence, close-suffix recognition) — parsing
|
|
65
|
+
# an artifact the suite does not own was the defect class, so the capability is
|
|
66
|
+
# deleted rather than hardened further.
|
|
67
|
+
FIXTURE_NOTE_REL="skills/skill-extraction-workflow/references/wiring-fixture-note.md"
|
|
68
|
+
FIXTURE_ANCHOR="Wiring fixture anchor heading for the resolution gate"
|
|
69
|
+
printf '# %s\n\nSynthetic fixture note committed by the wiring suite; the heading above is the seeded firing-path anchor.\n' \
|
|
70
|
+
"$FIXTURE_ANCHOR" > "$REPO/$FIXTURE_NOTE_REL"
|
|
71
|
+
printf '| wiring fixture | firing-path: file:%s#%s | `updated` | synthetic test |\n' \
|
|
72
|
+
"$FIXTURE_NOTE_REL" "$FIXTURE_ANCHOR" >> "$REGISTER"
|
|
73
|
+
git -C "$REPO" add "$REGISTER" "$FIXTURE_NOTE_REL"
|
|
74
|
+
git -C "$REPO" commit -qm "Add wiring fixture"
|
|
75
|
+
git -C "$REPO" branch -f fixture-base HEAD
|
|
76
|
+
|
|
77
|
+
run_check() {
|
|
78
|
+
set +e
|
|
79
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' bash "$CHECK_SCRIPT" "$REPO" 2>&1)"
|
|
80
|
+
rc=$?
|
|
81
|
+
set -e
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# Always show the checker's own output when an assertion fails; without this a
|
|
85
|
+
# CI red says only "got rc=1" and the actual cause has to be re-derived by hand.
|
|
86
|
+
dump() { printf '%s\n' "--- checker output (rc=$rc) ---" "$out" | tail -25 >&2; }
|
|
87
|
+
|
|
88
|
+
# ── Control: the pristine clone passes and the gate's token is emitted ───────
|
|
89
|
+
run_check
|
|
90
|
+
[ "$rc" = "0" ] || { dump; fail "pristine clone should pass the checker, got rc=$rc"; }
|
|
91
|
+
case "$out" in
|
|
92
|
+
*register_firing_path_resolution_ok*) : ;;
|
|
93
|
+
*) dump; fail "checker did not emit the firing-path gate token — the gate is not wired in" ;;
|
|
94
|
+
esac
|
|
95
|
+
pass "checker entrypoint runs the firing-path gate on a clean tree"
|
|
96
|
+
|
|
97
|
+
# ── RED: break a historical anchor; the CHECKER (not just the gate) must fail ─
|
|
98
|
+
# Reproduces the observed shape: an anchored rule reworded after its row landed.
|
|
99
|
+
anchor_line="$(grep -m1 -o 'firing-path: file:[^|;]*#[^|;]*' "$REGISTER")"
|
|
100
|
+
[ -n "$anchor_line" ] || fail "no file: anchor found in the cloned register"
|
|
101
|
+
target_rel="${anchor_line#firing-path: file:}"; target_rel="${target_rel%%#*}"
|
|
102
|
+
anchor_text="${anchor_line#*#}"
|
|
103
|
+
target="$REPO/$target_rel"
|
|
104
|
+
[ -f "$target" ] || fail "anchor target missing in clone: $target"
|
|
105
|
+
python3 - "$target" "$anchor_text" <<'PY'
|
|
106
|
+
import sys
|
|
107
|
+
p, anchor = sys.argv[1], sys.argv[2].strip()
|
|
108
|
+
s = open(p, encoding="utf-8").read()
|
|
109
|
+
assert anchor in s, "fixture precondition failed: anchor not present before mutation"
|
|
110
|
+
# Rewrite the anchor's TAIL. Appending would leave the original anchor intact as
|
|
111
|
+
# a substring, so the fixture would assert nothing while looking like a mutation.
|
|
112
|
+
assert len(anchor) > 12, "anchor too short to mutate safely"
|
|
113
|
+
mutated = anchor[:-8] + "ZZQXZZQX"
|
|
114
|
+
s2 = s.replace(anchor, mutated, 1)
|
|
115
|
+
assert anchor not in s2, "fixture failed to remove the anchor — mutation is a no-op"
|
|
116
|
+
open(p, "w", encoding="utf-8").write(s2)
|
|
117
|
+
PY
|
|
118
|
+
run_check
|
|
119
|
+
[ "$rc" != "0" ] || { dump; fail "checker must FAIL when a historical firing-path anchor no longer resolves"; }
|
|
120
|
+
case "$out" in
|
|
121
|
+
*register_firing_path_unresolved*) : ;;
|
|
122
|
+
*) dump; fail "checker failed, but not via the firing-path gate (wrong-reason RED)" ;;
|
|
123
|
+
esac
|
|
124
|
+
pass "reworded historical anchor turns the CHECKER ENTRYPOINT red for the right reason"
|
|
125
|
+
|
|
126
|
+
# ── RED: rc=0 without the gate's terminal token must NOT read as a pass ──────
|
|
127
|
+
# A clean rc has to pair with a clean terminal line. A gate that dies quietly
|
|
128
|
+
# after `set -e` is disarmed inside it, or whose token gets reworded, still
|
|
129
|
+
# exits 0 — and a bare `ruby "$gate" "$root"` call site cannot tell that apart
|
|
130
|
+
# from a real clean run, so the checker certifies a gate that never adjudicated
|
|
131
|
+
# anything. The stub reproduces exactly that: exit 0, print nothing.
|
|
132
|
+
#
|
|
133
|
+
# The call site resolves the gate from the CHECKER's own directory, not from
|
|
134
|
+
# $root, so stubbing the clone's copy would be a no-op — the fixture has to
|
|
135
|
+
# drive a checker whose sibling scripts dir it owns.
|
|
136
|
+
STUB_SCRIPTS="$TMP/stubscripts"
|
|
137
|
+
cp -R "$SCRIPT_DIR" "$STUB_SCRIPTS"
|
|
138
|
+
STUB_CHECK="$STUB_SCRIPTS/check-ccl-skills.sh"
|
|
139
|
+
STUB_GATE="$STUB_SCRIPTS/register-firing-path-resolution.rb"
|
|
140
|
+
[ -f "$STUB_GATE" ] || fail "stub scripts dir missing the firing-path gate: $STUB_GATE"
|
|
141
|
+
printf '%s\n' '#!/usr/bin/env ruby' 'exit 0' > "$STUB_GATE"
|
|
142
|
+
|
|
143
|
+
run_stub_check() {
|
|
144
|
+
set +e
|
|
145
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' bash "$STUB_CHECK" "$REPO" 2>&1)"
|
|
146
|
+
rc=$?
|
|
147
|
+
set -e
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
# The clone still carries the r1 anchor mutation from the RED above; restore it
|
|
151
|
+
# so this assertion isolates the silent-rc-0 path from the unresolved-anchor one.
|
|
152
|
+
git -C "$REPO" checkout -- . >/dev/null 2>&1 || fail "could not restore the clone before the stub case"
|
|
153
|
+
run_stub_check
|
|
154
|
+
[ "$rc" = "2" ] || { dump; fail "a gate exiting 0 with no terminal token must fail closed as rc=2, got rc=$rc"; }
|
|
155
|
+
case "$out" in
|
|
156
|
+
*register_firing_path_terminal_missing*) : ;;
|
|
157
|
+
*) dump; fail "checker rejected the silent gate, but not via the terminal-token contract (wrong-reason RED)" ;;
|
|
158
|
+
esac
|
|
159
|
+
case "$out" in
|
|
160
|
+
*ccl_skill_check_clean_ok*) dump; fail "a silent gate must never yield a clean-landing token" ;;
|
|
161
|
+
*) : ;;
|
|
162
|
+
esac
|
|
163
|
+
pass "gate rc=0 without its terminal token fails closed instead of certifying a pass"
|
|
164
|
+
|
|
165
|
+
# ── RED: a non-git root must not print a clean-landing token ─────────────────
|
|
166
|
+
# Every gate above (impact-chain, firing-path resolution, register pending
|
|
167
|
+
# status, diff --check) sits inside `if git rev-parse --is-inside-work-tree`.
|
|
168
|
+
# On an exported copy / build artifact directory that branch is simply skipped,
|
|
169
|
+
# and with nothing marking the skip the run still reaches the clean token — four
|
|
170
|
+
# gates silently not run, reported as a clean landing. Skip must never read as
|
|
171
|
+
# clean (same honesty shape as the size gate's `*_unevaluated` token).
|
|
172
|
+
NONGIT="$TMP/nongit"
|
|
173
|
+
mkdir -p "$NONGIT"
|
|
174
|
+
git -C "$REPO" archive HEAD | tar -x -C "$NONGIT"
|
|
175
|
+
[ -d "$NONGIT/skills" ] || fail "non-git fixture export produced no skills/ tree"
|
|
176
|
+
[ ! -e "$NONGIT/.git" ] || fail "non-git fixture is still a git work tree"
|
|
177
|
+
|
|
178
|
+
set +e
|
|
179
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' bash "$CHECK_SCRIPT" "$NONGIT" 2>&1)"
|
|
180
|
+
rc=$?
|
|
181
|
+
set -e
|
|
182
|
+
case "$out" in
|
|
183
|
+
*ccl_skill_check_clean_ok*) dump; fail "a non-git root skips the git-dependent gates — it must not report a clean landing" ;;
|
|
184
|
+
*) : ;;
|
|
185
|
+
esac
|
|
186
|
+
case "$out" in
|
|
187
|
+
*ccl_skill_check_interim_ok*) : ;;
|
|
188
|
+
*) dump; fail "a non-git root should downgrade to interim, saw neither clean nor interim token" ;;
|
|
189
|
+
esac
|
|
190
|
+
case "$out" in
|
|
191
|
+
*"not a git work tree"*) : ;;
|
|
192
|
+
*) dump; fail "the interim downgrade must name the skipped git-dependent gates" ;;
|
|
193
|
+
esac
|
|
194
|
+
pass "non-git root downgrades to interim instead of silently reporting clean"
|
|
195
|
+
|
|
196
|
+
# ── RED: an export nested INSIDE another checkout is not a clean landing ─────
|
|
197
|
+
# `--is-inside-work-tree` answers true for a directory that merely sits under
|
|
198
|
+
# some other repository, so a bare inside-work-tree predicate lets the four
|
|
199
|
+
# git-dependent gates adjudicate the ENCLOSING repository's state while reading
|
|
200
|
+
# this directory's files — the wrong tree, reported clean. $root must be the
|
|
201
|
+
# work tree's own top level.
|
|
202
|
+
NESTED="$REPO/nested-export-fixture"
|
|
203
|
+
mkdir -p "$NESTED"
|
|
204
|
+
git -C "$REPO" archive HEAD | tar -x -C "$NESTED"
|
|
205
|
+
[ -d "$NESTED/skills" ] || fail "nested fixture export produced no skills/ tree"
|
|
206
|
+
[ "$(git -C "$NESTED" rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] \
|
|
207
|
+
|| fail "nested fixture precondition failed: git does not consider it inside a work tree"
|
|
208
|
+
[ "$(git -C "$NESTED" rev-parse --show-toplevel 2>/dev/null)" != "$NESTED" ] \
|
|
209
|
+
|| fail "nested fixture precondition failed: it IS its own toplevel, so nothing is being tested"
|
|
210
|
+
|
|
211
|
+
set +e
|
|
212
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' bash "$CHECK_SCRIPT" "$NESTED" 2>&1)"
|
|
213
|
+
rc=$?
|
|
214
|
+
set -e
|
|
215
|
+
case "$out" in
|
|
216
|
+
*ccl_skill_check_clean_ok*) dump; fail "an export nested inside another checkout must not report a clean landing" ;;
|
|
217
|
+
*) : ;;
|
|
218
|
+
esac
|
|
219
|
+
case "$out" in
|
|
220
|
+
*"not a git work tree root"*) : ;;
|
|
221
|
+
*) dump; fail "the nested-export downgrade must name the skipped git-dependent gates" ;;
|
|
222
|
+
esac
|
|
223
|
+
# "Downgraded" means it reached a SUCCESSFUL interim verdict. Asserting only the
|
|
224
|
+
# absence of the clean token would also accept an unrelated hard failure.
|
|
225
|
+
[ "$rc" = "0" ] || { dump; fail "the nested-export downgrade must still succeed, got rc=$rc"; }
|
|
226
|
+
case "$out" in
|
|
227
|
+
*ccl_skill_check_interim_ok*) : ;;
|
|
228
|
+
*) dump; fail "the nested-export run must end on the interim token, not merely lack the clean one" ;;
|
|
229
|
+
esac
|
|
230
|
+
pass "export nested inside another checkout downgrades instead of adjudicating the enclosing repo"
|
|
231
|
+
|
|
232
|
+
# ── RED: a TRUNCATED terminal line is a malfunction, not a pass ──────────────
|
|
233
|
+
# The shape a gate crashing mid-print actually produces. An unanchored substring
|
|
234
|
+
# check accepts it, which would defeat the terminal-token contract above.
|
|
235
|
+
printf '%s\n' '#!/usr/bin/env ruby' \
|
|
236
|
+
'print "register_firing_path_resolution_ok (269 locators resolved"' \
|
|
237
|
+
'exit 0' > "$STUB_GATE"
|
|
238
|
+
run_stub_check
|
|
239
|
+
[ "$rc" = "2" ] || { dump; fail "a truncated terminal line must fail closed as rc=2, got rc=$rc"; }
|
|
240
|
+
assert_out_has_terminal_missing() {
|
|
241
|
+
case "$out" in
|
|
242
|
+
*register_firing_path_terminal_missing*) : ;;
|
|
243
|
+
*) dump; fail "truncated terminal line rejected, but not via the terminal-token contract" ;;
|
|
244
|
+
esac
|
|
245
|
+
}
|
|
246
|
+
assert_out_has_terminal_missing
|
|
247
|
+
pass "truncated gate terminal line fails closed instead of matching as a substring"
|
|
248
|
+
|
|
249
|
+
# ── RED: bulk output BEFORE a valid token must NOT read as missing ──────────
|
|
250
|
+
# The false-RED direction of the contract. Under `pipefail`, a `printf | grep -q`
|
|
251
|
+
# form has the writer take SIGPIPE once grep short-circuits, so the pipeline
|
|
252
|
+
# reports 141 and a gate that DID emit its token gets rejected as malfunctioning.
|
|
253
|
+
# The bulk goes BEFORE the token because the terminal line must stay last — the
|
|
254
|
+
# two properties are checked together on purpose, so neither can be satisfied by
|
|
255
|
+
# weakening the other. 50k lines is 4,538,890 bytes (measured), well past the
|
|
256
|
+
# 64 KiB pipe buffer where SIGPIPE starts.
|
|
257
|
+
printf '%s\n' '#!/usr/bin/env ruby' \
|
|
258
|
+
'50_000.times { |i| puts "leading diagnostic line #{i} " + ("x" * 60) }' \
|
|
259
|
+
'puts "register_firing_path_resolution_ok (271 locators resolved)"' \
|
|
260
|
+
'exit 0' > "$STUB_GATE"
|
|
261
|
+
run_stub_check
|
|
262
|
+
case "$out" in
|
|
263
|
+
*register_firing_path_terminal_missing*) dump; fail "a complete terminal line preceded by bulk output must not be reported as missing (SIGPIPE false RED)" ;;
|
|
264
|
+
*) : ;;
|
|
265
|
+
esac
|
|
266
|
+
# Assert the SUCCESS, not merely the absence of rc=2: `!= 2` would also accept a
|
|
267
|
+
# false red arriving as 1/126/127/141 — including the very SIGPIPE status this
|
|
268
|
+
# case exists to rule out.
|
|
269
|
+
[ "$rc" = "0" ] || { dump; fail "bulk output preceding a valid terminal line must still pass, got rc=$rc"; }
|
|
270
|
+
case "$out" in
|
|
271
|
+
*ccl_skill_check_clean_ok*) : ;;
|
|
272
|
+
*) dump; fail "a valid terminal line plus bulk output must still reach the clean-landing token" ;;
|
|
273
|
+
esac
|
|
274
|
+
pass "valid terminal line survives bulk preceding output (no pipefail/SIGPIPE false RED)"
|
|
275
|
+
|
|
276
|
+
# ── RED: a token that is NOT the last line must not certify a clean run ─────
|
|
277
|
+
# The shape of a gate that reached its terminal line and then died on a later
|
|
278
|
+
# path. An any-line match accepts it; the last-line contract does not.
|
|
279
|
+
printf '%s\n' '#!/usr/bin/env ruby' \
|
|
280
|
+
'puts "register_firing_path_resolution_ok (271 locators resolved)"' \
|
|
281
|
+
'puts "post-terminal work continued and produced this"' \
|
|
282
|
+
'exit 0' > "$STUB_GATE"
|
|
283
|
+
run_stub_check
|
|
284
|
+
[ "$rc" = "2" ] || { dump; fail "a token followed by further stdout must fail closed as rc=2, got rc=$rc"; }
|
|
285
|
+
case "$out" in
|
|
286
|
+
*register_firing_path_terminal_missing*) : ;;
|
|
287
|
+
*) dump; fail "non-terminal token rejected, but not via the terminal-token contract" ;;
|
|
288
|
+
esac
|
|
289
|
+
pass "a token that is not the last stdout line fails closed"
|
|
290
|
+
|
|
291
|
+
# ── RED: an undiagnosed non-zero rc is infra failure, not a ledger violation ─
|
|
292
|
+
# A Ruby syntax error, an uncaught exception, and a silent `exit 1` all arrive
|
|
293
|
+
# as rc=1. Forwarding that as rc=1 tells CI "the ledger is wrong" when the truth
|
|
294
|
+
# is "the gate did not run" — and leaves no diagnosable cause in the log.
|
|
295
|
+
printf '%s\n' '#!/usr/bin/env ruby' 'exit 1' > "$STUB_GATE"
|
|
296
|
+
run_stub_check
|
|
297
|
+
[ "$rc" = "2" ] || { dump; fail "a silent rc=1 must be re-tiered to rc=2, got rc=$rc"; }
|
|
298
|
+
case "$out" in
|
|
299
|
+
*register_firing_path_gate_failed*) : ;;
|
|
300
|
+
*) dump; fail "silent rc=1 rejected, but not via the gate-failure tier" ;;
|
|
301
|
+
esac
|
|
302
|
+
pass "undiagnosed non-zero rc is re-tiered as gate failure, not a ledger violation"
|
|
303
|
+
|
|
304
|
+
# GREEN control: a DIAGNOSED rc=1 must still pass through as a rule failure, so
|
|
305
|
+
# the re-tiering above cannot be satisfied by mapping every failure to rc=2.
|
|
306
|
+
printf '%s\n' '#!/usr/bin/env ruby' \
|
|
307
|
+
'warn "register_firing_path_unresolved: a recorded firing path no longer resolves"' \
|
|
308
|
+
'warn " fixture-source.md:1: anchor text absent from target: file:demo#anchor"' \
|
|
309
|
+
'exit 1' > "$STUB_GATE"
|
|
310
|
+
run_stub_check
|
|
311
|
+
[ "$rc" = "1" ] || { dump; fail "a diagnosed ledger violation must stay rc=1, got rc=$rc"; }
|
|
312
|
+
pass "diagnosed rc=1 still surfaces as a ledger violation"
|
|
313
|
+
|
|
314
|
+
# ── RED: failing to create the capture directory is infra, not a violation ──
|
|
315
|
+
# The checker cannot run the gate at all if it has nowhere to capture output.
|
|
316
|
+
# An unchecked `mktemp` would exit with whatever status it happened to have —
|
|
317
|
+
# typically 1, indistinguishable from an adjudicated ledger violation — so CI
|
|
318
|
+
# would read "the ledger is wrong" when the truth is "the checker could not
|
|
319
|
+
# start". A PATH shim fails only THIS mktemp so the rest of the checker keeps
|
|
320
|
+
# its normal path; setting TMPDIR to a bad directory would instead trip an
|
|
321
|
+
# earlier, unrelated mktemp and test nothing about this call site.
|
|
322
|
+
REAL_MKTEMP="$(command -v mktemp)"
|
|
323
|
+
[ -n "$REAL_MKTEMP" ] || fail "mktemp not found; cannot build the shim"
|
|
324
|
+
SHIM_DIR="$TMP/shimbin"
|
|
325
|
+
mkdir -p "$SHIM_DIR"
|
|
326
|
+
{
|
|
327
|
+
echo '#!/usr/bin/env bash'
|
|
328
|
+
echo 'case "$*" in *firingpath*) echo "mktemp: shimmed failure" >&2; exit 1;; esac'
|
|
329
|
+
echo "exec $REAL_MKTEMP \"\$@\""
|
|
330
|
+
} > "$SHIM_DIR/mktemp"
|
|
331
|
+
chmod +x "$SHIM_DIR/mktemp"
|
|
332
|
+
# Confirm the shim actually discriminates before trusting a RED it produces.
|
|
333
|
+
PATH="$SHIM_DIR:$PATH" mktemp -d "${TMPDIR:-/tmp}/firingpath.XXXXXX" >/dev/null 2>&1 \
|
|
334
|
+
&& fail "shim precondition failed: the firingpath template should have failed"
|
|
335
|
+
shim_passthrough="$(PATH="$SHIM_DIR:$PATH" mktemp -d "${TMPDIR:-/tmp}/shimprobe.XXXXXX")" \
|
|
336
|
+
|| fail "shim precondition failed: unrelated templates must still succeed"
|
|
337
|
+
rm -rf "$shim_passthrough"
|
|
338
|
+
|
|
339
|
+
# Restore the real gate: this case is about the checker's own capture setup.
|
|
340
|
+
cp "$SCRIPT_DIR/register-firing-path-resolution.rb" "$STUB_GATE"
|
|
341
|
+
set +e
|
|
342
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' PATH="$SHIM_DIR:$PATH" bash "$STUB_CHECK" "$REPO" 2>&1)"
|
|
343
|
+
rc=$?
|
|
344
|
+
set -e
|
|
345
|
+
[ "$rc" = "2" ] || { dump; fail "a failed capture-directory creation must fail closed as rc=2, got rc=$rc"; }
|
|
346
|
+
case "$out" in
|
|
347
|
+
*register_firing_path_gate_failed*) : ;;
|
|
348
|
+
*) dump; fail "capture-setup failure rejected, but not via the gate-failure tier" ;;
|
|
349
|
+
esac
|
|
350
|
+
pass "capture-directory creation failure is reported as infrastructure, not a ledger violation"
|
|
351
|
+
|
|
352
|
+
# ── RED: the digest-table seam must never yield a clean landing ─────────────
|
|
353
|
+
# The injected table exists so a fixture can describe its own synthetic ledger,
|
|
354
|
+
# but an injected table can only ever be weaker than the built-in one for the
|
|
355
|
+
# real ledger. If the seam were silent, an inherited test environment would
|
|
356
|
+
# disable the digest and missing-row layers on a real run and still report a
|
|
357
|
+
# clean landing — the exact false-green shape this whole change exists to close.
|
|
358
|
+
git -C "$REPO" checkout -- . >/dev/null 2>&1 || fail "could not restore the clone before the seam case"
|
|
359
|
+
SEAM_TABLE="$TMP/injected-exempt-digests.json"
|
|
360
|
+
printf '{}\n' > "$SEAM_TABLE"
|
|
361
|
+
set +e
|
|
362
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' \
|
|
363
|
+
REGISTER_FIRING_PATH_EXEMPT_DIGESTS="$SEAM_TABLE" bash "$CHECK_SCRIPT" "$REPO" 2>&1)"
|
|
364
|
+
rc=$?
|
|
365
|
+
set -e
|
|
366
|
+
[ "$rc" = "0" ] || { dump; fail "an injected digest table is a downgrade, not a failure, got rc=$rc"; }
|
|
367
|
+
case "$out" in
|
|
368
|
+
*ccl_skill_check_clean_ok*) dump; fail "a run with an injected EXEMPT digest table must not report a clean landing" ;;
|
|
369
|
+
*) : ;;
|
|
370
|
+
esac
|
|
371
|
+
case "$out" in
|
|
372
|
+
*ccl_skill_check_interim_ok*) : ;;
|
|
373
|
+
*) dump; fail "the injected-table run must end on the interim token" ;;
|
|
374
|
+
esac
|
|
375
|
+
case "$out" in
|
|
376
|
+
*register_firing_path_exempt_digests_injected*) : ;;
|
|
377
|
+
*) dump; fail "the gate must announce that its waiver-row bindings were replaced" ;;
|
|
378
|
+
esac
|
|
379
|
+
pass "injected EXEMPT digest table downgrades to interim instead of silently bypassing"
|
|
380
|
+
|
|
381
|
+
# ── RED: a failure while the cleanup trap is armed must keep its status ─────
|
|
382
|
+
# The narrow window between arming the temp-dir cleanup trap and disarming it.
|
|
383
|
+
# `rm -rf` succeeds inside the trap and overwrites the pending exit status, so a
|
|
384
|
+
# trap that does not save and restore `$?` first converts this block's rc=2 for
|
|
385
|
+
# an unreadable capture into rc=0 — a failure reported as success.
|
|
386
|
+
CAT_SHIM_DIR="$TMP/catshim"
|
|
387
|
+
mkdir -p "$CAT_SHIM_DIR"
|
|
388
|
+
REAL_CAT="$(command -v cat)"
|
|
389
|
+
[ -n "$REAL_CAT" ] || fail "cat not found; cannot build the shim"
|
|
390
|
+
{
|
|
391
|
+
echo '#!/usr/bin/env bash'
|
|
392
|
+
echo 'case "$*" in *firingpath*/out|*firingpath*/err) echo "cat: shimmed failure" >&2; exit 1;; esac'
|
|
393
|
+
echo "exec $REAL_CAT \"\$@\""
|
|
394
|
+
} > "$CAT_SHIM_DIR/cat"
|
|
395
|
+
chmod +x "$CAT_SHIM_DIR/cat"
|
|
396
|
+
PATH="$CAT_SHIM_DIR:$PATH" cat /dev/null >/dev/null 2>&1 \
|
|
397
|
+
|| fail "shim precondition failed: unrelated cat invocations must still work"
|
|
398
|
+
|
|
399
|
+
git -C "$REPO" checkout -- . >/dev/null 2>&1 || fail "could not restore the clone before the trap-status case"
|
|
400
|
+
cp "$SCRIPT_DIR/register-firing-path-resolution.rb" "$STUB_GATE"
|
|
401
|
+
set +e
|
|
402
|
+
out="$(env -u CCL_SKILL_BASE_REF ALIAS_AUDIT_CMD='true' PATH="$CAT_SHIM_DIR:$PATH" \
|
|
403
|
+
bash "$STUB_CHECK" "$REPO" 2>&1)"
|
|
404
|
+
rc=$?
|
|
405
|
+
set -e
|
|
406
|
+
[ "$rc" = "2" ] || { dump; fail "an unreadable capture must keep its rc=2 through the cleanup trap, got rc=$rc"; }
|
|
407
|
+
case "$out" in
|
|
408
|
+
*register_firing_path_gate_failed*) : ;;
|
|
409
|
+
*) dump; fail "capture read failure rejected, but not via the gate-failure tier" ;;
|
|
410
|
+
esac
|
|
411
|
+
pass "a failure inside the cleanup-trap window keeps its exit status"
|
|
412
|
+
|
|
413
|
+
[ "$passed" -eq 14 ] || fail "expected 14 assertions, saw $passed"
|
|
414
|
+
echo "register_firing_path_wiring_tests_ok ($passed assertions)"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Guard: every test_*.sh in the extraction scripts/ dir must be registered in
|
|
3
|
+
# test_check_ccl_regressions.sh's fast_tests/heavy_tests arrays, or CI
|
|
4
|
+
# silently skips it — the false-green class that let test_validate_skill_credential_cwd.sh
|
|
5
|
+
# ship unrun. This test asserts zero unregistered on the real repo (so a future
|
|
6
|
+
# unwired test turns CI red), and proves the detector actually flags an
|
|
7
|
+
# unregistered fixture (non-vacuous).
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
11
|
+
RUNNER="$SCRIPT_DIR/test_check_ccl_regressions.sh"
|
|
12
|
+
[ -f "$RUNNER" ] || { echo "FAIL: runner not found: $RUNNER" >&2; exit 1; }
|
|
13
|
+
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
14
|
+
|
|
15
|
+
# (1) Real repo: no sibling test_*.sh is left out of the aggregate arrays.
|
|
16
|
+
out="$(bash "$RUNNER" --list-unregistered)"
|
|
17
|
+
[ -z "$out" ] || fail "test_*.sh not registered in fast_tests/heavy_tests (CI would not run them):\n$out"
|
|
18
|
+
|
|
19
|
+
# (2) Non-vacuous: an unregistered fixture IS reported and a registered name is NOT.
|
|
20
|
+
TMP="$(mktemp -d "${TMPDIR:-/tmp}/regreg.XXXXXX")"
|
|
21
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
22
|
+
: > "$TMP/test_zzz_unregistered.sh"
|
|
23
|
+
: > "$TMP/test_generic_r0_leak_scan.sh" # a name that IS in fast_tests
|
|
24
|
+
fout="$(REGRESSION_SCRIPTS_DIR="$TMP" bash "$RUNNER" --list-unregistered)"
|
|
25
|
+
case "$fout" in
|
|
26
|
+
*test_zzz_unregistered.sh*) : ;;
|
|
27
|
+
*) fail "detector did not flag an unregistered fixture\n$fout" ;;
|
|
28
|
+
esac
|
|
29
|
+
case "$fout" in
|
|
30
|
+
*test_generic_r0_leak_scan.sh*) fail "detector wrongly flagged a registered test\n$fout" ;;
|
|
31
|
+
*) : ;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
echo "test_regression_runner_registration: ok"
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Structural contract test for the routing task bank (eval/routing-tasks.jsonl).
|
|
3
|
+
#
|
|
4
|
+
# SCOPE — read this before citing the lane as evidence. This test proves the
|
|
5
|
+
# bank is well-formed and that every skill it names actually exists. It does
|
|
6
|
+
# NOT route anything and therefore does NOT prove any fixture's expectation is
|
|
7
|
+
# delivered: the behavioural grader (`eval-routing-bank.rb`) shells out to a
|
|
8
|
+
# live `claude` CLI, so it is advisory Tier-2 and cannot be a deterministic CI
|
|
9
|
+
# gate. A source-register row may cite THIS lane for "the fixture exists, is
|
|
10
|
+
# well-formed, and its targets resolve" — never for "the fixture passes".
|
|
11
|
+
#
|
|
12
|
+
# What it catches (the gap it was written for): a fixture silently deleted,
|
|
13
|
+
# an id collision, a typo'd or renamed target skill, a required provenance
|
|
14
|
+
# field dropped, or a self-contradictory row. Before this lane existed, all of
|
|
15
|
+
# those stayed green because the only registered routing lane checks literal
|
|
16
|
+
# phrases in SKILL.md files and never opens the bank at all.
|
|
17
|
+
set -u
|
|
18
|
+
ROOT="${BANK_ROOT:-$(cd "$(dirname "$0")/../../.." && pwd)}"
|
|
19
|
+
[ -n "${BANK_ROOT:-}" ] && echo "NOTICE: BANK_ROOT set — testing tree: $ROOT" >&2
|
|
20
|
+
BANK="$ROOT/eval/routing-tasks.jsonl"
|
|
21
|
+
|
|
22
|
+
if [ ! -f "$BANK" ]; then
|
|
23
|
+
echo "FAIL: task bank missing ($BANK)" >&2
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
python3 - "$ROOT" "$BANK" <<'PY'
|
|
28
|
+
import json, os, sys
|
|
29
|
+
|
|
30
|
+
root, bank = sys.argv[1], sys.argv[2]
|
|
31
|
+
skills_dir = os.path.join(root, "skills")
|
|
32
|
+
installed = {
|
|
33
|
+
name for name in os.listdir(skills_dir)
|
|
34
|
+
if os.path.isfile(os.path.join(skills_dir, name, "SKILL.md"))
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Universal fields, measured against the bank rather than assumed: all 113 rows
|
|
38
|
+
# carry these five. `source` is present on only 37/113 and `added_by_change_sha`
|
|
39
|
+
# on none, although docs/f4-skill-effectiveness-harness.md lists both as required
|
|
40
|
+
# provenance — that doc-vs-bank drift is reported below, not failed, because
|
|
41
|
+
# failing it would red-line ~76 pre-existing rows this change never touched.
|
|
42
|
+
REQUIRED = ("id", "utterance", "expected_skill", "why_expected", "frozen_at_sha")
|
|
43
|
+
fail = 0
|
|
44
|
+
seen = {}
|
|
45
|
+
rows = 0
|
|
46
|
+
|
|
47
|
+
def bad(msg):
|
|
48
|
+
global fail
|
|
49
|
+
print(f"FAIL: {msg}", file=sys.stderr)
|
|
50
|
+
fail = 1
|
|
51
|
+
|
|
52
|
+
with open(bank, encoding="utf-8") as fh:
|
|
53
|
+
for lineno, raw in enumerate(fh, 1):
|
|
54
|
+
raw = raw.strip()
|
|
55
|
+
if not raw:
|
|
56
|
+
continue
|
|
57
|
+
rows += 1
|
|
58
|
+
try:
|
|
59
|
+
row = json.loads(raw)
|
|
60
|
+
except json.JSONDecodeError as exc:
|
|
61
|
+
bad(f"line {lineno}: not valid JSON ({exc})")
|
|
62
|
+
continue
|
|
63
|
+
|
|
64
|
+
rid = row.get("id")
|
|
65
|
+
for field in REQUIRED:
|
|
66
|
+
if not row.get(field):
|
|
67
|
+
bad(f"line {lineno} ({rid}): missing/empty required field '{field}'")
|
|
68
|
+
|
|
69
|
+
if rid in seen:
|
|
70
|
+
bad(f"line {lineno}: duplicate id '{rid}' (first seen line {seen[rid]})")
|
|
71
|
+
elif rid:
|
|
72
|
+
seen[rid] = lineno
|
|
73
|
+
|
|
74
|
+
expected = row.get("expected_skill")
|
|
75
|
+
if expected and expected not in installed:
|
|
76
|
+
bad(f"line {lineno} ({rid}): expected_skill '{expected}' is not a skill in skills/")
|
|
77
|
+
|
|
78
|
+
must_not = row.get("must_not_route_to") or []
|
|
79
|
+
if not isinstance(must_not, list):
|
|
80
|
+
bad(f"line {lineno} ({rid}): must_not_route_to must be a list")
|
|
81
|
+
must_not = []
|
|
82
|
+
for target in must_not:
|
|
83
|
+
if target not in installed:
|
|
84
|
+
bad(f"line {lineno} ({rid}): must_not_route_to names '{target}', not a skill in skills/")
|
|
85
|
+
if target == expected:
|
|
86
|
+
bad(f"line {lineno} ({rid}): '{target}' is both expected_skill and must_not_route_to")
|
|
87
|
+
|
|
88
|
+
# A truncated or emptied bank must fail rather than vacuously pass.
|
|
89
|
+
MIN_ROWS = 100
|
|
90
|
+
if rows < MIN_ROWS:
|
|
91
|
+
bad(f"bank has {rows} rows, expected at least {MIN_ROWS} (truncation guard)")
|
|
92
|
+
|
|
93
|
+
# Row-count guards are too coarse to notice ONE deleted fixture (deleting one of
|
|
94
|
+
# 113 still clears MIN_ROWS). Any fixture a source-register row cites as its
|
|
95
|
+
# evidence is pinned by id here, so removing it turns this lane red instead of
|
|
96
|
+
# silently invalidating the row that points at it. Add an id when a new register
|
|
97
|
+
# row cites a new fixture, in the same diff.
|
|
98
|
+
CITED_BY_REGISTER_ROWS = (
|
|
99
|
+
"miss-refactor-python-unqualified",
|
|
100
|
+
"miss-refactor-miniapp",
|
|
101
|
+
"route-python-cli-not-terminal",
|
|
102
|
+
"route-go-cli-not-terminal",
|
|
103
|
+
"route-cli-contract-design-not-stack",
|
|
104
|
+
)
|
|
105
|
+
for rid in CITED_BY_REGISTER_ROWS:
|
|
106
|
+
if rid not in seen:
|
|
107
|
+
bad(f"fixture '{rid}' is cited by a source-register row but is absent from the bank")
|
|
108
|
+
|
|
109
|
+
# frozen_at_sha ancestry. docs/f4-skill-effectiveness-harness.md says the runner
|
|
110
|
+
# validates this, but the runner needs a live model and no committed-time lane
|
|
111
|
+
# checked it — so a fixture carrying a sha from an unrelated history (the "drift"
|
|
112
|
+
# the field exists to catch) reached main unchallenged. Verified here instead.
|
|
113
|
+
#
|
|
114
|
+
# SEMANTICS, because two readers already read this field two different ways:
|
|
115
|
+
# frozen_at_sha is an ANCESTRY/BATCH marker, not a claim that the expectation was
|
|
116
|
+
# already deliverable at that commit. Fixtures that land together share the sha
|
|
117
|
+
# of the branch point, so a fixture added ALONGSIDE the routing surface it
|
|
118
|
+
# describes is correctly frozen at a commit where that surface does not yet
|
|
119
|
+
# exist. Do not "fix" such a row by pointing it at a post-landing commit: branch
|
|
120
|
+
# shas do not survive a squash merge, and a dangling sha reads as drift and
|
|
121
|
+
# silently drops the fixture from regression judgement.
|
|
122
|
+
import subprocess
|
|
123
|
+
|
|
124
|
+
def git(*args):
|
|
125
|
+
return subprocess.run(("git", "-C", root) + args,
|
|
126
|
+
capture_output=True, text=True)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
if git("rev-parse", "--git-dir").returncode != 0:
|
|
130
|
+
print("routing_bank_ancestry_info: not a git checkout — ancestry not verified")
|
|
131
|
+
else:
|
|
132
|
+
# An unresolvable sha is tolerated ONLY where it is genuinely explainable:
|
|
133
|
+
# a shallow or partial clone that simply does not carry the object. In a
|
|
134
|
+
# COMPLETE checkout an unresolvable sha means the row points at a mistyped,
|
|
135
|
+
# dangling, or unrelated history — which is precisely the drift this check
|
|
136
|
+
# exists to catch, and the row would be silently dropped from regression
|
|
137
|
+
# judgement. Tolerating it unconditionally made the lane pass in exactly the
|
|
138
|
+
# case it was written for.
|
|
139
|
+
# Shallow detection: ONE signal, the `shallow` marker file. It is the ground
|
|
140
|
+
# truth `--is-shallow-repository` itself derives from, so pairing the two as
|
|
141
|
+
# "primary + fallback" is not redundancy — whichever is second is provably
|
|
142
|
+
# unreachable, and shipping an unreachable branch is how you get code that
|
|
143
|
+
# has never been observed to work. Verified both ways: deleting the marker
|
|
144
|
+
# makes the porcelain report false too.
|
|
145
|
+
#
|
|
146
|
+
# --git-COMMON-dir, not --git-dir: in a linked worktree --git-dir returns
|
|
147
|
+
# .git/worktrees/<name>, while `shallow` lives in the shared .git — probing
|
|
148
|
+
# the per-worktree dir silently finds nothing and reports every shallow
|
|
149
|
+
# worktree as a complete checkout.
|
|
150
|
+
common_dir = git("rev-parse", "--git-common-dir").stdout.strip()
|
|
151
|
+
shallow = False
|
|
152
|
+
if common_dir:
|
|
153
|
+
cd_abs = common_dir if os.path.isabs(common_dir) else os.path.join(root, common_dir)
|
|
154
|
+
shallow = os.path.isfile(os.path.join(cd_abs, "shallow"))
|
|
155
|
+
# Partial clone: git marks the PROMISOR REMOTE, whose name is not necessarily
|
|
156
|
+
# "origin" (`git clone -o upstream --filter=...`). Scan every remote, or a
|
|
157
|
+
# partial clone under any other remote name gets red-lined on every row.
|
|
158
|
+
# `extensions.partialClone` is the repository-level marker (it names the
|
|
159
|
+
# promisor remote) and survives a remote rename; the per-remote keys are the
|
|
160
|
+
# corroborating signal. Check both, under any remote name.
|
|
161
|
+
partial = bool(git("config", "--get", "extensions.partialClone").stdout.strip()) or \
|
|
162
|
+
bool(git("config", "--get-regexp",
|
|
163
|
+
r"^remote\..*\.(promisor|partialclonefilter)$").stdout.strip())
|
|
164
|
+
# ONE decision point, deliberately hoisted out of the per-sha loop.
|
|
165
|
+
#
|
|
166
|
+
# This used to be consulted twice INSIDE the loop — once for an unresolvable
|
|
167
|
+
# object, once for a failed ancestry query — and both times I added a new
|
|
168
|
+
# failure mode while guarding only one of the two exits. A degraded clone
|
|
169
|
+
# cannot answer either question, so the honest structure is to decide once,
|
|
170
|
+
# up front, whether ancestry is answerable at all. Adding a third git query
|
|
171
|
+
# later cannot reintroduce the bug: there is no per-query tolerance to forget.
|
|
172
|
+
degraded = shallow or partial
|
|
173
|
+
if degraded:
|
|
174
|
+
kind = "shallow" if shallow else "partial"
|
|
175
|
+
print(f"routing_bank_ancestry_info: {kind} clone — ancestry NOT verified for any row "
|
|
176
|
+
f"(a complete checkout verifies every row and fails on drift)")
|
|
177
|
+
else:
|
|
178
|
+
for rid, sha in sorted({r.get("id"): r.get("frozen_at_sha") for r in
|
|
179
|
+
[json.loads(l) for l in open(bank, encoding="utf-8") if l.strip()]}.items()):
|
|
180
|
+
if not sha:
|
|
181
|
+
continue # empty/missing is already a required-field failure above
|
|
182
|
+
if sha == "root":
|
|
183
|
+
sha = git("rev-list", "--max-parents=0", "HEAD").stdout.splitlines()[0]
|
|
184
|
+
if git("cat-file", "-e", f"{sha}^{{commit}}").returncode != 0:
|
|
185
|
+
bad(f"({rid}): frozen_at_sha {sha[:12]} does not resolve to a commit in this "
|
|
186
|
+
f"complete checkout (mistyped or from an unrelated history — the row would "
|
|
187
|
+
f"be silently excluded from regression judgement)")
|
|
188
|
+
continue
|
|
189
|
+
if git("merge-base", "--is-ancestor", sha, "HEAD").returncode != 0:
|
|
190
|
+
bad(f"({rid}): frozen_at_sha {sha[:12]} is not an ancestor of HEAD (drift — the "
|
|
191
|
+
f"row would be silently excluded from regression judgement)")
|
|
192
|
+
print(f"routing_bank_ancestry_ok: {rows} row(s) verified against HEAD")
|
|
193
|
+
|
|
194
|
+
if fail:
|
|
195
|
+
sys.exit(1)
|
|
196
|
+
|
|
197
|
+
# Informational: provenance coverage the harness doc asks for but the bank does
|
|
198
|
+
# not yet carry. Reported so the drift stays visible without blocking.
|
|
199
|
+
with open(bank, encoding="utf-8") as fh:
|
|
200
|
+
parsed = [json.loads(l) for l in fh if l.strip()]
|
|
201
|
+
with_source = sum(1 for r in parsed if r.get("source"))
|
|
202
|
+
print(f"routing_bank_provenance_info: source present on {with_source}/{rows} rows "
|
|
203
|
+
f"(docs/f4-skill-effectiveness-harness.md lists it as required; not enforced here)")
|
|
204
|
+
print(f"routing_bank_integrity_ok rows={rows} (structure only — routing NOT evaluated)")
|
|
205
|
+
PY
|