@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.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: kanon
3
+ description: Project management delegate — handles Kanon board operations (issues, transitions, roadmap) without polluting main context
4
+ allowed-tools:
5
+ - "mcp__kanon*"
6
+ - "mem_save"
7
+ - "mem_search"
8
+ - "mem_get_observation"
9
+ model: haiku
10
+ ---
11
+
12
+ You are a project management assistant using Kanon tools.
13
+
14
+ ## Your Role
15
+ Handle ALL Kanon board operations delegated by the main agent:
16
+ - Creating, updating, and transitioning issues
17
+ - Managing roadmap items
18
+ - Checking who's working on what
19
+ - Reporting project status
20
+
21
+ ## Issue Lifecycle
22
+ When asked to work on an issue:
23
+ 1. kanon_start_work(key) — signals active work, auto-assigns if unassigned
24
+ 2. kanon_transition_issue(key, "in_progress") — if not already
25
+ 3. Report back to the main agent with issue details and any warnings
26
+
27
+ When work is complete:
28
+ 4. kanon_transition_issue(key, "done")
29
+ 5. kanon_stop_work(key) — releases ownership
30
+
31
+ ## Conflict Awareness
32
+ - ALWAYS check activeWorkers when getting/listing issues
33
+ - If someone else is working on an issue, WARN the main agent
34
+ - Never silently override another developer's work
35
+
36
+ ## Communication
37
+ - Be concise — return only essential information
38
+ - Include issue key, title, status, and active workers
39
+ - Flag conflicts prominently
@@ -1,8 +1,13 @@
1
1
  ---
2
- name: kanon-nl-create
2
+ name: kanon-create-issue
3
3
  description: Natural Language Issue Creation — parse user descriptions of bugs, features, and tasks into well-structured Kanon issues without manual field-filling
4
4
  version: 1.0.0
5
5
  tags: [kanon, issue-creation, natural-language, productivity]
6
+ allowed-tools:
7
+ - kanon_*
8
+ - mem_save
9
+ - mem_search
10
+ - mem_get_observation
6
11
  ---
7
12
 
8
13
  # Kanon NL Create — Natural Language Issue Creation
@@ -21,42 +26,25 @@ The goal is zero friction. The user should be able to say "track this bug with t
21
26
 
22
27
  ## Trigger Conditions
23
28
 
24
- Activate this skill when any of the following signals are present:
25
-
26
29
  ### Explicit creation requests
27
- - "Create an issue for..."
28
- - "Add a ticket for..."
29
- - "Open a card for..."
30
- - "Track this as..."
31
- - "Log a bug for..."
32
- - "File this as a task..."
33
- - "Can you create a Kanon issue for..."
30
+ - "Create an issue for...", "Add a ticket for...", "Track this as...", "Log a bug for..."
34
31
 
35
32
  ### Implicit creation signals
36
33
  - User describes a bug or problem and says "let's track this" or "we should not forget this"
37
34
  - After a bug fix, the agent identifies follow-up work or remaining risk
38
- - User describes something in terms of "we need to...", "we should...", or "someone needs to..."
39
- - User narrates a task or feature while discussing related work
35
+ - User describes something in terms of "we need to...", "we should..."
40
36
 
41
37
  ### Post-fix follow-up
42
- After completing a bug fix or feature, if the agent discovers:
43
- - Additional edge cases not addressed
44
- - Refactoring needed but deferred
45
- - Documentation gaps
46
- - Related components that may have the same issue
47
-
48
- The agent should say: "I also noticed [X] while working on this. Want me to create a follow-up issue?"
38
+ After completing a bug fix or feature, if the agent discovers additional edge cases, deferred refactoring, or documentation gaps, suggest: "I also noticed [X]. Want me to create a follow-up issue?"
49
39
 
50
40
  ---
51
41
 
52
- ## NL Structured Field Mapping
42
+ ## NL to Structured Field Mapping
53
43
 
54
44
  ### Title
55
45
 
56
46
  - **Format**: `[Area] Imperative verb phrase`
57
- - **Imperative form**: Use action verbs"Fix", "Add", "Refactor", "Implement", "Remove", "Investigate"
58
- - **Area**: Infer from domain or technology mentioned — `API`, `Auth`, `UI`, `DB`, `Infra`, `DX`, `Billing`, etc.
59
- - **Keep it scannable**: A teammate should understand the card at a glance on a board
47
+ - **Area**: Infer from domain`API`, `Auth`, `UI`, `DB`, `Infra`, `DX`, `Billing`, etc.
60
48
 
61
49
  | User says | Title |
62
50
  |-----------|-------|
@@ -67,44 +55,38 @@ The agent should say: "I also noticed [X] while working on this. Want me to crea
67
55
 
68
56
  ### Type
69
57
 
70
- Infer from the user's language:
71
-
72
58
  | Signal words / context | Type |
73
59
  |------------------------|------|
74
60
  | "bug", "broken", "not working", "error", "crash", "regression", "fix" | `bug` |
75
61
  | "add", "build", "implement", "new feature", "support", "allow users to" | `feature` |
76
- | "refactor", "clean up", "improve", "migrate", "rename", "move", "simplify" | `task` |
77
- | "investigate", "understand", "explore", "research", "figure out", "check if" | `spike` |
62
+ | "refactor", "clean up", "improve", "migrate", "rename", "simplify" | `task` |
63
+ | "investigate", "understand", "explore", "research", "figure out" | `spike` |
78
64
 
79
65
  When ambiguous, default to `task`.
80
66
 
81
67
  ### Priority
82
68
 
83
- Infer from urgency signals:
84
-
85
69
  | Signal | Priority |
86
70
  |--------|----------|
87
- | "blocking", "production down", "can't deploy", "urgent", "critical", "right now" | `critical` |
88
- | "before release", "important", "customer-facing", "this week", "high priority" | `high` |
89
- | "should fix", "eventually fix", "not urgent but", no strong signals | `medium` |
71
+ | "blocking", "production down", "urgent", "critical", "right now" | `critical` |
72
+ | "before release", "important", "customer-facing", "high priority" | `high` |
73
+ | "should fix", "eventually", "not urgent but", no strong signals | `medium` |
90
74
  | "nice to have", "low priority", "someday", "minor", "cosmetic" | `low` |
91
75
 
92
76
  When no urgency signal is present, default to `medium`.
93
77
 
94
78
  ### Labels
95
79
 
96
- Infer from domain, technology, and concern type mentioned:
97
-
98
80
  | User mentions | Labels to add |
99
81
  |---------------|---------------|
100
- | Authentication, login, tokens, JWT, sessions | `auth` |
101
- | API endpoints, REST, GraphQL, rate limiting | `api` |
102
- | Database, queries, migrations, indexes | `db` |
103
- | UI components, styling, layout, dark mode | `ui` |
82
+ | Authentication, login, tokens, JWT | `auth` |
83
+ | API endpoints, REST, GraphQL | `api` |
84
+ | Database, queries, migrations | `db` |
85
+ | UI components, styling, layout | `ui` |
104
86
  | Performance, speed, latency, caching | `performance` |
105
- | Security vulnerabilities, XSS, injection | `security` |
87
+ | Security vulnerabilities, XSS | `security` |
106
88
  | Infrastructure, deployment, CI/CD | `infra` |
107
- | Developer experience, tooling, scripts | `dx` |
89
+ | Developer experience, tooling | `dx` |
108
90
  | Technical debt, cleanup, refactor | `tech-debt` |
109
91
  | Testing, coverage, flaky tests | `testing` |
110
92
 
@@ -112,45 +94,39 @@ Multiple labels are allowed and encouraged when multiple concerns are present.
112
94
 
113
95
  ### Description
114
96
 
115
- Always generate a structured markdown description. Use what the user said to fill in as much as possible. Leave sections as prompts when information is not available.
116
-
117
- **Template**:
97
+ Always generate a structured markdown description.
118
98
 
99
+ **Standard template**:
119
100
  ```markdown
120
101
  ## Context
121
- {What the problem or need is, derived from user's description}
102
+ {What the problem or need is}
122
103
 
123
104
  ## Acceptance Criteria
124
- - {Condition 1 that must be true when this is done}
105
+ - {Condition 1 that must be true when done}
125
106
  - {Condition 2}
126
- - {Add more as needed}
127
107
 
128
108
  ## Notes
129
- {Any technical context, reproduction steps, constraints, or references mentioned by the user}
109
+ {Technical context, reproduction steps, constraints}
130
110
  ```
131
111
 
132
- For **bugs**, include a reproduction section if steps were mentioned:
133
-
112
+ **Bug template** (when reproduction steps are available):
134
113
  ```markdown
135
114
  ## Context
136
115
  {Bug description}
137
116
 
138
117
  ## Reproduction Steps
139
118
  1. {Step 1}
140
- 2. {Step 2}
141
- 3. Expected: {what should happen}
142
- 4. Actual: {what happens instead}
119
+ 2. Expected: {what should happen}
120
+ 3. Actual: {what happens instead}
143
121
 
144
122
  ## Acceptance Criteria
145
123
  - Bug no longer reproduces following the steps above
146
- - {Any additional fix criteria}
147
124
 
148
125
  ## Notes
149
126
  {Additional context}
150
127
  ```
151
128
 
152
- For **spikes**, use an outcome-oriented template:
153
-
129
+ **Spike template**:
154
130
  ```markdown
155
131
  ## Context
156
132
  {Why this investigation is needed}
@@ -160,35 +136,22 @@ For **spikes**, use an outcome-oriented template:
160
136
  - {Question 2}
161
137
 
162
138
  ## Deliverable
163
- {What the spike should produce — a decision, a document, a prototype, a recommendation}
164
-
165
- ## Notes
166
- {Any known constraints or starting points}
139
+ {What the spike should produce — decision, document, prototype}
167
140
  ```
168
141
 
169
142
  ### Group
170
143
 
171
- Before creating any issue, call `kanon_list_groups(projectKey)` to discover available groups. Match the issue's area or domain keywords against existing group names. If a group matches, include `groupKey` in the creation call.
172
-
173
- | Issue area / domain | Group match strategy |
174
- |---------------------|----------------------|
175
- | Area tag in title (e.g., `Auth`, `API`, `UI`) | Match against group names case-insensitively |
176
- | Labels or domain keywords | Match if a group name contains or closely matches the keyword |
177
- | No match found | Omit `groupKey` — do not create groups, only use existing ones |
178
-
179
- If multiple groups could match, prefer the most specific one. When unsure, ask the user: "Should this go in the '{group}' group?"
144
+ Before creating any issue, call `kanon_list_groups(projectKey)` to discover available groups. Match the issue's area against group names case-insensitively. If no match, omit `groupKey`.
180
145
 
181
146
  ### Default State
182
147
 
183
- Always create with `state: backlog` (the API default). Do not transition the issue unless the user explicitly says it is in progress or ready to start.
148
+ Always create with `state: backlog`. Do not transition unless the user explicitly says it is in progress.
184
149
 
185
150
  ---
186
151
 
187
152
  ## Confirmation Pattern
188
153
 
189
- Before calling `kanon_create_issue`, always show a preview card and ask for confirmation. This prevents cluttering the board with misunderstood issues.
190
-
191
- **Card preview format**:
154
+ Before calling `kanon_create_issue`, always show a preview card:
192
155
 
193
156
  ```
194
157
  Here is the issue I would create:
@@ -197,20 +160,17 @@ Here is the issue I would create:
197
160
  Type: bug
198
161
  Priority: high
199
162
  Labels: auth, ui
200
- Group: Authentication (matched from available groups)
163
+ Group: Authentication
201
164
  State: backlog
202
165
 
203
166
  Description:
204
167
  ## Context
205
168
  The login page redirects to a 404 error page after submitting credentials...
206
- ...
207
169
 
208
170
  Create it? [yes / edit / cancel]
209
171
  ```
210
172
 
211
- If the user says "edit" or points out corrections, update the preview and show it again before creating.
212
-
213
- If the user says "yes" or similar confirmation, call `kanon_create_issue` and report the created issue key.
173
+ If the user says "edit", update and show again. If "yes", create and report the issue key.
214
174
 
215
175
  ---
216
176
 
@@ -218,218 +178,54 @@ If the user says "yes" or similar confirmation, call `kanon_create_issue` and re
218
178
 
219
179
  ### Example 1: Simple Bug Report
220
180
 
221
- **User input**:
222
- > "There's a bug where logging in with Google OAuth redirects to a 404. Let's track it."
181
+ **User**: "There's a bug where logging in with Google OAuth redirects to a 404. Let's track it."
223
182
 
224
- **Inferred structure**:
225
- - Title: `[Auth] Fix Google OAuth redirect to 404`
226
- - Type: `bug`
227
- - Priority: `medium` (no urgency signal)
228
- - Labels: `auth`
229
- - Description: Context with the reported behavior, acceptance criteria that the redirect no longer 404s
183
+ **Inferred**: Title `[Auth] Fix Google OAuth redirect to 404`, type `bug`, priority `medium`, label `auth`.
230
184
 
231
- **Agent calls `kanon_list_groups("KAN")` and finds groups including `Authentication` (key: `auth-group`).**
185
+ Agent calls `kanon_list_groups("KAN")`, finds `Authentication` group. Shows preview, user says "Yes, but make it high priority — it's blocking QA." Agent updates priority and creates.
232
186
 
233
- **Preview shown to user**:
234
- ```
235
- Here is the issue I would create:
187
+ **Result**: "Created KAN-47."
236
188
 
237
- Title: [Auth] Fix Google OAuth redirect to 404
238
- Type: bug
239
- Priority: medium
240
- Labels: auth
241
- Group: Authentication (matched from available groups)
242
- State: backlog
189
+ ### Example 2: Vague Task Description
243
190
 
244
- Description:
245
- ## Context
246
- Logging in with Google OAuth redirects to a 404 error page instead of the expected
247
- post-login destination.
191
+ **User**: "Add a task to investigate why our CI builds are taking so long."
248
192
 
249
- ## Acceptance Criteria
250
- - Google OAuth login completes without a 404 redirect
251
- - User lands on the correct post-login page after authenticating
193
+ **Inferred**: Title `[Infra] Investigate slow CI build times`, type `spike`, priority `medium`, labels `infra`, `dx`.
252
194
 
253
- ## Notes
254
- No reproduction steps provided. Investigate OAuth callback URL configuration.
195
+ Description uses questions-to-answer format with deliverable being a recommendation. Preview shown, user confirms.
255
196
 
256
- Create it?
257
- ```
258
-
259
- **User**: "Yes, but make it high priority — it's blocking QA."
260
-
261
- **Agent updates and creates**:
262
- ```
263
- kanon_create_issue(
264
- projectKey: "KAN",
265
- title: "[Auth] Fix Google OAuth redirect to 404",
266
- type: "bug",
267
- priority: "high",
268
- labels: ["auth"],
269
- groupKey: "auth-group", // matched "Authentication" group
270
- description: "..."
271
- )
272
- ```
273
-
274
- **Agent reports**: "Created KAN-47."
197
+ **Result**: "Created KAN-50."
275
198
 
276
199
  ---
277
200
 
278
- ### Example 2: Feature Request Mid-Conversation
201
+ ## Edge Cases
279
202
 
280
- **User input**:
281
- > "We should add rate limiting to the public API before we go live. Not urgent right now but let's not forget."
203
+ **Project key unknown**: Ask the user or call `kanon_list_projects` to find it. Do not guess.
282
204
 
283
- **Inferred structure**:
284
- - Title: `[API] Add rate limiting for public endpoints`
285
- - Type: `feature`
286
- - Priority: `low` ("not urgent")
287
- - Labels: `api`, `security`
288
- - Description: Context about pre-launch requirement, acceptance criteria around per-endpoint limits
205
+ **Very short description**: Generate a minimal but valid description. Better to create sparse than block on details.
289
206
 
290
- **Preview shown to user**:
291
- ```
292
- Here is the issue I would create:
207
+ **Conflicting signals** (e.g., "not urgent but critical"): Favor the strongest signal. If ambiguous, ask.
293
208
 
294
- Title: [API] Add rate limiting for public endpoints
295
- Type: feature
296
- Priority: low
297
- Labels: api, security
298
- State: backlog
209
+ **Roadmap vs issue**: If user says "someday", "eventually", "down the road", suggest the roadmap instead: "This sounds more like a roadmap item — want me to add it there instead?"
299
210
 
300
- Description:
301
- ## Context
302
- Rate limiting is needed on public API endpoints before the public launch to prevent
303
- abuse and ensure fair usage.
304
-
305
- ## Acceptance Criteria
306
- - Rate limits are enforced on all public-facing API endpoints
307
- - Requests exceeding the limit receive an appropriate error response (e.g., 429)
308
- - Limits are configurable per endpoint or API key tier
309
-
310
- ## Notes
311
- Not urgent. To be addressed before public launch.
312
-
313
- Create it?
314
- ```
315
-
316
- **User**: "Yes."
317
-
318
- **Agent creates and reports**: "Created KAN-48."
211
+ **Multiple issues implied**: Identify each and offer to create separate issues.
319
212
 
320
213
  ---
321
214
 
322
- ### Example 3: Post-Fix Follow-Up Discovery
323
-
324
- **Context**: Agent just finished fixing a memory leak in the image upload handler.
325
-
326
- **Agent proactively says**:
327
- > "While fixing the memory leak I noticed the video upload handler has the same pattern — it's not leaking yet but it will under load. Want me to create a follow-up issue for it?"
328
-
329
- **User**: "Yeah track it."
330
-
331
- **Inferred structure**:
332
- - Title: `[Media] Fix potential memory leak in video upload handler`
333
- - Type: `bug` (potential bug, proactive fix)
334
- - Priority: `medium`
335
- - Labels: `performance`
336
-
337
- **Preview shown and confirmed, then created**: "Created KAN-49."
338
-
339
- ---
340
-
341
- ### Example 4: Vague Task Description
342
-
343
- **User input**:
344
- > "Add a task to investigate why our CI builds are taking so long."
345
-
346
- **Inferred structure**:
347
- - Title: `[Infra] Investigate slow CI build times`
348
- - Type: `spike`
349
- - Priority: `medium`
350
- - Labels: `infra`, `dx`
351
- - Description: Questions-to-answer format with deliverable being a recommendation
352
-
353
- **Preview shown to user**:
354
- ```
355
- Here is the issue I would create:
356
-
357
- Title: [Infra] Investigate slow CI build times
358
- Type: spike
359
- Priority: medium
360
- Labels: infra, dx
361
- State: backlog
362
-
363
- Description:
364
- ## Context
365
- CI builds are running slowly. Root cause is unknown. Investigation needed to identify
366
- bottlenecks and recommend improvements.
367
-
368
- ## Questions to Answer
369
- - What are the slowest steps in the build pipeline?
370
- - Are there caching opportunities not currently utilized?
371
- - Is the slowness consistent or intermittent?
372
-
373
- ## Deliverable
374
- A written recommendation with specific changes to reduce build time.
375
-
376
- ## Notes
377
- No baseline timing data provided. Start by capturing current step-by-step timing.
378
-
379
- Create it?
380
- ```
381
-
382
- **User**: "Looks good, create it."
383
-
384
- **Agent creates and reports**: "Created KAN-50."
385
-
386
- ---
387
-
388
- ## Integration — `kanon_create_issue` Reference
389
-
390
- ```
391
- kanon_create_issue(
392
- projectKey: "{projectKey}", // required — get from project context
393
- title: "{title}", // required — [Area] Imperative description
394
- type: "feature|bug|task|spike", // optional — inferred from NL
395
- priority: "critical|high|medium|low", // optional — inferred from NL
396
- description: "{markdown}", // optional — structured markdown
397
- labels: ["{label1}", ...], // optional — inferred from domain/tech
398
- // Other optional fields when context provides them:
399
- groupKey: "{groupKey}", // from kanon_list_groups — match area/domain to group
400
- assigneeId: "{userId}", // if user specifies "assign to X"
401
- dueDate: "{ISO-date}" // if deadline is mentioned
402
- )
403
- ```
404
-
405
- The tool returns the created issue object including its `issueKey` (e.g., `KAN-42`). Always report this key to the user after creation.
406
-
407
- **Before creating**, call `kanon_list_issues(projectKey, ...)` with relevant filters (type, label) to check for duplicates. If a similar issue exists, surface it to the user: "There is already an open issue that looks related: KAN-35 '[Auth] OAuth callback configuration'. Is this the same thing, or a separate issue?"
408
-
409
- ---
410
-
411
- ## Edge Cases and Clarifications
412
-
413
- **When the project key is unknown**: Ask the user or call `kanon_list_projects` to find it. Do not guess.
414
-
415
- **When the description is very short**: Generate a minimal but valid description. It is better to create a sparse issue than to block on asking for details. The user can enrich it later.
416
-
417
- **When the user provides conflicting signals** (e.g., "not urgent but this is critical"): Favor the strongest concrete signal. If truly ambiguous, ask: "Should I mark this high or medium priority?"
418
-
419
- **When the issue is actually a roadmap item**: If the user uses language like "someday", "eventually", "down the road", or "it would be nice if", consider whether this belongs on the roadmap instead of the backlog. Reference the `kanon-roadmap` skill and suggest: "This sounds more like a roadmap item than an actionable issue — want me to add it to the roadmap instead?"
215
+ ## Duplicate Check
420
216
 
421
- **When multiple issues are implied**: If the user describes multiple distinct problems or features in one message, identify each one and offer to create separate issues: "I see two things here. Want me to create separate issues for both?"
217
+ Before creating, call `kanon_list_issues(projectKey, ...)` with relevant filters. If a similar issue exists, surface it: "There is already KAN-35 '[Auth] OAuth callback configuration'. Same thing, or separate?"
422
218
 
423
219
  ---
424
220
 
425
221
  ## Best Practices
426
222
 
427
- 1. **Always preview first** — Never create an issue without showing the structured card and getting confirmation.
428
- 2. **Titles are for humans** — Every title should be scannable on a board by someone who was not in this conversation.
429
- 3. **Infer boldly, adjust gracefully** — Make confident inferences from the NL input. If the user corrects you, update immediately without argument.
430
- 4. **Check for duplicates** — A quick `kanon_list_issues` with a label or type filter before creation prevents board clutter.
431
- 5. **Report the issue key** — Always echo the created issue key (e.g., "Created KAN-42") so the user has a reference.
432
- 6. **Default to backlog** — Issues created here are not yet in progress. Let the user or workflow move them forward.
433
- 7. **Structured descriptions matter** — A person opening the card later should understand what to do without needing this conversation.
434
- 8. **Roadmap vs issue** — If the request is exploratory or clearly deferred, suggest the roadmap. Do not cram everything into the backlog.
435
- 9. **Check groups before creating** — Always call `kanon_list_groups(projectKey)` and assign `groupKey` when a match exists. Ungrouped issues are harder to find on the board.
223
+ 1. **Always preview first** — Never create without showing the structured card and getting confirmation.
224
+ 2. **Titles are for humans** — Every title should be scannable on a board.
225
+ 3. **Infer boldly, adjust gracefully** — Make confident inferences. Update immediately if corrected.
226
+ 4. **Check for duplicates** — A quick filter before creation prevents board clutter.
227
+ 5. **Report the issue key** — Always echo the created key (e.g., "Created KAN-42").
228
+ 6. **Default to backlog** — Let the user or workflow move issues forward.
229
+ 7. **Structured descriptions matter** — A person opening the card later should understand what to do.
230
+ 8. **Roadmap vs issue** — If deferred, suggest the roadmap. Do not cram everything into the backlog.
231
+ 9. **Check groups before creating** — Always call `kanon_list_groups(projectKey)` and assign `groupKey` when a match exists.