Todo Visualizer Agent Skill
When to Use
Use this skill when the user wants to:
- Visualize TODO files in an interactive dashboard
- Track task completion progress
- Generate HTML reports from markdown TODOs (especially for learning roadmaps)
- Analyze timelines containing weeks/days (supports "Week/Day" and "第X周/第X天" formats)
How to Use
Follow these steps to generate an HTML dashboard from a TODO file:
Step 1: Read the TODO File
Use the Read tool to read the markdown TODO file path provided by the user.
Step 2: Analyze the Content
Use LLM analysis to extract and structure the information.
IMPORTANT: You should check the examples/ directory for reference formats if the input file structure is complex.
examples/table_style.md: Standard table format
examples/list_style.md: Standard Markdown list format (- [ ])
examples/mixed_style.md: Mixed format
Extraction Rules:
Identify the structure: Look for sections representing time periods.
- Weeks: "Week 1", "第一周", "Week One", etc.
- Days: "Day 1", "第一天", "Monday", "周一", etc.
- If no explicit timeline: Group tasks by their Headers (H1, H2) as "Weeks" or "Categories".
Extract tasks: Parse each task with its associated metadata.
- Focus: Often found in table columns like "Focus", "重点", "主题".
- Tasks: The actual work items.
- Nested Lists: Flatten nested tasks into the main list but preserve hierarchy in the text (e.g., "Parent > Child"). Count every checkbox as a task.
Detect completion status: Analyze patterns that indicate completed vs incomplete tasks.
- Completed:
✓, DONE, ✅, [x], [X], 完成, 已完成.
- Incomplete: Empty cells,
[ ], TODO, 未开始.
- Note: If a row has mixed signals, prioritize explicit completion markers.
Organize by timeline: Structure tasks chronologically.
Step 3: Read the Template
Read the HTML template from assets/template.html using the Read tool.
Step 4: Inject the Data
Replace the placeholder data in the template with the extracted TODO information.
You need to replace the const todoData = { ... }; block in the script.
Data Structure Requirements:
title: Document title (e.g., "Linux Learning Roadmap").
weeks: Array of week objects.
weekNumber: Integer (1, 2, ...).
title: Display title (e.g., "Week 1: Basics" or "第一周:基础知识").
days: Array of day objects.
day: Display string (e.g., "Day 1" or "Section 1").
focus: (Optional) Focus area string.
tasks: Array of task objects.
id: Unique string ID (e.g., "w1-d1-1").
text: Task description.
completed: Boolean true or false.
totalTasks: Integer count.
completedTasks: Integer count.
Step 5: Write the Output
Use the Write tool to save the generated HTML to a file (e.g., todo-dashboard.html) in the same directory as the source TODO file.
- If the user provided a specific output filename, use it.
- Otherwise, append
.html to the original filename or use dashboard.html.
Example
Input (List Format)
# Project Alpha
## Phase 1
- [x] Setup Repo
- [ ] Design DB
- [ ] Users Table
- [ ] Posts Table
Extracted Data Structure
{
"title": "Project Alpha",
"weeks": [
{
"weekNumber": 1,
"title": "Phase 1",
"days": [
{
"day": "Tasks",
"focus": "General",
"tasks": [
{
"id": "1-1",
"text": "Setup Repo",
"completed": true
},
{
"id": "1-2",
"text": "Design DB",
"completed": false
},
{
"id": "1-3",
"text": "Design DB > Users Table",
"completed": false
},
{
"id": "1-4",
"text": "Design DB > Posts Table",
"completed": false
}
]
}
]
}
],
"totalTasks": 4,
"completedTasks": 1
}
Constraints
- Single HTML output: The output must be a single, self-contained HTML file.
- Client-side only: No backend dependencies.
- Local Storage: The template handles local storage, you just provide the initial state.
- Encoding: Ensure UTF-8 encoding for Chinese character support.
- Robustness: If completion status is ambiguous, default to
false.
1---2name: todo-visualizer3description: Read local Markdown TODO files (supports Chinese/English), analyze task completion status, and generate beautiful single-page HTML dashboards with timeline visualization, interactive task lists, and persistent progress tracking.4license: MIT5---67# Todo Visualizer Agent Skill89## When to Use1011Use this skill when the user wants to:12- Visualize TODO files in an interactive dashboard13- Track task completion progress14- Generate HTML reports from markdown TODOs (especially for learning roadmaps)15- Analyze timelines containing weeks/days (supports "Week/Day" and "第X周/第X天" formats)1617## How to Use1819Follow these steps to generate an HTML dashboard from a TODO file:2021### Step 1: Read the TODO File2223Use the `Read` tool to read the markdown TODO file path provided by the user.2425### Step 2: Analyze the Content2627Use LLM analysis to extract and structure the information.28**IMPORTANT**: You should check the `examples/` directory for reference formats if the input file structure is complex.29- `examples/table_style.md`: Standard table format30- `examples/list_style.md`: Standard Markdown list format (`- [ ]`)31- `examples/mixed_style.md`: Mixed format3233**Extraction Rules:**34351. **Identify the structure**: Look for sections representing time periods.36 * **Weeks**: "Week 1", "第一周", "Week One", etc.37 * **Days**: "Day 1", "第一天", "Monday", "周一", etc.38 * **If no explicit timeline**: Group tasks by their Headers (H1, H2) as "Weeks" or "Categories".39402. **Extract tasks**: Parse each task with its associated metadata.41 * **Focus**: Often found in table columns like "Focus", "重点", "主题".42 * **Tasks**: The actual work items.43 * **Nested Lists**: Flatten nested tasks into the main list but preserve hierarchy in the text (e.g., "Parent > Child"). Count every checkbox as a task.44453. **Detect completion status**: Analyze patterns that indicate completed vs incomplete tasks.46 * **Completed**: `✓`, `DONE`, `✅`, `[x]`, `[X]`, `完成`, `已完成`.47 * **Incomplete**: Empty cells, `[ ]`, `TODO`, `未开始`.48 * **Note**: If a row has mixed signals, prioritize explicit completion markers.49504. **Organize by timeline**: Structure tasks chronologically.5152### Step 3: Read the Template5354Read the HTML template from `assets/template.html` using the `Read` tool.5556### Step 4: Inject the Data5758Replace the placeholder data in the template with the extracted TODO information.59You need to replace the `const todoData = { ... };` block in the script.6061**Data Structure Requirements:**62* `title`: Document title (e.g., "Linux Learning Roadmap").63* `weeks`: Array of week objects.64 * `weekNumber`: Integer (1, 2, ...).65 * `title`: Display title (e.g., "Week 1: Basics" or "第一周:基础知识").66 * `days`: Array of day objects.67 * `day`: Display string (e.g., "Day 1" or "Section 1").68 * `focus`: (Optional) Focus area string.69 * `tasks`: Array of task objects.70 * `id`: Unique string ID (e.g., "w1-d1-1").71 * `text`: Task description.72 * `completed`: Boolean `true` or `false`.73* `totalTasks`: Integer count.74* `completedTasks`: Integer count.7576### Step 5: Write the Output7778Use the `Write` tool to save the generated HTML to a file (e.g., `todo-dashboard.html`) in the **same directory** as the source TODO file.79* If the user provided a specific output filename, use it.80* Otherwise, append `.html` to the original filename or use `dashboard.html`.8182## Example8384### Input (List Format)8586```markdown87# Project Alpha8889## Phase 190- [x] Setup Repo91- [ ] Design DB92 - [ ] Users Table93 - [ ] Posts Table94```9596### Extracted Data Structure9798```json99{100 "title": "Project Alpha",101 "weeks": [102 {103 "weekNumber": 1,104 "title": "Phase 1",105 "days": [106 {107 "day": "Tasks",108 "focus": "General",109 "tasks": [110 {111 "id": "1-1",112 "text": "Setup Repo",113 "completed": true114 },115 {116 "id": "1-2",117 "text": "Design DB",118 "completed": false119 },120 {121 "id": "1-3",122 "text": "Design DB > Users Table",123 "completed": false124 },125 {126 "id": "1-4",127 "text": "Design DB > Posts Table",128 "completed": false129 }130 ]131 }132 ]133 }134 ],135 "totalTasks": 4,136 "completedTasks": 1137}138```139140## Constraints141142- **Single HTML output**: The output must be a single, self-contained HTML file.143- **Client-side only**: No backend dependencies.144- **Local Storage**: The template handles local storage, you just provide the initial state.145- **Encoding**: Ensure UTF-8 encoding for Chinese character support.146- **Robustness**: If completion status is ambiguous, default to `false`.