@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,312 @@
|
|
|
1
|
+
# Deploy CLI — Concrete Recipe
|
|
2
|
+
|
|
3
|
+
Working implementation of the deploy CLI described in `custom-control-plane-boundary.md`. Distilled from a production CLI that ships every release of a multi-language platform.
|
|
4
|
+
|
|
5
|
+
## Surface — 5 commands
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
deploy-cli compile Compile source into a build artifact (tar.gz)
|
|
9
|
+
deploy-cli build Build a Docker image from the artifact, push to registry
|
|
10
|
+
deploy-cli deploy-config Preview the rendered k8s YAML (optionally save to file)
|
|
11
|
+
deploy-cli review Create an approval task, optionally wait for the result
|
|
12
|
+
deploy-cli deploy Apply the deploy via control plane; stream watch events via WebSocket
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Each command:
|
|
16
|
+
- Takes a small set of named flags (parsed from struct tags via reflection — see CLI builder below).
|
|
17
|
+
- Calls the control plane's HTTP API.
|
|
18
|
+
- Returns 0 on success, non-zero on failure.
|
|
19
|
+
- Prints structured progress to stdout.
|
|
20
|
+
|
|
21
|
+
Importantly, the CLI **never** applies deploy/update state directly to k8s, service discovery, mesh control plane, or etcd. Deploy-config, review, deploy, rollback, and traffic-policy changes route through the control plane. Source compilation and image build may call pinned project build tools and the image registry behind typed CLI commands, but long-lived deploy/update behavior must stay declarative and auditable.
|
|
22
|
+
|
|
23
|
+
## Pipeline-name parsing convention
|
|
24
|
+
|
|
25
|
+
The CI/CD system passes a `pipeline_name` flag in the form `[lane_name] P.S.M XXXX` or `【lane_name】P.S.M XXXX` (Chinese brackets accepted). The CLI parses both `lane_name` and `PSM` from this single string:
|
|
26
|
+
|
|
27
|
+
```go
|
|
28
|
+
laneNameReg := regexp.MustCompile(`[\[【]([0-9a-zA-Z-]+)[]】]`)
|
|
29
|
+
psmReg := regexp.MustCompile(`[0-9a-zA-Z-_]+\.[0-9a-zA-Z-_]+\.[0-9a-zA-Z-_]+`)
|
|
30
|
+
|
|
31
|
+
// Validate: exactly one lane name + exactly one PSM in the string.
|
|
32
|
+
// Reject otherwise — "[a] [b] x.y.z" or "[a] x.y.z m.n.o" is ambiguous.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Why this convention: external CI/CD platforms (e.g. cloud-provider continuous pipeline) name their pipelines manually with a project-recognizable label. Embedding lane + PSM in the name means the CLI doesn't need separate flags for them, and a glance at the pipeline name tells operators what's deploying where.
|
|
36
|
+
|
|
37
|
+
If your platform passes lane and PSM as explicit flags, skip this parser. The convention is one less round-trip; explicit flags are clearer.
|
|
38
|
+
|
|
39
|
+
## Image naming convention
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
<registry-host>/<namespace>/<psm>:<lane-type>-<image-version>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Where:
|
|
46
|
+
- `registry-host`: private image registry hostname.
|
|
47
|
+
- `namespace`: separate namespace per environment tier (e.g. one for offline lanes, one for online lanes — two-tier organization for RBAC + cleanup policies).
|
|
48
|
+
- `psm`: service PSM as-is.
|
|
49
|
+
- `lane-type`: `prod` (online) or `dev` (offline) — derived from `lane.LaneType`.
|
|
50
|
+
- `image-version`: caller-supplied, typically `<git-commit-sha>` or `<release-tag>`.
|
|
51
|
+
|
|
52
|
+
This naming lets you:
|
|
53
|
+
- Filter all online images via the namespace prefix.
|
|
54
|
+
- Quickly identify the lane type from the tag.
|
|
55
|
+
- Garbage-collect dev images on a shorter retention than prod.
|
|
56
|
+
|
|
57
|
+
## Compile flow
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
deploy-cli compile --workspace <dir> --pipeline_name "[lane] x.y.z ..."
|
|
61
|
+
│
|
|
62
|
+
├─ parse pipeline_name → psm, lane
|
|
63
|
+
├─ control plane: GetLaneServiceDetail(lane, psm)
|
|
64
|
+
│ → buildScript (from cluster config, or service config, or default ./build.sh)
|
|
65
|
+
│ → runtime (from env RUNTIME, or cluster config, or default e.g. "go:1.25")
|
|
66
|
+
├─ execute embedded compile.sh with env vars:
|
|
67
|
+
│ CP_WORKSPACE, PSM, LANE, BUILD_SCRIPT, RUNTIME
|
|
68
|
+
│ → runs user's build script (sh "$BUILD_SCRIPT") in workspace
|
|
69
|
+
│ → packs ./output/* into output.tar.gz in workspace
|
|
70
|
+
├─ generate Dockerfile in workspace from embedded template:
|
|
71
|
+
│ FROM <registry>/<runtime>
|
|
72
|
+
│ USER <runtime-user>
|
|
73
|
+
│ WORKDIR /opt/<org>/app
|
|
74
|
+
│ ADD output.tar.gz .
|
|
75
|
+
│ ENTRYPOINT ["./bootstrap.sh"]
|
|
76
|
+
└─ done; tar.gz + Dockerfile ready in workspace
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Embedded compile.sh:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
#!/bin/bash
|
|
83
|
+
set -e
|
|
84
|
+
mkdir -p "$CP_WORKSPACE/.gomod"
|
|
85
|
+
cd "$CP_WORKSPACE"
|
|
86
|
+
rm -rf output/
|
|
87
|
+
sh "$BUILD_SCRIPT" # user's build script writes to ./output
|
|
88
|
+
cd output
|
|
89
|
+
shopt -s dotglob
|
|
90
|
+
tar cvzf output.tar.gz *
|
|
91
|
+
shopt -u dotglob
|
|
92
|
+
mv output.tar.gz "$CP_WORKSPACE"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The user's `build.sh` (in the service repo) is responsible for writing the actual artifact to `./output`. Compile orchestrates: cache setup, output packing, Dockerfile generation.
|
|
96
|
+
|
|
97
|
+
`bootstrap.sh` lives inside the user's output tarball — it is the service-specific entrypoint. Compile doesn't generate it.
|
|
98
|
+
|
|
99
|
+
## Build flow
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
deploy-cli build --pipeline_name "[lane] x.y.z ..." --image_version <v>
|
|
103
|
+
[--registry_user <u> --registry_pwd <p>]
|
|
104
|
+
│
|
|
105
|
+
├─ parse pipeline_name → psm, lane
|
|
106
|
+
├─ control plane: ListLane(lane) → lane type → image namespace + tag
|
|
107
|
+
├─ registry credentials from flag OR env (REGISTRY_USERNAME / REGISTRY_PASSWORD)
|
|
108
|
+
├─ registry host from env (REGISTRY_HOST) — required, no default
|
|
109
|
+
└─ execute embedded build.sh with env vars:
|
|
110
|
+
PSM, LANE, NAMESPACE, IMAGE, REGISTRY_USERNAME, REGISTRY_PASSWORD, REGISTRY_HOST
|
|
111
|
+
→ docker login → docker build -t $IMAGE -f Dockerfile .
|
|
112
|
+
→ docker push $IMAGE → docker rmi $IMAGE
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Embedded build.sh:
|
|
116
|
+
|
|
117
|
+
```sh
|
|
118
|
+
#!/bin/bash
|
|
119
|
+
set -e
|
|
120
|
+
# Use --password-stdin to keep password out of process args / CI command logs.
|
|
121
|
+
echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USERNAME" --password-stdin "$REGISTRY_HOST"
|
|
122
|
+
docker build -t "$IMAGE" -f Dockerfile .
|
|
123
|
+
docker push "$IMAGE"
|
|
124
|
+
docker rmi "$IMAGE"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Never pass passwords with `-p` / `--password` flags** — they appear in `ps`, `/proc/<pid>/cmdline`, container event logs, and CI build output. `--password-stdin` is the universal correct form. Pair with:
|
|
128
|
+
- CI secret masking (most CI platforms scrub matching strings from logs).
|
|
129
|
+
- Short-lived registry tokens (rotate per CI run if the registry supports it).
|
|
130
|
+
- Image registry RBAC: build-time tokens have push-only scope to the target namespace, not org-wide.
|
|
131
|
+
|
|
132
|
+
Why bash not Go: docker CLI is the path of least friction; Go reimplementations of docker daemon interaction are fragile. Embed the script, execute with `exec.CommandContext`.
|
|
133
|
+
|
|
134
|
+
## Deploy-config flow (preview YAML)
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
deploy-cli deploy-config --pipeline_name "[lane] x.y.z ..." --image_version <v>
|
|
138
|
+
[--use_lane <override>] [--save_path <file>]
|
|
139
|
+
│
|
|
140
|
+
├─ parse pipeline_name → psm, lane
|
|
141
|
+
├─ compute image URI
|
|
142
|
+
├─ if special PSM (control plane itself): render embedded YAML template
|
|
143
|
+
│ with placeholders <psm> <appName> <laneName> <image>
|
|
144
|
+
├─ else: control plane: GetLaneServiceDeployConfig(lane, psm, image)
|
|
145
|
+
│ → returns server-rendered YAML
|
|
146
|
+
├─ print YAML to stdout
|
|
147
|
+
└─ if --save_path given: write to file
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The preview lets operators eyeball the YAML before deploying — useful for "is this template change going to do what I think" review.
|
|
151
|
+
|
|
152
|
+
The "special PSM" branch handles the chicken-egg case: when deploying the control plane itself, the control plane API may be unavailable, so the CLI ships an embedded template for those services.
|
|
153
|
+
|
|
154
|
+
## Review flow
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
deploy-cli review --workspace_id <id> --pipeline_id <id> --pipeline_name "..."
|
|
158
|
+
--pipeline_run_id <id> [--need_approve <n>=1] [--expire <dur>=24h]
|
|
159
|
+
[--wait_result]
|
|
160
|
+
│
|
|
161
|
+
├─ validate: pipeline_run_id and pipeline_name required
|
|
162
|
+
├─ parse pipeline_name → psm, lane
|
|
163
|
+
├─ control plane: CreateReviewTask(
|
|
164
|
+
│ lane, psm, workspace_id, pipeline_id, pipeline_name, run_id,
|
|
165
|
+
│ expire, need_approve_num)
|
|
166
|
+
├─ control plane sends chat-platform card to reviewers (out-of-band)
|
|
167
|
+
└─ if --wait_result:
|
|
168
|
+
poll GetReviewTask(task_id) every 5s
|
|
169
|
+
tolerate up to 5 consecutive errors before failing
|
|
170
|
+
until: status != Pending OR elapsed > expire
|
|
171
|
+
on result: print approver list + decisions
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The review task is bound to the **pipeline run id** — one approval per CI/CD pipeline run. The pipeline runs `review --wait_result`, which blocks until approved or expired; then runs `deploy`.
|
|
175
|
+
|
|
176
|
+
If approval expires or is rejected, `deploy` should not be called. The CI/CD orchestrator enforces this — typically by checking the review command's exit code.
|
|
177
|
+
|
|
178
|
+
## Deploy flow (the actual k8s apply)
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
deploy-cli deploy --pipeline_name "[lane] x.y.z ..." --image_version <v>
|
|
182
|
+
[--use_lane <override>]
|
|
183
|
+
│
|
|
184
|
+
├─ parse pipeline_name → psm, lane (or use --use_lane override)
|
|
185
|
+
├─ compute image URI
|
|
186
|
+
├─ open WebSocket to control plane: /v1/deploy_lane_service
|
|
187
|
+
│ query: ?psm=<psm>&name=<lane>&image=<image>&interactive=true
|
|
188
|
+
├─ control plane:
|
|
189
|
+
│ start k8s Deployment apply
|
|
190
|
+
│ start k8s.Watch on the Deployment
|
|
191
|
+
│ for each watch event: format as JSON → write to WebSocket
|
|
192
|
+
├─ CLI reads events from WebSocket with 5-min read deadline (reset per message):
|
|
193
|
+
│ event = { type, app_name, ready_replica, expect_replica,
|
|
194
|
+
│ condition_* (optional), is_result_event, is_success }
|
|
195
|
+
│ each event printed as a status line, e.g.:
|
|
196
|
+
│ [MODIFIED] <app>(2/3)
|
|
197
|
+
│ [MODIFIED-CONDITION] <app>(2/3), Available - True ...: Deployment available
|
|
198
|
+
├─ stop reading on is_result_event=true
|
|
199
|
+
└─ exit 0 if is_success, else non-zero
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This gives the user real-time feedback. A deploy that gets stuck (e.g. ImagePullBackOff) surfaces conditions immediately, not after a timeout.
|
|
203
|
+
|
|
204
|
+
## CLI builder via reflection (generic)
|
|
205
|
+
|
|
206
|
+
A reusable pattern for adding new commands without boilerplate:
|
|
207
|
+
|
|
208
|
+
```go
|
|
209
|
+
func MustBuildCommand[P any](name, usage string, action func(*P) error) *cli.Command
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Define a params struct with `json` + `usage` + `default` tags:
|
|
213
|
+
|
|
214
|
+
```go
|
|
215
|
+
type DeployParams struct {
|
|
216
|
+
PipelineName string `json:"pipeline_name" usage:"Pipeline name in '[lane] psm ...' format"`
|
|
217
|
+
ImageVersion string `json:"image_version" usage:"Image version tag"`
|
|
218
|
+
UseLane string `json:"use_lane" usage:"Override lane (optional)"`
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
var Deploy = MustBuildCommand[DeployParams]("deploy", "Deploy a service", deployHandler)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
The builder uses reflection to:
|
|
225
|
+
- Read each field's `json` tag → flag name.
|
|
226
|
+
- Read `usage` tag → flag help text.
|
|
227
|
+
- Read `default` tag → default value.
|
|
228
|
+
- Detect field type (string/bool/int/int64/float64) → register the right flag type.
|
|
229
|
+
|
|
230
|
+
Supported types: `string`, `bool`, `int`, `int64`, `float64`. Slices via comma-separated strings, parsed with helpers (`GetStringSlice`, `GetInt64Slice`, etc.).
|
|
231
|
+
|
|
232
|
+
Adding a new command is one struct + one handler function + one `MustBuildCommand` line.
|
|
233
|
+
|
|
234
|
+
## Control plane host override
|
|
235
|
+
|
|
236
|
+
The CLI looks up the control plane at:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
host = env.<CONTROL_PLANE_HOST> || <default-host>
|
|
240
|
+
lane_for_api = env.<CONTROL_PLANE_LANE> // optional; injected as request header
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
So a developer testing against a non-prod control plane (e.g. a dev-lane deployment of the control plane itself) sets one env var. The CLI's HTTP middleware adds the `<lane-header>` to outgoing requests, and the mesh routes them to the right lane of the control plane.
|
|
244
|
+
|
|
245
|
+
This lets the platform team dogfood the control plane in non-prod lanes before promoting it to prod.
|
|
246
|
+
|
|
247
|
+
**Security**: open host override is a real attack surface. A compromised CI environment that sets `<CONTROL_PLANE_HOST>` to an attacker-controlled URL would have the deploy CLI build + deploy via malicious rendered YAML. Production lanes MUST add safeguards:
|
|
248
|
+
- **Pinned host allowlist**: a build-time-baked list of allowed control-plane hosts. Override permitted only to hosts in the list (typically: prod, pre-prod, staging variants).
|
|
249
|
+
- **TLS identity validation**: pin the control-plane TLS cert fingerprint or require a specific CA; reject unexpected certs even on HTTPS.
|
|
250
|
+
- **Audience-bound tokens**: CLI's SSO token specifies the target host as audience; refuses to send the token to a different host. Prevents token reuse against a redirected control plane.
|
|
251
|
+
- **Break-glass approval for prod override**: setting `<CONTROL_PLANE_HOST>` for a prod lane requires an approval ticket; CLI refuses without it.
|
|
252
|
+
- **Audit log on override**: every CLI invocation with non-default host emits an audit entry to the platform's central audit log (not just local).
|
|
253
|
+
|
|
254
|
+
## Special-PSM bypass (chicken-and-egg)
|
|
255
|
+
|
|
256
|
+
A handful of platform services (typically the control plane itself + a secrets/auth service) are marked as "special PSM". For those:
|
|
257
|
+
|
|
258
|
+
- Image namespace logic uses lane-name prefix instead of querying the control plane (which may not be reachable when deploying itself).
|
|
259
|
+
- Deploy-config uses an embedded YAML template instead of calling the rendering API.
|
|
260
|
+
|
|
261
|
+
Limit the special-PSM set to the minimum necessary for self-bootstrap. Adding regular services here creates inconsistent paths and audit gaps.
|
|
262
|
+
|
|
263
|
+
## What this confirms about `custom-control-plane-boundary.md`
|
|
264
|
+
|
|
265
|
+
Mapping the recommended boundary to this concrete CLI:
|
|
266
|
+
|
|
267
|
+
| Boundary rule | CLI evidence |
|
|
268
|
+
|---|---|
|
|
269
|
+
| Deploy/update calls API; never k8s/etcd directly | ✅ Deploy-config, review, deploy, rollback, and traffic-policy changes go through `cloudapi.Client` HTTP |
|
|
270
|
+
| Audit every deploy event | ✅ control plane records each deploy; CLI just initiates |
|
|
271
|
+
| WebSocket for live deploy progress | ✅ `/deploy_lane_service` over WS with 5-min read deadline |
|
|
272
|
+
| Approval via chat platform | ✅ control plane sends card; CLI's `review --wait_result` polls task status |
|
|
273
|
+
| Stateless beyond audit + tasks | ✅ CLI is fully stateless; control plane holds task state |
|
|
274
|
+
| Single endpoint, single auth | ✅ `CONTROL_PLANE_HOST` env, lane-header optional |
|
|
275
|
+
| No business logic | ✅ CLI is pure orchestration |
|
|
276
|
+
| Break-glass kubectl open | ✅ Admin can bypass; CLI doesn't gatekeep cluster access |
|
|
277
|
+
| Generic helpers | ✅ Generic `MustBuildCommand[P]` for new commands |
|
|
278
|
+
|
|
279
|
+
The recommended boundary holds in practice. The CLI is small (~12 files, ~3.5kLOC), maintained by a small platform team, and ships every release.
|
|
280
|
+
|
|
281
|
+
## Pipeline integration (external CI/CD)
|
|
282
|
+
|
|
283
|
+
The CLI is designed to be called from a CI/CD pipeline runner (cloud-provider continuous-pipeline / GitLab CI / GitHub Actions / Tekton). A typical pipeline:
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
stages:
|
|
287
|
+
- name: compile
|
|
288
|
+
script: deploy-cli compile --workspace . --pipeline_name "$PIPELINE_NAME"
|
|
289
|
+
- name: build
|
|
290
|
+
script: deploy-cli build --pipeline_name "$PIPELINE_NAME" --image_version "$VERSION"
|
|
291
|
+
- name: review
|
|
292
|
+
script: deploy-cli review --pipeline_run_id "$RUN_ID" --pipeline_name "$PIPELINE_NAME" --wait_result
|
|
293
|
+
timeout: 24h # matches review expire
|
|
294
|
+
- name: deploy
|
|
295
|
+
script: deploy-cli deploy --pipeline_name "$PIPELINE_NAME" --image_version "$VERSION"
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
The pipeline runner provides:
|
|
299
|
+
- `PIPELINE_NAME` (encodes lane + PSM)
|
|
300
|
+
- `VERSION` (image version, typically `$COMMIT_SHA`)
|
|
301
|
+
- `RUN_ID` (unique per pipeline run)
|
|
302
|
+
- `WORKSPACE_ID`, `PIPELINE_ID` (for review task linking)
|
|
303
|
+
|
|
304
|
+
The pipeline runner handles auth (image-registry credentials, control-plane SSO token) via environment variables. The CLI inherits them.
|
|
305
|
+
|
|
306
|
+
## Verification
|
|
307
|
+
|
|
308
|
+
- Run `compile + build + deploy-config + deploy` end-to-end against a dev lane; expect each stage idempotent (re-running same command produces same result).
|
|
309
|
+
- Override `CONTROL_PLANE_HOST` to a stub server; CLI calls hit the stub, no production traffic.
|
|
310
|
+
- Set `CONTROL_PLANE_LANE` to a dev lane; verify the mesh routes CLI's calls to the dev control plane.
|
|
311
|
+
- Kill the control plane mid-deploy; CLI surfaces the disconnection cleanly (not hung indefinitely).
|
|
312
|
+
- Add a new command via `MustBuildCommand[NewParams]("name", ...)`; expect compile + register + work without other code changes.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# Deploy Pipeline
|
|
2
|
+
|
|
3
|
+
From source commit to running pod, with audit and rollback.
|
|
4
|
+
|
|
5
|
+
## Stages
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
commit
|
|
9
|
+
│
|
|
10
|
+
▼
|
|
11
|
+
build: source @ commit + version → image digest
|
|
12
|
+
record: digest, commit, builder version, build time
|
|
13
|
+
│
|
|
14
|
+
▼
|
|
15
|
+
manifest: image digest + lane policy → k8s YAML (Deployment, Service, etc.)
|
|
16
|
+
+ mesh objects (VirtualService subset, DestinationRule)
|
|
17
|
+
+ discovery lane marker (registry tag or k8s label)
|
|
18
|
+
│
|
|
19
|
+
▼
|
|
20
|
+
approve: review task (for high-risk classes)
|
|
21
|
+
approval recorded with reviewer, change summary, rollback plan
|
|
22
|
+
│
|
|
23
|
+
▼
|
|
24
|
+
apply: control plane writes desired state
|
|
25
|
+
k8s reconciles
|
|
26
|
+
mesh + discovery updates propagate
|
|
27
|
+
│
|
|
28
|
+
▼
|
|
29
|
+
verify: readiness probes pass
|
|
30
|
+
smoke tests pass
|
|
31
|
+
SLIs measured during bake window
|
|
32
|
+
│
|
|
33
|
+
▼
|
|
34
|
+
promote OR abort:
|
|
35
|
+
promote: shift traffic forward (canary → stable)
|
|
36
|
+
abort: rollback to previous known-good
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Each stage is observable, audit-logged, and re-runnable (or in the case of `apply`, idempotent).
|
|
40
|
+
|
|
41
|
+
## Three control-plane spines
|
|
42
|
+
|
|
43
|
+
### A) Custom orchestration API
|
|
44
|
+
|
|
45
|
+
A platform-team service exposes:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
POST /service create or update service definition
|
|
49
|
+
POST /lane create lane
|
|
50
|
+
POST /lane/<lane>/service/<svc>/deploy deploy a service version into a lane
|
|
51
|
+
POST /lane/<lane>/service/<svc>/traffic update traffic weight
|
|
52
|
+
POST /canary-check-task start a canary check
|
|
53
|
+
GET /canary-check-task/<id> status + SLI evidence
|
|
54
|
+
POST /review-task request approval
|
|
55
|
+
POST /review-task/<id>/approve approve
|
|
56
|
+
POST /service/<svc>/rollback rollback to previous
|
|
57
|
+
POST /service/<svc>/reload-mesh-config push VirtualService update
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
A CLI client wraps these. A web UI provides the same surface for non-CLI users.
|
|
61
|
+
|
|
62
|
+
**Strengths**: deep integration with internal RBAC, audit, lane-first model, custom approval workflow.
|
|
63
|
+
|
|
64
|
+
**Weaknesses**: you maintain the API and its tools; off-the-shelf reuse is limited.
|
|
65
|
+
|
|
66
|
+
### B) GitOps (Argo CD / Flux)
|
|
67
|
+
|
|
68
|
+
Desired state is a tree of YAML in git. A controller in-cluster watches the repo and reconciles k8s state to match.
|
|
69
|
+
|
|
70
|
+
- Deploys = git PR + merge. Approval = PR review.
|
|
71
|
+
- Rollback = revert the commit.
|
|
72
|
+
- Audit = git history.
|
|
73
|
+
|
|
74
|
+
**Strengths**: declarative, reusable, no custom code to maintain; built-in review via PR.
|
|
75
|
+
|
|
76
|
+
**Weaknesses**: PR-based approval is coarse; lane-explosion can clutter the repo; secret handling needs an extra tool (Sealed Secrets, External Secrets Operator).
|
|
77
|
+
|
|
78
|
+
**OpenGitOps conformance gate**: when picking GitOps as the spine, test the implementation against the 4 OpenGitOps principles (CNCF Sandbox v1.0 documents released by the GitOps Working Group, per `opengitops.dev`): (1) **Declarative** — desired state expressed as data, not imperative scripts; if production state lives in `kubectl apply` shell scripts or "Helm render from git tag, runs on master", the spine is not GitOps even if it uses Argo CD as a viewer. (2) **Immutable & Versioned** — desired state stored with full version history; values stored in mutable ConfigMaps that get overwritten outside git, or environment-specific overrides applied at runtime by an operator, fail this. (3) **Pulled Automatically** (canonical OpenGitOps wording) — agents pull from the source of truth, not push from CI; a CI job that runs `argocd app sync --force` on merge defeats the pull model and turns the agent into a push pipeline. (4) **Continuous Reconciliation** — agents continuously observe and re-apply, not "deploy once and forget"; reconciliation interval, drift-detection alert routing, and self-healing toggle are first-class config decisions, not defaults left untouched. **Self-healing scope MUST be bounded explicitly**: legitimate out-of-band controllers (HPA / VPA setting replica counts and resource requests, cert-manager rotating cert Secrets, image-update operators bumping digests, security-patch automation) write fields that GitOps reconciliation would otherwise revert in a fight. Configure the GitOps agent to ignore controller-owned field paths (`spec.replicas` when HPA is in scope, Secrets owned by external-secrets-operator, image digests owned by an image-updater bot) via the agent's diff-ignore mechanism (Argo CD `ignoreDifferences`, Flux `ignore` annotation). Drift outside the ignore set should ALERT before auto-revert on production resources, not silently re-apply — the team needs the chance to intervene if the drift came from an emergency manual fix. Architecture review on a GitOps-spine platform must verify all 4; meeting only 2-3 produces "GitOps-shaped" deployments that lose half the model's benefit (typical failure: declarative + versioned + pulled, but reconciliation disabled because "drift fixes break things" — that platform is one manual `kubectl` away from silent divergence).
|
|
79
|
+
|
|
80
|
+
**ArgoCD OCI source (2024-2025)**: per `argo-cd.readthedocs.io/en/latest/user-guide/oci/`, Argo CD now supports OCI artifacts as a first-class application source — desired-state manifests packaged as OCI artifacts (referenced from a registry) sit alongside the git source. This buys: bundle a versioned manifest set in the same registry as container images (one supply-chain, one access policy); cosign-sign the manifest bundle and verify at sync time; cache via the OCI distribution spec the platform already uses for images. **ApplicationSet OCI generator** is in proposal — until shipped, OCI-driven ApplicationSets need the Plugin Generator with a custom OCI puller. **Version cadence**: ArgoCD's documented support policy is patches for the two most recent minors, so when 3.x is the current line the older minors (e.g. 2.13 until 3.1, 2.14 until 3.2) have time-limited maintenance windows, NOT open-ended LTS — schedule the platform-wide upgrade off the older line before its window closes. Coordinate platform-wide ArgoCD upgrades with the v2.14→3.0 migration notes in `argo-cd.readthedocs.io/en/latest/operator-manual/upgrading/2.14-3.0/` before flipping production clusters; watch the release-cadence page for the current minor before committing a multi-cluster upgrade plan. **Pre-upgrade check**: any ApplicationSet using the Plugin Generator as the OCI workaround needs validation that the proposed native OCI generator (when it ships) matches the plugin's input/output contract — migrating without a contract diff produces silent ApplicationSet behavior change. **Mutable tag footgun (P0 conflict with OpenGitOps "Immutable & Versioned" above)**: OCI artifacts referenced by tag CAN be overwritten in most registries (`docker push` against an existing tag silently replaces the underlying manifest), and an Argo CD sync against a mutable tag will silently pick up the new manifests with no PR / no audit trail / no rollback breadcrumb — defeating the immutability principle this skill demands of the GitOps spine. Required mitigations: (a) reference OCI app sources by digest (`@sha256:...`) or by an immutable-tag policy enforced at the registry (no overwrites on the artifact repo); (b) when tag references are unavoidable, configure Argo CD to require a digest pin via signature verification (cosign-sign + verify-at-sync); (c) treat a tag-only OCI reference on a production app as a platform finding equivalent to a `:latest` image pin — not GitOps-conformant.
|
|
81
|
+
|
|
82
|
+
### C) Pipeline tool (Spinnaker / Tekton / Jenkins / GitHub Actions)
|
|
83
|
+
|
|
84
|
+
A pipeline runner executes named stages with gates between.
|
|
85
|
+
|
|
86
|
+
**Strengths**: long sequenced flows, complex multi-cluster orchestration, broad existing patterns.
|
|
87
|
+
|
|
88
|
+
**Weaknesses**: pipeline state separate from cluster state; rollback is "run a different pipeline"; less declarative.
|
|
89
|
+
|
|
90
|
+
## Picking a spine
|
|
91
|
+
|
|
92
|
+
| Signal | Pick |
|
|
93
|
+
|---|---|
|
|
94
|
+
| Small team, want off-the-shelf | GitOps |
|
|
95
|
+
| Heavy approval / audit / RBAC requirements | Custom API |
|
|
96
|
+
| Long pre-deploy sequences (build, scan, test, multiple envs in order) | Pipeline tool |
|
|
97
|
+
| Lane explosion (>50 named lanes) | Custom API or GitOps with auto-generation |
|
|
98
|
+
| Hybrid budgets | Custom API that emits to GitOps repo; explicit boundary owner |
|
|
99
|
+
|
|
100
|
+
Do not run two without a documented ownership boundary. The most common production trap is "we have Argo AND a custom deploy API AND a pipeline AND ad-hoc kubectl" — every team picks differently and rollback is undefined.
|
|
101
|
+
|
|
102
|
+
## CLI shape
|
|
103
|
+
|
|
104
|
+
A platform CLI is the developer's primary surface regardless of spine. Typical commands:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
plat build --name=<svc> --version=<v> [--push]
|
|
108
|
+
plat compile --name=<svc> # local build for testing
|
|
109
|
+
plat deploy --lane=<lane> --service=<svc> --version=<v>
|
|
110
|
+
plat deploy-config --lane=<lane> --service=<svc> # update env-specific config
|
|
111
|
+
plat review --service=<svc> --change=<summary> # create review task
|
|
112
|
+
plat rollback --service=<svc> [--to-version=<v>]
|
|
113
|
+
plat status --lane=<lane>
|
|
114
|
+
plat logs --lane=<lane> --service=<svc> # shortcut to log search
|
|
115
|
+
plat trace --log-id=<id> # shortcut to trace UI
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
CLI calls the control-plane API (or commits to git for GitOps). It must work from a developer laptop with no extra setup beyond auth.
|
|
119
|
+
|
|
120
|
+
## Build pipeline specifics
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
source@commit + version
|
|
124
|
+
│
|
|
125
|
+
▼
|
|
126
|
+
builder image (pinned version, golden image)
|
|
127
|
+
│
|
|
128
|
+
▼
|
|
129
|
+
Dockerfile path: per language pattern (e.g. golang-app.dockerfile)
|
|
130
|
+
│
|
|
131
|
+
▼
|
|
132
|
+
Build args:
|
|
133
|
+
- GOPRIVATE / language-private-proxy
|
|
134
|
+
- GOINSECURE / language-insecure-flag (only if necessary)
|
|
135
|
+
- GIT_HOST mapping (only if necessary; consider private registry mirror instead)
|
|
136
|
+
│
|
|
137
|
+
▼
|
|
138
|
+
Image tag: <registry>/<svc>:<version>
|
|
139
|
+
│
|
|
140
|
+
▼
|
|
141
|
+
Push to private registry
|
|
142
|
+
│
|
|
143
|
+
▼
|
|
144
|
+
Record: image digest (SHA), commit, build time, builder version
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Floating tags (`latest`, branch name) are forbidden in deploys. The control plane references digest, not tag.
|
|
148
|
+
|
|
149
|
+
Builder image is itself versioned and updated on a schedule. Drift in the builder is invisible until reproduce-from-source fails.
|
|
150
|
+
|
|
151
|
+
## Idempotency
|
|
152
|
+
|
|
153
|
+
- `build` with same `(commit, version)` produces the same digest. If it doesn't, the build env is non-deterministic; fix that first.
|
|
154
|
+
- `deploy` with the same `(lane, service, digest)` is a no-op.
|
|
155
|
+
- `rollback` to a digest already running is a no-op.
|
|
156
|
+
|
|
157
|
+
Idempotency means CI can retry without side effects.
|
|
158
|
+
|
|
159
|
+
## Failure modes
|
|
160
|
+
|
|
161
|
+
- Builder image pulled stale → reproducibility breaks. Mitigation: pin and version.
|
|
162
|
+
- Registry credentials expire → CI breaks silently. Mitigation: rotation pipeline.
|
|
163
|
+
- k8s apply fails partway → state mismatch. Mitigation: declarative reconciler that retries.
|
|
164
|
+
- Approval workflow deadlock (everyone offline) → emergency override path documented.
|
|
165
|
+
- Mesh reload non-atomic → some pods serve old VirtualService briefly. Mitigation: connection drain.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Environment and Lane Matrix
|
|
2
|
+
|
|
3
|
+
## Why "lane" instead of "environment"
|
|
4
|
+
|
|
5
|
+
"Environment" suggests a small fixed set: `dev`, `staging`, `prod`. Real platforms grow:
|
|
6
|
+
|
|
7
|
+
- Per-developer lanes (one developer's in-progress version of a couple of services).
|
|
8
|
+
- Per-integration-test lanes (ephemeral, deleted after test run).
|
|
9
|
+
- Long-lived stages (`dev`, `pre`, `staging`, `prod`).
|
|
10
|
+
- Canary subsets within prod (`prod-canary-1pct`).
|
|
11
|
+
- Shadow traffic targets (`prod-shadow`).
|
|
12
|
+
- Stress-test lanes.
|
|
13
|
+
|
|
14
|
+
All share routing primitives (registry tag or k8s label plus mesh routing — see `platform-service-connectivity`). The release skill treats them uniformly: each lane is a deploy target.
|
|
15
|
+
|
|
16
|
+
## Lane object shape
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
lane:
|
|
20
|
+
name: <unique-name>
|
|
21
|
+
parent: <fallback-lane> # if request lane has no instances, fall to parent
|
|
22
|
+
type: long-lived | ephemeral | canary | shadow | stress
|
|
23
|
+
expires_at: <timestamp> # required for ephemeral; absent for long-lived
|
|
24
|
+
owner: <team-or-individual>
|
|
25
|
+
services: [<service-names>] # services deployed in this lane
|
|
26
|
+
traffic_weight: <0-100> # only for canary/shadow subsets within a parent
|
|
27
|
+
protected: true | false # protected lanes cannot be deleted without explicit override
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Long-lived lanes are protected. Ephemeral lanes auto-delete past expiry.
|
|
31
|
+
|
|
32
|
+
## Standard long-lived lanes
|
|
33
|
+
|
|
34
|
+
| Lane | Purpose | Traffic source |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| `prod` | live user traffic | external clients, ingress |
|
|
37
|
+
| `pre` | pre-production validation | internal smoke + load tests |
|
|
38
|
+
| `staging` | pre-pre, integration tests | CI |
|
|
39
|
+
| `dev` | shared dev environment | engineers, internal tools |
|
|
40
|
+
|
|
41
|
+
Some platforms add `gray` or `inner-prod` for internal employee dogfooding. Add only when there's a real signal it produces; don't proliferate.
|
|
42
|
+
|
|
43
|
+
## Per-developer lanes
|
|
44
|
+
|
|
45
|
+
A developer working on service A wants to test against the real `prod` versions of B, C, D, while running their own A. Lane mechanism:
|
|
46
|
+
|
|
47
|
+
1. Developer deploys their A under lane `dev-<name>`.
|
|
48
|
+
2. Their requests carry `<lane-header>: dev-<name>`.
|
|
49
|
+
3. Mesh VirtualService routes:
|
|
50
|
+
- A: to `dev-<name>` subset (their version).
|
|
51
|
+
- B, C, D: no `dev-<name>` subset → fall back to `prod` (or `dev` shared, depending on policy).
|
|
52
|
+
4. Developer's `dev-<name>` lane expires after N days (e.g. 7) unless renewed.
|
|
53
|
+
|
|
54
|
+
This lets one developer iterate without cluster-wide effect. Multiplied by team size, it works only if lane creation is cheap (control-plane API, not manual k8s).
|
|
55
|
+
|
|
56
|
+
## Ephemeral lanes for CI
|
|
57
|
+
|
|
58
|
+
Integration tests that need real services (not mocks) create a lane per test run:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
lane name: it-<test-id>-<commit>
|
|
62
|
+
parent: pre
|
|
63
|
+
type: ephemeral
|
|
64
|
+
expires_at: now + 4h
|
|
65
|
+
services: [services-under-test]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
CI deploys the under-test versions to the lane, runs tests with `<lane-header>: it-...`, then deletes the lane. Lane lifetime is bounded by test duration + grace.
|
|
69
|
+
|
|
70
|
+
## Canary lanes
|
|
71
|
+
|
|
72
|
+
A canary is a subset of `prod` with its own subset name:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
lane name: prod-canary-v2.5.0
|
|
76
|
+
parent: prod
|
|
77
|
+
type: canary
|
|
78
|
+
traffic_weight: 1 # 1% to start
|
|
79
|
+
services: [the-one-being-rolled-out]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
VirtualService weight shifts from canary to stable over the rollout window. See `canary-and-rollout-strategy.md`.
|
|
83
|
+
|
|
84
|
+
## Shadow lanes
|
|
85
|
+
|
|
86
|
+
Shadow receives a mirror of prod traffic without affecting user response:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
lane name: prod-shadow
|
|
90
|
+
parent: prod
|
|
91
|
+
type: shadow
|
|
92
|
+
services: [services-being-shadowed]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Shadow target's responses are dropped. Metrics from shadow MUST be tagged so they don't contaminate prod SLIs.
|
|
96
|
+
|
|
97
|
+
## Cluster / region mapping
|
|
98
|
+
|
|
99
|
+
Lanes live in clusters. Common topologies:
|
|
100
|
+
|
|
101
|
+
| Topology | When |
|
|
102
|
+
|---|---|
|
|
103
|
+
| Single cluster, all lanes | Small platform; everything fits |
|
|
104
|
+
| Per-region cluster, lanes mirrored | Geographic latency or compliance |
|
|
105
|
+
| Per-lane-type cluster | Heavy stress / shadow isolation |
|
|
106
|
+
| Per-team cluster | Late stage; high cost; only when noise isolation is critical |
|
|
107
|
+
|
|
108
|
+
Document the mapping. Each lane declares its cluster. Cross-cluster lane traffic requires the platform's chosen cross-cluster discovery or mesh federation path (`platform-service-connectivity`).
|
|
109
|
+
|
|
110
|
+
## Lane policies
|
|
111
|
+
|
|
112
|
+
Beyond pure routing, lanes carry policy:
|
|
113
|
+
|
|
114
|
+
- **Resource quotas**: dev / canary lanes get smaller pod counts.
|
|
115
|
+
- **Data isolation**: prod and pre have different DB instances; sharing is a leak.
|
|
116
|
+
- **Network egress**: dev may have looser external access; prod may have stricter.
|
|
117
|
+
- **Observability retention**: prod traces kept 30 days; ephemeral lanes 1 day.
|
|
118
|
+
|
|
119
|
+
Policies are enforced by namespace labels + admission controllers + mesh AuthorizationPolicy.
|
|
120
|
+
|
|
121
|
+
## Verification
|
|
122
|
+
|
|
123
|
+
- `lane list` returns all lanes with type and owner. `lane get <name>` returns services + expiry + traffic weight.
|
|
124
|
+
- A new ephemeral lane is reachable end-to-end within minutes of creation.
|
|
125
|
+
- A lane deleted leaves no orphaned routing/discovery resources (Deployment, Service, VirtualService subset, registry tag or k8s label selector).
|
|
126
|
+
- A request with an unknown lane header falls back to the documented parent lane and logs the fallback (so silent fallback can be detected).
|