Every time I asked Claude or ChatGPT to help me plan a project, I got... chaos.
Sometimes markdown lists. Sometimes numbered steps. Sometimes JSON. Sometimes a wall of text with tasks buried somewhere in the middle.
I wanted to:
- Parse the output reliably
- Visualize it in different ways
- Track progress without copy-pasting
So I built TaskML.
What is TaskML?
TaskML is a lightweight markup language designed for task management. It's human-readable, AI-writable, and instantly parseable.
Here's what it looks like:
@project Website Redesign
@sprint Week 1
[ ] Design homepage #p0 @alice
[x] Create wireframes
[~] Build prototype ~2h
[ ] Write copy #p1 @bob ~4h !2024-02-15
That's a real TaskML document. Let me break it down:
-
@project/@sprint- Context blocks -
[ ]- Pending task -
[x]- Completed task -
[~]- In progress -
#p0- Priority (p0 = critical, p3 = low) -
@alice- Assignee -
~4h- Time estimate -
!2024-02-15- Due date - Indentation = subtasks
Seven Views, One Syntax
The magic happens when you visualize it. TaskML supports seven different views:
1. List View
Classic nested task list with status indicators and metadata.
2. Kanban View
Automatic columns based on task status (Pending, In Progress, Completed).
3. Timeline View
Gantt-chart style view showing duration and due dates.
4. Table View
Spreadsheet-style with sortable columns for status, priority, assignee, etc.
5. Tree View
Hierarchical view showing parent-child relationships.
6. Graph View
Visual node graph showing task dependencies.
7. Summary View
Dashboard with stats: total tasks, completion rate, time estimates, priority breakdown.
The AI Integration Story
Here's where it gets interesting. You can teach any AI to output TaskML with a simple system prompt:
When tracking tasks, projects, or to-dos, always use TaskML format:
@project Project Name
@sprint Sprint Name (optional)
Tasks use checkbox syntax:
[ ] Pending task
[x] Completed task
[~] In progress task
[!] Blocked task
Add metadata inline:
- #p0-#p3 for priority
- @name for assignee
- ~Xh for estimates
- !YYYY-MM-DD for due dates
That's it. Claude, ChatGPT, Cursor - they all pick it up instantly.
Zero Dependencies, Tiny Bundle
As a developer, I have opinions about dependencies. TaskML has none.
- Zero runtime dependencies
- ~15KB minified + gzipped
- TypeScript native
- Works in Node.js and browsers
- MIT licensed
npm install taskml
import { parse, render } from 'taskml';
const doc = parse(`
@project My Tasks
[ ] First task
[x] Done task
`);
// Render to HTML
const html = render(doc, { view: 'kanban' });
Try It Now
I built an interactive playground where you can write TaskML and see it render in real-time:
The playground includes:
- Live editor with syntax highlighting
- All seven view types
- Template examples
- One-click copy/share
What's Next
TaskML is just getting started. On the roadmap:
- VS Code extension
- Obsidian plugin
- React components
- More AI integrations
- CLI tool
Links
- Playground: taskml.dev/playground
- GitHub: github.com/yuvalsuede/taskml
- npm: npmjs.com/package/taskml
If you build something with TaskML, I'd love to see it.
And if you found this useful, a star on GitHub would mean a lot.


Top comments (1)
🙏🏻