skel/.pi/skills/kanban-management/SKILL.md
Manage the project workitems board end-to-end: ideation, implementation planning, quality scoring, and definition-of-done tracking.
npx skillsauth add rcarmo/piclaw kanban-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Activate this skill when the user asks to create, triage, refine, score, or move project workitems — or when asked to review the board and propose next actions.
Compatibility note:
kanban-management for nowworkitems/*.kanban.md remain intentionally named kanbanProject workitems boards should ideally be per project, not one global mixed board.
non-piclaw / new-project, keep it out of the piclaw project board unless the user says otherwise.| Lane | Path | Purpose |
|---|---|---|
| Inbox | workitems/00-inbox/ | Raw ideas, bug reports, unstructured requests |
| Next | workitems/10-next/ | Refined, ready to pick up |
| Doing | workitems/20-doing/ | Actively in progress (limit ≤ 3) |
| Blocked | workitems/30-blocked/ | Has explicit ## Blockers section |
| Review | workitems/40-review/ | Implementation done, needs verification |
| Done | workitems/50-done/ | Verified complete |
| Template | workitems/_templates/work-item.md | Copy for new tickets |
kebab-case-slug.md*):---
id*: kebab-case-slug
title*: Human-readable title
status*: inbox | next | doing | blocked | review | done
priority: low | medium | high | critical
created*: YYYY-MM-DD
updated*: YYYY-MM-DD
completed: YYYY-MM-DD # set when moved to done
target_release: next | vX.Y.Z
estimate: S | M | L | XL
risk: low | medium | high
tags: [work-item, kanban, ...]
owner: pi
---
# Title## Summary## Blockers (if status=blocked)## Acceptance Criteria## Implementation Paths## Test Plan## Definition of Done## Updates (reverse-chronological date headers)## Notes## LinksWhen a request is vague or exploratory:
00-inbox/ with summary and rough acceptance criteria.## Notes.10-next/ and set priority + estimate.Before a ticket moves from next to doing:
## Acceptance Criteria into testable statements.## Implementation Paths with at least two options (A = recommended, B = alternative).## Test Plan covering:
## Definition of Done checklist (see §5 below).estimate and risk.## Blockers are resolved or tracked.While a ticket is in doing:
feature/message-permalink-references).
All implementation work for the ticket MUST happen on this branch, not on main.## Updates with dated entries.main (fast-forward or squash).40-review/.updated date.## Updates.## Definition of Done checklist is fully ticked.## Implementation Paths Considered (historical).completed date, move to 50-done/.30-blocked/, add ## Blockers with file paths to blocker tickets.## Updates.doing without clearing all blockers.Every ticket modification must leave an audit trail in ## Updates.
| Event | Required entry content | |---|---| | Ticket created | Initial creation note | | Lane change | Old lane → new lane, reason | | Acceptance criteria changed | What was added/removed/reworded | | Implementation path chosen | Which path and why | | Code committed | Commit hash, files touched, test result summary | | Test run completed | Command, pass/fail counts, artifact paths | | Blocker added or resolved | Blocker ticket path, resolution summary | | Scope change | What was added/deferred, rationale | | Quality score assessed | Score breakdown and verdict | | Review feedback | What passed, what needs rework | | Ticket completed | Completion evidence summary |
### YYYY-MM-DD
- <lane change, if any>
- <what changed and why>
- <evidence: commit hash, test output, artifact path>
- Quality score: X/10 (problem: N, scope: N, test: N, deps: N, risk: N)
Use star emojis in reports and update entries:
★★★★★ = 9–10, ★★★★☆ = 7–8, ★★★☆☆ = 5–6, ★★☆☆☆ = 3–4, ★☆☆☆☆ = 0–2## Updates).updated: front matter field to match.Score each active ticket (not inbox, not done) on five dimensions, 0–2 each:
| Dimension | 0 | 1 | 2 | |---|---|---|---| | Problem clarity | no user value stated | value implied | explicit outcome with context | | Scope | unbounded | partial boundaries | clear scope, non-goals listed | | Testability | no criteria | vague criteria | measurable acceptance criteria | | Dependencies | unknown | partially mapped | all blockers/links captured | | Risk coverage | none | risks listed | risks + mitigations documented |
Total: /10, displayed as star rating in reports.
| Score | Stars | Verdict | |---|---|---| | 0–2 | ★☆☆☆☆ | Not ready — major gaps | | 3–4 | ★★☆☆☆ | Not ready — needs refinement | | 5–6 | ★★★☆☆ | Workable — known gaps remain | | 7–8 | ★★★★☆ | Good — minor items only | | 9–10 | ★★★★★ | Ready — pick up and execute |
next → doing (gate: must be ≥ 5).Add a quality score line to the latest ## Updates entry:
### 2026-03-11
- Quality: ★★★★☆ 7/10 (problem: 2, scope: 1, test: 2, deps: 1, risk: 1)
- Gap: scope boundaries need non-goals section; dependency on X not yet tracked.
| Transition | Minimum | Stars | Additional requirement | |---|---|---|---| | inbox → next | 3 | ★★☆☆☆ | Summary + rough acceptance criteria | | next → doing | 5 | ★★★☆☆ | Implementation paths + test plan + DoD checklist | | doing → review | 7 | ★★★★☆ | All tests passing, update history current, test gate met | | review → done | 9 | ★★★★★ | DoD fully checked, no open gaps | | any → blocked | n/a | — | Blockers section with ticket links |
Every ticket that introduces or modifies code must pass a test gate before
moving from doing → review. The gate requirements scale with risk:
| Change type | Minimum test requirement |
|---|---|
| New module / contract / interface | Unit tests for all public API surface (registry, resolution, lifecycle) |
| Bug fix | Regression test reproducing the bug before fix, passing after |
| Refactor (behavior-preserving) | Existing tests still pass; add tests if uncovered paths are touched |
| UI-only (CSS / template) | Manual test noted in ## Updates with browser + device |
| Config / docs only | No test required |
Concrete checklist (add to ## Test Plan in every implementation ticket):
## Test Plan
- [ ] Unit tests written for new/changed logic (file paths or describe blocks listed)
- [ ] All existing tests pass (`bun run test`)
- [ ] Type check clean (`bun run typecheck`)
- [ ] Edge cases and error paths covered (invalid input, exceptions, empty state)
- [ ] Test evidence recorded in `## Updates` (commit hash, pass/fail count)
A ticket cannot transition doing → review if:
## Updates entry for the transition does not include test evidence.Every exported symbol (function, class, interface, type, constant) in new or
modified .ts files must have a JSDoc comment. The gate scales by symbol type:
| Symbol type | Minimum JSDoc |
|---|---|
| Exported interface / type | /** One-line purpose. */ on the type + every property |
| Exported class | /** One-line purpose. */ on the class + every public method |
| Exported function | /** Purpose. @param / @returns descriptions. */ |
| Exported constant (singleton, config) | /** One-line purpose. */ |
| Internal / private helpers | Encouraged but not gated |
| Re-exports (barrel index.ts) | Not required |
What to document:
@param name Description for each (types inferred from TS).@returns Description when non-obvious.Checklist (add to ## Test Plan alongside test items):
- [ ] All exported symbols have JSDoc (`grep -rn 'export ' src/ | grep -v '\/\*\*'` returns zero new gaps)
- [ ] Interface/type properties documented
- [ ] Public class methods documented
A ticket cannot transition doing → review if:
## Updates entry does not confirm JSDoc audit.Every implementation ticket must include this checklist (copy into ## Definition of Done):
## Definition of Done
- [ ] All acceptance criteria satisfied and verified
- [ ] Tests added or updated — passing locally (`bun run test`)
- [ ] Type check clean (`bun run typecheck`)
- [ ] Docs and notes updated with links to ticket
- [ ] Operational impact assessed (config changes, migrations, restarts)
- [ ] Follow-up tickets created for deferred scope
- [ ] Update history complete with evidence
- [ ] Quality score ≥ 9 recorded in final update
- [ ] Ticket front matter updated (`status`, `updated`, `completed`)
- [ ] Ticket moved to `50-done/`
When asked to review the board, produce:
| Ticket | Lane | Priority | Quality | Blockers | Estimate | History entries | Next Action | |---|---|---|---|---|---|---|---|
Use star emojis in the Quality column: ★★★★☆ 7/10.
For each active ticket, verify:
## Updates entry is current (not stale).doing (flag if > 3)updated > 7 days agoNumbered list of tickets to pick up next, based on:
When refining a ticket, use this structure:
## Implementation Paths
### Path A — <label> (recommended)
1. <step>
2. <step>
**Pros:** ...
**Cons:** ...
### Path B — <label>
1. <step>
2. <step>
**Pros:** ...
**Cons:** ...
## Recommended Path
<one-sentence justification>
## Test Plan
- **Unit:** `test/path/to.test.ts` — <what to cover>
- **Integration:** <harness command or manual steps>
- **Production:** <validation on live instance>
## Risks and Mitigations
| Risk | Impact | Mitigation |
|---|---|---|
| ... | ... | ... |
Primary board renderer for this skill lives alongside this SKILL.md file in the same skill directory:
/workspace/.pi/skills/kanban-management/kanban-board-svg.tsWhen following relative-path references for this skill, resolve them against the skill directory and use the co-located renderer as the single authoritative copy. Do not keep or invoke a separate workspace-level duplicate.
When asked to render/share the board in chat, always run the script with --post.
Theme policy:
--theme is provided, honor it (dark|light|css|auto).--theme is omitted, the script auto-selects by local time:
dark from 18:00 through 07:59light from 08:00 through 17:59Recommended command:
bun run /workspace/.pi/skills/kanban-management/kanban-board-svg.ts --post
Mermaid remains available as a fallback, but the default should be the SVG script.
When Mermaid is needed, use a graph LR flowchart with subgraphs for each lane.
The bundled Mermaid version does not support kanban, block-beta, or YAML
front matter headers — stick to classic graph/flowchart syntax.
graph LR
subgraph Inbox
T1["ticket-slug<br/>★★★☆☆ 5"]
end
subgraph Next
T2["other-ticket<br/>★★★★☆ 7"]
end
subgraph Doing
T3["active-work<br/>★★★★☆ 8"]
end
subgraph Blocked
B0[" "]
end
subgraph Review
R0[" "]
end
subgraph Done
X0[" "]
end
Inbox --> Next --> Doing --> Review --> Done
Doing -.-> Blocked -.-> Doing
["slug<br/>★★★☆☆ score"][" "] to keep the subgraph visible.🔴 (critical), 🟠 (high), 🟡 (medium), or ⚪ (low) after the score.# Full inventory
find workitems -maxdepth 2 -type f -name '*.md' ! -path '*/_templates/*' | sort
# Dependency graph
rg -n "## Blockers|blocker|gated" workitems -S
# Stale ticket check
find workitems/10-next workitems/20-doing workitems/30-blocked -name '*.md' \
-exec grep -l "updated: $(date -d '-7 days' +%F 2>/dev/null || date -v-7d +%F)" {} \;
# Front matter audit
rg -n "^status:|^priority:|^estimate:|^risk:" workitems -S
## Test Plan for implementation tickets.updated date when modifying a ticket.documentation
Resolve Teams or SharePoint document links to canonical metadata.
development
Search the web via SearXNG and optionally convert result pages to Markdown.
development
Search via SearXNG, fetch top results, and return quick summaries plus markdown.
testing
Fetch a user's recent tweets (tweets, replies, retweets) using Playwright + Nitter fallbacks and produce compact JSON/Markdown summaries.