@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,245 @@
|
|
|
1
|
+
# Config Center Implementation via etcd
|
|
2
|
+
|
|
3
|
+
Concrete implementation pattern for the **dynamic config tier** described in `secret-and-config-management.md`. Distilled from production deployments.
|
|
4
|
+
|
|
5
|
+
## Why etcd
|
|
6
|
+
|
|
7
|
+
etcd v3 is a mature, widely-deployed key-value store with built-in Watch (push-based change notification) and strong consistency. Using it as the config-center backend means:
|
|
8
|
+
|
|
9
|
+
- No custom config service to build/maintain.
|
|
10
|
+
- Watch semantics are well understood; SDKs exist in every language.
|
|
11
|
+
- The k8s cluster already runs etcd (for the cluster state), so the operational expertise is already on-team.
|
|
12
|
+
- Atomic single-key updates; multi-key transactions available when needed.
|
|
13
|
+
|
|
14
|
+
Trade-offs:
|
|
15
|
+
- etcd is not optimized for high-rate reads from thousands of subscribers — add a client cache layer.
|
|
16
|
+
- etcd cluster size and resource sizing matter; sharing the k8s control plane etcd with config workload is a bad idea — deploy a **separate** etcd cluster for config.
|
|
17
|
+
- Not great for large values (>1 MB); keep payloads small or chunk them.
|
|
18
|
+
|
|
19
|
+
## Deployment
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Cluster
|
|
23
|
+
observability namespace: <unrelated>
|
|
24
|
+
config (or "infra") namespace:
|
|
25
|
+
etcd cluster:
|
|
26
|
+
3 or 5 replicas, StatefulSet
|
|
27
|
+
PVC-backed
|
|
28
|
+
NOT mesh-injected (mesh depends on dcc bootstrap is OK; mesh on top of dcc is not)
|
|
29
|
+
Service name in-cluster: <config>.<ns>.svc.cluster.local:2379
|
|
30
|
+
Exposed externally (for off-cluster developers/CLI) via SD or LB
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use a distinct StatefulSet, not the k8s control plane etcd. Sharing the same etcd cluster invites coupling and a single failure domain.
|
|
34
|
+
|
|
35
|
+
## Config-center sizing and DR
|
|
36
|
+
|
|
37
|
+
- Run 3 replicas minimum; use 5 only when the write/read quorum tradeoff is justified.
|
|
38
|
+
- Start with roughly 50Gi per member for small-to-medium platforms, then tune by key count, watch history, compaction policy, and snapshot retention.
|
|
39
|
+
- Keep config-center member data on per-member PVCs. Store backups/snapshots on a separate backup volume or object store, not only on the member's own PVC.
|
|
40
|
+
- Do not mesh-inject config-center pods if the mesh or platform SDK needs config-center during bootstrap.
|
|
41
|
+
- Snapshot restore is a whole-cluster DR action. Gate restore behind an explicit operator-set DR marker, require the StatefulSet to be scaled to 0 first, and use the component's native member remove / add path for single-member repair.
|
|
42
|
+
- Emit disk usage, leader changes, watch reconnects, compaction errors, and snapshot age metrics. Alert before disk pressure, not after etcd refuses writes.
|
|
43
|
+
|
|
44
|
+
## Key namespace shape
|
|
45
|
+
|
|
46
|
+
A three-level key path keeps configs organized:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
/<service_psm>/<namespace>/<key>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- `service_psm` — the owning service (`<owner>.<class>.<env>` style). Per-service ACLs and quotas apply at this level.
|
|
53
|
+
- `namespace` — a scope within the service. `default` for general config. Useful examples: `default`, `lane:<lane-name>`, `feature-flags`, `traffic`. Multi-namespace under one service lets a service segment fast-changing flags from rarely-changed deploy parameters.
|
|
54
|
+
- `key` — the actual config key.
|
|
55
|
+
|
|
56
|
+
Example keys:
|
|
57
|
+
```
|
|
58
|
+
/payments.api.prod/default/feature_v2_enabled → "true" | "false"
|
|
59
|
+
/payments.api.prod/default/rate_limit_per_user → "100"
|
|
60
|
+
/payments.api.prod/default/domains → <json array>
|
|
61
|
+
/payments.api.prod/default/chat_app_ref → <secret-store reference, NOT credentials>
|
|
62
|
+
/payments.api.prod/default/notice_chat_info → <chat channel IDs only, NOT tokens>
|
|
63
|
+
/payments.api.prod/default/service_resource → <json map psm → lane → resource>
|
|
64
|
+
/payments.api.prod/traffic/<callee_psm> → <json traffic-config>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**What NOT to store** (despite the examples that might tempt you):
|
|
68
|
+
- Cluster kubeconfig content (PEM cert + auth token) — use the secret store; etcd reads in the config center are typically broad-readable to developers and CLI tools.
|
|
69
|
+
- App credentials (chat platform app secret, OAuth client secret, registry tokens) — same reason.
|
|
70
|
+
- Database passwords, API keys.
|
|
71
|
+
- Per-tenant secrets.
|
|
72
|
+
|
|
73
|
+
Store **secret-store references** in etcd (`{"secret_id": "chat-app/prod-v1"}`) and have the consuming service resolve the actual secret from KMS / Vault / equivalent. This way, even broad etcd read access doesn't leak the secret material.
|
|
74
|
+
|
|
75
|
+
The line "no secret etc." appears in the section below, but it's easy to copy an example. The examples above have been corrected — your platform's reviewers should reject any PR that adds a credential-shaped string to a non-traffic key.
|
|
76
|
+
|
|
77
|
+
## SDK contract
|
|
78
|
+
|
|
79
|
+
Minimal SDK API every language must provide:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
NewDynamicConfig(psm, namespace) → client
|
|
83
|
+
client.Get(ctx, key) → []byte, error
|
|
84
|
+
client.GetString(ctx, key) → string, error
|
|
85
|
+
client.GetJson(ctx, key, &dest) → error
|
|
86
|
+
client.Set(ctx, key, value []byte) → error
|
|
87
|
+
client.Del(ctx, key) → error
|
|
88
|
+
client.AddListener(ctx, key, callback) → ListenerCloser
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Operations:
|
|
92
|
+
- **Get / GetString / GetJson** — read once, return value or `not found`.
|
|
93
|
+
- **Set / Del** — typically used by operator/control-plane, not by app code.
|
|
94
|
+
- **AddListener** — etcd Watch wrapped in a callback API; cancellation via the returned closer.
|
|
95
|
+
|
|
96
|
+
Read timeout: 5 seconds is a common default. Longer than typical request budgets but short enough to avoid hanging a service start.
|
|
97
|
+
|
|
98
|
+
## Endpoint discovery
|
|
99
|
+
|
|
100
|
+
Where does the SDK find the etcd cluster?
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
In cluster (pod):
|
|
104
|
+
endpoint = "<config>.<ns>.svc.cluster.local:2379" # k8s DNS, fixed.
|
|
105
|
+
|
|
106
|
+
Out of cluster (developer laptop, off-cluster CLI):
|
|
107
|
+
endpoint = sd.LookupEndpoints("<config-center-psm>") # registry-based; refresh periodically.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Off-cluster path refreshes endpoints every 10 seconds. The SDK reconnects when endpoints change.
|
|
111
|
+
|
|
112
|
+
The off-cluster path needs the SD client (registry) which is itself a bootstrap dependency. Document the bootstrap order:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
1. Resolve SD endpoint (typically a static DNS or env var; cannot depend on dcc).
|
|
116
|
+
2. Resolve dcc endpoints via SD.
|
|
117
|
+
3. Then everything else can read dcc.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Watch / listener
|
|
121
|
+
|
|
122
|
+
etcd Watch is push-based; the SDK wraps it:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
rch := etcd.Watch(ctx, key, clientv3.WithPrevKV()) # PrevKV option required to see ev.PrevKv
|
|
126
|
+
go {
|
|
127
|
+
for resp := range rch {
|
|
128
|
+
for ev := range resp.Events {
|
|
129
|
+
callback(ctx, ev) # ev.IsCreate(), ev.IsModify(), ev.Kv.Value
|
|
130
|
+
# ev.PrevKv populated only if WithPrevKV was passed and key was modified/deleted
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Event types: Create, Modify, Delete. Each event carries the new Kv. `ev.PrevKv` is populated **only when the Watch was created with the `WithPrevKV` option** AND the event is a Modify or Delete (Create has no previous); always nil-check before use.
|
|
137
|
+
|
|
138
|
+
For watch resume after a network blip: persist the last seen revision from `resp.Header.Revision` and pass `clientv3.WithRev(<revision+1>)` on reconnect. etcd retains history within compaction limits — events between disconnect and reconnect are recoverable from the saved revision, not lost outright. If reconnect happens after compaction, the watch returns `ErrCompacted` and the SDK must do a full re-read of subscribed keys.
|
|
139
|
+
|
|
140
|
+
Listener lifetime:
|
|
141
|
+
- Created with a parent context; cancelled via `ListenerCloser`.
|
|
142
|
+
- One goroutine per listener.
|
|
143
|
+
- The SDK MUST recover from panics in the callback; one bad callback should not bring down the goroutine pool.
|
|
144
|
+
|
|
145
|
+
## Local cache (mature SDK addition)
|
|
146
|
+
|
|
147
|
+
The reference SDK without cache hits etcd on every Get — bounded latency (one round-trip) but multiplies etcd load with subscriber count. A mature SDK adds:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
LRU cache with TTL:
|
|
151
|
+
- On Get(key):
|
|
152
|
+
if cache.has(key) && !expired:
|
|
153
|
+
metric: cache_hit_counter ++
|
|
154
|
+
return cache.get(key)
|
|
155
|
+
else:
|
|
156
|
+
val = etcd.Get(key)
|
|
157
|
+
metric: cache_miss_counter ++
|
|
158
|
+
cache.set(key, val, TTL)
|
|
159
|
+
return val
|
|
160
|
+
- On Watch event for key:
|
|
161
|
+
cache.invalidate(key)
|
|
162
|
+
- On etcd error:
|
|
163
|
+
metric: error_counter ++
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Cache TTL: 30 seconds to a few minutes. Long enough to absorb burst reads; short enough that a writer's value propagates if Watch is missed.
|
|
167
|
+
|
|
168
|
+
**Split-brain config during partitions**: if some clients reconnect their watch and pull the new value while others remain on the old (stale Watch + still-warm cache), the fleet runs on mixed values. For **dangerous policy values** (retry budgets, circuit-breaker thresholds, kill switches, rate limits), this can produce uneven load amplification. Mitigations:
|
|
169
|
+
- **Version every config value**: include a monotonic version field in the JSON payload; client emits a metric `config_version_in_use{key, version}`. Operator can see fleet-wide adoption.
|
|
170
|
+
- **Max-staleness enforcement**: if the SDK detects its Watch has been disconnected for longer than `2 × cache_TTL`, treat the cache as expired and force a re-read. If the re-read also fails, fail closed for safety-critical keys (e.g. kill switches default to "off") or warn for non-critical.
|
|
171
|
+
- **Fail-closed defaults for dangerous keys**: a key like `payment_double_charge_protection` should default to "on" (safe) if the SDK cannot reach the config center; not "off" (silent-fail). Encode the safe default in code, not in etcd.
|
|
172
|
+
- **Per-version adoption gating**: a deploy that flips a policy should query `config_version_in_use` and wait for >95% adoption before proceeding to the next step.
|
|
173
|
+
|
|
174
|
+
Metrics emitted (all with baseline labels):
|
|
175
|
+
- `dcc_client_operations_counter` — labelled by op (get/set/del/watch).
|
|
176
|
+
- `dcc_client_cache_hit_counter` / `dcc_client_cache_miss_counter` — by key.
|
|
177
|
+
- `dcc_client_error_counter` — by op + error class.
|
|
178
|
+
|
|
179
|
+
Without these metrics you cannot tell whether the cache is doing its job.
|
|
180
|
+
|
|
181
|
+
## Common stored payload types
|
|
182
|
+
|
|
183
|
+
Real deployments store a mix of non-secret payloads:
|
|
184
|
+
|
|
185
|
+
| Payload | Type | Update cadence | Read cadence |
|
|
186
|
+
|---|---|---|---|
|
|
187
|
+
| Domain / hostname list | JSON array | weekly | per-service-startup |
|
|
188
|
+
| Secret-store references for external services | JSON reference id | rare (rotation) | per-service-startup |
|
|
189
|
+
| Chat group routing config (notice channel IDs) | JSON | monthly | per-alert |
|
|
190
|
+
| Per-service per-lane resource sizing | JSON map (psm → lane → {cpu, memory, replicas, size}) | per deploy | per-deploy |
|
|
191
|
+
| Per-caller-callee traffic policy | JSON (timeout, retry, CB) | daily | per-RPC-call (cached) |
|
|
192
|
+
| Feature flags | string / JSON | hourly | per-request (cached) |
|
|
193
|
+
|
|
194
|
+
**Different payloads need different cache TTLs**. Feature flags MUST update fast; stable domain lists can be cached longer.
|
|
195
|
+
|
|
196
|
+
## What NOT to put in etcd
|
|
197
|
+
|
|
198
|
+
- Secrets (use the secret store).
|
|
199
|
+
- Per-request state (use Redis / DB).
|
|
200
|
+
- Audit logs (use audit log infra).
|
|
201
|
+
- Large blobs (> 1 MB).
|
|
202
|
+
- Anything that needs ACID across multiple keys (etcd supports transactions but the SDK rarely exposes them; use a relational DB for transactional needs).
|
|
203
|
+
|
|
204
|
+
## Operator interface
|
|
205
|
+
|
|
206
|
+
Operators write to etcd via the control-plane API, not via raw etcd commands:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
PUT /v1/config/{service}/{namespace}/{key} body: value, audit_reason
|
|
210
|
+
GET /v1/config/{service}/{namespace}/{key} → value, version, last_modified, modified_by
|
|
211
|
+
GET /v1/config/{service}/{namespace} → list keys
|
|
212
|
+
DEL /v1/config/{service}/{namespace}/{key} body: audit_reason
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The control plane:
|
|
216
|
+
- Authenticates the operator.
|
|
217
|
+
- Validates the value (JSON shape, range, allowed enum).
|
|
218
|
+
- Acquires a per-key write lock (Redis lock for ~10s) to prevent racing writers.
|
|
219
|
+
- Writes to etcd.
|
|
220
|
+
- Emits audit event (who changed what to what, when, why).
|
|
221
|
+
|
|
222
|
+
Direct `etcdctl put` access should be limited to platform admins for break-glass; routine changes go through the control plane.
|
|
223
|
+
|
|
224
|
+
## Off-cluster developer access
|
|
225
|
+
|
|
226
|
+
Developers and CLIs that run outside the cluster reach dcc via:
|
|
227
|
+
- The same control-plane API (read-only for most developers; write requires role).
|
|
228
|
+
- OR a direct etcd connection if their role permits — usually for SDK debugging only.
|
|
229
|
+
|
|
230
|
+
Do not give every developer raw etcd write access; one mis-keyed `put` corrupts config for a whole service.
|
|
231
|
+
|
|
232
|
+
## Failure modes
|
|
233
|
+
|
|
234
|
+
- **etcd cluster split (minority partition)**: by default etcd uses linearizable reads which require quorum/leader contact — clients on the minority side typically fail reads, not return stale data. If your SDK explicitly enables serializable reads (`clientv3.WithSerializable()`), reads can succeed locally but may be stale; document the choice. Writes always fail on the minority side.
|
|
235
|
+
- **Watch stream drops** (network blip): SDK reconnects from the last observed revision (saved from `resp.Header.Revision`) — events within the compaction window are recoverable. Beyond compaction, the SDK gets `ErrCompacted` and must do a full re-read of subscribed keys. Best practice: track last revision per watch + periodic full re-read (e.g. every 5 min) as belt-and-suspenders.
|
|
236
|
+
- **Cache stale**: If the Watch reconnect didn't recover all events (compaction window exceeded) and cache TTL is long, readers see stale values. Tune TTL by payload sensitivity; on watch reconnect failure, invalidate the cache for the affected keys.
|
|
237
|
+
- **etcd cluster full**: rare but real. Monitor etcd disk usage; alert at 60% / 80%.
|
|
238
|
+
|
|
239
|
+
## Verification
|
|
240
|
+
|
|
241
|
+
- Read a value via SDK, change it via control plane, expect SDK listener fires within 1 second.
|
|
242
|
+
- Read same key 1000 times in 30s, expect cache hit metric > 99%.
|
|
243
|
+
- Set a too-large value (>1 MB), expect SDK rejects or etcd rejects with clear error.
|
|
244
|
+
- Kill one etcd replica (in a 3-replica cluster), expect reads continue, writes continue, SDK reconnects within seconds.
|
|
245
|
+
- Read `<service>/non-default-namespace/<key>` for a key that exists only in `default`, expect not-found (not a fallback to default — keep namespaces explicit).
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Custom Control Plane: When and Where
|
|
2
|
+
|
|
3
|
+
A decision framework for building a self-hosted deploy/ops control plane (API + CLI + Web UI) instead of adopting GitOps / Spinnaker / Tekton. Distilled from real platforms where the custom plane was the right call.
|
|
4
|
+
|
|
5
|
+
## When custom plane is the right pick
|
|
6
|
+
|
|
7
|
+
All of the following are usually true:
|
|
8
|
+
|
|
9
|
+
1. **Lane is a first-class concept**, not a label retrofit. Per-developer lanes, named canary lanes, ephemeral test lanes — and you'll have dozens to hundreds at once.
|
|
10
|
+
2. **Approval lives in a chat platform** (Lark / Slack / Teams / WeCom). Operators want to approve from the chat card, not log into a portal.
|
|
11
|
+
3. **Multi-language teams** share the deploy tool: backend (Go/Python/...), frontend (React/Flutter/native). One CLI / one UI keeps the workflow uniform.
|
|
12
|
+
4. **Domain-specific canary logic** matters — e.g. log-error-diff by source line, custom SLI queries, or business-specific abort criteria — not just CPU/latency thresholds.
|
|
13
|
+
5. **Audit and RBAC tie to the organization's identity system** (internal IDP, not GitHub/GitLab user model).
|
|
14
|
+
6. **Operations team is non-engineer** — product ops, release manager, on-call — who should not need git PR workflow knowledge.
|
|
15
|
+
|
|
16
|
+
If 2-3 of these are true, custom plane is competitive. If 5+ are true, custom plane usually wins.
|
|
17
|
+
|
|
18
|
+
When **not** to build custom plane:
|
|
19
|
+
- Pure engineer-driven team, all comfortable with kubectl + git.
|
|
20
|
+
- Single environment, few services, no lane explosion.
|
|
21
|
+
- No chat-platform approval need.
|
|
22
|
+
- Small team (< 10 backend engineers) — maintenance cost outweighs ergonomic gain.
|
|
23
|
+
|
|
24
|
+
## What the custom plane MUST own
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
1. Service catalog
|
|
28
|
+
- service identity (PSM / service.name)
|
|
29
|
+
- owners (multi-owner; non-empty enforced)
|
|
30
|
+
- protocol, port, mesh-injection flag, VCI/serverless flag
|
|
31
|
+
- hosts (ingress hostnames if any)
|
|
32
|
+
|
|
33
|
+
2. Lane model
|
|
34
|
+
- lane name, type (online/offline), description
|
|
35
|
+
- immutable after creation; only description mutable
|
|
36
|
+
- strict prefix convention enforced at API
|
|
37
|
+
- lane-service relation table (per-lane resource size, replicas, cluster)
|
|
38
|
+
- lifecycle: protected lanes (long-lived) vs ephemeral (TTL + sweeper)
|
|
39
|
+
|
|
40
|
+
3. Deploy orchestration
|
|
41
|
+
- render k8s YAML (Deployment + Service + PVC) from templates
|
|
42
|
+
- render Istio resources (VirtualService + DestinationRule) consistently
|
|
43
|
+
- apply via k8s API (direct, or via Argo CD API if hybrid)
|
|
44
|
+
- stream watch events back to caller (WebSocket)
|
|
45
|
+
- record image digest, not tag, in audit
|
|
46
|
+
|
|
47
|
+
4. Approval workflow
|
|
48
|
+
- create review task (risk class + change summary + rollback plan + obs evidence)
|
|
49
|
+
- send chat-platform card to assigned reviewers
|
|
50
|
+
- receive callback (idempotent — first approver wins)
|
|
51
|
+
- update task state + re-render card
|
|
52
|
+
- block deploy API until approved (for risk class that requires)
|
|
53
|
+
|
|
54
|
+
5. Canary check task
|
|
55
|
+
- bake window + SLI queries OR log-error-diff configuration
|
|
56
|
+
- start task (record in cache or DB with TTL)
|
|
57
|
+
- poll status + run check at expiry
|
|
58
|
+
- emit promote / abort decision
|
|
59
|
+
- audit the decision with evidence link
|
|
60
|
+
|
|
61
|
+
6. Rollback
|
|
62
|
+
- one command (CLI) / one button (UI)
|
|
63
|
+
- target = previous known-good image digest
|
|
64
|
+
- mesh weight shift OR re-apply previous Deployment
|
|
65
|
+
- smoke verification post-rollback
|
|
66
|
+
|
|
67
|
+
7. Traffic-policy delegation hooks
|
|
68
|
+
- MAY expose connectivity-owned per-pair policy APIs through the same auth/audit shell
|
|
69
|
+
- MUST NOT define retry/timeout/circuit semantics here
|
|
70
|
+
- audit every delegated traffic-policy change
|
|
71
|
+
|
|
72
|
+
8. Mesh config reconciliation
|
|
73
|
+
- regenerate full VS + DR per service on any lane-service change
|
|
74
|
+
- serialized ordered apply with dry-run and rollback capture
|
|
75
|
+
- do not claim k8s cross-resource transactions; full regenerate per change
|
|
76
|
+
|
|
77
|
+
9. Audit + history
|
|
78
|
+
- every deploy / approval / rollback / traffic-change event recorded
|
|
79
|
+
- queryable by service / lane / time / actor
|
|
80
|
+
- retention >= 90 days (high-risk events 1 year+)
|
|
81
|
+
|
|
82
|
+
10. Integrations
|
|
83
|
+
- chat-platform card receive + send
|
|
84
|
+
- cloud-provider pipeline notice receive (if applicable)
|
|
85
|
+
- cloud-provider alert receive (if applicable)
|
|
86
|
+
- grafana alert webhook receive
|
|
87
|
+
- emit alerts/notices to chat-platform
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## What the custom plane MUST NOT own
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
1. Pod scheduling, restart, eviction
|
|
94
|
+
→ kubernetes does this. Don't reimplement.
|
|
95
|
+
|
|
96
|
+
2. Service discovery
|
|
97
|
+
→ connectivity-owned discovery mode: registry-based, k8s-native,
|
|
98
|
+
or mixed. Custom plane may publish lane/deploy metadata through a
|
|
99
|
+
delegated adapter, but does not own resolver, registry, or
|
|
100
|
+
EndpointSlice semantics.
|
|
101
|
+
|
|
102
|
+
3. Network-level retry, timeout, mTLS
|
|
103
|
+
→ Istio sidecar / Envoy. Custom plane configures DestinationRule
|
|
104
|
+
defaults via the catalog, doesn't enforce at runtime.
|
|
105
|
+
|
|
106
|
+
4. Metrics collection / storage / query
|
|
107
|
+
→ OTel collector + Prometheus + VictoriaMetrics / Mimir.
|
|
108
|
+
Custom plane consumes SLIs via query API, doesn't store metrics.
|
|
109
|
+
|
|
110
|
+
5. Log collection / parsing / indexing
|
|
111
|
+
→ filebeat + logstash + ES. Custom plane queries ES for
|
|
112
|
+
canary log-diff but doesn't ingest.
|
|
113
|
+
|
|
114
|
+
6. Trace storage / query
|
|
115
|
+
→ Jaeger / Tempo / equivalent.
|
|
116
|
+
|
|
117
|
+
7. Static config bundling
|
|
118
|
+
→ image build path (conf/<env>.yml in image). Custom plane
|
|
119
|
+
doesn't manage static config.
|
|
120
|
+
|
|
121
|
+
8. Dynamic config storage
|
|
122
|
+
→ config center (etcd). Custom plane writes via SDK,
|
|
123
|
+
doesn't replace it.
|
|
124
|
+
|
|
125
|
+
9. Secret storage / rotation
|
|
126
|
+
→ secret store (KMS / Vault / cloud-provider equivalent).
|
|
127
|
+
|
|
128
|
+
10. CI build (compile / test / package)
|
|
129
|
+
→ CI runner (GitLab CI / GitHub Actions / Tekton).
|
|
130
|
+
Custom plane triggers image build via control-plane
|
|
131
|
+
API but doesn't run the build itself.
|
|
132
|
+
|
|
133
|
+
11. Full platform dashboard
|
|
134
|
+
→ grafana / kibana / jaeger UI. Custom plane links to them,
|
|
135
|
+
does not duplicate.
|
|
136
|
+
|
|
137
|
+
12. Identity / SSO
|
|
138
|
+
→ organization IDP. Custom plane validates tokens, doesn't issue.
|
|
139
|
+
|
|
140
|
+
13. Networking policy / firewall
|
|
141
|
+
→ k8s NetworkPolicy + cloud provider firewall.
|
|
142
|
+
|
|
143
|
+
14. Cluster lifecycle (create / upgrade / scale)
|
|
144
|
+
→ cloud provider console + ops shell scripts (bootstrap-only).
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Recommended minimum API surface
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
# Service catalog
|
|
151
|
+
POST /v1/service create/update service definition
|
|
152
|
+
GET /v1/service/<psm> get service
|
|
153
|
+
DELETE /v1/service/<psm> delete service (cascades to k8s + Istio)
|
|
154
|
+
GET /v1/service list (filterable)
|
|
155
|
+
POST /v1/service/<psm>/owners change owners
|
|
156
|
+
|
|
157
|
+
# Lane
|
|
158
|
+
POST /v1/lane create lane
|
|
159
|
+
DELETE /v1/lane/<name> delete lane (cascades)
|
|
160
|
+
GET /v1/lane list lanes
|
|
161
|
+
GET /v1/lane/<name> lane detail (+ services optional)
|
|
162
|
+
|
|
163
|
+
# Per-lane service deploy
|
|
164
|
+
POST /v1/lane/<lane>/service/<psm>/deploy deploy version into lane
|
|
165
|
+
GET /v1/lane/<lane>/service/<psm>/deploy_ws WebSocket: stream watch events
|
|
166
|
+
GET /v1/lane/<lane>/service/<psm> detail + pod list
|
|
167
|
+
PUT /v1/lane/<lane>/service/<psm> update resource config / replicas / protocol
|
|
168
|
+
DELETE /v1/lane/<lane>/service/<psm> delete from lane
|
|
169
|
+
GET /v1/lane/<lane>/service/<psm>/config rendered YAML preview
|
|
170
|
+
|
|
171
|
+
# Canary
|
|
172
|
+
POST /v1/canary_check run log-diff or SLI check immediately
|
|
173
|
+
POST /v1/canary_check_task start a bake window task
|
|
174
|
+
GET /v1/canary_check_task poll task status + result
|
|
175
|
+
|
|
176
|
+
# Mesh config / delegated traffic policy
|
|
177
|
+
POST /v1/service/<psm>/reload_mesh regenerate VS + DR for service
|
|
178
|
+
GET /v1/service/<psm>/traffic_config delegated: list connectivity-owned per-pair traffic policy
|
|
179
|
+
PUT /v1/service/<psm>/traffic_config delegated: update connectivity-owned per-pair traffic policy
|
|
180
|
+
|
|
181
|
+
# Review
|
|
182
|
+
POST /v1/review_task create review task
|
|
183
|
+
GET /v1/review_task list (filterable by status/risk/service)
|
|
184
|
+
GET /v1/review_task/<id> detail
|
|
185
|
+
POST /v1/review_task/<id>/approve approve (or reject)
|
|
186
|
+
|
|
187
|
+
# Rollback
|
|
188
|
+
POST /v1/service/<psm>/rollback rollback to previous known-good
|
|
189
|
+
|
|
190
|
+
# Domain (ingress hostname)
|
|
191
|
+
GET /v1/domain list
|
|
192
|
+
PUT /v1/domain modify
|
|
193
|
+
|
|
194
|
+
# Inbound webhooks
|
|
195
|
+
POST /v1/callback/grafana grafana alert → chat
|
|
196
|
+
POST /v1/callback/chat_card_action chat card click (approve / ack)
|
|
197
|
+
POST /v1/callback/cloud_pipeline_notice cloud CI/CD notice → chat
|
|
198
|
+
POST /v1/callback/cloud_alert cloud alert → chat
|
|
199
|
+
|
|
200
|
+
# Audit
|
|
201
|
+
GET /v1/audit queryable event log
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Recommended CLI surface
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
deploy-cli login # SSO → token, cached locally
|
|
208
|
+
deploy-cli service ls / get / create
|
|
209
|
+
deploy-cli lane ls / get / create / delete
|
|
210
|
+
deploy-cli build <psm> <version> [--push]
|
|
211
|
+
deploy-cli deploy <psm> <version> <lane> [--wait] # WebSocket streams events
|
|
212
|
+
deploy-cli canary <psm> <version> # start canary check
|
|
213
|
+
deploy-cli review <psm> <version> --risk <class> --reason <text>
|
|
214
|
+
deploy-cli rollback <psm> [--to-version <v>]
|
|
215
|
+
deploy-cli traffic <psm> <callee> --timeout <ms> --retry <n> # delegated to connectivity
|
|
216
|
+
deploy-cli logs <psm> --log-id <id> # opens kibana / log search
|
|
217
|
+
deploy-cli trace <log-id> # opens jaeger / trace UI
|
|
218
|
+
deploy-cli status <lane> # lane summary
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Deploy/update commands call the control-plane API and never directly mutate k8s, service discovery, mesh, or config etcd. Build may push to the image registry through the typed build command. Single endpoint, single auth path for control-plane operations.
|
|
222
|
+
|
|
223
|
+
## Recommended Web UI surface
|
|
224
|
+
|
|
225
|
+
Four pages, no more:
|
|
226
|
+
|
|
227
|
+
1. **Service catalog**: search/filter services, change owners, jump to detail.
|
|
228
|
+
2. **Lane overview + management**: list lanes, create/delete (with proper guards), see services per lane.
|
|
229
|
+
3. **Deploy console**: select service + lane + version → render YAML preview → confirm → watch live progress via WebSocket → see canary report → approve or rollback.
|
|
230
|
+
4. **Audit log query**: filter by actor / service / lane / time / event-type.
|
|
231
|
+
|
|
232
|
+
Avoid:
|
|
233
|
+
- Building a metrics dashboard (grafana already does it; link to grafana).
|
|
234
|
+
- Building a log viewer (kibana / equivalent; link).
|
|
235
|
+
- Building a trace explorer (jaeger; link).
|
|
236
|
+
- Building a "platform health" page (mix of all above; link to each tool).
|
|
237
|
+
|
|
238
|
+
## Hard rules
|
|
239
|
+
|
|
240
|
+
1. **No business logic.** Custom plane is platform-only. The day someone adds "feature flag evaluation per user" to it is the day it stops being a deploy tool.
|
|
241
|
+
2. **Persistent state in control plane = catalog (services + lanes + lane-service relations) + tasks + audit + approvals.** Pod-level runtime state (which pods are running, ready, where) lives in k8s; control plane reads it. The control plane IS the source of truth for the *intent* of lane and service definitions (which lanes exist, what services they own, what resource sizing each lane-service runs at); k8s is the source of truth for the *observed* state of pods. Never duplicate pod state in the control-plane DB.
|
|
242
|
+
3. **Break-glass kubectl path open.** Admins can fix the cluster directly if the control plane is broken or absent.
|
|
243
|
+
4. **Chat platform adapter isolated.** Card rendering + callback handler in one module; switching IM platform requires touching only that module.
|
|
244
|
+
5. **Don't reimplement k8s primitives.** No custom scheduler, no custom networking, no custom DNS. Generate manifests; apply via k8s API.
|
|
245
|
+
6. **No direct etcd writes** (the cluster control-plane etcd). Configuration etcd (dcc) is separate; writes go through control plane API which writes to config etcd, never to cluster etcd.
|
|
246
|
+
7. **API is the source of truth, UI/CLI are thin clients.** Everything UI can do, CLI can do, API can do. No UI-only / CLI-only functionality.
|
|
247
|
+
|
|
248
|
+
## Sizing the maintenance burden
|
|
249
|
+
|
|
250
|
+
A platform team of 3-5 engineers can sustain a control plane of this scope:
|
|
251
|
+
- ~10-15k LOC backend (Go or Python; framework + handlers + logic + service templates)
|
|
252
|
+
- ~5-10k LOC frontend (React)
|
|
253
|
+
- ~3-5k LOC CLI
|
|
254
|
+
- Test suite covering the audit-critical paths (deploy / approve / rollback / mesh reload)
|
|
255
|
+
- Monthly: 1-2 feature additions; bugfix turnaround < 1 week
|
|
256
|
+
- Quarterly: dependency upgrades; integration test refresh
|
|
257
|
+
|
|
258
|
+
A team of 1-2 cannot sustain this and should adopt GitOps + Argo Rollouts instead.
|
|
259
|
+
|
|
260
|
+
## Migration paths
|
|
261
|
+
|
|
262
|
+
### From ad-hoc kubectl scripts → custom plane
|
|
263
|
+
|
|
264
|
+
1. **Phase 1**: catalog existing services into the catalog DB. Manual entries.
|
|
265
|
+
2. **Phase 2**: implement deploy API for one service group. Migrate that group's scripts to use the API.
|
|
266
|
+
3. **Phase 3**: add lane model + render templates from k8s YAML examples.
|
|
267
|
+
4. **Phase 4**: add chat-card approval. Migrate review workflow.
|
|
268
|
+
5. **Phase 5**: add canary check task. Replace manual "wait and watch" with the task.
|
|
269
|
+
6. **Phase 6**: turn off direct kubectl access for non-admins.
|
|
270
|
+
|
|
271
|
+
Estimated: 2-3 quarters with a 3-engineer team.
|
|
272
|
+
|
|
273
|
+
### From GitOps → custom plane
|
|
274
|
+
|
|
275
|
+
Rare; usually the other direction. If you do migrate:
|
|
276
|
+
1. Keep Argo CD as the underlying applier; custom plane writes to the Argo CD repo or calls Argo CD API.
|
|
277
|
+
2. Custom plane adds the lane / approval / canary-check layer on top.
|
|
278
|
+
3. Over time, decide whether to keep Argo or have custom plane apply directly.
|
|
279
|
+
|
|
280
|
+
### From Spinnaker / Tekton → custom plane
|
|
281
|
+
|
|
282
|
+
Custom plane subsumes the pipeline stages most teams care about (build, deploy, canary, promote, rollback). Migrate one service group at a time, comparing audit logs before / after.
|
|
283
|
+
|
|
284
|
+
## Failure modes
|
|
285
|
+
|
|
286
|
+
- **Custom plane DB / API goes down**: deploys blocked. Mitigation: admins use kubectl directly; CLI surfaces "control plane unavailable" clearly so users don't retry blindly.
|
|
287
|
+
- **Chat platform outage**: approvals stuck. Mitigation: emergency override path with explicit audit + post-hoc approval; do not silently bypass.
|
|
288
|
+
- **k8s cluster API rate-limited**: control plane retries with backoff; surface "throttled" status.
|
|
289
|
+
- **Image registry down**: deploys fail at apply (k8s pull). Control plane can detect and report cleanly; not its job to fix.
|
|
290
|
+
- **etcd config center down**: delegated traffic-policy updates blocked. Mesh routing still works (steady state). Old framework SDK cache absorbs the gap.
|
|
291
|
+
|
|
292
|
+
## Verification
|
|
293
|
+
|
|
294
|
+
- Single deploy command (CLI or UI) completes a deploy → can roll back → audit log shows both events with operator identity.
|
|
295
|
+
- A reviewer's chat-card click triggers approval within ~5 seconds (idempotent).
|
|
296
|
+
- Stopping the control-plane backend stops new deploys but leaves running services unaffected (data-plane independence).
|
|
297
|
+
- A new engineer can deploy their first service within 1 hour using only the CLI + UI docs.
|
|
298
|
+
- Cluster admin can bypass the control plane and fix a k8s resource directly when needed.
|