Si tracks a daily solitaire challenge deal on his blog at/habits/solitaire/, part of the combined /habits/ section. When he shares
a screenshot of the Solitaire app's post-game "Results" screen, extract the
day's data and append it to _data/habits/solitaire.json - do not just
describe the numbers back.
A "Results" screen with a crown trophy graphic, a heading likeDeal DD/MM/YYYY - Draw N, and a two-column stats table:
You Best
Score: 3,939 27,619
Time: 3:32 0:26
Moves: 111 83
Below the results card is a row of game-mode icons (Crown Solitaire, Castle,
FreeCell, Pyramid Solitaire, Hearts, Spider Solitaire, ...) - whichever one
is highlighted/bordered is the game mode that was played. This skill is
scoped to daily-challenge deals from this results screen regardless of which
game mode is highlighted; note the mode in the commit message if it isn't
Crown Solitaire.
There's no phone status-bar clock visible in this screen (unlike the Yudoku
results screen), so there's no reliable session time to extract - don't
guess one.
| Field | Source | Format |
|---|---|---|
date | The Deal DD/MM/YYYY heading (this is the deal's date, day/month/year) | YYYY-MM-DD |
drawMode | The - Draw N part of the same heading | e.g. "Draw 3" |
score | "Score" row, You column | integer (strip commas) |
durationSeconds | "Time" row, You column | integer seconds, M:SS → total seconds (e.g. 3:32 → 212) |
moves | "Moves" row, You column | integer |
The Best column is the game's own all-time personal best, not a new data
point for today - see below for how it's handled.
_data/habits/solitaire.json.entries array with the fivetime field on these entries).date already exists, ask Si whether to overwrite it ratherpersonalBest object (score/durationSeconds/moves/notedOn) only if the screenshot's Best values differ from what'snotedOn to the date this screenshot was sent. If the Best valuespersonalBest alone.npx eleventynpm run build) to sanity-check the JSON is valid and the pageLog solitaire deal for 2026-08-04 is enough. Don't askThis skill is specifically for the Solitaire app's Results screen going
into solitaire.json. If Si shares a screenshot for a habit that isn't
this, don't force the data into solitaire.json. Instead follow the same
general pattern (see also the yudoku-habit-log skill):
_data/habits/<slug>.json with id, name, icon, source,description, primaryMetric (key/label/unit/goal), optionallysecondaryMetric and extraStats, and an entries array - copy thesolitaire.json orsudoku.json.src/pages/habits/solitaire.njk to src/pages/habits/<slug>.njk,"solitaire" | getHabit slug and the page title/description.Nothing else needs to change - /habits/ and its shared table/chart
rendering (_11ty/habits.js, _11ty/habits-data.js) already work
generically off whatever habit JSON files exist in _data/habits/.