00 // One open-source instrument for the whole trail

Your GitHub work,
mapped clearly.

CommitAtlas renders the trail as embeddable evidence: eight accessible SVG cards, a project-health dashboard that never paints an unknown signal green, and a credential-free generator that produces the same files offline. Every reading below is live from the same routes a README can embed.

01 // Momentum plotter · 28dM1
vs prior 28d
02 // Rhythm · 0–100M2

Evenness · not a rank
03 // Density survey · 365dM3
active days · /day
04 // Portfolio reticle · CIM4
Unknown is never green
Instrument scaleHinge #FFD166 · lives in the cardsChrome · per theme
STN A // Contribution signalsDistribution · R0

The trail, counted honestly.

Contributions
Active days
Cmt / PR / Rev / Iss

0/2 CI PASSING · 0 ATTENTION · 2 UNCONFIGURED — shown dark, never green

STN B // Distribution surfacesFour ways out · R12

The same evidence, wherever it has to live.

8SVG routes
4Card themes
0Credentials required

Observed → derived → hypothesis · every number carries its caveat

✓ Public by default   ✓ Honest freshness   ✓ Live or staticReduced motion: complete static page · nothing enters from invisible

02 // Specimen tray · 8 live SVG routes

See the whole toolkit.

Every preview is a real SVG response
Safe, deterministic octocat data · No GitHub calls are made to render this page

Synthetic demo: Developer atlas for octocat

CARD 00 // ATLAS · FLAGSHIPM6

ROUTE  /api/v1/cards/atlas.svg
SIZE   860×380 fixed · <30 KiB
LIMITS No script · No foreignObject · No external refs
MOTION none | subtle (transform-only)

Caveat printed on every atlas: longest streak is window-bounded · rhythm is not a GitHub rank
M6 — survey beam: a 70px gradient sweeps the plate left to right, 7s, linear, infinite. The card beneath never moves.

CARD 01 // ATLAS COMPACT480×570 FIXED

Synthetic demo: Developer atlas, compact for octocat

The full atlas in a 480×570 portrait plate, for a README column that has no room to run wide.

MOBILE READMEOpen SVG

CARD 02 // PROFILERESPONSIVE

Synthetic demo: Profile snapshot for octocat

Public repository, follower, contribution, and star signals at a glance.

24 REPOS · 312 FOLLOWERS · 487 STARSOpen SVG

CARD 03 // STREAKRESPONSIVE

Synthetic demo: Contribution streak for octocat

Current and longest observed streaks with an honest history boundary.

WINDOW-BOUNDED · NO GUILTOpen SVG

CARD 04 // BREAKDOWNRESPONSIVE

Synthetic demo: Contribution breakdown for octocat

Exact categorized counts when available; otherwise clearly labelled public-profile percentages.

EXACT COUNTS OR LABELLED PROFILE %Open SVG

CARD 05 // RHYTHMRESPONSIVE

Synthetic demo: Personal rhythm for octocat

Transparent personal consistency based on density and streak — not a GitHub rank.

72/100 · NOT A RANKOpen SVG

CARD 06 // ACTIVITYRESPONSIVE

Synthetic demo: Activity map for octocat

A compact calendar view of public contribution density over time.

EXACT DATE WINDOWOpen SVG

CARD 07 // LANGUAGESRESPONSIVE

Synthetic demo: Language mix for octocat

Public repository-language distribution, presented without proficiency claims.

REPOSITORY SHARE · NOT PROFICIENCYOpen SVG

CARD 08 // PROJECTSRESPONSIVE

Synthetic demo: Project signals for octocat

Declared lifecycle and project signals for Hello-World and Spoon-Knife.

SIX HEALTH STATES · UNKNOWN ≠ FINEOpen SVG

03 // Atlas × 4 card themes — paper ships for light READMEs

Synthetic demo: Developer atlas in the aurora card theme
AURORA · #09131F
Synthetic demo: Developer atlas in the midnight card theme
MIDNIGHT · #05070D
Synthetic demo: Developer atlas in the paper card theme
PAPER · #F8FAFC · ON LIMESTONE
Synthetic demo: Developer atlas in the ember card theme
EMBER · #0D1117 · DEFAULT
Hover: the plate lifts 3px · crop marks brighten · transform-only, 180ms easePlates, not cards: the page frames; the SVG is the untouched specimen

04 // Portfolio signals · CI state rack

A dark gauge is a finding, not a failure of the page.

Live synthetic reading: CI passing · 0 attention · 2 unknown
72h freshness window · calculateCiState()

Every state gets a distinct lamp shape, a distinct trace, and a printed word — colour is never the only encoding. The three “we do not know” states are deliberately the most visually interesting bays in the rack.

UNAVAILABLE
NO SIGNAL

PROVIDER RETURNED NOTHING.
NOT ZERO — UNOBSERVED.
LAMP UNLIT · STEADY · NO PULSE

UNCONFIGURED×2

NO PROBE FITTED.
NO NAMED WORKFLOW TO WATCH.
EMPTY SOCKET · DASHED TRIM

STALE

LAST OBSERVED >72H AGO.
WAS PASSING · NO LONGER CLAIMED.
NEEDLE FROZEN · DOTTED TRACE

PASSING

NAMED WORKFLOW GREEN,
OBSERVED INSIDE 72H.
LAMP LIT · SOLID TRACE · ✓

FAILING

RED RUN, FRESH EVIDENCE.
A FACT, NOT A SHAME.
DIAMOND LAMP · SPIKED TRACE

PENDING

RUN IN FLIGHT.
ACQUIRING — THE ONLY STATE
ALLOWED TO PULSE. HALF LAMP

NO SIGNAL
M7 // Acquisition sequence — how a gauge fails honestlyM7

On load, an unavailable gauge does not snap to an error badge — the needle hunts: it rises toward a reading, stutters twice, falls back to the −90° rest stop, and the lamp never lights. The plate reads NO SIGNAL from frame zero, so the motion adds theatre, never information.

5.5s cycle · cubic-bezier(.4,0,.3,1) · transform-only · reduced motion: needle rests at −90°, plate unchanged

Six shapes: plate · socket · frozen clock · disc · diamond · half-disc — legible in greyscaleAn unknown, missing, or stale signal is never displayed as healthy

05 // Evidence layer · observed → derived → hypothesis

Facts become rates. Rates become guesses.

10 readings explained on this page
Every dotted number opens the drawer

Every reading sits on one of three rungs, and every dotted number on screen answers “how do you know that”. CommitAtlas already refuses to paint an unknown signal green; this is the same rule one level up, applied to the difference between a number that was counted and a number that was inferred.

Order 1 · OBSERVED THIS IS IN THE DATA

contributions

Rule: contribution-total-observed

Order 2 · DERIVED THIS FOLLOWS FROM THE DATA

active-day density

Rule: density-derived

Order 3 · HYPOTHESIS THIS IS A GUESS — LABELLED AS ONE

rhythm level

Rule: rhythm-band-hypothesis

Rung is encoded three ways: word · dot (solid / half / dashed) · border style.
Every reading sorts onto these three rungs — never a fourth.

Closed — every dotted number is a button: rhythm scorePress any dotted number: “how do you know that?”

What the drawer shows

One shared drawer rather than a popover per number: there is only ever one question being asked, and a single dialog is the only version of this that stays navigable by keyboard.

BASIS
Where the number came from, naming the window and the source.
FORMULA
Printed in mono for every derived and hypothesis reading. An observed value has none to show, and shows none.
CAVEAT
What the number cannot see. Never omitted, never softened.

M8 — drawer: slides up 12px and settles · 260ms · cubic-bezier(.2,.9,.3,1) · ESC or click outside to close · reduced motion: appears in place, fully drawn.

COVERAGE: 17 DIMENSIONS · 365-DAY PUBLIC WINDOW · "EVERY NUMBER SHOULD KNOW WHAT IT CANNOT SEE"Source: SYNTHETIC OCTOCAT

06 // Configure without guesswork

One toolkit. Every signal.

Choose live public data or a clearly marked synthetic preview, declare your own project lifecycles, then copy only the cards you want as README Markdown.

Open the Studio