Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Spin up a personal, motivating daily focus board that renders in a browser canvas and that the user drives by talking to their AI partner. Tasks track status (to-do → in progress → done) with timestamped progress notes and roll up into a "today's momentum" feed; numeric-goal tasks (pages, pomodoros, reps) render as progress-bar counters. Executive-function / neurodivergent-friendly by design: Focus mode, kind "not today" carryover (no overdue-shaming), a brain-dump box, reduced-motion, and gentl
.claude/skills/github-daily-focus-board/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 150% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 126% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 150% | 0% |
A warm, visual "let's go" board for a person's day — rendered from a self-contained HTML template, opened in a browser (ideally a side-panel canvas in the GitHub Copilot app), and kept current by conversation: the human tells you what they finished, you update the board.
This is Ember partnership in daily practice: not a static to-do list, a thing you run with your AI. Keep it light, encouraging, and honest — celebrate real progress, don't inflate it.
Trigger when the user wants to: plan today, "get organized / stay focused," start a work session, or track progress on a set of tasks they list. If they just mention a pile of things to do, offer the board.
1. Gather the tasks. Ask for (or lift from what they already said) their handful of tasks for the day. For each, capture: a short title, an optional emoji, an optional one-line sub-note, and an optional tag. If a task is a count toward a number (steps, pages, pomodoros, reps), make it a counter with a numeric goal. Keep it to ~4–9 items — a focus board, not a backlog.
2. Generate the board. Copy assets/board.template.html to a working file (e.g. focus-board.html in a scratch/working dir — NOT into a source repo unless asked). In the copy, find this line near the top:
html<script>window.__BOARD__ = null; /* SKILL: replace null with the config object above */</script>
Replace null with the config object. Inject it as JSON with < escaped so a task's text can never break out of the <script> — e.g. JSON.stringify(config).replace(/</g, "\\u003c") — never hand-concatenate raw user-provided text. Schema:
js{ name: "Alex", // optional — shows "Let's go, Alex 🔥"; omit for "Let's go 🔥" dateKey: "2026-07-27", // optional — localStorage key; defaults to today (YYYY-MM-DD) mantra: "Small, real, done.", // optional — today's intention (editable on the board) checkin: "above", // optional — arrival check-in: "below" | "mid" | "above" tasks: [ // counter task (numeric goal → progress bar + set/+ buttons): { id:"pages", emoji:"📖", title:"Read 30 pages", goal:30, start:0, inc:5, unit:"pages", tag:"mind", tagc:"new", quad:"ins" }, // status task (to-do → in progress → done + progress notes): { id:"doc", emoji:"⚙️", title:"Finish the design doc", sub:"the anchor", due:"2026-07-27T17:00", tag:"deadline", tagc:"deadline", quad:"iu" }, { id:"move", emoji:"🌿", title:"Move a little — whatever fits your body", tag:"body" } ] }
id must be unique and stable, using only letters, digits, hyphens, or underscores([A-Za-z0-9_-]) — it's embedded in HTML attributes, CSS selectors, storage keys, and colon-delimited note keys, so avoid quotes, colons, brackets, and spaces. tagc is an optional color class: new (green), deadline (red/pink), career (purple); omit for the default grey.
goal (a positive integer), start (default 0), inc (defaultmax(1, round(goal/10))), unit (label). Everything else is a status task. Carryover ("not today") is for status tasks — counters are progress you dial down, not defer.
due (optional, ISO local datetime) shows a gentle live countdown on the card, and afterthe time passes says "was due 5:00pm — still worth doing" in soft amber (never angry red). Use it for the one real anchor, not everything.
quad (optional) sets a task's Eisenhower priority: iu (important & urgent → Do first),ins (important, not urgent → Schedule), niu (urgent, not important → Delegate), ninu (neither → Later). Renders as a colored accent; the person can change it on the board.
mantra / checkin (both optional, top-level) seed today's intention and the above/below-the-linearrival check-in. Set these from the conversation, or leave them for the person to set/tap.
suggestions), ➕ add-a-task live, drag-to-reorder (⠿ handle) + sort by priority, a 🧭 priority guide, editable labels per tile, a gentle overload nudge, an end-of-day save (download/copy a recap), Focus mode, "not today" carryover, the 🧠 brain-dump box, the reduced-motion toggle, and the live clock. Just set good tasks; the rest comes for free.
3. Serve + open it. localStorage needs an http:// origin, so serve the folder rather than opening the file path directly:
python -m http.server 8799 --bind 127.0.0.1 from the board's folder(or scripts/serve-board.ps1). Binding to 127.0.0.1 keeps a board of personal tasks off the local network. If Python isn't available, any static file server works — you just need an http:// origin.
it sits next to the chat). Otherwise open http://localhost:8799/focus-board.html in the default browser.
that some restrict localStorage on file://, so progress may not persist.
Once it's up, keep it current through conversation — this is the whole point:
("tap the pill on the design-doc card to mark it done"), or (b) regenerate the board only when the task list itself changes (add/rename tasks) — status and notes live in the browser (localStorage) and are set by tapping, not by config; a regenerate with the same dateKey preserves existing progress. Clicking is faster for live updates.
built from small logged wins, and the momentum feed becomes the story of their day.
a deadline), celebrate real completion, and protect against overload (too many cards = not a focus board).
The board's UI has EF/neurodivergent affordances, but the biggest help is how you, the partner, behave. This matters for everyone and is essential for people with ADHD or executive-function challenges. Bake these in — they're not optional politeness, they're the point:
body-doubling, a well-documented focus strategy. Stay present: check in, co-work, be the gentle other-in-the-room. Don't just set up the board and vanish.
say "just do it." Offer one tiny concrete first action ("open the doc and write the ugliest possible first sentence"). Starting is the wall; make the first step almost too small to refuse.
and offer Focus mode (dim the rest). A visible list of 8 is overwhelming; one is doable.
it in the momentum feed. Dopamine on starting is what carries people with ADHD through.
deciding not to do something is a valid, healthy choice, not a failure. Missing one task should never threaten the whole system (all-or-nothing spirals are how these tools get abandoned).
park it in the brain-dump box and keep going — don't chase it now.
and nudge the anchor task before its due — kindly, not as a threat.
up — help them carry things to tomorrow (⤳ not today). A focus board that's a backlog isn't a focus board.
(above / in-between / below the line — from Conscious Leadership). It's noticing without judgment; below-the-line just means "be gentler, shrink the first step." Never diagnose it.
fits the check-in (grounding when they're below the line, momentum when above). Keep it kind.
quadrants with them (Do first / Schedule / Delegate / Later) and offer "sort by priority" — the point is to make Schedule (important, not urgent) visible, not to cram more in.
they copy it, they can paste it to you to journal the day and set up tomorrow. Celebrate what got done; frame carryover as a healthy choice, not a miss.
Frame all of this as executive-function-friendly design for everyone — never diagnose, never assume someone is neurodivergent, and keep every affordance optional. See references/neurodivergent-design.md for the principles behind each feature.
it back directly. The end-of-day recap (download/copy) bridges this: when they paste the copied recap to you, you can journal and plan from it. For a fully automatic read/write loop, see references/customize.md (file-backed state, v2).
Copilot app). Everywhere else it's a normal browser tab — same board, less integrated.
references/tutorial.md — how to use the board in the GitHub Copilot app (browser canvas) ordirectly through Ember: the daily loop (check-in → mantra → plan → work → end-of-day save).
examples/sample-board.html — a populated example board: open it to see the board in action,or copy it as a starting point (it's this template with a sample config injected).
references/neurodivergent-design.md — the executive-function / ADHD design principles behindeach feature (task initiation, time blindness, working memory, overwhelm, reward, shame, capture, body-doubling), and the "make it optional, don't medicalize" stance.
references/customize.md — theming, the file-backed-state upgrade (agent can read/writeprogress), and the optional "shared signals" bridge for people who run a multi-agent workshop.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 124,263 | 8,248 | -93% | 1 | 1 | 0% | 8,887 | 3,418 | -62% | 0 | 0 | — |
case-02 | fail→fail | 61,906 | 14,090 | -77% | 1 | 1 | 0% | 5,785 | 3,486 | -40% | 0 | 0 | — |
case-03 | fail→fail | 5,824 | 6,498 | +12% | 1 | 1 | 0% | 302 | 3,324 | +1001% | 0 | 0 | — |
case-04 | pass→pass | 20,130 | 32,268 | +60% | 1 | 1 | 0% | 4,176 | 8,743 | +109% | 0 | 0 | — |
case-05 | pass→pass | 28,256 | 35,959 | +27% | 1 | 1 | 0% | 6,611 | 8,761 | +33% | 0 | 0 | — |
case-06 | fail→fail | 8,083 | 11,217 | +39% | 1 | 1 | 0% | 928 | 4,673 | +404% | 0 | 0 | — |
case-07 | fail→pass | 17,587 | 7,229 | -59% | 1 | 1 | 0% | 2,396 | 4,406 | +84% | 0 | 0 | — |
case-08 | pass→pass | 12,439 | 6,640 | -47% | 1 | 1 | 0% | 2,019 | 3,903 | +93% | 0 | 0 | — |
case-09 | fail→pass | 9,872 | 8,827 | -11% | 1 | 1 | 0% | 1,750 | 4,370 | +150% | 0 | 0 | — |
case-10 | fail→pass | 7,293 | 3,600 | -51% | 1 | 1 | 0% | 1,442 | 3,491 | +142% | 0 | 0 | — |
case-11 | fail→pass | 12,306 | 3,770 | -69% | 1 | 1 | 0% | 1,609 | 3,643 | +126% | 0 | 0 | — |
case-12 | fail→pass | 8,831 | 6,376 | -28% | 1 | 1 | 0% | 1,558 | 3,892 | +150% | 0 | 0 | — |
case-13 | fail→pass | 8,117 | 3,350 | -59% | 1 | 1 | 0% | 1,446 | 3,598 | +149% | 0 | 0 | — |
case-14 | fail→pass | 9,542 | 2,370 | -75% | 1 | 1 | 0% | 1,330 | 3,416 | +157% | 0 | 0 | — |
case-15 | fail→pass | 8,592 | 9,594 | +12% | 1 | 1 | 0% | 1,407 | 4,128 | +193% | 0 | 0 | — |
case-16 | pass→pass | 11,673 | 19,315 | +65% | 1 | 1 | 0% | 1,925 | 5,612 | +192% | 0 | 0 | — |
case-17 | fail→pass | 8,033 | 12,226 | +52% | 1 | 1 | 0% | 1,216 | 4,355 | +258% | 0 | 0 | — |
case-18 | fail→pass | 4,827 | 2,996 | -38% | 1 | 1 | 0% | 751 | 3,494 | +365% | 0 | 0 | — |
case-19 | fail→pass | 8,960 | 3,393 | -62% | 1 | 1 | 0% | 1,367 | 3,445 | +152% | 0 | 0 | — |
case-20 | fail→pass | 12,509 | 8,601 | -31% | 1 | 1 | 0% | 1,834 | 4,168 | +127% | 0 | 0 | — |
case-21 | fail→pass | 11,130 | 3,600 | -68% | 1 | 1 | 0% | 1,429 | 3,621 | +153% | 0 | 0 | — |
case-22 | pass→pass | 8,032 | 8,748 | +9% | 1 | 1 | 0% | 1,101 | 4,208 | +282% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.