AgentPM
Um sistema de planejamento e orquestração para desenvolvimento de software orientado por IA.
Documentação
AgentPM
AgentPM é um sistema de planejamento e orquestração para desenvolvimento de software orientado por IA. Instalado localmente como um servidor MCP, ele se integra a qualquer IDE que suporte a especificação do Model Context Protocol da Anthropic, incluindo Cursor, Augment, VS Code Copilot, Cline e Roo.
AgentPM desempenha o papel de gerente de produto, ajudando desenvolvedores a planejar, priorizar e executar projetos complexos:
- Desenvolve requisitos abrangentes
- Divide projetos complexos em tarefas acionáveis com dependências claras
- Orquestra a implementação com assistência sensível ao contexto
- Entrega documentação e contexto relevantes quando necessário
- Orienta decisões técnicas e design de sistemas
- Promove boas práticas de desenvolvimento de software (TDD, fatias verticais)
https://github.com/user-attachments/assets/6ddb551c-0c10-4a93-8665-fc5c1e3127c1
Por que AgentPM?
-
Configuração sem atrito: Comece simplesmente conversando com seu agente de codificação - sem CLIs ou regras complexas.
-
Otimização de Tokens/Contexto: Consolida a funcionalidade em torno de um conjunto central de ferramentas dinâmicas que são economicamente contextuais e fáceis de usar e entender para agentes de codificação.
-
Gerenciamento Inteligente de Contexto: Entrega as informações certas ao seu agente de codificação no momento certo, otimizando o uso de tokens e eliminando a necessidade de manipulação manual de contexto ou "bancos de memória".
-
Saída Estruturada: Gera automaticamente documentos markdown claros e legíveis por humanos; sem necessidade de decifrar arquivos JSON ou texto simples.
-
Recuperação Integrada de Documentação: Recupera automaticamente documentação relevante por meio da integração com Context7.
-
Gerenciamento Abrangente de Tarefas: Cria tarefas bem estruturadas com dependências, prioridades, detalhes de implementação e acompanhamento de status adequados. Trabalho complexo pode ser dividido em subtarefas gerenciáveis com relacionamentos claros.
-
Processo Flexível de Requisitos: Funciona com ou sem documentação existente, guiando você por uma entrevista estruturada ao começar do zero, ou adaptando-se facilmente a um projeto ou plano existente.
-
Geração com IA: Utiliza Claude Sonnet 3.7 para geração consistente de tarefas, independentemente do modelo de codificação da IDE, com integração opcional da API Perplexity para resultados baseados em pesquisa.
-
Evolução Adaptativa do Projeto: Atualiza tarefas futuras com base no trabalho concluído para lidar com desvios de implementação, mantendo documentação viva que evolui com seu projeto.
-
Boas Práticas Incorporadas: Incorpora boas práticas de desenvolvimento de software com recomendações opinativas que melhoram a qualidade do código.
-
Integração Perfeita com IDE: Funciona diretamente no seu ambiente de desenvolvimento preferido por meio do suporte ao Model Context Protocol.
Começando
Pré-requisitos
- Node.js: Versão 20.0.0 ou superior
- Chave da API Anthropic: Para integração com Claude AI
- Chave da API Perplexity: Para geração de tarefas baseada em pesquisa
Instalação e Configuração
Cursor
Adicione o seguinte ao arquivo .cursor/mcp.json do seu projeto (ou instale globalmente em ~/.cursor/mcp.json).
{
"mcpServers": {
"agent-pm": {
"command": "npx",
"args": [
"-y",
"@gannonh/agent-pm@latest"
],
"env": {
"PROJECT_ROOT": "/path/to/project/root/",
"ANTHROPIC_API_KEY": "sk-your-anthropic-api-key",
"PERPLEXITY_API_KEY": "pplx-your-perplexity-api-key"
}
}
}
}
Augment
Adicione o seguinte ao arquivo de Configurações do Usuário do Augment no VS-Code (CMD+SHIFT+P > Augment: Editar Configurações > Editar em settings.json): ~/Library/Application Support/Code/User/settings.json.
"augment.advanced": {
"mcpServers": [
{
"name": "agent-pm",
"command": "npx",
"args": [
"-y",
"@gannonh/agent-pm@latest"
],
"env": {
"PROJECT_ROOT": "/path/to/project/root/",
"ANTHROPIC_API_KEY": "sk-your-anthropic-api-key",
"PERPLEXITY_API_KEY": "pplx-your-perplexity-api-key"
},
]
}
Para mais informações sobre a configuração do servidor MCP, consulte a documentação da sua IDE específica:
- Cursor MCP Server Docs
- Augment MCP Server Docs
- VS Code Copilot MCP Server Docs
- Cline MCP Server Docs
Variáveis de Ambiente
⚠️ Aviso: A maioria das opções de configuração foi cuidadosamente ajustada para obter resultados ideais. A menos que você tenha requisitos específicos, é recomendado definir apenas as variáveis obrigatórias e deixar o restante com seus valores padrão.
Variáveis Obrigatórias
| Variable | Description | Default |
|---|---|---|
PROJECT_ROOT | Caminho para o diretório do projeto | Diretório atual |
ANTHROPIC_API_KEY | Chave da API para integração com Claude AI | Nenhum |
Variáveis Opcionais Comuns
| Variable | Description | Default |
|---|---|---|
PERPLEXITY_API_KEY | Chave da API para integração com Perplexity AI | Nenhum |
DEBUG_LOGS | Ativar modo de depuração com registro em arquivo | false |
Configuração Avançada (Não Recomendado Alterar)
Configuração da API Anthropic
| Variable | Description | Default |
|---|---|---|
ANTHROPIC_MODEL | Modelo Claude a usar | "claude-3-7-sonnet-20250219" |
ANTHROPIC_TEMPERATURE | Temperatura para chamadas da API Claude | 0.2 |
ANTHROPIC_MAX_TOKENS | Máximo de tokens para a API Claude | 64000 |
ANTHROPIC_MAX_CACHE_SIZE | Tamanho máximo de cache para a API Claude | 100 |
ANTHROPIC_CACHE_TTL | TTL de cache para a API Claude (ms) | 3600000 |
ANTHROPIC_MAX_RETRIES | Máximo de tentativas para a API Claude | 5 |
ANTHROPIC_BASE_URL | URL base para a API Claude | "https://api.anthropic.com" |
ANTHROPIC_SYSTEM_PROMPT | Prompt de sistema para a API Claude | "You are a helpful assistant." |
Configuração da API Perplexity
| Variable | Description | Default |
|---|---|---|
PERPLEXITY_MODEL | Modelo Perplexity a usar | "sonar-pro" |
PERPLEXITY_MAX_TOKENS | Máximo de tokens para a API Perplexity | 1024 |
PERPLEXITY_MAX_CACHE_SIZE | Tamanho máximo de cache para a API Perplexity | 100 |
PERPLEXITY_CACHE_TTL | TTL de cache para a API Perplexity (ms) | 3600000 |
PERPLEXITY_MAX_RESULTS | Máximo de resultados para a API Perplexity | 5 |
PERPLEXITY_MAX_RETRIES | Máximo de tentativas para a API Perplexity | 5 |
PERPLEXITY_BASE_URL | URL base para a API Perplexity | "https://api.perplexity.ai" |
PERPLEXITY_TEMPERATURE | Temperatura para chamadas da API Perplexity | 0.7 |
PERPLEXITY_SYSTEM_PROMPT | Prompt de sistema para a API Perplexity | "You are a helpful research assistant. Provide factual information with sources." |
Configuração de Arquivos e Diretórios
| Variable | Description | Default |
|---|---|---|
ARTIFACTS_DIR | Diretório para artefatos | "apm-artifacts" |
ARTIFACTS_FILE | Nome do arquivo para artefatos | "artifacts.json" |
PRODUCT_BRIEF_FILE | Nome do arquivo para o resumo do projeto | "project-brief.md" |
Modo de Depuração
Definir DEBUG_LOGS=true ativa:
- Registro detalhado em arquivos no diretório
logs - Arquivos de log nomeados com carimbos de data/hora (por exemplo,
apm-2025-05-04-18-16.log) - Útil para solucionar problemas de integrações de API e operações complexas
Quando DEBUG_LOGS=false (padrão):
- Nenhum arquivo de log é criado
- Mensagens essenciais ainda são enviadas para stderr
- Desempenho melhorado para operação normal
Ferramentas MCP
Gerenciamento de Tarefas (apm_task)
Propósito: Consultar tarefas no projeto.
Ações:
get_all: Listar tarefas, opcionalmente filtradas por statusget_single: Visualizar uma tarefa específica por IDget_next: Encontrar a próxima tarefa para trabalharfilter_by_statusoufilter_by_priority: Listas de tarefas direcionadas
Detalhes Funcionais
Quando a ferramenta apm_task é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
action(obrigatório, deve ser uma das ações válidas) - Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros específicos da ação:
- Para
get_single: Valida o parâmetroid(obrigatório, string não vazia) - Para
filter_by_status: Valida o parâmetrostatus(obrigatório, deve ser um status válido) - Para
filter_by_priority: Valida o parâmetropriority(obrigatório, deve ser uma prioridade válida)
- Para
- Valida parâmetros opcionais:
file,withSubtasksecontainsText
- Valida o parâmetro
-
Recuperação de Tarefas:
- Lê o arquivo de tarefas do local especificado (padrão para
apm-artifacts/artifacts.jsonse não fornecido) - Extrai a lista de tarefas do arquivo
- Lê o arquivo de tarefas do local especificado (padrão para
-
Execução da Ação:
- Executa a ação apropriada com base no parâmetro
action:get_all: Retorna todas as tarefas, opcionalmente filtradas por statusget_single: Retorna uma tarefa específica por IDget_next: Retorna a próxima tarefa para trabalhar com base em dependências e statusfilter_by_status: Retorna tarefas filtradas por statusfilter_by_priority: Retorna tarefas filtradas por prioridade
- Executa a ação apropriada com base no parâmetro
-
Processamento Específico da Ação:
- Para
get_allefilter_by_status:- Filtra tarefas por status se especificado
- Lida com subtarefas com base no parâmetro
withSubtasks - Calcula métricas de resumo
- Para
get_single:- Analisa o ID da tarefa para determinar se é uma subtarefa
- Encontra a tarefa ou subtarefa específica
- Para
get_next:- Filtra tarefas concluídas
- Aplica filtros de prioridade e texto se especificados
- Verifica a satisfação de dependências
- Prioriza e seleciona a próxima tarefa
- Para
filter_by_priority:- Filtra tarefas por prioridade
- Lida com subtarefas com base no parâmetro
withSubtasks - Calcula métricas de resumo
- Para
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- Os dados da tarefa solicitada
- Status e mensagem de sucesso
- Informações contextuais sobre a consulta
- Carimbos de data/hora e informações de sessão
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata erros de validação (campos obrigatórios ausentes, valores inválidos)
- Trata erros de arquivo não encontrado
- Trata erros de tarefa não encontrada
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_task",
"params": {
"action": "get_all|get_single|get_next|filter_by_status|filter_by_priority",
"projectRoot": "/absolute/path/to/project",
"file": "optional/path/to/artifacts.json",
"id": "5", // Required for get_single action
"status": "pending|in-progress|done|deferred|cancelled", // For get_all and filter_by_status actions
"priority": "high|medium|low", // For get_next and filter_by_priority actions
"withSubtasks": true|false,
"containsText": "optional search text" // For get_next action
}
}
Resposta JSON-RPC
Para as ações get_all e filter_by_status:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"tasks": [
{
"id": "1",
"title": "Task 1",
"description": "Description",
"status": "pending",
"priority": "high",
"dependencies": []
}
],
"stats": {
"totalTasks": 10,
"completedTasks": 3,
"pendingTasks": 5,
"inProgressTasks": 2,
"taskCompletionPercentage": 30
},
"filter": "pending"
},
"message": "Found 5 tasks with status 'pending'",
"memory": {
"sessionId": "session-123456",
"context": {
"lastQuery": {
"action": "get_all",
"status": "pending",
"withSubtasks": false
},
"projectRoot": "/path/to/project",
"timestamp": "2023-06-15T10:30:00Z"
}
}
}
}
]
}
Para a ação get_single:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"task": {
"id": "5",
"title": "Implement Feature",
"description": "Create the feature",
"status": "pending",
"priority": "high",
"dependencies": ["3", "4"],
"details": "Implementation details..."
}
},
"message": "Found task: Implement Feature",
"memory": {
"sessionId": "session-123456",
"context": {
"lastQuery": {
"action": "get_single",
"id": "5"
},
"projectRoot": "/path/to/project",
"timestamp": "2023-06-15T10:30:00Z"
}
}
}
}
]
}
Para a ação get_next:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"nextTask": {
"id": "2",
"title": "Next Task",
"description": "Description",
"status": "pending",
"priority": "high",
"dependencies": []
},
"allTasks": [
/* Array of all tasks */
]
},
"message": "Found next task: Next Task",
"memory": {
"sessionId": "session-123456",
"context": {
"lastQuery": {
"action": "get_next",
"priority": "high",
"containsText": null
},
"taskCount": 10,
"readyTaskCount": 3,
"timestamp": "2023-06-15T10:30:00Z"
}
}
}
}
]
}
Para a ação filter_by_priority:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"tasks": [
{
"id": "1",
"title": "Task 1",
"description": "Description",
"status": "pending",
"priority": "high",
"dependencies": []
}
],
"stats": {
"totalTasks": 10,
"completedTasks": 3,
"pendingTasks": 5,
"inProgressTasks": 2,
"taskCompletionPercentage": 30
},
"filter": "high"
},
"message": "Found 5 tasks with priority 'high'",
"memory": {
"sessionId": "session-123456",
"context": {
"lastQuery": {
"action": "filter_by_priority",
"priority": "high",
"withSubtasks": false
},
"projectRoot": "/path/to/project",
"timestamp": "2023-06-15T10:30:00Z"
}
}
}
}
]
}
Criação e Modificação de Tarefas (apm_task_modify)
Propósito: Criar, atualizar e excluir tarefas e subtarefas
Ações:
create: Adicionar uma nova tarefaupdate: Atualizar os detalhes de uma tarefaupdate_status: Alterar o status de uma tarefadelete: Remover uma tarefaadd_subtask: Adicionar uma subtarefa a uma tarefaremove_subtask: Remover uma subtarefa de uma tarefaclear_subtasks: Remover todas as subtarefas de uma tarefaexpand: Dividir uma tarefa em subtarefasexpand_all: Expandir todas as tarefas pendentes
Parâmetros:
action: A ação específica a ser executadaprojectRoot: Diretório raiz do projeto- Parâmetros específicos da ação (id, status, dados, etc.)
Detalhes Funcionais
Quando a ferramenta `apm_task_modify` é chamada:-
Validação de Parâmetros:
- Valida o parâmetro
action(obrigatório, deve ser uma das ações válidas) - Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros específicos da ação com base na ação que está sendo executada
- Valida parâmetros opcionais como
file
- Valida o parâmetro
-
Execução da Ação:
- Executa a ação apropriada com base no parâmetro
action:create: Cria uma nova tarefa com as propriedades especificadasupdate: Atualiza uma tarefa existente com novas informaçõesupdate_status: Altera o status de uma ou mais tarefasdelete: Remove uma tarefa do projetoadd_subtask: Adiciona uma subtarefa a uma tarefa existenteremove_subtask: Remove uma subtarefa de uma tarefaclear_subtasks: Remove todas as subtarefas de uma ou mais tarefasexpand: Divide uma tarefa em subtarefas usando IAexpand_all: Expande todas as tarefas pendentes em subtarefas usando IA
- Executa a ação apropriada com base no parâmetro
-
Operações de Arquivo:
- Lê o arquivo de tarefas do local especificado (padrão para
apm-artifacts/artifacts.jsonse não for fornecido) - Atualiza os dados das tarefas com base na ação executada
- Grava os dados atualizados das tarefas de volta no arquivo
- Gera arquivos de tarefa individuais se necessário (a menos que
skipGenerateseja verdadeiro)
- Lê o arquivo de tarefas do local especificado (padrão para
-
Integração com IA (para certas ações):
- Usa Claude AI para expansão e atualização de tarefas
- Opcionalmente usa Perplexity AI para operações com base em pesquisa
- Gera subtarefas inteligentes com base no contexto da tarefa
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- Dados específicos da ação (tarefa, subtarefas, etc.)
- Mensagem de sucesso
- Orientação de comunicação com o usuário
- Instruções do agente para os próximos passos
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata erros de validação (campos obrigatórios ausentes, valores inválidos)
- Trata erros de arquivo não encontrado
- Trata erros de tarefa não encontrada
- Trata erros de serviço de IA
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_task_modify",
"params": {
"action": "create|update|update_status|delete|add_subtask|remove_subtask|clear_subtasks|expand|expand_all",
"projectRoot": "/absolute/path/to/project",
// Action-specific parameters
// For create action
"title": "Task Title",
"description": "Task Description",
"priority": "high|medium|low",
"dependencies": "1,2,3",
"details": "Implementation details",
"testStrategy": "Test strategy",
// For update action
"id": "1",
"prompt": "Update information",
"research": true|false,
"researchOnly": true|false,
// For update_status action
"id": "1",
"status": "pending|in-progress|done|deferred|cancelled",
// For delete action
"id": "1",
"confirm": true|false,
// For add_subtask action
"id": "1",
"title": "Subtask Title",
"description": "Subtask Description",
"details": "Subtask details",
"dependencies": "1.1,1.2",
"status": "pending|in-progress|done|deferred|cancelled",
"taskId": "2", // Existing task ID to convert to subtask
"skipGenerate": true|false,
// For remove_subtask action
"id": "1.1",
"convert": true|false,
"skipGenerate": true|false,
// For clear_subtasks action
"id": "1", // Can be comma-separated for multiple tasks
"all": true|false, // Clear subtasks from all tasks
// For expand action
"id": "1",
"num": 3, // Number of subtasks to generate
"prompt": "Additional context",
"research": true|false,
"force": true|false,
// For expand_all action
"num": 3,
"prompt": "Additional context",
"research": true|false,
"force": true|false,
// Common optional parameters
"file": "optional/path/to/artifacts.json"
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
// Action-specific response data
// For create action
"task": {
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": ["1", "2", "3"],
"details": "Implementation details",
"testStrategy": "Test strategy"
},
// For update action
"task": {
"id": "1",
"title": "Updated Task Title",
"description": "Updated Task Description",
"status": "pending",
"priority": "high",
"dependencies": ["1", "2", "3"],
"details": "Updated implementation details",
"testStrategy": "Updated test strategy"
},
// For update_status action
"updatedTasks": [
{
"id": "1",
"title": "Task Title",
"status": "done"
}
],
// For delete action
"removedTask": {
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy"
},
// For add_subtask action
"task": {
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy",
"subtasks": [
{
"id": "1.1",
"title": "Subtask Title",
"description": "Subtask Description",
"status": "pending",
"details": "Subtask details",
"dependencies": []
}
]
},
// For remove_subtask action
"task": {
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy",
"subtasks": []
},
// For clear_subtasks action
"updatedTasks": [
{
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy"
}
],
// For expand action
"task": {
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy",
"subtasks": [
{
"id": "1.1",
"title": "Generated Subtask 1",
"description": "Description for Generated Subtask 1",
"status": "pending",
"details": "Details for Generated Subtask 1",
"dependencies": []
},
{
"id": "1.2",
"title": "Generated Subtask 2",
"description": "Description for Generated Subtask 2",
"status": "pending",
"details": "Details for Generated Subtask 2",
"dependencies": ["1.1"]
},
{
"id": "1.3",
"title": "Generated Subtask 3",
"description": "Description for Generated Subtask 3",
"status": "pending",
"details": "Details for Generated Subtask 3",
"dependencies": ["1.2"]
}
]
},
// For expand_all action
"expandedTasks": [
{
"id": "1",
"title": "Task Title",
"description": "Task Description",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Implementation details",
"testStrategy": "Test strategy",
"subtasks": [
{
"id": "1.1",
"title": "Generated Subtask 1",
"description": "Description for Generated Subtask 1",
"status": "pending",
"details": "Details for Generated Subtask 1",
"dependencies": []
},
{
"id": "1.2",
"title": "Generated Subtask 2",
"description": "Description for Generated Subtask 2",
"status": "pending",
"details": "Details for Generated Subtask 2",
"dependencies": ["1.1"]
},
{
"id": "1.3",
"title": "Generated Subtask 3",
"description": "Description for Generated Subtask 3",
"status": "pending",
"details": "Details for Generated Subtask 3",
"dependencies": ["1.2"]
}
]
}
]
},
"message": "Action-specific success message",
"userCommunication": {
"message": "User-friendly message about the action result"
},
"agentInstructions": "Instructions for the AI agent on how to proceed"
}
}
]
}
Geração de Arquivos de Tarefa (apm_task_generate)
Propósito: Gera arquivos de tarefa individuais no diretório apm-artifacts/ com base em artifacts.json.
Detalhes Funcionais
Quando a ferramenta apm_task_generate é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros opcionais:
fileeoutput
- Valida o parâmetro
-
Recuperação de Tarefas:
- Lê o arquivo de tarefas do local especificado (padrão para artifacts.json se não for fornecido)
- Retorna um erro se o arquivo de tarefas não for encontrado ou estiver vazio
-
Preparação do Diretório:
- Garante que o diretório de saída exista (cria-o se necessário)
- Usa o diretório de artefatos padrão se nenhum diretório de saída for especificado
-
Processo de Geração de Arquivos:
- Para cada tarefa nos dados de tarefas:
- Gera um arquivo markdown com os detalhes da tarefa
- Inclui todas as propriedades da tarefa (título, descrição, status, dependências, etc.)
- Formata subtarefas como seções aninhadas, se presentes
- Usa uma convenção de nomenclatura consistente com base nos IDs das tarefas
- Cria um formato bem estruturado e legível para cada arquivo de tarefa
- Para cada tarefa nos dados de tarefas:
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- Status de sucesso
- O número de arquivos de tarefa gerados
- O caminho para o diretório de artefatos
- O caminho para o arquivo de tarefas
- Uma mensagem de sucesso
- Informações de contexto (timestamp, contagem de tarefas)
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata erros de arquivo não encontrado
- Trata erros de criação de diretório
- Trata erros de gravação de arquivo
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_task_generate",
"params": {
"projectRoot": "/absolute/path/to/project",
"file": "optional/path/to/artifacts.json",
"output": "optional/path/to/output/directory"
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"success": true,
"taskCount": 10,
"artifactsDir": "/path/to/project/apm-artifacts",
"tasksPath": "/path/to/project/apm-artifacts/artifacts.json"
},
"message": "Generated 10 task files in /path/to/project/apm-artifacts",
"context": {
"timestamp": "2023-06-15T10:30:00Z",
"taskCount": 10
}
}
}
]
}
Briefing do Projeto (apm_project_brief_create)
Propósito: Criar um briefing do projeto por meio de um processo de entrevista interativa e gerar tarefas.
- Use
apm_project_brief_statuspara verificar o progresso da operação - Use
apm_project_brief_resultpara recuperar o briefing concluído
Detalhes Funcionais
Quando a ferramenta apm_project_brief_create é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros opcionais:
sessionId,input,stage,response,exportFormatemaxTasks
- Valida o parâmetro
-
Tratamento de Sessão:
- Se nenhum
sessionIdfor fornecido, inicia uma nova sessão de entrevista - Se um
sessionIdfor fornecido, continua uma sessão de entrevista existente - Mantém o estado entre múltiplas interações
- Se nenhum
-
Processo de Entrevista:
- Guia o usuário por uma entrevista estruturada com múltiplos estágios:
- Visão Geral do Projeto: Informações básicas sobre o propósito e o escopo do projeto
- Metas e Partes Interessadas: Objetivos do projeto e partes envolvidas
- Restrições: Limitações, requisitos e limites
- Tecnologias: Stack técnico e ferramentas
- Cronograma e Fases: Cronograma do projeto e marcos principais
- Recursos: Requisitos detalhados de funcionalidade
- Revisão: Confirmação final e ajustes
- Faz perguntas contextualmente relevantes com base nas respostas anteriores
- Processa as respostas do usuário para construir um briefing abrangente do projeto
- Guia o usuário por uma entrevista estruturada com múltiplos estágios:
-
Geração de Tarefas:
- Após concluir a entrevista, gera tarefas com base no briefing do projeto
- Cria uma hierarquia de tarefas estruturada com dependências adequadas
- Organiza tarefas por fases e recursos
- Limita o número de tarefas com base no parâmetro
maxTasks - Salva tarefas no arquivo artifacts.json
-
Formatação da Resposta:
- Para novas sessões: Retorna um ID de operação para rastrear o processo de entrevista
- Para sessões contínuas: Retorna a próxima pergunta ou confirmação da geração de tarefas
- Inclui orientação de comunicação com o usuário com respostas sugeridas
- Fornece próximos passos e comandos claros
-
Tratamento de Erros:
- Trata erros de validação
- Trata erros de arquivo não encontrado
- Trata erros de processamento de entrevista
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_project_brief_create",
"params": {
"projectRoot": "/absolute/path/to/project",
"sessionId": "optional-session-id-for-continuing-interviews",
"input": "optional/path/to/existing/brief.json",
"stage": "project_overview|goals_and_stakeholders|constraints|technologies|timeline_and_phases|features|review",
"response": "Your answer to the current interview question",
"exportFormat": "json|markdown|text",
"maxTasks": 10
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"operationId": "project-brief-123456",
"message": "Project brief interview started",
"nextAction": "check_operation_status",
"checkStatusCommand": "apm_project_brief_status --operationId=project-brief-123456",
"metadata": {
"userCommunication": {
"message": "I'm starting the project brief interview process.",
"expectationType": "immediate",
"suggestedResponse": "I'll start the project brief interview process. I'll ask you a series of questions to gather information about your project. Let's begin with understanding your project overview."
}
}
}
}
]
}
apm_project_brief_status
Propósito: Obter o status de uma operação de entrevista de briefing do projeto.
Detalhes Funcionais
Quando a ferramenta apm_project_brief_status é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida o parâmetro
operationId(obrigatório, string não vazia)
- Valida o parâmetro
-
Recuperação de Status:
- Obtém o status da operação do AsyncOperationManager
- Retorna um erro se a operação não for encontrada
- Fornece informações detalhadas sobre o estado atual da operação
-
Relatório de Progresso:
- Retorna a porcentagem de progresso atual (0-100)
- Fornece uma mensagem descritiva sobre o estágio atual
- Inclui timestamps para criação, atualizações e conclusão (se aplicável)
-
Orientação de Comunicação com o Usuário:
- Para operações em execução, fornece respostas sugeridas para manter os usuários informados
- Para operações concluídas, sugere próximos passos
- Para operações com falha, explica o que deu errado e como proceder
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- ID da operação
- Status atual (pendente, em execução, concluída, com falha)
- Porcentagem de progresso
- Mensagem de status
- Timestamps (criado, atualizado, concluído)
- Orientação de comunicação com o usuário
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata casos em que a operação não é encontrada
- Trata erros internos durante a recuperação de status
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_project_brief_status",
"params": {
"projectRoot": "/absolute/path/to/project",
"operationId": "project-brief-123456"
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"operationId": "project-brief-123456",
"status": "running",
"progress": 65,
"message": "Generating tasks",
"createdAt": "2023-06-15T10:30:00Z",
"updatedAt": "2023-06-15T10:30:05Z",
"completedAt": null,
"metadata": {
"operationType": "task-generation",
"userCommunication": {
"message": "Task generation is in progress.",
"expectationType": "long_wait",
"estimatedTimeSeconds": 180,
"suggestedResponse": "The task generation is in progress (65% complete).\n\nWhile we wait, here's what's happening behind the scenes:\n- The AI is analyzing your project requirements\n- It's identifying key components, features, and dependencies\n- It will create a structured task breakdown with proper sequencing\n- Tasks will be saved to the apm-artifacts directory, along with an overall project brief.\n\nYou can ask me to \"check status\" anytime if you'd like an update, or we can discuss other aspects of your project while we wait."
}
}
}
}
]
}
apm_project_brief_result
Propósito: Obter o resultado de uma operação de entrevista de briefing do projeto concluída.
Detalhes Funcionais
Quando a ferramenta apm_project_brief_result é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida o parâmetro
operationId(obrigatório, string não vazia)
- Valida o parâmetro
-
Recuperação de Resultado:
- Obtém o resultado da operação do AsyncOperationManager
- Retorna um erro se o resultado não estiver disponível (operação não concluída ou não encontrada)
- Retorna um erro se a operação falhou
-
Processamento de Resultado:
- Extrai as tarefas geradas do resultado da operação
- Inclui caminhos de arquivo para os artefatos salvos
- Fornece informações de sessão para possíveis ações de acompanhamento
- Sugere próximos passos para o usuário
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- ID da operação e status
- Tarefas geradas com títulos, descrições, prioridades e detalhes
- Caminhos de arquivo para os artefatos salvos (artifacts.json, markdown do briefing do projeto)
- Informações de sessão (sessionId, projectBriefUri, interviewStateUri)
- Sugestão de próxima ação e comando
- Orientação de comunicação com o usuário
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata casos em que a operação não é encontrada
- Trata casos em que a operação ainda está em execução
- Trata casos em que a operação falhou
- Retorna respostas de erro padronizadas com informações de contexto
-
Orientação ao Usuário:
- Fornece próximos passos claros para o usuário
- Sugere comandos para visualizar e gerenciar as tarefas geradas
- Inclui mensagens amigáveis explicando os resultados
Solicitação JSON-RPC
{
"method": "apm_project_brief_result",
"params": {
"projectRoot": "/absolute/path/to/project",
"operationId": "project-brief-123456"
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"operationId": "project-brief-123456",
"status": "completed",
"message": "Task generation completed successfully",
"tasks": [
{
"id": "1",
"title": "Set up project infrastructure",
"description": "Initialize the project repository and set up basic infrastructure",
"status": "pending",
"priority": "high",
"dependencies": [],
"details": "Create the repository, set up CI/CD, and configure development environment"
}
],
"tasksPath": "/path/to/project/apm-artifacts/artifacts.json",
"markdownPath": "/path/to/project/apm-artifacts/project-brief.md",
"sessionId": "session-123456",
"projectBriefUri": "resource://project-brief-123456",
"interviewStateUri": "resource://interview-state-123456",
"nextAction": "view_tasks",
"suggestedCommand": "apm_get_tasks",
"userCommunication": {
"message": "I've successfully generated tasks based on your project brief. You can now view and manage these tasks using the task management tools.",
"expectationType": "immediate",
"suggestedResponse": "Great! I've generated a set of tasks based on your project requirements. These tasks have been saved to your project directory and are ready for you to work on. You can view them using the 'apm_get_tasks' command. Would you like to see the tasks now?"
}
}
}
]
}
Gerenciamento de Dependências (apm_dependencies)
Propósito: Gerenciar dependências de tarefas
Ações:
add: Adicionar uma dependência entre tarefasremove: Remover uma dependência entre tarefasvalidate: Verificar problemas de dependênciafix: Corrigir automaticamente problemas de dependência
Parâmetros:
action: A ação específica a ser executadaprojectRoot: Diretório raiz do projeto- Parâmetros específicos da ação (id, dependsOn, etc.)
Detalhes Funcionais
Quando a ferramenta apm_dependencies é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
action(obrigatório, deve ser uma das ações válidas) - Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros específicos da ação:
- Para
adderemove: Valida os parâmetrosidedependsOn(obrigatórios, strings não vazias)
- Para
- Valida parâmetros opcionais:
file
- Valida o parâmetro
-
Recuperação de Tarefas:
- Lê o arquivo de tarefas do local especificado (padrão para
apm-artifacts/artifacts.jsonse não for fornecido) - Extrai a lista de tarefas do arquivo
- Lê o arquivo de tarefas do local especificado (padrão para
-
Execução da Ação:
- Executa a ação apropriada com base no parâmetro
action:add: Adiciona uma dependência entre duas tarefasremove: Remove uma dependência entre duas tarefasvalidate: Verifica problemas de dependência (referências circulares, dependências ausentes)fix: Corrige automaticamente problemas de dependência
- Executa a ação apropriada com base no parâmetro
-
Processamento Específico por Ação:
- Para
add:- Encontra a tarefa que dependerá de outra
- Encontra a tarefa da qual se dependerá
- Verifica se a dependência já existe
- Adiciona a dependência se ela não existir
- Valida dependências para garantir que não haja referências circulares
- Para
remove:- Encontra a tarefa que depende de outra
- Verifica se a dependência existe
- Remove a dependência se ela existir
- Para
validate:- Verifica dependências circulares
- Verifica dependências ausentes
- Retorna os resultados da validação
- Para
fix:- Corrige dependências ausentes removendo-as
- Corrige dependências circulares quebrando os ciclos
- Retorna os resultados das correções
- Para
-
Operações de Arquivo:
- Atualiza os dados das tarefas em memória
- Grava as tarefas atualizadas de volta no arquivo
- Gera arquivos individuais de tarefas
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- Dados específicos da ação (tarefa, tarefa de dependência, resultados de validação, resultados de correção)
- Status de sucesso e mensagem
- Informações contextuais sobre a operação
- Carimbos de data/hora e informações da sessão
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata erros de validação (campos obrigatórios ausentes, valores inválidos)
- Trata erros de arquivo não encontrado
- Trata erros de tarefa não encontrada
- Trata erros de dependência circular
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_dependencies",
"params": {
"action": "add|remove|validate|fix",
"projectRoot": "/absolute/path/to/project",
// Action-specific parameters
// For add and remove actions
"id": "1",
"dependsOn": "2",
// Common optional parameters
"file": "optional/path/to/artifacts.json"
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
// Action-specific response data
// For add action
"task": {
"id": "1",
"title": "Task 1",
"description": "Description for Task 1",
"status": "pending",
"priority": "high",
"dependencies": ["2"]
},
"dependencyTask": {
"id": "2",
"title": "Task 2",
"description": "Description for Task 2",
"status": "pending",
"priority": "medium",
"dependencies": []
},
"tasksPath": "/path/to/project/apm-artifacts/artifacts.json"
},
"message": "Added dependency: Task 1 now depends on task 2",
"memory": {
"sessionId": "session-123456",
"context": {
"taskId": "1",
"dependsOn": "2",
"timestamp": "2023-06-15T10:30:00Z"
}
}
}
}
]
}
Para a ação validate:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"validationResults": {
"circularDependencies": [
{
"taskId": "1",
"path": ["1", "3", "2", "1"]
}
],
"missingDependencies": [
{
"taskId": "4",
"missingDependencies": ["999"]
}
],
"valid": false
},
"tasksPath": "/path/to/project/apm-artifacts/artifacts.json"
},
"message": "Dependency issues detected",
"memory": {
"sessionId": "session-123456",
"context": {
"timestamp": "2023-06-15T10:30:00Z",
"validationResults": {
"circularDependencies": [
{
"taskId": "1",
"path": ["1", "3", "2", "1"]
}
],
"missingDependencies": [
{
"taskId": "4",
"missingDependencies": ["999"]
}
],
"valid": false
}
}
}
}
}
]
}
Para a ação fix:
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"fixResults": {
"circularDependenciesFixed": [
{
"taskId": "2",
"removedDependencies": ["1"]
}
],
"missingDependenciesFixed": [
{
"taskId": "4",
"removedDependencies": ["999"]
}
],
"fixesApplied": true
},
"tasksPath": "/path/to/project/apm-artifacts/artifacts.json"
},
"message": "Dependency issues fixed",
"memory": {
"sessionId": "session-123456",
"context": {
"timestamp": "2023-06-15T10:30:00Z",
"fixResults": {
"circularDependenciesFixed": [
{
"taskId": "2",
"removedDependencies": ["1"]
}
],
"missingDependenciesFixed": [
{
"taskId": "4",
"removedDependencies": ["999"]
}
],
"fixesApplied": true
}
}
}
}
}
]
}
Análise de Complexidade (apm_complexity)
Propósito: Analisar a complexidade das tarefas, gerar recomendações de expansão e criar relatórios em uma única operação.
Detalhes Funcionais
Quando a ferramenta apm_complexity_node é chamada:
-
Validação de Parâmetros:
- Valida o parâmetro
projectRoot(obrigatório, deve ser um caminho absoluto) - Valida parâmetros opcionais:
file,output,markdownOutput,threshold,modeleresearch - Aplica valores padrão para parâmetros opcionais:
output: "apm-artifacts/resources/reports/task-complexity-report.json"markdownOutput: "apm-artifacts/resources/reports/task-complexity-report.md"threshold: 5 (tarefas com complexidade ≥ 5 serão recomendadas para expansão)research: false (se deve usar Perplexity AI para análise baseada em pesquisa)
- Valida o parâmetro
-
Recuperação de Tarefas:
- Lê o arquivo de tarefas do local especificado (padrão: artifacts.json se não for fornecido)
- Extrai a lista de tarefas do arquivo
- Filtra as tarefas para incluir apenas aquelas que não estão 'done' (concluídas) nem 'cancelled' (canceladas)
- Ignora tarefas que já possuem subtarefas (pois já foram detalhadas)
-
Processo de Análise de Tarefas:
- Para cada tarefa:
- Calcula fatores básicos de complexidade:
- Comprimento da descrição (0-0,2 pontos)
- Comprimento dos detalhes (0-0,2 pontos)
- Quantidade de dependências (0-0,2 pontos)
- Fator de prioridade (alta: 0,2, média: 0,1, baixa: 0 pontos)
- Quantidade de termos técnicos (0-0,2 pontos)
- Se a pesquisa estiver habilitada, aprimora a análise com Perplexity AI
- Usa Claude AI para analisar a complexidade em uma escala de 1 a 10
- Recomenda um número de subtarefas com base na complexidade
- Gera prompts de expansão e comandos
- Calcula fatores básicos de complexidade:
- Para cada tarefa:
-
Geração de Relatórios:
- Cria um relatório de complexidade com:
- Análise específica por tarefa (ID, título, pontuação de complexidade, subtarefas recomendadas)
- Prompts de expansão para detalhar tarefas complexas
- Comandos para executar a expansão de tarefas
- Metadados (carimbo de data/hora da geração, limite, contagens de tarefas, complexidade média)
- Garante que os diretórios de saída existam
- Grava o relatório JSON no caminho de saída especificado
- Formata o relatório em um documento markdown legível
- Grava o relatório markdown no caminho de saída markdown especificado
- Cria um relatório de complexidade com:
-
Formatação da Resposta:
- Retorna uma resposta JSON estruturada contendo:
- Os dados completos do relatório de complexidade
- O relatório formatado como uma string markdown
- Caminhos dos arquivos de saída para os relatórios JSON e markdown
- Estatísticas da análise de tarefas (tarefas analisadas, tarefas complexas encontradas)
- Orientação de comunicação com o usuário
- Instruções do agente para os próximos passos
- Retorna uma resposta JSON estruturada contendo:
-
Tratamento de Erros:
- Trata erros de arquivo não encontrado
- Trata erros de criação de diretório
- Trata erros de gravação de arquivo
- Retorna respostas de erro padronizadas com informações de contexto
Solicitação JSON-RPC
{
"method": "apm_complexity_node",
"params": {
"projectRoot": "/absolute/path/to/project",
"file": "optional/path/to/artifacts.json",
"output": "apm-artifacts/resources/reports/task-complexity-report.json",
"markdownOutput": "apm-artifacts/resources/reports/task-complexity-report.md",
"threshold": 5,
"model": "optional-model-name",
"research": false
}
}
Resposta JSON-RPC
{
"content": [
{
"type": "text",
"text": {
"success": true,
"data": {
"report": {
"tasks": [
{
"taskId": "15",
"title": "Implement GraphQL API Integration",
"complexity": 8,
"recommendedSubtasks": 6,
"expansionPrompt": "Break down the implementation...",
"expansionCommand": "apm_task_modify_node --action=expand --id=15 --num=6"
}
],
"metadata": {
"generated": "2025-04-24T14:40:04.508Z",
"threshold": 5,
"totalTasks": 4,
"averageComplexity": 7
}
},
"formattedReport": "# Task Complexity Analysis Report\n\n## Report Summary\n\n- **Generated:** 4/24/2025, 7:40:04 AM\n- **Complexity Threshold:** 5\n- **Total Tasks Analyzed:** 4\n- **Average Complexity:** 7.0\n\n## Task Analysis\n\n### 🔴 Task 15: Implement GraphQL API Integration\n\n- **Complexity Score:** **8/10 ⚠️\n- **Recommended Subtasks:** 6\n- **Action Required:** This task should be broken down into subtasks\n- **Expansion Command:** `apm_task_modify_node --action=expand --id=15 --num=6`\n\n**Expansion Guidance:**\nBreak down the implementation of the GraphQL API integration...\n\n---\n\n## Recommendations\n\nThe following tasks should be prioritized for breakdown:\n\n- Task 15: Implement GraphQL API Integration (Complexity: 8/10)\n",
"jsonOutputPath": "/path/to/project/apm-artifacts/resources/reports/task-complexity-report.json",
"markdownOutputPath": "/path/to/project/apm-artifacts/resources/reports/task-complexity-report.md",
"tasksAnalyzed": 4,
"complexTasks": 1
},
"message": "Analyzed 4 tasks and identified 1 complex task that should be broken down.",
"userCommunication": {
"message": "I've analyzed your project tasks and identified which ones might benefit from being broken down into subtasks. Here's the complexity report:\n\n# Task Complexity Analysis Report\n\n...",
"expectationType": "immediate"
},
"agentInstructions": "The complexity analysis is complete. The report has been formatted for display and saved as both JSON and Markdown. You can suggest using 'apm_task_modify_node' with the 'expand' action for tasks with high complexity scores."
}
}
]
}