progresslisted
Install: claude install-skill marlexladag/progress-board
# Progress board
A board is one markdown file plus a dashboard that renders it. The markdown is
the source of truth and the thing you edit; the HTML is generated from it and
refreshes itself while the user watches.
## Where a board lives
`docs/progress/` inside the repo being worked on:
```
docs/progress/
PROGRESS.md source of truth — the only file you edit by hand
index.html the dashboard, never regenerated
progress.mjs parser + watch server, no dependencies
progress-data.js generated; gitignored
```
Before anything else, check whether the repo already has one:
`ls docs/progress/PROGRESS.md`. If it does, **never re-install** — just edit.
## Installing into a repo
One command, run from the repo root. The script sits in `assets/` beside this
file, so use whichever path this skill was installed under:
```bash
# installed as a plugin
node "${CLAUDE_PLUGIN_ROOT}/skills/progress/assets/progress.mjs" install docs/progress
# installed by hand into ~/.claude/skills/
node ~/.claude/skills/progress/assets/progress.mjs install docs/progress
```
After the first install the repo has its own `docs/progress/progress.mjs`, so
every later command uses that copy and the skill's path stops mattering.
It copies the viewer and this script in, writes the `.gitignore`, creates a
`PROGRESS.md` from the template if there is not one already, builds, and prints
how to open it. It never overwrites an existing board, so re-running it is
safe — that is also how yo