@kanon-pm/setup 0.4.0 → 0.5.0

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.
@@ -3,13 +3,27 @@ name: kanon-orchestrator-hooks
3
3
  description: Kanon-specific hooks for the SDD orchestrator — ROADMAP injection into sub-agent prompts and post-phase deferred_items processing
4
4
  version: 1.0.0
5
5
  tags: [kanon, sdd, orchestrator, roadmap]
6
+ allowed-tools:
7
+ - kanon_*
8
+ - mem_save
9
+ - mem_search
10
+ - mem_get_observation
6
11
  ---
7
12
 
8
13
  # Kanon Orchestrator Hooks
9
14
 
10
15
  This skill is loaded by the orchestrator when launching SDD phases or processing phase results in the kanon project. It provides kanon-specific behavior that extends the generic SDD workflow.
11
16
 
12
- ## Hook 1: ROADMAP Injection for Sub-Agent Launches
17
+ ## Hook 1: SessionStart Project Detection
18
+
19
+ When a session starts in a kanon-managed project:
20
+
21
+ 1. Infer project from `cwd` basename, resolve via `kanon_list_projects`.
22
+ 2. Call `kanon_list_issues(projectKey, state: "apply")` to find active work.
23
+ 3. If active issues exist, show the user: "Active issues: KAN-42 [Auth] Fix OAuth redirect (apply)".
24
+ 4. Cache the `projectKey` for the session.
25
+
26
+ ## Hook 2: ROADMAP Injection for Sub-Agent Launches
13
27
 
14
28
  When launching phases `sdd-explore`, `sdd-propose`, `sdd-design`, or `sdd-spec`, include this block in the sub-agent prompt:
15
29
 
@@ -19,25 +33,26 @@ ROADMAP: When you identify out-of-scope or deferred work, list it in your return
19
33
  The orchestrator handles roadmap capture — do NOT create roadmap items yourself.
20
34
  ```
21
35
 
22
- ## Hook 2: Post-Phase Roadmap Processing
36
+ ## Hook 3: Post-Phase Roadmap Processing
23
37
 
24
38
  After receiving results from `sdd-explore`, `sdd-propose`, `sdd-design`, or `sdd-spec`:
25
39
 
26
40
  1. Check if `deferred_items` is present and non-empty in the return envelope.
27
41
  2. If yes, present to user: "This phase identified {N} items as out of scope. Add any to the roadmap?"
28
- 3. For each confirmed item: load `kanon-roadmap` skill and follow Trigger 2 procedure (duplicate check via `kanon_list_roadmap`, create via `kanon_create_roadmap_item`, save to engram).
29
- 4. If `kanon-roadmap` skill is not loaded, load it from `.claude/skills/kanon-roadmap/SKILL.md`.
42
+ 3. For each confirmed item: check duplicates via `kanon_list_roadmap`, create via `kanon_create_roadmap_item`, save to engram.
30
43
 
31
- ## Hook 3: Roadmap Capture During Conversation
44
+ ## Hook 4: Roadmap Capture During Conversation
32
45
 
33
46
  Detect these signals during any conversation in the kanon project:
34
47
  - "We should eventually...", "down the road", "someday", "not now but later"
35
48
  - User describes friction, workarounds, or missing features they defer
36
- - Out-of-scope items identified during any analysis
37
49
 
38
- Action:
39
- 1. Acknowledge: "That sounds like a roadmap item for kanon."
40
- 2. Confirm: "Want me to add it?"
41
- 3. If yes: load `kanon-roadmap` skill for full capture behavior.
50
+ Action: Acknowledge -> confirm -> create roadmap item if user agrees.
51
+
52
+ ## Hook 5: PreCompact Save Session State
53
+
54
+ Before context compaction, save the current work session state:
42
55
 
43
- Do NOT create roadmap items without user confirmation.
56
+ 1. For each active issue (from SessionStart cache), call `kanon_update_issue` to append current progress to the description.
57
+ 2. Call `mem_session_summary` to persist session context to engram.
58
+ 3. This ensures no work-in-progress context is lost during compaction.
@@ -3,6 +3,11 @@ name: kanon-roadmap
3
3
  description: Proactive roadmap capture — recognize future work during conversations and SDD workflows, create and enrich roadmap items automatically
4
4
  version: 2.0.0
5
5
  tags: [kanon, roadmap, planning, proactive-capture]
6
+ allowed-tools:
7
+ - kanon_*
8
+ - mem_save
9
+ - mem_search
10
+ - mem_get_observation
6
11
  ---
7
12
 
8
13
  # Kanon Roadmap — Proactive Capture Guide
@@ -15,10 +20,10 @@ Kanon's roadmap is where **future work lives before it becomes actionable**. Roa
15
20
 
16
21
  | Layer | Purpose | Audience |
17
22
  |-------|---------|----------|
18
- | **Roadmap items** | Track future work that is not yet actionable | Humans (developers, leads, stakeholders) |
23
+ | **Roadmap items** | Track future work that is not yet actionable | Humans |
19
24
  | **Issues** | Track actionable work currently in progress or ready to start | Humans |
20
- | **Engram** | Store technical memory, SDD artifacts, decisions | Agents across sessions |
21
- | **The agent** | Bridge all three — capture future work to roadmap, promote to issues when ready, link to engram for technical depth | Both |
25
+ | **Engram** | Store technical memory, SDD artifacts, decisions | Agents |
26
+ | **The agent** | Bridge all three — capture future work to roadmap, promote to issues when ready | Both |
22
27
 
23
28
  **Roadmap is not a backlog.** It is a planning tool organized by time horizons. Items move from vague ideas (someday) toward concrete plans (now), and when ready, get promoted to actionable issues.
24
29
 
@@ -26,111 +31,72 @@ Kanon's roadmap is where **future work lives before it becomes actionable**. Roa
26
31
 
27
32
  ## Project Resolution (mandatory)
28
33
 
29
- The user should never need to know or type a project key (e.g. `"MCLAW"`). The agent infers the project and resolves the key internally.
34
+ The user should never need to know or type a project key. The agent infers it internally.
30
35
 
31
- ### How to resolve the project
36
+ 1. Infer the project name from `cwd` basename (e.g., `/home/user/workspace/micro-claw` -> `micro-claw`).
37
+ 2. Resolve the project key via `kanon_list_projects(workspaceId)` — match name case-insensitively.
38
+ 3. If no match: tell the user and suggest `/kanon-init`.
39
+ 4. If multiple matches: present options and let the user choose.
40
+ 5. Cache the resolved `projectKey` for the session.
32
41
 
33
- 1. **Infer the project name from the current working directory.** Use the basename of `cwd` (e.g. `/home/user/workspace/micro-claw` `micro-claw`). The user is always inside the project directory when they run roadmap commands.
34
- 2. **Resolve the project key** by calling `kanon_list_projects(workspaceId)` and matching the inferred name against the `name` field of returned projects (case-insensitive, normalize hyphens/underscores/spaces). If there is exactly one match, use its `key` as the `projectKey` for all subsequent tool calls.
35
- 3. **If no match is found**: Tell the user — "I couldn't find a Kanon project matching '{inferred-name}'. You can create one with `/kanon-init` or tell me the project name to use."
36
- 4. **If multiple matches are found**: Present the options using human-readable names and let the user choose.
37
- 5. **Cache the resolved `projectKey`** for the rest of the session. Do not re-resolve on every call.
38
-
39
- ### User-facing communication
40
-
41
- - Always refer to the project by its human-readable name (e.g. "micro-claw"), never by its key (e.g. "MCLAW").
42
- - The project key is an internal implementation detail passed to tool calls only.
43
- - In examples below, `projectKey` parameters show placeholder values like `"PROJ"` — the agent resolves the real key at runtime using the steps above.
44
-
45
- ---
46
-
47
- ## Available Tools
48
-
49
- ### Roadmap Management
50
-
51
- | Tool | Purpose | Key Parameters |
52
- |------|---------|----------------|
53
- | `kanon_list_roadmap(projectKey, ...)` | List roadmap items with optional filters | `projectKey` (required); filters: `horizon`, `status`, `label` |
54
- | `kanon_create_roadmap_item(projectKey, title, ...)` | Create a new roadmap item | `projectKey`, `title` (required); optional: `description`, `horizon`, `status`, `effort`, `impact`, `labels`, `targetDate` |
55
- | `kanon_update_roadmap_item(projectKey, itemId, ...)` | Update a roadmap item | `projectKey`, `itemId` (required); optional: `title`, `description`, `horizon`, `status`, `effort`, `impact`, `labels`, `targetDate`, `sortOrder` |
56
- | `kanon_delete_roadmap_item(projectKey, itemId)` | Permanently delete a roadmap item | `projectKey`, `itemId` (required) |
57
- | `kanon_promote_roadmap_item(projectKey, itemId, ...)` | Promote a roadmap item to an actionable issue | `projectKey`, `itemId` (required); optional: `title`, `type`, `priority`, `labels`, `groupKey` |
58
-
59
- ### Dependency Management
60
-
61
- | Tool | Purpose | Key Parameters |
62
- |------|---------|----------------|
63
- | `kanon_add_dependency(projectKey, sourceItemId, targetItemId, ...)` | Add a blocks relationship between two roadmap items | `projectKey`, `sourceItemId`, `targetItemId` (required); optional: `type` (only `"blocks"` supported) |
64
- | `kanon_remove_dependency(projectKey, sourceItemId, dependencyId)` | Remove a dependency | `projectKey`, `sourceItemId`, `dependencyId` (required — the dependency's own UUID, not the target item's ID) |
65
-
66
- **Parameter note**: All tools that reference a roadmap item use `itemId` (UUID), NOT `id`. This is the exact parameter name the MCP tools expect.
42
+ Always refer to the project by its human-readable name, never by its key.
67
43
 
68
44
  ---
69
45
 
70
46
  ## Horizons
71
47
 
72
- Horizon answers **when** — where this item sits in the planning timeline.
73
-
74
48
  | Horizon | Meaning | Typical items |
75
49
  |---------|---------|---------------|
76
- | **now** | Ready to promote — team could start this soon | Well-understood items with clear scope |
77
- | **next** | Planned for the near future — needs a bit more definition | Items with known value but some open questions |
78
- | **later** | Valuable but not urgent — will revisit when priorities shift | Good ideas that need time to mature |
79
- | **someday** | Ideas, wishes, long-term dreams — no commitment | Brainstorms, exploratory concepts, "wouldn't it be nice" |
50
+ | **now** | Ready to promote — team could start soon | Well-understood, clear scope |
51
+ | **next** | Planned for near future — needs more definition | Known value, some open questions |
52
+ | **later** | Valuable but not urgent — will revisit | Good ideas that need time to mature |
53
+ | **someday** | Ideas, wishes, long-term dreams | Brainstorms, speculative concepts |
80
54
 
81
- **Default horizon**: `later` — the API default. Use `someday` for truly vague or speculative ideas. Items naturally move left as they gain clarity and urgency.
55
+ **Default horizon**: `later`. Items naturally move left as they gain clarity and urgency.
82
56
 
83
57
  ---
84
58
 
85
59
  ## Status
86
60
 
87
- Status answers **what state** the item is in — independent of horizon.
88
-
89
61
  | Status | Meaning |
90
62
  |--------|---------|
91
63
  | **idea** | Default. Not yet evaluated or committed to |
92
- | **planned** | Committed to — decision made to do this work, but not started |
93
- | **in_progress** | Actively being worked on (usually means it has been promoted or is underway) |
64
+ | **planned** | Committed to — decision made, but not started |
65
+ | **in_progress** | Actively being worked on |
94
66
  | **done** | Completed — kept for historical reference |
95
67
 
96
- **Horizon vs Status**: Horizon = when (timeline placement). Status = what state (lifecycle). An item can be `horizon: now, status: planned` (ready timeline, decision made but not started) or `horizon: later, status: idea` (future, still exploratory).
68
+ **Horizon vs Status**: Horizon = when (timeline). Status = what state (lifecycle). An item can be `horizon: now, status: planned`.
97
69
 
98
70
  ---
99
71
 
100
72
  ## Effort and Impact Scoring
101
73
 
102
- Both use a 1-5 integer scale. These are optional but help prioritize.
74
+ Both use a 1-5 integer scale. Optional but help prioritize.
103
75
 
104
- | Score | Effort (how much work) | Impact (how much value) |
105
- |-------|----------------------|------------------------|
76
+ | Score | Effort | Impact |
77
+ |-------|--------|--------|
106
78
  | 1 | Trivial — an hour or less | Marginal improvement |
107
79
  | 2 | Small — a day or less | Nice to have |
108
80
  | 3 | Medium — a few days | Meaningful improvement |
109
81
  | 4 | Large — a week or more | Significant value |
110
- | 5 | Massive — multi-week effort | Transformative |
82
+ | 5 | Massive — multi-week | Transformative |
111
83
 
112
- **High impact + low effort** items are strong candidates for moving to `now` or `next`.
113
-
114
- ---
115
-
116
- ## Target Date
117
-
118
- Use `targetDate` (ISO 8601, e.g. `"2026-06-01"`) when an item has a known external deadline or milestone dependency. This is optional and distinct from horizon — a `later` item can still have a target date (e.g., "before Q3 review").
84
+ **High impact + low effort** items are strong candidates for `now` or `next`.
119
85
 
120
86
  ---
121
87
 
122
88
  ## Roadmap Item vs Issue — When to Use Which
123
89
 
124
- | Signal | Create a... | Why |
125
- |--------|-------------|-----|
126
- | "We should do X someday" | **Roadmap item** | Future work, not ready to act on |
127
- | "This would be nice to have eventually" | **Roadmap item** | Idea worth capturing, no urgency |
128
- | SDD explore/propose identifies out-of-scope work | **Roadmap item** | Related future work surfaced during planning |
129
- | "Let's fix this now" / "This is blocking" | **Issue** | Actionable work, ready to start |
130
- | Bug found during implementation | **Issue** | Needs attention, has concrete reproduction steps |
131
- | Roadmap item reaches `now` and team is ready | **Promote** the roadmap item | Graduates from planning to execution |
90
+ | Signal | Create a... |
91
+ |--------|-------------|
92
+ | "We should do X someday" | **Roadmap item** |
93
+ | "This would be nice eventually" | **Roadmap item** |
94
+ | SDD explore/propose identifies out-of-scope work | **Roadmap item** |
95
+ | "Let's fix this now" / "This is blocking" | **Issue** |
96
+ | Bug found during implementation | **Issue** |
97
+ | Roadmap item reaches `now` and team is ready | **Promote** the roadmap item |
132
98
 
133
- **Rule of thumb**: If someone could start working on it tomorrow with a clear understanding of what to do, it is an issue. If it needs more thought, scoping, or is explicitly deferred, it is a roadmap item.
99
+ **Rule of thumb**: If someone could start working on it tomorrow with clear scope, it is an issue. If it needs more thought or is deferred, it is a roadmap item.
134
100
 
135
101
  ---
136
102
 
@@ -140,278 +106,77 @@ These are situations where the agent MUST consider creating or updating a roadma
140
106
 
141
107
  ### Trigger 1: Problem Capture During Conversations
142
108
 
143
- **When**: The user discusses a problem, limitation, or improvement opportunity that is not being addressed right now.
144
-
145
- **Detection signals**:
146
- - "We should eventually..."
147
- - "It would be nice if..."
148
- - "That's a problem but not urgent"
149
- - "Let's deal with that later"
150
- - "Down the road we could..."
151
- - User describes friction, workarounds, or manual processes
152
- - User mentions a feature they wish existed
153
-
154
- **Action**:
155
- 1. Acknowledge the idea: "That sounds like a good candidate for the roadmap."
156
- 2. Ask for confirmation: "Want me to add it as a roadmap item?"
157
- 3. If yes, create with appropriate horizon:
158
- - User says "not urgent" / "eventually" / "someday" -> `someday` or `later`
159
- - User says "soon" / "next sprint" / "after this" -> `next`
160
- - User says "ready to go" / "we should start soon" -> `now`
161
- 4. Use a clear, human-readable title (same `[Area] Description` pattern as issues).
162
-
163
- **Example**:
164
- ```
165
- User (cwd: /home/user/workspace/micro-claw):
166
- "The API doesn't have rate limiting. It hasn't been a problem yet but we should add it before we go public."
167
-
168
- Agent (internally resolves micro-claw -> projectKey "MCLAW" via kanon_list_projects):
169
- "That sounds like a good roadmap item for micro-claw — rate limiting before public launch. Want me to add it?"
170
-
171
- User: "Yeah, go ahead."
172
-
173
- -> kanon_create_roadmap_item(
174
- projectKey: "MCLAW", // resolved internally, never shown to user
175
- title: "[API] Add rate limiting for public endpoints",
176
- description: "No rate limiting currently. Need to add before public launch to prevent abuse. Consider per-endpoint limits and API key tiers.",
177
- horizon: "next",
178
- impact: 4,
179
- labels: ["api", "security"]
180
- )
181
- ```
109
+ **When**: The user discusses a problem or improvement opportunity not being addressed now.
182
110
 
183
- After creating, save the item ID to engram for cross-session lookup:
184
- ```
185
- mem_save(
186
- title: "Roadmap item: [API] Add rate limiting",
187
- type: "discovery",
188
- topic_key: "kanon/roadmap/api-rate-limiting",
189
- content: "itemId: {returned-uuid}\nTitle: [API] Add rate limiting for public endpoints\nHorizon: next"
190
- )
191
- ```
111
+ **Signals**: "We should eventually...", "It would be nice if...", "Let's deal with that later", "Down the road we could...", user describes friction or workarounds.
112
+
113
+ **Action**: Acknowledge -> confirm -> create with appropriate horizon. Save item ID to engram with `topic_key: kanon/roadmap/{item-slug}`.
192
114
 
193
115
  ### Trigger 2: SDD Exploration and Proposal Capture
194
116
 
195
- **When**: During SDD workflows (explore, propose), the orchestrator identifies features, improvements, or related work that is explicitly marked as "out of scope", "future work", "deferred", or "not included in this change".
196
-
197
- **This is the orchestrator's responsibility** — not the sub-agent's. The orchestrator reviews deferred items after `sdd-explore` and `sdd-propose` phases complete, then handles roadmap capture directly.
198
-
199
- **Detection signals**:
200
- - Proposal says "out of scope: X, Y, Z"
201
- - Exploration surfaces related problems not covered by the current change
202
- - Design document mentions "future enhancement"
203
- - Spec excludes scenarios with "deferred to future work"
204
-
205
- **Action**:
206
- 1. After the SDD phase returns, extract the list of deferred/out-of-scope items from the executive summary.
207
- 2. Present the list to the user: "The proposal identified these items as out of scope. Want me to add any to the roadmap?"
208
- 3. For each confirmed item:
209
- - Check for duplicates first: `kanon_list_roadmap(projectKey, ...)` with relevant filters.
210
- - If no existing item, create one:
211
- - Horizon: `later` (known value, intentionally deferred) or `someday` (vague, needs more thought)
212
- - Status: `idea` (not yet committed)
213
- - Description: Reference the SDD change name that surfaced it
214
- - Labels: Include the SDD change area for traceability
215
- - If an existing item covers this, update it with the new context.
216
- 4. Save each created item's ID to engram (see Trigger 1 pattern above).
217
-
218
- **Injection block for sub-agents** — include this in SDD phase prompts so sub-agents surface deferred items clearly:
219
- ```
220
- ROADMAP: When you identify out-of-scope or deferred work in your output, list it explicitly
221
- under a "Deferred Items" heading in your executive_summary. Include: item title, why it was
222
- deferred, and suggested horizon (later/someday). The orchestrator will handle roadmap capture.
223
- ```
117
+ **When**: During SDD workflows, the orchestrator identifies deferred or out-of-scope items.
118
+
119
+ **This is the orchestrator's responsibility** — not the sub-agent's. The orchestrator reviews deferred items after phases complete.
224
120
 
225
- **Example**:
121
+ **Action**: Extract deferred items from the executive summary, present to user, create confirmed items with horizon `later` (intentionally deferred) or `someday` (vague). Reference the SDD change name in the description.
122
+
123
+ **Injection block for sub-agents**:
226
124
  ```
227
- SDD proposal for "auth-redesign" returns with deferred items:
228
- "Out of scope: SSO integration, API key management, audit logging"
229
-
230
- Orchestrator presents to user:
231
- "The auth-redesign proposal deferred 3 items. Add any to roadmap?
232
- 1. SSO integration for enterprise users
233
- 2. API key management
234
- 3. Audit logging"
235
-
236
- User: "Add 1 and 3."
237
-
238
- -> kanon_create_roadmap_item(
239
- projectKey: "{resolved-key}", // resolved internally from cwd project name
240
- title: "[Auth] SSO integration for enterprise users",
241
- description: "Identified during auth-redesign (sdd/auth-redesign/proposal). Deferred from current scope. Would need SAML/OIDC provider support.",
242
- horizon: "later",
243
- impact: 4,
244
- effort: 4,
245
- labels: ["auth", "enterprise"]
246
- )
247
-
248
- -> kanon_create_roadmap_item(
249
- projectKey: "{resolved-key}", // resolved internally from cwd project name
250
- title: "[Auth] Audit logging for auth events",
251
- description: "Identified during auth-redesign (sdd/auth-redesign/proposal). Deferred from current scope.",
252
- horizon: "later",
253
- impact: 3,
254
- effort: 2,
255
- labels: ["auth", "security"]
256
- )
125
+ ROADMAP: When you identify out-of-scope or deferred work, list it under "Deferred Items"
126
+ in your executive_summary. Include: title, reason deferred, suggested horizon (later/someday).
127
+ The orchestrator handles roadmap capture — do NOT create roadmap items yourself.
257
128
  ```
258
129
 
259
130
  ### Trigger 3: Progressive Enrichment
260
131
 
261
132
  **When**: The agent learns new information about an existing roadmap item across sessions or during related work.
262
133
 
263
- **Detection signals**:
264
- - Working on something related to an existing roadmap item
265
- - User mentions updated priorities or timelines
266
- - New technical context changes the effort/impact estimate
267
- - A dependency is resolved that unblocks a roadmap item
268
- - User says "actually that X thing is more urgent now"
269
-
270
- **Action**:
271
- 1. Search for the existing item — first check engram (`mem_search` with `kanon/roadmap/{slug}`), then fall back to `kanon_list_roadmap(projectKey, ...)`.
272
- 2. Update the relevant fields:
273
- - New context learned -> update `description` (append, do not overwrite)
274
- - Priority changed -> update `horizon` (e.g., `later` -> `next`) and/or `status`
275
- - Better understanding of scope -> update `effort` and/or `impact`
276
- - Known deadline identified -> set `targetDate`
277
- - Related work completed -> note it in `description`
278
- 3. Use `kanon_update_roadmap_item` with only the changed fields.
279
-
280
- **Cross-session lookup pattern**: When creating a roadmap item, always save its ID to engram so future agents can find it without scanning the full roadmap:
281
- ```
282
- mem_save(
283
- title: "Roadmap item ID: {slugified-title}",
284
- type: "discovery",
285
- scope: "project",
286
- topic_key: "kanon/roadmap/{item-slug}",
287
- content: "itemId: {uuid}\nTitle: {title}\nProjectKey: {projectKey}\nHorizon: {horizon}"
288
- )
289
- ```
290
- On future sessions, do `mem_search(query: "kanon/roadmap/{slug}")` → `mem_get_observation(id)` → use the stored `itemId` directly.
134
+ **Signals**: Working on something related, user mentions updated priorities, new technical context changes estimates, a dependency is resolved.
291
135
 
292
- **Example**:
293
- ```
294
- Agent is working on database optimization. Finds that the "full-text search" roadmap item
295
- would benefit from the new indexes being added.
296
-
297
- First, look up the item ID from engram:
298
- mem_search(query: "kanon/roadmap/full-text-search") -> get itemId
299
-
300
- -> kanon_update_roadmap_item(
301
- projectKey: "{resolved-key}", // resolved internally from cwd project name
302
- itemId: "{item-uuid}",
303
- description: "{existing description}\n\n---\nUpdate 2026-03-24: Database optimization work added indexes that would support this. Effort estimate reduced.",
304
- effort: 2 // was 4, now easier because of new indexes
305
- )
306
- ```
136
+ **Action**: Search engram for the item ID (`mem_search` with `kanon/roadmap/{slug}`), then update via `kanon_update_roadmap_item` with only the changed fields. Append to description, do not overwrite.
307
137
 
308
138
  ---
309
139
 
310
140
  ## Dependencies
311
141
 
312
- Dependencies express **blocks** relationships between roadmap items. Item A blocks item B means B cannot start until A is complete.
313
-
314
- ### When to Use Dependencies
315
-
316
- - One item requires infrastructure or foundation work from another (e.g., "API versioning" blocks "Deprecate v1 endpoints")
317
- - A feature depends on a prerequisite feature being in place
318
- - You want to make sequencing visible on the roadmap
319
-
320
- ### How Dependencies Work
321
-
322
- ```
323
- kanon_add_dependency(
324
- projectKey: "{resolved-key}",
325
- sourceItemId: "{blocker-item-uuid}", // the item that must complete first
326
- targetItemId: "{blocked-item-uuid}", // the item waiting on the blocker
327
- type: "blocks" // only "blocks" is currently supported
328
- )
329
- ```
330
-
331
- The API enforces **cycle prevention** — if adding the dependency would create a circular chain, it returns an error. Do not retry; resolve the modeling issue instead.
332
-
333
- To remove a dependency, you need the `dependencyId` (the dependency record's own UUID, returned when the dependency was created), not the target item's ID:
334
-
335
- ```
336
- kanon_remove_dependency(
337
- projectKey: "{resolved-key}",
338
- sourceItemId: "{blocker-item-uuid}",
339
- dependencyId: "{dependency-record-uuid}"
340
- )
341
- ```
342
-
343
- ### Dependency Guidance
142
+ Dependencies express **blocks** relationships between roadmap items. Use `kanon_add_dependency` to create them.
344
143
 
345
- - Use sparingly — only when the dependency is a real sequencing constraint, not just topical similarity.
346
- - If two items are related but either could proceed independently, use labels or description references instead.
347
- - Before adding a dependency, confirm both items exist and their IDs are correct.
144
+ - Use sparingly — only for real sequencing constraints, not topical similarity.
145
+ - The API enforces cycle prevention. Do not retry on cycle errors; resolve the modeling issue.
146
+ - To remove, you need the `dependencyId` (the dependency record's UUID, not the target item's ID).
348
147
 
349
148
  ---
350
149
 
351
150
  ## Deletion
352
151
 
353
- Use `kanon_delete_roadmap_item` to permanently remove an item. This is irreversible.
354
-
355
- **When deletion is appropriate**:
356
- - Duplicate item created in error
357
- - Idea explicitly rejected and no historical value in keeping it
358
- - Item was merged into another item (update the surviving item's description first to capture any unique context from the deleted one)
152
+ Use `kanon_delete_roadmap_item` to permanently remove an item. Irreversible.
359
153
 
360
- **When NOT to delete**:
361
- - Item was completed — use `status: "done"` and keep it for history
362
- - Item was deprioritized — use `horizon: "someday"` or `status: "idea"`
363
- - Item was promoted to an issue — it is automatically marked `promoted: true`, leave it
364
-
365
- ```
366
- kanon_delete_roadmap_item(
367
- projectKey: "{resolved-key}",
368
- itemId: "{item-uuid}"
369
- )
370
- ```
154
+ **Appropriate**: Duplicate created in error, idea explicitly rejected, item merged into another.
155
+ **Not appropriate**: Completed (use `status: "done"`), deprioritized (use `horizon: "someday"`), promoted (already marked automatically).
371
156
 
372
157
  ---
373
158
 
374
159
  ## Promotion — When and How
375
160
 
376
- Promotion converts a roadmap item into an actionable Kanon issue. The roadmap item is marked as `promoted` and linked to the new issue via a back-reference.
377
-
378
- ### When to Promote
161
+ Promotion converts a roadmap item into an actionable Kanon issue. The roadmap item is marked as `promoted`.
379
162
 
380
- - The item's horizon has reached `now`
381
- - The team/user explicitly says "let's do this"
382
- - An SDD workflow is about to start for this item
383
- - A dependency was resolved that makes the item actionable
163
+ **When**: Item reaches `now`, team says "let's do this", an SDD workflow starts for it, or a blocking dependency is resolved.
384
164
 
385
- ### How to Promote
386
-
387
- ```
388
- kanon_promote_roadmap_item(
389
- projectKey: "{resolved-key}",
390
- itemId: "{roadmap-item-uuid}",
391
- title: "[Area] Clear action title", // optional — defaults to roadmap item title
392
- type: "feature", // optional — defaults based on content
393
- priority: "medium", // optional
394
- groupKey: "sprint-4" // optional — assign to a sprint/group
395
- )
396
- ```
397
-
398
- **After promotion**: The new issue is created with the roadmap item's description as initial context. The roadmap item gets `promoted: true` and retains its history. Multiple issues can be promoted from a single roadmap item (e.g., a large feature broken into phases).
165
+ Use `kanon_promote_roadmap_item` optionally override title, type, priority, and groupKey. The new issue inherits the roadmap item's description. Multiple issues can be promoted from a single roadmap item.
399
166
 
400
167
  ---
401
168
 
402
169
  ## Cross-Skill Coordination
403
170
 
404
- When both `kanon-mcp` and `kanon-roadmap` skills are active in the same session, responsibilities are split:
405
-
406
171
  | Responsibility | Handled by |
407
172
  |----------------|------------|
408
- | Issue creation and enrichment during SDD phases | Sub-agents (per kanon-mcp KANON: block) |
409
- | Roadmap deferred-item capture after sdd-explore / sdd-propose | Orchestrator (per kanon-roadmap Trigger 2) |
173
+ | Issue creation and enrichment during SDD | Sub-agents (per kanon-mcp) |
174
+ | Roadmap deferred-item capture after SDD phases | Orchestrator (Trigger 2) |
410
175
  | Issue state transitions per SDD phase | Sub-agents |
411
- | Roadmap item lifecycle (horizon/status updates) | Orchestrator or agent responding to user signals |
412
- | Saving roadmap item IDs to engram | Whoever creates the item — immediately after creation |
176
+ | Roadmap item lifecycle updates | Orchestrator or agent responding to user signals |
177
+ | Saving roadmap item IDs to engram | Whoever creates the item — immediately |
413
178
 
414
- **Do not** ask sub-agents to create roadmap items for out-of-scope work. That is the orchestrator's job, done with user confirmation after the phase returns.
179
+ Do NOT ask sub-agents to create roadmap items for out-of-scope work. That is the orchestrator's job.
415
180
 
416
181
  ---
417
182
 
@@ -419,48 +184,35 @@ When both `kanon-mcp` and `kanon-roadmap` skills are active in the same session,
419
184
 
420
185
  Follow the same pattern as Kanon issues: `[Area] Clear action description`
421
186
 
422
- **Good titles**:
423
- - `[API] Rate limiting for public endpoints`
424
- - `[UI] Dark mode support across all pages`
425
- - `[Infra] Migrate from Heroku to Fly.io`
426
- - `[DX] Automated database seeding for local dev`
427
-
428
- **Bad titles (never do this)**:
429
- - `Rate limiting` (too vague, no area)
430
- - `TODO: maybe add dark mode?` (not a clear description)
431
- - `sdd/auth/future-work-1` (internal jargon)
432
- - `Feature request from user` (meaningless on a board)
187
+ **Good**: `[API] Rate limiting for public endpoints`, `[UI] Dark mode support across all pages`
188
+ **Bad**: `Rate limiting` (too vague), `sdd/auth/future-work-1` (internal jargon)
433
189
 
434
190
  ---
435
191
 
436
192
  ## Labels for Categorization
437
193
 
438
- Use labels to make the roadmap scannable and filterable:
439
-
440
194
  | Label | When to use |
441
195
  |-------|-------------|
442
- | `performance` | Speed, caching, optimization work |
196
+ | `performance` | Speed, caching, optimization |
443
197
  | `security` | Auth, encryption, access control |
444
198
  | `ux` | User experience improvements |
445
- | `dx` | Developer experience, tooling, workflows |
446
- | `infra` | Infrastructure, deployment, monitoring |
447
- | `tech-debt` | Known shortcuts that need revisiting |
448
- | `integration` | Third-party services, APIs, plugins |
199
+ | `dx` | Developer experience, tooling |
200
+ | `infra` | Infrastructure, deployment |
201
+ | `tech-debt` | Known shortcuts to revisit |
202
+ | `integration` | Third-party services, APIs |
449
203
 
450
- Use domain-specific labels (e.g., `auth`, `api`, `billing`) alongside category labels for cross-referencing.
204
+ Use domain-specific labels alongside category labels for cross-referencing.
451
205
 
452
206
  ---
453
207
 
454
208
  ## Best Practices
455
209
 
456
- 1. **Confirm before creating** — Always ask the user before adding a roadmap item. A quick "Want me to add that to the roadmap?" is enough.
457
- 2. **Titles are for humans** — Write every title as if a stakeholder will scan it on a planning board.
458
- 3. **Descriptions tell the story** — Include why it matters, what problem it solves, and any known constraints. A person reading the card should understand the item without additional context.
459
- 4. **Start vague, refine over time** — Items in `someday` can have minimal descriptions. As they move toward `now`, enrich them with scope, effort estimates, and acceptance criteria.
460
- 5. **Check for duplicates** — Before creating, call `kanon_list_roadmap` to see if a similar item already exists. Update the existing item rather than creating a duplicate.
461
- 6. **Link to context** — When a roadmap item is surfaced by SDD work, reference the change name in the description so future agents can trace the connection.
462
- 7. **Do not over-capture** — Not every passing thought needs a roadmap item. Capture things the user explicitly agrees are worth tracking, or things identified as deferred scope in SDD.
463
- 8. **Save IDs to engram** — After creating any roadmap item, save its `itemId` to engram with `topic_key: kanon/roadmap/{slug}`. This is the only reliable way to find it across sessions.
464
- 9. **Effort and impact are living estimates** — Update them as understanding grows. Initial estimates are guesses; that is fine.
465
- 10. **Promote at the right time** — Do not promote items in `later` or `someday` unless the user explicitly asks. Promotion means "ready to work on."
466
- 11. **One roadmap item can spawn multiple issues** — Large features may be promoted in phases. Each promotion creates a separate issue linked back to the same roadmap item.
210
+ 1. **Confirm before creating** — Always ask the user before adding a roadmap item.
211
+ 2. **Titles are for humans** — Write every title as if a stakeholder will scan it.
212
+ 3. **Descriptions tell the story** — Include why it matters, what problem it solves, known constraints.
213
+ 4. **Start vague, refine over time** — Items in `someday` can be minimal. Enrich as they move toward `now`.
214
+ 5. **Check for duplicates** — Call `kanon_list_roadmap` before creating.
215
+ 6. **Link to context** — Reference the SDD change name when surfaced by SDD work.
216
+ 7. **Save IDs to engram** — After creating, save `itemId` with `topic_key: kanon/roadmap/{slug}`.
217
+ 8. **Effort and impact are living estimates** — Update as understanding grows.
218
+ 9. **Promote at the right time** — Do not promote `later`/`someday` items unless user explicitly asks.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Install agent files from assets to the tool's agent directory.
3
+ * Only for tools that support agents (have an agentDest).
4
+ * Creates parent directories if needed. Idempotent — overwrites on re-run.
5
+ */
6
+ export declare function installAgents(agentDest: string, assetsDir: string): string[];
7
+ /**
8
+ * Remove Kanon agent files from the tool's agent directory.
9
+ * Returns the list of agent files that were removed.
10
+ */
11
+ export declare function removeAgents(agentDest: string): string[];
12
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAwCV;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBxD"}