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/README.md +58 -0
- package/bin/ai4kanban.mjs +379 -0
- package/package.json +37 -0
- package/skill/SKILL.md +253 -0
- package/skill/config.md +32 -0
- package/skill/kanban.mjs +1670 -0
- package/skill/references/add-task.md +79 -0
- package/skill/references/auto-refine.md +32 -0
- package/skill/references/document-feature.md +31 -0
- package/skill/references/local-ui.md +34 -0
- package/skill/references/module-map.md +29 -0
- package/skill/references/presets/indie-hacker.md +24 -0
- package/skill/references/presets/validate-on-reddit.md +82 -0
- package/skill/references/propose.md +67 -0
- package/skill/references/prune-memory.md +29 -0
- package/skill/references/recurring-task.md +93 -0
- package/skill/references/refine.md +69 -0
- package/skill/references/resolve.md +56 -0
- package/skill/references/update.md +70 -0
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`).
|
package/skill/config.md
ADDED
|
@@ -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.)_
|