harmony-mcp 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ MCP (Model Context Protocol) server for Harmony Kanban board. Enables AI coding
4
4
 
5
5
  ## Features
6
6
 
7
- - **25+ MCP Tools** for full board control (cards, columns, labels, subtasks, links)
7
+ - **29 MCP Tools** for full board control (cards, columns, labels, subtasks, links)
8
8
  - **Card Linking** - create relationships between cards (blocks, relates_to, duplicates, is_part_of)
9
9
  - **Prompt Builder** - generate AI-ready prompts from cards with context
10
10
  - **Agent Session Tracking** - track work progress with timer badges
package/dist/cli.js CHANGED
@@ -13792,79 +13792,78 @@ import { join, dirname } from "node:path";
13792
13792
  import { homedir } from "node:os";
13793
13793
  var HARMONY_WORKFLOW_PROMPT = `# Harmony Card Workflow
13794
13794
 
13795
- You are starting work on a Harmony card. Follow this workflow:
13795
+ Start work on a Harmony card. Card reference: $ARGUMENTS
13796
13796
 
13797
- ## Step 1: Find the Card
13797
+ ## 1. Find & Fetch Card
13798
13798
 
13799
- The user provided: $ARGUMENTS
13799
+ Parse the reference and fetch the card:
13800
+ - \`#42\` or \`42\` → \`harmony_get_card_by_short_id\` with \`shortId: 42\`
13801
+ - UUID → \`harmony_get_card\` with \`cardId\`
13802
+ - Name/text → \`harmony_search_cards\` with \`query\`
13800
13803
 
13801
- Parse the card reference:
13802
- - If it starts with \`#\` followed by numbers (e.g., \`#42\`), use \`harmony_get_card_by_short_id\` with the number
13803
- - If it looks like a UUID, use \`harmony_get_card\` directly
13804
- - Otherwise, use \`harmony_search_cards\` to find by name
13804
+ ## 2. Get Board State
13805
13805
 
13806
- ## Step 2: Move to In Progress
13806
+ Call \`harmony_get_board\` to get columns and labels. From the response:
13807
+ - Find the "In Progress" (or "Progress") column ID
13808
+ - Find the "agent" label ID
13807
13809
 
13808
- Once you have the card:
13809
- 1. Get the board using \`harmony_get_board\` to find the "In Progress" column ID
13810
- 2. Use \`harmony_move_card\` to move the card to "In Progress"
13810
+ ## 3. Setup Card for Work
13811
13811
 
13812
- ## Step 3: Add Agent Label
13812
+ Execute these in sequence:
13813
+ 1. \`harmony_move_card\` → Move to "In Progress" column
13814
+ 2. \`harmony_add_label_to_card\` → Add "agent" label
13815
+ 3. \`harmony_start_agent_session\`:
13816
+ - \`cardId\`: Card UUID
13817
+ - \`agentIdentifier\`: Your agent identifier
13818
+ - \`agentName\`: Your agent name
13819
+ - \`currentTask\`: "Analyzing card requirements"
13813
13820
 
13814
- 1. From the board response, find the label named "agent"
13815
- 2. Use \`harmony_add_label_to_card\` to add it to the card
13821
+ ## 4. Generate Work Prompt
13816
13822
 
13817
- ## Step 4: Start Agent Session
13823
+ Call \`harmony_generate_prompt\` with:
13824
+ - \`cardId\` or \`shortId\` (+ \`projectId\` if using shortId)
13825
+ - \`variant\`: Select based on task:
13826
+ - \`"execute"\` (default) → Clear tasks, bug fixes, well-defined work
13827
+ - \`"analysis"\` → Complex features, unclear requirements
13828
+ - \`"draft"\` → Medium complexity, want feedback first
13818
13829
 
13819
- After adding the agent label, start tracking your work session:
13820
- 1. Use \`harmony_start_agent_session\` with:
13821
- - \`cardId\`: The card ID
13822
- - \`agentIdentifier\`: Your agent identifier
13823
- - \`agentName\`: Your agent name
13824
- - \`currentTask\`: A brief description of what you're about to do
13825
-
13826
- This enables the timer badge on the card to show your progress in real-time.
13827
-
13828
- ## Step 5: Display Card Details
13829
-
13830
- Show the user:
13831
- - Card title and short ID
13832
- - Description (if any)
13833
- - Priority
13834
- - Current labels
13835
- - Due date (if set)
13836
-
13837
- ## Step 6: Implement the Solution
13838
-
13839
- Based on the card's title and description:
13840
- 1. Understand what needs to be done
13841
- 2. Explore the codebase as needed
13842
- 3. Implement the required changes
13843
- 4. Test the changes
13844
-
13845
- **During implementation, update your progress periodically:**
13846
- - Use \`harmony_update_agent_progress\` to report:
13847
- - \`progressPercent\`: Estimated completion (0-100)
13848
- - \`currentTask\`: What you're currently doing
13849
- - \`blockers\`: Any issues blocking progress (set \`status: "blocked"\` if blocked)
13850
-
13851
- ## Step 7: Complete Work
13852
-
13853
- When implementation is complete:
13854
- 1. Use \`harmony_end_agent_session\` with:
13855
- - \`cardId\`: The card ID
13856
- - \`status\`: "completed"
13857
- - \`progressPercent\`: 100
13858
- 2. Use \`harmony_move_card\` to move the card to the "Review" column
13859
- 3. Summarize what was accomplished
13860
-
13861
- ## Important Notes
13862
- - Always read the card description carefully before starting
13863
- - If the task is unclear, ask for clarification
13864
- - Make commits as appropriate during implementation
13865
- - The "agent" label indicates AI is working on the card
13866
- - Update progress at meaningful milestones, not constantly
13867
- - If you need to pause work, call \`harmony_end_agent_session\` with \`status: "paused"\`
13830
+ The generated prompt provides role framing, focus areas, subtasks, linked cards, and suggested outputs.
13831
+
13832
+ ## 5. Display Card Summary
13833
+
13834
+ Show the user: Card title, short ID, role, priority, labels, due date, description, and subtasks.
13835
+
13836
+ ## 6. Implement Solution
13837
+
13838
+ Work on the card following the generated prompt's guidance. Update progress at milestones:
13839
+ - \`harmony_update_agent_progress\` with \`progressPercent\` (0-100), \`currentTask\`, \`status\`, \`blockers\`
13840
+
13841
+ **Progress checkpoints:** 20% (exploration), 50% (implementation), 80% (testing), 100% (done)
13842
+
13843
+ ## 7. Complete Work
13844
+
13845
+ When finished:
13846
+ 1. \`harmony_end_agent_session\` with \`status: "completed"\`, \`progressPercent: 100\`
13847
+ 2. \`harmony_move_card\` to "Review" column
13848
+ 3. Summarize accomplishments
13849
+
13850
+ If pausing: \`harmony_end_agent_session\` with \`status: "paused"\`
13851
+
13852
+ ## Key Tools Reference
13853
+
13854
+ **Cards:** \`harmony_get_card\`, \`harmony_get_card_by_short_id\`, \`harmony_search_cards\`, \`harmony_create_card\`, \`harmony_update_card\`, \`harmony_move_card\`, \`harmony_delete_card\`, \`harmony_assign_card\`
13855
+
13856
+ **Subtasks:** \`harmony_create_subtask\`, \`harmony_toggle_subtask\`, \`harmony_delete_subtask\`
13857
+
13858
+ **Labels:** \`harmony_add_label_to_card\`, \`harmony_remove_label_from_card\`, \`harmony_create_label\`
13859
+
13860
+ **Links:** \`harmony_add_link_to_card\`, \`harmony_remove_link_from_card\`, \`harmony_get_card_links\`
13861
+
13862
+ **Board:** \`harmony_get_board\`, \`harmony_list_projects\`, \`harmony_get_context\`, \`harmony_set_project_context\`
13863
+
13864
+ **Sessions:** \`harmony_start_agent_session\`, \`harmony_update_agent_progress\`, \`harmony_end_agent_session\`, \`harmony_get_agent_session\`
13865
+
13866
+ **AI:** \`harmony_generate_prompt\`, \`harmony_process_command\`
13868
13867
  `;
13869
13868
  function ensureDir(dirPath) {
13870
13869
  if (!existsSync(dirPath)) {
@@ -13960,7 +13959,7 @@ When given a card reference (e.g., #42 or a card name), follow this workflow:
13960
13959
  3. Add the "agent" label using \`harmony_add_label_to_card\`
13961
13960
  4. Start a session with \`harmony_start_agent_session\` (agentIdentifier: "codex", agentName: "OpenAI Codex")
13962
13961
  5. Show the card details to the user
13963
- 6. Implement the solution based on the card description
13962
+ 6. Use \`harmony_generate_prompt\` to get guidance, then implement the solution
13964
13963
  7. Update progress periodically with \`harmony_update_agent_progress\`
13965
13964
  8. When done, call \`harmony_end_agent_session\` and move to "Review"
13966
13965
 
@@ -13971,6 +13970,7 @@ When given a card reference (e.g., #42 or a card name), follow this workflow:
13971
13970
  - \`harmony_add_label_to_card\`, \`harmony_remove_label_from_card\` - Manage labels
13972
13971
  - \`harmony_start_agent_session\`, \`harmony_update_agent_progress\`, \`harmony_end_agent_session\` - Track work
13973
13972
  - \`harmony_get_board\` - Get board state
13973
+ - \`harmony_generate_prompt\` - Get role-based guidance and focus areas for the card
13974
13974
  `;
13975
13975
  const agentsPath = join(cwd, "AGENTS.md");
13976
13976
  const { created: agentsCreated, skipped: agentsSkipped } = writeFileIfNotExists(agentsPath, agentsContent, force);
package/dist/init.js CHANGED
@@ -33,79 +33,78 @@ import { join, dirname } from "node:path";
33
33
  import { homedir } from "node:os";
34
34
  var HARMONY_WORKFLOW_PROMPT = `# Harmony Card Workflow
35
35
 
36
- You are starting work on a Harmony card. Follow this workflow:
36
+ Start work on a Harmony card. Card reference: $ARGUMENTS
37
37
 
38
- ## Step 1: Find the Card
38
+ ## 1. Find & Fetch Card
39
39
 
40
- The user provided: $ARGUMENTS
40
+ Parse the reference and fetch the card:
41
+ - \`#42\` or \`42\` → \`harmony_get_card_by_short_id\` with \`shortId: 42\`
42
+ - UUID → \`harmony_get_card\` with \`cardId\`
43
+ - Name/text → \`harmony_search_cards\` with \`query\`
41
44
 
42
- Parse the card reference:
43
- - If it starts with \`#\` followed by numbers (e.g., \`#42\`), use \`harmony_get_card_by_short_id\` with the number
44
- - If it looks like a UUID, use \`harmony_get_card\` directly
45
- - Otherwise, use \`harmony_search_cards\` to find by name
45
+ ## 2. Get Board State
46
46
 
47
- ## Step 2: Move to In Progress
47
+ Call \`harmony_get_board\` to get columns and labels. From the response:
48
+ - Find the "In Progress" (or "Progress") column ID
49
+ - Find the "agent" label ID
48
50
 
49
- Once you have the card:
50
- 1. Get the board using \`harmony_get_board\` to find the "In Progress" column ID
51
- 2. Use \`harmony_move_card\` to move the card to "In Progress"
51
+ ## 3. Setup Card for Work
52
52
 
53
- ## Step 3: Add Agent Label
53
+ Execute these in sequence:
54
+ 1. \`harmony_move_card\` → Move to "In Progress" column
55
+ 2. \`harmony_add_label_to_card\` → Add "agent" label
56
+ 3. \`harmony_start_agent_session\`:
57
+ - \`cardId\`: Card UUID
58
+ - \`agentIdentifier\`: Your agent identifier
59
+ - \`agentName\`: Your agent name
60
+ - \`currentTask\`: "Analyzing card requirements"
54
61
 
55
- 1. From the board response, find the label named "agent"
56
- 2. Use \`harmony_add_label_to_card\` to add it to the card
62
+ ## 4. Generate Work Prompt
57
63
 
58
- ## Step 4: Start Agent Session
64
+ Call \`harmony_generate_prompt\` with:
65
+ - \`cardId\` or \`shortId\` (+ \`projectId\` if using shortId)
66
+ - \`variant\`: Select based on task:
67
+ - \`"execute"\` (default) → Clear tasks, bug fixes, well-defined work
68
+ - \`"analysis"\` → Complex features, unclear requirements
69
+ - \`"draft"\` → Medium complexity, want feedback first
59
70
 
60
- After adding the agent label, start tracking your work session:
61
- 1. Use \`harmony_start_agent_session\` with:
62
- - \`cardId\`: The card ID
63
- - \`agentIdentifier\`: Your agent identifier
64
- - \`agentName\`: Your agent name
65
- - \`currentTask\`: A brief description of what you're about to do
66
-
67
- This enables the timer badge on the card to show your progress in real-time.
68
-
69
- ## Step 5: Display Card Details
70
-
71
- Show the user:
72
- - Card title and short ID
73
- - Description (if any)
74
- - Priority
75
- - Current labels
76
- - Due date (if set)
77
-
78
- ## Step 6: Implement the Solution
79
-
80
- Based on the card's title and description:
81
- 1. Understand what needs to be done
82
- 2. Explore the codebase as needed
83
- 3. Implement the required changes
84
- 4. Test the changes
85
-
86
- **During implementation, update your progress periodically:**
87
- - Use \`harmony_update_agent_progress\` to report:
88
- - \`progressPercent\`: Estimated completion (0-100)
89
- - \`currentTask\`: What you're currently doing
90
- - \`blockers\`: Any issues blocking progress (set \`status: "blocked"\` if blocked)
91
-
92
- ## Step 7: Complete Work
93
-
94
- When implementation is complete:
95
- 1. Use \`harmony_end_agent_session\` with:
96
- - \`cardId\`: The card ID
97
- - \`status\`: "completed"
98
- - \`progressPercent\`: 100
99
- 2. Use \`harmony_move_card\` to move the card to the "Review" column
100
- 3. Summarize what was accomplished
101
-
102
- ## Important Notes
103
- - Always read the card description carefully before starting
104
- - If the task is unclear, ask for clarification
105
- - Make commits as appropriate during implementation
106
- - The "agent" label indicates AI is working on the card
107
- - Update progress at meaningful milestones, not constantly
108
- - If you need to pause work, call \`harmony_end_agent_session\` with \`status: "paused"\`
71
+ The generated prompt provides role framing, focus areas, subtasks, linked cards, and suggested outputs.
72
+
73
+ ## 5. Display Card Summary
74
+
75
+ Show the user: Card title, short ID, role, priority, labels, due date, description, and subtasks.
76
+
77
+ ## 6. Implement Solution
78
+
79
+ Work on the card following the generated prompt's guidance. Update progress at milestones:
80
+ - \`harmony_update_agent_progress\` with \`progressPercent\` (0-100), \`currentTask\`, \`status\`, \`blockers\`
81
+
82
+ **Progress checkpoints:** 20% (exploration), 50% (implementation), 80% (testing), 100% (done)
83
+
84
+ ## 7. Complete Work
85
+
86
+ When finished:
87
+ 1. \`harmony_end_agent_session\` with \`status: "completed"\`, \`progressPercent: 100\`
88
+ 2. \`harmony_move_card\` to "Review" column
89
+ 3. Summarize accomplishments
90
+
91
+ If pausing: \`harmony_end_agent_session\` with \`status: "paused"\`
92
+
93
+ ## Key Tools Reference
94
+
95
+ **Cards:** \`harmony_get_card\`, \`harmony_get_card_by_short_id\`, \`harmony_search_cards\`, \`harmony_create_card\`, \`harmony_update_card\`, \`harmony_move_card\`, \`harmony_delete_card\`, \`harmony_assign_card\`
96
+
97
+ **Subtasks:** \`harmony_create_subtask\`, \`harmony_toggle_subtask\`, \`harmony_delete_subtask\`
98
+
99
+ **Labels:** \`harmony_add_label_to_card\`, \`harmony_remove_label_from_card\`, \`harmony_create_label\`
100
+
101
+ **Links:** \`harmony_add_link_to_card\`, \`harmony_remove_link_from_card\`, \`harmony_get_card_links\`
102
+
103
+ **Board:** \`harmony_get_board\`, \`harmony_list_projects\`, \`harmony_get_context\`, \`harmony_set_project_context\`
104
+
105
+ **Sessions:** \`harmony_start_agent_session\`, \`harmony_update_agent_progress\`, \`harmony_end_agent_session\`, \`harmony_get_agent_session\`
106
+
107
+ **AI:** \`harmony_generate_prompt\`, \`harmony_process_command\`
109
108
  `;
110
109
  function ensureDir(dirPath) {
111
110
  if (!existsSync(dirPath)) {
@@ -201,7 +200,7 @@ When given a card reference (e.g., #42 or a card name), follow this workflow:
201
200
  3. Add the "agent" label using \`harmony_add_label_to_card\`
202
201
  4. Start a session with \`harmony_start_agent_session\` (agentIdentifier: "codex", agentName: "OpenAI Codex")
203
202
  5. Show the card details to the user
204
- 6. Implement the solution based on the card description
203
+ 6. Use \`harmony_generate_prompt\` to get guidance, then implement the solution
205
204
  7. Update progress periodically with \`harmony_update_agent_progress\`
206
205
  8. When done, call \`harmony_end_agent_session\` and move to "Review"
207
206
 
@@ -212,6 +211,7 @@ When given a card reference (e.g., #42 or a card name), follow this workflow:
212
211
  - \`harmony_add_label_to_card\`, \`harmony_remove_label_from_card\` - Manage labels
213
212
  - \`harmony_start_agent_session\`, \`harmony_update_agent_progress\`, \`harmony_end_agent_session\` - Track work
214
213
  - \`harmony_get_board\` - Get board state
214
+ - \`harmony_generate_prompt\` - Get role-based guidance and focus areas for the card
215
215
  `;
216
216
  const agentsPath = join(cwd, "AGENTS.md");
217
217
  const { created: agentsCreated, skipped: agentsSkipped } = writeFileIfNotExists(agentsPath, agentsContent, force);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harmony-mcp",
3
- "version": "1.2.3",
3
+ "version": "1.3.0",
4
4
  "description": "MCP server for Harmony Kanban board - enables AI coding agents to manage your boards",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",