@tmddev/tmd
v0.3.3
Published
Task Markdown Driven - A lightweight PDCA cycle management framework integrated with OpenSpec
Maintainers
Readme
TMD - Task Markdown Driven
Ten seconds to Ten minutes Task Markdown Driven Development!
A lightweight PDCA cycle management framework integrated with OpenSpec for specification-driven development.
🌐 Website
This project is available at: https://tmdd.dev
Overview
Ten seconds to Ten minutes Task Markdown Driven Development!
TMD (Task Markdown Driven) combines OpenSpec's specification-driven development with the PDCA (Plan-Do-Check-Act) continuous improvement methodology. It provides a structured, traceable development management tool that ensures transparency and traceability through documentation-driven processes.
At the core of TMD is the principle that tasks should be pee-break (10 seconds to 10 minutes) sized - small, atomic, and completable in a single focused session.
Features
- PDCA Cycle Management: Four-phase commands for Plan, Do, Check, and Act
- Pipe Execution: Automated PDCA cycles without human input for CI/CD and AI agent workflows
- Ten sec to Ten min Task!: Tasks are designed to be pee-break (10 seconds to 10 minutes) sized for quick completion
- Built-in Spec Engine: OpenSpec-compatible specs/changes without external
openspec - Skills System: Reusable capabilities for AI agents with cross-agent invocation support
- Step Executors: Built-in executors for bash commands, file operations, and API calls
- English Language Standard: All documents and specifications use English
- Markdown-Based: All documentation stored in Markdown format
- CLI Interface: Simple command-line interface with aliases
Installation
Prerequisites
- Node.js >= 20.19.0 or Bun >= 1.0 — Check with
node --versionorbun --version
Install the CLI globally
Option A: Using npm
npm install -g @tmddev/tmd@latestVerify installation:
tmd --versionOption B: Using pnpm
pnpm install -g @tmddev/tmd@latestOption C: Use locally
git clone https://github.com/sdd330/tmd.git
cd tmd
pnpm install
pnpm run build
pnpm link --global # Optional: link for local developmentOption D: Using Bun
bun install -g @tmddev/tmd@latest
# or run without global install:
bun x @tmddev/tmd --version
bun run tmd --help # when in a project with @tmddev/tmd as a dependencyIn the TMD repo: bun install, bun run build, bun run test, and bun ./bin/tmd.js --version are all supported.
Install from source
Prerequisites: Node.js >=20.19.0 or Bun >=1.0, pnpm, Rust (for the tmd-skills binary), git.
git clone https://github.com/sdd330/tmd.git
cd tmd
pnpm install
pnpm build # includes the tmd-skills native binary
pnpm link --global # optional: use `tmd` from this buildOptional:
pnpm build:native— Rebuild only thetmd-skillsRust binary (faster when only Rust code changed)../bin/agent-browser install— When using the agent-browser skill, install the agent-browser CLI if this script is provided (e.g. by the agent-browser project; skip if not present).
Example: install a skill from an ecosystem repo (defaults to npx skills), then re-index into the skills DB:
# List skills in a repo
tmd skills add vercel-labs/agent-skills --list
# Install a specific skill to the current project (non-interactive)
tmd skills add vercel-labs/agent-skills --skill web-design-guidelines -y
# If the Desktop UI doesn't show it yet:
tmd skills syncQuick Start
1. Create a Plan
tmd plan "Generate README in different languages"
# or use alias
tmdp "Generate README in different languages"This creates:
- Task directory structure
- Plan document template
- Resources document
Important: Task Size Guidelines - Ten sec to Ten min Task!
Tasks in the plan should be atomic and completable in pee-break (10 seconds to 10 minutes) sized tasks. This ensures:
- Tasks are actionable and completable by AI agents or humans
- Progress tracking is meaningful (tasks are either done or not done)
- No task requires complex multi-step coordination
- Agent Skills can be designed to complete individual tasks
Good atomic tasks:
- "Add import statement"
- "Update function signature"
- "Create test file"
- "Fix typo in documentation"
Tasks to break down:
- "Implement authentication and authorization" → Break into: "Add auth middleware", "Create login endpoint", "Add password validation"
- "Create API and update frontend" → Break into: "Create API endpoint", "Update frontend component", "Add API integration"
2. Execute (Do Phase)
tmd do <task-id>
# or use alias
tmdd <task-id>This creates:
- Execution document
- Data collection document
3. Check Results
tmd check <task-id>
# or use alias
tmdc <task-id>This creates:
- Evaluation document
- Deviation analysis document
4. Act on Results
tmd act <task-id>
# or use alias
tmda <task-id>This creates:
- Improvement actions document
- Standardization document (if
--standardizeflag is used)
Task Size Principle
Ten seconds to Ten minutes Task Markdown Driven Development!
Tasks should be pee-break (10 seconds to 10 minutes) sized.
This principle ensures tasks are:
- Atomic: Cannot be meaningfully broken down further
- Actionable: Clear single action that can be completed
- Trackable: Either done or not done (no partial states)
- Agent-friendly: Suitable for AI agent autonomous execution
- Skill-compatible: Can be completed by a single Agent Skill
Guidelines
- ✅ Good: "Add import statement", "Update function signature", "Create test file"
- ❌ Too large: "Implement authentication and authorization", "Create API and update frontend"
- 💡 Break down large tasks into smaller atomic tasks before planning
Commands
For a full reference, run tmd --help (and tmd <command> --help), or see docs/.
Common workflow (PDCA)
tmd init
tmd plan "Describe the work"
tmd do <task-id>
tmd check <task-id>
tmd act <task-id>Skills (npx-first)
tmd skills add <source>defaults to the ecosystem CLI (npx skills add), installs skills under{project_root}/.agents/skills/<name>, and then indexes them into{project_root}/.tmd/skills.db.tmd skills syncre-indexes{project_root}/.agents/skills/into{project_root}/.tmd/skills.db.
See docs/skills.md for commands, flags, and troubleshooting.
Desktop
tmd uilaunches the Desktop app (browse tasks, skills, agents, config)
Directory Structure
.tmd/
├── plan/
│ └── [task-id]/
│ ├── plan.md
│ └── resources.md
├── do/
│ └── [task-id]/
│ ├── execution.md
│ └── data.md
├── check/
│ └── [task-id]/
│ ├── evaluation.md
│ └── deviation.md
├── act/
│ └── [task-id]/
│ ├── improvement.md
│ └── standardization.md.agents/
└── skills/
└── [skill-name]/
├── SKILL.md
├── steps.yaml
├── config.yaml
└── metadata.yamlExamples
Example 1: Generate README in Different Languages
# Plan (with atomic tasks in plan.md)
tmd plan "Generate README in different languages"
# Tasks in plan.md should be broken down, e.g.:
# - [ ] Read README.md template file
# - [ ] Extract translatable sections
# - [ ] Translate content to Chinese
# - [ ] Translate content to Spanish
# - [ ] Generate README.zh.md
# - [ ] Generate README.es.md
# - [ ] Validate markdown syntax
# - [ ] Update language index in main README
# Do
tmd do 20240115-generate-readme-different-languages
# Check
tmd check 20240115-generate-readme-different-languages --compare
# Act
tmd act 20240115-generate-readme-different-languages --standardize --completeNote: The plan should break down the high-level goal into atomic pee-break (10 seconds to 10 minutes) sized tasks (Ten sec to Ten min Task!) in the Tasks section of plan.md.
Example 2: Using Skills
# Create a skill
tmd plan "As a developer, I want to generate README files in multiple languages, so as to make the project accessible to international contributors" --skill
# Use the skill in a new task
tmd plan "Generate README for new project" --use-skill generate-readme-multilang
# Execute the skill
tmd do <task-id> --skill generate-readme-multilangExample 3: Automated Pipe
# Create a plan with tasks
tmd plan "Build and deploy application"
# Initialize pipe configuration
tmd pipe init 20260123-build-and-deploy-application
# Preview what will happen (dry run)
tmd pipe run 20260123-build-and-deploy-application --dry-run
# Run the full automated PDCA cycle
tmd pipe run 20260123-build-and-deploy-application
# Check pipe status
tmd pipe status 20260123-build-and-deploy-applicationOutput:
Pipe: 20260123-build-and-deploy-application
──────────────────────────────────────────────────
Phase: DO
Tasks to execute: 5/5
Phase do completed
Phase: CHECK
Goals met: 3/3
Phase check completed
Phase: ACT
Task marked as completed
Phase act completed
──────────────────────────────────────────────────
Pipe completed successfullyExample 4: Feishu CLI Integration
# List available Feishu chats
tmd feishu chats
# List chats in JSON format
tmd feishu chats --json
# Get messages from a chat
tmd feishu messages --chat-id oc_1234567890abcdef
# Get messages with pagination and sorting
tmd feishu messages --chat-id oc_1234567890abcdef --page-size 20 --sort-type ByCreateTimeAsc
# Send a message to a Feishu chat
tmd feishu message send --chat-id oc_1234567890abcdef --message "Hello from TMD!"
# Reply to a message
tmd feishu message reply --message-id om_1234567890abcdef --message "This is a reply"
# Get a specific message
tmd feishu message get --message-id om_1234567890abcdef
# Get message in JSON format
tmd feishu message get --message-id om_1234567890abcdef --jsonNote: Feishu commands require credentials to be configured. Use tmd ui to open the desktop application and configure feishu_app_id and feishu_app_secret in Settings.
Language Standard
All documents and specifications use English. The system:
- Generates all templates in English
- Validates user input (warns if non-English detected)
- Enforces English for OpenSpec specifications
Development
# Install dependencies
pnpm install
# Build
pnpm run build
# Development mode (watch)
pnpm run dev
# Test
pnpm testHow It Works
TMD follows the PDCA (Plan-Do-Check-Act) cycle:
┌────────────────────┐
│ Plan │
│ Define objectives │
│ Set goals & tasks │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ Do │
│ Execute tasks │
│ Collect data │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ Check │
│ Evaluate results │
│ Analyze deviations │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ Act │
│ Improve & │
│ Standardize │
└────────────────────┘Contributing
Contributions are welcome! Please ensure all documentation follows the English language standard.
Development
# Install dependencies
pnpm install
# Build
pnpm run build
# Test
pnpm test
# Development mode (watch)
pnpm run dev
# Lint
pnpm lintSee MAINTAINERS.md for maintainer information.
License
Apache-2.0
