markdown-task-manager
Uses local kanban.md and archive.md files to track project tasks with a strict, HTML-compatible template format.
Install
mkdir -p .claude/skills/markdown-task-manager && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3658" && unzip -o skill.zip -d .claude/skills/markdown-task-manager && rm skill.zipInstalls to .claude/skills/markdown-task-manager
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when managing tasks, the system is a Kanban task manager based on local Markdown files (`kanban.md` and `archive.md`). It follows a strict format compatible with the task-manager.html web application.Key capabilities
- →Auto-increment unique task IDs (TASK-XXX)
- →Format tasks with strict metadata headers
- →Track project status transitions (To Do, In Progress, Done)
- →Generate post-completion reports with file tracking
- →Manage task archival workflows
How it works
It parses Markdown files to validate header structures and inject status-tracking metadata based on a predefined HTML-compatible schema.
Inputs & outputs
When to use markdown-task-manager
- →Planning complex features
- →Tracking project status
- →Archiving completed work items
About this skill
📋 Markdown Task Manager Skill
When to Use This Skill
- Create tasks to document work to be done
- Plan complex features
- Track project progress
- Archive completed tasks
- Generate status reports
📋 STRICT Task Format
Mandatory Template
### TASK-XXX | Task title
**Status**: <column-id>
**Priority**: [Critical|High|Medium|Low] | **Category**: [Value] | **Assigned**: @user1, @user2
**Created**: YYYY-MM-DD | **Started**: YYYY-MM-DD | **Due**: YYYY-MM-DD | **Finished**: YYYY-MM-DD
**Tags**: #tag1 #tag2 #tag3
Free text description. **NO `##` or `###` headings allowed**.
**Subtasks**:
- [ ] First subtask
- [x] Completed subtask
**Notes**:
Additional notes with subsections `**Title**:`.
**Result**:
What was done.
**Modified files**:
- file.js (lines 42-58)
❌ FORBIDDEN
## Titleor### Titleinside a task**Subtasks**or**Notes**without:- Automatic archiving (only on user request)
Why? All tasks share one ## Tasks section, so a stray ##/### heading inside a task can break parsing.
🔄 Workflow
V2 — status is a field, not a position. A task's column is its
**Status**:value; all tasks live in one## Taskssection. Move a task by editing its one**Status**:line — never cut/paste the whole block (~1 line vs 20+).
1. New Request
- Read
kanban.mdto get the last task ID - Add the task to the
## Taskssection with**Status**: todo(first column id) - Unique ID (TASK-XXX) auto-incremented
- Break down into subtasks if needed
- Increment counter in
<!-- Config: Last Task ID: XXX -->
2. Start Work
- Edit one line:
**Status**: todo→**Status**: in-progress - Add
**Started**: YYYY-MM-DD - Check off subtasks progressively
3. Finish Work
- Edit one line:
**Status**: in-progress→**Status**: done - Add
**Finished**: YYYY-MM-DD - Document in
**Notes**::**Result**:- What was done**Modified files**:- List with line numbers**Technical decisions**:- Choices made**Tests performed**:- Validated tests
4. Archiving
⚠️ Tasks are NOT archived immediately!
- Completed tasks stay at
**Status**: done - Only on user request → move to
archive.md - Never archive directly at end of work
📁 File Structure
kanban.md
# Kanban Board
<!-- Config: Last Task ID: 42 -->
<!-- Format: v2 -->
## ⚙️ Configuration
**Columns**: 📝 To Do (todo) | 🚀 In Progress (in-progress) | 👀 Review (in-review) | ✅ Done (done)
**Categories**: Frontend, Backend, DevOps
**Users**: @alice, @bob
**Priorities**: 🔴 Critical | 🟠 High | 🟡 Medium | 🟢 Low
**Tags**: #bug, #feature, #docs
---
## Tasks
### TASK-001 | Title
**Status**: todo
[...]
### TASK-003 | Completed task
**Status**: done
[...]
All tasks share the single ## Tasks section; the column comes from **Status**:
(which must equal a column id from the Config), and file order = order within a column.
⚡ Token-economical operations (for AI)
No stored index — rebuild it on demand with grep, and read/edit one task:
grep -nE "^### TASK-|^\*\*Status\*\*:" kanban.md # board overview (index on demand)
grep -n "^### TASK-042 " kanban.md # locate a task by id
sed -n '/^### TASK-042 /,/^### TASK-/p' kanban.md # read just that task
# MOVE = edit one line: **Status**: todo -> **Status**: in-progress
grep -n "^\*\*Status\*\*: in-progress" kanban.md | head -1 # next task in a column
archive.md
# Task Archive
> Archived tasks
## ✅ Archives
### TASK-001 | Archived task
[... full content ...]
---
### TASK-002 | Another archived task
[... full content ...]
🎯 Golden Rules
✅ ALWAYS
- Create task BEFORE coding
- Strict format (no
##inside tasks) - Break down if complex (3+ steps)
- Update in real-time
- Document result in
**Notes**: - Reference tasks in commits (
TASK-XXX) - Leave in "Done" (archive only on user request)
❌ NEVER
## Titleinside a task- Code without creating task
- Forget to check off subtasks
- Archive immediately (stay in "Done")
- Forget to document the result
🔧 User Commands
Planning
- "Plan [feature]"
- "Create roadmap for 3 months"
Execution
- "Do TASK-XXX"
- "Continue TASK-XXX"
Tracking
- "Where are we?"
- "Weekly status"
Modifications
- "Break down TASK-XXX"
- "Add subtask to TASK-XXX"
Search
- "Search in archives: [keyword]"
Maintenance
- "Archive completed tasks"
📝 Complete Examples
Simple Task
### TASK-001 | Fix login bug
**Priority**: Critical | **Category**: Backend | **Assigned**: @bob
**Created**: 2025-01-20 | **Due**: 2025-01-21
**Tags**: #bug #urgent
Users cannot log in. Error 500 in logs.
**Notes**:
Check Redis, related to yesterday's deployment.
Complete Task with Result
### TASK-042 | Notification system
**Priority**: High | **Category**: Backend | **Assigned**: @alice
**Created**: 2025-01-15 | **Started**: 2025-01-18 | **Finished**: 2025-01-22
**Tags**: #feature
Real-time notifications with WebSockets.
**Subtasks**:
- [x] Setup WebSocket server
- [x] REST API
- [x] Email sending
- [x] Notifications UI
- [x] E2E tests
**Notes**:
**Result**:
✅ Functional system with WebSocket, REST API and emails.
**Modified files**:
- src/websocket/server.js (lines 1-150)
- src/api/notifications.js (lines 20-85)
**Technical decisions**:
- Socket.io for WebSockets
- SendGrid for emails
- 30-day history in MongoDB
**Tests performed**:
- ✅ 100 simultaneous connections
- ✅ Auto-reconnection
- ✅ Emails < 2s
🛠️ Skill Functions
When using this skill, you must:
- Read kanban.md to understand current state and get last ID
- Create tasks following strict format
- Update tasks by moving between sections
- Check off subtasks progressively
- Document result in Notes before marking Done
- Increment Last Task ID in config comment
- Never archive unless explicitly requested
📘 Git Integration
# Commits with reference
git commit -m "feat: Add feature (TASK-042 - 3/5)"
git commit -m "fix: Bug fix (TASK-001)"
# Branches
git checkout -b feature/TASK-042-notifications
⚠️ Critical Points of Attention
- Markdown Format: Strictly respect format (no
##inside tasks) - ID Increment: Always increment
<!-- Config: Last Task ID: XXX --> - Columns: Use exact column names defined in Configuration
- Archiving: NEVER archive automatically, only on request
- Documentation: Always fill
**Notes**:with Result, Modified files, etc.
🎓 Usage
Initialization
Before using the skill, verify the project contains:
kanban.md(required)archive.md(required)AI_WORKFLOW.md(optional but recommended)
First Use
"Use the markdown-task-manager skill to create a task for [feature]"
Invocation Examples
"Skill markdown-task-manager: create a task to implement authentication"
"Skill markdown-task-manager: update TASK-007 with results"
"Skill markdown-task-manager: list all tasks in progress"
"Skill markdown-task-manager: archive completed tasks"
🔍 Implementation Details
Reading kanban.md
Always start by reading kanban.md to:
- Get the last task ID from
<!-- Config: Last Task ID: XXX --> - Understand existing columns structure
- Check current tasks in each column
Creating a New Task
- Calculate new ID:
last_id + 1 - Format as
TASK-XXX(3 digits with leading zeros) - Add to "📝 To Do" section
- Update
<!-- Config: Last Task ID: XXX -->comment - Use today's date for
**Created**:
Moving Tasks Between Columns
When moving a task:
- Copy entire task content (from
### TASK-XXXto blank line before next task) - Paste in target column section
- Delete from original location
- Update dates accordingly (
**Started**:or**Finished**:)
Completing Tasks
Before moving to "✅ Done":
- Ensure all subtasks are checked
[x] - Add
**Finished**: YYYY-MM-DD - Fill in
**Notes**:section with:**Result**:describing what was accomplished**Modified files**:listing changed files with line ranges**Technical decisions**:if any choices were made**Tests performed**:if tests were run
Archiving Tasks
Only when user explicitly requests archiving:
- Read task from "✅ Done" section in
kanban.md - Append task to "## ✅ Archives" section in
archive.md - Add separator
---between archived tasks - Remove task from
kanban.md
This skill ensures complete traceability and total transparency of work done by AI.
When not to use it
- →Projects requiring integrated Jira or Linear APIs
- →Multi-user environments requiring real-time syncing
Limitations
- →Cannot use standard Markdown headers (##/###) inside tasks
- →Requires manual ID incrementing or tracking
- →Not suitable for complex database-backed project management
How it compares
Enforces a rigid syntax to ensure cross-compatibility with external web-based HTML task viewers.
Compared to similar skills
markdown-task-manager side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| markdown-task-manager (this skill) | 1 | 9mo | Review | Beginner |
| task-management | 16 | 5mo | No flags | Beginner |
| github-manage | 6 | 9mo | Review | Beginner |
| agent-project-board-sync | 0 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
task-management
anthropics
Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments.
github-manage
matteocervelli
Manage operations concerning GitHub on behalf of user
agent-project-board-sync
ruvnet
Agent skill for project-board-sync - invoke with $agent-project-board-sync
nextcloud-cli-deck
NicholaiVogel
Work with the Nextcloud Deck app through Nextcloud CLI. Use when an agent needs to list boards and cards, create boards or stacks, create or update cards, move cards, archive or delete cards safely, validate Deck availability, or perform dry-run protected project-board workflows with nxc.
task-management
rjchien728
管理 ~/tasks/(或使用者指定路徑)下的進行中工作項目資料夾。每個 task 是一個資料夾,README.md 是純狀態 dashboard(status frontmatter + 一句 headline + 一行狀態 + 檔案清單 + 下一步),實際的設計 / 規劃 / 調查文件用獨立 .md 檔,腳本與 reproduce 也存獨立檔。負責命名(YYMMDD-<slug>)、建資料夾、寫 README dashboard、更新狀態、總覽掃描。當使用者說「開新 task」「開個 task」「新增 task」「new task」「記錄到 tasks 下」「把目前設計記下來開個 task
slack-to-queue
eranto
>-