File-based issue tracker that lives inside your git repository. Manage issues, projects, milestones, ADRs, RFCs, PRDs, and more — all through Claude Code.
Inspired by Linear, but stored as Markdown files with YAML frontmatter in a .taskdot/ directory.
- Issues with priorities, labels, assignees, relations (blocks/blockedBy), and comments
- Projects with milestones and progress tracking
- Teams and Users with role-based organization
- Labels for categorization
- ADRs (Architecture Decision Records) with RFC/PRD linking
- RFCs (Request for Comments) with review workflow
- PRDs (Product Requirements Documents) with issue linking
- Documents for external references
- HTML Viewer — interactive dashboard with kanban board, list view, filters, and dark/light theme
- Linear Import — full workspace import via Linear MCP tools
- Claude Code CLI installed
- Node.js (for the viewer server)
- Git
git clone <repo-url> taskdot
cd taskdotAdd the following entry to ~/.claude/plugins/known_marketplaces.json:
{
"taskdot-marketplace": {
"source": {
"source": "directory",
"path": "/absolute/path/to/taskdot"
},
"installLocation": "/absolute/path/to/taskdot",
"lastUpdated": "2026-01-01T00:00:00.000Z"
}
}Replace /absolute/path/to/taskdot with the actual path where you cloned the repo.
Open Claude Code and run:
/plugin
Select taskdot from the list and install it. Then:
/reload-plugins
Navigate to any git repository and run:
/taskdot:init MyProject
This creates a .taskdot/ directory with:
.taskdot/
├── config.yml # Project configuration and counters
├── viewer.html # Static HTML viewer (committed to git)
├── issues/ # IS-0001.md, IS-0002.md, ...
├── comments/ # CM-0001.md, ...
├── projects/ # PJ-0001.md, ...
├── milestones/ # ML-0001.md, ...
├── documents/ # DC-0001.md, ...
├── teams/ # TM-0001.md, ...
├── users/ # US-0001.md, ...
├── labels/ # LB-0001.md, ...
├── adrs/ # ADR-0001.md, ...
├── rfcs/ # RFC-0001.md, ...
└── prds/ # PRD-0001.md, ...
| Command | Description |
|---|---|
/taskdot:init [name] |
Initialize tracker in current repo |
/taskdot:issue [title] |
Create a new issue |
/taskdot:issue IS-0001 status="Done" |
Update an existing issue |
/taskdot:list |
List all open issues |
/taskdot:list assignee=me |
List issues assigned to you |
/taskdot:status |
Show project dashboard |
/taskdot:view |
Start viewer server and open browser |
/taskdot:import |
Import from Linear (requires Linear plugin) |
These activate automatically based on what you ask:
- issues — Create, update, list, search, delete issues and comments
- projects — Manage projects, milestones, and documents
- workflow — Manage teams, users, labels, and statuses
- adrs — Create and manage Architecture Decision Records
- rfcs — Create and manage Requests for Comments
- prds — Create and manage Product Requirements Documents
- viewer — Generate and serve the HTML dashboard
- import — Import data from Linear via MCP tools
The viewer is a self-contained HTML dashboard served by a local Node.js server:
/taskdot:view
This starts a server on http://localhost:24180 that reads .taskdot/ files directly. Features:
- Kanban board and list views
- Filter by status, priority, assignee, label
- Full-text search
- Issue detail panel with comments
- Dashboard with stats, progress, and recent activity
- Sidebar navigation (Issues, Projects, Teams, Users, ADRs, RFCs, PRDs)
- Dark/light theme toggle
To import your entire Linear workspace:
- Install the Linear plugin via
/plugin - Authenticate with
/mcp(select Linear) - Initialize Taskdot:
/taskdot:init - Import:
/taskdot:import
The import uses Linear MCP tools to pull all users, teams, labels, projects, milestones, issues (with relations), comments, and documents.
All entities are Markdown files with YAML frontmatter:
---
id: "IS-0001"
title: "Fix login timeout"
status: "In Progress"
priority: 2
assignee: "US-0001"
team: "TM-0001"
labels: ["LB-0001"]
createdAt: "2026-03-28T10:00:00Z"
updatedAt: "2026-03-28T14:30:00Z"
createdBy: "US-0001"
---
## Description
The login form times out after 5 seconds on slow connections.| Value | Meaning |
|---|---|
| 0 | None |
| 1 | Urgent |
| 2 | High |
| 3 | Normal |
| 4 | Low |
- Issue -> PRD:
prdIdfield on issues - ADR -> Issue:
issueIdfield on ADRs - ADR -> RFC/PRD:
relatedRfcsandrelatedPrdsfields on ADRs - Issue relations:
blocks,blockedBy,relatedTo,duplicateOf
taskdot/
├── .claude-plugin/
│ └── marketplace.json # Marketplace definition
├── plugin/
│ ├── .claude-plugin/
│ │ └── plugin.json # Plugin manifest
│ ├── commands/ # Slash commands
│ ├── agents/ # Taskdot manager agent
│ ├── skills/ # Auto-triggered skills
│ │ ├── issues/
│ │ ├── projects/
│ │ ├── workflow/
│ │ ├── adrs/
│ │ ├── rfcs/
│ │ ├── prds/
│ │ ├── viewer/
│ │ └── import/
│ └── scripts/ # Server and utilities
├── docs/ # Plans and specs
└── README.md
MIT
