@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,481 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deterministic behavior suite for skills/worktree-isolation/scripts/worktree-sweep.sh.
|
|
3
|
+
#
|
|
4
|
+
# The worktree-isolation skill's cleanup rule leans on sweep's has_local_state
|
|
5
|
+
# as the mechanical arm ("对任何 ignored/未跟踪/脏文件机械判 KEEP"). This suite
|
|
6
|
+
# pins that property (and the inverse) on synthetic repos so the claim the rule
|
|
7
|
+
# cites stays behavior-true. Probes pin: exit codes, KEEP/REMOVE lines, and
|
|
8
|
+
# that dry-run never mutates. Requires git >= 2.32.
|
|
9
|
+
set -u
|
|
10
|
+
|
|
11
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
12
|
+
SWEEP="${SWEEP:-$SCRIPT_DIR/worktree-sweep.sh}"
|
|
13
|
+
[ -f "$SWEEP" ] || { echo "FAIL: sweep not found: $SWEEP" >&2; exit 1; }
|
|
14
|
+
command -v git >/dev/null 2>&1 || { echo "FAIL: git required" >&2; exit 1; }
|
|
15
|
+
|
|
16
|
+
export GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null
|
|
17
|
+
unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_COMMON_DIR GIT_CEILING_DIRECTORIES
|
|
18
|
+
|
|
19
|
+
ROOT=$(mktemp -d "${SUITE_TMPDIR:-/tmp}/worktree-sweep-test.XXXXXX") || exit 1
|
|
20
|
+
ROOT=$(cd "$ROOT" && pwd -P)
|
|
21
|
+
trap 'rm -rf "$ROOT"' EXIT
|
|
22
|
+
pass=0; fail=0
|
|
23
|
+
note() { fail=$((fail+1)); PROBE_BAD=1; printf 'FAIL %s\n' "$1" >&2; }
|
|
24
|
+
ok() { [ "${PROBE_BAD:-0}" -eq 0 ] && pass=$((pass+1)); }
|
|
25
|
+
begin() { PROBE_BAD=0; }
|
|
26
|
+
|
|
27
|
+
# mk_repo <dir> — repo with two commits on main plus a fake origin/HEAD so the
|
|
28
|
+
# sweep can confirm the default branch. Sets R_SHA2.
|
|
29
|
+
#
|
|
30
|
+
# `dev` MUST be strictly AHEAD of main, not a second name for main's tip: the
|
|
31
|
+
# sweep classifies any target whose commit equals the default-branch commit as a
|
|
32
|
+
# DEFAULT target, empties SWEEP_TARGETS, and short-circuits every candidate at the
|
|
33
|
+
# conservative "default target requires platform MR evidence" KEEP — before
|
|
34
|
+
# has_local_state and before the ancestor check ever run. With dev==main every
|
|
35
|
+
# probe below would pass for the wrong reason (verified: the suite stayed green
|
|
36
|
+
# with merged_into_any stubbed to always-true). commit-tree keeps this
|
|
37
|
+
# identity-independent and needs no worktree.
|
|
38
|
+
mk_repo() {
|
|
39
|
+
git init -q -b main "$1" || return 1
|
|
40
|
+
git -C "$1" -c user.email=t@t -c user.name=t commit -q --allow-empty -m c1
|
|
41
|
+
C1=$(git -C "$1" rev-parse HEAD)
|
|
42
|
+
git -C "$1" -c user.email=t@t -c user.name=t commit -q --allow-empty -m c2
|
|
43
|
+
R_SHA2=$(git -C "$1" rev-parse HEAD)
|
|
44
|
+
git -C "$1" update-ref refs/remotes/origin/main "$R_SHA2"
|
|
45
|
+
git -C "$1" symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
|
|
46
|
+
DEV_SHA=$(git -C "$1" -c user.email=t@t -c user.name=t commit-tree \
|
|
47
|
+
"$(git -C "$1" rev-parse "$R_SHA2^{tree}")" -p "$R_SHA2" -m dev-ahead) || return 1
|
|
48
|
+
[ -n "$DEV_SHA" ] || return 1
|
|
49
|
+
git -C "$1" update-ref refs/heads/dev "$DEV_SHA"
|
|
50
|
+
# Guard the fixture invariant itself: a dev that collapses onto main silently
|
|
51
|
+
# re-degrades every probe into the default-target branch.
|
|
52
|
+
[ "$DEV_SHA" != "$R_SHA2" ] || return 1
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# add_side <repo> — worktree whose branch tip is an ancestor of dev (sweepable
|
|
56
|
+
# candidate). Uses C1 so it is behind.
|
|
57
|
+
add_side() {
|
|
58
|
+
git -C "$1" worktree add -q -b side "$1-side" "$C1"
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# assert_keep <probe> <path> <reason-regex> <output> — the candidate path itself
|
|
62
|
+
# must carry a KEEP line with the expected reason. A bare `grep -q KEEP` is
|
|
63
|
+
# always satisfied by the main worktree's own KEEP line, so it proves nothing.
|
|
64
|
+
assert_keep() {
|
|
65
|
+
printf '%s\n' "$4" | grep -q "^ *KEEP *$2 .*$3" \
|
|
66
|
+
|| note "$1: no KEEP for $2 matching /$3/: $4"
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
# P1: ignored file blocks removal (the property the skill rule cites)
|
|
70
|
+
begin
|
|
71
|
+
d1="$ROOT/p1"; mk_repo "$d1" || exit 1
|
|
72
|
+
add_side "$d1"
|
|
73
|
+
echo 'data' > "$d1-side/out.dat" && printf 'out.dat\n' > "$d1-side/.gitignore"
|
|
74
|
+
OUT=$(cd "$d1" && bash "$SWEEP" dev 2>&1); RC=$?
|
|
75
|
+
[ "$RC" -eq 0 ] || note "p1: dry-run exit $RC on ignored-only worktree, want 0"
|
|
76
|
+
assert_keep p1 "$d1-side" 'ignored' "$OUT"
|
|
77
|
+
[ -d "$d1-side" ] || note "p1: dry-run removed an ignored-file worktree"
|
|
78
|
+
ok
|
|
79
|
+
|
|
80
|
+
# P1b: same ignored-file property under --apply (removal mode): the candidate is
|
|
81
|
+
# KEEP'd for the ignored-file reason and nothing is removed. Per the script's
|
|
82
|
+
# contract a blocked worktree is skipped per-worktree, not batch-aborting, so the
|
|
83
|
+
# rest of the sweep is expected to keep running.
|
|
84
|
+
begin
|
|
85
|
+
d1b="$ROOT/p1b"; mk_repo "$d1b" || exit 1
|
|
86
|
+
add_side "$d1b"
|
|
87
|
+
echo 'data' > "$d1b-side/out.dat" && printf 'out.dat\n' > "$d1b-side/.gitignore"
|
|
88
|
+
OUT=$(cd "$d1b" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
89
|
+
[ "$RC" -eq 0 ] || note "p1b: --apply exit $RC, want 0"
|
|
90
|
+
assert_keep p1b "$d1b-side" 'ignored' "$OUT"
|
|
91
|
+
[ -d "$d1b-side" ] || note "p1b: --apply removed an ignored-file worktree"
|
|
92
|
+
case "$OUT" in *"removed=0"*) : ;; *) note "p1b: expected removed=0: $OUT" ;; esac
|
|
93
|
+
ok
|
|
94
|
+
|
|
95
|
+
# P1c: --include-ignored is the script's own bypass of the ignored-file KEEP and
|
|
96
|
+
# it DOES destroy gitignored data products. Pinned so the 收尾 rule's ban on
|
|
97
|
+
# reaching for it stays behavior-grounded rather than prose-only.
|
|
98
|
+
begin
|
|
99
|
+
d1c="$ROOT/p1c"; mk_repo "$d1c" || exit 1
|
|
100
|
+
git -C "$d1c" worktree add -q -b side "$d1c-side" "$C1"
|
|
101
|
+
printf 'out.dat\n' > "$d1c-side/.gitignore"
|
|
102
|
+
git -C "$d1c-side" add .gitignore
|
|
103
|
+
git -C "$d1c-side" -c user.email=t@t -c user.name=t commit -q -m gitignore
|
|
104
|
+
# dev must still contain side's tip, so the only thing left blocking is the ignored file
|
|
105
|
+
side_tip=$(git -C "$d1c-side" rev-parse HEAD)
|
|
106
|
+
dev_tip=$(git -C "$d1c" -c user.email=t@t -c user.name=t commit-tree \
|
|
107
|
+
"$(git -C "$d1c" rev-parse "$side_tip^{tree}")" -p "$side_tip" -m dev-ahead)
|
|
108
|
+
[ -n "$dev_tip" ] || { note "p1c fixture: commit-tree produced empty dev_tip"; exit 1; }
|
|
109
|
+
git -C "$d1c" update-ref refs/heads/dev "$dev_tip"
|
|
110
|
+
echo 'precious' > "$d1c-side/out.dat"
|
|
111
|
+
OUT=$(cd "$d1c" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
112
|
+
[ "$RC" -eq 0 ] || note "p1c: default --apply exit $RC, want 0"
|
|
113
|
+
assert_keep p1c "$d1c-side" 'ignored' "$OUT"
|
|
114
|
+
[ -d "$d1c-side" ] || note "p1c: default --apply removed an ignored-only worktree"
|
|
115
|
+
OUT=$(cd "$d1c" && bash "$SWEEP" dev --apply --include-ignored 2>&1); RC=$?
|
|
116
|
+
[ "$RC" -eq 0 ] || note "p1c: --include-ignored --apply exit $RC, want 0 (documented success contract)"
|
|
117
|
+
[ -e "$d1c-side/out.dat" ] && note "p1c: --include-ignored did NOT delete the ignored product; the rule's ban assumes it does: $OUT"
|
|
118
|
+
case "$OUT" in *"removed=1"*) : ;; *) note "p1c: --include-ignored expected removed=1: $OUT" ;; esac
|
|
119
|
+
ok
|
|
120
|
+
|
|
121
|
+
# P1d: the KEEP line for an ignored/dirty worktree must SHOW the offending entries.
|
|
122
|
+
# The cleanup rule asks the operator to grade what is there by recompute cost before
|
|
123
|
+
# reaching for --include-ignored; a bare "ignored files present" reason gives them
|
|
124
|
+
# nothing to grade, which is what makes a batch-wide waiver blind.
|
|
125
|
+
begin
|
|
126
|
+
d1d="$ROOT/p1d"; mk_repo "$d1d" || exit 1
|
|
127
|
+
add_side "$d1d"
|
|
128
|
+
printf 'big.feather\n' > "$d1d-side/.gitignore"
|
|
129
|
+
echo 'expensive' > "$d1d-side/big.feather"
|
|
130
|
+
OUT=$(cd "$d1d" && bash "$SWEEP" dev 2>&1); RC=$?
|
|
131
|
+
[ "$RC" -eq 0 ] || note "p1d: dry-run exit $RC, want 0"
|
|
132
|
+
printf '%s\n' "$OUT" | grep -q 'big\.feather' \
|
|
133
|
+
|| note "p1d: KEEP output does not name the ignored entry, so recompute cost cannot be judged from it: $OUT"
|
|
134
|
+
ok
|
|
135
|
+
|
|
136
|
+
# P1e: --include-ignored is batch-wide BY DESIGN — it is not a per-worktree picker.
|
|
137
|
+
# Pinned deliberately, not as an aspiration: the risk owner chose usability here
|
|
138
|
+
# (nearly every project's tests emit ignored artifacts, so per-item confirmation
|
|
139
|
+
# would gate every cleanup). The mitigation is P1d's visible KEEP detail plus the
|
|
140
|
+
# rule's read-before-you-sweep step, NOT a selection prompt. If someone later adds
|
|
141
|
+
# per-worktree selection, this probe is the one that must be rewritten on purpose.
|
|
142
|
+
begin
|
|
143
|
+
d1e="$ROOT/p1e"; mk_repo "$d1e" || exit 1
|
|
144
|
+
git -C "$d1e" worktree add -q -b cache-only "$d1e-cache" "$C1"
|
|
145
|
+
git -C "$d1e" worktree add -q -b data-only "$d1e-data" "$C1"
|
|
146
|
+
printf 'node_modules/\ndata/\n' > "$d1e/.gitignore"
|
|
147
|
+
git -C "$d1e" add .gitignore
|
|
148
|
+
git -C "$d1e" -c user.email=t@t -c user.name=t commit -q -m gitignore
|
|
149
|
+
for b in cache-only data-only; do
|
|
150
|
+
git -C "$d1e" branch -f "$b" main >/dev/null 2>&1
|
|
151
|
+
done
|
|
152
|
+
git -C "$d1e-cache" checkout -q cache-only 2>/dev/null; git -C "$d1e-cache" reset -q --hard main
|
|
153
|
+
git -C "$d1e-data" checkout -q data-only 2>/dev/null; git -C "$d1e-data" reset -q --hard main
|
|
154
|
+
mkdir -p "$d1e-cache/node_modules" && echo x > "$d1e-cache/node_modules/dep.js"
|
|
155
|
+
mkdir -p "$d1e-data/data" && echo 'expensive' > "$d1e-data/data/big.feather"
|
|
156
|
+
dev_tip=$(git -C "$d1e" -c user.email=t@t -c user.name=t commit-tree \
|
|
157
|
+
"$(git -C "$d1e" rev-parse 'main^{tree}')" -p "$(git -C "$d1e" rev-parse main)" -m dev-ahead)
|
|
158
|
+
[ -n "$dev_tip" ] || { note "p1e fixture: empty dev_tip"; exit 1; }
|
|
159
|
+
git -C "$d1e" update-ref refs/heads/dev "$dev_tip"
|
|
160
|
+
OUT=$(cd "$d1e" && bash "$SWEEP" dev 2>&1); RC=$?
|
|
161
|
+
[ "$RC" -eq 0 ] || note "p1e: dry-run exit $RC, want 0"
|
|
162
|
+
# Default run: both kept, and both name their ignored payload so the operator can tell them apart.
|
|
163
|
+
printf '%s\n' "$OUT" | grep -q 'node_modules' || note "p1e: cache worktree payload not shown: $OUT"
|
|
164
|
+
printf '%s\n' "$OUT" | grep -q 'data/' || note "p1e: data worktree payload not shown: $OUT"
|
|
165
|
+
OUT=$(cd "$d1e" && bash "$SWEEP" dev --apply --include-ignored 2>&1); RC=$?
|
|
166
|
+
[ "$RC" -eq 0 ] || note "p1e: --include-ignored --apply exit $RC, want 0"
|
|
167
|
+
[ -d "$d1e-cache" ] && note "p1e: cache-only worktree survived --include-ignored: $OUT"
|
|
168
|
+
[ -d "$d1e-data" ] && note "p1e: ACCEPTED-RISK CHANGED — the data worktree now survives --include-ignored; if that is intended, rewrite this probe and the SKILL.md criterion together: $OUT"
|
|
169
|
+
ok
|
|
170
|
+
|
|
171
|
+
# P2: dirty untracked (not ignored) blocks removal
|
|
172
|
+
begin
|
|
173
|
+
d2="$ROOT/p2"; mk_repo "$d2" || exit 1
|
|
174
|
+
add_side "$d2"
|
|
175
|
+
echo 'x' > "$d2-side/loose.txt"
|
|
176
|
+
OUT=$(cd "$d2" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
177
|
+
[ "$RC" -eq 0 ] || note "p2: --apply exit $RC, want 0 (non-zero = unscanned, stop)"
|
|
178
|
+
assert_keep p2 "$d2-side" 'untracked' "$OUT"
|
|
179
|
+
[ -d "$d2-side" ] || note "p2: worktree removed despite untracked file"
|
|
180
|
+
# --include-ignored relaxes ONLY the ignored class; real untracked work must still
|
|
181
|
+
# block, otherwise that flag would silently discard uncommitted work too.
|
|
182
|
+
OUT=$(cd "$d2" && bash "$SWEEP" dev --apply --include-ignored 2>&1); RC=$?
|
|
183
|
+
[ "$RC" -eq 0 ] || note "p2: --include-ignored --apply exit $RC, want 0"
|
|
184
|
+
assert_keep p2 "$d2-side" 'untracked' "$OUT"
|
|
185
|
+
[ -e "$d2-side/loose.txt" ] || note "p2: --include-ignored discarded a real untracked file"
|
|
186
|
+
ok
|
|
187
|
+
|
|
188
|
+
# P2b: an UNSCANNABLE worktree (git status fails) must be KEEP, never read as
|
|
189
|
+
# clean. Empty output from a failed scan is the false negative the manual
|
|
190
|
+
# pre-scan rule forbids ("必须 exit 0"); sweep's built-in check must match it,
|
|
191
|
+
# because the 收尾 rule exempts sweep runs from the manual pre-scan.
|
|
192
|
+
begin
|
|
193
|
+
d2b="$ROOT/p2b"; mk_repo "$d2b" || exit 1
|
|
194
|
+
add_side "$d2b"
|
|
195
|
+
printf 'out.dat\n' > "$d2b-side/.gitignore"
|
|
196
|
+
echo 'precious' > "$d2b-side/out.dat"
|
|
197
|
+
side_gitdir=$(git -C "$d2b-side" rev-parse --absolute-git-dir)
|
|
198
|
+
printf 'GARBAGE' > "$side_gitdir/index" # corrupt index -> status exits non-zero, empty stdout
|
|
199
|
+
git -C "$d2b-side" status --porcelain >/dev/null 2>&1 \
|
|
200
|
+
&& note "p2b fixture: git status still succeeds, unscannable case not reproduced"
|
|
201
|
+
if [ "${PROBE_BAD:-0}" -eq 0 ]; then
|
|
202
|
+
OUT=$(cd "$d2b" && bash "$SWEEP" dev 2>&1); RC=$?
|
|
203
|
+
[ "$RC" -eq 0 ] || note "p2b: dry-run exit $RC, want 0"
|
|
204
|
+
assert_keep p2b "$d2b-side" 'unscannable' "$OUT"
|
|
205
|
+
printf '%s\n' "$OUT" | grep -q 'WOULD-REMOVE' \
|
|
206
|
+
&& note "p2b: unscannable worktree listed as WOULD-REMOVE (dry-run KEEP list is the preservation surface): $OUT"
|
|
207
|
+
[ -e "$d2b-side/out.dat" ] || note "p2b: dry-run destroyed the ignored product"
|
|
208
|
+
fi
|
|
209
|
+
ok
|
|
210
|
+
|
|
211
|
+
# P3: clean integrated worktree IS removed (the removal arm works).
|
|
212
|
+
begin
|
|
213
|
+
# side's own commit must sit on dev but NOT on main (else it is a conservative
|
|
214
|
+
# default-target KEEP by design).
|
|
215
|
+
d3="$ROOT/p3"; mk_repo "$d3" || exit 1
|
|
216
|
+
git -C "$d3" worktree add -q -b side "$d3-side" "$C1"
|
|
217
|
+
git -C "$d3-side" -c user.email=t@t -c user.name=t commit -q --allow-empty -m side-only
|
|
218
|
+
side_tip=$(git -C "$d3-side" rev-parse HEAD)
|
|
219
|
+
dev_tip=$(git -C "$d3" -c user.email=t@t -c user.name=t commit-tree "$(git -C "$d3" rev-parse "$side_tip^{tree}")" -p "$side_tip" -m dev-ahead)
|
|
220
|
+
[ -n "$dev_tip" ] || { note "p3 fixture: commit-tree produced empty dev_tip"; exit 1; }
|
|
221
|
+
git -C "$d3" update-ref refs/heads/dev "$dev_tip"
|
|
222
|
+
OUT=$(cd "$d3" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
223
|
+
[ "$RC" -eq 0 ] || note "p3: --apply exit $RC, want 0 (documented success contract)"
|
|
224
|
+
[ -d "$d3-side" ] && note "p3: clean integrated worktree not removed: $OUT"
|
|
225
|
+
case "$OUT" in *"removed=1"*) ok ;; *) note "p3: expected removed=1: $OUT" ;; esac
|
|
226
|
+
|
|
227
|
+
# P4: dry-run mutates nothing — with a REAL removal candidate present (clean +
|
|
228
|
+
# integrated), so "nothing happened" is a property of dry-run, not of an empty
|
|
229
|
+
# candidate set.
|
|
230
|
+
begin
|
|
231
|
+
d4="$ROOT/p4"; mk_repo "$d4" || exit 1
|
|
232
|
+
add_side "$d4"
|
|
233
|
+
before=$(git -C "$d4" worktree list --porcelain | grep -c '^worktree ')
|
|
234
|
+
OUT=$(cd "$d4" && bash "$SWEEP" dev 2>&1); RC=$?
|
|
235
|
+
[ "$RC" -eq 0 ] || note "p4: dry-run exit $RC"
|
|
236
|
+
printf '%s\n' "$OUT" | grep -q "^ *WOULD-REMOVE *$d4-side " \
|
|
237
|
+
|| note "p4: no WOULD-REMOVE for the candidate, so dry-run had nothing to withhold: $OUT"
|
|
238
|
+
after=$(git -C "$d4" worktree list --porcelain | grep -c '^worktree ')
|
|
239
|
+
[ "$before" = "$after" ] || note "p4: dry-run changed worktree count $before -> $after"
|
|
240
|
+
[ -d "$d4-side" ] || note "p4: dry-run removed the candidate"
|
|
241
|
+
ok
|
|
242
|
+
|
|
243
|
+
# P5: not-integrated worktree is kept (ancestor check has teeth). `feature` is
|
|
244
|
+
# ahead of dev, and dev is a non-default target, so merged_into_any is the
|
|
245
|
+
# predicate that must produce the KEEP — anchored on its own reason text.
|
|
246
|
+
begin
|
|
247
|
+
d5="$ROOT/p5"; mk_repo "$d5" || exit 1
|
|
248
|
+
git -C "$d5" worktree add -q -b feature "$d5-side"
|
|
249
|
+
git -C "$d5-side" -c user.email=t@t -c user.name=t commit -q --allow-empty -m ahead
|
|
250
|
+
OUT=$(cd "$d5" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
251
|
+
[ "$RC" -eq 0 ] || note "p5: --apply exit $RC, want 0 (non-zero = unscanned, stop)"
|
|
252
|
+
[ -d "$d5-side" ] || note "p5: not-integrated worktree removed"
|
|
253
|
+
assert_keep p5 "$d5-side" 'not merged' "$OUT"
|
|
254
|
+
ok
|
|
255
|
+
|
|
256
|
+
# P6a: an explicit DEFAULT-branch target is conservatively KEEP even when the
|
|
257
|
+
# candidate is clean and an ancestor (needs platform MR evidence, not ancestry).
|
|
258
|
+
begin
|
|
259
|
+
d6a="$ROOT/p6a"; mk_repo "$d6a" || exit 1
|
|
260
|
+
add_side "$d6a"
|
|
261
|
+
OUT=$(cd "$d6a" && bash "$SWEEP" main --apply 2>&1); RC=$?
|
|
262
|
+
[ "$RC" -eq 0 ] || note "p6a: --apply exit $RC, want 0 (non-zero = unscanned, stop)"
|
|
263
|
+
[ -d "$d6a-side" ] || note "p6a: default-target worktree removed (must be conservative KEEP)"
|
|
264
|
+
assert_keep p6a "$d6a-side" 'MR evidence' "$OUT"
|
|
265
|
+
ok
|
|
266
|
+
|
|
267
|
+
# P6b: removal never touches remote-tracking refs (绝不碰远端)
|
|
268
|
+
begin
|
|
269
|
+
d6b="$ROOT/p6b"; mk_repo "$d6b" || exit 1
|
|
270
|
+
git -C "$d6b" worktree add -q -b side "$d6b-side" "$C1"
|
|
271
|
+
git -C "$d6b-side" -c user.email=t@t -c user.name=t commit -q --allow-empty -m side-only
|
|
272
|
+
side_tip=$(git -C "$d6b-side" rev-parse HEAD)
|
|
273
|
+
dev_tip=$(git -C "$d6b" -c user.email=t@t -c user.name=t commit-tree "$(git -C "$d6b" rev-parse "$side_tip^{tree}")" -p "$side_tip" -m dev-ahead)
|
|
274
|
+
[ -n "$dev_tip" ] || { note "p6b fixture: commit-tree produced empty dev_tip"; exit 1; }
|
|
275
|
+
git -C "$d6b" update-ref refs/heads/dev "$dev_tip"
|
|
276
|
+
origin_main_before=$(git -C "$d6b" rev-parse refs/remotes/origin/main)
|
|
277
|
+
OUT=$(cd "$d6b" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
278
|
+
[ "$RC" -eq 0 ] || note "p6b: --apply exit $RC, want 0 (documented success contract)"
|
|
279
|
+
[ -d "$d6b-side" ] && note "p6b fixture: side not removed, remote check moot: $OUT"
|
|
280
|
+
if [ "${PROBE_BAD:-0}" -eq 0 ]; then
|
|
281
|
+
[ "$(git -C "$d6b" rev-parse refs/remotes/origin/main)" = "$origin_main_before" ] \
|
|
282
|
+
|| note "p6b: remote-tracking ref moved (sweep must not touch remotes)"
|
|
283
|
+
git -C "$d6b" rev-parse --verify --quiet refs/remotes/origin/main >/dev/null \
|
|
284
|
+
|| note "p6b: remote-tracking ref deleted (sweep must not touch remotes)"
|
|
285
|
+
grep -qE '^\s*git push' "$SWEEP" && note "p6b: sweep contains a push command"
|
|
286
|
+
fi
|
|
287
|
+
ok
|
|
288
|
+
|
|
289
|
+
# P6c: a release-named branch is never auto-removed, and the probe is differential:
|
|
290
|
+
# the SAME repo also holds an ordinary merged feature worktree that MUST be removed.
|
|
291
|
+
# Without that control the probe would pass under any blanket-KEEP regression (e.g.
|
|
292
|
+
# the conservative default-target path swallowing everything), proving nothing about
|
|
293
|
+
# the release predicate. `dev` is the non-default target so both candidates reach the
|
|
294
|
+
# ancestor check; both are merged, so the only thing separating them is the name.
|
|
295
|
+
begin
|
|
296
|
+
d6c="$ROOT/p6c"; mk_repo "$d6c" || exit 1
|
|
297
|
+
git -C "$d6c" worktree add -q -b release/v2 "$d6c-rel" "$C1"
|
|
298
|
+
git -C "$d6c" worktree add -q -b feature-x "$d6c-feat" "$C1"
|
|
299
|
+
rel_dev=$(git -C "$d6c" -c user.email=t@t -c user.name=t commit-tree "$(git -C "$d6c" rev-parse "$C1^{tree}")" -p "$C1" -m dev-ahead)
|
|
300
|
+
[ -n "$rel_dev" ] || { note "p6c fixture: commit-tree produced empty dev tip"; exit 1; }
|
|
301
|
+
git -C "$d6c" update-ref refs/heads/dev "$rel_dev"
|
|
302
|
+
OUT=$(cd "$d6c" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
303
|
+
[ "$RC" -eq 0 ] || note "p6c: --apply exit $RC, want 0"
|
|
304
|
+
[ -d "$d6c-rel" ] || note "p6c: release-named worktree was removed — release branches are never auto-deleted"
|
|
305
|
+
assert_keep p6c "$d6c-rel" 'release-named' "$OUT"
|
|
306
|
+
[ -d "$d6c-feat" ] && note "p6c: control feature worktree survived — the probe cannot tell a release KEEP from a blanket KEEP: $OUT"
|
|
307
|
+
ok
|
|
308
|
+
|
|
309
|
+
# P6d: the release predicate is name-based, case-insensitive, and matches anywhere in
|
|
310
|
+
# the branch name — pinned so a later tightening to a `release/*` prefix or a
|
|
311
|
+
# case-sensitive compare cannot silently narrow it.
|
|
312
|
+
begin
|
|
313
|
+
d6d="$ROOT/p6d"; mk_repo "$d6d" || exit 1
|
|
314
|
+
git -C "$d6d" worktree add -q -b hotfix-RELEASE-1.2 "$d6d-side" "$C1"
|
|
315
|
+
side_dev=$(git -C "$d6d" -c user.email=t@t -c user.name=t commit-tree "$(git -C "$d6d" rev-parse "$C1^{tree}")" -p "$C1" -m dev-ahead)
|
|
316
|
+
git -C "$d6d" update-ref refs/heads/dev "$side_dev"
|
|
317
|
+
OUT=$(cd "$d6d" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
318
|
+
[ "$RC" -eq 0 ] || note "p6d: --apply exit $RC, want 0"
|
|
319
|
+
[ -d "$d6d-side" ] || note "p6d: mixed-case substring release name was removed"
|
|
320
|
+
assert_keep p6d "$d6d-side" 'release-named' "$OUT"
|
|
321
|
+
ok
|
|
322
|
+
|
|
323
|
+
# P6e: the keyword set is deliberately NOT extensible — an `rc/` branch is swept.
|
|
324
|
+
# Pinned on purpose so a later "just make it configurable" re-add has to face the
|
|
325
|
+
# travel problem first (three adversarial rounds each found a config source that
|
|
326
|
+
# does not reach a fresh clone).
|
|
327
|
+
begin
|
|
328
|
+
d6e="$ROOT/p6e"; mk_repo "$d6e" || exit 1
|
|
329
|
+
git -C "$d6e" worktree add -q -b rc/1.2 "$d6e-side" "$C1"
|
|
330
|
+
rc_dev=$(git -C "$d6e" -c user.email=t@t -c user.name=t commit-tree "$(git -C "$d6e" rev-parse "$C1^{tree}")" -p "$C1" -m dev-ahead)
|
|
331
|
+
git -C "$d6e" update-ref refs/heads/dev "$rc_dev"
|
|
332
|
+
OUT=$(cd "$d6e" && bash "$SWEEP" dev 2>&1)
|
|
333
|
+
printf '%s\n' "$OUT" | grep -q "WOULD-REMOVE $d6e-side" \
|
|
334
|
+
|| note "p6e: rc/1.2 was protected — the keyword set must stay exactly the one documented keyword: $OUT"
|
|
335
|
+
ok
|
|
336
|
+
|
|
337
|
+
# P6: setup failure exits 2 with a visible message (no silent no-op)
|
|
338
|
+
begin
|
|
339
|
+
d6="$ROOT/p6"; mkdir -p "$d6"
|
|
340
|
+
OUT=$(cd "$d6" && bash "$SWEEP" dev --apply 2>&1); RC=$?
|
|
341
|
+
[ "$RC" -eq 2 ] || note "p6: non-repo exit $RC, want 2"
|
|
342
|
+
[ -n "$OUT" ] || note "p6: setup failure produced no message"
|
|
343
|
+
ok
|
|
344
|
+
|
|
345
|
+
# P7: suite self-sensitivity. The probes above only prove the CURRENT script
|
|
346
|
+
# behaves; they do not prove the suite would NOTICE if it stopped. That gap is
|
|
347
|
+
# not hypothetical here: an earlier revision of this suite stayed fully green
|
|
348
|
+
# with merged_into_any stubbed to always-true, because the fixture made `dev`
|
|
349
|
+
# equal to main's tip and every probe short-circuited at the default-target KEEP.
|
|
350
|
+
# So the mutation check is part of the suite, not a one-off local ritual: each
|
|
351
|
+
# mutant must make this same suite fail FOR THE RIGHT REASON. A bare non-zero exit
|
|
352
|
+
# is not that reason — a mutant that breaks syntax or fixture setup also exits
|
|
353
|
+
# non-zero, and banking that as "the suite is sensitive" is a false green wearing a
|
|
354
|
+
# RED's clothes. So each mutant must still parse (`bash -n`) AND the child's
|
|
355
|
+
# failure must name the probe that owns the mutated predicate. Child runs skip P7
|
|
356
|
+
# (no recursion) and their expected FAIL output is captured, not printed.
|
|
357
|
+
if [ "${SWEEP_SUITE_MUTATION_CHILD:-0}" = "0" ]; then
|
|
358
|
+
MUT_DIR="$ROOT/mutants"; mkdir -p "$MUT_DIR"
|
|
359
|
+
|
|
360
|
+
# mk_mutant <name> <literal-anchor-line> <line-to-insert-after-anchor>
|
|
361
|
+
# Anchor matching is a literal substring test (index), not a regex, so the
|
|
362
|
+
# shell-function anchors below need no escaping and cannot silently mis-match.
|
|
363
|
+
mk_mutant() {
|
|
364
|
+
awk -v anchor="$2" -v inject="$3" '
|
|
365
|
+
{ print }
|
|
366
|
+
index($0, anchor) && !seen { print inject; seen = 1 }
|
|
367
|
+
' "$SWEEP" > "$MUT_DIR/$1.sh" || return 1
|
|
368
|
+
# A refactor that moves the anchor must fail loudly, not silently produce a
|
|
369
|
+
# mutant identical to the original (which would pass and prove nothing).
|
|
370
|
+
grep -Fq -- "$3" "$MUT_DIR/$1.sh"
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
begin
|
|
374
|
+
mk_mutant has_local_state_never_blocks 'has_local_state() {' ' return 1 # MUTANT' \
|
|
375
|
+
|| note "p7: could not build has_local_state mutant (anchor moved?)"
|
|
376
|
+
mk_mutant merged_into_any_always_true 'merged_into_any() {' ' return 0 # MUTANT' \
|
|
377
|
+
|| note "p7: could not build merged_into_any mutant (anchor moved?)"
|
|
378
|
+
# Drop the fail-closed branch by making its condition unreachable.
|
|
379
|
+
sed 's/\[ "\$rc" -ne 0 \]/[ "$rc" -lt 0 ]/' "$SWEEP" > "$MUT_DIR/no_fail_closed.sh"
|
|
380
|
+
cmp -s "$SWEEP" "$MUT_DIR/no_fail_closed.sh" \
|
|
381
|
+
&& note "p7: fail-closed mutation did not change the script (anchor moved?)"
|
|
382
|
+
# The remaining protected predicates. The rule this suite implements says to iterate
|
|
383
|
+
# EVERY protected predicate, not a memorable subset: three of them (the --include-ignored
|
|
384
|
+
# relaxation, the KEEP payload listing, and the conservative default-target guard) each
|
|
385
|
+
# decide whether a worktree gets deleted or its contents shown, and each could regress
|
|
386
|
+
# with the earlier three-mutant loop still green.
|
|
387
|
+
sed 's|out="$(git -C "$1" status --porcelain --untracked-files=all 2>/dev/null)"; rc=$?|out="$(git -C "$1" status --porcelain --untracked-files=all --ignored 2>/dev/null)"; rc=$?|' \
|
|
388
|
+
"$SWEEP" > "$MUT_DIR/include_ignored_noop.sh"
|
|
389
|
+
cmp -s "$SWEEP" "$MUT_DIR/include_ignored_noop.sh" \
|
|
390
|
+
&& note "p7: --include-ignored mutation did not change the script (anchor moved?)"
|
|
391
|
+
sed 's|\[ -n "$HAS_LOCAL_STATE_SAMPLE" \] && printf|false \&\& printf|' \
|
|
392
|
+
"$SWEEP" > "$MUT_DIR/state_sample_suppressed.sh"
|
|
393
|
+
cmp -s "$SWEEP" "$MUT_DIR/state_sample_suppressed.sh" \
|
|
394
|
+
&& note "p7: state-sample mutation did not change the script (anchor moved?)"
|
|
395
|
+
sed 's|elif \[ "${#SWEEP_TARGETS\[@\]}" -eq 0 \]; then|elif false; then|' \
|
|
396
|
+
"$SWEEP" > "$MUT_DIR/default_target_guard_dropped.sh"
|
|
397
|
+
cmp -s "$SWEEP" "$MUT_DIR/default_target_guard_dropped.sh" \
|
|
398
|
+
&& note "p7: default-target-guard mutation did not change the script (anchor moved?)"
|
|
399
|
+
# Drop the release-name KEEP: release-named worktrees must then reach the removal
|
|
400
|
+
# path, which p6c/p6d own. Replacing the predicate (not the branch) keeps the
|
|
401
|
+
# mutation semantic — a commented-out line would break syntax and bank a broken
|
|
402
|
+
# build as sensitivity.
|
|
403
|
+
sed 's|^is_release_named() {|is_release_named() { return 1 # MUTANT|' \
|
|
404
|
+
"$SWEEP" > "$MUT_DIR/release_guard_dropped.sh"
|
|
405
|
+
cmp -s "$SWEEP" "$MUT_DIR/release_guard_dropped.sh" \
|
|
406
|
+
&& note "p7: release-guard mutation did not change the script (anchor moved?)"
|
|
407
|
+
|
|
408
|
+
# <mutant> owns <probe-ids>: the probes that actually assert the mutated
|
|
409
|
+
# predicate. Attribution is DIFFERENTIAL, not a substring match on aggregate
|
|
410
|
+
# output — an unrelated probe or a collapsed teardown can fail while the owning
|
|
411
|
+
# assertion still passes, and its name can appear in the log anyway. So the
|
|
412
|
+
# mutant must flip EXACTLY these: every probe that fails under it must be in the
|
|
413
|
+
# owning set (and at least one must be). The control side is this very run —
|
|
414
|
+
# P7 only runs after the probes above, so requiring zero failures so far proves
|
|
415
|
+
# the owning probes PASS unmutated.
|
|
416
|
+
# Widen this set ONLY for a probe that genuinely asserts the mutated predicate
|
|
417
|
+
# (p1c and p1e were added because both turn on the ignored-file KEEP and the
|
|
418
|
+
# payload it prints — the differential check found them). Adding a probe that
|
|
419
|
+
# does NOT assert the predicate, just to silence a foreign-failure report, is
|
|
420
|
+
# the maintenance trap this whole mechanism exists to prevent: it re-blinds the
|
|
421
|
+
# check while looking like a fix. If a mutant breaks something outside its
|
|
422
|
+
# predicate, the mutant or the predicate is wrong — not this table.
|
|
423
|
+
mutant_owner() {
|
|
424
|
+
case "$1" in
|
|
425
|
+
has_local_state_never_blocks) printf 'p1 p1b p1c p1d p1e p2 p2b' ;;
|
|
426
|
+
merged_into_any_always_true) printf 'p5' ;;
|
|
427
|
+
no_fail_closed) printf 'p2b' ;;
|
|
428
|
+
include_ignored_noop) printf 'p1c p1e' ;;
|
|
429
|
+
state_sample_suppressed) printf 'p1d p1e' ;;
|
|
430
|
+
default_target_guard_dropped) printf 'p6a' ;;
|
|
431
|
+
release_guard_dropped) printf 'p6c p6d' ;; # NOT p6e: it asserts rc/ IS swept, so it passes under this mutant either way
|
|
432
|
+
esac
|
|
433
|
+
}
|
|
434
|
+
# A declared owner that no longer EXISTS must fail closed. Checking declarations only
|
|
435
|
+
# against the IDs that failed is not enough: rename or delete an owning probe and, as
|
|
436
|
+
# long as one other listed owner still fails, owned_hit stays 1 and foreign stays empty,
|
|
437
|
+
# so the mutant is accepted while the declaration silently rots. The suite is its own
|
|
438
|
+
# registry here — every probe reports through `note "<id>: …"`.
|
|
439
|
+
owner_exists() { grep -q "note \"$1:" "$0"; }
|
|
440
|
+
# Control run: if anything already failed, the owning probes are not known-good
|
|
441
|
+
# unmutated and no attribution below means anything.
|
|
442
|
+
[ "$fail" -eq 0 ] || note "p7: control run already has $fail failure(s) — differential attribution is meaningless until the clean suite is green"
|
|
443
|
+
|
|
444
|
+
for mutant in has_local_state_never_blocks merged_into_any_always_true no_fail_closed \
|
|
445
|
+
include_ignored_noop state_sample_suppressed default_target_guard_dropped \
|
|
446
|
+
release_guard_dropped; do
|
|
447
|
+
[ -s "$MUT_DIR/$mutant.sh" ] || continue
|
|
448
|
+
# Fail closed on a stale declaration before trusting anything it says.
|
|
449
|
+
for id in $(mutant_owner "$mutant"); do
|
|
450
|
+
owner_exists "$id" \
|
|
451
|
+
|| note "p7: mutant '$mutant' declares owner '$id', which no longer exists in this suite — stale mapping, attribution cannot be trusted"
|
|
452
|
+
done
|
|
453
|
+
# A mutant that does not even parse proves nothing about the suite.
|
|
454
|
+
bash -n "$MUT_DIR/$mutant.sh" 2>/dev/null \
|
|
455
|
+
|| { note "p7: mutant '$mutant' does not parse — a syntax-broken mutant cannot prove sensitivity"; continue; }
|
|
456
|
+
SWEEP_SUITE_MUTATION_CHILD=1 SWEEP="$MUT_DIR/$mutant.sh" SUITE_TMPDIR="$MUT_DIR" \
|
|
457
|
+
bash "$0" > "$MUT_DIR/$mutant.log" 2>&1
|
|
458
|
+
child_rc=$?
|
|
459
|
+
# Probe ids that actually failed under the mutant.
|
|
460
|
+
failed_ids=$(sed -n 's/^FAIL \([a-z0-9]*\):.*/\1/p' "$MUT_DIR/$mutant.log" | sort -u | tr '\n' ' ')
|
|
461
|
+
owners=" $(mutant_owner "$mutant") "
|
|
462
|
+
owned_hit=0; foreign=""
|
|
463
|
+
for id in $failed_ids; do
|
|
464
|
+
case "$owners" in *" $id "*) owned_hit=1 ;; *) foreign="$foreign $id" ;; esac
|
|
465
|
+
done
|
|
466
|
+
if [ "$child_rc" -eq 0 ]; then
|
|
467
|
+
note "p7: mutant '$mutant' left the suite GREEN — the suite is blind to that predicate"
|
|
468
|
+
elif [ "$owned_hit" -eq 0 ]; then
|
|
469
|
+
note "p7: mutant '$mutant' failed the suite, but no OWNING probe (${owners# }) reported it — collateral failure, not sensitivity (failed:${failed_ids:-none})"
|
|
470
|
+
fi
|
|
471
|
+
[ -z "$foreign" ] \
|
|
472
|
+
|| note "p7: mutant '$mutant' also broke non-owning probe(s)$foreign — it flips more than its predicate, so the RED is not attributable"
|
|
473
|
+
# A mutant must not collapse the fixtures: the child still has to RUN the suite.
|
|
474
|
+
grep -q '^worktree_sweep: ' "$MUT_DIR/$mutant.log" \
|
|
475
|
+
|| note "p7: mutant '$mutant' never reached the suite summary — fixtures collapsed, so the RED is not attributable"
|
|
476
|
+
done
|
|
477
|
+
ok
|
|
478
|
+
fi
|
|
479
|
+
|
|
480
|
+
echo "worktree_sweep: $pass passed, $fail failed"
|
|
481
|
+
[ "$fail" -eq 0 ]
|