tab-metaphors — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tab-metaphors (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.
A real app's tab bar says "here are different kinds of information", not "here are the same screen in different colors". The rookie mistake is building four screens that each have a hero pill, a scroll list, and a color accent — and wondering why it reads as a prototype instead of a product.
Cohesion comes from shared chrome (status bar, type scale, base background). Identity comes from the structural spine: each tab picks a layout metaphor that maps to its content.
Pick one per tab. These are the patterns that ship in real apps:
for: today-view, dashboard landing, "what matters right now".
history, contribution graphs, streak tracking.
row. Use for: feeds, activity history, session logs.
small-multiple breakdowns below. Use for: insights, analytics, trends.
items). Use for: profile achievements, saved items, libraries.
rows below. Use for: now-playing, article view, workout-of-the-day.
| Tab | Metaphor | Why |
|---|---|---|
| Home | Hero number | "Did I hit my goal today?" is a single number |
| Log | Calendar heatmap | Shows the rhythm — streaks, gaps, consistency |
| Insights | Stacked charts | Trends only make sense over time, not in a number |
| Profile | Collection grid | Badges and achievements are visually heterogeneous |
| Tab | Metaphor |
|---|---|
| Today | Timeline grid |
| Inbox | Collection grid (list variant) |
| Focus | Hero number (timer + session count) |
| Review | Stacked charts (completion rate, etc.) |
Keep these identical across all tabs — this is what makes the app feel like one product:
83pt on iPhone
charts tab uses chart labels; heatmap tab uses day-of-week headers
last 10%, not the first 90%.
a workout icon is cool-hued, an achievement icon is gold. Don't use one accent color for every icon.
ping).base background. One component set on a "Components" page.
mapping explicitly ("Home=hero, Log=heatmap, ..."). Don't skip this — picking metaphors inside the build loop is where you revert to "same screen, different color".
mcp__mercury__create kind:"frame",390×844 iPhone size, place the shared chrome instances, then build the metaphor-specific content.
mcp__mercury__export_node and look at them side-by-side. If any two feel like siblings instead of cousins, the metaphor is leaking.
glows per tab, placed to complement the spine, not to hide it.
metaphor is "hero number".
what makes the app feel lived-in.
vertical rhythm (grid, chart, heatmap).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.