Skip to main content
TaskGraph started as a fork of Task Master and reads the same task format. taskgraph init --from-taskmaster sets up TaskGraph in a Task Master project and brings its work over.

Import

From the project root, the folder that holds .taskmaster/:
--yes skips init’s questions. Leave it out to answer them (Git, Claude Code integration, response language); the import runs the same way. Add --dry-run to see what init would do without changing anything. It prints what moved and the next step:

What moves

A file that is already in .taskgraph/ is kept. The PRD templates init writes are an example: if you changed Task Master’s templates/example_prd.txt, copy it over by hand. The task files in .taskmaster/tasks/ (task_001.txt and so on) are not copied. Run taskgraph generate to write them again.

Settings

TaskGraph runs every AI call through Claude Code, so only part of a Task Master config applies.
  • Model roles that map to Claude Code are kept. A main, research or fallback model whose ID names a Claude model (for example claude-code/opus, or anthropic/claude-sonnet-4-20250514) becomes opus, sonnet or haiku. Any other model (Perplexity, OpenAI, Gemini, Ollama and so on) is skipped, and that role keeps TaskGraph’s default, sonnet. Change it with taskgraph models --setup.
  • General settings are kept: project name, default priority, default subtask and task counts, response language, default tag, log level, codebase analysis, and from the claudeCode section the turn limit, system prompts and allowed or disallowed tools.
  • A saved task count of 10 is dropped. Task Master saves its defaults into config.json, so "defaultNumTasks": 10 is usually its default rather than your choice. Without it, parse-prd sizes the task list to the PRD. Any other count is kept. To keep asking for about 10 tasks, set global.defaultNumTasks to 10 again or pass --num-tasks 10.
  • Provider and API-key settings are dropped: base URLs (Ollama, Bedrock, Azure), the Vertex project, the user ID, any API key, and settings for providers TaskGraph removed.
  • Risky claudeCode settings are dropped: mcpServers (its env and headers can hold secrets), pathToClaudeCodeExecutable, permissionMode and commandSpecific. Set them again in .taskgraph/config.json if you need them.
The import refuses a .taskmaster/ file or folder that is a link to somewhere outside it, and a .taskgraph/ path that is a link to somewhere outside the project, so a checked-out project can’t make it read or write elsewhere. API keys in .env or .mcp.json are not read or copied. TaskGraph needs none; see Authentication.

If .taskgraph/ already has tasks

The import won’t replace tasks that are already there:
An empty task list, like the one a plain taskgraph init creates, is fine to import over.

After the import

.taskmaster/ is left exactly as it was, so you can compare the two. When you’re happy with the result:
  1. Check the tasks: taskgraph tags, then taskgraph list.
  2. Remove .taskmaster/ (git rm -r .taskmaster or rm -r .taskmaster).
  3. Update anything else that names Task Master: .taskmaster/ paths in CLAUDE.md, .gitignore, scripts or CI, TASK_MASTER_* environment variables, and the task-master-ai server in .mcp.json. The upgrade guide lists each rename.