I Built a Markup Language for AI Agent Task Output

Published: (January 18, 2026 at 08:30 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

Introduction

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 TaskML Looks Like

TaskML is a lightweight markup language designed for task management. It’s human‑readable, AI‑writable, and instantly parseable.

@project Website Redesign
@sprint Week 1

[ ] Design homepage #p0 @alice
  [x] Create wireframes
  [~] Build prototype ~2h
[ ] Write copy #p1 @bob ~4h !2024-02-15

Syntax Overview

  • @project / @sprint – Context blocks
  • [ ] – Pending task
  • [x] – Completed task
  • [~] – In progress
  • [!] – Blocked task
  • #p0 – Priority (p0 = critical, p3 = low)
  • @alice – Assignee
  • ~2h – Time estimate
  • !2024-02-15 – Due date
  • Indentation – Subtasks

Visualizations

TaskML supports seven different views:

  1. Classic nested task list with status indicators and metadata.
  2. Automatic columns based on task status (Pending, In Progress, Completed).
  3. Gantt‑chart style view showing duration and due dates.
  4. Spreadsheet‑style with sortable columns for status, priority, assignee, etc.
  5. Hierarchical view showing parent‑child relationships.
  6. Visual node graph showing task dependencies.
  7. Dashboard with stats: total tasks, completion rate, time estimates, priority breakdown.

Using TaskML with AI

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

Claude, ChatGPT, Cursor—and many others—pick it up instantly.

Implementation Details

  • Zero runtime dependencies
  • ~15 KB minified + gzipped
  • TypeScript native
  • Works in Node.js and browsers
  • MIT licensed

Installation

npm install taskml

Basic Usage (TypeScript/JavaScript)

import { parse, render } from 'taskml';

const doc = parse(`
  @project My Tasks
  [ ] First task
  [x] Done task
`);

// Render to HTML (e.g., Kanban view)
const html = render(doc, { view: 'kanban' });

Interactive Playground

Try TaskML live at taskml.dev/playground. The playground includes:

  • Live editor with syntax highlighting
  • All seven view types
  • Template examples
  • One‑click copy/share

Roadmap

  • VS Code extension
  • Obsidian plugin
  • React components
  • More AI integrations
  • CLI tool

Call to Action

If you build something with TaskML, I’d love to see it.
A star on GitHub would mean a lot.

Back to Blog

Related posts

Read more »

Rapg: TUI-based Secret Manager

We've all been there. You join a new project, and the first thing you hear is: > 'Check the pinned message in Slack for the .env file.' Or you have several .env...

Technology is an Enabler, not a Saviour

Why clarity of thinking matters more than the tools you use Technology is often treated as a magic switch—flip it on, and everything improves. New software, pl...