Skip to content

Repository files navigation

- [x] TaskMark

A TypeScript library for parsing and stringifying TaskMark-v1 formatted tasks. TaskMark-v1 is a strict Markdown syntax for describing structured tasks enriched with semantic metadata, hierarchical tags, and focus emojis.

Features

  • Full TaskMark-v1 compliance - Implements the complete TaskMark-v1 specification
  • TypeScript - Fully typed with comprehensive type definitions
  • Parse & Stringify - Convert between TaskMark strings and structured Task objects
  • Utility Functions - Helper functions for modifying task strings without full parsing
  • Internationalization - Support for custom tags and scenario prefixes
  • Validation - Built-in validation using Zod schemas
  • ESM and CJS - Supports both module systems

Installation

npm install taskmark

Quick Start

Basic Parsing

import{parse}from'taskmark';consttaskString='- [ ] 🎯 Write report #Tasks/Main_Mission 🌡️ high ⏱️ 90m 📅 2025-01-20';consttask=parse(taskString);console.log(task);// {// content: "Write report",// type: "main_mission",// focuses: ["critical"],// energy: "high",// duration: "90m",// dueAt: "2025-01-20",// ...// }

Basic Stringifying

import{stringify}from'taskmark';consttask={state: 'incomplete',content: 'Write report',type: 'main_mission',tags: ['Tasks/Main_Mission'],focuses: ['critical'],energy: 'high',duration: '90m',dueAt: '2025-01-20',priority: 'normal',};consttaskString=stringify(task);// Returns: "- [ ] 🎯 Write report #Tasks/Main_Mission 🌡️ high ⏱️ 90m 📅 2025-01-20"

Utility Functions

import{markAsCompleted,setDueDate,addFocus}from'taskmark';lettask='- [ ] Buy groceries #Tasks/Quick';// Mark as completed (adds completion date automatically)task=markAsCompleted(task);// Returns: "- [x] Buy groceries #Tasks/Quick ✅ 2025-01-15"// Set due datetask=setDueDate(task,'2025-01-20');// Returns: "- [x] Buy groceries #Tasks/Quick ✅ 2025-01-15 📅 2025-01-20"// Add focus emojitask=addFocus(task,'critical');// Returns: "- [x] 🎯 Buy groceries #Tasks/Quick ✅ 2025-01-15 📅 2025-01-20"

TaskMark-v1 Format

TaskMark-v1 tasks follow this structure:

- [<state>] <focuses> <content> <tags> <energy> <duration> <dates> <priority> <dependencies>

Example Task

- [ ] 🎯🔥 Implement authentication #Tasks/Main_Mission #Scenarios/Work/Programming 🧠 🌡️ high ⏱️ 90m 🔺 ➕ 2025-01-10 ⏳ 2025-01-11 📅 2025-01-12 🆔 auth01 ⛔ task02

This task includes:

  • State: [ ] (incomplete)
  • Focuses: 🎯 (critical), 🔥 (hyper-focus), 🧠 (hard cognitive)
  • Type: #Tasks/Main_Mission
  • Scenarios: #Scenarios/Work/Programming
  • Energy: 🌡️ high
  • Duration: ⏱️ 90m
  • Priority: 🔺 (maximum)
  • Dates: Created (➕), Scheduled (⏳), Due (📅)
  • ID: 🆔 auth01
  • Dependencies: ⛔ task02

Documentation

Development

Setup

npm install

Build

npm run build

Testing

# Run tests once
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage

Linting

# Check for linting errors
npm run lint
# Fix linting errors
npm run lint:fix
# Format code
npm run format

Type Checking

npm run typecheck

Documentation

The documentation is built with Docsify and published to GitHub Pages.

# Serve documentation locally
npm run docs:serve

Visit the documentation at: https://aitorllj93.github.io/taskmark/

License

MIT

About

The Markdown Tasks specification

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages