@gonzui/claude-task-manager
v1.7.0
Published
Task management extension for Claude Code with archiving and history
Downloads
972
Maintainers
Readme
Claude Task Manager
日本語版: README.ja.md をご覧ください。
A powerful task management extension for Claude Code that automates task tracking and execution.
Features
- 📝 Markdown-based Task Management: Tasks are stored in
task.mdfiles that can be directly read by Claude Code - 🚀 Seamless Claude Code Integration: Execute tasks directly through Claude Code with full context
- 🗂️ Automatic Archiving: Completed tasks are automatically archived with timestamps
- 🏷️ Priority and Tags: Organize tasks with priority levels (high/medium/low) and custom tags
- 📊 Task History: View and track all completed tasks
- 🎯 Custom Commands: Automatically creates
/taskcustom command for Claude Code - 🔌 MCP Server: Exposes task management to Claude Code as schema-bound MCP tools via
.mcp.json - 📟 Statusline & Hooks: Shows the current task in Claude Code's status line and injects it at session start (opt-in via
init --hooks) - 🔄 Todo Reconciliation:
task.mdstays the persistent source of truth; Claude Code's in-session todo list mirrors it one way - 📦 Plugin Packaging: One-step install of the command + skill + hook + MCP server as a Claude Code plugin
- 📈 Progress Tracking: Visual progress bar for subtask completion
- 🤖 AI Task Splitting: Automatically break down tasks into subtasks using Claude
Installation
Global Installation (Recommended)
npm install -g @gonzui/claude-task-managerLocal Installation
npm install @gonzui/claude-task-managerUsage
Initialize Project
claude-task initThis command:
- Creates necessary directories (
archive/,.claude-tasks/) - Generates initial configuration
- Creates a starter
task.mdfile - If
.claude/commands/exists, creates/taskcustom command - Updates
.gitignoreto exclude task-related files
Options:
--hooks: Also wire the current task into Claude Code's status line and session start (see Statusline & SessionStart Hook)
Git-like Directory Behavior:
- When you run any command, Claude Task Manager searches upward for a
.claude-tasksdirectory (similar to how Git finds.git) - If found, all operations use that project root, regardless of your current directory
- Example: If you
initin/projectand thencd src/components && claude-task new, the task will be created in/project/, NOT in/project/src/components/ - This ensures centralized task management across your entire project
- To create a separate task management in a subdirectory, explicitly specify the directory:
claude-task init .
Create New Task
claude-task new "Implement user authentication" --priority high --tags auth,backendOptions:
--priority: Set task priority (high/medium/low, default: medium)--tags: Add comma-separated tags
Check Current Task Status
claude-task statusDisplays:
- Current task name
- Number of archived tasks
- Last execution time
- Total execution count
Options:
--short: One-line output for statusline embedding, e.g.Implement auth ▸ 60%(title only when the task has no subtasks,No taskwhen there is none)
Execute Current Task
claude-task runExecutes the current task using Claude Code with task.md content as context.
Options:
-v, --verbose: Show verbose output-d, --debug: Show debug information (command, file path, prompt)--no-edit-permission: Disable file edit permissions for Claude (default: edit permissions enabled)
Note: By default, Claude is executed with file edit permissions (--dangerously-skip-permissions flag) to allow complete task execution. Use --no-edit-permission if you want Claude to run in read-only mode.
Work on Several Tasks
claude-task new "API rework" --name api # create alongside the current task
claude-task list # list every task with its progress
claude-task switch api # make another task the active one
claude-task switch spike --create # create it on the spotOne task is active at a time — it lives in task.md, exactly as before — but
several named tasks can coexist under .claude-tasks/tasks/<name>.md:
new --name <name>creates a task without archiving the current one and switches to it. Plainnewkeeps its classic behavior (archive and replace).switch <name>saves the active task first, so nothing in progress is lost.listmarks the active task with*and showsdone/totalper task.status --short(the statusline) becomes[<name>] <title> ▸ <pct>%.- Nothing changes until you use one of these commands: existing single-task projects are migrated transparently the first time you create or switch to a named task.
View Task History
claude-task history --limit 10Archive Current Task
claude-task archiveMoves the current task to the archive folder with a timestamp.
Track Progress
claude-task progressDisplays a visual progress bar showing subtask completion status:
📊 Task Progress
================
Progress: [████████░░░░░░░░░░░░] 40%
Completed: 2/5 tasksComplete Subtasks
claude-task done 1 3 # mark subtasks 1 and 3 as done
claude-task done --undo 1 # uncheck subtask 1Marks subtasks complete (or, with --undo, incomplete) by their number. The
numbers match the order shown by claude-task progress, and the updated
progress bar is printed afterwards.
Split Task into Subtasks
claude-task split
claude-task split --count 5Uses Claude AI to automatically break down your current task into actionable subtasks. The generated subtasks are added to your task.md file.
Options:
--count: Specify the number of subtasks to generate (default: 3-7)
Direct Claude Code Execution (deprecated)
claude-task claude "Review and optimize the database schema"Deprecated:
claudeonly prints the task content. Useclaude-task runto actually execute the current task with Claude Code.
Claude Code Integration
Plugin Installation (one step)
The repository doubles as a Claude Code plugin marketplace. Inside Claude Code:
/plugin marketplace add devgonzui-ai/claude-task-manager
/plugin install claude-task@gonzui-toolsThe plugin bundles the /task slash command, the task skill, a
SessionStart hook (injects the current task into every new session), and the
MCP server (launched via npx, so no global npm install is required for it).
Two things still need a local step:
- The
claude-taskCLI itself (used by the command, skill, and hook) comes from npm:npm install -g @gonzui/claude-task-manager, then runclaude-task initonce per project to createtask.md/archive/. - Claude Code does not let plugins set the status line, so for the statusline
either run
claude-task init --hooksor add thestatusLineentry from the Statusline & SessionStart Hook section to your settings yourself.
The plugin package lives in plugin/ and is regenerated from the
same sources as init (npm run generate:plugin), so both install paths
always ship identical content — a test fails if they drift.
Custom Command, Skill & MCP Server (via init)
If you prefer not to use the plugin, claude-task init wires up the same
integrations per-project. After running it in a project that has a .claude/
directory, three integrations are generated automatically:
- A
/taskslash command at.claude/commands/task.md - A Skill at
.claude/skills/task/SKILL.md, so newer Claude Code versions can discover task management on their own. - An MCP server registration in
.mcp.json, exposing task management as schema-bound tools (see MCP Server below).
The /task command lets you use the following directly within Claude Code:
Available Commands
/task new "Task name" [--priority high|medium|low] [--tags tag1,tag2]- Create a new task/task status- Check current task status/task run- Execute current task (displays task.md content for Claude Code to process)/task history [--limit n]- View task history/task archive- Archive completed task
Examples within Claude Code
/task new "Implement user authentication" --priority high --tags auth,backend/task status/task runThe custom command file is automatically generated in the language configured in your project settings (English or Japanese).
MCP Server
The package ships a claude-task-mcp binary — a stdio MCP server that lets Claude Code manage tasks through typed, schema-validated tools instead of assembling CLI commands:
| Tool | Description |
| --- | --- |
| task_new | Create a new task (archives the current one first) |
| task_status | Show current task and execution stats |
| task_progress | Show subtask checkbox progress |
| task_done | Mark subtasks done by number (supports undo) |
| task_split | Split the task into subtasks using AI |
| task_history | List archived tasks |
| task_archive | Archive the current task |
claude-task init registers the server in your project's .mcp.json (safe to commit — Claude Code asks for approval before using project-scoped servers):
{
"mcpServers": {
"claude-task": {
"command": "claude-task-mcp",
"args": []
}
}
}If a claude-task entry already exists in .mcp.json, init leaves it untouched. All tools route through the same TaskManager core as the CLI, so both front-ends stay consistent.
Statusline & SessionStart Hook
Run claude-task init --hooks to make the current task ambient in Claude Code.
It merges the following into .claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "claude-task status --short",
"padding": 1
},
"hooks": {
"SessionStart": [
{
"type": "command",
"command": "claude-task status"
}
]
}
}- Statusline: Claude Code's status bar shows the current task and progress,
e.g.
Implement auth ▸ 60%, refreshed as you work. - SessionStart hook: the hook's stdout is injected as context, so every new session starts already knowing the current task — no need to ask.
Existing settings are preserved: a statusLine you already configured is left
untouched, your own SessionStart hooks are kept, and re-running
init --hooks never duplicates entries. Nothing is written unless you pass the
flag, and no hook performs destructive actions (archiving stays manual).
task.md vs Claude Code's Todo List
Claude Code keeps its own in-session todo list. The two layers have distinct roles and are kept in sync one way:
| Layer | Role |
| --- | --- |
| task.md (claude-task) | Persistent, file-based, cross-session source of truth |
| Claude Code todo list | Ephemeral in-session working mirror |
The generated skill, slash command, MCP tool descriptions, and the
claude-task run prompt all instruct Claude to:
- Seed its in-session todo list from the unchecked subtasks in
task.md(viaclaude-task progress) when starting work. - Persist each finished subtask with
claude-task done <n>before checking off the mirrored todo. - Treat
task.mdas authoritative on any disagreement — re-seed the todo list fromclaude-task progress, never the other way around.
This removes double management: subtasks live in task.md and survive across
sessions, while the in-session list is just a live view of them.
task.md Format
# Task Title
**Created:** 2025-01-15 10:30:00
**Priority:** high
**Tags:** feature, backend
## Description
Detailed task description
## Tasks
- [ ] Subtask 1
- [ ] Subtask 2
- [ ] Subtask 3
## Context
<!-- Additional context for Claude Code -->
## Notes
<!-- Your notes here -->
---
*Generated by Claude Task Manager*Programmatic Usage
import { TaskManager } from '@gonzui/claude-task-manager';
const taskManager = new TaskManager('/path/to/project');
// Initialize
await taskManager.init();
// Create new task
await taskManager.createNewTask({
title: 'New Feature',
description: 'Implement new feature',
priority: 'high',
tags: ['feature', 'urgent']
});
// Get status
const status = await taskManager.getStatus();
// Execute task
const result = await taskManager.runTask();Configuration
Configuration is stored in .claude-tasks/config.json:
{
"created": "2025-01-15T10:00:00.000Z",
"taskTemplate": "...",
"claudeCommand": "claude",
"defaultTaskTitle": "New Task",
"archiveDir": "archive",
"language": "en",
"defaultPrerequisites": [
"<!-- Add prerequisites here -->"
],
"defaultRules": [
"<!-- Add rules here -->"
],
"defaultTasks": [
"Task 1",
"Task 2",
"Task 3"
]
}Array Configuration
Since v1.0.6, defaultPrerequisites, defaultRules, and defaultTasks support array format for easier editing:
{
"defaultPrerequisites": [
"<!-- Add prerequisites here -->",
"Required environment",
"Required permissions",
"Pre-setup steps"
]
}This will be automatically converted to:
## Prerequisites
<!-- Add prerequisites here -->
- Required environment
- Required permissions
- Pre-setup stepsLanguage Settings
Claude Task Manager supports multiple languages (English and Japanese):
# Check current language
claude-task lang
# Change language to Japanese
claude-task lang ja
# Change language to English
claude-task lang enThe language setting affects:
- CLI command outputs
- Task templates
- Custom command templates
- Error messages
Requirements
- Node.js >= 18.0.0
- Claude Code CLI installed and configured
Development
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Development mode
npm run dev -- [command]License
MIT
Contributing
Contributions are welcome!
Changelog
See CHANGELOG.md for the full release history.
