Skip to content
Productivity
Skill

/define-done

Generate a branded HTML accountability tracker for the next N days using the "Define Done" ritual. Takes 3 outcomes per day max (binary, shippable, no fluff), applies Walid's prompting principles for Claude Code, and outputs a self-contained HTML file ready to pin in a browser

From plugin
define-done
91 skill3 commands
Install
$ npx -y skills add walidboulanouar/define-done --skill define-done --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/define-done

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generate a branded HTML accountability tracker for the next N days using the "Define Done" ritual. Takes 3 outcomes per day max (binary, shippable, no fluff), applies Walid's prompting principles for Claude Code, and outputs a self-contained HTML file ready to pin in a browser

SKILL.md

define-done.SKILL.md
name: define-done
description: Generate a branded HTML accountability tracker for the next N days using the "Define Done" ritual. Takes 3 outcomes per day max (binary, shippable, no fluff), applies Walid's prompting principles for Claude Code, and outputs a self-contained HTML file ready to pin in a browser tab. Use when the user says "define done", "plan my next 3 days", "build my weekly outcomes", "set my goals for the week", "what should I ship this week", or any request to plan daily outcomes with accountability.

Define Done — Accountability HTML Generator

What this skill does

Takes N days of goals from the user, applies the "Define Done" ritual rules, and writes a single self-contained HTML file to `008_Builds/define-done/{YYYY-MM-DD}-define-done.html`.

The HTML is designed to live in a browser tab and be checked twice a day:

  • 8am: open it, do outcome 1
  • 5pm: tick the checkboxes, close laptop

The Define Done Ritual (rules baked into this skill)

1. **3 outcomes max per day.** Not 4. Not "and maybe also." 3. 2. **Outcomes, not tasks.** Binary. "Ship X to prod" / "Send Y to client" / "Publish Z post." Not "work on X." 3. **Written the night before, not the morning.** Morning-self is optimistic. Night-self is calibrated. 4. **5pm hard stop.** Did all 3 → win. Did fewer → roll. Did more → extras don't count. 5. **Weekly metric:** how many days hit 3/3, not total tasks shipped.

When to invoke

Triggers:

  • "define done"
  • "plan my next [N] days"
  • "set my outcomes for this week"
  • "what should I ship this week"
  • "build my weekly tracker"
  • "make me an accountability page"
  • "plan tomorrow" (default N=1)

Workflow

Step 1 — Gather inputs

Ask ONE question if missing: > *"What 3 outcomes per day for the next [N] days? Or want me to draft them from your active projects?"*

If the user says "draft them" → read `01_Projects/Clients/Active/INDEX.md`, `01_Projects/Internal/AY_Automate/AY_AUTOMATE_HQ.md`, and `02_Areas/Sales/Pipeline/` for current priorities. Propose 3 outcomes per day, ask for sign-off, then generate.

Step 2 — Apply the rules

Before writing the HTML, audit each outcome:

  • ✗ "Work on the proposal" → reject. Not binary.
  • ✓ "Send Acme proposal to Sarah" → accept.
  • ✗ "Make progress on AYn8n" → reject. Vague.
  • ✓ "Publish 5 workflows to AYn8n with screenshots" → accept.
  • ✗ "Review the codebase" → reject. No ship.
  • ✓ "Ship onboarding screen 1 to prod" → accept.

If any outcome fails, rewrite it before generating.

Step 3 — Generate the HTML

Use the template at `templates/tracker-template.html`. Replace these markers:

| Marker | What to inject | |---|---| | `{{TITLE}}` | e.g. "Week of Jun 10 — Define Done" | | `{{START_DATE}}` | First day, formatted "Mon · Jun 10" | | `{{END_DATE}}` | Last day, formatted "Sun · Jun 16" | | `{{TODAY_LABEL}}` | "Today is Tuesday, Jun 11" (or current day) | | `{{DAYS_HTML}}` | The repeated day blocks (see template) | | `{{NORTH_STAR}}` | One sentence: the weekly anchor (e.g. "ship 2 client builds, publish 3 posts") | | `{{RITUAL_NOTE}}` | Customizable footer note. Default: the 4-line ritual reminder. | | `{{BRAND_TAG}}` | From `${user_config.brand_name}`. Default: `DEFINE DONE` | | `{{SIGNATURE}}` | From `${user_config.signature}`. Default: `DEFINE DONE · MIT LICENSED` |

Applying user config (plugin mode)

When this skill runs inside the installed plugin, read these env-injected values from `${user_config.*}`:

  • `${user_config.brand_name}` → `{{BRAND_TAG}}`
  • `${user_config.accent_color}` → inject `<style>:root{--accent:VALUE}</style>` before `</head>`
  • `${user_config.background_color}` → inject `--bg` override the same way
  • `${user_config.hard_stop_time}` → use in stamps (e.g. `17:00 HARD STOP` instead of `5PM HARD STOP`)
  • `${user_config.outcomes_per_day}` → cap N per day; reject extras
  • `${user_config.signature}` → `{{SIGNATURE}}`

If `${user_config.*}` is not available (skill used outside plugin), fall back to template defaults.

For each day, emit a day block:

<div class="day">
  <div class="day-head">
    <div class="day-name">{{DAY_NAME}}</div>
    <div class="day-date">{{DAY_DATE}}</div>
  </div>
  <ol class="outcomes">
    <li><label><input type="checkbox"><span>{{OUTCOME_1}}</span></label></li>
    <li><label><input type="checkbox"><span>{{OUTCOME_2}}</span></label></li>
    <li><label><input type="checkbox"><span>{{OUTCOME_3}}</span></label></li>
  </ol>
  <div class="day-foot">
    <span class="stamp">5PM HARD STOP</span>
    <span class="score" data-day="{{DAY_INDEX}}">0/3</span>
  </div>
</div>

Step 4 — Save and verify

Save to: `008_Builds/define-done/{YYYY-MM-DD}-define-done.html` where `{YYYY-MM-DD}` = start date.

After writing, screenshot it with `vision-verify` to confirm it renders. Use viewport 1120x780 for the screenshot.

Step 5 — Deliver

Return:

  • File path of the HTML
  • File path of the screenshot
  • One-line summary: e.g. "Tracker for 5 days · 15 outcomes · file ready to pin in browser"
  • Optional: suggest setting macOS to open this file on browser startup

Prompting principles to embed (when drafting outcomes)

These come from the user's CLAUDE.md and from how Claude Code works best:

1. **Be concrete, name the artifact.** "Send X" beats "work on X." Same logic as Claude Code: name the file, not the topic. 2. **One sentence per outcome, present tense, verb-first.** Mirrors the prompt-engineering rule: short, declarative, no preamble. 3. **No "and."** If you write "and" inside an outcome, split it or kill one half. (Like Claude Code: one tool call per intent.) 4. **No dependencies inside one day.** Outcome 2 cannot depend on outcome 1 shipping. Otherwise day = brittle. 5. **Use the user's voice:** lowercase, direct, no hedge words. Match CLAUDE.md. 6. **Bias to "ship to someone."** Internal "review" = no ship. External "send / publish / merge / deploy" = ship.

Output location

008_Builds/define-done/
  2026-06-10-define-done.html     ← N-
Read more
Ships withdefine-done

AI removed the ceiling on output. You need to build the ceiling on expectation. A Claude Code plugin that fixes the "AI made me feel behind" problem. 3 binary outcomes per day. Hard stop at 5pm. Track 3/3 days, not tasks.

Get the whole plugin
Stats
9
Stars
0
Forks
Maintained
Maintenance
HTML
Language
MIT
License
3mo ago
Last commit
3mo ago
Created

Repo: walidboulanouar/define-done