oh-my-agent-commandcode 0.0.0-stage → 20.38.4
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/README.md +35 -2
- package/filter-test-output.sh +52 -0
- package/mods/oma.ts +347 -0
- package/package.json +30 -4
- package/skills/_shared/conditional/experiment-ledger.md +28 -0
- package/skills/_shared/conditional/exploration-loop.md +22 -0
- package/skills/_shared/conditional/quality-score.md +33 -0
- package/skills/_shared/core/anti-ai-prose.md +191 -0
- package/skills/_shared/core/api-contracts/README.md +28 -0
- package/skills/_shared/core/api-contracts/template.md +90 -0
- package/skills/_shared/core/clarification-protocol.md +23 -0
- package/skills/_shared/core/code-intelligence.md +46 -0
- package/skills/_shared/core/collaboration-policy.md +28 -0
- package/skills/_shared/core/common-checklist.md +28 -0
- package/skills/_shared/core/context-budget.md +22 -0
- package/skills/_shared/core/context-loading.md +34 -0
- package/skills/_shared/core/difficulty-guide.md +26 -0
- package/skills/_shared/core/execution-policy.md +31 -0
- package/skills/_shared/core/lessons-learned.md +33 -0
- package/skills/_shared/core/prompt-structure.md +18 -0
- package/skills/_shared/core/quality-principles.md +11 -0
- package/skills/_shared/core/session-metrics.md +35 -0
- package/skills/_shared/core/skill-routing.md +39 -0
- package/skills/_shared/core/test-approach.md +54 -0
- package/skills/_shared/core/vendor-detection.md +52 -0
- package/skills/_shared/runtime/memory-protocol.md +118 -0
- package/skills/_shared/runtime/result-contract.md +64 -0
- package/skills/_shared/ui-interaction-quality.md +133 -0
- package/skills/oma-academic-writing/SKILL.md +181 -0
- package/skills/oma-academic-writing/resources/abstract-guide.md +51 -0
- package/skills/oma-academic-writing/resources/academic-verb-tiers.md +42 -0
- package/skills/oma-academic-writing/resources/anti-ai-checklist.md +52 -0
- package/skills/oma-academic-writing/resources/hedging-guide.md +132 -0
- package/skills/oma-academic-writing/resources/sentence-structure-reference.md +151 -0
- package/skills/oma-architecture/SKILL.md +203 -0
- package/skills/oma-architecture/resources/api-evolution.md +41 -0
- package/skills/oma-architecture/resources/checklist.md +42 -0
- package/skills/oma-architecture/resources/execution-protocol.md +115 -0
- package/skills/oma-architecture/resources/methodology-selection.md +92 -0
- package/skills/oma-architecture/resources/migration-patterns.md +28 -0
- package/skills/oma-architecture/resources/output-templates.md +111 -0
- package/skills/oma-architecture/resources/stakeholder-synthesis.md +80 -0
- package/skills/oma-backend/SKILL.md +202 -0
- package/skills/oma-backend/resources/checklist.md +45 -0
- package/skills/oma-backend/resources/error-playbook.md +97 -0
- package/skills/oma-backend/resources/execution-protocol.md +39 -0
- package/skills/oma-backend/resources/orm-reference.md +61 -0
- package/skills/oma-backend/variants/node/api-template.ts +315 -0
- package/skills/oma-backend/variants/node/snippets.md +475 -0
- package/skills/oma-backend/variants/node/stack.yaml +21 -0
- package/skills/oma-backend/variants/node/tech-stack.md +33 -0
- package/skills/oma-backend/variants/python/api-template.py +378 -0
- package/skills/oma-backend/variants/python/snippets.md +199 -0
- package/skills/oma-backend/variants/python/stack.yaml +18 -0
- package/skills/oma-backend/variants/python/tech-stack.md +45 -0
- package/skills/oma-backend/variants/rust/api-template.rs +635 -0
- package/skills/oma-backend/variants/rust/snippets.md +471 -0
- package/skills/oma-backend/variants/rust/stack.yaml +20 -0
- package/skills/oma-backend/variants/rust/tech-stack.md +36 -0
- package/skills/oma-backend/variants/stack.schema.json +73 -0
- package/skills/oma-brainstorm/SKILL.md +166 -0
- package/skills/oma-brainstorm/resources/triz-lite.md +117 -0
- package/skills/oma-coordination/SKILL.md +171 -0
- package/skills/oma-db/SKILL.md +201 -0
- package/skills/oma-db/resources/anti-patterns.md +177 -0
- package/skills/oma-db/resources/checklist.md +67 -0
- package/skills/oma-db/resources/document-templates.md +107 -0
- package/skills/oma-db/resources/error-playbook.md +50 -0
- package/skills/oma-db/resources/examples.md +170 -0
- package/skills/oma-db/resources/execution-protocol.md +127 -0
- package/skills/oma-db/resources/iso-controls.md +98 -0
- package/skills/oma-db/resources/migration-playbook.md +93 -0
- package/skills/oma-db/resources/query-tuning.md +57 -0
- package/skills/oma-db/resources/vector-db.md +159 -0
- package/skills/oma-debug/SKILL.md +146 -0
- package/skills/oma-debug/resources/bug-report-template.md +327 -0
- package/skills/oma-debug/resources/checklist.md +31 -0
- package/skills/oma-debug/resources/common-patterns.md +734 -0
- package/skills/oma-debug/resources/debugging-checklist.md +364 -0
- package/skills/oma-debug/resources/error-playbook.md +94 -0
- package/skills/oma-debug/resources/execution-protocol.md +40 -0
- package/skills/oma-design/SKILL.md +135 -0
- package/skills/oma-design/resources/asset-strategy.md +34 -0
- package/skills/oma-design/resources/checklist.md +63 -0
- package/skills/oma-design/resources/data-grid.md +48 -0
- package/skills/oma-design/resources/design-md-spec.md +107 -0
- package/skills/oma-design/resources/design-tokens.md +53 -0
- package/skills/oma-design/resources/error-playbook.md +18 -0
- package/skills/oma-design/resources/execution-protocol.md +95 -0
- package/skills/oma-design/resources/external-design-skills.md +130 -0
- package/skills/oma-design/resources/getdesign-fetcher.md +104 -0
- package/skills/oma-design/resources/product-interface-review.md +59 -0
- package/skills/oma-design/resources/redesign-protocol.md +52 -0
- package/skills/oma-design/resources/stitch-integration.md +244 -0
- package/skills/oma-dev-workflow/SKILL.md +375 -0
- package/skills/oma-dev-workflow/resources/affected-checks.py +58 -0
- package/skills/oma-dev-workflow/resources/api-workflows.md +58 -0
- package/skills/oma-dev-workflow/resources/database-patterns.md +107 -0
- package/skills/oma-dev-workflow/resources/i18n-patterns.md +63 -0
- package/skills/oma-dev-workflow/resources/release-coordination.md +240 -0
- package/skills/oma-dev-workflow/resources/tooling-profiles.md +217 -0
- package/skills/oma-dev-workflow/resources/troubleshooting.md +78 -0
- package/skills/oma-dev-workflow/resources/validation-pipeline.md +246 -0
- package/skills/oma-docs/SKILL.md +77 -0
- package/skills/oma-docs/resources/commands.md +76 -0
- package/skills/oma-explanation/SKILL.md +212 -0
- package/skills/oma-explanation/resources/document-structure.md +115 -0
- package/skills/oma-explanation/resources/draft-format.md +199 -0
- package/skills/oma-explanation/resources/html-contract.md +102 -0
- package/skills/oma-frontend/SKILL.md +227 -0
- package/skills/oma-frontend/resources/angular-rules.md +110 -0
- package/skills/oma-frontend/resources/checklist.md +76 -0
- package/skills/oma-frontend/resources/error-playbook.md +125 -0
- package/skills/oma-frontend/resources/execution-protocol.md +46 -0
- package/skills/oma-frontend/resources/snippets.md +354 -0
- package/skills/oma-frontend/resources/specialized-visual-implementation.md +193 -0
- package/skills/oma-frontend/resources/tailwind-rules.md +83 -0
- package/skills/oma-frontend/resources/tech-stack.md +156 -0
- package/skills/oma-hwp/SKILL.md +166 -0
- package/skills/oma-hwp/config/hwp-config.yaml +35 -0
- package/skills/oma-hwp/resources/balanced-tables.ts +39 -0
- package/skills/oma-hwp/resources/execution-protocol.md +145 -0
- package/skills/oma-hwp/resources/flatten-tables.ts +101 -0
- package/skills/oma-hwp/resources/package.json +13 -0
- package/skills/oma-hwp/resources/troubleshooting.md +70 -0
- package/skills/oma-hwp/resources/tsconfig.json +10 -0
- package/skills/oma-hwp/resources/turndown-plugin-gfm.d.ts +9 -0
- package/skills/oma-image/SKILL.md +142 -0
- package/skills/oma-image/config/image-config.yaml +70 -0
- package/skills/oma-image/resources/checklist.md +18 -0
- package/skills/oma-image/resources/execution-protocol.md +117 -0
- package/skills/oma-image/resources/invocation.md +105 -0
- package/skills/oma-image/resources/prompt-tips.md +71 -0
- package/skills/oma-image/resources/vendor-matrix.md +90 -0
- package/skills/oma-market/SKILL.md +142 -0
- package/skills/oma-market/resources/checklist.md +12 -0
- package/skills/oma-market/resources/error-playbook.md +12 -0
- package/skills/oma-market/resources/execution-protocol.md +60 -0
- package/skills/oma-market/resources/frameworks/pestel.md +101 -0
- package/skills/oma-market/resources/frameworks/porters-5f.md +90 -0
- package/skills/oma-market/resources/frameworks/swot.md +61 -0
- package/skills/oma-market/resources/intent-rules.md +35 -0
- package/skills/oma-market/resources/output-laws.md +53 -0
- package/skills/oma-mobile/SKILL.md +168 -0
- package/skills/oma-mobile/resources/checklist.md +77 -0
- package/skills/oma-mobile/resources/error-playbook.md +198 -0
- package/skills/oma-mobile/resources/execution-protocol.md +47 -0
- package/skills/oma-mobile/resources/screen-template.dart +331 -0
- package/skills/oma-mobile/resources/screen-template.swift +239 -0
- package/skills/oma-mobile/resources/screen-template.tsx +179 -0
- package/skills/oma-mobile/resources/tech-stack.md +69 -0
- package/skills/oma-mobile/variants/README.md +45 -0
- package/skills/oma-mobile/variants/flutter/api-template.dart +461 -0
- package/skills/oma-mobile/variants/flutter/snippets.md +1353 -0
- package/skills/oma-mobile/variants/flutter/stack.yaml +21 -0
- package/skills/oma-mobile/variants/flutter/tech-stack.md +201 -0
- package/skills/oma-mobile/variants/kotlin-android/api-template.kt +182 -0
- package/skills/oma-mobile/variants/kotlin-android/snippets.md +871 -0
- package/skills/oma-mobile/variants/kotlin-android/stack.yaml +32 -0
- package/skills/oma-mobile/variants/kotlin-android/tech-stack.md +159 -0
- package/skills/oma-mobile/variants/react-native/api-template.ts +531 -0
- package/skills/oma-mobile/variants/react-native/snippets.md +1014 -0
- package/skills/oma-mobile/variants/react-native/stack.yaml +22 -0
- package/skills/oma-mobile/variants/react-native/tech-stack.md +192 -0
- package/skills/oma-mobile/variants/stack.schema.json +68 -0
- package/skills/oma-mobile/variants/swift-ios/api-template.swift +165 -0
- package/skills/oma-mobile/variants/swift-ios/snippets.md +1028 -0
- package/skills/oma-mobile/variants/swift-ios/stack.yaml +25 -0
- package/skills/oma-mobile/variants/swift-ios/tech-stack.md +174 -0
- package/skills/oma-observability/SKILL.md +225 -0
- package/skills/oma-observability/resources/anti-patterns.md +555 -0
- package/skills/oma-observability/resources/boundaries/cross-application.md +348 -0
- package/skills/oma-observability/resources/boundaries/multi-tenant.md +290 -0
- package/skills/oma-observability/resources/boundaries/release.md +372 -0
- package/skills/oma-observability/resources/boundaries/slo.md +225 -0
- package/skills/oma-observability/resources/checklist.md +123 -0
- package/skills/oma-observability/resources/examples.md +448 -0
- package/skills/oma-observability/resources/execution-protocol.md +166 -0
- package/skills/oma-observability/resources/incident-forensics.md +348 -0
- package/skills/oma-observability/resources/intent-rules.md +307 -0
- package/skills/oma-observability/resources/layers/L3-network.md +281 -0
- package/skills/oma-observability/resources/layers/L4-transport.md +299 -0
- package/skills/oma-observability/resources/layers/L7-application/crash-analytics.md +359 -0
- package/skills/oma-observability/resources/layers/L7-application/mobile-rum.md +278 -0
- package/skills/oma-observability/resources/layers/L7-application/waf.md +246 -0
- package/skills/oma-observability/resources/layers/L7-application/web-rum.md +350 -0
- package/skills/oma-observability/resources/layers/mesh.md +368 -0
- package/skills/oma-observability/resources/matrix.md +177 -0
- package/skills/oma-observability/resources/meta-observability.md +605 -0
- package/skills/oma-observability/resources/observability-as-code.md +666 -0
- package/skills/oma-observability/resources/signals/audit.md +310 -0
- package/skills/oma-observability/resources/signals/cost.md +303 -0
- package/skills/oma-observability/resources/signals/logs.md +263 -0
- package/skills/oma-observability/resources/signals/metrics.md +478 -0
- package/skills/oma-observability/resources/signals/privacy.md +351 -0
- package/skills/oma-observability/resources/signals/profiles.md +245 -0
- package/skills/oma-observability/resources/signals/traces.md +360 -0
- package/skills/oma-observability/resources/standards.md +214 -0
- package/skills/oma-observability/resources/transport/collector-topology.md +308 -0
- package/skills/oma-observability/resources/transport/otlp-grpc-vs-http.md +256 -0
- package/skills/oma-observability/resources/transport/sampling-recipes.md +297 -0
- package/skills/oma-observability/resources/transport/udp-statsd-mtu.md +167 -0
- package/skills/oma-observability/resources/vendor-categories.md +352 -0
- package/skills/oma-orchestration/SKILL.md +302 -0
- package/skills/oma-orchestration/config/cli-config.yaml +92 -0
- package/skills/oma-orchestration/resources/memory-schema.md +232 -0
- package/skills/oma-orchestration/resources/subagent-prompt-template.md +30 -0
- package/skills/oma-orchestration/scripts/parallel-run.sh +6 -0
- package/skills/oma-orchestration/scripts/spawn-agent.sh +5 -0
- package/skills/oma-orchestration/scripts/verify.sh +20 -0
- package/skills/oma-orchestration/templates/backend-task.md +19 -0
- package/skills/oma-orchestration/templates/debug-task.md +16 -0
- package/skills/oma-orchestration/templates/frontend-task.md +18 -0
- package/skills/oma-orchestration/templates/mobile-task.md +18 -0
- package/skills/oma-orchestration/templates/qa-task.md +16 -0
- package/skills/oma-orchestration/templates/tasks-example.yaml +15 -0
- package/skills/oma-pdf/SKILL.md +162 -0
- package/skills/oma-pdf/config/pdf-config.yaml +27 -0
- package/skills/oma-pdf/resources/execution-protocol.md +127 -0
- package/skills/oma-pm/SKILL.md +157 -0
- package/skills/oma-pm/resources/error-playbook.md +75 -0
- package/skills/oma-pm/resources/examples.md +439 -0
- package/skills/oma-pm/resources/execution-protocol.md +62 -0
- package/skills/oma-pm/resources/iso-planning.md +110 -0
- package/skills/oma-pm/resources/plan-phase-protocol.md +66 -0
- package/skills/oma-pm/resources/task-template.json +86 -0
- package/skills/oma-qa/SKILL.md +141 -0
- package/skills/oma-qa/resources/checklist.md +339 -0
- package/skills/oma-qa/resources/error-playbook.md +98 -0
- package/skills/oma-qa/resources/execution-protocol.md +169 -0
- package/skills/oma-qa/resources/iso-quality.md +82 -0
- package/skills/oma-qa/resources/verify-ship-protocol.md +116 -0
- package/skills/oma-recap/SKILL.md +245 -0
- package/skills/oma-recap/resources/output-formats.md +83 -0
- package/skills/oma-refactor/SKILL.md +184 -0
- package/skills/oma-refactor/resources/definition.md +108 -0
- package/skills/oma-refactor/resources/governance.md +33 -0
- package/skills/oma-refactor/resources/hotspots.py +44 -0
- package/skills/oma-refactor/resources/measurement.md +93 -0
- package/skills/oma-scholar/SKILL.md +276 -0
- package/skills/oma-scholar/config/scholar-config.yaml +79 -0
- package/skills/oma-scholar/resources/api-endpoints.md +174 -0
- package/skills/oma-scholar/resources/checklist.md +92 -0
- package/skills/oma-scholar/resources/execution-protocol.md +224 -0
- package/skills/oma-scholar/resources/fallback-providers.md +143 -0
- package/skills/oma-scholar/resources/setup-openalex.md +85 -0
- package/skills/oma-scholar/resources/sidecar-spec.md +341 -0
- package/skills/oma-scholar/resources/upstream-spec-cache.md +972 -0
- package/skills/oma-scm/SKILL.md +103 -0
- package/skills/oma-scm/resources/cm-operations.md +56 -0
- package/skills/oma-scm/resources/codeowners-playbook.md +45 -0
- package/skills/oma-scm/resources/conventional-commits.md +108 -0
- package/skills/oma-scm/resources/merge-risk.md +76 -0
- package/skills/oma-scm/resources/onboarding-risk-signals.md +71 -0
- package/skills/oma-search/SKILL.md +125 -0
- package/skills/oma-search/resources/checklist.md +36 -0
- package/skills/oma-search/resources/error-playbook.md +66 -0
- package/skills/oma-search/resources/examples.md +80 -0
- package/skills/oma-search/resources/execution-protocol.md +86 -0
- package/skills/oma-search/resources/intent-rules.md +47 -0
- package/skills/oma-search/resources/trust-registry.md +53 -0
- package/skills/oma-security/SKILL.md +172 -0
- package/skills/oma-security/resources/artex.md +108 -0
- package/skills/oma-security/resources/ci.md +134 -0
- package/skills/oma-security/resources/cisco-source.md +108 -0
- package/skills/oma-security/resources/deepsec-config.md +45 -0
- package/skills/oma-security/resources/deepsec-matchers.md +35 -0
- package/skills/oma-security/resources/deepsec-scanning.md +45 -0
- package/skills/oma-security/resources/deepsec-setup.md +41 -0
- package/skills/oma-security/resources/findings-contract.md +408 -0
- package/skills/oma-security/resources/mcp-scanning.md +122 -0
- package/skills/oma-security/resources/skill-scanning.md +106 -0
- package/skills/oma-security/resources/validation.md +71 -0
- package/skills/oma-skill-creation/SKILL.md +84 -0
- package/skills/oma-skill-creation/resources/prompt-evaluation.md +36 -0
- package/skills/oma-skill-creation/resources/ssl-lite-template.md +108 -0
- package/skills/oma-skill-creation/resources/validation-checklist.md +101 -0
- package/skills/oma-slide/SKILL.md +277 -0
- package/skills/oma-slide/resources/animation-patterns.md +245 -0
- package/skills/oma-slide/resources/assets/deck-stage.js +514 -0
- package/skills/oma-slide/resources/assets/viewport-base.css +257 -0
- package/skills/oma-slide/resources/canva-integration.md +203 -0
- package/skills/oma-slide/resources/checklist.md +46 -0
- package/skills/oma-slide/resources/design-doctrine.md +260 -0
- package/skills/oma-slide/resources/fixed-stage.md +232 -0
- package/skills/oma-slide/resources/generation-protocol.md +393 -0
- package/skills/oma-slide/resources/native-pptx.md +84 -0
- package/skills/oma-slide/resources/selection-index.json +461 -0
- package/skills/oma-slide/resources/style-presets.LICENSE +10 -0
- package/skills/oma-slide/resources/style-presets.md +520 -0
- package/skills/oma-tf-infra/SKILL.md +201 -0
- package/skills/oma-tf-infra/resources/checklist.md +53 -0
- package/skills/oma-tf-infra/resources/cost-optimization.md +574 -0
- package/skills/oma-tf-infra/resources/error-playbook.md +68 -0
- package/skills/oma-tf-infra/resources/examples.md +38 -0
- package/skills/oma-tf-infra/resources/execution-protocol.md +129 -0
- package/skills/oma-tf-infra/resources/iso-42001-infra.md +229 -0
- package/skills/oma-tf-infra/resources/multi-cloud-examples.md +241 -0
- package/skills/oma-tf-infra/resources/policy-testing-examples.md +332 -0
- package/skills/oma-translation/SKILL.md +229 -0
- package/skills/oma-translation/resources/anti-ai-patterns.md +104 -0
- package/skills/oma-translation/resources/lang/_template.md +73 -0
- package/skills/oma-translation/resources/lang/en.md +123 -0
- package/skills/oma-translation/resources/lang/ja.md +274 -0
- package/skills/oma-translation/resources/lang/ko.md +228 -0
- package/skills/oma-translation/resources/lang/zh.md +285 -0
- package/skills/oma-translation/resources/style-skills.md +104 -0
- package/skills/oma-translation/resources/translation-rubric.md +126 -0
- package/skills/oma-video/SKILL.md +229 -0
- package/skills/oma-video/config/video-config.yaml +60 -0
- package/skills/oma-video/resources/checklist.md +26 -0
- package/skills/oma-video/resources/execution-protocol.md +122 -0
- package/skills/oma-video/resources/existing-media.md +185 -0
- package/skills/oma-video/resources/hyperframes-authoring/README.md +44 -0
- package/skills/oma-video/resources/hyperframes-authoring/demo.md +31 -0
- package/skills/oma-video/resources/hyperframes-authoring/explainer.md +10 -0
- package/skills/oma-video/resources/hyperframes-authoring/shorts.md +10 -0
- package/skills/oma-video/resources/motion-principles.md +81 -0
- package/skills/oma-video/resources/mpt/driver.py +301 -0
- package/skills/oma-video/resources/prompt-tips.md +75 -0
- package/skills/oma-video/resources/script-schema.md +81 -0
- package/skills/oma-video/resources/sound-design.md +127 -0
- package/skills/oma-video/resources/strudel/package.json +11 -0
- package/skills/oma-video/resources/strudel/page.html +87 -0
- package/skills/oma-video/resources/strudel/render.mjs +295 -0
- package/skills/oma-video/resources/vendor-matrix.md +124 -0
- package/skills/oma-voice/SKILL.md +249 -0
- package/skills/oma-voice/config/voice-config.yaml +30 -0
- package/skills/oma-voice/resources/audio-processing.md +119 -0
- package/skills/oma-voice/resources/checklist.md +47 -0
- package/skills/oma-voice/resources/execution-protocol.md +215 -0
- package/skills/oma-voice/resources/prompt-tips.md +43 -0
- package/skills/oma-voice/resources/voice-matrix.md +51 -0
- package/skills/oma-voice/resources/voicestudio.md +87 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../stack.schema.json
|
|
2
|
+
language: swift
|
|
3
|
+
framework: swiftui
|
|
4
|
+
ui: swiftui
|
|
5
|
+
state: observation
|
|
6
|
+
navigation: navigationstack
|
|
7
|
+
http_client: urlsession
|
|
8
|
+
local_storage: swiftdata
|
|
9
|
+
api_generator: swift-openapi-generator
|
|
10
|
+
api_spec: Core/Networking/openapi.yaml
|
|
11
|
+
response_cache: hyperoslo-cache
|
|
12
|
+
structure: App/Core/Features/Shared
|
|
13
|
+
source: variant
|
|
14
|
+
|
|
15
|
+
verify:
|
|
16
|
+
detect: Package.swift
|
|
17
|
+
syntax:
|
|
18
|
+
cmd: "swift build"
|
|
19
|
+
skip_if_missing: swift
|
|
20
|
+
tests:
|
|
21
|
+
cmd: "swift test"
|
|
22
|
+
# Substring match must cover both XCTest ("Test Suite 'All tests' passed")
|
|
23
|
+
# and Swift Testing ("Test run with N tests passed") summaries.
|
|
24
|
+
pass_signal: "passed"
|
|
25
|
+
skip_if_missing: swift
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Mobile Agent - Tech Stack Reference (Swift iOS Native)
|
|
2
|
+
|
|
3
|
+
Starter reference for the selected platform. Preserve existing project choices. The caching implementation below applies only when caching is required; do not add it for an unrelated screen or widget change.
|
|
4
|
+
|
|
5
|
+
## Framework: SwiftUI + Observation
|
|
6
|
+
|
|
7
|
+
- **Language**: Swift 6.0+ floor, strict-concurrency clean (current stable is Swift 6.3, July 2026)
|
|
8
|
+
- **UI Framework**: SwiftUI
|
|
9
|
+
- **State Management**: Observation framework (`@Observable`, iOS 17+)
|
|
10
|
+
- **Concurrency**: Swift async/await + structured concurrency (`Task`, `TaskGroup`, `AsyncStream`)
|
|
11
|
+
- **Minimum Deployment**: iOS 17.0
|
|
12
|
+
- **Tooling**: Xcode 16+ floor (current stable is Xcode 26, July 2026), Swift Package Manager (SwiftPM)
|
|
13
|
+
|
|
14
|
+
`@Observable` replaces `ObservableObject`/`@Published` for SwiftUI view models. The macro synthesizes observation tracking at compile time with zero boilerplate and no Combine dependency.
|
|
15
|
+
|
|
16
|
+
## API Client: swift-openapi-generator
|
|
17
|
+
|
|
18
|
+
| Component | Package |
|
|
19
|
+
|-----------|---------|
|
|
20
|
+
| Code generator | `apple/swift-openapi-generator` |
|
|
21
|
+
| Runtime types | `apple/swift-openapi-runtime` |
|
|
22
|
+
| URLSession transport | `apple/swift-openapi-urlsession` |
|
|
23
|
+
|
|
24
|
+
The generated `Client` is the **only** way to call the backend API; never hand-roll
|
|
25
|
+
`URLRequest`/`JSONDecoder` for endpoints covered by the spec. **Regenerate, don't hand-edit**
|
|
26
|
+
generated sources.
|
|
27
|
+
|
|
28
|
+
### Two codegen modes — both valid; `/stack-set` records the project's choice
|
|
29
|
+
|
|
30
|
+
`swift-openapi-generator` runs in one of two modes — **both build a real app**; the choice is
|
|
31
|
+
a workflow trade-off, not a capability one. This variant is the baseline default; the
|
|
32
|
+
<!-- oma-docs:ignore-start -->
|
|
33
|
+
per-project `stack/stack.yaml` (seeded by `/stack-set`) pins which mode the repo uses.
|
|
34
|
+
|
|
35
|
+
| Mode | Mechanics | Trade-off |
|
|
36
|
+
|------|-----------|-----------|
|
|
37
|
+
| **Build plugin** (Apple-recommended default) | Generator runs during the build; output is ephemeral (not committed). Declared in `Package.swift` `plugins:` for SwiftPM targets, **and works in Xcode app targets too** — Xcode requires "trust & enable" for the plugin (Xcode Cloud needs a post-clone script to bypass fingerprint validation). Spec vendored at `Core/Networking/openapi.yaml`. | Zero commit noise, always in sync; but extra Xcode/CI setup, generated diffs invisible in review, regen on every clean build. |
|
|
38
|
+
| **Committed (command plugin / CLI)** | Apple's documented fallback "if the build plugin cannot be used". Run `swift package generate-code-from-openapi` (or a task: `mise` / `make` / script) → write `Core/Networking/Generated/` → **commit** it; the build sees plain checked-in source. | Generated code is reviewable and CI is simpler; but a human must remember to regenerate + commit on spec changes. |
|
|
39
|
+
<!-- oma-docs:ignore-end -->
|
|
40
|
+
|
|
41
|
+
### Where the API contract comes from
|
|
42
|
+
|
|
43
|
+
The backend owns the contract; the iOS app is purely a **consumer** and never edits the spec.
|
|
44
|
+
The spec is produced upstream (FastAPI, NestJS Swagger, or hand-maintained) and fed to the
|
|
45
|
+
generator. In a monorepo a single task (e.g. `mise gen:api`) often chains the backend export
|
|
46
|
+
and the mobile generation so the spec stays linked end-to-end. Either way, breaking schema
|
|
47
|
+
changes surface as Swift compile errors after regeneration, not at runtime.
|
|
48
|
+
|
|
49
|
+
> **3.0 vs 3.1 gotcha.** `swift-openapi-generator` drops OpenAPI **3.1** `anyOf:[X,{type:null}]`
|
|
50
|
+
> nullable fields. If the backend emits 3.1 (FastAPI does), down-convert to **3.0.3** before
|
|
51
|
+
> generating — 3.0's `nullable:true` round-trips correctly. Don't "upgrade" it back.
|
|
52
|
+
|
|
53
|
+
## Response Cache: hyperoslo/Cache
|
|
54
|
+
|
|
55
|
+
| Component | Package |
|
|
56
|
+
|-----------|---------|
|
|
57
|
+
| Hybrid (memory + disk) cache | `hyperoslo/Cache` |
|
|
58
|
+
|
|
59
|
+
When response caching is required, implement it at the Repository (Service) layer, backed by `hyperoslo/Cache`. The generated `Components.Schemas.*` types are `Codable`, so they are cached directly through `Cache`'s `Storage<Key, Value>` with `TransformerFactory.forCodable`. This memoizes **decoded models**, not raw bytes — the cache sits between the `@Observable` view model and the generated `Client`, never inside a `ClientMiddleware`.
|
|
60
|
+
|
|
61
|
+
**Placement rule — Repository layer, not transport.** Do **not** intercept `HTTPBody` in a `ClientMiddleware` to cache responses: `HTTPBody` is a single-consumption async stream, so capturing it for replay corrupts the request/response lifecycle. Cache the typed result *after* the generated `Client` call returns instead.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
@Observable ViewModel
|
|
65
|
+
| calls
|
|
66
|
+
v
|
|
67
|
+
Core Service (Repository) ──reads/writes──► ResponseCache (hyperoslo/Cache)
|
|
68
|
+
| on miss / revalidate
|
|
69
|
+
v
|
|
70
|
+
Generated Client → URLSession → Backend
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Mandatory rules:**
|
|
74
|
+
|
|
75
|
+
1. Every read endpoint (`GET`-shaped operation) goes through a `ResponseCache` actor that wraps `hyperoslo/Cache`'s `Storage`. The `Storage` type is not `Sendable`, so it is **always** owned by an `actor` to stay Swift 6 strict-concurrency clean.
|
|
76
|
+
2. Cache **key** = `operationID` + a stable encoding of its path/query params (e.g. `"listTodos"`, `"getTodo:\(id)"`). Never key on URLs.
|
|
77
|
+
3. Apply a **stale-while-revalidate** policy: return the cached value immediately when present, then refresh in the background and update state. Memory expiry and disk expiry are set explicitly per resource via `MemoryConfig` / `DiskConfig` — no implicit infinite TTL.
|
|
78
|
+
4. Any **write** endpoint (`POST`/`PATCH`/`DELETE`) must `removeObject`/`removeAll` the affected keys after success so the next read repopulates.
|
|
79
|
+
5. `Cache` is for transient/server-owned data. **Durable, user-owned** state (drafts, offline records) still belongs in **SwiftData**; **secrets** still belong in **Keychain**. Do not use `hyperoslo/Cache` as a system of record.
|
|
80
|
+
|
|
81
|
+
See `snippets.md` §10 for the canonical `ResponseCache` actor and cached `TodoService`.
|
|
82
|
+
|
|
83
|
+
## Local Storage
|
|
84
|
+
|
|
85
|
+
- **hyperoslo/Cache** — hybrid memory+disk cache for **API response memoization** at the Repository layer (see above). Transient, server-owned data only.
|
|
86
|
+
- **SwiftData** (iOS 17+) — Swift-native ORM built on Core Data; preferred for **durable, user-owned** structured persistence (system of record). See `snippets.md` §11 for a compact `@Model` + `ModelContainer` + repository-fetch example.
|
|
87
|
+
- **UserDefaults / `@AppStorage`** — lightweight key-value preferences.
|
|
88
|
+
- **Keychain** (`Security` framework) — tokens and credentials.
|
|
89
|
+
|
|
90
|
+
## Testing
|
|
91
|
+
|
|
92
|
+
| Layer | Framework |
|
|
93
|
+
|-------|-----------|
|
|
94
|
+
| Unit (domain + services) | XCTest or Swift Testing (`@Test`) |
|
|
95
|
+
| UI / snapshot | XCUITest |
|
|
96
|
+
| Mocking | Protocol-based; no third-party mock lib required |
|
|
97
|
+
|
|
98
|
+
Run tests with `swift test` (SwiftPM projects) or via Xcode's test runner. Target pass signal for CI: `Test Suite 'All tests' passed`.
|
|
99
|
+
|
|
100
|
+
## Project Layout: App / Core / Features / Shared
|
|
101
|
+
|
|
102
|
+
This is **not a Swift-specific standard** — it is the idiomatic Swift expression of
|
|
103
|
+
the same *feature-first* principle the Frontend Agent applies (`../../../../rules/frontend.md`
|
|
104
|
+
§Architecture). Apple's own SwiftUI samples and the 2025+ community consensus both say
|
|
105
|
+
**group by feature, not by type** (no flat `Views/` `Models/` `ViewModels/`). The shared
|
|
106
|
+
rules across platforms are: feature slices own their UI + state, **no cross-feature
|
|
107
|
+
imports** (unidirectional), and self-describing file names. Only the folder *vocabulary*
|
|
108
|
+
differs from frontend FSD — do **not** import FSD layer names (`entities/`, `widgets/`,
|
|
109
|
+
`pages/`) into Swift; `widgets/` in particular collides with WidgetKit.
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
<AppName>/ # SwiftPM package or Xcode project
|
|
113
|
+
├── <AppName>App.swift # @main entry point (top-level)
|
|
114
|
+
├── Assets.xcassets/ # design tokens — color sets (top-level)
|
|
115
|
+
│
|
|
116
|
+
├── App/ # app shell: composition root + routing (not a feature)
|
|
117
|
+
├── Core/ # feature-agnostic domain + infrastructure
|
|
118
|
+
│ ├── Models/ # pure domain models
|
|
119
|
+
│ ├── Networking/ # API client · Mock · Generated/ (openapi-generator output; never hand-edit)
|
|
120
|
+
│ ├── Cache/ # ResponseCache actor over hyperoslo/Cache (read-through, stale-while-revalidate)
|
|
121
|
+
│ └── Services/ # Repository/Store layer (DI, @Observable stores)
|
|
122
|
+
│
|
|
123
|
+
├── Features/<Feature>/ # vertical slice: owns its View + ViewModel
|
|
124
|
+
│ ├── <Feature>View.swift # nest a sub-slice folder when a screen grows complex
|
|
125
|
+
│ └── <Feature>ViewModel.swift # @MainActor @Observable, dependencies via init(client:)
|
|
126
|
+
│
|
|
127
|
+
└── Shared/ # stateless, reusable UI + extensions (zero feature knowledge)
|
|
128
|
+
├── Components/
|
|
129
|
+
└── DesignSystem/ # Typography, etc.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Dependency direction (the principle, not the tree):**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Features ──→ Core ←── Shared Features never import each other.
|
|
136
|
+
└─────────┐ Core / Shared never import Features.
|
|
137
|
+
App ──→ assembles (Features, Core, Shared)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Scaling beyond folders.** The Swift-idiomatic graduation path for a growing codebase is
|
|
141
|
+
**Swift Package Manager modules** — promote `Core` and stable `Features/<Feature>` slices to
|
|
142
|
+
local SwiftPM packages for build-time isolation and enforced boundaries. This is the 2026
|
|
143
|
+
modular-iOS convention; reach for it before inventing deeper folder hierarchies.
|
|
144
|
+
|
|
145
|
+
## Naming Conventions
|
|
146
|
+
|
|
147
|
+
Self-describing names, same principle as the Frontend Agent — the basename alone must
|
|
148
|
+
answer "what domain + what role". Swift specifics:
|
|
149
|
+
|
|
150
|
+
1. **No `+` in file names.** Use a descriptive suffix instead: `ProfileViewSections.swift`,
|
|
151
|
+
not `ProfileView+Sections.swift`. (`+` reads as an extension-file convention but breaks
|
|
152
|
+
some tooling and is banned here.)
|
|
153
|
+
2. **Types `PascalCase`, members `camelCase`, one primary type per file**; filename = that type
|
|
154
|
+
(`SettingsViewModel.swift` → `SettingsViewModel`).
|
|
155
|
+
3. **No grab-bag names** (`Utils.swift`, `Helpers.swift`, `Misc.swift`) and no version/status
|
|
156
|
+
suffixes (`*V2`, `*Old`, `*Final`) — git owns history.
|
|
157
|
+
4. **Design-token symbols name the full family** to avoid colliding with built-ins. When color
|
|
158
|
+
sets shadow SwiftUI symbols (`Color.secondary`, `AccentColor`), prefix the family
|
|
159
|
+
(`SecondaryBlue*`, `AccentYellow*`) rather than the bare `Secondary*` / `Accent*`, which
|
|
160
|
+
reintroduce build warnings.
|
|
161
|
+
|
|
162
|
+
## Navigation: NavigationStack + swipe-back
|
|
163
|
+
|
|
164
|
+
Path-based `NavigationStack(path:)` with typed routes registered via
|
|
165
|
+
`navigationDestination`. Swipe-back is a **navigation-layer** concern, not a
|
|
166
|
+
per-screen one.
|
|
167
|
+
|
|
168
|
+
Apps that hide the nav bar for custom headers (`.toolbar(.hidden, for: .navigationBar)`)
|
|
169
|
+
lose the system edge swipe-back, because UIKit ties `interactivePopGestureRecognizer`
|
|
170
|
+
to the system back button and re-disables it on every nav-bar-hidden transition.
|
|
171
|
+
Restore it at the **route-registration layer** with a `swipeBackDestination`
|
|
172
|
+
wrapper (see `snippets.md` §9) so every pushed route keeps the gesture and tab
|
|
173
|
+
roots are excluded for free. Never restore it ad-hoc per `View` body — that drifts
|
|
174
|
+
silently because forgetting it still compiles.
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oma-observability
|
|
3
|
+
description: Design or troubleshoot telemetry, SLOs, and incident diagnostics.
|
|
4
|
+
Route to the relevant signal, system boundary, or vendor guide.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Observability Agent - Intent-based Router
|
|
8
|
+
|
|
9
|
+
## Scheduling
|
|
10
|
+
|
|
11
|
+
### Goal
|
|
12
|
+
Route, design, tune, and review observability work across MELT+P signals, layers, boundaries, vendor categories, transport choices, meta-observability, and incident forensics.
|
|
13
|
+
|
|
14
|
+
### Intent signature
|
|
15
|
+
- User asks for observability, telemetry, OTel, metrics, logs, traces, profiles, SLOs, RUM, APM, incident forensics, trace propagation, transport tuning, or observability-as-code.
|
|
16
|
+
- User needs vendor/category routing or observability architecture instead of a single vendor's already-covered setup.
|
|
17
|
+
|
|
18
|
+
### When to use
|
|
19
|
+
- Setting up an observability pipeline (OTel SDK + Collector + vendor backend)
|
|
20
|
+
- Designing traceability across service and domain boundaries (W3C propagators, baggage, multi-tenant, multi-cloud)
|
|
21
|
+
- Tuning transport layer (UDP/MTU, OTLP gRPC vs HTTP, Collector DaemonSet vs sidecar topology)
|
|
22
|
+
- Running incident forensics (6-dimension localization: code / service / layer / host / region / infra)
|
|
23
|
+
- Selecting a vendor category (OSS full-stack vs commercial SaaS vs high-cardinality specialist vs profiling specialist)
|
|
24
|
+
- Implementing observability-as-code (Grafana Jsonnet dashboards, PrometheusRule CRD, OpenSLO YAML, SLO burn-rate alerts)
|
|
25
|
+
- Meta-observability (pipeline self-health, clock skew detection, cardinality guardrails, retention matrix)
|
|
26
|
+
- Covering the MELT+P signal set: metrics, logs, traces, profiles (OTEP 0239), cost (OpenCost), audit (SOC2/ISO), privacy (GDPR/PIPA)
|
|
27
|
+
- Evaluating log-pipeline migrations against current upstream support and project requirements
|
|
28
|
+
|
|
29
|
+
### When NOT to use
|
|
30
|
+
- LLM ops (prompt versioning, evals, gen_ai span deep dive); use Langfuse, Arize Phoenix, LangSmith, or Braintrust directly
|
|
31
|
+
- Data pipeline lineage: use OpenLineage + Marquez, dbt test, or Airflow lineage backends
|
|
32
|
+
- IoT / hardware / datacenter physical-layer telemetry (IPMI, BMC, SNMP); use vendor DCIM tooling (Nlyte, Sunbird, Device42)
|
|
33
|
+
- Chaos engineering orchestration: use Chaos Mesh, Litmus, Gremlin, or ChaosToolkit (this skill consumes their telemetry; it does not orchestrate chaos)
|
|
34
|
+
- GPU / TPU infrastructure observability: use NVIDIA DCGM Exporter + Prometheus
|
|
35
|
+
- Software supply chain (SBOM, attestation): use sigstore (cosign / rekor), in-toto framework, SLSA level attestations
|
|
36
|
+
- Incident response workflow (on-call rotation, paging, escalation); use PagerDuty, OpsGenie, or Grafana OnCall
|
|
37
|
+
- Full TLS packet inspection: use packet-analysis or vendor TLS inspection tooling
|
|
38
|
+
- Single-vendor setup already fully covered by that vendor's own published skill; invoke the vendor skill directly
|
|
39
|
+
|
|
40
|
+
### Expected inputs
|
|
41
|
+
- Observability intent, target system, architecture boundary, signals, vendor context, and incident symptoms if any
|
|
42
|
+
- Existing OTel/collector/vendor configs, dashboards, SLOs, trace/log/metric examples, or deployment topology
|
|
43
|
+
|
|
44
|
+
### Expected outputs
|
|
45
|
+
- Routed observability guidance, setup/migration/tuning plan, incident-forensics path, alerting/SLO guidance, or observability-as-code recommendations
|
|
46
|
+
- Transport, meta-observability, privacy, audit, and retention checks
|
|
47
|
+
- Vendor delegation target when appropriate
|
|
48
|
+
|
|
49
|
+
### Dependencies
|
|
50
|
+
Load resources conditionally: start with the execution protocol and one intent guide. Read only relevant matrix rows, then add a boundary, signal, or transport section when evidence requires it. The reference list is an index, not a preload list.
|
|
51
|
+
|
|
52
|
+
- OTel/W3C/CNCF references and resources under `resources/`
|
|
53
|
+
- Vendor categories, matrix, standards, incident forensics, meta-observability, transport, layers, boundaries, and signal guides
|
|
54
|
+
|
|
55
|
+
### Control-flow features
|
|
56
|
+
- Branches by intent, vendor category, layer/boundary/signal matrix, transport topology, privacy/audit risk, and incident localization dimension
|
|
57
|
+
- May read/write observability config and docs; generally delegates vendor-specific implementation
|
|
58
|
+
- Requires live status verification for load-bearing CNCF/vendor currency
|
|
59
|
+
|
|
60
|
+
## Structural Flow
|
|
61
|
+
|
|
62
|
+
### Entry
|
|
63
|
+
1. Classify the intent: setup, migrate, investigate, alert, trace, tune, or route.
|
|
64
|
+
2. Identify layers, boundaries, signals, and vendor category.
|
|
65
|
+
3. Load only the relevant resource guide(s).
|
|
66
|
+
|
|
67
|
+
### Scenes
|
|
68
|
+
1. **PREPARE**: Classify intent and matrix coverage.
|
|
69
|
+
2. **ACQUIRE**: Read configs, topology, telemetry examples, or incident signals.
|
|
70
|
+
3. **REASON**: Route vendor/category, tune transport, assess meta-observability, or localize incident.
|
|
71
|
+
4. **ACT**: Produce setup/migration/tuning/alert/trace/forensics guidance or config changes.
|
|
72
|
+
5. **VERIFY**: Check pipeline health, clock skew, cardinality, retention, privacy, and audit concerns.
|
|
73
|
+
6. **FINALIZE**: Report route, evidence, risks, and handoff references.
|
|
74
|
+
|
|
75
|
+
### Transitions
|
|
76
|
+
- If a vendor-owned skill fully covers setup, delegate instead of duplicating docs.
|
|
77
|
+
- If migration is requested, verify upstream support and compatibility before choosing a replacement.
|
|
78
|
+
- If incident investigation is requested, use 6-dimensional localization.
|
|
79
|
+
- If transport tuning appears, load transport-specific resources.
|
|
80
|
+
|
|
81
|
+
### Failure and recovery
|
|
82
|
+
- If live CNCF/vendor status is load-bearing, verify current status.
|
|
83
|
+
- If telemetry samples are missing, provide instrumentation/collection steps before analysis.
|
|
84
|
+
- If scope belongs to out-of-scope domains, route to external authoritative tools.
|
|
85
|
+
|
|
86
|
+
### Exit
|
|
87
|
+
- Success: observability path is routed, evidence-backed, and checks are explicit.
|
|
88
|
+
- Partial success: missing telemetry, stale vendor status, or external-domain handoff is explicit.
|
|
89
|
+
|
|
90
|
+
## Logical Operations
|
|
91
|
+
|
|
92
|
+
### Actions
|
|
93
|
+
| Action | SSL primitive | Evidence |
|
|
94
|
+
|--------|---------------|----------|
|
|
95
|
+
| Classify observability intent | `SELECT` | Intent rules |
|
|
96
|
+
| Read telemetry/config evidence | `READ` | OTel/vendor configs, dashboards, samples |
|
|
97
|
+
| Route vendor/category | `SELECT` | Vendor categories |
|
|
98
|
+
| Infer coverage gaps | `INFER` | Matrix and signal/boundary mapping |
|
|
99
|
+
| Validate meta-observability | `VALIDATE` | Clock, cardinality, retention, health |
|
|
100
|
+
| Write guidance/config | `WRITE` | OaC/config/docs when requested |
|
|
101
|
+
| Notify result | `NOTIFY` | Routed recommendation |
|
|
102
|
+
|
|
103
|
+
### Tools and instruments
|
|
104
|
+
- OTel/CNCF/W3C standards references
|
|
105
|
+
- Vendor categories, matrix, incident forensics, meta-observability, transport and signal guides
|
|
106
|
+
- Optional CLI/config tooling from the target stack
|
|
107
|
+
|
|
108
|
+
### Canonical workflow path
|
|
109
|
+
```text
|
|
110
|
+
1. Classify intent: setup, migrate, investigate, alert, trace, tune, or route.
|
|
111
|
+
2. Select layer/boundary/signal coverage from `resources/matrix.md`.
|
|
112
|
+
3. Load the specific vendor, transport, incident, or signal guide before producing guidance.
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
When CNCF/vendor status is load-bearing, verify live state at `https://landscape.cncf.io`.
|
|
116
|
+
|
|
117
|
+
### Resource scope
|
|
118
|
+
| Scope | Resource target |
|
|
119
|
+
|-------|-----------------|
|
|
120
|
+
| `CODEBASE` | Observability config, dashboards, alert rules, instrumentation |
|
|
121
|
+
| `LOCAL_FS` | Resource guides and generated docs |
|
|
122
|
+
| `NETWORK` | Vendor/CNCF status and telemetry backends when checked |
|
|
123
|
+
| `USER_DATA` | Incident symptoms, logs, metrics, traces, profiles |
|
|
124
|
+
|
|
125
|
+
### Preconditions
|
|
126
|
+
- Observability intent and system boundary are identifiable.
|
|
127
|
+
- Relevant telemetry/config evidence is available or missing evidence is stated.
|
|
128
|
+
|
|
129
|
+
### Effects and side effects
|
|
130
|
+
- May recommend or modify observability config, dashboards, alerts, and instrumentation docs.
|
|
131
|
+
- May route to vendor-owned skills or external tools.
|
|
132
|
+
|
|
133
|
+
### Guardrails
|
|
134
|
+
1. Classify intent and use `resources/vendor-categories.md` only when category selection or vendor delegation is needed.
|
|
135
|
+
2. Load the transport guide matching the observed problem: UDP/MTU, OTLP protocol, Collector topology, or sampling.
|
|
136
|
+
3. Before declaring a setup complete, verify pipeline health, clock synchronization, cardinality limits, and retention against the project's requirements. Record checks that could not run.
|
|
137
|
+
4. Verify current upstream support, attribute stability, and migration guidance when they affect the recommendation. Use official project documentation and CNCF status; stored versions are assumptions, not proof of current status.
|
|
138
|
+
5. Use W3C Trace Context by default, with cloud translations from `resources/boundaries/cross-application.md` where required.
|
|
139
|
+
6. Apply PII redaction and sampling-aware baggage controls at collection. Check retention, erasure, and audit requirements for the target system.
|
|
140
|
+
7. Deliver working configuration or explicitly labeled proposals. Scaffolds and unverified checks cannot count as completed setup.
|
|
141
|
+
8. Use existing OMA skill names for cross-skill handoffs; do not present future skills as available.
|
|
142
|
+
|
|
143
|
+
The coverage matrix has four layers (L3, L4, mesh, L7), four boundaries (multi-tenant, cross-application, SLO, release), and seven signals (metrics, logs, traces, profiles, cost, audit, privacy). Read matching rows in `resources/matrix.md`; N/A cells do not require implementation.
|
|
144
|
+
|
|
145
|
+
### Routes (Intent)
|
|
146
|
+
|
|
147
|
+
| Intent | Primary target | Fallback |
|
|
148
|
+
|--------|---------------|----------|
|
|
149
|
+
| `setup` | `resources/vendor-categories.md` → vendor-owned skill | Generic OTel semconv in `resources/standards.md` |
|
|
150
|
+
| `migrate` | Current upstream migration docs + `resources/vendor-categories.md` log-pipeline section | OTel Collector bridge config |
|
|
151
|
+
| `investigate` | `resources/incident-forensics.md` (MRA + 6-dim localization) | `resources/signals/traces.md` + `resources/signals/logs.md` |
|
|
152
|
+
| `alert` | `resources/boundaries/slo.md` (burn-rate alert rules) | `resources/observability-as-code.md` |
|
|
153
|
+
| `trace` | `resources/boundaries/cross-application.md` (propagator matrix) | `resources/layers/mesh.md` (zero-code auto-instrumentation) |
|
|
154
|
+
| `tune` | `resources/transport/` (4 files: UDP/MTU, OTLP, topology, sampling) | `resources/meta-observability.md` (cardinality guardrails) |
|
|
155
|
+
| `route` | `resources/boundaries/multi-tenant.md` + `resources/transport/collector-topology.md` | `resources/boundaries/cross-application.md` (data residency) |
|
|
156
|
+
|
|
157
|
+
### Invocation and loading
|
|
158
|
+
For example: `/oma-observability --investigate "5xx spike in checkout"`.
|
|
159
|
+
Other skills pass the intent, system boundary, and evidence; the result returns guidance, checks, and any vendor handoff.
|
|
160
|
+
|
|
161
|
+
Read `resources/execution-protocol.md` first. Use the selected route above, then only relevant checklist sections before delivery. Load `resources/examples.md` for an unfamiliar output shape and `resources/anti-patterns.md` only for the affected category. Do not load all transport, layer, boundary, and signal guides together.
|
|
162
|
+
|
|
163
|
+
### Integrations with OMA Ecosystem
|
|
164
|
+
|
|
165
|
+
| Skill | Integration point |
|
|
166
|
+
|-------|------------------|
|
|
167
|
+
| `oma-debug` | On failure: pull traces + logs by `request_id` → trigger `resources/incident-forensics.md` 6-dim localization playbook |
|
|
168
|
+
| `oma-qa` | Canary post-deploy loop via chrome-devtools MCP: console errors + Core Web Vitals trend; INP/LCP/CLS from `resources/layers/L7-application/web-rum.md` |
|
|
169
|
+
| `oma-tf-infra` | Terraform modules for OTel Collector, Grafana, and Loki stack provisioning |
|
|
170
|
+
| `oma-scm` | Deployment SHA → `service.version` OTel attribute + release marker events; see `resources/boundaries/release.md` |
|
|
171
|
+
| `oma-backend` | Propagator and baggage rules; DB N+1 + Kafka patterns in `resources/signals/traces.md`. Back-reference: `oma-backend/SKILL.md` §References "Observability handoff" |
|
|
172
|
+
| `oma-frontend` | `resources/layers/L7-application/web-rum.md` INP/LCP/CLS checklist. Back-reference: `oma-frontend/SKILL.md` §References "Observability handoff" |
|
|
173
|
+
| `oma-mobile` | `resources/layers/L7-application/mobile-rum.md` offline-queuing pattern. Back-reference: `oma-mobile/SKILL.md` §References "Observability handoff" |
|
|
174
|
+
| `oma-db` | `resources/signals/traces.md` DB patterns (N+1, connection pool). Back-reference: `oma-db/SKILL.md` §References "Observability handoff" |
|
|
175
|
+
|
|
176
|
+
### Versioning & Deprecation
|
|
177
|
+
|
|
178
|
+
- **Spec version pinning**: `otel_spec` / `otel_semconv` keys in each file's frontmatter document the assumed version. If content depends on a specific attribute stability tier, the tier is stated inline.
|
|
179
|
+
- **Update triggers** (not scheduled):
|
|
180
|
+
- OTel semconv promotion (Development → RC → Stable) affecting attributes cited in this skill → update `resources/standards.md` and the affected file, bump minor version.
|
|
181
|
+
- Attribute deprecation → replace across all citing files; migration note in `resources/standards.md`.
|
|
182
|
+
- CNCF status change for a vendor/project named in `vendor-categories.md` (Graduated / Archived / acquired) → update the vendor table.
|
|
183
|
+
- **Authoritative live state**: `https://landscape.cncf.io` for CNCF project status. This skill does not promise to track it on any schedule; verify at use time if the information is load-bearing.
|
|
184
|
+
- Use `git log path/to/file` to inspect file changes; verify upstream status separately when it affects the task.
|
|
185
|
+
|
|
186
|
+
Run `resources/checklist.md §1 Setup validation` before merging observability changes.
|
|
187
|
+
|
|
188
|
+
## References
|
|
189
|
+
- Execution steps: `resources/execution-protocol.md`
|
|
190
|
+
- Intent classification: `resources/intent-rules.md`
|
|
191
|
+
- Coverage matrix: `resources/matrix.md`
|
|
192
|
+
- Standards (OTel spec, W3C, ISO): `resources/standards.md`
|
|
193
|
+
- Vendor categories: `resources/vendor-categories.md`
|
|
194
|
+
- Incident forensics: `resources/incident-forensics.md`
|
|
195
|
+
- Meta-observability: `resources/meta-observability.md`
|
|
196
|
+
- Observability-as-code: `resources/observability-as-code.md`
|
|
197
|
+
- Anti-patterns catalog (72 entries): `resources/anti-patterns.md`
|
|
198
|
+
- Checklist: `resources/checklist.md`
|
|
199
|
+
- Examples: `resources/examples.md`
|
|
200
|
+
- Transport:
|
|
201
|
+
- `resources/transport/udp-statsd-mtu.md`
|
|
202
|
+
- `resources/transport/otlp-grpc-vs-http.md`
|
|
203
|
+
- `resources/transport/collector-topology.md`
|
|
204
|
+
- `resources/transport/sampling-recipes.md`
|
|
205
|
+
- Layers:
|
|
206
|
+
- `resources/layers/L3-network.md`
|
|
207
|
+
- `resources/layers/L4-transport.md`
|
|
208
|
+
- `resources/layers/mesh.md`
|
|
209
|
+
- `resources/layers/L7-application/web-rum.md`
|
|
210
|
+
- `resources/layers/L7-application/mobile-rum.md`
|
|
211
|
+
- `resources/layers/L7-application/crash-analytics.md`
|
|
212
|
+
- `resources/layers/L7-application/waf.md`
|
|
213
|
+
- Boundaries:
|
|
214
|
+
- `resources/boundaries/multi-tenant.md`
|
|
215
|
+
- `resources/boundaries/cross-application.md`
|
|
216
|
+
- `resources/boundaries/slo.md`
|
|
217
|
+
- `resources/boundaries/release.md`
|
|
218
|
+
- Signals:
|
|
219
|
+
- `resources/signals/metrics.md`
|
|
220
|
+
- `resources/signals/logs.md`
|
|
221
|
+
- `resources/signals/traces.md`
|
|
222
|
+
- `resources/signals/profiles.md`
|
|
223
|
+
- `resources/signals/cost.md`
|
|
224
|
+
- `resources/signals/audit.md`
|
|
225
|
+
- `resources/signals/privacy.md`
|