@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,154 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Self-contained RED-baseline for the controlled-escalation pin family (family 8
|
|
3
|
+
# in test_ai_coding_implementation_gates.sh). Review rounds ua4/ua5 (spec 031)
|
|
4
|
+
# found that prose claims of mutation evidence are unverifiable from a bounded
|
|
5
|
+
# review packet; this test makes the walk reproducible in CI and visible in the
|
|
6
|
+
# diff: for EVERY family-8 pin, an applied deletion mutation in a throwaway copy
|
|
7
|
+
# must red the fixture on that pin's own assertion (differential attribution —
|
|
8
|
+
# the fixture exits at first failure, so every earlier assertion passed under
|
|
9
|
+
# the mutant), with green unmutated controls before and after and a
|
|
10
|
+
# tree-isolation probe proving the harness read the mutated copy, not the live
|
|
11
|
+
# tree. The pin list is parsed from the fixture itself so a new pin cannot be
|
|
12
|
+
# added without automatically entering this walk.
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
16
|
+
repo_root="$(cd "$script_dir/../../.." && pwd -P)"
|
|
17
|
+
fixture_rel="skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh"
|
|
18
|
+
ref_rel="skills/skill-extraction-workflow/references/source-to-skill-extraction.md"
|
|
19
|
+
|
|
20
|
+
fail() { printf 'FAIL: %s\n' "$1" >&2; exit 1; }
|
|
21
|
+
|
|
22
|
+
tmp_root="$(mktemp -d "${TMPDIR:-/tmp}/controlled-escalation-pins.XXXXXX")"
|
|
23
|
+
trap 'rm -rf "$tmp_root"' EXIT
|
|
24
|
+
# The fixture asserts only on files under skills/, and derives its repo root
|
|
25
|
+
# from its own location three levels up — copying skills/ preserves both.
|
|
26
|
+
cp -R "$repo_root/skills" "$tmp_root/skills"
|
|
27
|
+
copy_fixture="$tmp_root/$fixture_rel"
|
|
28
|
+
copy_ref="$tmp_root/$ref_rel"
|
|
29
|
+
[[ -f "$copy_fixture" && -f "$copy_ref" ]] || fail "copy is missing the fixture or the reference"
|
|
30
|
+
|
|
31
|
+
# Parse family-8 pins out of the fixture: each call is
|
|
32
|
+
# assert_in_section "$EXTRACTION_METHOD_REF" "$BLOCKED_VERIFICATION_SECTION" <quoted phrase> \
|
|
33
|
+
# "<label>"
|
|
34
|
+
# The phrase may be single- or double-quoted (one pin contains an apostrophe).
|
|
35
|
+
pins_file="$tmp_root/pins.tsv"
|
|
36
|
+
python3 - "$repo_root/$fixture_rel" "$pins_file" <<'PY'
|
|
37
|
+
import re, sys
|
|
38
|
+
src, out = sys.argv[1], sys.argv[2]
|
|
39
|
+
text = open(src).read()
|
|
40
|
+
pattern = re.compile(
|
|
41
|
+
r'assert_in_section "\$EXTRACTION_METHOD_REF" "\$BLOCKED_VERIFICATION_SECTION" '
|
|
42
|
+
r"(?:'([^']+)'|\"([^\"]+)\") \\\n\s+\"([^\"]+)\"",
|
|
43
|
+
)
|
|
44
|
+
rows = []
|
|
45
|
+
for m in pattern.finditer(text):
|
|
46
|
+
phrase = m.group(1) or m.group(2)
|
|
47
|
+
rows.append((phrase, m.group(3)))
|
|
48
|
+
if len(rows) < 14:
|
|
49
|
+
sys.exit(f"parsed only {len(rows)} family-8 pins; parser or fixture drifted")
|
|
50
|
+
with open(out, "w") as f:
|
|
51
|
+
for phrase, label in rows:
|
|
52
|
+
f.write(f"{phrase}\t{label}\n")
|
|
53
|
+
print(len(rows))
|
|
54
|
+
PY
|
|
55
|
+
pin_count="$(wc -l < "$pins_file" | tr -d ' ')"
|
|
56
|
+
# Parser-completeness check (round ua21 P2): the regex must account for EVERY
|
|
57
|
+
# family-8 assertion in the fixture — a call whose syntax the regex does not
|
|
58
|
+
# recognize would silently drop out of the walk. The raw call count is the
|
|
59
|
+
# oracle the parse must match.
|
|
60
|
+
raw_count="$(grep -c 'assert_in_section "\$EXTRACTION_METHOD_REF" "\$BLOCKED_VERIFICATION_SECTION"' "$repo_root/$fixture_rel")"
|
|
61
|
+
[[ "$pin_count" == "$raw_count" ]] || fail "parser dropped family-8 assertions: parsed $pin_count of $raw_count calls"
|
|
62
|
+
|
|
63
|
+
run_copy() { bash "$copy_fixture" 2>&1; }
|
|
64
|
+
|
|
65
|
+
# Control: the unmutated copy is green, proving the harness reads the copy.
|
|
66
|
+
control_out="$(run_copy)" || fail "pre-control not green: $control_out"
|
|
67
|
+
|
|
68
|
+
pristine="$tmp_root/ref.pristine"
|
|
69
|
+
cp "$copy_ref" "$pristine"
|
|
70
|
+
|
|
71
|
+
while IFS=$'\t' read -r phrase label; do
|
|
72
|
+
count="$(python3 - "$pristine" "$phrase" <<'PY'
|
|
73
|
+
import sys
|
|
74
|
+
print(open(sys.argv[1]).read().count(sys.argv[2]))
|
|
75
|
+
PY
|
|
76
|
+
)"
|
|
77
|
+
[[ "$count" == "1" ]] || fail "pin phrase not unique in reference ($count hits): $phrase"
|
|
78
|
+
python3 - "$pristine" "$copy_ref" "$phrase" <<'PY'
|
|
79
|
+
import sys
|
|
80
|
+
src, dst, phrase = sys.argv[1], sys.argv[2], sys.argv[3]
|
|
81
|
+
open(dst, "w").write(open(src).read().replace(phrase, "", 1))
|
|
82
|
+
PY
|
|
83
|
+
if out="$(run_copy)"; then
|
|
84
|
+
fail "mutant stayed green (deleted: $phrase)"
|
|
85
|
+
fi
|
|
86
|
+
last="$(printf '%s\n' "$out" | tail -1)"
|
|
87
|
+
case "$last" in
|
|
88
|
+
*"$label"*) : ;;
|
|
89
|
+
*) fail "mutant red on the wrong assertion — expected [$label], got: $last" ;;
|
|
90
|
+
esac
|
|
91
|
+
cp "$pristine" "$copy_ref"
|
|
92
|
+
done < "$pins_file"
|
|
93
|
+
|
|
94
|
+
# Relocation probe (round ua8 P2): a deletion mutant cannot distinguish a
|
|
95
|
+
# section-bound helper from a whole-file grep. Move the lead phrase OUT of the
|
|
96
|
+
# Blocked Verification section to a decoy heading at the end of the file: a
|
|
97
|
+
# whole-file search would stay green, a section-bound one must red on the
|
|
98
|
+
# owning assertion.
|
|
99
|
+
python3 - "$pristine" "$copy_ref" <<'PY'
|
|
100
|
+
import sys
|
|
101
|
+
src, dst = sys.argv[1], sys.argv[2]
|
|
102
|
+
phrase = "Sandbox-denial triage precedes any escalation"
|
|
103
|
+
text = open(src).read()
|
|
104
|
+
assert text.count(phrase) == 1
|
|
105
|
+
open(dst, "w").write(text.replace(phrase, "", 1) + "\n## Relocation decoy\n\n" + phrase + "\n")
|
|
106
|
+
PY
|
|
107
|
+
if out="$(run_copy)"; then
|
|
108
|
+
fail "relocation probe: section-bound assertion stayed green with the phrase outside its section"
|
|
109
|
+
fi
|
|
110
|
+
case "$(printf '%s\n' "$out" | tail -1)" in
|
|
111
|
+
*"controlled escalation (invariant: triage before escalation"*) : ;;
|
|
112
|
+
*) fail "relocation probe: red on the wrong assertion: $(printf '%s\n' "$out" | tail -1)" ;;
|
|
113
|
+
esac
|
|
114
|
+
cp "$pristine" "$copy_ref"
|
|
115
|
+
|
|
116
|
+
# Reachability probe (round ua15 P2): family 8 also carries an
|
|
117
|
+
# assert_same_bullet pin routing the entrypoint to the owning section; that pin
|
|
118
|
+
# is not an assert_in_section call, so it gets its own applied mutation here —
|
|
119
|
+
# strip the section anchor from the entrypoint bullet and require the fixture
|
|
120
|
+
# to red on the reachability assertion.
|
|
121
|
+
copy_skill="$tmp_root/skills/skill-extraction-workflow/SKILL.md"
|
|
122
|
+
skill_pristine="$tmp_root/skill.pristine"
|
|
123
|
+
cp "$copy_skill" "$skill_pristine"
|
|
124
|
+
python3 - "$skill_pristine" "$copy_skill" <<'PY'
|
|
125
|
+
import sys
|
|
126
|
+
src, dst = sys.argv[1], sys.argv[2]
|
|
127
|
+
anchor = "references/source-to-skill-extraction.md#blocked-verification-and-source-read-remediation"
|
|
128
|
+
text = open(src).read()
|
|
129
|
+
if anchor not in text:
|
|
130
|
+
sys.exit("entrypoint anchor not found; reachability probe cannot run")
|
|
131
|
+
open(dst, "w").write(text.replace(anchor, "references/source-to-skill-extraction.md", 1))
|
|
132
|
+
PY
|
|
133
|
+
if out="$(run_copy)"; then
|
|
134
|
+
fail "reachability probe: fixture stayed green with the entrypoint route removed"
|
|
135
|
+
fi
|
|
136
|
+
case "$(printf '%s\n' "$out" | tail -1)" in
|
|
137
|
+
*"reachability: entrypoint routes to the Blocked Verification section"*) : ;;
|
|
138
|
+
*) fail "reachability probe: red on the wrong assertion: $(printf '%s\n' "$out" | tail -1)" ;;
|
|
139
|
+
esac
|
|
140
|
+
cp "$skill_pristine" "$copy_skill"
|
|
141
|
+
|
|
142
|
+
# Post-control green, and tree isolation: a mutated copy reds while the live
|
|
143
|
+
# tree's own fixture stays green.
|
|
144
|
+
run_copy >/dev/null || fail "post-control not green"
|
|
145
|
+
python3 - "$pristine" "$copy_ref" <<'PY'
|
|
146
|
+
import sys
|
|
147
|
+
src, dst = sys.argv[1], sys.argv[2]
|
|
148
|
+
open(dst, "w").write(open(src).read().replace("Sandbox-denial triage precedes any escalation", "", 1))
|
|
149
|
+
PY
|
|
150
|
+
if run_copy >/dev/null; then fail "tree-isolation probe: mutated copy stayed green"; fi
|
|
151
|
+
bash "$repo_root/$fixture_rel" >/dev/null || fail "tree-isolation probe: live tree fixture not green"
|
|
152
|
+
cp "$pristine" "$copy_ref"
|
|
153
|
+
|
|
154
|
+
echo "test_controlled_escalation_pins: ok ($pin_count applied mutations, each red on its owning assertion; controls green)"
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Regression test for eval-routing-bank grader failure diagnostics. Uses a fake
|
|
3
|
+
# claude earlier in PATH so this never invokes a real Claude CLI or account.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
7
|
+
EVAL_SCRIPT="$SCRIPT_DIR/eval-routing-bank.rb"
|
|
8
|
+
[ -f "$EVAL_SCRIPT" ] || { echo "FAIL: eval script not found: $EVAL_SCRIPT" >&2; exit 1; }
|
|
9
|
+
|
|
10
|
+
TMP="$(mktemp -d "${TMPDIR:-/tmp}/eval-routing-bank-diagnostics.XXXXXX")"
|
|
11
|
+
GRADER_PID_FILE="$TMP/grader.pid"
|
|
12
|
+
export GRADER_PID_FILE
|
|
13
|
+
cleanup() {
|
|
14
|
+
stray="$(cat "$GRADER_PID_FILE" 2>/dev/null || true)"
|
|
15
|
+
[ -z "$stray" ] || kill -KILL "$stray" 2>/dev/null || true
|
|
16
|
+
rm -rf "$TMP"
|
|
17
|
+
}
|
|
18
|
+
trap cleanup EXIT
|
|
19
|
+
|
|
20
|
+
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
21
|
+
assert_contains() { case "$2" in *"$1"*) : ;; *) fail "expected output to contain: $1${3:+ ($3)}";; esac; }
|
|
22
|
+
|
|
23
|
+
REPO="$TMP/repo"
|
|
24
|
+
FAKE_BIN="$TMP/bin"
|
|
25
|
+
mkdir -p "$REPO/skills/testing-strategy" "$REPO/eval" "$FAKE_BIN"
|
|
26
|
+
|
|
27
|
+
git -C "$TMP" init -q repo
|
|
28
|
+
git -C "$REPO" config user.email test@example.invalid
|
|
29
|
+
git -C "$REPO" config user.name "Test User"
|
|
30
|
+
|
|
31
|
+
cat > "$REPO/skills/testing-strategy/SKILL.md" <<'EOF'
|
|
32
|
+
---
|
|
33
|
+
description: Use when choosing test layers and regression evidence.
|
|
34
|
+
---
|
|
35
|
+
# Testing Strategy
|
|
36
|
+
EOF
|
|
37
|
+
|
|
38
|
+
cat > "$REPO/eval/routing-tasks.jsonl" <<'EOF'
|
|
39
|
+
{"id":"fake-claude-auth","utterance":"补一个回归测试","expected_skill":"testing-strategy","frozen_at_sha":""}
|
|
40
|
+
EOF
|
|
41
|
+
|
|
42
|
+
git -C "$REPO" add -A
|
|
43
|
+
git -C "$REPO" commit -qm "fixture"
|
|
44
|
+
|
|
45
|
+
cat > "$FAKE_BIN/claude" <<'EOF'
|
|
46
|
+
#!/usr/bin/env bash
|
|
47
|
+
printf 'Not logged in · Please run /login\n'
|
|
48
|
+
exit 1
|
|
49
|
+
EOF
|
|
50
|
+
chmod +x "$FAKE_BIN/claude"
|
|
51
|
+
|
|
52
|
+
json_path="$TMP/report.json"
|
|
53
|
+
# Deliberately generous timeout: this case exercises the grader-EXIT diagnostic,
|
|
54
|
+
# not the timeout guard. A tight bound here only buys a load-sensitive red — the
|
|
55
|
+
# fake grader exits immediately, so the guard has nothing to bound.
|
|
56
|
+
set +e
|
|
57
|
+
out="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$json_path" --timeout 60 2>&1)"
|
|
58
|
+
rc=$?
|
|
59
|
+
set -e
|
|
60
|
+
|
|
61
|
+
[ "$rc" = 3 ] || fail "expected all-grader-errors rc=3, got rc=$rc; output: $out"
|
|
62
|
+
assert_contains "Not logged in" "$out" "stdout diagnostic should appear in human output"
|
|
63
|
+
[ -f "$json_path" ] || fail "expected JSON report to be written"
|
|
64
|
+
json="$(ruby -rjson -e 'print JSON.parse(File.read(ARGV[0])).dig("results", 0, "error")' "$json_path")"
|
|
65
|
+
assert_contains "Not logged in" "$json" "stdout diagnostic should appear in JSON error field"
|
|
66
|
+
|
|
67
|
+
# A grader that outlives the hard timeout must be reported as a grader error, not
|
|
68
|
+
# crash the eval. The guard closes the reader pipes to unblock them; a reader that
|
|
69
|
+
# dies of that close gets re-raised by join and aborts the run (exit 1, no report).
|
|
70
|
+
# The guard also has to BOUND the run and terminate the grader: a run that merely
|
|
71
|
+
# reports the timeout after waiting out the grader would satisfy the diagnostics
|
|
72
|
+
# below while the hang the guard exists to prevent still happened. The fake sleeps
|
|
73
|
+
# far longer than the assertions allow, so "waited it out" cannot read as green.
|
|
74
|
+
timeout_json="$TMP/report-timeout.json"
|
|
75
|
+
timeout_log="$TMP/report-timeout.log"
|
|
76
|
+
cat > "$FAKE_BIN/claude" <<'EOF'
|
|
77
|
+
#!/usr/bin/env bash
|
|
78
|
+
printf '%s\n' "$$" >"$GRADER_PID_FILE"
|
|
79
|
+
exec sleep 300
|
|
80
|
+
EOF
|
|
81
|
+
chmod +x "$FAKE_BIN/claude"
|
|
82
|
+
|
|
83
|
+
timeout_started_at="$(date +%s)"
|
|
84
|
+
set +e
|
|
85
|
+
PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$timeout_json" --timeout 1 >"$timeout_log" 2>&1 &
|
|
86
|
+
eval_pid=$!
|
|
87
|
+
# Independent watchdog: without it an unbounded guard would park this test for the
|
|
88
|
+
# grader's whole lifetime instead of failing.
|
|
89
|
+
eval_deadline="$(( timeout_started_at + 60 ))"
|
|
90
|
+
eval_watchdog_fired=0
|
|
91
|
+
while kill -0 "$eval_pid" 2>/dev/null; do
|
|
92
|
+
if [ "$(date +%s)" -ge "$eval_deadline" ]; then
|
|
93
|
+
eval_watchdog_fired=1
|
|
94
|
+
kill -KILL "$eval_pid" 2>/dev/null || true
|
|
95
|
+
break
|
|
96
|
+
fi
|
|
97
|
+
sleep 1
|
|
98
|
+
done
|
|
99
|
+
wait "$eval_pid"
|
|
100
|
+
timeout_rc=$?
|
|
101
|
+
set -e
|
|
102
|
+
timeout_out="$(cat "$timeout_log" 2>/dev/null || true)"
|
|
103
|
+
timeout_elapsed="$(( $(date +%s) - timeout_started_at ))"
|
|
104
|
+
|
|
105
|
+
[ "$eval_watchdog_fired" = 0 ] || fail "a 1s grader timeout must bound the run; it was still going after ${timeout_elapsed}s (grader sleeps 300s); output: $timeout_out"
|
|
106
|
+
[ "$timeout_rc" = 3 ] || fail "expected timed-out grader to report rc=3, got rc=$timeout_rc; output: $timeout_out"
|
|
107
|
+
|
|
108
|
+
# The grader itself must be terminated, not merely abandoned mid-sleep.
|
|
109
|
+
grader_pid="$(cat "$GRADER_PID_FILE" 2>/dev/null || true)"
|
|
110
|
+
[ -n "$grader_pid" ] || fail "fixture did not record the grader pid; the termination assertion below would be vacuous"
|
|
111
|
+
grader_gone=0
|
|
112
|
+
grader_wait_deadline="$(( $(date +%s) + 10 ))"
|
|
113
|
+
while :; do
|
|
114
|
+
if ! kill -0 "$grader_pid" 2>/dev/null; then grader_gone=1; break; fi
|
|
115
|
+
case "$(ps -o stat= -p "$grader_pid" 2>/dev/null || true)" in
|
|
116
|
+
*Z*) grader_gone=1; break ;;
|
|
117
|
+
esac
|
|
118
|
+
[ "$(date +%s)" -ge "$grader_wait_deadline" ] && break
|
|
119
|
+
sleep 1
|
|
120
|
+
done
|
|
121
|
+
[ "$grader_gone" = 1 ] || fail "a timed-out grader must be terminated, not left running (pid=$grader_pid)"
|
|
122
|
+
case "$timeout_out" in
|
|
123
|
+
*"terminated with exception"*|*"stream closed in another thread"*)
|
|
124
|
+
fail "grader timeout must not surface a reader-thread crash; output: $timeout_out" ;;
|
|
125
|
+
esac
|
|
126
|
+
assert_contains "grader_timeout_1s" "$timeout_out" "timeout diagnostic should appear in human output"
|
|
127
|
+
[ -f "$timeout_json" ] || fail "expected JSON report to be written for a timed-out grader"
|
|
128
|
+
timeout_error="$(ruby -rjson -e 'print JSON.parse(File.read(ARGV[0])).dig("results", 0, "error")' "$timeout_json")"
|
|
129
|
+
[ "$timeout_error" = "grader_timeout_1s" ] || fail "expected JSON error grader_timeout_1s, got: $timeout_error"
|
|
130
|
+
|
|
131
|
+
# Malformed grader output is re-asked, never interpreted. A response whose
|
|
132
|
+
# rationale carries an unescaped quote is invalid JSON; the parser refuses it and
|
|
133
|
+
# the task is retried, so a one-off formatting slip still produces a measured
|
|
134
|
+
# observation without anything reading a verdict out of broken text.
|
|
135
|
+
retry_json="$TMP/report-retry-parse.json"
|
|
136
|
+
cat > "$FAKE_BIN/claude" <<'EOF'
|
|
137
|
+
#!/usr/bin/env bash
|
|
138
|
+
if [ -f "$GRADER_PID_FILE.parsed" ]; then
|
|
139
|
+
printf '%s\n' '{"selected_skill": "testing-strategy", "confidence": 0.9, "rationale_short": "second call"}'
|
|
140
|
+
exit 0
|
|
141
|
+
fi
|
|
142
|
+
: > "$GRADER_PID_FILE.parsed"
|
|
143
|
+
printf '%s\n' '{"selected_skill": "testing-strategy", "confidence": 0.95, "rationale_short": "局部重构("某文件")"}'
|
|
144
|
+
EOF
|
|
145
|
+
chmod +x "$FAKE_BIN/claude"
|
|
146
|
+
rm -f "$GRADER_PID_FILE.parsed"
|
|
147
|
+
set +e
|
|
148
|
+
retry_out="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$retry_json" --timeout 60 2>&1)"
|
|
149
|
+
retry_rc=$?
|
|
150
|
+
set -e
|
|
151
|
+
[ "$retry_rc" = 0 ] || fail "one unparseable response must be retried, not recorded as unmeasured; rc=$retry_rc out=$retry_out"
|
|
152
|
+
retry_status="$(ruby -rjson -e 'print JSON.parse(File.read(ARGV[0])).dig("results", 0, "status")' "$retry_json")"
|
|
153
|
+
[ "$retry_status" = "PASS" ] || fail "expected the retried task to be graded, got: $retry_status"
|
|
154
|
+
|
|
155
|
+
# Output that stays malformed must stay UNMEASURED. These are the shapes a repair
|
|
156
|
+
# path would have read as a verdict: field-shaped prose that merely ends in a
|
|
157
|
+
# brace, and an object cut off mid-string. Neither may ever become an observation.
|
|
158
|
+
for shape in prose truncated; do
|
|
159
|
+
bad_json="$TMP/report-bad-$shape.json"
|
|
160
|
+
case "$shape" in
|
|
161
|
+
prose) payload='grader note: "selected_skill": "testing-strategy" }' ;;
|
|
162
|
+
truncated) payload='{"selected_skill": "testing-strategy", "confidence": 0.9, "rationale_short": "cut off mid' ;;
|
|
163
|
+
esac
|
|
164
|
+
printf '#!/usr/bin/env bash\nprintf %%s %s\n' "'$payload'" > "$FAKE_BIN/claude"
|
|
165
|
+
chmod +x "$FAKE_BIN/claude"
|
|
166
|
+
set +e
|
|
167
|
+
bad_out="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$bad_json" --timeout 60 2>&1)"
|
|
168
|
+
bad_rc=$?
|
|
169
|
+
set -e
|
|
170
|
+
[ "$bad_rc" = 3 ] || fail "$shape output must stay unmeasured, not become a verdict; rc=$bad_rc out=$bad_out"
|
|
171
|
+
bad_status="$(ruby -rjson -e 'print JSON.parse(File.read(ARGV[0])).dig("results", 0, "status")' "$bad_json")"
|
|
172
|
+
[ "$bad_status" = "ERROR" ] || fail "expected $shape output to stay ERROR, got: $bad_status"
|
|
173
|
+
done
|
|
174
|
+
|
|
175
|
+
# A grader that hangs twice still reports the timeout rather than a verdict.
|
|
176
|
+
twice_json="$TMP/report-timeout-twice.json"
|
|
177
|
+
cat > "$FAKE_BIN/claude" <<'EOF'
|
|
178
|
+
#!/usr/bin/env bash
|
|
179
|
+
printf '%s\n' "$$" >"$GRADER_PID_FILE"
|
|
180
|
+
exec sleep 300
|
|
181
|
+
EOF
|
|
182
|
+
chmod +x "$FAKE_BIN/claude"
|
|
183
|
+
set +e
|
|
184
|
+
twice_out="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$twice_json" --timeout 1 2>&1)"
|
|
185
|
+
twice_rc=$?
|
|
186
|
+
set -e
|
|
187
|
+
[ "$twice_rc" = 3 ] || fail "a grader that hangs on both attempts must stay unmeasured; rc=$twice_rc"
|
|
188
|
+
assert_contains "grader_timeout_1s" "$twice_out" "a doubly-timed-out task should still report the timeout"
|
|
189
|
+
|
|
190
|
+
echo "test_eval_routing_bank_grader_diagnostics: ok"
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Regression test for eval-routing-bank's routing_surface self-identification:
|
|
3
|
+
# every emitted report must name the exact surface it graded — the raw
|
|
4
|
+
# description-line surface (byte-compatible with the binding wrapper's
|
|
5
|
+
# surface_hash), a per-skill description-line hash map, the graded catalog
|
|
6
|
+
# text's own hash (post desc-budget truncation), and the bank bytes — so a
|
|
7
|
+
# round artifact can never be attributed to the wrong wording by operator
|
|
8
|
+
# assertion alone. Uses a fake claude earlier in PATH; never invokes a real
|
|
9
|
+
# Claude CLI or account. Grading semantics must be untouched.
|
|
10
|
+
set -euo pipefail
|
|
11
|
+
|
|
12
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
13
|
+
EVAL_SCRIPT="$SCRIPT_DIR/eval-routing-bank.rb"
|
|
14
|
+
[ -f "$EVAL_SCRIPT" ] || { echo "FAIL: eval script not found: $EVAL_SCRIPT" >&2; exit 1; }
|
|
15
|
+
|
|
16
|
+
TMP="$(mktemp -d "${TMPDIR:-/tmp}/eval-routing-bank-surface.XXXXXX")"
|
|
17
|
+
cleanup() { rm -rf "$TMP"; }
|
|
18
|
+
trap cleanup EXIT
|
|
19
|
+
|
|
20
|
+
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
21
|
+
|
|
22
|
+
REPO="$TMP/repo"
|
|
23
|
+
FAKE_BIN="$TMP/bin"
|
|
24
|
+
mkdir -p "$REPO/skills/testing-strategy" "$REPO/skills/product-rd-workflow" "$REPO/eval" "$FAKE_BIN"
|
|
25
|
+
|
|
26
|
+
git -C "$TMP" init -q repo
|
|
27
|
+
git -C "$REPO" config user.email test@example.invalid
|
|
28
|
+
git -C "$REPO" config user.name "Test User"
|
|
29
|
+
|
|
30
|
+
cat > "$REPO/skills/testing-strategy/SKILL.md" <<'EOF'
|
|
31
|
+
---
|
|
32
|
+
description: Use when choosing test layers and regression evidence.
|
|
33
|
+
---
|
|
34
|
+
# Testing Strategy
|
|
35
|
+
EOF
|
|
36
|
+
|
|
37
|
+
cat > "$REPO/skills/product-rd-workflow/SKILL.md" <<'EOF'
|
|
38
|
+
---
|
|
39
|
+
description: Use as the product delivery entry router for features and specs.
|
|
40
|
+
---
|
|
41
|
+
# Product RD Workflow
|
|
42
|
+
EOF
|
|
43
|
+
|
|
44
|
+
cat > "$REPO/eval/routing-tasks.jsonl" <<'EOF'
|
|
45
|
+
{"id":"surface-case","utterance":"补一个回归测试","expected_skill":"testing-strategy","frozen_at_sha":""}
|
|
46
|
+
EOF
|
|
47
|
+
|
|
48
|
+
git -C "$REPO" add -A
|
|
49
|
+
git -C "$REPO" commit -qm "fixture"
|
|
50
|
+
|
|
51
|
+
cat > "$FAKE_BIN/claude" <<'EOF'
|
|
52
|
+
#!/usr/bin/env bash
|
|
53
|
+
cat >/dev/null
|
|
54
|
+
printf '{"selected_skill": "testing-strategy", "confidence": 0.9, "rationale_short": "stub"}\n'
|
|
55
|
+
EOF
|
|
56
|
+
chmod +x "$FAKE_BIN/claude"
|
|
57
|
+
|
|
58
|
+
report1="$TMP/report1.json"
|
|
59
|
+
report2="$TMP/report2.json"
|
|
60
|
+
set +e
|
|
61
|
+
out1="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$report1" --timeout 60 2>&1)"
|
|
62
|
+
rc1=$?
|
|
63
|
+
out2="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$report2" --timeout 60 --desc-budget-chars 10 2>&1)"
|
|
64
|
+
rc2=$?
|
|
65
|
+
set -e
|
|
66
|
+
[ "$rc1" = "0" ] || fail "plain arm exited $rc1: $out1"
|
|
67
|
+
[ "$rc2" = "0" ] || fail "budget arm exited $rc2: $out2"
|
|
68
|
+
|
|
69
|
+
REPO_DIR="$REPO" python3 - "$report1" "$report2" <<'PYEOF'
|
|
70
|
+
import hashlib, json, os, sys, glob
|
|
71
|
+
|
|
72
|
+
report1 = json.load(open(sys.argv[1]))
|
|
73
|
+
report2 = json.load(open(sys.argv[2]))
|
|
74
|
+
repo = os.environ["REPO_DIR"]
|
|
75
|
+
|
|
76
|
+
def fail(msg):
|
|
77
|
+
print("FAIL: " + msg, file=sys.stderr)
|
|
78
|
+
sys.exit(1)
|
|
79
|
+
|
|
80
|
+
rs1 = report1.get("routing_surface")
|
|
81
|
+
if not isinstance(rs1, dict):
|
|
82
|
+
fail("report has no routing_surface object")
|
|
83
|
+
|
|
84
|
+
# Grading semantics untouched: the stub grader's verdict still lands as PASS.
|
|
85
|
+
if report1["results"][0]["status"] != "PASS":
|
|
86
|
+
fail("grading changed: expected PASS, got %r" % report1["results"][0]["status"])
|
|
87
|
+
|
|
88
|
+
bank_bytes = open(os.path.join(repo, "eval", "routing-tasks.jsonl"), "rb").read()
|
|
89
|
+
if rs1.get("bank_sha256") != hashlib.sha256(bank_bytes).hexdigest():
|
|
90
|
+
fail("bank_sha256 does not match the bank file bytes")
|
|
91
|
+
|
|
92
|
+
# Recompute the wrapper-compatible surface: dir-name-tagged raw description
|
|
93
|
+
# lines in sorted glob order (line bytes include the trailing newline, matching
|
|
94
|
+
# `grep -m1 '^description:'` piped output), then the bank bytes.
|
|
95
|
+
surface = b""
|
|
96
|
+
expected_per_skill = {}
|
|
97
|
+
for path in sorted(glob.glob(os.path.join(repo, "skills", "*", "SKILL.md"))):
|
|
98
|
+
name = os.path.basename(os.path.dirname(path))
|
|
99
|
+
line = None
|
|
100
|
+
with open(path, "rb") as f:
|
|
101
|
+
for l in f:
|
|
102
|
+
if l.startswith(b"description:"):
|
|
103
|
+
line = l
|
|
104
|
+
break
|
|
105
|
+
if line is None:
|
|
106
|
+
continue
|
|
107
|
+
surface += name.encode() + b"\t" + line
|
|
108
|
+
expected_per_skill[name] = hashlib.sha256(line).hexdigest()
|
|
109
|
+
if rs1.get("descriptions_sha256") != hashlib.sha256(surface + bank_bytes).hexdigest():
|
|
110
|
+
fail("descriptions_sha256 does not match the wrapper-compatible surface bytes")
|
|
111
|
+
|
|
112
|
+
per_skill = rs1.get("per_skill_description_line_sha256")
|
|
113
|
+
if per_skill != expected_per_skill:
|
|
114
|
+
fail("per_skill_description_line_sha256 mismatch: got %r expected %r" % (per_skill, expected_per_skill))
|
|
115
|
+
|
|
116
|
+
if not rs1.get("catalog_sha256"):
|
|
117
|
+
fail("catalog_sha256 missing or empty")
|
|
118
|
+
|
|
119
|
+
rs2 = report2.get("routing_surface")
|
|
120
|
+
if not isinstance(rs2, dict):
|
|
121
|
+
fail("budget-arm report has no routing_surface object")
|
|
122
|
+
if rs2.get("catalog_sha256") == rs1.get("catalog_sha256"):
|
|
123
|
+
fail("desc-budget truncation must change catalog_sha256")
|
|
124
|
+
if rs2.get("descriptions_sha256") != rs1.get("descriptions_sha256"):
|
|
125
|
+
fail("desc-budget truncation must NOT change the raw descriptions_sha256")
|
|
126
|
+
print("surface binding assertions ok")
|
|
127
|
+
PYEOF
|
|
128
|
+
|
|
129
|
+
# The multiline-description differential (both review lanes' finding): editing a
|
|
130
|
+
# `description: >-` CONTINUATION line changes what the grader sees but not the
|
|
131
|
+
# raw first line, so descriptions_sha256 must stay UNCHANGED (the documented
|
|
132
|
+
# raw-surface blind spot) while catalog_sha256 must CHANGE — which is exactly
|
|
133
|
+
# why the graded-catalog binding is load-bearing on its own and the round
|
|
134
|
+
# wrapper cross-checks it independently.
|
|
135
|
+
mkdir -p "$REPO/skills/platform-observability"
|
|
136
|
+
cat > "$REPO/skills/platform-observability/SKILL.md" <<'EOF'
|
|
137
|
+
---
|
|
138
|
+
description: >-
|
|
139
|
+
Use when wiring service logs and metrics.
|
|
140
|
+
Continuation line one for the multiline fixture.
|
|
141
|
+
---
|
|
142
|
+
# Platform Observability
|
|
143
|
+
EOF
|
|
144
|
+
|
|
145
|
+
report3="$TMP/report3.json"
|
|
146
|
+
report4="$TMP/report4.json"
|
|
147
|
+
set +e
|
|
148
|
+
out3="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$report3" --timeout 60 2>&1)"
|
|
149
|
+
rc3=$?
|
|
150
|
+
set -e
|
|
151
|
+
[ "$rc3" = "0" ] || fail "multiline baseline arm exited $rc3: $out3"
|
|
152
|
+
|
|
153
|
+
perl -pi -e 's/Continuation line one for the multiline fixture\./Continuation line one, materially reworded\./' "$REPO/skills/platform-observability/SKILL.md"
|
|
154
|
+
|
|
155
|
+
set +e
|
|
156
|
+
out4="$(PATH="$FAKE_BIN:$PATH" ruby "$EVAL_SCRIPT" "$REPO" --json "$report4" --timeout 60 2>&1)"
|
|
157
|
+
rc4=$?
|
|
158
|
+
set -e
|
|
159
|
+
[ "$rc4" = "0" ] || fail "multiline mutated arm exited $rc4: $out4"
|
|
160
|
+
|
|
161
|
+
python3 - "$report3" "$report4" <<'PYEOF'
|
|
162
|
+
import json, sys
|
|
163
|
+
|
|
164
|
+
r3 = json.load(open(sys.argv[1]))["routing_surface"]
|
|
165
|
+
r4 = json.load(open(sys.argv[2]))["routing_surface"]
|
|
166
|
+
|
|
167
|
+
def fail(msg):
|
|
168
|
+
print("FAIL: " + msg, file=sys.stderr)
|
|
169
|
+
sys.exit(1)
|
|
170
|
+
|
|
171
|
+
if r3["descriptions_sha256"] != r4["descriptions_sha256"]:
|
|
172
|
+
fail("editing a continuation line must NOT change the raw descriptions_sha256 (that blind spot is documented, not fixed here)")
|
|
173
|
+
if r3["catalog_sha256"] == r4["catalog_sha256"]:
|
|
174
|
+
fail("editing a continuation line MUST change catalog_sha256 — the graded-catalog binding is load-bearing")
|
|
175
|
+
print("multiline differential assertions ok")
|
|
176
|
+
PYEOF
|
|
177
|
+
|
|
178
|
+
echo "test_eval_routing_bank_surface_binding: ok"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Regression test for the prose_redirect_target ADVISORY in eval-routing.rb.
|
|
3
|
+
#
|
|
4
|
+
# A Skip redirect that names an "owner"/"reviewer" but resolves to no backticked
|
|
5
|
+
# installed skill is an unresolvable prose dead-end — the exact class that let
|
|
6
|
+
# grill-me's "→ the adversarial or delete-code review owner" slip past the gate
|
|
7
|
+
# (the arrow regex captured bare "the" and dropped it as generic English). The
|
|
8
|
+
# finding is ADVISORY: reported, NEVER blocks.
|
|
9
|
+
set -euo pipefail
|
|
10
|
+
|
|
11
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
12
|
+
EVAL="$SCRIPT_DIR/eval-routing.rb"
|
|
13
|
+
[ -f "$EVAL" ] || { echo "FAIL: eval-routing.rb not found: $EVAL" >&2; exit 1; }
|
|
14
|
+
command -v ruby >/dev/null 2>&1 || { echo "test_eval_routing_prose_target: SKIP (ruby unavailable)"; exit 0; }
|
|
15
|
+
|
|
16
|
+
TMP="$(mktemp -d "${TMPDIR:-/tmp}/proseadv.XXXXXX")"
|
|
17
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
18
|
+
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
19
|
+
|
|
20
|
+
# A resolvable owner: the clause carries a backticked installed skill -> must NOT fire.
|
|
21
|
+
mkdir -p "$TMP/skills/resolvable"
|
|
22
|
+
cat > "$TMP/skills/resolvable/SKILL.md" <<'EOF'
|
|
23
|
+
---
|
|
24
|
+
name: resolvable
|
|
25
|
+
description: resolvable / aaa — fixture. Skip code review → `dead-end`'s review owner; done.
|
|
26
|
+
---
|
|
27
|
+
body
|
|
28
|
+
EOF
|
|
29
|
+
|
|
30
|
+
# The dead-end: prose owner, no backticked skill -> MUST fire.
|
|
31
|
+
mkdir -p "$TMP/skills/dead-end"
|
|
32
|
+
cat > "$TMP/skills/dead-end/SKILL.md" <<'EOF'
|
|
33
|
+
---
|
|
34
|
+
name: dead-end
|
|
35
|
+
description: dead-end / bbb — fixture. Skip code review → the adversarial or delete-code review owner; tests → testing.
|
|
36
|
+
---
|
|
37
|
+
body
|
|
38
|
+
EOF
|
|
39
|
+
|
|
40
|
+
# A generic non-owner bare redirect (no owner/reviewer noun) -> must NOT fire.
|
|
41
|
+
mkdir -p "$TMP/skills/generic"
|
|
42
|
+
cat > "$TMP/skills/generic/SKILL.md" <<'EOF'
|
|
43
|
+
---
|
|
44
|
+
name: generic
|
|
45
|
+
description: generic / ccc — fixture. Skip implementation → the relevant stack/dev skill; done.
|
|
46
|
+
---
|
|
47
|
+
body
|
|
48
|
+
EOF
|
|
49
|
+
|
|
50
|
+
# A CHAINED redirect: a prose owner FOLLOWED by a second arrow to a backticked
|
|
51
|
+
# skill. The clause must stop at the second arrow, so the prose dead-end still
|
|
52
|
+
# fires (a later backticked skill must not suppress an earlier prose target).
|
|
53
|
+
mkdir -p "$TMP/skills/chained"
|
|
54
|
+
cat > "$TMP/skills/chained/SKILL.md" <<'EOF'
|
|
55
|
+
---
|
|
56
|
+
name: chained
|
|
57
|
+
description: chained / ddd — fixture. Skip review → the review owner → `dead-end`; done.
|
|
58
|
+
---
|
|
59
|
+
body
|
|
60
|
+
EOF
|
|
61
|
+
|
|
62
|
+
JSON="$TMP/out.json"
|
|
63
|
+
set +e
|
|
64
|
+
out="$(ruby "$EVAL" "$TMP" --json "$JSON" 2>&1)"; rc=$?
|
|
65
|
+
set -e
|
|
66
|
+
|
|
67
|
+
# (1) Advisory NEVER blocks.
|
|
68
|
+
[ "$rc" -eq 0 ] || fail "prose advisory must not block (rc=$rc)\n$out"
|
|
69
|
+
[ -f "$JSON" ] || fail "no JSON report written\n$out"
|
|
70
|
+
|
|
71
|
+
# (2) Fires for the dead-end skill.
|
|
72
|
+
grep -q '"type": "prose_redirect_target"' "$JSON" || fail "expected a prose_redirect_target finding\n$(cat "$JSON")"
|
|
73
|
+
grep -q 'dead-end skip redirect' "$JSON" || fail "dead-end skill not named in the finding\n$(cat "$JSON")"
|
|
74
|
+
|
|
75
|
+
# (3) Fires for the CHAINED prose owner even though a later arrow points at a
|
|
76
|
+
# backticked skill (the clause must stop at the second arrow).
|
|
77
|
+
grep -q 'chained skip redirect' "$JSON" || fail "chained prose dead-end not flagged (clause spilled past the next arrow?)\n$(cat "$JSON")"
|
|
78
|
+
|
|
79
|
+
# (4) No false positive on the backticked-resolvable owner or the generic
|
|
80
|
+
# non-owner redirect. Grep the whole report for each skill's detail text — in
|
|
81
|
+
# pretty JSON "type" and "detail" are on SEPARATE lines, so a naive
|
|
82
|
+
# `grep type | grep detail` would be vacuous and always pass.
|
|
83
|
+
grep -q '"resolvable skip redirect' "$JSON" && fail "false positive: backticked-resolvable owner flagged\n$(cat "$JSON")"
|
|
84
|
+
grep -q '"generic skip redirect' "$JSON" && fail "false positive: generic non-owner redirect flagged\n$(cat "$JSON")"
|
|
85
|
+
|
|
86
|
+
echo "test_eval_routing_prose_target: ok"
|