making-scenes-tab-aware — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited making-scenes-tab-aware (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
PostHog's internal tabs keep scene root logics mounted even when a tab is inactive. That only works correctly when the scene is designed for it.
A fully tab-aware scene has three properties:
SceneExport.logic is scoped per internal tab.sceneLogic already injects tabId into both the scene component props and the scene logic props. See frontend/src/scenes/sceneLogic.tsx.
SceneExporturlToAction / actionToUrl in scene root logicExamples:
frontend/src/scenes/insights/insightSceneLogic.tsxfrontend/src/scenes/dashboard/dashboards/dashboardsLogic.tsproducts/endpoints/frontend/endpointSceneLogic.tsxproducts/workflows/frontend/WorkflowsScene.tsxUsually no structural work is needed. Only follow existing patterns.
Examples:
products/actions/frontend/logics/actionLogic.tsfrontend/src/scenes/subscriptions/subscriptionSceneLogic.tsxThese scenes already isolate instances with tabId in their key, but they do not use the scene-level tabAwareScene() contract. Treat them as good raw material for a full migration.
Examples:
frontend/src/scenes/feature-flags/featureFlagLogic.tsfrontend/src/scenes/product-tours/productTourLogic.tsfrontend/src/scenes/dashboard/dashboardLogic.tsxThese usually key by resource id, own router bindings directly, or depend on React-local state that disappears on tab switch. They often need a dedicated scene-root logic added on top of the existing resource logic.
If a logic is the scene root referenced by SceneExport.logic, it should normally be keyed by tabId and own scene-level router sync. If a logic is a child resource/editor/detail logic, it can key by tabId + resource id and be attached to the scene root with useAttachedLogic.
urlToAction / actionToUrl on the scene rootuseStateAt minimum:
Then run the relevant tests plus:
hogli lint:skills
hogli build:skills~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.