ai4kanban 0.7.0 → 0.7.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 +43 -2
- package/bin/ai4kanban.mjs +18 -4
- package/dist/kanban.mjs +7561 -5704
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ akb skill install # add it, or bring an older copy up to date
|
|
|
65
65
|
That writes one file into `.claude/skills/kanban/` (Claude Code) and
|
|
66
66
|
`.agents/skills/kanban/` (Codex): `SKILL.md`, a short note telling a coding agent the board
|
|
67
67
|
is here and that `akb` owns it. The board app does the same thing from a button:
|
|
68
|
-
**Configuration →
|
|
68
|
+
**Configuration → Setup**.
|
|
69
69
|
|
|
70
70
|
Nothing else is copied in. The flows ship inside the command (`akb guide`), so a newer
|
|
71
71
|
command is newer flows in every project at once — and the command itself stays where npm put
|
|
@@ -134,7 +134,7 @@ akb stop 3f2a1b04 # end one
|
|
|
134
134
|
akb resume 3f2a1b04 # continue one that failed
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
-
Which agent runs them — Claude Code, Codex, Cursor, OpenCode
|
|
137
|
+
Which agent runs them — Claude Code, Codex, Cursor, OpenCode, DeepSeek Harness or ZCode — and
|
|
138
138
|
what it is set to:
|
|
139
139
|
|
|
140
140
|
```bash
|
|
@@ -153,6 +153,47 @@ An API key is the one thing to leave to the user. Hand them the line rather than
|
|
|
153
153
|
for them: a key an agent types lands in its transcript and in the shell history, and a
|
|
154
154
|
saved key is never read back.
|
|
155
155
|
|
|
156
|
+
## Talk to it about the board
|
|
157
|
+
|
|
158
|
+
Sometimes the answer is a conversation, not a job. `akb chat` opens one about the whole
|
|
159
|
+
board; `akb chat <id>` opens one about that card. It answers, and it does the board work
|
|
160
|
+
you settle on in it.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
akb chat "what should I build next, and why?"
|
|
164
|
+
akb chat 12 "what is still unclear about this card?"
|
|
165
|
+
akb chat 12 "put this in v1 and drop the last todo" # it makes the change
|
|
166
|
+
akb chat "start a build on 12" # it starts the run
|
|
167
|
+
akb chat 12 # the conversation so far
|
|
168
|
+
akb chat 12 --clear # forget it and start fresh
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Before opening a fresh conversation, `akb chat` ensures this repo has the kanban skill. The
|
|
172
|
+
first prompt is only the skill invocation and your message: `/kanban …` for Claude Code,
|
|
173
|
+
`$kanban …` for Codex, and `Use the kanban skill: …` for an agent without direct skill-call
|
|
174
|
+
syntax. There is no second chat flow or copied board snapshot; the skill reads the current
|
|
175
|
+
board when it needs it.
|
|
176
|
+
|
|
177
|
+
The reply arrives as it is written, and the next message lands in the same session — the
|
|
178
|
+
agent still has everything said before, so you can ask a follow-up without explaining your
|
|
179
|
+
project again. Every message is its own command, so the conversation is picked up from any
|
|
180
|
+
terminal and survives closing one. The board's conversation and each card's are separate,
|
|
181
|
+
and both live under `docs/kanban/.chats/`, on your machine and out of git.
|
|
182
|
+
|
|
183
|
+
From there, chat behaves exactly like using the kanban skill in your coding agent. The skill
|
|
184
|
+
prints the board-specific flow and does the work in the conversation by default; ask for a
|
|
185
|
+
background run when you want another agent to take it independently. If you explicitly say
|
|
186
|
+
which way, that wins.
|
|
187
|
+
|
|
188
|
+
A change to a card a run is already working on is refused, and the refusal names the card
|
|
189
|
+
and what that run is doing — the same rule that keeps two runs off one card.
|
|
190
|
+
|
|
191
|
+
A chat is still not a run: it never shows in `akb runs`, never holds a card, and never keeps
|
|
192
|
+
a run off the card it is about.
|
|
193
|
+
|
|
194
|
+
Only an agent whose command can take a second message into its own session can hold a
|
|
195
|
+
conversation. On any other one, chat says so and names the agents that can.
|
|
196
|
+
|
|
156
197
|
## The manual
|
|
157
198
|
|
|
158
199
|
`akb help runs` is what a coding agent reads: every command it may call — the card work,
|
package/bin/ai4kanban.mjs
CHANGED
|
@@ -68,12 +68,23 @@ const PROGRAM = (() => {
|
|
|
68
68
|
if (/[\\/](_npx|dlx)[\\/]/.test(entry)) return `npx --yes ${NAME}@${VERSION}`
|
|
69
69
|
const base = path.basename(entry).toLowerCase().replace(/\.(cmd|ps1|exe)$/, '')
|
|
70
70
|
if (base === 'akb' || base === NAME) return 'akb'
|
|
71
|
-
|
|
72
|
-
// `node cli/bin/ai4kanban.mjs`, which reads inside a sentence; an absolute path doesn't.
|
|
73
|
-
const near = path.relative(process.cwd(), entry)
|
|
74
|
-
return `node ${near && !near.startsWith('..') ? near : entry}`
|
|
71
|
+
return `node ${nearPath(entry)}`
|
|
75
72
|
})()
|
|
76
73
|
|
|
74
|
+
// How a path is spelled in something a person is meant to paste back.
|
|
75
|
+
//
|
|
76
|
+
// Relative when it is a short hop down from where the command was typed — a checkout says
|
|
77
|
+
// `node cli/bin/ai4kanban.mjs`, which reads inside a sentence and is what the project's own
|
|
78
|
+
// notes spell. Absolute otherwise, and absolute is the safe answer: run from `/`, a
|
|
79
|
+
// relative path is the whole absolute one with its leading slash quietly removed
|
|
80
|
+
// (`node Users/me/…/ai4kanban.mjs`), which runs from that one folder and nowhere else and
|
|
81
|
+
// reads to everyone else like a typo.
|
|
82
|
+
function nearPath(file) {
|
|
83
|
+
const near = path.relative(process.cwd(), file)
|
|
84
|
+
const shortHop = near && !near.startsWith('..') && !path.isAbsolute(near) && near.split(/[\\/]/).length <= 3
|
|
85
|
+
return shortHop ? near : file
|
|
86
|
+
}
|
|
87
|
+
|
|
77
88
|
// One line, when this copy isn't `akb`, for the text that spells it `akb` throughout — the
|
|
78
89
|
// help, and the flows a `--print` hands over. Cheaper than rewriting either, and it holds
|
|
79
90
|
// for the lines inside them that this command never wrote.
|
|
@@ -630,6 +641,9 @@ const RUN_COMMANDS = new Set([
|
|
|
630
641
|
// Put a spec agent on a card — a named agent that fills one part of its spec (#187).
|
|
631
642
|
'spec',
|
|
632
643
|
'runs',
|
|
644
|
+
// Talking to the agent about the board, or about one card (#240). Not a run: it holds a
|
|
645
|
+
// conversation here, in this process, and starts nothing.
|
|
646
|
+
'chat',
|
|
633
647
|
'log',
|
|
634
648
|
'stop',
|
|
635
649
|
'resume',
|