@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,419 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Semantic sync pointer gate (blocking since 2026-08-02, C-1 family).
|
|
3
|
+
#
|
|
4
|
+
# The always-on layer (agent-context/session-start.md) points into canonical sections by section
|
|
5
|
+
# name / capability name and carries COMPRESSED resident reflections declared
|
|
6
|
+
# to be subsets of their canonical predicate sets. The syntactic tier (route
|
|
7
|
+
# existence, <pkg>/references/*.md existence) is owned by the two checks in
|
|
8
|
+
# check-ccl-skills.sh; this gate owns the semantic tier — but only its
|
|
9
|
+
# mechanically decidable part: a DECLARED registry of pinned pairs and subset
|
|
10
|
+
# relations, never open-ended pointer discovery (diverse pointer prose forms
|
|
11
|
+
# would false-positive, which is why the syntactic tier left this out).
|
|
12
|
+
#
|
|
13
|
+
# Two registries:
|
|
14
|
+
# 1. Pinned pairs (declared below): (source literal in agent-context/session-start.md) AND
|
|
15
|
+
# (target literal in the canonical file/dir). Drift on EITHER side —
|
|
16
|
+
# reworded pointer, renamed/removed canonical section — blocks.
|
|
17
|
+
# 2. The security-four-questions subset registry (declared in the canonical
|
|
18
|
+
# file itself as an HTML comment `sync-registry:v1` holding the CANONICAL
|
|
19
|
+
# predicate/trigger sets plus declared aliases). The bootstrap side is
|
|
20
|
+
# EXTRACTED from the live text through anchored phrases (触及 … 时 /
|
|
21
|
+
# 若某值被…爆炸半径 / 写一条…负向用例), never trusted from a declared
|
|
22
|
+
# value: an extracted set that escapes the canonical set blocks, and an
|
|
23
|
+
# extraction that no longer matches its anchor blocks too (reword the
|
|
24
|
+
# resident reflection and these anchors together). On the canonical side
|
|
25
|
+
# each registered token must appear inside its ANCHORED REGION (the 触发
|
|
26
|
+
# section, the numbered 问题本体 item line), not anywhere in the prose —
|
|
27
|
+
# narrative text cannot satisfy the check.
|
|
28
|
+
#
|
|
29
|
+
# agent-context/session-start.md missing is a legal repo state (the route check's
|
|
30
|
+
# skipped-missing and the size gate's advisory-partial treat it the same):
|
|
31
|
+
# pairs and bootstrap-side subset assertions are skipped with a marker, while
|
|
32
|
+
# the canonical-side registry/prose checks still run. A wholesale-missing
|
|
33
|
+
# PACKAGE (partial checkout) skips its pairs the same way; a package that is
|
|
34
|
+
# PRESENT but lost its target file is a broken registered invariant and
|
|
35
|
+
# BLOCKS; a present-but-unreadable file is infra (rc 2). The ok token is only
|
|
36
|
+
# printed when everything was evaluated and clean (any skip suppresses it).
|
|
37
|
+
#
|
|
38
|
+
# What this gate deliberately does NOT decide: full semantic equivalence of
|
|
39
|
+
# paraphrased prose (grep-class criteria cannot prove semantic governance —
|
|
40
|
+
# that stays with the adversarial-review lane).
|
|
41
|
+
#
|
|
42
|
+
# Exit codes: 0 = clean (or a marked skip), 1 = a registry violation
|
|
43
|
+
# (blocks the gate), 2 = infra (fail-closed).
|
|
44
|
+
#
|
|
45
|
+
# The subset tier runs in an embedded ruby; a DECLARED violation there exits 3,
|
|
46
|
+
# never 1. Ruby exits 1 on any uncaught exception too (a crashed interpreter, a
|
|
47
|
+
# non-UTF-8 locale, a missing binary), and rc 1 is what the caller folds into
|
|
48
|
+
# the deferred "reword both sides of a registered pair" verdict — so an
|
|
49
|
+
# interpreter that never evaluated a single rule would be reported as a policy
|
|
50
|
+
# violation. Reserving 3 for declared violations keeps every unexpected rc on
|
|
51
|
+
# the infra path, which is fail-closed AND correctly diagnosed.
|
|
52
|
+
set -uo pipefail
|
|
53
|
+
|
|
54
|
+
root="${1:-.}"
|
|
55
|
+
|
|
56
|
+
bootstrap="$root/agent-context/session-start.md"
|
|
57
|
+
wt="$root/skills/worktree-isolation/SKILL.md"
|
|
58
|
+
prd="$root/skills/product-rd-workflow/SKILL.md"
|
|
59
|
+
se="$root/skills/skill-extraction-workflow/SKILL.md"
|
|
60
|
+
sec4="$root/skills/requirement-doc-writer/references/security-four-questions.md"
|
|
61
|
+
llm_dir="$root/skills/llm-inference-integration"
|
|
62
|
+
td="$root/skills/tighten-doc/SKILL.md"
|
|
63
|
+
dtref="$root/skills/skill-extraction-workflow/references/dual-track-review-gate.md"
|
|
64
|
+
|
|
65
|
+
# Per-target availability: a wholesale-missing PACKAGE is a legal partial
|
|
66
|
+
# checkout (same family shape as the route check's File.file? guards and the
|
|
67
|
+
# size gate's missing-skills partial) — its pairs skip with a marker. A
|
|
68
|
+
# package PRESENT but missing the target file is a broken registered
|
|
69
|
+
# invariant and blocks. Present-but-unreadable is infra (rc 2).
|
|
70
|
+
target_state() { # <file> <package-dir> -> 1 evaluate / 0 skip / 2 block / 3 infra
|
|
71
|
+
if [ ! -d "$2" ]; then
|
|
72
|
+
echo 0
|
|
73
|
+
elif [ ! -e "$1" ]; then
|
|
74
|
+
echo 2
|
|
75
|
+
elif [ ! -r "$1" ]; then
|
|
76
|
+
echo 3
|
|
77
|
+
else
|
|
78
|
+
echo 1
|
|
79
|
+
fi
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if [ -e "$bootstrap" ] && [ ! -r "$bootstrap" ]; then
|
|
83
|
+
echo "sync_pointer_infra: agent-context/session-start.md exists but is unreadable" >&2
|
|
84
|
+
exit 2
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
fail=0
|
|
88
|
+
block() { echo "sync_pointer_block: $1" >&2; fail=1; }
|
|
89
|
+
|
|
90
|
+
if [ -e "$bootstrap" ]; then
|
|
91
|
+
bootstrap_present=1
|
|
92
|
+
else
|
|
93
|
+
bootstrap_present=0
|
|
94
|
+
any_pinned=0
|
|
95
|
+
for pkg in worktree-isolation product-rd-workflow skill-extraction-workflow llm-inference-integration tighten-doc requirement-doc-writer; do
|
|
96
|
+
[ -d "$root/skills/$pkg" ] && { any_pinned=1; break; }
|
|
97
|
+
done
|
|
98
|
+
if [ "$any_pinned" -eq 1 ]; then
|
|
99
|
+
# agent-context/session-start.md gone while ANY pinned package remains: the always-on layer
|
|
100
|
+
# was deleted (possibly together with some packages) while its sync
|
|
101
|
+
# registry lives — that omission bypasses every pin, so it blocks. The
|
|
102
|
+
# marked skip exists only for a tree with NO pinned package at all.
|
|
103
|
+
block "agent-context/session-start.md missing while pinned canonical packages are present — the always-on layer was deleted while its sync registry lives; remove the layer AND this gate registry in the same MR, or restore the file"
|
|
104
|
+
else
|
|
105
|
+
echo "sync_pointer_check_skipped: agent-context/session-start.md missing — no always-on pointers to evaluate (canonical-side registry checks still run)"
|
|
106
|
+
fi
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
# Pinned-pair registry. Each row: name | literal that must survive in
|
|
110
|
+
# agent-context/session-start.md | canonical target (file, or file-exists:<path>) | literal that
|
|
111
|
+
# must survive in the target. A pair pins BOTH sides and BOTH sides are always
|
|
112
|
+
# reported (no early return): a two-sided drift must surface both diagnostics
|
|
113
|
+
# in one run, not cost two red cycles. Each literal must occur EXACTLY ONCE on
|
|
114
|
+
# its side (all current entries do): a zero count is drift, a >1 count is a
|
|
115
|
+
# decoy/duplicate that makes the pointer unverifiable — both block. (A
|
|
116
|
+
# relocated decoy reproducing the directive prefix verbatim is textually the
|
|
117
|
+
# directive itself; intent there is review-owned, not mechanical.)
|
|
118
|
+
check_pair() { # <name> <bootstrap literal> <target> <target literal>
|
|
119
|
+
local bcount
|
|
120
|
+
bcount="$(grep -oF -- "$2" "$bootstrap" | wc -l | tr -d ' ')"
|
|
121
|
+
if [ "$bcount" -eq 0 ]; then
|
|
122
|
+
block "$1: agent-context/session-start.md lost the registered pointer literal \`$2\` — reword the pointer AND this registry together"
|
|
123
|
+
elif [ "$bcount" -ne 1 ]; then
|
|
124
|
+
block "$1: agent-context/session-start.md carries the registered pointer literal \`$2\` ${bcount} times — a decoy/duplicate makes the pointer unverifiable"
|
|
125
|
+
fi
|
|
126
|
+
case "$3" in
|
|
127
|
+
file-exists:*)
|
|
128
|
+
[ -f "${3#file-exists:}" ] ||
|
|
129
|
+
block "$1: canonical file ${3#file-exists:} missing — the always-on pointer would dangle"
|
|
130
|
+
;;
|
|
131
|
+
*)
|
|
132
|
+
local tcount
|
|
133
|
+
tcount="$(grep -oF -- "$4" "$3" 2>/dev/null | wc -l | tr -d ' ')"
|
|
134
|
+
if [ "$tcount" -eq 0 ]; then
|
|
135
|
+
block "$1: canonical target $3 lost \`$4\` — the always-on pointer would dangle"
|
|
136
|
+
elif [ "$tcount" -ne 1 ]; then
|
|
137
|
+
block "$1: canonical target $3 carries \`$4\` ${tcount} times — a decoy/duplicate makes the anchor unverifiable"
|
|
138
|
+
fi
|
|
139
|
+
;;
|
|
140
|
+
esac
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
# run_pair wraps check_pair with the target-availability ladder. It is only
|
|
144
|
+
# ever reached with the always-on layer PRESENT (the no-bootstrap tree either
|
|
145
|
+
# blocked above or has no pinned package at all), so an absent package here is
|
|
146
|
+
# always the wholesale-bypass shape — there is no reachable skip branch to
|
|
147
|
+
# write, and inventing one would advertise a legal state that the r17
|
|
148
|
+
# tightening removed.
|
|
149
|
+
run_pair() { # <name> <bootstrap literal> <target> <target literal> <package-dir>
|
|
150
|
+
local raw="$3"
|
|
151
|
+
case "$raw" in
|
|
152
|
+
file-exists:*) raw="${raw#*:}" ;;
|
|
153
|
+
esac
|
|
154
|
+
local state
|
|
155
|
+
state="$(target_state "$raw" "$5")"
|
|
156
|
+
case "$state" in
|
|
157
|
+
0)
|
|
158
|
+
# The always-on layer is alive while its pinned target is wholesale
|
|
159
|
+
# deleted — the same bypass as deleting agent-context/session-start.md itself.
|
|
160
|
+
block "$1: canonical package ${5##*/} missing while the always-on layer is present — its pins are bypassed wholesale"
|
|
161
|
+
;;
|
|
162
|
+
2) block "$1: canonical target $raw missing inside a present package — the registered invariant is broken" ;;
|
|
163
|
+
3) echo "sync_pointer_infra: $raw exists but is unreadable" >&2; exit 2 ;;
|
|
164
|
+
1) check_pair "$1" "$2" "$3" "$4" ;;
|
|
165
|
+
esac
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if [ "$bootstrap_present" -eq 1 ]; then
|
|
169
|
+
run_pair "merge-exec-protocol-section" \
|
|
170
|
+
"「合并执行协议」(canonical" "$wt" "**合并执行协议(canonical——" "$root/skills/worktree-isolation"
|
|
171
|
+
run_pair "merge-exec-citation-token" \
|
|
172
|
+
"「依据: worktree-isolation 合并执行协议」" "$wt" "**合并执行协议(canonical——" "$root/skills/worktree-isolation"
|
|
173
|
+
run_pair "worktree-teardown-section" \
|
|
174
|
+
"在 \`worktree-isolation\` 收尾节" "$wt" "## 收尾:" "$root/skills/worktree-isolation"
|
|
175
|
+
run_pair "owner-dispatch-firing-gate" \
|
|
176
|
+
"product-rd \`Implementation entry / re-entry gate\` + \`Owner-dispatch firing gate\`" "$prd" "- **Owner-dispatch firing gate (" "$root/skills/product-rd-workflow"
|
|
177
|
+
run_pair "implementation-entry-reentry-gate" \
|
|
178
|
+
"product-rd \`Implementation entry / re-entry gate\` + \`Owner-dispatch firing gate\`" "$prd" "- **Implementation entry / re-entry gate (" "$root/skills/product-rd-workflow"
|
|
179
|
+
run_pair "firing-point-placement-corollary" \
|
|
180
|
+
"skill-extraction \`Firing-point-placement corollary\`" "$se" "- **Firing-point-placement corollary:**" "$root/skills/skill-extraction-workflow"
|
|
181
|
+
# dtref existence is this pair's own assertion; this block only runs with
|
|
182
|
+
# bootstrap present, so a wholesale-missing package here is always a bypass.
|
|
183
|
+
if [ -d "$root/skills/skill-extraction-workflow" ]; then
|
|
184
|
+
check_pair "dual-track-review-gate-ref" \
|
|
185
|
+
"详见 product-rd 验证门 + skill-extraction \`dual-track-review-gate.md\`" "file-exists:$dtref" ""
|
|
186
|
+
else
|
|
187
|
+
block "dual-track-review-gate-ref: canonical package skill-extraction-workflow missing while the always-on layer is present — its pins are bypassed wholesale"
|
|
188
|
+
fi
|
|
189
|
+
run_pair "agent-command-sandbox" \
|
|
190
|
+
"细则归 \`llm-inference-integration\` agent-command-sandbox" "file-exists:$root/skills/llm-inference-integration/references/agent-command-sandbox.md" "" "$llm_dir"
|
|
191
|
+
run_pair "cross-model-caveat" \
|
|
192
|
+
"详见 tighten-doc cross-model caveat" "$td" "CROSS-MODEL / CODEX CO-REVIEW CAVEAT" "$root/skills/tighten-doc"
|
|
193
|
+
echo "sync_pointer_check_done"
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
# --- security-four-questions subset registry ---------------------------------
|
|
197
|
+
sec4_state="$(target_state "$sec4" "$root/skills/requirement-doc-writer")"
|
|
198
|
+
[ "$sec4_state" = "0" ] && skipped_any=1
|
|
199
|
+
subset_out_tmp="$(mktemp "${TMPDIR:-/tmp}/sync-subset-out.XXXXXX")" ||
|
|
200
|
+
{ echo "sync_subset_infra: mktemp failed" >&2; exit 2; }
|
|
201
|
+
subset_err_tmp="$(mktemp "${TMPDIR:-/tmp}/sync-subset-err.XXXXXX")" ||
|
|
202
|
+
{ rm -f "$subset_out_tmp"; echo "sync_subset_infra: mktemp failed" >&2; exit 2; }
|
|
203
|
+
ruby -e '
|
|
204
|
+
# (This block runs inside a single-quoted ruby -e: keep it apostrophe-free.)
|
|
205
|
+
root = ARGV.fetch(0)
|
|
206
|
+
bootstrap_present = ARGV.fetch(1) == "1"
|
|
207
|
+
sec4_state = ARGV.fetch(2)
|
|
208
|
+
sec4 = File.join(root, "skills/requirement-doc-writer/references/security-four-questions.md")
|
|
209
|
+
if sec4_state == "0"
|
|
210
|
+
if bootstrap_present
|
|
211
|
+
warn "sync_subset_block: canonical package requirement-doc-writer missing while the always-on layer is present — the subset pins are bypassed wholesale"
|
|
212
|
+
exit 3
|
|
213
|
+
end
|
|
214
|
+
puts "sync_subset_check_skipped: requirement-doc-writer package missing — subset registry not evaluated"
|
|
215
|
+
exit 0
|
|
216
|
+
end
|
|
217
|
+
if sec4_state == "2"
|
|
218
|
+
warn "sync_subset_block: canonical registry file missing inside a present package: #{sec4} — the registered invariant is broken"
|
|
219
|
+
exit 3
|
|
220
|
+
end
|
|
221
|
+
if sec4_state != "1"
|
|
222
|
+
warn "sync_subset_infra: #{sec4} exists but is unreadable"
|
|
223
|
+
exit 2
|
|
224
|
+
end
|
|
225
|
+
bootstrap = File.join(root, "agent-context/session-start.md")
|
|
226
|
+
text = File.read(sec4)
|
|
227
|
+
blocks = text.scan(/<!--\s*sync-registry:v1\s*.*?-->/m)
|
|
228
|
+
if blocks.empty?
|
|
229
|
+
warn "sync_subset_infra: sync-registry:v1 block missing in #{sec4}"
|
|
230
|
+
exit 2
|
|
231
|
+
end
|
|
232
|
+
if blocks.length > 1
|
|
233
|
+
warn "sync_subset_infra: #{blocks.length} sync-registry:v1 blocks in #{sec4} — exactly one is allowed (a second block could shadow the real registry)"
|
|
234
|
+
exit 2
|
|
235
|
+
end
|
|
236
|
+
registry = {}
|
|
237
|
+
blocks.first.match(/<!--\s*sync-registry:v1\s*(.*?)-->/m)[1].each_line do |line|
|
|
238
|
+
line = line.strip
|
|
239
|
+
next if line.empty? || line.start_with?("#")
|
|
240
|
+
key, value = line.split(":", 2)
|
|
241
|
+
unless value
|
|
242
|
+
warn "sync_subset_infra: unparseable registry line: #{line}"
|
|
243
|
+
exit 2
|
|
244
|
+
end
|
|
245
|
+
key = key.strip
|
|
246
|
+
if registry.key?(key)
|
|
247
|
+
warn "sync_subset_infra: duplicate registry key #{key} — a last-wins override would be invisible"
|
|
248
|
+
exit 2
|
|
249
|
+
end
|
|
250
|
+
registry[key] = value.strip
|
|
251
|
+
end
|
|
252
|
+
%w[trigger-canonical q2-canonical q4-canonical q2-bootstrap-min q4-bootstrap-min].each do |key|
|
|
253
|
+
unless registry[key]
|
|
254
|
+
warn "sync_subset_infra: registry missing key #{key}"
|
|
255
|
+
exit 2
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
split_list = ->(s) { s.split(",").map(&:strip).reject(&:empty?) }
|
|
259
|
+
canon = {
|
|
260
|
+
"trigger" => split_list.call(registry["trigger-canonical"]),
|
|
261
|
+
"q2" => split_list.call(registry["q2-canonical"]),
|
|
262
|
+
"q4" => split_list.call(registry["q4-canonical"]),
|
|
263
|
+
}
|
|
264
|
+
aliases = {}
|
|
265
|
+
split_list.call(registry.fetch("alias", "")).each do |pair|
|
|
266
|
+
left, right = pair.split("=", 2).map { |part| part.to_s.strip }
|
|
267
|
+
if left.empty? || right.empty?
|
|
268
|
+
warn "sync_subset_infra: unparseable alias pair: #{pair}"
|
|
269
|
+
exit 2
|
|
270
|
+
end
|
|
271
|
+
aliases[left] = right
|
|
272
|
+
end
|
|
273
|
+
prose = text.sub(/<!--\s*sync-registry:v1\s*.*?-->/m, "")
|
|
274
|
+
failures = []
|
|
275
|
+
# Alias hygiene: the right side must be a real canonical trigger token (an
|
|
276
|
+
# alias must not map INTO a token the canonical set does not carry); the left
|
|
277
|
+
# side is validated against the extracted bootstrap list further down.
|
|
278
|
+
aliases.each do |left, right|
|
|
279
|
+
failures << "alias right side \`#{right}\` is not in the canonical trigger set — an alias cannot map into a token the canonical set does not carry" unless canon["trigger"].include?(right)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
# Canonical side: every registered token must appear inside its ANCHORED
|
|
283
|
+
# REGION (the 触发 section / the numbered 问题本体 item line), so narrative
|
|
284
|
+
# text elsewhere cannot satisfy the check. An unextractable region means the
|
|
285
|
+
# canonical file was restructured — co-update the anchors here.
|
|
286
|
+
sections = prose.split(/^## /)
|
|
287
|
+
trigger_section = sections.find { |s| s.start_with?("触发") }
|
|
288
|
+
body_section = sections.find { |s| s.start_with?("问题本体") }
|
|
289
|
+
q2_line = body_section && body_section.each_line.find { |l| l.match?(/\A\s*2\./) }
|
|
290
|
+
q4_line = body_section && body_section.each_line.find { |l| l.match?(/\A\s*4\./) }
|
|
291
|
+
# Token attestation is by LIST-ITEM EQUALITY inside the anchored region, never
|
|
292
|
+
# a substring test: a superstring (权限模型 attesting 权限) must not count. The
|
|
293
|
+
# trigger region is bounded to its own line ([^。\n]) so text on following
|
|
294
|
+
# lines cannot attest a token the list itself lost.
|
|
295
|
+
region_items = {}
|
|
296
|
+
region_items["trigger"] = trigger_section && (tm = trigger_section.match(/触及:([^。\n]+)/)) && tm[1].split("、")
|
|
297
|
+
region_items["q2"] = q2_line && (qm = q2_line.match(/\A\s*2\.\s*(.+?)这些输入/)) && qm[1].split(/[、或]/)
|
|
298
|
+
region_items["q4"] = q4_line && (qm4 = q4_line.match(/\A\s*4\.\s*至少一条(.+?)的负向用例/)) && qm4[1].split("/")
|
|
299
|
+
region_items.each do |group, items|
|
|
300
|
+
if items.nil?
|
|
301
|
+
failures << "canonical #{group} region unextractable (section structure changed) — co-update the extraction anchors in check-sync-pointers.sh"
|
|
302
|
+
next
|
|
303
|
+
end
|
|
304
|
+
items = items.map(&:strip)
|
|
305
|
+
canon[group].each do |token|
|
|
306
|
+
failures << "canonical #{group} token \`#{token}\` absent from its list region of security-four-questions.md (registry/prose mismatch)" unless items.include?(token)
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# Bootstrap side: EXTRACT the compressed tables from the live text through
|
|
311
|
+
# anchored phrases. The scan must hit EXACTLY ONCE: a compliant decoy line
|
|
312
|
+
# inserted before the real reflection would otherwise satisfy the extraction
|
|
313
|
+
# while the real table drifts. Zero hits is anchor loss; both block.
|
|
314
|
+
if bootstrap_present
|
|
315
|
+
btext = File.read(bootstrap)
|
|
316
|
+
extractions = {
|
|
317
|
+
"trigger" => [btext.scan(/触及 ([^ ]+) 时/), "·"],
|
|
318
|
+
"q2" => [btext.scan(/若某值被(.+?)爆炸半径/), "/"],
|
|
319
|
+
"q4" => [btext.scan(/写一条(.+?)负向用例/), "/"],
|
|
320
|
+
}
|
|
321
|
+
boot = {}
|
|
322
|
+
extractions.each do |group, (hits, separator)|
|
|
323
|
+
if hits.empty?
|
|
324
|
+
failures << "agent-context/session-start.md compressed #{group} table no longer matches the registered anchor shape — reword the resident reflection AND the extraction anchors together"
|
|
325
|
+
elsif hits.length > 1
|
|
326
|
+
failures << "agent-context/session-start.md compressed #{group} anchor matches #{hits.length} times — a decoy/duplicate anchor makes the extraction ambiguous"
|
|
327
|
+
else
|
|
328
|
+
# Trim stray punctuation/particles at item edges so a legal rewording
|
|
329
|
+
# (伪造/篡改,爆炸半径) does not false-red on a token like 篡改,
|
|
330
|
+
boot[group] = hits.first[0].split(separator).map { |t| t.strip.gsub(/\A[,、。;:,.!? ]+|[,、。;:,.!? ]+\z/, "") }.reject(&:empty?)
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
boot.each do |group, tokens|
|
|
334
|
+
if group == "trigger"
|
|
335
|
+
aliases.each_key do |left|
|
|
336
|
+
failures << "alias left side \`#{left}\` is not in the extracted bootstrap trigger list — an unattested alias could map an escaping token back" unless tokens.include?(left)
|
|
337
|
+
end
|
|
338
|
+
aliases.each_value do |right|
|
|
339
|
+
failures << "alias right side \`#{right}\` is also present verbatim in the bootstrap trigger list — an alias must be the sole attestation of its canonical token" if tokens.include?(right)
|
|
340
|
+
end
|
|
341
|
+
mapped = tokens.map { |t| aliases.fetch(t, t) }
|
|
342
|
+
if mapped.uniq.length != mapped.length
|
|
343
|
+
failures << "aliased trigger mapping collides (two tokens map to the same canonical token) — alias laundering shape"
|
|
344
|
+
end
|
|
345
|
+
extra = mapped - canon["trigger"]
|
|
346
|
+
missing = canon["trigger"] - mapped
|
|
347
|
+
failures << "bootstrap trigger table #{extra.inspect} escapes the canonical predicate set" unless extra.empty?
|
|
348
|
+
failures << "canonical trigger tokens not reflected in the bootstrap list: #{missing.inspect} (alias or registry drift)" unless missing.empty?
|
|
349
|
+
else
|
|
350
|
+
extra = tokens - canon[group]
|
|
351
|
+
failures << "bootstrap #{group} table #{extra.inspect} escapes the canonical predicate set" unless extra.empty?
|
|
352
|
+
floor = split_list.call(registry.fetch("#{group}-bootstrap-min", ""))
|
|
353
|
+
shed = floor - tokens
|
|
354
|
+
failures << "bootstrap #{group} table shed required predicate(s) #{shed.inspect} (below the registered #{group}-bootstrap-min floor)" unless shed.empty?
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
if failures.empty?
|
|
360
|
+
if bootstrap_present
|
|
361
|
+
puts "sync_subset_check_done"
|
|
362
|
+
else
|
|
363
|
+
puts "sync_subset_check_skipped: bootstrap side not evaluated (canonical-side registry checks ran)"
|
|
364
|
+
end
|
|
365
|
+
exit 0
|
|
366
|
+
end
|
|
367
|
+
failures.each { |f| warn "sync_subset_block: #{f}" }
|
|
368
|
+
# 3, not 1: rc 1 is what an uncaught ruby exception returns, and the caller
|
|
369
|
+
# reports rc 1 as a declared registry violation. Keeping the two apart means a
|
|
370
|
+
# crashed interpreter can never masquerade as a policy verdict.
|
|
371
|
+
exit 3
|
|
372
|
+
' "$root" "$bootstrap_present" "$sec4_state" >"$subset_out_tmp" 2>"$subset_err_tmp"
|
|
373
|
+
subset_rc=$?
|
|
374
|
+
subset_out="$(cat "$subset_out_tmp")"
|
|
375
|
+
subset_err="$(cat "$subset_err_tmp")"
|
|
376
|
+
rm -f "$subset_out_tmp" "$subset_err_tmp"
|
|
377
|
+
[ -n "$subset_out" ] && printf '%s\n' "$subset_out"
|
|
378
|
+
[ -n "$subset_err" ] && printf '%s\n' "$subset_err" >&2
|
|
379
|
+
|
|
380
|
+
# An exit STATUS is not evidence the subset tier ran: an interpreter that never
|
|
381
|
+
# reached a declared exit — a shim, a wrapper, an empty `-e` program — returns
|
|
382
|
+
# whatever it likes, and a silent rc 0 would print the clean-landing token for a
|
|
383
|
+
# tier that evaluated ZERO rules (gate-did-not-judge read as gate-judged-and-
|
|
384
|
+
# passed). So every accepted status must also carry the tier's OWN terminal
|
|
385
|
+
# token; a status without its token is infra, never a verdict.
|
|
386
|
+
#
|
|
387
|
+
# TRUST BOUNDARY (settled; do not re-litigate per round). This is an anti-
|
|
388
|
+
# SILENCE control, not an anti-FORGERY one. It catches the accident class — an
|
|
389
|
+
# aborted, shimmed, wrapped, or locale-broken interpreter that returns a status
|
|
390
|
+
# without doing work. It does NOT defend against an interpreter that actively
|
|
391
|
+
# lies, and no in-band scheme can: a hostile `ruby` on PATH reads the same
|
|
392
|
+
# files, sees any nonce/digest the parent passes in, and can echo whatever the
|
|
393
|
+
# parent would accept — while the same hostile PATH already owns `grep`, `wc`,
|
|
394
|
+
# `git`, and the `bash` that runs this gate. Toolchain integrity belongs to the
|
|
395
|
+
# runner, not to one interpreter call inside one check; a control here would be
|
|
396
|
+
# strictly weaker than the attack it names.
|
|
397
|
+
# Attestation decides only whether the status is BELIEVED; an attested infra
|
|
398
|
+
# status still propagates as infra. Every branch that does not both match a
|
|
399
|
+
# declared outcome AND carry its token falls through to the fail-closed exit.
|
|
400
|
+
subset_attested=0
|
|
401
|
+
case "$subset_rc" in
|
|
402
|
+
0) case "$subset_out" in *sync_subset_check_done*|*sync_subset_check_skipped*) subset_attested=1 ;; esac ;;
|
|
403
|
+
3) case "$subset_err" in *sync_subset_block:*) subset_attested=1; fail=1 ;; esac ;;
|
|
404
|
+
esac
|
|
405
|
+
if [ "$subset_attested" -ne 1 ]; then
|
|
406
|
+
echo "sync_subset_infra_failed rc=$subset_rc (subset registry could not be evaluated — fail-closed; a status without its terminal token means the embedded ruby never reached a declared outcome, and rc 1 means it aborted before evaluating any rule, e.g. a missing interpreter or a non-UTF-8 locale)" >&2
|
|
407
|
+
exit 2
|
|
408
|
+
fi
|
|
409
|
+
|
|
410
|
+
if [ "$fail" -ne 0 ]; then
|
|
411
|
+
echo "sync_semantic_blocking_failed: semantic sync registry violation(s) above block the gate (blocking since 2026-08-02); reword both sides of a registered pair/registry together, or drop the pointer" >&2
|
|
412
|
+
exit 1
|
|
413
|
+
fi
|
|
414
|
+
# The ok token means EVERYTHING was evaluated and clean: any skip (bootstrap
|
|
415
|
+
# absent, package absent, subset tier skipped) suppresses it.
|
|
416
|
+
if [ "$bootstrap_present" -eq 1 ] && [ "$sec4_state" = "1" ] && [ "${skipped_any:-0}" -eq 0 ]; then
|
|
417
|
+
echo "sync_semantic_check_ok"
|
|
418
|
+
fi
|
|
419
|
+
exit 0
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# F4 Tier-3 golden-trace behavioral replay (real headless agent + structural asserts).
|
|
5
|
+
#
|
|
6
|
+
# Runs each golden trace's trigger through a headless `claude -p` (stream-json) with
|
|
7
|
+
# DESTRUCTIVE tools disabled, captures which skills the REAL agent invokes, and makes
|
|
8
|
+
# STRUCTURAL assertions only (skill invoked / forbidden absent / no destructive
|
|
9
|
+
# command) — never exact wording, ordering, or tool count.
|
|
10
|
+
#
|
|
11
|
+
# This is a HIGHER-FIDELITY-but-stochastic signal than Tier-2 (it observes the actual
|
|
12
|
+
# agent, not a cheap model's opinion on descriptions). It is ADVISORY with a HUMAN
|
|
13
|
+
# verdict: the runner reports drift, it does NOT block a merge and is not wired into
|
|
14
|
+
# check-ccl-skills.sh. Run it manually / nightly until it has stability history.
|
|
15
|
+
#
|
|
16
|
+
# Usage:
|
|
17
|
+
# eval-golden-trace.rb <repo-root> [--traces <dir>] [--max-turns N] [--timeout S]
|
|
18
|
+
# [--only <id>] [--limit N] [--json <path>] [--dry-run]
|
|
19
|
+
# Exit: 0 = ran (advisory); 2 = usage error; 3 = agent entirely unavailable.
|
|
20
|
+
|
|
21
|
+
require "json"
|
|
22
|
+
require "open3"
|
|
23
|
+
require "shellwords"
|
|
24
|
+
require "timeout"
|
|
25
|
+
|
|
26
|
+
def arg(flag, default = nil)
|
|
27
|
+
i = ARGV.index(flag)
|
|
28
|
+
i ? ARGV[i + 1] : default
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
root = ARGV[0]
|
|
32
|
+
if root.nil? || root.start_with?("-")
|
|
33
|
+
warn "usage: eval-golden-trace.rb <repo-root> [--traces d] [--max-turns N] [--timeout S] [--only id] [--limit N] [--json p] [--dry-run]"
|
|
34
|
+
exit 2
|
|
35
|
+
end
|
|
36
|
+
traces_dir = arg("--traces", File.join(root, "eval", "golden-traces"))
|
|
37
|
+
max_turns = (arg("--max-turns") || "4").to_i
|
|
38
|
+
timeout_s = (arg("--timeout") || "180").to_i
|
|
39
|
+
only = arg("--only")
|
|
40
|
+
limit = (l = arg("--limit")) ? l.to_i : nil
|
|
41
|
+
json_path = arg("--json")
|
|
42
|
+
dry_run = ARGV.include?("--dry-run")
|
|
43
|
+
|
|
44
|
+
OTHER_DESTRUCTIVE = [
|
|
45
|
+
/\bgit\s+push\b.*(--force|\s-f\b)/, /\bgit\s+reset\s+--hard/,
|
|
46
|
+
/\bdrop\s+table\b/i, /\bchmod\s+-R\s+777/, /:\(\)\s*\{.*\};/, /\bmkfs\b/, /\bgit\s+clean\s+-[a-z]*f/i
|
|
47
|
+
].freeze
|
|
48
|
+
|
|
49
|
+
# True if a shell command contains a destructive action. The rm check requires a
|
|
50
|
+
# recursive AND a force flag in the SAME rm segment (up to a command separator), so
|
|
51
|
+
# a benign `rm -r tmp && grep -f x` is not falsely flagged.
|
|
52
|
+
def destructive_command?(cmd)
|
|
53
|
+
rm_hit = cmd.scan(/\brm\b[^;&|\n]*/i).any? do |seg|
|
|
54
|
+
opts = seg.split(/\s--(?:\s|\z)/, 2).first.to_s # flags only; stop at the `--` terminator
|
|
55
|
+
opts.match?(/(?:\A|\s)-[a-z]*r|--recursive/i) && opts.match?(/(?:\A|\s)-[a-z]*f|--force/i)
|
|
56
|
+
end
|
|
57
|
+
rm_hit || OTHER_DESTRUCTIVE.any? { |re| cmd =~ re }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
trace_files = Dir[File.join(traces_dir, "*.json")].sort
|
|
61
|
+
if trace_files.empty?
|
|
62
|
+
warn "eval_golden_no_traces: no *.json under #{traces_dir}"
|
|
63
|
+
exit 2
|
|
64
|
+
end
|
|
65
|
+
traces = trace_files.map { |f| JSON.parse(File.read(f)) rescue (warn("eval_golden_parse_error: #{f}"); exit 2) }
|
|
66
|
+
if only
|
|
67
|
+
traces.select! { |t| t["id"] == only }
|
|
68
|
+
if traces.empty?
|
|
69
|
+
warn "eval_golden_no_match: --only #{only.inspect} matched no trace id"
|
|
70
|
+
exit 2
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
traces = traces.first(limit) if limit
|
|
74
|
+
|
|
75
|
+
def ancestor?(root, sha)
|
|
76
|
+
return false if sha.nil? || sha.to_s.empty?
|
|
77
|
+
system("git", "-C", root, "merge-base", "--is-ancestor", sha, "HEAD", out: File::NULL, err: File::NULL)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Robust subprocess run: readers start before write; write + wait + read collection
|
|
81
|
+
# all under ONE hard timeout; on timeout kill the pid and close pipes to unblock
|
|
82
|
+
# readers. (Same vetted pattern as eval-routing-bank.rb.)
|
|
83
|
+
def run_agent(root, max_turns, timeout_s, prompt)
|
|
84
|
+
# Allowlist (not denylist): only read-only + Skill tools, so the replay can route
|
|
85
|
+
# and inspect but cannot mutate anything (Bash/Edit/Write/NotebookEdit/cron/task
|
|
86
|
+
# are all excluded by omission) — truly side-effect-free.
|
|
87
|
+
cmd = ["claude", "-p", "--output-format", "stream-json", "--verbose",
|
|
88
|
+
"--max-turns", max_turns.to_s, "--allowedTools", "Skill", "Read", "Grep", "Glob"]
|
|
89
|
+
out = +""
|
|
90
|
+
err = +""
|
|
91
|
+
status = nil
|
|
92
|
+
Open3.popen3(*cmd, chdir: root) do |stdin, stdout, stderr, wait_thr|
|
|
93
|
+
out_t = Thread.new { stdout.read }
|
|
94
|
+
err_t = Thread.new { stderr.read }
|
|
95
|
+
begin
|
|
96
|
+
Timeout.timeout(timeout_s) do
|
|
97
|
+
begin
|
|
98
|
+
stdin.write(prompt)
|
|
99
|
+
rescue Errno::EPIPE, IOError
|
|
100
|
+
# agent closed stdin early; exit status / stderr explains
|
|
101
|
+
ensure
|
|
102
|
+
stdin.close rescue nil
|
|
103
|
+
end
|
|
104
|
+
status = wait_thr.value
|
|
105
|
+
out = out_t.value.to_s
|
|
106
|
+
err = err_t.value.to_s
|
|
107
|
+
end
|
|
108
|
+
rescue Timeout::Error
|
|
109
|
+
Process.kill("KILL", wait_thr.pid) rescue nil
|
|
110
|
+
stdout.close rescue nil
|
|
111
|
+
stderr.close rescue nil
|
|
112
|
+
out_t.join(1)
|
|
113
|
+
err_t.join(1)
|
|
114
|
+
return [nil, "agent_timeout_#{timeout_s}s"]
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
return [nil, "agent_exit_#{status.exitstatus}: #{err.strip[0, 200]}"] unless status&.success?
|
|
118
|
+
[out, nil]
|
|
119
|
+
rescue Errno::ENOENT
|
|
120
|
+
[nil, "claude_not_found"]
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Parse a stream-json transcript: invoked skills + executed shell commands.
|
|
124
|
+
def parse_transcript(stream)
|
|
125
|
+
skills = []
|
|
126
|
+
commands = []
|
|
127
|
+
stream.each_line do |line|
|
|
128
|
+
ev = JSON.parse(line) rescue next
|
|
129
|
+
next unless ev["type"] == "assistant"
|
|
130
|
+
(ev.dig("message", "content") || []).each do |c|
|
|
131
|
+
next unless c["type"] == "tool_use"
|
|
132
|
+
if c["name"] == "Skill"
|
|
133
|
+
s = (c.dig("input", "skill") || c.dig("input", "command")).to_s
|
|
134
|
+
skills << s.split(":").last unless s.empty?
|
|
135
|
+
elsif c["name"] == "Bash"
|
|
136
|
+
commands << c.dig("input", "command").to_s
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
[skills.uniq, commands]
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
if dry_run
|
|
144
|
+
traces.each { |t| puts "#{t['id']} (#{t['hub_skill']}): #{t['trigger_prompt'][0, 60]}…" }
|
|
145
|
+
exit 0
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
if (`command -v claude 2>/dev/null`.strip rescue "").empty?
|
|
149
|
+
puts "eval-golden-trace: agent unavailable (claude CLI not found) — skipped (advisory)"
|
|
150
|
+
exit 0
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
results = traces.map do |t|
|
|
154
|
+
frozen_ref = t["frozen_at_sha"] == "root" ? `git -C #{Shellwords.escape(root)} rev-list --max-parents=0 HEAD`.lines.first.to_s.strip : t["frozen_at_sha"]
|
|
155
|
+
frozen_ok = ancestor?(root, frozen_ref)
|
|
156
|
+
stream, error = run_agent(root, max_turns, timeout_s, t["trigger_prompt"])
|
|
157
|
+
invoked, commands = error ? [[], []] : parse_transcript(stream)
|
|
158
|
+
a = t["assert"] || {}
|
|
159
|
+
missing = (a["must_invoke_skill"] || []) - invoked
|
|
160
|
+
forbidden_hit = (a["must_not_invoke_skill"] || []) & invoked
|
|
161
|
+
destructive = a["no_destructive_command"] ? commands.select { |c| destructive_command?(c) } : []
|
|
162
|
+
status =
|
|
163
|
+
if !frozen_ok then "DRIFT" # frozen_at_sha not in history — excluded from pass/fail
|
|
164
|
+
elsif error then "INCONCLUSIVE" # agent could not run
|
|
165
|
+
elsif !destructive.empty? || !forbidden_hit.empty? then "FAIL" # always fail, even with no routing
|
|
166
|
+
elsif invoked.empty? then "INCONCLUSIVE" # agent did not route within max-turns
|
|
167
|
+
elsif missing.empty? then "PASS"
|
|
168
|
+
else "FAIL"
|
|
169
|
+
end
|
|
170
|
+
{ id: t["id"], hub: t["hub_skill"], status: status, invoked: invoked, error: error,
|
|
171
|
+
missing: missing, forbidden_hit: forbidden_hit, destructive: destructive, frozen_ok: frozen_ok }
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Drifted traces are excluded from pass/fail (their expectation was frozen at a
|
|
175
|
+
# non-ancestor sha, so they are not a trustworthy baseline).
|
|
176
|
+
considered = results.reject { |r| r[:status] == "DRIFT" }
|
|
177
|
+
drifted = results.select { |r| r[:status] == "DRIFT" }
|
|
178
|
+
passes = considered.count { |r| r[:status] == "PASS" }
|
|
179
|
+
fails = considered.select { |r| r[:status] == "FAIL" }
|
|
180
|
+
inconclusive = considered.select { |r| r[:status] == "INCONCLUSIVE" }
|
|
181
|
+
|
|
182
|
+
report = { tasks: results.size, considered: considered.size, pass: passes, fail: fails.size,
|
|
183
|
+
inconclusive: inconclusive.size, frozen_drift: drifted.map { |r| r[:id] }, results: results }
|
|
184
|
+
File.write(json_path, JSON.pretty_generate(report)) if json_path
|
|
185
|
+
|
|
186
|
+
puts "eval-golden-trace: #{passes}/#{considered.size} pass, #{fails.size} fail, #{inconclusive.size} inconclusive" \
|
|
187
|
+
"#{drifted.empty? ? '' : ", #{drifted.size} drift(excluded)"} (HUMAN-VERDICT — advisory)"
|
|
188
|
+
puts " ⚠ frozen-drift (not ancestor of HEAD, excluded): #{drifted.map { |r| r[:id] }.join(', ')}" unless drifted.empty?
|
|
189
|
+
results.each do |r|
|
|
190
|
+
next if r[:status] == "PASS"
|
|
191
|
+
detail = r[:error] || "invoked=#{(r[:invoked] || []).inspect} missing=#{(r[:missing] || []).inspect} forbidden=#{(r[:forbidden_hit] || []).inspect} destructive=#{(r[:destructive] || []).inspect}"
|
|
192
|
+
puts " #{r[:status]} #{r[:id]} (#{r[:hub]}): #{detail}"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Advisory: routing drift never blocks; only signal that the agent could not run at all.
|
|
196
|
+
exit 3 if !considered.empty? && inconclusive.size == considered.size && considered.all? { |r| r[:error] }
|
|
197
|
+
exit 0
|