goal-progress-bar · git:20261024.21f0bb2 · 2026-10-24 · sha256 5b3db8fd41a5de1f

goal-progress-bar git:20261024.21f0bb2A

Immutable. This exact content never changes and is served at /api/v1/blob/5b3db8fd41a5de1f.

---
name: goal-progress-bar
description: Use to show weighted progress for a multi-step task and update it from recorded evidence.
---

# Goal progress bar

Use this skill for work with three or more steps that runs long enough for
someone to ask how close it is to done. Skip it for a quick answer or one-step
task.

Each task gets one tracker file. The script renders the current percentage,
bar, and row status at each checkpoint. Never type or adjust those values by
hand.

## Set up a tracker

1. Write `<goal>-progress.json` in your task folder. The file is a JSON list of
   `[name, weight, fraction]` rows.
2. Use one row for each deliverable or proof that moves the goal. Examples
   include code, review, release, live verification, and requester approval.
   Use names the requester understands.
3. Use weight `1` for a small row and `2` for a large or critical row. End with
   the rows that prove the work is complete in real use.
4. Add a fourth field to a row that cannot move:
   `[name, weight, fraction, "blocked"]`. Remove the field when work resumes.

## Render the tracker

Run the script from the task folder. Replace `<skill-root>` with the folder
that contains this `SKILL.md`:

```bash
python3 <skill-root>/scripts/progress.py <goal>-progress.json "<Goal name>"
```

Add `--chat` for emoji codes suited to chat systems that render common emoji
shortcodes:

```bash
python3 <skill-root>/scripts/progress.py <goal>-progress.json "<Goal name>" --chat
```

The chat bar uses green squares for complete work, one yellow square for
partial work, and white squares for the rest. Each row starts with a green,
yellow, white, or red status circle. Send the rendered text without a code
block if the destination converts emoji codes.

## Update at each checkpoint

A checkpoint is a finished step, such as a reviewed change, release, live
check, or answer from the requester.

- Back up the tracker before each edit, for example:
  `cp <goal>-progress.json <goal>-progress.json.bak-<date>-<time>`.
- Set a code row to `1.0` only when its defined work is complete.
- Set a proof row to `1.0` only with real evidence, such as a receipt, live
  read, or requester answer. Never round up to done before the proof exists.
- Add a row when the goal grows. Never delete a row to raise the percentage.

## Share the result

- Paste the full script output without changes. Never type a percentage or bar
  by hand.
- Share it when work starts, at meaningful checkpoints, and when work ends. Do
  not post it again when nothing changed.
- When the destination supports message editing, update the first progress
  message in place and post a new message only at large milestones.
- In an issue or ledger, place the current output between these markers:

```html
<!-- progress:start -->
<!-- progress:end -->
```

A finished task can replace the block with one dated 100% completion line. The
next task then owns the live progress block.