๐Ÿ”ง Claude Task Master ์™„์ „ ์„ค์ • ๊ฐ€์ด๋“œ

โ€“ AI ๊ฐœ๋ฐœ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ config.json ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Claude Task Master๋Š” AI ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์ž๋™ํ™” ๋„๊ตฌ๋กœ, ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ๊ณผ์˜ ์—ฐ๋™์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํ˜์‹ ์ ์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๊ณต์‹ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ(configuration.md)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, Task Master์˜ ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ง Task Master ๊ตฌ์„ฑ ๊ฐœ์š”

Task Master๋Š” .task-master/config.json ํŒŒ์ผ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ ํŒŒ์ผ์€ AI ๋ชจ๋ธ ์„ค์ •, API ํ‚ค ๊ด€๋ฆฌ, ์ž‘์—… ์ €์žฅ์†Œ ๊ฒฝ๋กœ ๋“ฑ ํ•ต์‹ฌ์ ์ธ ์„ค์ •์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ ์˜ˆ์‹œ

{
  "models": {
    "main": "claude-3-sonnet-20240229",
    "research": "perplexity",
    "fallback": "gpt-4"
  },
  "env": {
    "ANTHROPIC_API_KEY": "your-anthropic-api-key",
    "OPENAI_API_KEY": "your-openai-api-key",
    "PERPLEXITY_API_KEY": "your-perplexity-api-key"
  },
  "taskStorage": "./tasks"
}
  • models: ์ฃผ์š” ์ž‘์—…์— ์‚ฌ์šฉํ•  AI ๋ชจ๋ธ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • env: ๊ฐ AI ๋ชจ๋ธ์— ํ•„์š”ํ•œ API ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • taskStorage: ์ž‘์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿง  AI ๋ชจ๋ธ ์„ค์ •

Task Master๋Š” ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ๊ณผ์˜ ์—ฐ๋™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์„ค์ • ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • main: ๊ธฐ๋ณธ ์ž‘์—…์— ์‚ฌ์šฉํ•  ๋ชจ๋ธ (์˜ˆ: claude-3-sonnet-20240229)
  • research: ์กฐ์‚ฌ ์ž‘์—…์— ์‚ฌ์šฉํ•  ๋ชจ๋ธ (์˜ˆ: perplexity)
  • fallback: ๊ธฐ๋ณธ ๋ชจ๋ธ์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ๋Œ€์ฒด ๋ชจ๋ธ (์˜ˆ: gpt-4)(GitHub)

๊ฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ API ํ‚ค๋Š” env ํ•ญ๋ชฉ์— ์„ค์ •ํ•˜๋ฉฐ, ์ด๋Š” ๋ณด์•ˆ์ƒ .env ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


๐Ÿ—‚๏ธ ์ž‘์—… ์ €์žฅ์†Œ ๊ฒฝ๋กœ ์„ค์ •

taskStorage ํ•ญ๋ชฉ์„ ํ†ตํ•ด ์ž‘์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ./tasks์ด๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


โš™๏ธ ๊ตฌ์„ฑ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™”

Task Master๋ฅผ ์„ค์น˜ํ•œ ํ›„, ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

task-master init

๋˜๋Š” MCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์—๋””ํ„ฐ์—์„œ Claude์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Task Master๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ค˜.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด .task-master/config.json ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ์ดํ›„ ํ•„์š”ํ•œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ๊ณ ๊ธ‰ ์„ค์ •: ๋ชจ๋ธ ๊ตฌ์„ฑ ๊ด€๋ฆฌ

Task Master๋Š” task-master models ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด AI ๋ชจ๋ธ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๋ชจ๋ธ ๋ชฉ๋ก ํ™•์ธ:
    task-master models

(GitHub)

  • ๋ชจ๋ธ ์„ค์ • ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰:
    task-master models –setup

(GitHub)

  • ํŠน์ • ์—ญํ• ์— ๋ชจ๋ธ ์„ค์ •:
    task-master models –set-main claude-3-sonnet-20240229
    task-master models –set-research perplexity
    task-master models –set-fallback gpt-4

(GitHub)

์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ ์—ญํ• ์— ์ ํ•ฉํ•œ AI ๋ชจ๋ธ์„ ์†์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿงช MCP ์—ฐ๋™์„ ์œ„ํ•œ ๊ตฌ์„ฑ

Cursor์™€ ๊ฐ™์€ ์—๋””ํ„ฐ์—์„œ MCP๋ฅผ ํ™œ์šฉํ•˜๋ ค๋ฉด, .cursor/mcp.json ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

{
  "tools": {
    "taskmaster-ai": {
      "command": "npx",
      "args": ["-y", "--package=task-master-ai", "task-master-ai"],
      "env": {
        "ANTHROPIC_API_KEY": "your-anthropic-api-key",
        "OPENAI_API_KEY": "your-openai-api-key",
        "PERPLEXITY_API_KEY": "your-perplexity-api-key"
      }
    }
  }
}

์ด ์„ค์ •์„ ํ†ตํ•ด ์—๋””ํ„ฐ ๋‚ด์—์„œ Claude์™€์˜ ์—ฐ๋™์ด ์›ํ™œํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋ฉฐ, AI ๊ธฐ๋ฐ˜์˜ ์ž‘์—… ์ž๋™ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.


โœ… ๋งˆ๋ฌด๋ฆฌ

Task Master์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์€ AI ๋ชจ๋ธ ์„ค์ •, API ํ‚ค ๊ด€๋ฆฌ, ์ž‘์—… ์ €์žฅ์†Œ ๊ฒฝ๋กœ ๋“ฑ ๋‹ค์–‘ํ•œ ์„ค์ •์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ๊ณผ์˜ ์—ฐ๋™์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.




๋‹ค์Œ์€ Claude Task Master์˜ ๊ณต์‹ ์„ค์ • ๋ฌธ์„œ ๋‚ด์šฉ์„ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค:


๐Ÿ“ฆ ์„ค์ •(Configuration)

Claude Task Master๋Š” ์„ค์ •์„ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:


1. .taskmasterconfig ํŒŒ์ผ (ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์œ„์น˜ โ€“ ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์— ๊ถŒ์žฅ)

์ด JSON ํŒŒ์ผ์—๋Š” AI ๋ชจ๋ธ ์„ ํƒ, ํŒŒ๋ผ๋ฏธํ„ฐ, ๋กœ๊ทธ ๋ ˆ๋ฒจ, ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ๊ฐ’ ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ” ์œ„์น˜

  • task-master models --setup ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๊ธฐํ™” ๊ณผ์ • ์ค‘์— ์ด ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ฃผ์˜: ์ด ํŒŒ์ผ์€ ์ˆ˜๋™์œผ๋กœ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ temperature์™€ maxTokens ์ •๋„๋งŒ ์กฐ์ •ํ•˜์„ธ์š”.

๐Ÿ›  ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

  • task-master models --setup ๋ช…๋ น ๋˜๋Š” MCP ๋‚ด models ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•˜๊ฒŒ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์„ ์ง์ ‘ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
task-master models --set-main=claude-3-7-sonnet-20250219
task-master models --set-research=sonar-pro
task-master models --set-fallback=claude-3-5-sonnet
  • ์ปค์Šคํ…€ ๋ชจ๋ธ์„ ์“ฐ๋ ค๋ฉด --ollama ๋˜๋Š” --openrouter ํ”Œ๋ž˜๊ทธ๋„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงพ ์˜ˆ์‹œ ๊ตฌ์กฐ

{
  "models": {
    "main": {
      "provider": "anthropic",
      "modelId": "claude-3-7-sonnet-20250219",
      "maxTokens": 64000,
      "temperature": 0.2
    },
    "research": {
      "provider": "perplexity",
      "modelId": "sonar-pro",
      "maxTokens": 8700,
      "temperature": 0.1
    },
    "fallback": {
      "provider": "anthropic",
      "modelId": "claude-3-5-sonnet",
      "maxTokens": 64000,
      "temperature": 0.2
    }
  },
  "global": {
    "logLevel": "info",
    "debug": false,
    "defaultSubtasks": 5,
    "defaultPriority": "medium",
    "projectName": "Your Project Name",
    "ollamaBaseUrl": "http://localhost:11434/api",
    "azureOpenaiBaseUrl": "https://your-endpoint.openai.azure.com/"
  }
}

2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ (.env ๋˜๋Š” .cursor/mcp.json ๋‚ด env ๋ธ”๋ก)

API ํ‚ค ๋ฐ ์—”๋“œํฌ์ธํŠธ URL ๋“ฑ ๋ฏผ๊ฐํ•œ ์ •๋ณด์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์œ„์น˜

  • CLI ์‚ฌ์šฉ ์‹œ: ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env ํŒŒ์ผ ์ƒ์„ฑ
  • MCP/Cursor ์‚ฌ์šฉ ์‹œ: .cursor/mcp.json ํŒŒ์ผ์˜ env ์„น์…˜์— API ํ‚ค ์„ค์ •

๐Ÿ”‘ ํ•„์ˆ˜ API ํ‚ค ๋ชฉ๋ก (์„ค์ •ํ•œ ํ”„๋กœ๋ฐ”์ด๋”์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)

  • ANTHROPIC_API_KEY: Anthropic API ํ‚ค
  • PERPLEXITY_API_KEY: Perplexity API ํ‚ค
  • OPENAI_API_KEY: OpenAI API ํ‚ค
  • GOOGLE_API_KEY: Google API ํ‚ค
  • MISTRAL_API_KEY: Mistral API ํ‚ค
  • AZURE_OPENAI_API_KEY: Azure์šฉ OpenAI API ํ‚ค
    • ์ด ๊ฒฝ์šฐ AZURE_OPENAI_ENDPOINT๋„ ํ•จ๊ป˜ ํ•„์š”
  • OPENROUTER_API_KEY: OpenRouter API ํ‚ค
  • XAI_API_KEY: X-AI API ํ‚ค

๐ŸŒ ์„ ํƒ์  ์—”๋“œํฌ์ธํŠธ ์žฌ์ •์˜ (.taskmasterconfig์—์„œ ์„ค์ •)

  • AZURE_OPENAI_ENDPOINT: Azure ์‚ฌ์šฉ ์‹œ ํ•„์ˆ˜
  • OLLAMA_BASE_URL: ๊ธฐ๋ณธ Ollama API URL์„ ์žฌ์ •์˜ ๊ฐ€๋Šฅ (๊ธฐ๋ณธ: http://localhost:11434/api)

โš ๏ธ ๋ชจ๋ธ ID, maxTokens, temperature, logLevel, subtasks ๋“ฑ์€ .taskmasterconfig์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ, .env์—์„œ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ’ก .env ์˜ˆ์‹œ

# ํ•„์š”ํ•œ API ํ‚ค
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
PERPLEXITY_API_KEY=pplx-your-key-here
# OPENAI_API_KEY=sk-your-key-here
# GOOGLE_API_KEY=AIzaSy...

# ์„ ํƒ์  ์—”๋“œํฌ์ธํŠธ ์žฌ์ •์˜
# AZURE_OPENAI_ENDPOINT=https://your-azure-endpoint.openai.azure.com/
# OLLAMA_BASE_URL=http://custom-ollama-host:11434/api

๐Ÿ›  ๋ฌธ์ œ ํ•ด๊ฒฐ (Troubleshooting)

โš ๏ธ ์„ค์ • ์˜ค๋ฅ˜

  • .taskmasterconfig ํŒŒ์ผ์ด ์—†๊ฑฐ๋‚˜ ๊ตฌ์„ฑ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด: task-master models --setup ์„ ์‹คํ–‰ํ•˜์—ฌ ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ณต๊ตฌํ•˜์„ธ์š”.
  • API ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธ:
    • CLI ์‚ฌ์šฉ์ž: .env ํŒŒ์ผ
    • MCP ์‚ฌ์šฉ์ž: .cursor/mcp.json ํŒŒ์ผ

โŒ task-master init ๋ช…๋ น์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ

node node_modules/claude-task-master/scripts/init.js

๋˜๋Š” GitHub ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ํด๋ก ํ•ด์„œ ์‹คํ–‰:

git clone https://github.com/eyaltoledano/claude-task-master.git
cd claude-task-master
node scripts/init.js

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค