android-emulator-harneβ¦
Bring up an Android app in a headless emulator on Linux/WSL and drive it for automated integration testing, the Android analog ofβ¦
Write a short status readout of long-running work as a handful of emoji-led bullets a person can scan in five seconds after walking away: the time and how long it has been, what moved, what is stuck, and, last, whether anything needs them (β) or not (π’). Use when asked for "a
$ npx -y skills add simiancraft/simiancraft-skills --skill emoji-readout --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/emoji-readoutContext preview
The summary Claude sees to decide when to auto-load this skill.
Write a short status readout of long-running work as a handful of emoji-led bullets a person can scan in five seconds after walking away: the time and how long it has been, what moved, what is stuck, and, last, whether anything needs them (β) or not (π’). Use when asked for "a
name: emoji-readout description: >- Write a short status readout of long-running work as a handful of emoji-led bullets a person can scan in five seconds after walking away: the time and how long it has been, what moved, what is stuck, and, last, whether anything needs them (β) or not (π’). Use when asked for "a status update", "an emoji summary", "a readout", "where are we", "updates every N minutes", or at the checkpoints of a burndown, a long build, a migration, or any unattended run someone checks in on. Ships a small renderer (`lib/readout.ts`) for drivers that print the same shape from code. Skip for a one-line answer, and for a final report whose reader needs prose and reasoning rather than a scan.
Someone walked away and came back. In five seconds the readout tells them **whether they are needed**, and if not, **what changed and whether it is still moving**. It is a scan, not a story: high level, list-like, one line per thing, an emoji leading each line so the eye can sort it before reading it.
16:56 CDT Β· 1h 12m in - β PR #101 merged; checks green (5 pass, 6 skip) - π def5678 in tests, 12 of ~18 min - π§± #214 stuck 25 min: the worker keeps failing the lint gate on the same file - π©Ί all processes alive; dev server answers - π next readout ~17:11 - β Needs you: may I delete the superseded plan file? (work continues meanwhile)
time, never estimated; then how long the work has been running (`1h 12m in`). When the gap since the last readout matters too, say it in its own words (`20m since last`), never as `in`.
closed), and anything still running normally, with its progress against what is normal for it (`12 of ~18 min`). If nothing moved, say so: `nothing moved since 16:40`. A quiet readout must never look like one nobody checked.
waiting on something outside, with how long. A stuck thing repeats in every readout until it moves; it is the exception to reporting only changes.
do something. Each item is answerable in one reply (a yes or no, lettered options, or a short question), and it repeats until answered. When nothing needs them, the last line is `π’ Nothing needs you.`, so the emoji alone says which, and silence is never ambiguous. Never use β for anything else, and never bury a question elsewhere.
test, a chosen default, a deleted branch), and whether it can still be undone. Never optional when there is one.
(`next ~17:11`), and separately, if known, an estimate of when the work finishes. A missed checkpoint is how a reader learns the run died.
work continues while a β waits.
`7 of 12 issues merged`, `3 of 5 verified on staging`.
Everything else is judgement about what this reader needs from this work right now.
absent, not "none". A risk, a slow step, a surprise, a number that moved: include it if it would change what the reader thinks or does.
π moving, π§± stuck, π©Ί health, β οΈ worth watching, π§ͺ tests, π deploys, π§Ή cleanup. Invent one when the work has its own category. Within one session keep an emoji's meaning stable, so two readouts compare.
most readouts need no nesting at all.
"Tests pass" is a claim; "412 of 412 at 16:51" is a receipt.
An older fact keeps its time ("green at 16:40").
steps. If nothing moved, nothing is stuck, and nothing needs the reader, the readout is the header, `nothing moved since HH:MM`, and `π’ Nothing needs you.`
On a cadence ("every 15 minutes"), schedule it with the harness's recurring trigger, build each one fresh, and say in the last one that it is the last.
A driver that prints readouts imports the renderer and supplies its own sections:
import { renderReadout } from '<this-skill-dir>/lib/readout.ts';
console.log(renderReadout({
since: runStartedAt, // header shows "Β· 1h 12m in"
title: 'floor walk',
sections: [
{ emoji: 'β
', lines: ['PR #812 present on the deployed site (look)'] },
{ emoji: 'π©Ί', label: 'Health', lines: ['up: / 200 in 120ms; deployed a1b2c3d'] },
],
needsYou: [],
}));Sections print in the order given; blank lines are dropped, and so is a section left with none. A section with one line prints on one line, labelled or not. Several lines nest under the label; without a label, each prints as its own bullet behind the emoji. A section given β is moved into `needsYou`, which always prints last, or as `π’ Nothing needs you.` when empty.
Claude Code skills for the full arc of a change: farm to table, with receipts. Curated Claude Code skills and agents from simiancraft. Most skill collections are grab bags. This one has a spine: it carries a change through its whole life.
Bring up an Android app in a headless emulator on Linux/WSL and drive it for automated integration testing, the Android analog ofβ¦
Specialization of android-emulator-harness for CAMERA / segmentation testing: get a real PERSON in front of the emulator cameraβ¦
Appraise a GitHub issue backlog unattended: for each issue, decide whether it is still real and how big it is, then apply theβ¦
Shrink a media asset to the smallest bytes that still serve its purpose, keyed on asset kind (raster, vector, animation, video,β¦
Run an unattended burndown of a GitHub issue backlog as cards on a per-operator GitHub Projects board whose lanes are an explicitβ¦
Break one GitHub issue that is too large to work into sub-issues, unattended, and keep the carving honest as the children close.β¦