How we work
Lightweight process for a solo maintainer: roadmap → tasks → code → changelog. Scope and decisions for the current chunk of work live in chat (or your own notes), not in a formal spec file.
Docs site mirror: Roadmap, Task board, Changelog.
Living files
| File | Role |
|---|---|
/ROADMAP.md | Milestones 0.2 → 1.0 — themes, scope, exit criteria. |
/TASKS.md | Concrete work (task-001, …) with status symbols. |
/CHANGELOG.md | What shipped. Keep Unreleased updated as you land work. |
/guide/, /api/, and /design/ are steady-state docs — they describe the SDK as it exists today.
Loop
- Pick the next task from Task board (or a milestone chunk from Roadmap).
- Align in chat — goal, in/out scope, and any open decisions. No
/ITERATION.mdfile required. - Implement on
main(one focus at a time). Prefer tests for public behaviour; keep diffs scoped to the task. - Document — any public API or behaviour change updates the matching
/guide/,/api/, or/design/page in the same change set. - Changelog — add a bullet under
CHANGELOG.md→ Unreleased (group by Added / Changed / Fixed / Tests as needed). - Task board — set the task to
[x]when done. - Release (when ready) — move Unreleased to
## [x.y.z], bumppackages/core/package.json, tag,pnpm --filter grist-widget-sdk publish.
Quality bar (before you call a task done)
bash
pnpm --filter grist-widget-sdk test
pnpm --filter grist-widget-sdk exec tsc --noEmit
pnpm --filter grist-widget-sdk build
pnpm --filter docs build # when docs changedAgent guide
Repo layout, commands, and anti-patterns: Start here.
Design rationale
Principles, replica format, open questions: /design/principles.