ai4kanban 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/skill/SKILL.md ADDED
@@ -0,0 +1,253 @@
1
+ ---
2
+ name: kanban
3
+ description: Use to propose new tasks, add a task, mark one done, or push a task one step forward. Manages the file-based task board in docs/kanban/ — blockers, roadmap tracks, archive, and global task ids. Triggers on "propose new tasks", "what's on the backlog", "add a task", "this is done", "refine", "resolve", "dive deeper".
4
+ argument-hint: "[propose | add <task> | refine <id> | resolve <id> | done <id> | reject <id>]"
5
+ ---
6
+
7
+ The task board lives in `docs/kanban/`. Read it before suggesting or adding work.
8
+
9
+ ## Configuration
10
+
11
+ **Read `docs/kanban/config.md` first** — it carries your project's settings: name, tracks,
12
+ planning sources, reference docs, optional preset. `kanban init` seeds it; install fills it
13
+ in; until then its defaults apply. It lives with your board, so an update leaves it
14
+ untouched — the skill folder (`SKILL.md`, `kanban.mjs`, `references/`) is upstream-owned and
15
+ overwritten wholesale (see "Updating the skill"). "Your tracks / planning sources / reference
16
+ docs" below mean this file.
17
+
18
+ If `docs/kanban/config.md` is missing but a filled `config.md` sits in this skill folder
19
+ (from an older install where the config lived there), move it to `docs/kanban/config.md`
20
+ once, then continue — the skill folder now ships only a blank template.
21
+
22
+ ## Writing style
23
+
24
+ Write every card in plain, clear, short language — say what to do and why it matters.
25
+ No jargon, no business-speak, no clever phrasing. A non-native reader skimming should
26
+ get it in one pass.
27
+
28
+ - Bad: "Price it as a monthly retainer for an outcome stream."
29
+ - Good: "Charge $300/month. The user gets a brief each week and a report each month."
30
+
31
+ ## Card format
32
+
33
+ A card is a minimal task spec, written for whoever implements the task, not whoever
34
+ plans it.
35
+
36
+ - **No meta notes**: say what problem the task solves and what changes for the user — never how
37
+ the board planned it. No notes on what a refine changed, no meta-todos like `- [x]
38
+ explore codebase and create the task #14`. A planning line was never build work — delete
39
+ it on sight, ticked or not.
40
+ - **No coding details**: write the card from a product owner's angle — the effect on the
41
+ user, not the implementation. Drop steps like `- add an npx tsc check after this
42
+ feature`; the coding agent handles them well. Keep a step only when it's a project
43
+ owner's concern, e.g. `- create 2 test cards, click the button, and check the flow
44
+ end to end`.
45
+ - **`## Todo` is the build plan**: one step of real work per box.
46
+ - **Ticked boxes are history**: they record what was built — never edit, delete, or
47
+ untick them; to undo earlier work, append a reverting todo.
48
+ - **`## Decided by the agent`**: a call the agent made on its own goes here, one short
49
+ line each — the question, then the answer. The plan (the summary line, `## Scope`,
50
+ `## Todo`) is the human's input; this section is what the agent complements, so anyone
51
+ can see what it decided and overrule it. What the **user** decided isn't an agent call
52
+ — that goes to `decisions.md` (see "The memory set").
53
+
54
+ ## Layout
55
+
56
+ ```
57
+ docs/kanban/
58
+ ├── todo/ open tasks
59
+ │ ├── README.md the index — read it first
60
+ │ ├── blockers/ hard blockers; they gate the next milestone — clear them first
61
+ │ ├── <track>/ one folder per track (see Configuration), one card per file
62
+ │ └── recurring/ jobs on a cadence (see "Recurring task") — never archived
63
+ ├── memory/ all memory — see "The memory set"
64
+ │ ├── readme.md, decisions.md, rejected.md, redesign.md
65
+ │ │ the four-file set for the project as a whole
66
+ │ ├── goal.md the long-term goal, horizon, and roadmap — this one file only,
67
+ │ │ never in a module folder
68
+ │ └── <module>/ a module's own copy of the four-file set
69
+ ├── modules.md one line per module — install writes it, propose reads it (see "The
70
+ │ module map")
71
+ ├── config.md your project's settings (see Configuration) — seeded by init, yours to fill
72
+ ├── next-id the next free task id — NEVER edit by hand; only the script writes it
73
+ └── metrics.csv one row per day: completed, created, rejected — script-kept; never touch
74
+ ```
75
+
76
+ ## The script
77
+
78
+ `kanban.mjs`, in this skill's folder, is the **only** sanctioned way to scaffold the board,
79
+ create, update, migrate, archive, or reject a task. It allocates ids, writes a card's
80
+ **frontmatter**, moves/removes task files, keeps the README index, and records the daily
81
+ metric.
82
+
83
+ Point `KB="node .claude/skills/kanban/kanban.mjs"`. Set it once and run every command from
84
+ the repo root as `${KB} <command>`:
85
+
86
+ ```
87
+ ${KB} init [track...] # scaffold docs/kanban/ (tracks default to feature bug research)
88
+ # re-run to repair an older board: adds missing config.md, modules.md, memory paths
89
+ ${KB} create [--count N] # allocate N ids (default 1), prints them
90
+ ${KB} create --title ".." --track <track> [--priority high|med|low] [--roi high|med|low] \
91
+ [--blocked-by 1,2] [--related 3] [--modules skill,site] [--question ".."] [--slug ..]
92
+ # scaffold ONE card: frontmatter + body template + README entry; then fill only the body
93
+ ${KB} update <id> [--priority ..] [--roi ..] [--track ..] [--slug ..] \
94
+ [--blocked-by ..] [--related ..] [--modules ..] [--question ..] \
95
+ [--drop-question 1,3] [--clear-questions]
96
+ # rewrite a card's frontmatter; --track moves it, --slug renames
97
+ ${KB} archive <id> # finish task <id>
98
+ ${KB} reject <id> # reject task <id>
99
+ ${KB} run <id> # record one run of recurring task <id> (card kept)
100
+ ${KB} peek # current next-id, no bump
101
+ ${KB} help # full usage
102
+ ```
103
+
104
+ **Never hand-write a card's frontmatter.** Use `create`/`update` for the meta
105
+ (title, track, priority, roi, blocked_by, related, modules, questions); use Write/Edit only
106
+ for the card **body**.
107
+
108
+ Tag a card with `--modules` (see `docs/kanban/modules.md`);
109
+ optional — a task can touch two modules or none. Add a new line to modules.md according to `module-map.md`
110
+ if you find no match.
111
+
112
+ ## Task id
113
+
114
+ Every task's id is the number at the front of its filename (`04-plan-cap-enforcement.md` →
115
+ id 4). Ids are global and never reused; only the script's `create` allocates them.
116
+
117
+ ## Propose new tasks
118
+
119
+ When the user asks to propose work, pick **one module** and propose **3 new tasks
120
+ inside it** — work nobody has planned yet. Full guide in `references/propose.md`.
121
+
122
+ ## Add a task
123
+
124
+ Add a task from an idea. Full guide in `references/add-task.md`.
125
+
126
+ ## Refine
127
+
128
+ Take one task and move it one step forward — from vague to concrete. A card with
129
+ unresolved `questions` in its frontmatter can't be refined — resolve them first. Full
130
+ guide in `references/refine.md`.
131
+
132
+ ## Resolve open questions
133
+
134
+ When a card carries open `questions`, resolving them is the only way to move it forward.
135
+ Full guide in `references/resolve.md`.
136
+
137
+ ## Auto-refine
138
+
139
+ Loop refining and clarifying a task until all questions answerable by agent itself are resolved.
140
+ Full guide in `references/auto-refine.md`.
141
+
142
+ ## Group task
143
+
144
+ A **group task** is a broad task whose split yields subtasks that
145
+ *themselves* need splitting — a dividable of a dividable. It lives in its own folder:
146
+
147
+ ```
148
+ todo/<id>-<short-slug>/
149
+ root.md # the tracking task
150
+ <track>/<subid>-<slug>.md # a subtask, its own card, under any track folder
151
+ ```
152
+
153
+ The root and each subtask take their own ids — allocate them together with
154
+ `${KB} create --count <N>`. Wire them up with the script's flags: each subtask is
155
+ **Related** to the root, and **Blocked by** between subtasks that must run in order.
156
+
157
+ ## Finish a task
158
+
159
+ One-shot tasks only — a recurring card is never finished this way. (See "## Recurring task").
160
+
161
+ Record user-facing behavior as one line in `readme.md` (see "The memory set").
162
+ Internal-only changes get no line. Write lines like these:
163
+
164
+ - ✅ (docs/kanban/memory/skill/readme.md) Updating an installed skill: `skill/references/update.md`.
165
+ Tip: Points at a published doc if available. Don't restate what the doc says.
166
+ - ✅ (docs/kanban/memory/site/readme.md) The landing page reads in Chinese, Spanish, Japanese, and French at `/zh`, `/es`, `/ja`, `/fr`.
167
+ Tip: No doc yet, so it says in plain words what the user can now do
168
+ - ❌ (docs/kanban/memory/site/readme.md) The landing site is live on Cloudflare Pages.
169
+ Tip: Nothing the user can see or do.
170
+
171
+ Then run `${KB} archive <id>` to record the completion.
172
+
173
+ ## Reject an idea
174
+
175
+ Rejecting is rare. When you (or the user) turn down an idea, add a short line to
176
+ `rejected.md` (see "The memory set") — under the topic that fits; start a new topic heading if none
177
+ fits. Format: `- **<idea name>** — <why we said no, one line>.`
178
+
179
+ Then run `${KB} reject <id>` to remove the card.
180
+
181
+ ## Record a redesign
182
+
183
+ When the user corrects a card that missed a requirement or got the design wrong, add a
184
+ short entry to `redesign.md` (see "The memory set") — under the topic that fits; start a new topic heading if
185
+ none fits. This is a reference for the next task, not a record of the fix — say what to do
186
+ right, not what went wrong. Format:
187
+ `- ❌ **<mistake>** → ✅ <what the design should be instead, one line>.`
188
+
189
+ ## The tracks
190
+
191
+ A track is the bucket a task lives in — one folder per track under `todo/`. Your tracks are listed in `docs/kanban/config.md` (Configuration), set during install.
192
+
193
+ ## Recurring task
194
+
195
+ A recurring task is a job we repeat on a cadence (e.g. a weekly report), not a
196
+ one-shot. Full guide in `references/recurring-task.md`.
197
+
198
+ ## Run the board locally
199
+
200
+ A small local UI server to drive the board from buttons instead of the terminal. Full guide in
201
+ `references/local-ui.md`.
202
+
203
+ ## Updating the skill and local UI
204
+
205
+ Pulling a newer version into an installed project: `references/update.md`.
206
+
207
+ ## The module map
208
+
209
+ `docs/kanban/modules.md` lists what parts the project is made of — one line per module.
210
+ To write or rebuild it, follow `references/module-map.md`.
211
+
212
+ ## The memory set
213
+
214
+ The project's memory is a **fixed set of four files**:
215
+
216
+ - **`readme.md`** — shipped user-facing work, one line each: a link to the published doc
217
+ that covers it, or a short plain-words note until one does (see "Finish a task").
218
+ - **`decisions.md`** — settled answers to cards' open questions, one line each. Only
219
+ **user-facing calls that help future planning**; code detail (which file, function,
220
+ flag) stays on the card.
221
+ - **`redesign.md`** — design mistakes to avoid.
222
+ - **`rejected.md`** — ideas we turned down, and why.
223
+
224
+ The set exists at two levels, both under `docs/kanban/memory/`:
225
+ `docs/kanban/memory/<module>/` for one module, `docs/kanban/memory/` itself for the
226
+ project as a whole. **Pick one copy by the card's `modules:` field and use only that
227
+ one** — the named module's (both, if it names two), else the project-wide one. Never write
228
+ a note to both: the project-wide copy is the whole project's memory, not a mirror of the
229
+ modules. A module's folder is scaffolded by `${KB} memory-init <module>` (idempotent) as
230
+ soon as the module is known — `init` does it for every module already on the map, the
231
+ update flow does it for the rest, and any flow about to write a note runs it first.
232
+
233
+ **`goal.md` sits outside the set, at the board root only** — the long-term goal, horizon,
234
+ and roadmap in the user's words; the agent never writes the goal, except a frontmatter line
235
+ `reviewed: strong | good | weak`.
236
+ This field says whether the goal is clear enough to plan from — `weak` only when apparent (missing, still the template, too vague to judge a proposal against).
237
+
238
+ ## Auto-pruning
239
+
240
+ To compress the memory set — the project-wide copy and each module copy — down to
241
+ planning-useful summaries, follow `references/prune-memory.md`.
242
+
243
+ ## Document a change
244
+
245
+ A card that ships something users can see carries todos to update the docs it touches, so
246
+ the change isn't hidden. Follow `references/document-feature.md` — it maps a change to the
247
+ surfaces in your reference docs that need updating. No such docs kept? This is a no-op.
248
+
249
+ ## Refs
250
+
251
+ - your roadmap doc (Configuration) — product direction.
252
+ - your user-facing docs (Configuration) — what you promise and teach users.
253
+ - `references/presets/` — optional bundles that add tracks and reviews for a specific kind of project (e.g. `indie-hacker.md`).
@@ -0,0 +1,32 @@
1
+ # Configuration
2
+
3
+ This file adapts ai4kanban to your project. `kanban init` seeds it here at
4
+ `docs/kanban/config.md`; the install step fills in the `{{PLACEHOLDERS}}` below from your
5
+ repo. Until they're filled, the default in each note applies.
6
+
7
+ `SKILL.md` reads these values — when it says "your tracks", "your planning sources", or
8
+ "your reference docs", it means what's set here.
9
+
10
+ **This file lives with your board, at `docs/kanban/config.md`, and carries your project's
11
+ settings — it's yours.** The skill folder (`SKILL.md`, `kanban.mjs`, `references/`) is
12
+ generic and owned by upstream, so an update overwrites it wholesale; this file is never
13
+ touched. See "Updating the skill" in `SKILL.md`.
14
+
15
+ - **Project** — {{PROJECT_NAME}}: {{PROJECT_GOAL}}
16
+ _(default: this repository; its goal is whatever the README states.)_
17
+ - **Tracks** — the buckets a task can live in, with a rough share of effort:
18
+ {{TRACKS}}
19
+ _(default: `feature` 60%, `bug` 25%, `research` 15%. A track is just a folder
20
+ under `docs/kanban/todo/`.)_
21
+ - **Planning sources** — what to read when proposing new work:
22
+ {{PLANNING_SOURCES}}
23
+ _(default: the codebase, `docs/`, and the board itself.)_
24
+ - **Reference docs** — optional files the skill reads when they exist. Leave blank
25
+ if you don't have them:
26
+ - roadmap / direction: {{ROADMAP_DOC}}
27
+ - user-facing docs the work should keep in sync: {{DOCS_DIR}}
28
+ - anything else worth scanning each loop: {{EXTRA_SOURCES}}
29
+ - **Preset** — an optional bundle of extra tracks and reviews for a specific kind of
30
+ project: {{PRESET}}
31
+ _(default: none. `references/presets/indie-hacker.md` adds growth / validation /
32
+ building tracks, market-validation, and a moat test for a solo product launch.)_