Use when declaring, reviewing, or enforcing Web/iOS/Android tri-flow parity for a route or feature, including the excluded-route reason contract and the N/A declaration the PR template requires.
Resources
2Install
npx skillscat add hushh-labs/hushh-research/tri-flow-parity Install via the SkillsCat registry.
SKILL.md
Hussh Tri-Flow Parity Skill
Purpose and Trigger
- Primary scope:
tri-flow-parity - Trigger on route additions or moves, and on any PR that must answer the
Tri-Flow Architecture Check. - Avoid overlap with
mobile-parity-auditandmobile-plugin-contracts.
Tri-flow is Web + iOS + Android, and every layer is either covered or
explicitly marked N/A with a reason. Silent omission is not a third option.
The claim lives in native-route-inventory.json, not the PR checkbox: a tick in
a template is not reviewable six months later and nothing reads it.
Coverage and Ownership
- Role:
spoke - Owner family:
mobile-native
Owned repo surfaces:
hushh-webapp/native-route-inventory.jsonhushh-webapp/scripts/native/verify-native-static-parity.mjsdocs/reference/mobile/tri-flow-parity.md
Non-owned surfaces:
hushh-webapp/ioshushh-webapp/androidfrontend
Do Use
- Adding a route to
ROUTESand classifying it in the same change. - Writing or reviewing the
reasonon anexcluded-*route. - Answering the PR template's Tri-Flow Architecture Check.
- Deciding whether an exclusion is permanent or a parity gap.
Do Not Use
- Implementing a Capacitor plugin or native bridge (
mobile-plugin-contracts). - Running device or simulator audits (
mobile-parity-audit). - Generic frontend route placement (
frontend-surface-placement).
Read First
docs/reference/mobile/tri-flow-parity.md.codex/skills/tri-flow-parity/references/reason-contract.md
Workflow
- Classify the route.
native-required-*means the native shells must render
it;excluded-*means they are not expected to. - A
native-requiredroute needs anexpectedMarker; anexcluded-*route
needs areasonof at least 40 characters. The static gate fails on either. - Write the reason truthfully, distinguishing a permanent exclusion (a
property of the route) from a gap (a property of the current native shell).
For a gap, writeGAP, not a permanent exclusionand name what closes it. - Judge the reason against
references/reason-contract.mdbefore accepting it.
A plausible-sounding justification is worse than a blank field. - Re-run the static gate. It is fast and needs no device.
Handoff Rules
- If the request is still broad or ambiguous, route it back to
mobile-native. - If the work is implementing the native surface, use
mobile-plugin-contracts. - If the work is verifying live native behaviour, use
mobile-parity-audit. - If the route placement itself is in question, use
frontend-surface-placement.
Required Checks
cd hushh-webapp && node scripts/native/verify-native-static-parity.mjs
cd hushh-webapp && npm run verify:surface-map