一键导入
using-kanban
Use when planning work items, managing backlogs, creating epics/features/stories/tasks, or organizing development work in Agile/SCRUM methodology
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when planning work items, managing backlogs, creating epics/features/stories/tasks, or organizing development work in Agile/SCRUM methodology
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when creating application icons for Windows apps, from initial SVG design through to final ICO file
Use when improving code structure, applying design patterns, ensuring backward compatibility, or making incremental changes without altering behavior
Use when implementing any feature or bugfix, before writing implementation code
Use when designing application structure, implementing layered architecture, applying DDD patterns, or making architectural decisions about separation of concerns
Use when building, designing, or coding Azure Logic Apps Consumption workflows - covers architecture patterns, Code View JSON conventions, error handling, performance optimization, security, naming conventions, and deployment best practices
Use when updating version numbers in SharePoint Framework (SPFx) solutions after features or bugfixes
| name | using-kanban |
| description | Use when planning work items, managing backlogs, creating epics/features/stories/tasks, or organizing development work in Agile/SCRUM methodology |
Kanban is an Agile/SCRUM work item management system using a hierarchical folder structure with markdown files. Each work item has YAML frontmatter for metadata and markdown content for details.
Core principle: Break large initiatives into smaller deliverable units, track state through ToDo → InProgress → InReview → Done.
Not for: Ad-hoc fixes (use /fix-errors), quick tasks without tracking needs.
<PROJECT_ROOT>/.kanban/
├── epics/
│ └── epic-<id>-<slug>/
│ ├── _epic.md
│ └── features/
│ └── feature-<id>-<slug>/
│ ├── _feature.md
│ └── items/
│ ├── story-<id>.md
│ ├── bugfix-<id>.md
│ └── task-<id>.md
└── standalone/
├── stories/
├── bugfixes/
└── tasks/
CRITICAL: Kanban files go in the project root, not in the workflow files location.
| Type | Description | Parent | Workflow |
|---|---|---|---|
| Epic | Large initiative spanning features | None | /create-epic |
| Feature | Significant functionality | Epic (optional) | /create-feature |
| Story | User story with acceptance criteria | Feature/Epic | /create-story |
| Bugfix | Planned fix with root cause analysis | Feature/Story | /create-bugfix |
| Task | Small technical work (< 1 day) | Story/Feature | /create-task |
| State | Meaning |
|---|---|
| ToDo | Ready to begin |
| InProgress | Being worked on |
| InReview | Awaiting review |
| Done | Completed |
| Blocked | Cannot proceed (requires blocked_reason) |
Each item uses YAML frontmatter + markdown:
---
id: story-001
title: User can log in with email
type: story
parent: feature-001
state: ToDo
priority: High
effort: 3
tags: [auth, security]
assignee: ""
created: 2026-01-15
updated: 2026-01-15
acceptance_criteria:
- User can enter email and password
- Invalid credentials show error message
- Successful login redirects to dashboard
---
# User can log in with email
## Description
As a registered user, I want to log in with my email and password, so that I can access my account.
## Acceptance Criteria
- [ ] User can enter email and password
- [ ] Invalid credentials show error message
- [ ] Successful login redirects to dashboard
## Technical Notes
Use existing auth service. Follow OAuth 2.0 patterns.
Kanban scanners depend on strict YAML parsing. One frontmatter parse error can hide the parent item and cascade into skipped children.
If a list item contains embedded quotes and extra text, quote the entire scalar:
# ✅ Good
acceptance_criteria:
- '"Voeg melk en eieren toe aan de boodschappenlijst" results in exactly 2 AddToList actions'
# ❌ Bad (partially quoted scalar)
acceptance_criteria:
- "Voeg melk en eieren toe aan de boodschappenlijst" results in exactly 2 AddToList actions
two spaces + "- ").:, #, [, ], {, }) or mixed quoting.---.---
id: story-001
title: Example story
type: story
parent: feature-001
state: ToDo
priority: High
acceptance_criteria:
- User can start voice input from FAB
- '"Voeg melk en eieren toe aan de boodschappenlijst" results in exactly 2 AddToList actions'
---
---.id, title, type, state, priority, parent where applicable).acceptance_criteria lines are fully quoted scalars.parent references an existing item ID.When prompted, use these shortcuts:
| Shortcut | Field | Example |
|---|---|---|
P: | Purpose/Description | P: Enable user login |
A: | Acceptance Criteria | A: User can enter email |
V: | Business Value | V: Reduce support tickets |
T: | Tags | T: security, auth |
PR: | Priority | PR: High |
E: | Effort/Points | E: 5 |
D: | Dependencies | D: feature-001 |
GEN | Auto-generate | LLM generates based on context |
/start-kanban-work # List all incomplete items
/start-kanban-work features # List incomplete features
/start-kanban-work todo # List items in ToDo state
/start-kanban-work feature-001 # Start specific item
/create-epic - Large initiatives with 1-3-1 decomposition/create-feature - Features with story/task generation/create-story - User stories with acceptance criteria/create-bugfix - Planned fixes with root cause/create-task - Small technical tasksUsed in epics and features to structure decisions:
BEFORE creating ANY kanban items, complete these steps:
# Check if counter file exists
cat .kanban/_counters.yaml
If file doesn't exist:
# Find highest IDs (example grep commands)
grep -r "^id: epic-" .kanban/ | sort -t'-' -k2 -n | tail -1
grep -r "^id: feature-" .kanban/ | sort -t'-' -k2 -n | tail -1
grep -r "^id: story-" .kanban/ | sort -t'-' -k2 -n | tail -1
grep -r "^id: task-" .kanban/ | sort -t'-' -k2 -n | tail -1
Before creating files, plan all IDs upfront:
| Item Type | Current Counter | Items to Create | Reserved Range |
|---|---|---|---|
| Epic | 3 | 1 | epic-004 |
| Feature | 12 | 1 | feature-013 |
| Story | 45 | 6 | story-046 to story-051 |
| Task | 67 | 10 | task-068 to task-077 |
Update _counters.yaml to the END of your reserved range before creating any files. This prevents collisions if the process is interrupted.
CRITICAL: Use the ID counter file to ensure unique numbering.
.kanban/_counters.yamlThis file tracks the last used ID for each work item type:
# .kanban/_counters.yaml
# Last assigned ID numbers - DO NOT manually edit
epic: 3
feature: 12
story: 45
bugfix: 8
task: 67
.kanban/_counters.yaml (create if missing with all zeros)<type>-<number> (zero-padded to 3 digits)ID format: <type>-<number> (e.g., epic-001, feature-012, story-046)
If .kanban/_counters.yaml doesn't exist, create it:
# .kanban/_counters.yaml
# Last assigned ID numbers - DO NOT manually edit
epic: 0
feature: 0
story: 0
bugfix: 0
task: 0
_counters.yaml to get next ID (never manually assign)CRITICAL: Each work item type lives in its own file. Never embed child items.
| Rule | Correct | Wrong |
|---|---|---|
| Stories in feature | Create story-XXX.md files in items/ | Listing stories in _feature.md |
| Tasks in story | Create task-XXX.md files in items/ | Listing tasks in story-XXX.md |
| Tasks in feature | Create task-XXX.md with parent: feature-XXX | Listing tasks in _feature.md |
Why?
Feature files (_feature.md):
Story files (story-XXX.md):
parent: story-XXXTasks should be children of stories (or features for cross-cutting work):
Correct hierarchy:
Feature → Stories → Tasks
task.parent: story-XXX (appears under story in UI)
Cross-cutting tasks:
task.parent: feature-XXX (testing, registration, integration)
Wrong:
task.parent: feature-XXX for story-specific work
→ Task won't appear under its story in UI
IDs are GLOBAL across all features, not per-feature.
| Example | Result |
|---|---|
task-001 in feature-001, task-001 in feature-006 | ❌ COLLISION |
task-001 in feature-001, task-009 in feature-006 | ✅ UNIQUE |
ALWAYS read _counters.yaml BEFORE creating ANY item.
CRITICAL: Every parent must have at least one child item.
| Parent | Minimum Children | Rule |
|---|---|---|
| Feature | At least 1 story | Features without stories have no deliverable scope |
| Story | At least 1 task | Stories without tasks have no actionable work |
Why?
When creating features: Always create at least one story, even for small features.
When creating stories: Always create at least one task, even if it's a single implementation task.
AFTER creating stories, verify task coverage:
For each story, create a mapping table:
| Acceptance Criterion | Covered by Task | Status |
|---|---|---|
| User can enter email | task-068 | ✅ |
| Invalid credentials show error | task-068 | ✅ |
| Successful login redirects | task-069 | ✅ |
| Session persists across refresh | MISSING | ❌ |
| Red Flag | Action |
|---|---|
| Story has 0 tasks | Create at least 1 task |
| Acceptance criterion has no task | Create task to cover it |
| Task covers multiple unrelated criteria | Split into focused tasks |
| Task doesn't map to any criterion | Question if task is needed |
| Mistake | Fix |
|---|---|
| Reusing existing IDs | Always use _counters.yaml to get next ID |
| Using local IDs per feature | IDs are GLOBAL - check counter first |
| Embedding stories in feature file | Create separate story-XXX.md files |
| Embedding tasks in story file | Create separate task-XXX.md files |
| Tasks assigned to feature instead of story | Use parent: story-XXX for story-specific tasks |
| Features without stories | Always create at least 1 story per feature |
| Stories without tasks | Always create at least 1 task per story |
| Creating files in wrong location | Always use <PROJECT_ROOT>/.kanban/ |
| Partially quoted YAML list values | Quote the entire scalar value in frontmatter |
| Fixing child skips before parent parse errors | Fix the first YAML parse error on parent file, then re-scan |
| Skipping acceptance criteria | Define criteria before implementation |
| Features too large | Decompose into 3-7 stories |
| Not updating state | Change state when starting/finishing work |
| Creating standalone when epic exists | Nest features under parent epic |
Items can be archived to reduce board clutter. There are two strategies:
Use when: You want to hide items from the board but keep the file structure intact.
archived: true and archived_date: YYYY-MM-DD to YAML frontmatterarchived fields/archive-kanbanUse when: A feature is long-completed and you want to physically declutter the file system.
.kanban/archive/<feature-name>.md.kanban/archive/_feature.mditems/*.md separated by ---Archivable criteria:
| Level | Requirement |
|---|---|
| Epic | Epic is Done AND all child features, stories, bugfixes, tasks are Done |
| Feature | Feature is Done AND all child stories, bugfixes, tasks are Done |
When scanning items, always skip archived: true items — treat them as if they don't exist on the active board.
ToDo → InProgress # Start working
InProgress → InReview # Submit for review
InReview → Done # Approved
InProgress → Blocked # Cannot proceed
Blocked → InProgress # Blocker resolved
Transition timing: State changes must reflect CURRENT reality, not be applied retroactively. Mark InProgress when you START work, not when you're already done. Never skip ToDo → Done directly — always go through InProgress.
When blocking, always add blocked_reason:
state: Blocked
blocked_reason: "Waiting for API access credentials"