@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,268 @@
|
|
|
1
|
+
# Infrastructure Component Deployment Patterns
|
|
2
|
+
|
|
3
|
+
Concrete sizing, HA stance, retention, and in-cluster vs externally-hosted decisions for the observability infra stack. From production deployments.
|
|
4
|
+
|
|
5
|
+
## Component-by-component shape
|
|
6
|
+
|
|
7
|
+
| Component | Replicas | Stateful? | Storage | Retention | Mesh inject | Notes |
|
|
8
|
+
|---|---|---|---|---|---|---|
|
|
9
|
+
| OTel collector | 3-4 (Deployment) | No | None | n/a | NO | Multi-replica; tail-sampling possible only here, not at DaemonSet |
|
|
10
|
+
| Filebeat (DaemonSet) | one per node | No | hostPath to app log dir | n/a | NO | hostPath mount required; one process per node |
|
|
11
|
+
| Filebeat (sidecar, VCI mode) | one per pod | No | emptyDir | n/a | n/a (sidecar in app pod) | For serverless k8s where hostPath is unavailable |
|
|
12
|
+
| Logstash | 2-5 (HPA on CPU>70% / Mem>80%) | No | None | n/a | NO | Bulk 500, 2 workers, 5s flush |
|
|
13
|
+
| Elasticsearch / OpenSearch | 3+ | Yes | Persistent (often external) | per-ILM | NO | Often externally hosted (see below) |
|
|
14
|
+
| Kibana | 1 | No | ConfigMap only | n/a | NO | Single replica fine — read-only UI |
|
|
15
|
+
| Grafana | 1-2 | Yes (MySQL backend) | External MySQL for dashboards | dashboards forever | NO | Single replica per env in many platforms |
|
|
16
|
+
| Prometheus (scrape layer) | 1-2 | Yes | Local PVC | short (days) | NO | scrape + relay only; do not use as long-term store |
|
|
17
|
+
| VictoriaMetrics / Mimir / Cortex | 1+ (single-replica = dev only) | Yes | NAS RWX or block | 1 week to months | NO | Long-term store; separate from scraper; **single-replica is dev-grade only** — prod needs replication or VM-cluster mode |
|
|
18
|
+
| AlertManager | 0 or 1 | No | Local | n/a | NO | Optional; grafana-only alerting is a real alternative |
|
|
19
|
+
| Trace backend (Jaeger / Tempo) | 1-3 | Yes | Block storage | 7-30 days | NO | OTel-native collectors (Jaeger v2) include the backend |
|
|
20
|
+
|
|
21
|
+
A few non-obvious choices:
|
|
22
|
+
|
|
23
|
+
- **OTel collector as Deployment, not DaemonSet**: tail-sampling needs cross-node aggregation; DaemonSet can't see the full trace.
|
|
24
|
+
- **Filebeat as DaemonSet** in node-attached k8s; as **sidecar** in serverless k8s (cloud-provider container instance). Same filebeat image, different deployment shape.
|
|
25
|
+
- **Mesh injection OFF for observability infra components**: telemetry must not depend on mesh.
|
|
26
|
+
|
|
27
|
+
## In-cluster vs externally-hosted
|
|
28
|
+
|
|
29
|
+
Production platforms typically split:
|
|
30
|
+
|
|
31
|
+
| Component | In-cluster | External | Rationale |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| OTel collector | YES | NO | App SDK → collector is in-cluster traffic |
|
|
34
|
+
| Filebeat / Logstash | YES | NO | tight loop with app logs |
|
|
35
|
+
| Kibana | YES | rare | UI is light |
|
|
36
|
+
| Grafana | YES or external | sometimes external | If a dedicated obs team runs it, lives outside |
|
|
37
|
+
| Elasticsearch | often EXTERNAL | sometimes in-cluster | High storage; many platforms run on bare metal or managed ES |
|
|
38
|
+
| VictoriaMetrics | both | both | small platforms in-cluster; large platforms central VM cluster |
|
|
39
|
+
| Prometheus scraper | YES | YES | sometimes a central cross-cluster scraper |
|
|
40
|
+
|
|
41
|
+
External components reached via:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
# ExternalName for cloud-provider managed services (RDS, etc.)
|
|
45
|
+
apiVersion: v1
|
|
46
|
+
kind: Service
|
|
47
|
+
metadata:
|
|
48
|
+
name: <mysql-or-equivalent>
|
|
49
|
+
spec:
|
|
50
|
+
type: ExternalName
|
|
51
|
+
externalName: <cloud-provider-hostname>
|
|
52
|
+
|
|
53
|
+
# Endpoints with explicit IPs for on-prem / fixed-IP services (ES bare-metal)
|
|
54
|
+
apiVersion: v1
|
|
55
|
+
kind: Service
|
|
56
|
+
metadata:
|
|
57
|
+
name: es-cluster
|
|
58
|
+
spec:
|
|
59
|
+
ports:
|
|
60
|
+
- { name: es, port: 9200, targetPort: 9200 }
|
|
61
|
+
- { name: inter-node, port: 9300, targetPort: 9300 }
|
|
62
|
+
---
|
|
63
|
+
apiVersion: v1
|
|
64
|
+
kind: Endpoints
|
|
65
|
+
metadata:
|
|
66
|
+
name: es-cluster
|
|
67
|
+
subsets:
|
|
68
|
+
- addresses:
|
|
69
|
+
- { ip: <fixed-ip-1> }
|
|
70
|
+
- { ip: <fixed-ip-2> }
|
|
71
|
+
- { ip: <fixed-ip-3> }
|
|
72
|
+
ports:
|
|
73
|
+
- { name: es, port: 9200 }
|
|
74
|
+
- { name: inter-node, port: 9300 }
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The Service + Endpoints pattern lets in-cluster pods reach external systems via the k8s service name as if they were in-cluster, without DNS resolution dependency on external DNS.
|
|
78
|
+
|
|
79
|
+
## Online / Offline parallel deployments
|
|
80
|
+
|
|
81
|
+
A platform may run **parallel obs stacks** for online (production) and offline (staging/dev) separation:
|
|
82
|
+
|
|
83
|
+
| Concern | Online | Offline |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| ES cluster | external bare-metal IPs (set A) | external bare-metal IPs (set B) OR in-cluster |
|
|
86
|
+
| Long-term metric store | external (separate cluster hosted at a stable hostname) | in-cluster VM single-replica |
|
|
87
|
+
| Service names | `es-cluster`, `victoria-metrics-service` | `es-cluster-offline`, `victoria-metrics-service` (same name, different cluster context) |
|
|
88
|
+
| Prom AlertManager | typically off (grafana-driven) | typically off |
|
|
89
|
+
|
|
90
|
+
Same service names in different namespaces / environments let app config stay environment-neutral. Application reads `<service>.<infra-namespace>.svc.cluster.local:<port>` in both environments; the Service definition resolves to different upstreams.
|
|
91
|
+
|
|
92
|
+
## Sizing reference
|
|
93
|
+
|
|
94
|
+
Concrete starting points from real deployments (tune by load):
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
OTel collector:
|
|
98
|
+
resources:
|
|
99
|
+
requests: { cpu: 250m, memory: 512Mi }
|
|
100
|
+
limits: { cpu: 4000m, memory: 8Gi }
|
|
101
|
+
4 replicas
|
|
102
|
+
|
|
103
|
+
Filebeat DaemonSet:
|
|
104
|
+
resources: per-node, similar to app — small (1 cpu, 1Gi)
|
|
105
|
+
|
|
106
|
+
Logstash:
|
|
107
|
+
resources:
|
|
108
|
+
requests: { cpu: 500m, memory: 1Gi }
|
|
109
|
+
limits: { cpu: 2000m, memory: 2Gi }
|
|
110
|
+
2 replicas + HPA to 5
|
|
111
|
+
JVM heap: -Xms1g -Xmx1g
|
|
112
|
+
PIPELINE_WORKERS: 2
|
|
113
|
+
PIPELINE_BATCH_SIZE: 500
|
|
114
|
+
PIPELINE_BATCH_DELAY: 5
|
|
115
|
+
|
|
116
|
+
Kibana:
|
|
117
|
+
resources:
|
|
118
|
+
requests: { cpu: 500m, memory: 1Gi }
|
|
119
|
+
limits: { cpu: 1000m, memory: 2Gi }
|
|
120
|
+
1 replica
|
|
121
|
+
|
|
122
|
+
Grafana:
|
|
123
|
+
resources:
|
|
124
|
+
requests: { cpu: 500m, memory: 1Gi }
|
|
125
|
+
limits: { cpu: 1000m, memory: 2Gi }
|
|
126
|
+
1 replica per env, external MySQL backend for dashboards
|
|
127
|
+
|
|
128
|
+
VictoriaMetrics (single-instance — DEV/NON-CRITICAL ONLY):
|
|
129
|
+
resources:
|
|
130
|
+
requests: { cpu: 1000m, memory: 2Gi }
|
|
131
|
+
limits: { cpu: 4000m, memory: 8Gi }
|
|
132
|
+
Retention: 1 week to 30 days
|
|
133
|
+
Storage: 50Gi NAS RWX (allows snapshot DR)
|
|
134
|
+
WARNING: single-instance with 1-week retention loses ALL metrics on disk failure or
|
|
135
|
+
pod loss with corrupted PVC. For production, run VM-cluster mode (vmstorage 3+
|
|
136
|
+
replicas with replication factor 2+) OR send to a managed metrics service.
|
|
137
|
+
Single-instance is acceptable for dev/staging where losing a week's metrics
|
|
138
|
+
during an incident is an inconvenience, not a blocker.
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Log noise discipline: cleaner sidecar pattern
|
|
143
|
+
|
|
144
|
+
Some observability infra components emit huge access / debug logs by default. Without cleanup, disk fills. Pattern:
|
|
145
|
+
|
|
146
|
+
```yaml
|
|
147
|
+
containers:
|
|
148
|
+
- name: <main-component>
|
|
149
|
+
# ... main spec
|
|
150
|
+
volumeMounts:
|
|
151
|
+
- { name: data, mountPath: <log-dir> }
|
|
152
|
+
|
|
153
|
+
- name: log-cleaner
|
|
154
|
+
image: <small-image-with-find-and-rm>:latest
|
|
155
|
+
resources:
|
|
156
|
+
requests: { cpu: 125m, memory: 256Mi }
|
|
157
|
+
limits: { cpu: 500m, memory: 1Gi }
|
|
158
|
+
volumeMounts:
|
|
159
|
+
- { name: data, mountPath: <log-dir> }
|
|
160
|
+
command:
|
|
161
|
+
- "/bin/sh"
|
|
162
|
+
- "-c"
|
|
163
|
+
- |
|
|
164
|
+
while true; do
|
|
165
|
+
find <log-dir> -type f \( -name "*.log.*" -o -name "*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].log" \) \
|
|
166
|
+
-mtime +3 -print | while read f; do
|
|
167
|
+
rm -f "$f"
|
|
168
|
+
done
|
|
169
|
+
sleep 3600
|
|
170
|
+
done
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Sleep 1 hour, delete files older than 3 days. The patterns match both `xxx.log.<date>.0` (logrotate format) and `xxx-<date>.log` (date-suffix format).
|
|
174
|
+
|
|
175
|
+
**Critical safety**: do NOT mount the entire host log directory or share a mount with audit/security logs. The cleaner's broad glob (`*[0-9][0-9][0-9][0-9]-...`) will happily delete `audit.log.2026-01-15.0` during an incident investigation. Required restrictions:
|
|
176
|
+
- Mount only the specific verbose component's log subdirectory; never a shared root.
|
|
177
|
+
- Use `-xdev` (don't cross filesystem boundaries) and depth limits in `find`.
|
|
178
|
+
- Maintain an allowlist of filenames the cleaner is permitted to remove, not just a date-pattern.
|
|
179
|
+
- Emit a metric (`log_cleaner_files_deleted_total`) for monitoring; alert on anomalous deletion volume.
|
|
180
|
+
- Document the cleaner's mount and pattern in the component's runbook so incident responders know what is auto-deleted.
|
|
181
|
+
|
|
182
|
+
This is preferable to:
|
|
183
|
+
- Disabling the verbose log entirely (loses incident-time data).
|
|
184
|
+
- Per-deployment custom log-rotate config (drift; hard to audit).
|
|
185
|
+
- Trusting the component's built-in rotation (often misconfigured; observed 1.9 GB / day from one registry component without cleanup).
|
|
186
|
+
- **In-app log cleanup running as a daemon timer inside the application process** (the application starts a goroutine/thread that periodically `find <log-dir> -mtime +N -delete`). This is a recurring anti-pattern with multiple problems: it races with the platform's log rotation (logrotate, k8s log driver, fluent-bit tail), it deletes files that observability collectors are still reading and produces inconsistent log-truncation events, it requires the application container to have write+delete permission on its own log directory (broader than the standard read-by-collector posture), and it makes log-retention policy implicit in application binary instead of explicit in deployment config. Log retention is a platform concern; the application emits logs and the platform decides retention. Move app-internal log-cleanup timers to the sidecar pattern above or to the cluster's log driver.
|
|
187
|
+
|
|
188
|
+
## Stateful component snapshot DR
|
|
189
|
+
|
|
190
|
+
**Safety scope**: this pattern is for **whole-cluster DR** (lost data dir + lost quorum). It is NOT a single-replica repair tool. Misuse causes data corruption:
|
|
191
|
+
- Single replica loses its PVC while the other replicas have newer state → init container restores stale snapshot into a live quorum → member-ID conflict, divergent log, or stale state rejoin → cluster split or data loss.
|
|
192
|
+
- Therefore: gate the init container behind an **explicit DR marker** (e.g. ConfigMap key, annotation, env var set only by operator during DR scale-to-zero procedure).
|
|
193
|
+
- Without the DR marker, init container exits 0 immediately. With the marker, it performs the restore — but only after confirming the StatefulSet is scaled to 0 first.
|
|
194
|
+
- For single-replica repair (one pod lost PVC, others healthy): use the component's native `member remove + member add` workflow, not snapshot restore.
|
|
195
|
+
|
|
196
|
+
For stateful observability infra such as a trace backend or long-term metric/log store that needs disaster recovery beyond replica redundancy:
|
|
197
|
+
|
|
198
|
+
```yaml
|
|
199
|
+
initContainers:
|
|
200
|
+
- name: restore-from-snapshot
|
|
201
|
+
image: <component-image>:<version>
|
|
202
|
+
env:
|
|
203
|
+
- { name: CLUSTER_SIZE, value: "3" }
|
|
204
|
+
- { name: SET_NAME, value: "<statefulset-name>" }
|
|
205
|
+
- name: NAMESPACE
|
|
206
|
+
valueFrom: { fieldRef: { fieldPath: metadata.namespace } }
|
|
207
|
+
command:
|
|
208
|
+
- "/bin/sh"
|
|
209
|
+
- "-exc"
|
|
210
|
+
- |
|
|
211
|
+
SNAPSHOT_DIR=/snapshot
|
|
212
|
+
SNAPSHOT_FILE=${SNAPSHOT_DIR}/<component>-snapshot.db
|
|
213
|
+
DATA_DIR=/data/<component>
|
|
214
|
+
RESTORE_LOCK=${SNAPSHOT_DIR}/.restore-lock
|
|
215
|
+
|
|
216
|
+
# 1. If data dir already populated, skip (normal restart).
|
|
217
|
+
if [ -d "${DATA_DIR}/member" ]; then exit 0; fi
|
|
218
|
+
|
|
219
|
+
# 2. If no snapshot, skip (first-time cluster bootstrap).
|
|
220
|
+
if [ ! -s "${SNAPSHOT_FILE}" ]; then exit 0; fi
|
|
221
|
+
|
|
222
|
+
# 3. Lock to prevent multiple pods restoring simultaneously.
|
|
223
|
+
if ! mkdir "${RESTORE_LOCK}" 2>/dev/null; then
|
|
224
|
+
# Another pod holds the lock; wait for it.
|
|
225
|
+
while [ -d "${RESTORE_LOCK}" ]; do sleep 2; done
|
|
226
|
+
if [ -d "${DATA_DIR}/member" ]; then exit 0; fi # peer completed it
|
|
227
|
+
exit 1 # lock disappeared but data dir empty → retry
|
|
228
|
+
fi
|
|
229
|
+
trap "rm -rf \"${RESTORE_LOCK}\"" EXIT
|
|
230
|
+
|
|
231
|
+
# 4. Perform the restore.
|
|
232
|
+
<component-restore-command> "${SNAPSHOT_FILE}" --data-dir "${DATA_DIR}"
|
|
233
|
+
volumeMounts:
|
|
234
|
+
- { name: data, mountPath: /data/<component> }
|
|
235
|
+
- { name: snapshot, mountPath: /snapshot }
|
|
236
|
+
|
|
237
|
+
volumes:
|
|
238
|
+
- name: snapshot
|
|
239
|
+
persistentVolumeClaim:
|
|
240
|
+
claimName: <shared-rwx-pvc> # ReadWriteMany NAS volume
|
|
241
|
+
|
|
242
|
+
volumeClaimTemplates:
|
|
243
|
+
- metadata: { name: data }
|
|
244
|
+
spec:
|
|
245
|
+
storageClassName: <nas-class>
|
|
246
|
+
accessModes: ["ReadWriteMany"]
|
|
247
|
+
resources: { requests: { storage: 50Gi } }
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Critical patterns:
|
|
251
|
+
- **DR marker gate** (see Safety scope above) before ANY restore action runs.
|
|
252
|
+
- **Shared NAS PVC** (ReadWriteMany) for the snapshot file — all replicas read from the same place.
|
|
253
|
+
- **File-lock for coordination** — `mkdir` is atomic; the first pod to create the lock dir wins. BUT: lock files MUST have a TTL or holder metadata. Pure `mkdir` lock is broken on holder crash: if the locking pod SIGKILLs mid-restore, peers wait forever for the lock dir to disappear. Mitigations:
|
|
254
|
+
- Write a heartbeat file inside the lock dir with timestamp + holder identity (`pod-name + uid`); peers check heartbeat age and force-release after `4× heartbeat_interval`.
|
|
255
|
+
- Or use a Kubernetes `Lease` resource (lease.coordination.k8s.io) which has built-in TTL and renewal — preferable over file-based locks for k8s-native operation.
|
|
256
|
+
- Document break-glass: when peers detect a stale lock holder (heartbeat > N minutes), operator manually deletes the lock dir after confirming the original holder is gone.
|
|
257
|
+
- **Idempotent**: existing data dir means "already restored or already running" — skip.
|
|
258
|
+
- **Restore command varies by component** (`etcdctl snapshot restore`, equivalent for others).
|
|
259
|
+
|
|
260
|
+
Snapshot generation runs as a separate CronJob (not shown here) — periodic dump to the NAS volume.
|
|
261
|
+
|
|
262
|
+
## Verification
|
|
263
|
+
|
|
264
|
+
- Storage limits met: monitor disk usage per stateful component; alert at 70% / 85%.
|
|
265
|
+
- Log cleaner sidecar working: file count + total size graph shows daily reset.
|
|
266
|
+
- Snapshot DR drill: in non-prod, scale StatefulSet to 0, delete data PVCs, scale back; init container should restore from the latest snapshot within timeout (typically minutes).
|
|
267
|
+
- Multi-replica check: scale a component to N replicas; kill 1; remaining serves; replica returns; cluster heals.
|
|
268
|
+
- Cross-environment routing: same service name (e.g. `es-cluster`) resolves to different endpoints in offline vs online envs — pod's resolved IPs differ as expected.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Log / Trace / Metrics Correlation Recipe
|
|
2
|
+
|
|
3
|
+
Goal: a human (or agent) given one user complaint can find every log line, every trace span, every metric data point produced while that request was in flight — across every service hop.
|
|
4
|
+
|
|
5
|
+
## The three IDs
|
|
6
|
+
|
|
7
|
+
| ID | Purpose | Lifetime |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `log-id` | Human-friendly correlation handle; the only id a user reports in a ticket. Generated at the edge if absent. | Per-request, immutable through all hops |
|
|
10
|
+
| `trace-id` | OTel-standard 128-bit; joins spans into one trace | Per-request, OTel-managed |
|
|
11
|
+
| `span-id` | Identifies one segment of work inside one service | Per-span |
|
|
12
|
+
|
|
13
|
+
The platform MUST propagate all three through every transport.
|
|
14
|
+
|
|
15
|
+
## Propagation transports
|
|
16
|
+
|
|
17
|
+
### HTTP
|
|
18
|
+
|
|
19
|
+
Inbound (server side):
|
|
20
|
+
- Read `<log-id-header>` from request headers; if empty, generate (e.g. `time_ns + random + pod_suffix`).
|
|
21
|
+
- Read OTel headers (`traceparent`, `tracestate`) via OTel HTTP instrumentation.
|
|
22
|
+
- Inject all three into `context.Context` using platform-defined ctx keys.
|
|
23
|
+
- Write `<log-id-header>` back into the response so the client can echo it in error reports.
|
|
24
|
+
|
|
25
|
+
Outbound (client side):
|
|
26
|
+
- Read the three IDs from `context.Context`.
|
|
27
|
+
- Set `<log-id-header>` on the outgoing request.
|
|
28
|
+
- Let OTel instrumentation set `traceparent`/`tracestate`.
|
|
29
|
+
|
|
30
|
+
### RPC (Kitex/gRPC/Thrift)
|
|
31
|
+
|
|
32
|
+
Inbound:
|
|
33
|
+
- Same as HTTP, but read from RPC metadata instead of HTTP headers.
|
|
34
|
+
- For Kitex specifically: the kitex-contrib OTel package handles trace headers; the platform adds log-id handling in a custom middleware.
|
|
35
|
+
|
|
36
|
+
Outbound:
|
|
37
|
+
- Pull the three IDs from ctx → write into RPC metadata.
|
|
38
|
+
|
|
39
|
+
### Message Queue (Kafka, RocketMQ, etc.)
|
|
40
|
+
|
|
41
|
+
Producer:
|
|
42
|
+
- Inject the three IDs as message headers/attributes (e.g. Kafka headers, RocketMQ user properties).
|
|
43
|
+
- Trace context per OTel messaging spec.
|
|
44
|
+
|
|
45
|
+
Consumer:
|
|
46
|
+
- Extract the three IDs from message attributes → put back into `context.Context` of the consume handler.
|
|
47
|
+
- New span: kind=consumer, parent = extracted trace context.
|
|
48
|
+
|
|
49
|
+
If the queue has no header support, encode as JSON envelope keys: `{ "_log_id": "...", "_traceparent": "...", "payload": {...} }`. Refuse to ship a service that swallows correlation ids at the queue boundary.
|
|
50
|
+
|
|
51
|
+
### Composite propagator, format interop, and cross-stack key normalization
|
|
52
|
+
|
|
53
|
+
Define the propagator **once** and install the **same** composite propagator across every stack, adapter, and transport (HTTP / RPC / MQ) — not per-adapter. A real fleet is heterogeneously instrumented, so per-adapter divergence in format support, key spelling, or propagator order silently breaks trace-join at the boundary between two services (a Go caller and a Python callee drop each other's context). Footguns, each a repeated fix:
|
|
54
|
+
|
|
55
|
+
- **CompositePropagator `extract` is LAST-WINS.** When both W3C `traceparent` and `b3` arrive, the propagator listed **last** wins the conflict. The intuitive order `[TraceContext, b3, Baggage]` makes **b3** win — the opposite of "W3C wins". To make W3C win, put TraceContext **last**: `[b3, Baggage, TraceContext]`. Pin it with an explicit W3C-vs-b3 conflict test; never assume the list reads highest-priority-first.
|
|
56
|
+
- **Accept every format on extract; inject W3C only — but preserve sampling and sequence the rollout.** *Extract* reads W3C `traceparent`/`tracestate` AND `b3` (single + multi header) for b3-speaking meshes / older services. *Inject* must emit **W3C only** — do NOT leave the `b3` propagator in the inject path, or a single bidirectional composite re-emits both `traceparent` and `b3`. Use an extract-only b3 wrapper (or a composite whose injector is W3C-only); on a b3-only inbound, downstream then carries exactly one canonical `traceparent`, no `b3`. When canonicalizing b3→W3C, **map the sampling/debug bit** (`X-B3-Sampled` / b3 debug flag → W3C `trace-flags` sampled bit) or downstream makes wrong sampling decisions — and handle b3's third state, **absent sampling header = *defer***: do NOT flatten defer to `trace-flags=00` (a `ParentBased` sampler would then drop every span as "remote-not-sampled"); on defer, make a fresh local sampling decision. Also **carry `tracestate`** through every hop — including the headerless-MQ JSON envelope (`_tracestate` alongside `_traceparent`), or vendor sampling/routing state is lost at the queue boundary. Rollout is ordered: deploy W3C+b3 **extraction** (or boundary bridges) everywhere **first**, then flip egress to W3C-only — a service that goes W3C-only before its b3-only consumers upgrade drops the trace for them.
|
|
57
|
+
- **Normalize metadata/header keys per transport — don't blindly lowercase, and reject collisions.** Keys must canonicalize the same way across every stack/adapter, or a key set by one is missed by the other — but canonicalize by the **transport's own rule**: HTTP headers / CGI / gRPC metadata are case-insensitive (canonicalize, or a differently-cased key is silently dropped — this bit a gRPC-metainfo bridge and an MQ header dedup path), while some MQ properties are case-**sensitive** (blind lowercasing corrupts them). After normalization, **reject duplicate / colliding propagation keys** rather than last-wins them — a collision otherwise lets a bridge or attacker choose which `traceparent`/`b3` wins. Preserve carrier order where a transport allows multiple carriers.
|
|
58
|
+
- **This is non-authoritative correlation, not identity — and untrusted at the external edge.** Accepting inbound trace context does not relax the edge trust boundary: never derive `lane` / routing / authz from inbound propagation, and validate/regenerate `log-id` at the external edge (SKILL trust-boundary rule). At an **untrusted external ingress do not blindly adopt inbound `traceparent`/`b3` as the parent** — an attacker can graft unrelated requests into one trace-id (trace poisoning / mis-join); start a new root span and *link* to the remote context (or gate parenting behind a trusted-peer check), and strip/validate external `tracestate`. b3/W3C trace context is correlation evidence, not a trust carrier.
|
|
59
|
+
|
|
60
|
+
Verification: (a) send both `traceparent` and a conflicting `b3` → the trace uses the **W3C** id (pinned conflict test); (b) send `b3` only → downstream carries a canonical `traceparent`, no `b3` re-emitted, and `X-B3-Sampled=0/1/debug` maps to the right `trace-flags`; (c) cross-stack — a Go service injects, a Python service extracts, assert the same trace id **and** `tracestate` join (and the reverse), including over an MQ envelope; (d) send a key in non-canonical case → still extracted; send duplicate/colliding keys → rejected, not last-wins; (e) at an untrusted edge, a forged inbound `traceparent` starts a new root (linked), not a child of the attacker's trace.
|
|
61
|
+
|
|
62
|
+
## Logger field contract
|
|
63
|
+
|
|
64
|
+
Every log line, regardless of language, MUST include these fields in the structured JSON:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
_ts ISO8601 timestamp with timezone
|
|
68
|
+
_level OTel severity text (TRACE/DEBUG/INFO/WARN/ERROR/FATAL)
|
|
69
|
+
_msg Message body
|
|
70
|
+
_logid Log id (above)
|
|
71
|
+
_trace_id OTel trace id (hex)
|
|
72
|
+
_span_id OTel span id (hex)
|
|
73
|
+
_trace_flags OTel trace flags
|
|
74
|
+
_service Service identity (PSM-style or service.name)
|
|
75
|
+
_lane / _env Environment label
|
|
76
|
+
_idc Region / data center
|
|
77
|
+
_cluster Kubernetes cluster
|
|
78
|
+
_pod Pod name
|
|
79
|
+
_stack Stack trace (ERROR and above only)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Domain fields use `app_*` or `biz_*` prefix to avoid collisions.
|
|
83
|
+
|
|
84
|
+
## Logger extraction recipe
|
|
85
|
+
|
|
86
|
+
The logger MUST automatically pull `_logid`, `_trace_id`, `_span_id`, `_trace_flags` from `context.Context`. The developer interface looks like:
|
|
87
|
+
|
|
88
|
+
```go
|
|
89
|
+
logs.CtxInfo(ctx, "ordered %d items", n)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Internally:
|
|
93
|
+
1. Pull `log-id` from ctx via platform ctx-key.
|
|
94
|
+
2. Pull current OTel span from ctx; pull trace-id, span-id, trace-flags from span context.
|
|
95
|
+
3. Attach all four as structured fields on the log record.
|
|
96
|
+
4. Emit JSON.
|
|
97
|
+
|
|
98
|
+
If a developer can write `logs.Info("ordered %d", n)` (without `ctx`) and the line still ships to prod without trace fields, the framework is broken. Make ctx mandatory or make the no-ctx form a lint failure.
|
|
99
|
+
|
|
100
|
+
Inject correlation fields at the record factory or on the emitting handler — never via a filter attached to an ancestor/root *logger*: under stdlib logging semantics a record that propagates up from a child logger does NOT run an ancestor logger's own filters, so an ancestor-logger filter silently drops the fields on every propagating child (the common path). A filter on a *handler* is different — propagated records DO reach ancestor/root handlers and run their filters, so a handler-attached filter is a valid seam. Placement trade-off per key: a record-factory injection covers every path but a caller-supplied `extra` of the same key collides (use for ids that must always win); a handler filter/processor runs late, after record creation, so it survives propagation and yields to a caller override (use for overridable defaults) but must be attached to every handler path. Verify with a child logger that propagates to root.
|
|
101
|
+
|
|
102
|
+
## Trace ↔ Log join
|
|
103
|
+
|
|
104
|
+
In kibana / OpenSearch / equivalent:
|
|
105
|
+
- Saved search: `_trace_id:"<id>"` → all log lines from one trace.
|
|
106
|
+
- Saved search: `_logid:"<id>"` → human-friendly alternative.
|
|
107
|
+
- Dashboard panel: log volume by service, drill-down to a specific trace.
|
|
108
|
+
|
|
109
|
+
In Jaeger / Tempo / equivalent:
|
|
110
|
+
- Span attribute `log_id` mirrored from the request → click span → see linked log lines in the log tool.
|
|
111
|
+
|
|
112
|
+
The two tools MUST be cross-linked in the dashboard so on-call can pivot in one click.
|
|
113
|
+
|
|
114
|
+
## Verification
|
|
115
|
+
|
|
116
|
+
End-to-end smoke test (run after every major framework change):
|
|
117
|
+
|
|
118
|
+
1. Inject a synthetic request with no log-id header.
|
|
119
|
+
2. Confirm response carries a generated log-id.
|
|
120
|
+
3. Search log index by that log-id → expect ≥ 1 hop. For a known multi-hop path, expect all hops.
|
|
121
|
+
4. Pick any line's `_trace_id` → search trace tool → expect a trace with > 1 span.
|
|
122
|
+
5. Each span's `service.name` should match a `_service` value in the log search.
|
|
123
|
+
|
|
124
|
+
If any step fails, the correlation chain is broken; do not ship.
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Canonical Log Schema (Concrete Field Set)
|
|
2
|
+
|
|
3
|
+
The authoritative field list for structured platform logs, derived from a working production deployment. Use as a template; localize header names but preserve the field shape.
|
|
4
|
+
|
|
5
|
+
## Required fields (every log line)
|
|
6
|
+
|
|
7
|
+
| Field | Type | Purpose |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `_ts` | keyword | ISO-8601 timestamp with timezone (e.g. `2026-05-20T14:23:01.123+08:00`) |
|
|
10
|
+
| `_datetime` | date | Parsed timestamp for the search backend |
|
|
11
|
+
| `_timestamp` | long | Unix ms (Asia/Shanghai or UTC; document the choice) |
|
|
12
|
+
| `_level` | keyword | TRACE / DEBUG / INFO / WARN / ERROR / FATAL (OTel-spec severity text) |
|
|
13
|
+
| `_msg` | text | Message body |
|
|
14
|
+
| `_logid` | keyword | Platform log-id (correlation handle, generated at edge if absent) |
|
|
15
|
+
| `_trace_id` | keyword | OTel trace id (hex) |
|
|
16
|
+
| `_span_id` | keyword | OTel span id (hex) |
|
|
17
|
+
| `_trace_flags` | keyword | OTel trace flags |
|
|
18
|
+
| `_psm` | keyword | Service identity (PSM-style or `service.name` OTel attr) |
|
|
19
|
+
| `_lane` / `_env` | text | Lane / environment label |
|
|
20
|
+
| `_idc` | text | Region / data center |
|
|
21
|
+
| `_cluster` | text | Kubernetes cluster name |
|
|
22
|
+
| `_pod` | text | Pod name |
|
|
23
|
+
| `_addr` | ip | Service IP (pod IP) |
|
|
24
|
+
| `_caller` | text | Source file:line where the log was emitted (file.go:123 form) |
|
|
25
|
+
| `_language` | text | Programming language (go, python, java, ...) |
|
|
26
|
+
|
|
27
|
+
Fields prefixed `_` are platform-reserved. Application fields use `app_*` or `biz_*` prefix to prevent collision.
|
|
28
|
+
|
|
29
|
+
`_stack` (type `text`) is set only for ERROR and above; contains the full stack trace.
|
|
30
|
+
|
|
31
|
+
## Why each field
|
|
32
|
+
|
|
33
|
+
- `_logid` — human-friendly correlation id; the only id a user reports in a ticket.
|
|
34
|
+
- `_trace_id` + `_span_id` — cross-service trace join; OTel-managed.
|
|
35
|
+
- `_caller` — source location; powerful for diff-based canary checks (see `platform-release-engineering/references/lane-orchestration-control-plane.md` § canary algorithm). Two services that emit "DB timeout" from different code lines are correctly distinguished.
|
|
36
|
+
- `_language` — multi-language platforms need this to group / filter log queries; also useful for stack-format detection.
|
|
37
|
+
- `_addr` / `_pod` — drill from "lane has problem" → "this specific pod" → "this specific replica".
|
|
38
|
+
- `_idc` / `_cluster` — multi-region / multi-cluster drilldown.
|
|
39
|
+
|
|
40
|
+
## Index template (Elasticsearch / OpenSearch)
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
setup.template:
|
|
44
|
+
enabled: true
|
|
45
|
+
overwrite: true
|
|
46
|
+
pattern: "bizlogs-*" # localize prefix
|
|
47
|
+
fields: fields.yml
|
|
48
|
+
order: 140
|
|
49
|
+
settings:
|
|
50
|
+
index.number_of_shards: 3
|
|
51
|
+
_source.enabled: true
|
|
52
|
+
mappings:
|
|
53
|
+
dynamic: true
|
|
54
|
+
dynamic_date_formats: "strict_date_optional_time"
|
|
55
|
+
date_detection: true
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
3 shards is a reasonable default for cluster sizing 10-50 nodes. Adjust based on ingest rate.
|
|
59
|
+
|
|
60
|
+
## ILM policy
|
|
61
|
+
|
|
62
|
+
Hot 7 days, then delete is a common defensible default for biz logs:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
policy:
|
|
66
|
+
phases:
|
|
67
|
+
hot:
|
|
68
|
+
min_age: "0ms"
|
|
69
|
+
actions:
|
|
70
|
+
rollover:
|
|
71
|
+
max_age: "7d"
|
|
72
|
+
max_size: "30gb"
|
|
73
|
+
delete:
|
|
74
|
+
min_age: "7d"
|
|
75
|
+
actions:
|
|
76
|
+
delete: {}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Adjust by:
|
|
80
|
+
- **Compliance** — some industries require 90 days+ of audit logs (set a separate index/policy for audit-class logs).
|
|
81
|
+
- **Cost** — warm tier (cheaper storage) for 30-90 days is a middle ground.
|
|
82
|
+
- **Investigation cadence** — if incidents are typically detected and root-caused within 7d, 7d hot is sufficient.
|
|
83
|
+
|
|
84
|
+
Separate ILM policies for `audit-*` (long retention), `bizlogs-*` (7d), `debug-*` (1-3d) prevents pinning all retention to the strictest requirement.
|
|
85
|
+
|
|
86
|
+
## Filebeat configuration shape
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
filebeat.inputs:
|
|
90
|
+
- type: log
|
|
91
|
+
id: bizlogs
|
|
92
|
+
enabled: true
|
|
93
|
+
paths:
|
|
94
|
+
- /opt/<org>/app/log/*.log
|
|
95
|
+
- /opt/<org>/app/log/*/*.log
|
|
96
|
+
- /opt/<org>/app/log/*/*/*.log # per-service/per-lane subdirs
|
|
97
|
+
fields_under_root: true
|
|
98
|
+
json:
|
|
99
|
+
keys_under_root: true
|
|
100
|
+
overwrite_keys: false # CRITICAL: see "Platform-field protection" below
|
|
101
|
+
add_error_key: true
|
|
102
|
+
|
|
103
|
+
processors:
|
|
104
|
+
- add_host_metadata:
|
|
105
|
+
when.not.contains.tags: forwarded
|
|
106
|
+
- script:
|
|
107
|
+
lang: javascript
|
|
108
|
+
id: extract_ts
|
|
109
|
+
file: ${path.config}/extract_ts.js # custom timestamp parser if needed
|
|
110
|
+
- timestamp:
|
|
111
|
+
field: "_timestamp"
|
|
112
|
+
target_field: "_datetime"
|
|
113
|
+
layouts: ["UNIX_MS"]
|
|
114
|
+
timezone: "Asia/Shanghai" # or UTC
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`fields_under_root: true` + `json.keys_under_root: true` together mean: the JSON log line's fields become root-level fields in the indexed document. So `_logid` from the log → `_logid` in Elasticsearch. No nested `parsed.<field>` digging.
|
|
118
|
+
|
|
119
|
+
### Platform-field protection
|
|
120
|
+
|
|
121
|
+
**Do NOT set `overwrite_keys: true` with `keys_under_root: true` for reserved fields.** A compromised or malicious service could emit `{"_lane":"prod", "_level":"INFO", "_msg":"..."}` from a non-prod pod, and the log pipeline would index it as if it came from prod with INFO severity — corrupting canary queries, audit searches, and incident triage.
|
|
122
|
+
|
|
123
|
+
Enforcement options (pick at least one):
|
|
124
|
+
1. **Logstash filter strips/renames `_`-prefixed fields supplied by the app**, then re-injects authoritative `_lane`, `_psm`, `_idc`, `_cluster`, `_pod`, `_addr` from metadata the pipeline knows for sure (e.g. from k8s pod annotations the filebeat shipper adds).
|
|
125
|
+
2. **Filebeat `processors.drop_fields`** removes a denylist of app-supplied platform fields before they hit logstash.
|
|
126
|
+
3. **Application logger contract**: SDK is the only code path that writes `_`-prefixed fields; lint rule rejects app code that touches them directly.
|
|
127
|
+
|
|
128
|
+
Layered defense is best: SDK contract (#3) for the common case + pipeline strip (#1) as the durable guardrail in case the SDK is bypassed.
|
|
129
|
+
|
|
130
|
+
## Log path layout
|
|
131
|
+
|
|
132
|
+
Services write structured JSON logs to disk (not stdout in this pattern). Layout:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
/opt/<org>/app/log/
|
|
136
|
+
<psm-1>/
|
|
137
|
+
<lane-A>/
|
|
138
|
+
app.log
|
|
139
|
+
app-error.log
|
|
140
|
+
<lane-B>/
|
|
141
|
+
...
|
|
142
|
+
<psm-2>/
|
|
143
|
+
...
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Why files not stdout (in this pattern):
|
|
147
|
+
- Per-service per-lane separation: cleaner debugging.
|
|
148
|
+
- File rotation (size + time) is well-tooled.
|
|
149
|
+
- Filebeat reads efficiently with offset tracking.
|
|
150
|
+
- App can keep writing during transient filebeat outages (file buffer absorbs).
|
|
151
|
+
|
|
152
|
+
Why stdout in other patterns (mature alternative):
|
|
153
|
+
- k8s-native; logs visible to `kubectl logs`.
|
|
154
|
+
- No volume mount needed.
|
|
155
|
+
- Cloud-native log shippers (Cloud Logging, etc.) usually pull from stdout.
|
|
156
|
+
|
|
157
|
+
Pick one per platform; do not mix.
|
|
158
|
+
|
|
159
|
+
## In-pod sidecar vs DaemonSet collection
|
|
160
|
+
|
|
161
|
+
Two patterns:
|
|
162
|
+
|
|
163
|
+
**DaemonSet** (one filebeat per node, hostPath mount):
|
|
164
|
+
```
|
|
165
|
+
Node
|
|
166
|
+
├─ filebeat (DaemonSet pod)
|
|
167
|
+
│ └─ reads /opt/<org>/app/log/* via hostPath
|
|
168
|
+
└─ App pods write to /opt/<org>/app/log/<psm>/<lane>/
|
|
169
|
+
```
|
|
170
|
+
Pros: one filebeat process per node, low overhead.
|
|
171
|
+
Cons: hostPath access required; not compatible with serverless k8s.
|
|
172
|
+
|
|
173
|
+
**Sidecar** (one filebeat per app pod):
|
|
174
|
+
```
|
|
175
|
+
App Pod
|
|
176
|
+
├─ app container writes to emptyDir
|
|
177
|
+
└─ filebeat container reads emptyDir
|
|
178
|
+
```
|
|
179
|
+
Pros: works in serverless k8s (no hostPath); per-pod resource accounting.
|
|
180
|
+
Cons: filebeat container per pod multiplies resource cost.
|
|
181
|
+
|
|
182
|
+
Many platforms use **both**, selected by pod environment: serverless k8s (e.g. cloud-provider container instance) → sidecar; node-attached k8s → DaemonSet.
|
|
183
|
+
|
|
184
|
+
## Output endpoints by environment
|
|
185
|
+
|
|
186
|
+
Online (production) and offline (staging/dev) typically have different log backends:
|
|
187
|
+
|
|
188
|
+
```yaml
|
|
189
|
+
output:
|
|
190
|
+
elasticsearch:
|
|
191
|
+
hosts: [{{ online_es_host or offline_es_host }}]
|
|
192
|
+
|
|
193
|
+
setup.kibana:
|
|
194
|
+
host: {{ online_kibana_host or offline_kibana_host }}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Reasons to split:
|
|
198
|
+
- Cost: offline ES can be smaller, single-node, no replicas.
|
|
199
|
+
- Isolation: a dev mistake bursting logs doesn't pressure prod ES.
|
|
200
|
+
- Compliance: prod logs may need stricter access control.
|
|
201
|
+
|
|
202
|
+
## Verification
|
|
203
|
+
|
|
204
|
+
- Open a service log line in kibana → all required fields present, no missing fields.
|
|
205
|
+
- Search `_trace_id:<id>` → returns all hops of one trace.
|
|
206
|
+
- Search `_caller:<source-location>` → returns the same error pattern across the fleet.
|
|
207
|
+
- ILM rollover triggers at 7d / 30gb (test by writing high volume to a non-critical index).
|
|
208
|
+
- Cluster failure of online ES → filebeat buffers locally; resumes when ES returns.
|