DEV Community

Cover image for I Built a Markup Language for AI Agent Task Output
Yuval
Yuval

Posted on

I Built a Markup Language for AI Agent Task Output

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:

  1. Parse the output reliably
  2. Visualize it in different ways
  3. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
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' });
Enter fullscreen mode Exit fullscreen mode

Try It Now

I built an interactive playground where you can write TaskML and see it render in real-time:

taskml.dev/playground

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


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)

Collapse
 
wickedguro profile image
Nevo David

🙏🏻