@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,272 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Policy-matrix regression for the reviewer init gate.
|
|
3
|
+
#
|
|
4
|
+
# This is the self-audit oracle, not another example-based suite: it states the
|
|
5
|
+
# intended policy independently of the implementation and crosses it over the
|
|
6
|
+
# init-event shape space through both parse paths.
|
|
7
|
+
#
|
|
8
|
+
# Its own ability to fail is CHECKED HERE, not asserted. The walk used to live in
|
|
9
|
+
# init_policy_matrix.py's docstring as a set of hand-maintained mismatch counts,
|
|
10
|
+
# with a note saying to re-run it by hand when the policy changes -- so every
|
|
11
|
+
# added row silently invalidated the recorded numbers, and nothing failed when
|
|
12
|
+
# they went stale. Each mutation below weakens the parser in a named way in a
|
|
13
|
+
# disposable copy; the oracle must report at least one mismatch for every one of
|
|
14
|
+
# them. A mutation that flips nothing is a finding about the oracle, so a
|
|
15
|
+
# mutation whose pattern no longer matches is a hard failure rather than a skip.
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
+
parser="$script_dir/parse_probe_result.py"
|
|
19
|
+
tmp_dir="$(mktemp -d)"
|
|
20
|
+
trap 'rm -rf "$tmp_dir"' EXIT
|
|
21
|
+
|
|
22
|
+
pristine_digest="$(shasum -a 256 "$parser" | awk '{print $1}')"
|
|
23
|
+
|
|
24
|
+
# control: the real parser must satisfy the oracle. The case count is captured
|
|
25
|
+
# because every mutant must run the SAME number of cases -- a mutant that dies
|
|
26
|
+
# early runs fewer, and its truncated output must not read as sensitivity.
|
|
27
|
+
# Captured with the failure path made visible: under `set -e` a plain assignment
|
|
28
|
+
# from a failing substitution aborts the script with the oracle's own output
|
|
29
|
+
# swallowed into the variable, so a mismatching control looked like a silent
|
|
30
|
+
# exit 1 with no diagnosis at all.
|
|
31
|
+
control_output=""
|
|
32
|
+
control_rc=0
|
|
33
|
+
control_output="$(python3 "$script_dir/init_policy_matrix.py")" || control_rc=$?
|
|
34
|
+
printf '%s\n' "$control_output"
|
|
35
|
+
if [ "$control_rc" -ne 0 ]; then
|
|
36
|
+
printf 'the oracle does not pass against the real parser; the mutation walk below would prove nothing\n' >&2
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
# Parsed with bash's own regex rather than a pipeline. Under `pipefail` a
|
|
40
|
+
# producer whose consumer exits early (`grep -q`, `head -1`) takes SIGPIPE and
|
|
41
|
+
# the pipeline reports failure, so a check would fail nondeterministically on
|
|
42
|
+
# large output depending on the pipe buffer -- and under `set -e` an assignment
|
|
43
|
+
# from such a substitution aborts the script outright.
|
|
44
|
+
control_cases=""
|
|
45
|
+
if [[ "$control_output" =~ cases:\ ([0-9]+) ]]; then
|
|
46
|
+
control_cases="${BASH_REMATCH[1]}"
|
|
47
|
+
fi
|
|
48
|
+
if [ -z "$control_cases" ] || [ "$control_cases" -le 0 ]; then
|
|
49
|
+
printf 'control run did not report a case count; the walk below would prove nothing\n' >&2
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Each entry is NAME, then the literal to replace, then its replacement. The
|
|
54
|
+
# literals are chosen to be load-bearing lines rather than incidental text, so a
|
|
55
|
+
# refactor that moves them fails loudly here instead of quietly disarming the
|
|
56
|
+
# check.
|
|
57
|
+
mutate_and_expect_mismatch() {
|
|
58
|
+
local name="$1" find="$2" replace="$3" out
|
|
59
|
+
local mutant="$tmp_dir/mutant_$name.py"
|
|
60
|
+
if ! python3 - "$parser" "$mutant" "$find" "$replace" <<'PY'
|
|
61
|
+
import sys
|
|
62
|
+
from pathlib import Path
|
|
63
|
+
|
|
64
|
+
source, target, find, replace = sys.argv[1:5]
|
|
65
|
+
text = Path(source).read_text(encoding="utf-8")
|
|
66
|
+
if text.count(find) != 1:
|
|
67
|
+
print(f"pattern must match exactly once, matched {text.count(find)}", file=sys.stderr)
|
|
68
|
+
raise SystemExit(1)
|
|
69
|
+
Path(target).write_text(text.replace(find, replace), encoding="utf-8")
|
|
70
|
+
PY
|
|
71
|
+
then
|
|
72
|
+
printf 'mutation %s could not be applied; its anchor moved -- the sensitivity check is disarmed, not passing\n' "$name" >&2
|
|
73
|
+
return 1
|
|
74
|
+
fi
|
|
75
|
+
if out="$(python3 "$script_dir/init_policy_matrix.py" "$mutant" 2>&1)"; then
|
|
76
|
+
printf 'mutation %s flipped NOTHING; the oracle cannot detect it:\n%s\n' "$name" "$out" >&2
|
|
77
|
+
return 1
|
|
78
|
+
fi
|
|
79
|
+
# A nonzero exit is NECESSARY BUT NOT SUFFICIENT. A mutant that crashes,
|
|
80
|
+
# raises, or breaks the module also exits nonzero, so accepting the exit code
|
|
81
|
+
# alone would bank a broken build as proof of sensitivity -- a green verdict
|
|
82
|
+
# structurally incapable of being red. Require positive evidence instead: the
|
|
83
|
+
# full case count, a parsed positive mismatch total, and at least one MISMATCH
|
|
84
|
+
# record naming a case.
|
|
85
|
+
# Pure-bash matching, for the pipefail/SIGPIPE reason recorded at the control.
|
|
86
|
+
local mutant_cases="" mutant_mismatches=""
|
|
87
|
+
if [[ "$out" =~ cases:\ ([0-9]+)\ +mismatches:\ ([0-9]+) ]]; then
|
|
88
|
+
mutant_cases="${BASH_REMATCH[1]}"
|
|
89
|
+
mutant_mismatches="${BASH_REMATCH[2]}"
|
|
90
|
+
fi
|
|
91
|
+
if [ "$mutant_cases" != "$control_cases" ]; then
|
|
92
|
+
printf 'mutation %s exited nonzero without completing the matrix (cases=%s, control=%s); that is a broken mutant, not detected sensitivity:\n%s\n' \
|
|
93
|
+
"$name" "${mutant_cases:-none}" "$control_cases" "$out" >&2
|
|
94
|
+
return 1
|
|
95
|
+
fi
|
|
96
|
+
if [ -z "$mutant_mismatches" ] || [ "$mutant_mismatches" -le 0 ]; then
|
|
97
|
+
printf 'mutation %s exited nonzero but reported no positive mismatch count; the nonzero came from something other than a detected verdict change:\n%s\n' \
|
|
98
|
+
"$name" "$out" >&2
|
|
99
|
+
return 1
|
|
100
|
+
fi
|
|
101
|
+
# A crashing mutant DOES complete the matrix and DOES report mismatches: the
|
|
102
|
+
# oracle catches each parser failure per case and records it as `unparseable`.
|
|
103
|
+
# So the count alone still cannot tell "the policy verdict moved" from "the
|
|
104
|
+
# parser is broken". Require at least one mismatch whose observed value is a
|
|
105
|
+
# real verdict class, and refuse the run outright if any case came back
|
|
106
|
+
# unparseable.
|
|
107
|
+
# Matched as the VERDICT token, not as a bare substring: one legitimate case is
|
|
108
|
+
# named `unparseable-identifier`, so a substring test rejects a perfectly good
|
|
109
|
+
# mutant on the strength of a fixture's name.
|
|
110
|
+
if [[ "$out" == *"got unparseable"* ]]; then
|
|
111
|
+
printf 'mutation %s produced unparseable verdicts; that is a broken parser, not a detected verdict change:\n%s\n' "$name" "$out" >&2
|
|
112
|
+
return 1
|
|
113
|
+
fi
|
|
114
|
+
if ! [[ "$out" =~ MISMATCH[^$'\n']*got\ (tolerated|terminal|fallback) ]]; then
|
|
115
|
+
printf 'mutation %s reported a mismatch count with no MISMATCH record naming a real verdict class:\n%s\n' "$name" "$out" >&2
|
|
116
|
+
return 1
|
|
117
|
+
fi
|
|
118
|
+
# First line via parameter expansion, not `| head -1`: the consumer would exit
|
|
119
|
+
# after one line and the producer could take SIGPIPE, so under `pipefail` the
|
|
120
|
+
# SUCCESS path itself would abort the suite on a mutant with enough output.
|
|
121
|
+
printf ' sensitive to %s: %s\n' "$name" "${out%%$'\n'*}"
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
# Prove the guard above can actually fail before trusting any verdict it gives.
|
|
125
|
+
# The first version of this walk accepted ANY nonzero exit as sensitivity, so a
|
|
126
|
+
# mutant that merely broke the parser would have banked as proof — an
|
|
127
|
+
# independent review caught it, and this is the check that would have caught it
|
|
128
|
+
# here. A syntactically broken mutant completes the matrix and reports a full
|
|
129
|
+
# set of mismatches, so only the verdict-class requirement rejects it.
|
|
130
|
+
# A bare "it returned nonzero" would repeat the same defect one level up: the
|
|
131
|
+
# helper also returns nonzero when its anchor moved or the copy could not be
|
|
132
|
+
# written, and then the guard was never exercised at all. So require the
|
|
133
|
+
# SPECIFIC rejection reason in its stderr.
|
|
134
|
+
self_check_stderr="$tmp_dir/guard_self_check.err"
|
|
135
|
+
if mutate_and_expect_mismatch guard-self-check-broken-mutant \
|
|
136
|
+
'def is_bare_host_identifier(identifier: str) -> bool:' \
|
|
137
|
+
'def is_bare_host_identifier(identifier: str) -> bool # deliberately broken' \
|
|
138
|
+
>/dev/null 2>"$self_check_stderr"
|
|
139
|
+
then
|
|
140
|
+
printf 'the walk accepted a BROKEN mutant as sensitivity; its own guard does not work, so every result below is meaningless\n' >&2
|
|
141
|
+
exit 1
|
|
142
|
+
fi
|
|
143
|
+
if ! grep -q 'produced unparseable verdicts' "$self_check_stderr"; then
|
|
144
|
+
printf 'the guard self-check failed for the WRONG reason, so the guard itself is unproven and every result below is meaningless:\n' >&2
|
|
145
|
+
cat "$self_check_stderr" >&2
|
|
146
|
+
exit 1
|
|
147
|
+
fi
|
|
148
|
+
printf ' guard self-check: a broken mutant is rejected, and for the right reason\n'
|
|
149
|
+
|
|
150
|
+
mutate_and_expect_mismatch tolerate-all-unknown-containers \
|
|
151
|
+
' if isinstance(value, (list, dict)) and value:
|
|
152
|
+
unknown_fields.add(field)' \
|
|
153
|
+
' if False:
|
|
154
|
+
unknown_fields.add(field)'
|
|
155
|
+
|
|
156
|
+
mutate_and_expect_mismatch drop-authority-name-guard \
|
|
157
|
+
' segments = re.split(r"[_.\-]+|(?<=[a-z0-9])(?=[A-Z])", name)' \
|
|
158
|
+
' return False'
|
|
159
|
+
|
|
160
|
+
mutate_and_expect_mismatch drop-authority-presence-requirement \
|
|
161
|
+
'REQUIRED_PRESENT_INIT_FIELDS = ("permissionMode",)' \
|
|
162
|
+
'REQUIRED_PRESENT_INIT_FIELDS = ()'
|
|
163
|
+
|
|
164
|
+
mutate_and_expect_mismatch drop-field-name-sanitizer \
|
|
165
|
+
' text = name if isinstance(name, str) else repr(name)' \
|
|
166
|
+
' return name if isinstance(name, str) else repr(name)'
|
|
167
|
+
|
|
168
|
+
# The two directions of the host-vocabulary class. Both must be detectable, and
|
|
169
|
+
# they fail for opposite reasons: widening it launders a proven customization
|
|
170
|
+
# into the cascadable class, while removing it restores the total-outage
|
|
171
|
+
# behaviour this class exists to prevent.
|
|
172
|
+
mutate_and_expect_mismatch widen-host-vocabulary-to-any-entry \
|
|
173
|
+
' return bool(BARE_HOST_IDENTIFIER.fullmatch(identifier))' \
|
|
174
|
+
' return True'
|
|
175
|
+
|
|
176
|
+
mutate_and_expect_mismatch terminalize-host-vocabulary \
|
|
177
|
+
' return bool(BARE_HOST_IDENTIFIER.fullmatch(identifier))' \
|
|
178
|
+
' return False'
|
|
179
|
+
|
|
180
|
+
# Dynamic host command vocabulary is useful only if both halves are enforced:
|
|
181
|
+
# the baseline must affect the allow decision, and its CLI version must bind the
|
|
182
|
+
# formal init. Baseline skills are deliberately not authority because a leaked
|
|
183
|
+
# user skill would otherwise become callable in the formal run.
|
|
184
|
+
mutate_and_expect_mismatch drop-host-baseline-vocabulary \
|
|
185
|
+
' if customization_entry_allowed(
|
|
186
|
+
field,
|
|
187
|
+
entry,
|
|
188
|
+
expected_native_skills,
|
|
189
|
+
baseline_commands,
|
|
190
|
+
baseline_skills,
|
|
191
|
+
):' \
|
|
192
|
+
' if customization_entry_allowed(
|
|
193
|
+
field,
|
|
194
|
+
entry,
|
|
195
|
+
expected_native_skills,
|
|
196
|
+
set(),
|
|
197
|
+
set(),
|
|
198
|
+
):'
|
|
199
|
+
|
|
200
|
+
mutate_and_expect_mismatch authorize-host-baseline-skill \
|
|
201
|
+
' identifier in KNOWN_SAFE_BUILTIN_SKILLS
|
|
202
|
+
or identifier in selected_names' \
|
|
203
|
+
' identifier in KNOWN_SAFE_BUILTIN_SKILLS
|
|
204
|
+
or identifier in baseline_skills
|
|
205
|
+
or identifier in selected_names'
|
|
206
|
+
|
|
207
|
+
mutate_and_expect_mismatch drop-host-baseline-required-empty-check \
|
|
208
|
+
' if field not in HOST_VOCABULARY_FIELDS and init_event.get(field) != []:' \
|
|
209
|
+
' if field not in HOST_VOCABULARY_FIELDS and False:'
|
|
210
|
+
|
|
211
|
+
mutate_and_expect_mismatch widen-host-baseline-to-namespaced-entries \
|
|
212
|
+
' or any(
|
|
213
|
+
identifier not in known_host_identifiers
|
|
214
|
+
and not is_bare_host_identifier(identifier)
|
|
215
|
+
for identifier in identifiers
|
|
216
|
+
)' \
|
|
217
|
+
' or any(identifier == "<unidentified>" for identifier in identifiers)'
|
|
218
|
+
|
|
219
|
+
mutate_and_expect_mismatch drop-host-baseline-version-binding \
|
|
220
|
+
' if baseline_version is not None and ev.get("claude_code_version") != baseline_version:
|
|
221
|
+
# The two invocations no longer prove one same-version host
|
|
222
|
+
# vocabulary snapshot. Refuse this lane, but treat the mismatch as
|
|
223
|
+
# capability drift rather than a proven tool/authority breach so a
|
|
224
|
+
# different reviewer may continue.
|
|
225
|
+
unknown_fields.add("claude_code_version:host-baseline-mismatch")' \
|
|
226
|
+
' if False:
|
|
227
|
+
unknown_fields.add("claude_code_version:host-baseline-mismatch")'
|
|
228
|
+
|
|
229
|
+
# The shape gate. Dropping it lets a structured entry be judged on its `name`
|
|
230
|
+
# alone, which reaches TOLERATED when that name is an allowed built-in -- the
|
|
231
|
+
# most severe class in this file, so it needs its own mutant rather than riding
|
|
232
|
+
# on the bare-identifier one.
|
|
233
|
+
mutate_and_expect_mismatch drop-whole-value-gate \
|
|
234
|
+
' if field in HOST_VOCABULARY_FIELDS and (
|
|
235
|
+
not host_entry_is_whole(entry, identifier)
|
|
236
|
+
):' \
|
|
237
|
+
' if False:'
|
|
238
|
+
|
|
239
|
+
# ...and the weaker version of the same gate: checking only the SHAPE (a plain
|
|
240
|
+
# string) while still judging a truncated token. This is what the gate looked
|
|
241
|
+
# like before the third finding, so it must be detectable on its own.
|
|
242
|
+
mutate_and_expect_mismatch weaken-whole-value-gate-to-shape-only \
|
|
243
|
+
' normalized = entry.lower()
|
|
244
|
+
if normalized.startswith("/"):
|
|
245
|
+
normalized = normalized[1:]
|
|
246
|
+
return normalized == identifier' \
|
|
247
|
+
' return True'
|
|
248
|
+
|
|
249
|
+
# The regression a round-9 review found in the gate itself: stripping before the
|
|
250
|
+
# comparison re-introduces the lossiness the gate exists to reject, and wrapping
|
|
251
|
+
# an ALLOWLISTED name in whitespace then reaches TOLERATED.
|
|
252
|
+
mutate_and_expect_mismatch strip-before-the-whole-value-comparison \
|
|
253
|
+
' normalized = entry.lower()' \
|
|
254
|
+
' normalized = entry.strip().lower()'
|
|
255
|
+
|
|
256
|
+
mutate_and_expect_mismatch drop-host-vocabulary-breach-guard \
|
|
257
|
+
' if unclassifiable_vocabulary and not surface_breached:' \
|
|
258
|
+
' if unclassifiable_vocabulary:'
|
|
259
|
+
|
|
260
|
+
# The two parse paths implement the class separately, so each needs its own
|
|
261
|
+
# mutant: dropping it from the main-invocation predicate leaves the probe path
|
|
262
|
+
# correct, which is exactly the shape of divergence this oracle exists to catch.
|
|
263
|
+
mutate_and_expect_mismatch drop-host-vocabulary-from-main-path \
|
|
264
|
+
'runtime_drift_only = bool(unknown or unverifiable or vocabulary) and not (' \
|
|
265
|
+
'runtime_drift_only = bool(unknown or unverifiable) and not ('
|
|
266
|
+
|
|
267
|
+
if [ "$(shasum -a 256 "$parser" | awk '{print $1}')" != "$pristine_digest" ]; then
|
|
268
|
+
printf 'the mutation walk modified the real parser; every mutation must stay in a copy\n' >&2
|
|
269
|
+
exit 1
|
|
270
|
+
fi
|
|
271
|
+
|
|
272
|
+
printf 'init_policy_matrix_ok\n'
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Regression tests for the single-packet Kimi MCP server."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import hashlib
|
|
7
|
+
import json
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
import subprocess
|
|
10
|
+
import sys
|
|
11
|
+
import tempfile
|
|
12
|
+
import unittest
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
SERVER = Path(__file__).with_name("kimi_packet_mcp.py")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PacketMcpTest(unittest.TestCase):
|
|
19
|
+
def setUp(self) -> None:
|
|
20
|
+
self.temp = tempfile.TemporaryDirectory()
|
|
21
|
+
self.packet = Path(self.temp.name) / "packet.txt"
|
|
22
|
+
self.packet.write_text("alpha\nbeta\ngamma\n", encoding="utf-8")
|
|
23
|
+
digest = hashlib.sha256(self.packet.read_bytes()).hexdigest()
|
|
24
|
+
self.process = subprocess.Popen(
|
|
25
|
+
[sys.executable, str(SERVER), "--packet", str(self.packet), "--sha256", digest],
|
|
26
|
+
stdin=subprocess.PIPE,
|
|
27
|
+
stdout=subprocess.PIPE,
|
|
28
|
+
stderr=subprocess.PIPE,
|
|
29
|
+
text=True,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def tearDown(self) -> None:
|
|
33
|
+
if self.process.poll() is None:
|
|
34
|
+
self.process.terminate()
|
|
35
|
+
self.process.communicate(timeout=5)
|
|
36
|
+
self.temp.cleanup()
|
|
37
|
+
|
|
38
|
+
def request(self, request_id: int, method: str, params: dict | None = None) -> dict:
|
|
39
|
+
assert self.process.stdin is not None
|
|
40
|
+
assert self.process.stdout is not None
|
|
41
|
+
payload = {"jsonrpc": "2.0", "id": request_id, "method": method}
|
|
42
|
+
if params is not None:
|
|
43
|
+
payload["params"] = params
|
|
44
|
+
self.process.stdin.write(json.dumps(payload, separators=(",", ":")) + "\n")
|
|
45
|
+
self.process.stdin.flush()
|
|
46
|
+
return json.loads(self.process.stdout.readline())
|
|
47
|
+
|
|
48
|
+
def initialize(self) -> None:
|
|
49
|
+
response = self.request(
|
|
50
|
+
1,
|
|
51
|
+
"initialize",
|
|
52
|
+
{
|
|
53
|
+
"protocolVersion": "2025-06-18",
|
|
54
|
+
"capabilities": {},
|
|
55
|
+
"clientInfo": {"name": "test", "version": "1"},
|
|
56
|
+
},
|
|
57
|
+
)
|
|
58
|
+
self.assertEqual(response["result"]["protocolVersion"], "2025-06-18")
|
|
59
|
+
|
|
60
|
+
def test_server_contract(self) -> None:
|
|
61
|
+
self.initialize()
|
|
62
|
+
response = self.request(2, "tools/list", {})
|
|
63
|
+
|
|
64
|
+
self.assertEqual([tool["name"] for tool in response["result"]["tools"]], ["read_packet"])
|
|
65
|
+
schema = response["result"]["tools"][0]["inputSchema"]
|
|
66
|
+
self.assertEqual(schema["required"], ["byte_offset", "max_bytes"])
|
|
67
|
+
self.assertFalse(schema["additionalProperties"])
|
|
68
|
+
self.assertNotIn("path", schema["properties"])
|
|
69
|
+
|
|
70
|
+
response = self.request(
|
|
71
|
+
3,
|
|
72
|
+
"tools/call",
|
|
73
|
+
{"name": "read_packet", "arguments": {"byte_offset": 6, "max_bytes": 11}},
|
|
74
|
+
)
|
|
75
|
+
self.assertFalse(response["result"]["isError"])
|
|
76
|
+
self.assertEqual(
|
|
77
|
+
response["result"]["content"],
|
|
78
|
+
[{"type": "text", "text": "PACKET_CHUNK 6:17/17\nbeta\ngamma\n"}],
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
def test_rejects_path_arguments_and_packet_mutation(self) -> None:
|
|
82
|
+
self.initialize()
|
|
83
|
+
response = self.request(
|
|
84
|
+
2,
|
|
85
|
+
"tools/call",
|
|
86
|
+
{
|
|
87
|
+
"name": "read_packet",
|
|
88
|
+
"arguments": {"path": "/etc/passwd", "byte_offset": 0, "max_bytes": 10},
|
|
89
|
+
},
|
|
90
|
+
)
|
|
91
|
+
self.assertTrue(response["result"]["isError"])
|
|
92
|
+
|
|
93
|
+
self.packet.write_text("changed\n", encoding="utf-8")
|
|
94
|
+
response = self.request(
|
|
95
|
+
3,
|
|
96
|
+
"tools/call",
|
|
97
|
+
{"name": "read_packet", "arguments": {"byte_offset": 0, "max_bytes": 10}},
|
|
98
|
+
)
|
|
99
|
+
self.assertTrue(response["result"]["isError"])
|
|
100
|
+
self.assertEqual(response["result"]["content"][0]["text"], "packet binding changed")
|
|
101
|
+
|
|
102
|
+
def test_exact_end_offset_returns_an_empty_bound_chunk(self) -> None:
|
|
103
|
+
self.initialize()
|
|
104
|
+
response = self.request(
|
|
105
|
+
2,
|
|
106
|
+
"tools/call",
|
|
107
|
+
{
|
|
108
|
+
"name": "read_packet",
|
|
109
|
+
"arguments": {"byte_offset": len(self.packet.read_bytes()), "max_bytes": 10},
|
|
110
|
+
},
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
self.assertFalse(response["result"]["isError"])
|
|
114
|
+
self.assertEqual(
|
|
115
|
+
response["result"]["content"],
|
|
116
|
+
[{"type": "text", "text": "PACKET_CHUNK 17:17/17\n"}],
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
def test_reports_minimum_chunk_size_for_a_utf8_code_point(self) -> None:
|
|
120
|
+
packet = Path(self.temp.name) / "unicode.txt"
|
|
121
|
+
packet.write_text("你", encoding="utf-8")
|
|
122
|
+
digest = hashlib.sha256(packet.read_bytes()).hexdigest()
|
|
123
|
+
request = {
|
|
124
|
+
"jsonrpc": "2.0",
|
|
125
|
+
"id": 1,
|
|
126
|
+
"method": "tools/call",
|
|
127
|
+
"params": {
|
|
128
|
+
"name": "read_packet",
|
|
129
|
+
"arguments": {"byte_offset": 0, "max_bytes": 1},
|
|
130
|
+
},
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
completed = subprocess.run(
|
|
134
|
+
[sys.executable, str(SERVER), "--packet", str(packet), "--sha256", digest],
|
|
135
|
+
input=json.dumps(request) + "\n",
|
|
136
|
+
capture_output=True,
|
|
137
|
+
text=True,
|
|
138
|
+
timeout=5,
|
|
139
|
+
check=False,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
self.assertEqual(completed.returncode, 0)
|
|
143
|
+
response = json.loads(completed.stdout)
|
|
144
|
+
self.assertTrue(response["result"]["isError"])
|
|
145
|
+
self.assertEqual(
|
|
146
|
+
response["result"]["content"][0]["text"],
|
|
147
|
+
"packet chunk cannot make progress; retry with max_bytes >= 3",
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
def test_chunks_a_physical_line_larger_than_one_bounded_result(self) -> None:
|
|
151
|
+
packet = Path(self.temp.name) / "oversized-line.txt"
|
|
152
|
+
packet.write_text("x" * 48_001 + "\n", encoding="utf-8")
|
|
153
|
+
digest = hashlib.sha256(packet.read_bytes()).hexdigest()
|
|
154
|
+
requests = [
|
|
155
|
+
{
|
|
156
|
+
"jsonrpc": "2.0",
|
|
157
|
+
"id": 1,
|
|
158
|
+
"method": "tools/call",
|
|
159
|
+
"params": {
|
|
160
|
+
"name": "read_packet",
|
|
161
|
+
"arguments": {"byte_offset": 0, "max_bytes": 46_000},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"jsonrpc": "2.0",
|
|
166
|
+
"id": 2,
|
|
167
|
+
"method": "tools/call",
|
|
168
|
+
"params": {
|
|
169
|
+
"name": "read_packet",
|
|
170
|
+
"arguments": {"byte_offset": 46_000, "max_bytes": 46_000},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
]
|
|
174
|
+
|
|
175
|
+
completed = subprocess.run(
|
|
176
|
+
[sys.executable, str(SERVER), "--packet", str(packet), "--sha256", digest],
|
|
177
|
+
input="\n".join(json.dumps(item) for item in requests) + "\n",
|
|
178
|
+
capture_output=True,
|
|
179
|
+
text=True,
|
|
180
|
+
timeout=5,
|
|
181
|
+
check=False,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
self.assertEqual(completed.returncode, 0)
|
|
185
|
+
responses = [json.loads(line) for line in completed.stdout.splitlines()]
|
|
186
|
+
first = responses[0]["result"]["content"][0]["text"]
|
|
187
|
+
second = responses[1]["result"]["content"][0]["text"]
|
|
188
|
+
self.assertTrue(first.startswith("PACKET_CHUNK 0:46000/48002\n"))
|
|
189
|
+
self.assertTrue(second.startswith("PACKET_CHUNK 46000:48002/48002\n"))
|
|
190
|
+
self.assertLessEqual(len(first.encode("utf-8")), 48_000)
|
|
191
|
+
self.assertLessEqual(len(second.encode("utf-8")), 48_000)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
if __name__ == "__main__":
|
|
195
|
+
unittest.main()
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Fake-CLI proof that default OpenCode wrapper calls overlap without a shared
|
|
3
|
+
# lock and export only their review sessions.
|
|
4
|
+
set -uo pipefail
|
|
5
|
+
|
|
6
|
+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
7
|
+
WRAPPER="$DIR/opencode_review.sh"
|
|
8
|
+
WORK="$(mktemp -d "${TMPDIR:-/tmp}/oc-concurrency-test.XXXXXX")"
|
|
9
|
+
trap 'rm -rf "$WORK"' EXIT
|
|
10
|
+
fails=0
|
|
11
|
+
|
|
12
|
+
command -v jq >/dev/null 2>&1 || { echo "FAIL - jq is required"; exit 1; }
|
|
13
|
+
mkdir -p "$WORK/bin" "$WORK/state" "$WORK/tmp" "$WORK/source-data/opencode" "$WORK/source-state"
|
|
14
|
+
printf '%s\n' '{"deepseek":{"type":"api","key":"test-only"}}' >"$WORK/source-data/opencode/auth.json"
|
|
15
|
+
chmod 0600 "$WORK/source-data/opencode/auth.json"
|
|
16
|
+
|
|
17
|
+
cat >"$WORK/bin/opencode" <<'STUB'
|
|
18
|
+
#!/usr/bin/env bash
|
|
19
|
+
set -u
|
|
20
|
+
state="$STUB_STATE_DIR"
|
|
21
|
+
[ -z "${OPENCODE_PURE:-}" ] || touch "$state/pure_mode_forced"
|
|
22
|
+
if [ "$1" = "debug" ] && [ "${2:-}" = "agent" ]; then
|
|
23
|
+
model_full="deepseek/deepseek-v4-pro"
|
|
24
|
+
provider="${model_full%%/*}"
|
|
25
|
+
model="${model_full#*/}"
|
|
26
|
+
printf '%s|%s|debug\n' "$XDG_DATA_HOME" "$XDG_STATE_HOME" >>"$state/runtime_paths"
|
|
27
|
+
printf '{"name":"ccl-review","mode":"primary","model":{"providerID":"%s","modelID":"%s"},"tools":{"invalid":true,"question":false,"bash":false,"read":false,"glob":false,"grep":false,"edit":false,"write":false,"task":false,"webfetch":false,"todowrite":false,"skill":false,"ccl_context":false}}\n' \
|
|
28
|
+
"$provider" "$model"
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
if [ "$1" = "run" ]; then
|
|
32
|
+
project_dir=""
|
|
33
|
+
previous=""
|
|
34
|
+
for arg in "$@"; do
|
|
35
|
+
[ "$previous" = "--dir" ] && project_dir="$arg"
|
|
36
|
+
previous="$arg"
|
|
37
|
+
done
|
|
38
|
+
for prompt in "$@"; do :; done
|
|
39
|
+
auth="$XDG_DATA_HOME/opencode/auth.json"
|
|
40
|
+
case "$XDG_DATA_HOME" in "$project_dir"/*) touch "$state/auth_inside_project" ;; esac
|
|
41
|
+
if [ ! -L "$auth" ] || [ "$(readlink "$auth")" != "$STUB_SOURCE_AUTH" ] \
|
|
42
|
+
|| ! cmp -s "$auth" "$STUB_SOURCE_AUTH"; then
|
|
43
|
+
touch "$state/auth_binding_bad"
|
|
44
|
+
fi
|
|
45
|
+
if stat -Lc '%a' "$auth" >/dev/null 2>&1; then
|
|
46
|
+
auth_mode="$(stat -Lc '%a' "$auth")"
|
|
47
|
+
else
|
|
48
|
+
auth_mode="$(stat -Lf '%Lp' "$auth")"
|
|
49
|
+
fi
|
|
50
|
+
[ "$auth_mode" = 600 ] || touch "$state/auth_binding_bad"
|
|
51
|
+
[ -w "$auth" ] || touch "$state/auth_binding_bad"
|
|
52
|
+
printf '%s|%s|run\n' "$XDG_DATA_HOME" "$XDG_STATE_HOME" >>"$state/runtime_paths"
|
|
53
|
+
owner=0
|
|
54
|
+
if mkdir "$state/active" 2>/dev/null; then
|
|
55
|
+
owner=1
|
|
56
|
+
else
|
|
57
|
+
touch "$state/overlap"
|
|
58
|
+
fi
|
|
59
|
+
sleep 1
|
|
60
|
+
[ "$owner" = 1 ] && rmdir "$state/active" 2>/dev/null
|
|
61
|
+
sid="sid-review-$$"
|
|
62
|
+
printf '%s\n' "{\"type\":\"step_start\",\"sessionID\":\"$sid\",\"part\":{\"type\":\"step-start\"}}"
|
|
63
|
+
printf '%s\n' "$XDG_DATA_HOME" >"$state/$sid.data_home"
|
|
64
|
+
exit 0
|
|
65
|
+
fi
|
|
66
|
+
if [ "$1" = "export" ]; then
|
|
67
|
+
sid="$2"
|
|
68
|
+
printf '%s|%s|export\n' "$XDG_DATA_HOME" "$XDG_STATE_HOME" >>"$state/runtime_paths"
|
|
69
|
+
expected_home="$(cat "$state/$sid.data_home" 2>/dev/null || true)"
|
|
70
|
+
[ "$expected_home" = "$XDG_DATA_HOME" ] || touch "$state/export_runtime_mismatch"
|
|
71
|
+
printf '%s\n' "$sid" >>"$state/exports"
|
|
72
|
+
printf '{"id":"%s","messages":[{"info":{"role":"assistant","modelID":"deepseek-v4-pro","providerID":"deepseek"},"parts":[{"type":"text","text":"NO_BLOCKING_FINDINGS"},{"type":"step-finish","reason":"stop"}]}]}\n' "$sid"
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
exit 1
|
|
76
|
+
STUB
|
|
77
|
+
chmod +x "$WORK/bin/opencode"
|
|
78
|
+
printf 'diff --git a/x b/x\n--- a/x\n+++ b/x\n@@ -1 +1 @@\n-a\n+b\n' >"$WORK/diff.patch"
|
|
79
|
+
|
|
80
|
+
run_one() {
|
|
81
|
+
local output="$1"
|
|
82
|
+
env PATH="$WORK/bin:$PATH" TMPDIR="$WORK/tmp" STUB_STATE_DIR="$WORK/state" \
|
|
83
|
+
STUB_SOURCE_AUTH="$WORK/source-data/opencode/auth.json" \
|
|
84
|
+
XDG_DATA_HOME="$WORK/source-data" XDG_STATE_HOME="$WORK/source-state" \
|
|
85
|
+
bash "$WRAPPER" \
|
|
86
|
+
--implementer-family openai \
|
|
87
|
+
--diff-file "$WORK/diff.patch" --timeout 20 >"$output"
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
check() {
|
|
91
|
+
if eval "$2"; then echo "ok - $1"; else echo "FAIL - $1"; fails=$((fails+1)); fi
|
|
92
|
+
}
|
|
93
|
+
field() { jq -r ".${2}" "$1" 2>/dev/null; }
|
|
94
|
+
|
|
95
|
+
mkdir "$WORK/tmp/opencode-review.lock"
|
|
96
|
+
run_one "$WORK/out1.json" & p1=$!
|
|
97
|
+
run_one "$WORK/out2.json" & p2=$!
|
|
98
|
+
wait "$p1"; r1=$?
|
|
99
|
+
wait "$p2"; r2=$?
|
|
100
|
+
check "default calls both complete" '[ "$r1" = 0 ] && [ "$r2" = 0 ]'
|
|
101
|
+
check "default calls overlap in the same TMPDIR" '[ -e "$WORK/state/overlap" ]'
|
|
102
|
+
check "legacy lock is ignored and never deleted" '[ -d "$WORK/tmp/opencode-review.lock" ]'
|
|
103
|
+
check "two unique review sessions are exported once each" '[ "$(wc -l < "$WORK/state/exports" | tr -d " ")" = 2 ] && [ "$(sort -u "$WORK/state/exports" | wc -l | tr -d " ")" = 2 ]'
|
|
104
|
+
check "each wrapper uses a distinct private XDG data root" '[ "$(cut -d "|" -f1 "$WORK/state/runtime_paths" | sort -u | wc -l | tr -d " ")" = 2 ]'
|
|
105
|
+
check "each wrapper uses a distinct private XDG state root" '[ "$(cut -d "|" -f2 "$WORK/state/runtime_paths" | sort -u | wc -l | tr -d " ")" = 2 ]'
|
|
106
|
+
check "private roots do not reuse caller data or state roots" '! rg -q "$WORK/source-(data|state)" "$WORK/state/runtime_paths"'
|
|
107
|
+
check "credential runtime stays outside the reviewer project" '[ ! -e "$WORK/state/auth_inside_project" ] && ! rg -q "/oc-review\\.[^|]*/xdg-(data|state)" "$WORK/state/runtime_paths"'
|
|
108
|
+
check "run and export stay in the same private runtime" '[ ! -e "$WORK/state/export_runtime_mismatch" ]'
|
|
109
|
+
check "private runtime binds auth to the caller's refreshable credential file" '[ ! -e "$WORK/state/auth_binding_bad" ]'
|
|
110
|
+
check "caller auth file is unchanged" 'cmp -s "$WORK/source-data/opencode/auth.json" <(printf "%s\n" "{\"deepseek\":{\"type\":\"api\",\"key\":\"test-only\"}}")'
|
|
111
|
+
check "result reports private runtime and shared credential binding" '[ "$(field "$WORK/out1.json" runtime_isolation)" = per_invocation_xdg ] && [ "$(field "$WORK/out1.json" credential_binding)" = present_shared_auth_link ]'
|
|
112
|
+
check "user-installed plugins are not disabled with forced pure mode" '[ ! -e "$WORK/state/pure_mode_forced" ]'
|
|
113
|
+
|
|
114
|
+
echo '----'
|
|
115
|
+
if [ "$fails" -eq 0 ]; then
|
|
116
|
+
echo opencode_review_concurrency_tests_ok
|
|
117
|
+
else
|
|
118
|
+
echo "$fails FAILURES"
|
|
119
|
+
exit 1
|
|
120
|
+
fi
|