@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,574 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
parser="$script_dir/parse_probe_result.py"
|
|
6
|
+
tmp_dir="$(mktemp -d)"
|
|
7
|
+
trap 'rm -rf "$tmp_dir"' EXIT
|
|
8
|
+
redacted_path=$'\x3cpath\x3e'
|
|
9
|
+
|
|
10
|
+
run_ok() {
|
|
11
|
+
local rc="$1" stdout="$2" stderr="${3:-}"
|
|
12
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
13
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
14
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" >/dev/null
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
run_reason() {
|
|
18
|
+
local rc="$1" stdout="$2" expected="$3" stderr="${4:-}" out
|
|
19
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
20
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
21
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr")"; then
|
|
22
|
+
printf 'expected probe parser failure for stdout: %s\n' "$stdout" >&2
|
|
23
|
+
return 1
|
|
24
|
+
fi
|
|
25
|
+
if ! printf '%s' "$out" | grep -F "$expected" >/dev/null; then
|
|
26
|
+
printf 'expected reason containing %q but got %s\n' "$expected" "$out" >&2
|
|
27
|
+
return 1
|
|
28
|
+
fi
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
run_reason_excludes() {
|
|
32
|
+
local rc="$1" stdout="$2" forbidden="$3" stderr="${4:-}" out
|
|
33
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
34
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
35
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr")"; then
|
|
36
|
+
printf 'expected probe parser failure for stdout: %s\n' "$stdout" >&2
|
|
37
|
+
return 1
|
|
38
|
+
fi
|
|
39
|
+
if printf '%s' "$out" | grep -F "$forbidden" >/dev/null; then
|
|
40
|
+
printf 'reason must not contain %q but got %s\n' "$forbidden" "$out" >&2
|
|
41
|
+
return 1
|
|
42
|
+
fi
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
run_reason_strict() {
|
|
46
|
+
local rc="$1" stdout="$2" expected="$3" stderr="${4:-}" out
|
|
47
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
48
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
49
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" --require-empty-init)"; then
|
|
50
|
+
printf 'expected strict probe parser failure for stdout: %s\n' "$stdout" >&2
|
|
51
|
+
return 1
|
|
52
|
+
fi
|
|
53
|
+
if ! printf '%s' "$out" | grep -F "$expected" >/dev/null; then
|
|
54
|
+
printf 'expected strict reason containing %q but got %s\n' "$expected" "$out" >&2
|
|
55
|
+
return 1
|
|
56
|
+
fi
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
run_ok_strict() {
|
|
60
|
+
local rc="$1" stdout="$2" stderr="${3:-}"
|
|
61
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
62
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
63
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" --require-empty-init >/dev/null
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
run_ok_expected_tools() {
|
|
67
|
+
local expected_tools="$1" rc="$2" stdout="$3" stderr="${4:-}"
|
|
68
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
69
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
70
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
71
|
+
--require-empty-init --expected-tools "$expected_tools" >/dev/null
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
run_ok_expected_tool_use() {
|
|
75
|
+
local expected_tools="$1" rc="$2" stdout="$3" stderr="${4:-}"
|
|
76
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
77
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
78
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
79
|
+
--require-empty-init --expected-tools "$expected_tools" --allow-expected-tool-use >/dev/null
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
run_reason_expected_tools_implicit_strict() {
|
|
83
|
+
local expected_tools="$1" rc="$2" stdout="$3" expected="$4" out
|
|
84
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
85
|
+
: > "$tmp_dir/stderr"
|
|
86
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
87
|
+
--expected-tools "$expected_tools")"; then
|
|
88
|
+
printf 'expected implicit-strict expected-tools parser failure\n' >&2
|
|
89
|
+
return 1
|
|
90
|
+
fi
|
|
91
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
run_reason_runtime_surface() {
|
|
95
|
+
local expected_tools="$1" rc="$2" stdout="$3" expected="$4" stderr="${5:-}" out
|
|
96
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
97
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
98
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
99
|
+
--require-empty-init --expected-tools "$expected_tools" --allow-expected-tool-use --runtime-surface-only)"; then
|
|
100
|
+
printf 'expected runtime-surface parser failure\n' >&2
|
|
101
|
+
return 1
|
|
102
|
+
fi
|
|
103
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
run_ok_runtime_surface() {
|
|
107
|
+
local expected_tools="$1" rc="$2" stdout="$3" stderr="${4:-}"
|
|
108
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
109
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
110
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
111
|
+
--require-empty-init --expected-tools "$expected_tools" --allow-expected-tool-use --runtime-surface-only >/dev/null
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
run_ok_expected_native_skills() {
|
|
115
|
+
local expected_native_skills="$1" required_native_skills="$2" rc="$3" stdout="$4"
|
|
116
|
+
local stderr="${5:-}"
|
|
117
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
118
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
119
|
+
python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
120
|
+
--require-empty-init \
|
|
121
|
+
--expected-native-skills "$expected_native_skills" \
|
|
122
|
+
--required-native-skills "$required_native_skills" >/dev/null
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
run_reason_expected_native_skills() {
|
|
126
|
+
local expected_native_skills="$1" required_native_skills="$2" rc="$3" stdout="$4"
|
|
127
|
+
local expected="$5" stderr="${6:-}" out
|
|
128
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
129
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
130
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
131
|
+
--require-empty-init \
|
|
132
|
+
--expected-native-skills "$expected_native_skills" \
|
|
133
|
+
--required-native-skills "$required_native_skills")"; then
|
|
134
|
+
printf 'expected native-skill probe parser failure\n' >&2
|
|
135
|
+
return 1
|
|
136
|
+
fi
|
|
137
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
# Runtime-surface variants used to pin the main-invocation drift guard. The
|
|
141
|
+
# first omits --allow-expected-tool-use (the wrapper always passes it, so this
|
|
142
|
+
# is the guard's defence-in-depth leg); the second exercises the owner-aware
|
|
143
|
+
# path, where a permitted-looking customization list can still carry an
|
|
144
|
+
# unexpected identifier.
|
|
145
|
+
run_reason_runtime_surface_no_tool_use_allowance() {
|
|
146
|
+
local expected_tools="$1" rc="$2" stdout="$3" expected="$4" stderr="${5:-}" out
|
|
147
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
148
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
149
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
150
|
+
--require-empty-init --expected-tools "$expected_tools" --runtime-surface-only)"; then
|
|
151
|
+
printf 'expected runtime-surface parser failure (no tool-use allowance)\n' >&2
|
|
152
|
+
return 1
|
|
153
|
+
fi
|
|
154
|
+
if printf '%s' "$out" | grep -F 'unrecognized surface-shaped init field' >/dev/null; then
|
|
155
|
+
printf 'drift reason must not launder an unallowed tool_use: %s\n' "$out" >&2
|
|
156
|
+
return 1
|
|
157
|
+
fi
|
|
158
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
run_reason_runtime_surface_native() {
|
|
162
|
+
local expected_native_skills="$1" rc="$2" stdout="$3" expected="$4" stderr="${5:-}" out
|
|
163
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
164
|
+
printf '%s' "$stderr" > "$tmp_dir/stderr"
|
|
165
|
+
if out="$(python3 "$parser" "$rc" "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
166
|
+
--require-empty-init --expected-tools "" --allow-expected-tool-use --runtime-surface-only \
|
|
167
|
+
--expected-native-skills "$expected_native_skills" \
|
|
168
|
+
--required-native-skills "$expected_native_skills")"; then
|
|
169
|
+
printf 'expected owner-aware runtime-surface parser failure\n' >&2
|
|
170
|
+
return 1
|
|
171
|
+
fi
|
|
172
|
+
if printf '%s' "$out" | grep -F 'unrecognized surface-shaped init field' >/dev/null; then
|
|
173
|
+
printf 'drift reason must not launder an unexpected identifier: %s\n' "$out" >&2
|
|
174
|
+
return 1
|
|
175
|
+
fi
|
|
176
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
run_reason_runtime_surface_implicit_strict() {
|
|
180
|
+
local stdout="$1" expected="$2" out
|
|
181
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
182
|
+
: > "$tmp_dir/stderr"
|
|
183
|
+
if out="$(python3 "$parser" 0 "$tmp_dir/stdout" "$tmp_dir/stderr" --runtime-surface-only)"; then
|
|
184
|
+
printf 'expected implicit-strict runtime-surface parser failure\n' >&2
|
|
185
|
+
return 1
|
|
186
|
+
fi
|
|
187
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
run_ok 0 'ok'
|
|
191
|
+
run_ok 0 'OK'
|
|
192
|
+
run_ok 0 $'ok\n'
|
|
193
|
+
run_ok 0 'ok' 'benign warning'
|
|
194
|
+
run_reason 0 $'banner\nok' 'Claude no-tool probe failed'
|
|
195
|
+
run_reason 0 $'Not logged in · Please run /login\nok' 'auth-path false negative'
|
|
196
|
+
run_reason 0 $'ok\nfooter' 'Claude no-tool probe failed'
|
|
197
|
+
run_reason 0 'ok' 'auth-path false negative' 'Not logged in · Please run /login'
|
|
198
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","result":"ok"}'
|
|
199
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"api_error_status":0,"result":"ok"}'
|
|
200
|
+
run_ok 0 '{"type":"result","subtype":"completed","is_error":false,"api_error_status":"200","result":"ok"}'
|
|
201
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"api_error_status":"too_many_requests","result":"ok"}' 'quota/rate limit'
|
|
202
|
+
run_reason 0 '{"subtype":"success","is_error":false,"result":"ok"}' 'Claude no-tool probe failed'
|
|
203
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
204
|
+
run_ok 0 '{"type":"result","is_error":false,"result":"ok"}'
|
|
205
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"stop","result":"ok"}'
|
|
206
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","result":"OK"}'
|
|
207
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"structured_output":"ok"}'
|
|
208
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"structured_output":"ok","result":"OK"}'
|
|
209
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","result":"The Bash tool is not available to me in this environment, so I cannot run that command.\n\nok","permission_denials":[]}'
|
|
210
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":"The Bash tool is not available to me in this environment, so I cannot run that command.\n\nok","permission_denials":[]}'
|
|
211
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","result":"I'\''ll comply with the user'\''s explicit instructions here.\n\nThe Bash tool is not available to me in this environment, so I cannot run that command.\n\nok","permission_denials":[]}'
|
|
212
|
+
run_ok 0 '{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","result":"Available tools: none. Bash is not available.\n\nok","permission_denials":[]}'
|
|
213
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"I cannot use the Bash tool here."}' 'Claude no-tool probe failed'
|
|
214
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"TOOL_ENABLED"}' 'Claude no-tool probe failed'
|
|
215
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is not available here.\nTOOL_ENABLED\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
216
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"I cannot be certain, but available tools: bash\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
217
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"I cannot be certain, but available tools: no idea -- bash, python are available\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
218
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Available tools: none. Bash is available.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
219
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Bash is available, but the Bash tool is not available right now.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
220
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is available, but I cannot guarantee output.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
221
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is available, but Bash is not available right now.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
222
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is not available, but I can use the Bash tool anyway.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
223
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is not available, so I used the Bash tool via subprocess.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
224
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Bash is not available, but I will use bash anyway.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
225
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Bash is not available so I use bash to comply.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
226
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Available tools:\n- bash\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
227
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"I am not certain whether I have any tools.\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
228
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is not available, so here is the listing: README.md scripts main.py\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
229
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"README.md\nscripts\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
230
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"The Bash tool is not available.\nREADME.md\nscripts\nok","permission_denials":[]}' 'Claude no-tool probe failed'
|
|
231
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"I will use the Bash tool now."}' 'Claude no-tool probe failed'
|
|
232
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"payload":{"answer":"ok"}}' 'Claude no-tool probe failed'
|
|
233
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'auth-path false negative' 'Not logged in · Please run /login'
|
|
234
|
+
run_ok 0 $'banner\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
235
|
+
run_reason 0 $'Not logged in · Please run /login\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'auth-path false negative'
|
|
236
|
+
run_ok 0 $'banner\n{\n "type": "result",\n "subtype": "success",\n "is_error": false,\n "result": "ok"\n}'
|
|
237
|
+
run_ok 0 $'banner\n {"type":"result","subtype":"stop_turn","is_error":false,"errors":[],"result":"ok"}'
|
|
238
|
+
run_ok 0 $'{"type":"result","subtype":"success","is_error":false,"result":"ok"}\nusage footer'
|
|
239
|
+
run_ok 0 $'{"type":"result","subtype":"success","is_error":false,"result":"ok"}\n{"type":"telemetry","message":"footer"}'
|
|
240
|
+
run_reason 0 $'{"type":"result","subtype":"success","is_error":false,"result":"ok"}\n{"type":"telemetry","message":"rate limit exceeded"}' 'quota/rate limit'
|
|
241
|
+
run_reason 0 $'{"type":"result","subtype":"error","is_error":true,"result":"boom"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'error envelope'
|
|
242
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":{"code":5},"result":"ok"}' 'error envelope'
|
|
243
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":["failed"],"result":"ok"}' 'error envelope'
|
|
244
|
+
run_reason 0 $'{"type":"result","subtype":"success","is_error":false,"result":"not ok","error":{"message":"Not logged in · Please run /login"}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'auth-path false negative'
|
|
245
|
+
run_reason 0 $'probe failed but echoed {"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'Claude no-tool probe failed'
|
|
246
|
+
|
|
247
|
+
run_reason 1 'Not logged in · Please run /login' 'auth-path false negative'
|
|
248
|
+
run_reason 1 $'Not logged in · Please run /login\n{"type":"telemetry"}' 'auth-path false negative'
|
|
249
|
+
run_reason 0 'Not logged in · Please run /login' 'auth-path false negative'
|
|
250
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Not logged in · Please run /login"}' 'auth-path false negative'
|
|
251
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"Invalid API key"}' 'auth-path false negative'
|
|
252
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"OAuth token expired"}' 'auth-path false negative'
|
|
253
|
+
run_reason 1 '401 Unauthorized' 'auth-path false negative'
|
|
254
|
+
run_reason 1 'session has ended' 'auth-path false negative'
|
|
255
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"session expired; hit your limit"}' 'auth-path false negative'
|
|
256
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"debug":"Not logged in · Please run /login","result":"not ok"}' 'auth-path false negative'
|
|
257
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"debug":"rate limit exceeded","result":"not ok"}' 'quota/rate limit'
|
|
258
|
+
run_reason 1 '{"type":"result","subtype":"error","is_error":true,"result":null,"error":{"message":"Not logged in · Please run /login"}}' 'auth-path false negative'
|
|
259
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"result":"ok","error":{"message":"rate limit exceeded"}}' 'quota/rate limit'
|
|
260
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"api_error_status":429,"result":"Please run /login; rate limit exceeded"}' 'quota/rate limit'
|
|
261
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"api_error_status":"429","result":"Please run /login"}' 'quota/rate limit'
|
|
262
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"api_error_status":401,"result":"unauthorized"}' 'auth-path false negative'
|
|
263
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"api_error_status":401,"result":"rate limit exceeded"}' 'auth-path false negative'
|
|
264
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"api_error_status":403,"result":"forbidden"}' 'permission/API access status 403'
|
|
265
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"credit balance too low"}' 'quota/rate limit'
|
|
266
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"usage limit reached"}' 'quota/rate limit'
|
|
267
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"rate limit exceeded: 50/min"}' '50/min'
|
|
268
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"rate limit exceeded for key=abcdefghijklmnopqrst"}' '<secret>'
|
|
269
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"service unavailable 503"}' 'Claude no-tool probe failed'
|
|
270
|
+
run_reason 1 '' '<secret>' 'failed token=abcdefghijklmnopqrst'
|
|
271
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"oauth_token":"abcdefghijklmnopqrst","result":"not ok"}' '<secret>'
|
|
272
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"structured_output":"ok","result":"rate limit exceeded"}' 'quota/rate limit'
|
|
273
|
+
run_reason 1 '{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'Claude no-tool probe failed'
|
|
274
|
+
run_reason 1 '' 'Claude no-tool probe failed: <path>' '/workspace/project/script failed'
|
|
275
|
+
run_reason 1 '' 'inspect local probe stderr' '/workspace/project/script'
|
|
276
|
+
run_reason 1 '' 'Claude no-tool probe failed: <path>' '/Applications/Tool/app failed'
|
|
277
|
+
run_reason 1 '' 'Claude no-tool probe failed: open:<path>' 'open:/workspace/project/script failed'
|
|
278
|
+
run_reason 1 '' 'Claude no-tool probe failed: open <path>' 'open /root failed'
|
|
279
|
+
run_reason 1 '' 'Claude no-tool probe failed: open <path>' 'open home/user/.claude/file failed'
|
|
280
|
+
run_reason 0 '{"type":"assistant","subtype":"success","is_error":false,"terminal_reason":"completed","result":"ok"}' 'missing the init event'
|
|
281
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"permission_denials":["Read"],"result":"ok"}' 'permission denials'
|
|
282
|
+
run_reason 0 '{"type":"result","subtype":"error","is_error":true,"result":"boom"}' 'error envelope'
|
|
283
|
+
run_reason 0 '{"type":"result","subtype":"error","is_error":true,"result":"failed at /workspace/example/project/file"}' "error envelope: failed at $redacted_path"
|
|
284
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":"true","result":"ok"}' 'error envelope'
|
|
285
|
+
run_reason 0 '{"type":"result","subtype":"success","is_error":false,"api_error_status":500,"result":"ok"}' 'API error status 500'
|
|
286
|
+
run_reason 1 '' 'stderr failure text' 'stderr failure text'
|
|
287
|
+
|
|
288
|
+
# --- stream-json ground-truth path (declared/invoked tools, not the reply token) ---
|
|
289
|
+
empty_init='{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}'
|
|
290
|
+
run_reason_strict 0 'ok' 'missing the required stream-json init evidence'
|
|
291
|
+
run_ok_strict 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
292
|
+
read_init='{"type":"system","subtype":"init","permissionMode":"default","tools":["Read","Grep","Glob"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}'
|
|
293
|
+
run_ok_expected_tools 'Read,Grep,Glob' 0 "$read_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
294
|
+
run_ok_expected_tool_use 'Read,Grep,Glob' 0 "$read_init"$'\n{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Read","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
295
|
+
# Claude Code 2.1.218 exposes these exact host built-ins whenever an explicit
|
|
296
|
+
# plugin enables the command registry. They are not plugin-owned commands or
|
|
297
|
+
# model tools, so a selected native skill remains valid.
|
|
298
|
+
run_ok_expected_native_skills 'testing-strategy' 'testing-strategy' 0 \
|
|
299
|
+
$'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy","workflow-launch-exec","ultrareview"],"skills":["testing-strategy"],"plugins":["ccl-skills"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
300
|
+
# The same owner-aware path remains value-exact: an arbitrary command cannot
|
|
301
|
+
# hide beside the two registered host built-ins.
|
|
302
|
+
run_reason_expected_native_skills 'testing-strategy' 'testing-strategy' 0 \
|
|
303
|
+
$'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy","workflow-launch-exec","ultrareview","unrelated:danger"],"skills":["testing-strategy"],"plugins":["ccl-skills"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' \
|
|
304
|
+
'runtime capability surface is not empty'
|
|
305
|
+
# A matching name in either executable surface is still terminal. Built-in UI
|
|
306
|
+
# registration never authorizes a tool declaration or invocation.
|
|
307
|
+
run_reason_expected_native_skills 'testing-strategy' 'testing-strategy' 0 \
|
|
308
|
+
$'{"type":"system","subtype":"init","permissionMode":"default","tools":["workflow-launch-exec"],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy","workflow-launch-exec","ultrareview"],"skills":["testing-strategy"],"plugins":["ccl-skills"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' \
|
|
309
|
+
'runtime capability surface is not empty'
|
|
310
|
+
run_reason_expected_native_skills 'testing-strategy' 'testing-strategy' 0 \
|
|
311
|
+
$'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy","workflow-launch-exec","ultrareview"],"skills":["testing-strategy"],"plugins":["ccl-skills"]}\n{"type":"assistant","message":{"content":[{"type":"tool_use","name":"workflow-launch-exec","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' \
|
|
312
|
+
'runtime capability surface is not empty'
|
|
313
|
+
run_reason_expected_tools_implicit_strict 'Read,Grep,Glob' 0 'ok' \
|
|
314
|
+
'missing the required stream-json init evidence'
|
|
315
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'auth-path false negative' 'Not logged in · Please run /login'
|
|
316
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'quota/rate limit' 'rate limit exceeded'
|
|
317
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"api_error_status":401,"result":"schema unavailable"}' 'auth-path false negative'
|
|
318
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"api_error_status":429,"result":"schema unavailable"}' 'quota/rate limit'
|
|
319
|
+
run_reason_runtime_surface '' 0 $'Not logged in · Please run /login\n'"$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime isolation surface is invalid'
|
|
320
|
+
run_reason_runtime_surface '' 0 $'rate limit exceeded\n'"$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime isolation surface is invalid'
|
|
321
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"error","is_error":true,"result":"boom"}' 'runtime isolation surface is invalid'
|
|
322
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"permission_denials":["Read"],"result":"ok"}' 'permission denials'
|
|
323
|
+
run_reason_runtime_surface '' 0 $'{\n "type":"result",\n "subtype":"success",\n "is_error":false,\n "result":"Not logged in; quoted model prose"\n}' 'missing the required stream-json init evidence'
|
|
324
|
+
run_reason_runtime_surface_implicit_strict \
|
|
325
|
+
'{"type":"result","subtype":"success","is_error":false,"result":"ok"}' \
|
|
326
|
+
'missing the required stream-json init evidence'
|
|
327
|
+
# A valid init without any terminal result event is never sufficient runtime
|
|
328
|
+
# evidence, even when every declared capability surface is clean.
|
|
329
|
+
run_reason_runtime_surface '' 0 "$empty_init"$'\n{"type":"assistant","message":{"content":[{"type":"text","text":"ok"}]}}' 'runtime isolation surface is invalid'
|
|
330
|
+
# Runtime isolation ignores model reply prose, but never structural error fields
|
|
331
|
+
# or stderr auth/quota evidence; result parsing owns the reply payload afterward.
|
|
332
|
+
run_ok_runtime_surface '' 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"Not logged in · Please run /login"}'
|
|
333
|
+
# Unknown init field, surface-shaped (non-empty list/dict): could enumerate a
|
|
334
|
+
# new invocable surface -> fails closed.
|
|
335
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capabilities":["x"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
336
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capabilities":{"enabled":true}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
337
|
+
# The reason names the offending field so the follow-up is a one-line review.
|
|
338
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capabilities":["x"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'future_capabilities'
|
|
339
|
+
# Unknown init field carrying a scalar (or an empty container) is metadata: it
|
|
340
|
+
# cannot enumerate a surface, so a routine CLI release does not fail the lane.
|
|
341
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capability":"enabled"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
342
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capability":false}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
343
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capability":0}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
344
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capability":null}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
345
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capabilities":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
346
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_capabilities":{}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
347
|
+
run_ok 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permissionMode":"default"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
348
|
+
run_ok_expected_tools 'Read,Grep,Glob' 0 $'{"type":"system","subtype":"init","tools":["Read","Grep","Glob"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permissionMode":"plan"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
349
|
+
# permissionMode stays value-pinned: it changes what the runtime may do without
|
|
350
|
+
# any tool being added. It must report as a BREACHED boundary, not as schema
|
|
351
|
+
# drift — the drift class is fallback-eligible in claude_review.sh, so routing a
|
|
352
|
+
# real privilege escalation through it would downgrade "stop the lane" to "try
|
|
353
|
+
# another client".
|
|
354
|
+
# Authority must be STATED, not merely benign. An init that stops reporting it
|
|
355
|
+
# is unverifiable, not permissive — otherwise a CLI that renames the knob makes
|
|
356
|
+
# the old name vanish and the drift policy waves the new scalar through.
|
|
357
|
+
# Unverifiable, though, is NOT a proven breach: it reports in the
|
|
358
|
+
# fallback-eligible class, because terminalizing a rename would reproduce the
|
|
359
|
+
# very outage this landing removes. Only a KNOWN field with a KNOWN-unsafe value
|
|
360
|
+
# is terminal.
|
|
361
|
+
run_reason 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'authority is no longer verifiable'
|
|
362
|
+
# A renamed knob loses the required field AND trips the authority-name guard;
|
|
363
|
+
# both land in the same unverifiable-authority class.
|
|
364
|
+
run_reason 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permission_mode":"bypassPermissions"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'authority is no longer verifiable'
|
|
365
|
+
# An ADDED authority knob keeps the required field, so it is the name guard that
|
|
366
|
+
# has to catch it — scalar shape and all.
|
|
367
|
+
run_reason 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permissionMode":"default","dangerously_skip_permissions":true}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'authority: dangerously_skip_permissions'
|
|
368
|
+
# ...but a neutral unknown scalar is still tolerated: the guard must not have
|
|
369
|
+
# quietly re-pinned the schema it was added to keep open.
|
|
370
|
+
run_ok 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permissionMode":"default","future_render_mode":"compact"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
371
|
+
bypass_init=$'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"permissionMode":"bypassPermissions"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
372
|
+
run_reason 0 "$bypass_init" 'unsafe runtime capability value on permissionMode'
|
|
373
|
+
# ...and it must NOT carry the drift phrase, which routes to fallback.
|
|
374
|
+
run_reason_excludes 0 "$bypass_init" 'unrecognized surface-shaped init field'
|
|
375
|
+
# `agents` is shape-checked only: an agent is unreachable without the Agent tool,
|
|
376
|
+
# which the `tools` allowlist already pins, so a new built-in agent name in a CLI
|
|
377
|
+
# release must not take the lane down.
|
|
378
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"agents":["Explore"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
379
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"agents":["FutureAgent"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
380
|
+
# ...but a non-string member or non-list shape is an unverifiable descriptor
|
|
381
|
+
# schema and still fails closed.
|
|
382
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"agents":[{"name":"FutureAgent"}]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
383
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"agents":"Explore"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
384
|
+
# A known scalar metadata field that turns container-shaped is still suspicious.
|
|
385
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"cwd":{"path":"workspace"}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
386
|
+
# `capabilities` (CLI 2.1.207+) announces host stream-protocol features, not
|
|
387
|
+
# model-invocable surfaces, so it is shape-checked without a value vocabulary:
|
|
388
|
+
# any list of strings passes; a non-string element or non-list shape fails.
|
|
389
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["interrupt_receipt_v1","msg_lifecycle_v1"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
390
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["interrupt_receipt_v1"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
391
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
392
|
+
# THE regression: CLI 2.1.220 added the `interrupt_cancel_queued_v1` capability
|
|
393
|
+
# token and the `fast_mode_disabled_reason` field. Under the old value-exact
|
|
394
|
+
# whitelist both made every Claude lane inconclusive on a fully isolated run.
|
|
395
|
+
run_ok 0 $'{"type":"system","subtype":"init","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"agents":["claude","Explore","general-purpose","Plan"],"capabilities":["interrupt_receipt_v1","interrupt_cancel_queued_v1","msg_lifecycle_v1"],"claude_code_version":"2.1.220","fast_mode_state":"off","fast_mode_disabled_reason":"sdk_opt_in_required","permissionMode":"default","output_style":"default","apiKeySource":"none","analytics_disabled":false,"product_feedback_disabled":false,"model":"claude-opus-5[1m]","cwd":"/tmp/x","session_id":"s","uuid":"u"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
396
|
+
# A future protocol token passes on shape alone. Deliberately a neutral name:
|
|
397
|
+
# the fixture must not read as blessing a capability that claims tool execution
|
|
398
|
+
# — if such a token ever appears, the `tools` allowlist and tool_use scan are
|
|
399
|
+
# what refuse it, and the token itself would warrant its own review.
|
|
400
|
+
run_ok 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["future_protocol_v1"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
401
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":[{"name":"interrupt_receipt_v1"}]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
402
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":{"interrupt_receipt_v1":true}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
403
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":"interrupt_receipt_v1"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
404
|
+
# duplicate JSON keys must not launder a value behind a clean last occurrence:
|
|
405
|
+
# a duplicate-key record is malformed stream evidence regardless of vocabulary.
|
|
406
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["tool_exec_v1"],"capabilities":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'malformed stream-json record'
|
|
407
|
+
# strict mode keeps the same verdicts for the drift-tolerant fields.
|
|
408
|
+
run_ok_strict 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["interrupt_receipt_v1","interrupt_cancel_queued_v1"],"fast_mode_disabled_reason":"sdk_opt_in_required"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
409
|
+
run_reason_strict 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":[{"name":"tool_exec_v1"}]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'unrecognized surface-shaped init field'
|
|
410
|
+
# The load-bearing proof is untouched: a declared tool or an invoked tool still
|
|
411
|
+
# fails even when every drift-tolerant field looks routine.
|
|
412
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Bash"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["interrupt_cancel_queued_v1"],"fast_mode_disabled_reason":"sdk_opt_in_required"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'the no-tool sandbox is not enforced'
|
|
413
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Write"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"capabilities":["interrupt_cancel_queued_v1"],"fast_mode_disabled_reason":"sdk_opt_in_required"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
414
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"fast_mode_disabled_reason":"sdk_opt_in_required"}\n{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Write","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
415
|
+
# Drift + a real breach in the same init must report as the BREACH. Review round
|
|
416
|
+
# 4 suspected `unexpected_customization_identifiers` was missing from the
|
|
417
|
+
# main-path `runtime_drift_only` guard; it stays out because every identifier it
|
|
418
|
+
# reports lands in a set that IS in the guard, and these fixtures pin that so the
|
|
419
|
+
# soft drift reason can never launder a combined case. Note which set: an
|
|
420
|
+
# identifier that is provably a customization marks its field non-empty, while a
|
|
421
|
+
# bare host-vocabulary name lands in the unclassifiable set instead — so the
|
|
422
|
+
# fixtures below use a NAMESPACED foreign identifier, which is the one that is
|
|
423
|
+
# still a proven breach.
|
|
424
|
+
run_reason_runtime_surface '' 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":["some-skill"],"plugins":[],"future_surface":["x"]}\n{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":{"mode":"challenge","findings":[]}}' 'runtime isolation surface is invalid'
|
|
425
|
+
run_reason_runtime_surface '' 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":["some-skill"],"plugins":[],"future_surface":["x"]}\n{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":{"mode":"challenge","findings":[]}}' 'unexpected_customizations=skills'
|
|
426
|
+
# ...and the main-path guard must match the probe path's breach set exactly.
|
|
427
|
+
# A tool_use with no allowance, and an unexpected identifier under an owner-aware
|
|
428
|
+
# run, are the two legs where the two guards could silently diverge again.
|
|
429
|
+
run_reason_runtime_surface_no_tool_use_allowance 'Write' 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Write"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_surface":["x"]}\n{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Write","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":{"mode":"challenge","findings":[]}}' 'runtime isolation surface is invalid'
|
|
430
|
+
run_reason_runtime_surface_native 'testing-strategy' 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy"],"skills":["testing-strategy","other-plugin:unrelated-skill"],"plugins":["ccl-skills"],"future_surface":["x"]}\n{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":{"mode":"challenge","findings":[]}}' 'unexpected_customization_identifiers=skills:other-plugin:unrelated-skill'
|
|
431
|
+
# The same fixture with a BARE unknown skill is deliberately the other verdict:
|
|
432
|
+
# it reports the soft class, because a bare name outside the built-in snapshot is
|
|
433
|
+
# not proof of a customization. Pinned explicitly so the split above is asserted
|
|
434
|
+
# rather than merely allowed by the fixture's choice of identifier. `future_surface`
|
|
435
|
+
# is dropped here on purpose — with schema drift also present the reason is the
|
|
436
|
+
# broader drift phrase, which this helper forbids by design; that combined case is
|
|
437
|
+
# pinned in the policy matrix instead.
|
|
438
|
+
run_reason_runtime_surface_native 'testing-strategy' 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["ccl-skills:testing-strategy"],"skills":["testing-strategy","unrelated-skill"],"plugins":["ccl-skills"]}\n{"type":"result","subtype":"success","is_error":false,"terminal_reason":"completed","structured_output":{"mode":"challenge","findings":[]}}' 'unclassifiable_host_vocabulary=skills:unrelated-skill'
|
|
439
|
+
# Same rule on the probe path: drift alongside a declared surface, an unexpected
|
|
440
|
+
# tool, or a tool_use must report the BREACH. The drift phrase routes to
|
|
441
|
+
# fallback, so reaching it first would launder a real breach.
|
|
442
|
+
combo_drift_breach=$'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":["some-skill"],"plugins":[],"future_surface":["x"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
443
|
+
run_reason 0 "$combo_drift_breach" 'runtime capability surface is not empty'
|
|
444
|
+
run_reason_excludes 0 "$combo_drift_breach" 'unrecognized surface-shaped init field'
|
|
445
|
+
combo_drift_tool=$'{"type":"system","subtype":"init","permissionMode":"default","tools":["Write"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_surface":["x"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
446
|
+
run_reason_excludes 0 "$combo_drift_tool" 'unrecognized surface-shaped init field'
|
|
447
|
+
combo_drift_use=$'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[],"future_surface":["x"]}\n{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Write","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
448
|
+
run_reason_excludes 0 "$combo_drift_use" 'unrecognized surface-shaped init field'
|
|
449
|
+
# A declared CCL skill/plugin surface is still rejected under drift tolerance.
|
|
450
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":["some-skill"],"plugins":[],"fast_mode_disabled_reason":"sdk_opt_in_required"}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
451
|
+
# THE flakiness fix: model hallucinates TOOL_ENABLED but every runtime surface is empty -> pass.
|
|
452
|
+
run_ok 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"num_turns":1,"permission_denials":[],"result":"TOOL_ENABLED"}'
|
|
453
|
+
# clean ok via stream -> pass.
|
|
454
|
+
run_ok 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
455
|
+
# Missing runtime-surface fields are unverifiable, not equivalent to empty.
|
|
456
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'missing required isolation fields'
|
|
457
|
+
# Any declared tool or inherited customization surface fails closed.
|
|
458
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Read"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
459
|
+
# A changed tool-descriptor shape must not be silently dropped into an empty
|
|
460
|
+
# declared set; unknown/non-string elements make init ground truth invalid.
|
|
461
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[{"name":"Bash"}],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'missing required isolation fields'
|
|
462
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[{"name":"x"}],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
463
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":["review"],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
464
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":["review"],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
465
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":[],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":["x"]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
466
|
+
# closes the latent false-negative: Bash DECLARED in init.tools, reply says ok -> fail.
|
|
467
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Bash","Read"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'Bash tool is available'
|
|
468
|
+
# Bash actually INVOKED via tool_use block -> fail (sandbox not enforced).
|
|
469
|
+
run_reason 0 "$empty_init"$'\n{"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","name":"Bash","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"num_turns":2,"result":"TOOL_ENABLED"}' 'Bash tool is available'
|
|
470
|
+
# Any non-Bash tool_use is also a hard fail.
|
|
471
|
+
run_reason 0 "$empty_init"$'\n{"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","name":"Read","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
472
|
+
# A malformed tool_use name is still evidence that a tool invocation occurred;
|
|
473
|
+
# missing/non-string names must fail closed instead of disappearing.
|
|
474
|
+
run_reason 0 "$empty_init"$'\n{"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
475
|
+
run_reason 0 "$empty_init"$'\n{"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","name":{"value":"Bash"},"input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
476
|
+
# ground-truth does not override auth/quota: 401 in a stream envelope still classifies auth.
|
|
477
|
+
run_reason 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"api_error_status":401,"result":"ok"}' 'auth-path false negative'
|
|
478
|
+
# ground-truth does not override permission denials.
|
|
479
|
+
run_reason 0 "$empty_init"$'\n{"type":"result","subtype":"success","is_error":false,"permission_denials":["Read"],"result":"ok"}' 'permission denials'
|
|
480
|
+
# A non-Bash MCP-like tool name is still a forbidden declared tool.
|
|
481
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["mcp__bashful__run"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'runtime capability surface is not empty'
|
|
482
|
+
# false-negative hardening (codex review):
|
|
483
|
+
# P1a: Bash tool_use with NO init event + clean ok reply must still fail.
|
|
484
|
+
run_reason 0 $'{"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","name":"Bash","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'Bash tool is available'
|
|
485
|
+
# P1b: malformed stream record after an init must fail closed, not pass on the ok reply.
|
|
486
|
+
run_reason 0 "$empty_init"$'\n{"type":"assistant", BROKEN_RECORD\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'ground-truth is unverifiable'
|
|
487
|
+
# confirmed stream (valid init) with a Bash tool_use line that lost its leading
|
|
488
|
+
# '{' must fail closed: in a real stream every line is JSON, so a non-JSON line
|
|
489
|
+
# is a dropped/corrupt record that may have hidden the Bash call.
|
|
490
|
+
run_reason 0 "$empty_init"$'\n"type":"assistant","message":{"role":"assistant","content":[{"type":"tool_use","name":"Bash","input":{}}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'ground-truth is unverifiable'
|
|
491
|
+
# stream-json with NO init event (e.g. dropped) must fail closed, not pass on ok.
|
|
492
|
+
run_reason 0 $'{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"ok"}]}}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'missing the init event'
|
|
493
|
+
# a plain single envelope with a trailing telemetry object is NOT stream-json -> still passes.
|
|
494
|
+
run_ok 0 $'{"type":"result","subtype":"success","is_error":false,"result":"ok"}\n{"type":"telemetry","message":"footer"}'
|
|
495
|
+
# P1b': the init record ITSELF malformed must fail closed (don't fall to text fallback).
|
|
496
|
+
run_reason 0 $'{"type":"system","subtype":"init","permissionMode":"default","tools":["Bash"] BROKEN\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'ground-truth is unverifiable'
|
|
497
|
+
# P2: a later init declaring Bash must not be masked by an earlier empty init.
|
|
498
|
+
run_reason 0 "$empty_init"$'\n{"type":"system","subtype":"init","permissionMode":"default","tools":["Bash"],"mcp_servers":[],"slash_commands":[],"skills":[],"plugins":[]}\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}' 'Bash tool is available'
|
|
499
|
+
# pretty-printed single envelope (bare-brace lines) must still pass via the text fallback.
|
|
500
|
+
run_ok 0 $'{\n "type": "result",\n "subtype": "success",\n "is_error": false,\n "result": "ok"\n}'
|
|
501
|
+
|
|
502
|
+
# --- host vocabulary is unverifiable, not a proven breach -------------------
|
|
503
|
+
# The review-skill invocation is the only shape whose customization lists are
|
|
504
|
+
# populated by the host's own built-ins, so a name this repo's snapshot does not
|
|
505
|
+
# know cannot be shown to be a user customization. It must refuse WITHOUT
|
|
506
|
+
# terminating the lane; anything that IS provably a customization must not
|
|
507
|
+
# inherit that softer class. `product-rd-workflow` is used as the selected skill
|
|
508
|
+
# because a name that is also a built-in skill trips the ambiguous-owner guard
|
|
509
|
+
# and would mask the verdict under test.
|
|
510
|
+
native_vocab_result=$'\n{"type":"result","subtype":"success","is_error":false,"result":"ok"}'
|
|
511
|
+
native_vocab_init() {
|
|
512
|
+
printf '{"type":"system","subtype":"init","permissionMode":"default","tools":%s,"mcp_servers":[],"slash_commands":%s,"skills":%s,"plugins":[{"name":"ccl-skills"}]}' \
|
|
513
|
+
"${1:-[]}" "${2:-[\"init\",\"agents\"]}" "${3:-[\"ccl-skills:product-rd-workflow\",\"dataviz\"]}"
|
|
514
|
+
}
|
|
515
|
+
run_reason_native_excludes() {
|
|
516
|
+
local stdout="$1" forbidden="$2" expected="$3" out
|
|
517
|
+
printf '%s' "$stdout" > "$tmp_dir/stdout"
|
|
518
|
+
: > "$tmp_dir/stderr"
|
|
519
|
+
if out="$(python3 "$parser" 0 "$tmp_dir/stdout" "$tmp_dir/stderr" \
|
|
520
|
+
--require-empty-init \
|
|
521
|
+
--expected-native-skills product-rd-workflow \
|
|
522
|
+
--required-native-skills product-rd-workflow)"; then
|
|
523
|
+
printf 'expected native-skill parser failure for stdout: %s\n' "$stdout" >&2
|
|
524
|
+
return 1
|
|
525
|
+
fi
|
|
526
|
+
if printf '%s' "$out" | grep -F "$forbidden" >/dev/null; then
|
|
527
|
+
printf 'a proven customization must not report as %q: %s\n' "$forbidden" "$out" >&2
|
|
528
|
+
return 1
|
|
529
|
+
fi
|
|
530
|
+
printf '%s' "$out" | grep -F "$expected" >/dev/null
|
|
531
|
+
}
|
|
532
|
+
# the base itself is accepted, or none of the rows below prove anything
|
|
533
|
+
run_ok_expected_native_skills product-rd-workflow product-rd-workflow 0 \
|
|
534
|
+
"$(native_vocab_init)$native_vocab_result"
|
|
535
|
+
# a built-in the snapshot has not caught up with, in either host-vocabulary field
|
|
536
|
+
run_reason_expected_native_skills product-rd-workflow product-rd-workflow 0 \
|
|
537
|
+
"$(native_vocab_init '[]' '["init","agents","brand-new-builtin"]')$native_vocab_result" \
|
|
538
|
+
'unclassifiable host-vocabulary entry'
|
|
539
|
+
run_reason_expected_native_skills product-rd-workflow product-rd-workflow 0 \
|
|
540
|
+
"$(native_vocab_init '[]' '["init"]' '["ccl-skills:product-rd-workflow","brand-new-skill"]')$native_vocab_result" \
|
|
541
|
+
'unclassifiable host-vocabulary entry'
|
|
542
|
+
# ...and the identifier is named, so the follow-up is a one-liner
|
|
543
|
+
run_reason_expected_native_skills product-rd-workflow product-rd-workflow 0 \
|
|
544
|
+
"$(native_vocab_init '[]' '["init","brand-new-builtin"]')$native_vocab_result" \
|
|
545
|
+
'slash_commands:brand-new-builtin'
|
|
546
|
+
# A NAMESPACED entry proves a surface beyond the one expected plugin; a
|
|
547
|
+
# path-shaped or unparseable identifier proves nothing about host origin; a
|
|
548
|
+
# duplicate is a spoofing signal. All four stay terminal.
|
|
549
|
+
run_reason_native_excludes \
|
|
550
|
+
"$(native_vocab_init '[]' '["init","evil-plugin:pwn"]')$native_vocab_result" \
|
|
551
|
+
'unclassifiable host-vocabulary' 'runtime capability surface is not empty'
|
|
552
|
+
run_reason_native_excludes \
|
|
553
|
+
"$(native_vocab_init '[]' '["init","dir/cmd"]')$native_vocab_result" \
|
|
554
|
+
'unclassifiable host-vocabulary' 'runtime capability surface is not empty'
|
|
555
|
+
run_reason_native_excludes \
|
|
556
|
+
"$(native_vocab_init '[]' '["init","ev!l"]')$native_vocab_result" \
|
|
557
|
+
'unclassifiable host-vocabulary' 'runtime capability surface is not empty'
|
|
558
|
+
run_reason_native_excludes \
|
|
559
|
+
"$(native_vocab_init '[]' '["init","init"]')$native_vocab_result" \
|
|
560
|
+
'unclassifiable host-vocabulary' 'runtime capability surface is not empty'
|
|
561
|
+
# The softer class must never absorb a real breach that happens alongside it.
|
|
562
|
+
run_reason_native_excludes \
|
|
563
|
+
"$(native_vocab_init '["Write"]' '["init","brand-new-builtin"]')$native_vocab_result" \
|
|
564
|
+
'unclassifiable host-vocabulary' 'runtime capability surface is not empty'
|
|
565
|
+
# Same policy on the main-invocation path, with the identifier in the detail
|
|
566
|
+
# fields so an operator can see which name drifted.
|
|
567
|
+
run_reason_runtime_surface_native product-rd-workflow 0 \
|
|
568
|
+
"$(native_vocab_init '[]' '["init","brand-new-builtin"]')$native_vocab_result" \
|
|
569
|
+
'unclassifiable host-vocabulary entry'
|
|
570
|
+
run_reason_runtime_surface_native product-rd-workflow 0 \
|
|
571
|
+
"$(native_vocab_init '[]' '["init","brand-new-builtin"]')$native_vocab_result" \
|
|
572
|
+
'unclassifiable_host_vocabulary=slash_commands:brand-new-builtin'
|
|
573
|
+
|
|
574
|
+
printf 'parse_probe_result_tests_ok\n'
|