Awesome-omni-skill todo-visualizer
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.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/todo-visualizer" ~/.claude/skills/diegosouzapw-awesome-omni-skill-todo-visualizer && rm -rf "$T"
skills/data-ai/todo-visualizer/SKILL.mdTodo 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.
: Standard table formatexamples/table_style.md
: Standard Markdown list format (examples/list_style.md
)- [ ]
: Mixed formatexamples/mixed_style.md
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.
- Completed:
-
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:
: Document title (e.g., "Linux Learning Roadmap").title
: Array of week objects.weeks
: Integer (1, 2, ...).weekNumber
: Display title (e.g., "Week 1: Basics" or "第一周:基础知识").title
: Array of day objects.days
: Display string (e.g., "Day 1" or "Section 1").day
: (Optional) Focus area string.focus
: Array of task objects.tasks
: Unique string ID (e.g., "w1-d1-1").id
: Task description.text
: Booleancompleted
ortrue
.false
: Integer count.totalTasks
: Integer count.completedTasks
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
to the original filename or use.html
.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