Use when changing or verifying Kai analytics observability across GA4, Firebase Analytics, BigQuery export, growth dashboard contracts, property and stream topology, or shared-auth versus analytics-plane boundaries.
Resources
3Install
npx skillscat add hushh-labs/hushh-research/analytics-observability-governance Install via the SkillsCat registry.
SKILL.md
Hussh Analytics Observability Governance Skill
Purpose and Trigger
- Primary scope:
analytics-observability-governance-intake - Trigger on GA4/Firebase/BigQuery observability workflows, growth dashboard verification, property or stream topology inspection, key-event and custom-dimension governance, shared-auth versus analytics-plane reasoning, and observability doc upkeep.
- Avoid overlap with
repo-operations,docs-governance, andquality-contracts.
Coverage and Ownership
- Role:
owner - Owner family:
analytics-observability-governance
Owned repo surfaces:
docs/reference/operations/observability-architecture-map.mddocs/reference/operations/observability-google-first.mddocs/reference/operations/observability-event-matrix.mddocs/reference/quality/analytics-verification-contract.mdhushh-webapp/lib/observabilityhushh-webapp/__tests__/services/observability-schema.test.tshushh-webapp/__tests__/services/observability-route-map.test.tshushh-webapp/__tests__/services/observability-growth.test.tshushh-webapp/__tests__/services/observability-native-firebase.test.tshushh-webapp/__tests__/services/observability-web-transport.test.tshushh-webapp/__tests__/services/observability-sandbox-audit.test.tshushh-webapp/scripts/testing/run-observability-sandbox-audit.mjshushh-webapp/scripts/testing/run-uat-analytics-smoke.mjsconsent-protocol/scripts/observability.codex/skills/analytics-observability-governance
Non-owned surfaces:
repo-operationsdocs-governancefrontendmobile-nativebackend
Do Use
- Inspecting GA4 properties, Firebase app streams, or BigQuery export links.
- Governing key events, custom dimensions, and growth dashboard query contracts.
- Explaining or verifying shared-auth versus analytics-sink separation across UAT and production.
- Updating the observability docs set and relationship diagrams as the system evolves.
- Verifying that dashboards and query surfaces match the emitted event contract.
Do Not Use
- Generic deploy, Cloud Run, branch-protection, or CI ownership work.
- Documentation-home placement decisions outside the observability doc family.
- Broad frontend or backend product implementation that is not primarily about observability.
Read First
docs/reference/operations/observability-architecture-map.mddocs/reference/operations/observability-google-first.mddocs/reference/operations/observability-event-matrix.mddocs/reference/quality/analytics-verification-contract.md.codex/skills/analytics-observability-governance/references/property-stream-dataset-matrix.md.codex/skills/analytics-observability-governance/references/event-taxonomy-and-validation.mdconsent-protocol/scripts/observability/ga4_growth_dashboard_queries.sql
Workflow
- Inspect the live topology first; do not trust stale screenshots or assumed property mappings.
- Treat the analytics system as three planes: identity, analytics collection, and reporting.
- Keep production as the canonical business-reporting surface and UAT as validation-only unless the policy changes explicitly.
- Update property/stream/dataset references, event taxonomy, and verification docs in the same change.
- Keep BigQuery query ownership explicit and exclude non-Kai streams such as
HushhVoicefrom Kai growth models. - Verify repo-side schema and transport behavior with
npm run verify:analyticsbefore treating any property-side change as complete. - Run
npm run audit:analytics-sandboxfor local transport proof andnpm run verify:analytics:governedfor the full deployed validation bundle when UAT can be exercised. - Use the local inspection helper for non-mutating inventory and drift checks before editing docs or dashboard assumptions.
- Keep the all-routes route-ID test strict; first-party app routes must not map to
unknown. - UAT analytics smoke must reuse the existing reviewer test fixture through
REVIEWER_UIDandREVIEWER_VAULT_PASSPHRASE;UAT_SMOKE_*andKAI_TEST_*are temporary migration aliases only. - If the smoke fixture is missing portfolio or recommendation state, repair or reseed that same fixture rather than minting another account.
- After the cold
/loginboot, Playwright analytics smoke must use Next client navigation for protected route transitions so the in-memory vault key is preserved. - Web observability must push
dataLayerfor GTM compatibility and send direct GA4gtagevents to the configured measurement ID; do not let GTM trigger drift be the only path for governed KPI events. - UAT smoke must verify direct GA4 collect handoff for required web events in addition to client-side
dataLayercapture. - Cache and route performance KPIs must be metadata-only: route ID, resource class, cache tier, freshness, result, duration bucket, and footprint bucket are allowed; user IDs, emails, workflow IDs, raw cache keys, PKM payloads, prompts, portfolio values, and decrypted values are not.
- Treat UAT as event-shape and transport validation for performance KPIs; production is the source for real user conclusions such as warm-cache time to usable UI, stale-render rate, blocking-loader rate, and refresh error rate.
- Spawn subagents only for independent, bounded, non-blocking lanes such as read-only route coverage audits, docs/skill updates, or disjoint verification automation patches; keep the immediate critical-path task local.
Handoff Rules
- If the task becomes generic deploy or environment rollout work, use
repo-operations. - If the task becomes documentation-home governance outside observability, use
docs-governance. - If the task becomes frontend route or UI implementation beyond observability emitters, use
frontend. - If the task becomes native plugin or mobile build parity work, use
mobile-native. - If the task becomes backend runtime instrumentation beyond the observability-owned script surface, use
backend.
Required Checks
verify:analytics includes offline Android package/app/export acceptance without credentials.
python3 -m py_compile .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py
python3 .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py validate
python3 .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py health
cd hushh-webapp && npm run verify:analytics
cd hushh-webapp && npm run audit:analytics-sandbox
cd hushh-webapp && npm run smoke:analytics:uat
cd hushh-webapp && npm run verify:analytics:governed
./bin/hushh docs verify