@damper/mcp 0.8.2 → 0.8.3
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/dist/index.js +58 -12
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -269,8 +269,10 @@ server.registerTool('update_task', {
|
|
|
269
269
|
'Useful for refining task details as you learn more about the work.',
|
|
270
270
|
inputSchema: z.object({
|
|
271
271
|
taskId: z.string().describe('Task ID'),
|
|
272
|
-
title: z.string().optional().describe('Task title'
|
|
273
|
-
|
|
272
|
+
title: z.string().optional().describe('Task title (max 60 chars, sentence case, no trailing period). Verb prefix: ' +
|
|
273
|
+
'bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …"'),
|
|
274
|
+
description: z.string().optional().describe('Task description (shown on public roadmap). Write for end users: 1-3 sentences on what changes and why it matters. ' +
|
|
275
|
+
'No code references, file paths, or jargon.'),
|
|
274
276
|
implementationPlan: z.string().optional().describe('Implementation plan (markdown, internal only - never shown publicly)'),
|
|
275
277
|
priority: z.enum(['high', 'medium', 'low']).nullable().optional().describe('Task priority'),
|
|
276
278
|
effort: z.enum(['xs', 's', 'm', 'l', 'xl']).nullable().optional().describe('Estimated effort'),
|
|
@@ -351,9 +353,11 @@ server.registerTool('create_task', {
|
|
|
351
353
|
title: 'Create Task',
|
|
352
354
|
description: 'Create a new roadmap task. Use for importing from TODO files or creating work items.',
|
|
353
355
|
inputSchema: z.object({
|
|
354
|
-
title: z.string().describe('Task title. Use verb prefix matching the type: ' +
|
|
355
|
-
'bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …"'
|
|
356
|
-
|
|
356
|
+
title: z.string().describe('Task title (max 60 chars, sentence case, no trailing period). Use verb prefix matching the type: ' +
|
|
357
|
+
'bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …". ' +
|
|
358
|
+
'E.g., "Add dark mode support", "Fix login timeout on slow connections"'),
|
|
359
|
+
description: z.string().optional().describe('Task description (shown on public roadmap). Write for end users: 1-3 sentences on what changes and why it matters. ' +
|
|
360
|
+
'No code references, file paths, or jargon.'),
|
|
357
361
|
type: z.enum(['bug', 'feature', 'improvement', 'task']).optional().describe('Task type (default: feature)'),
|
|
358
362
|
status: z.enum(['planned', 'in_progress', 'done']).optional(),
|
|
359
363
|
priority: z.enum(['high', 'medium', 'low']).optional().describe('Task priority'),
|
|
@@ -498,7 +502,7 @@ server.registerTool('add_commit', {
|
|
|
498
502
|
inputSchema: z.object({
|
|
499
503
|
taskId: z.string(),
|
|
500
504
|
hash: z.string().describe('Commit hash (short or full)'),
|
|
501
|
-
message: z.string().describe('Commit message'),
|
|
505
|
+
message: z.string().describe('Commit message in conventional commits format: type(scope): description. E.g., "feat(auth): add OAuth login"'),
|
|
502
506
|
}),
|
|
503
507
|
outputSchema: z.object({
|
|
504
508
|
taskId: z.string(),
|
|
@@ -524,7 +528,7 @@ server.registerTool('create_subtask', {
|
|
|
524
528
|
description: 'Add a new subtask to a task. Useful for breaking down work into smaller steps.',
|
|
525
529
|
inputSchema: z.object({
|
|
526
530
|
taskId: z.string().describe('Task ID'),
|
|
527
|
-
title: z.string().describe('Subtask title'),
|
|
531
|
+
title: z.string().describe('Subtask title — short imperative phrase, e.g., "Add validation to login form"'),
|
|
528
532
|
}),
|
|
529
533
|
outputSchema: z.object({
|
|
530
534
|
taskId: z.string(),
|
|
@@ -610,7 +614,7 @@ server.registerTool('complete_task', {
|
|
|
610
614
|
'Returns documentation update suggestions.',
|
|
611
615
|
inputSchema: z.object({
|
|
612
616
|
taskId: z.string(),
|
|
613
|
-
summary: z.string().describe('Brief one-line summary of what was done'),
|
|
617
|
+
summary: z.string().describe('Brief one-line summary of what was done, written for end users. Focus on the outcome, not the implementation.'),
|
|
614
618
|
commits: z.array(z.object({
|
|
615
619
|
hash: z.string().describe('Commit hash (short or full)'),
|
|
616
620
|
message: z.string().describe('Commit message'),
|
|
@@ -789,6 +793,44 @@ This project uses Damper MCP for task tracking. **You MUST follow this workflow.
|
|
|
789
793
|
- If the project has a **completion checklist** (shown in \`start_task\` response), you MUST pass all items as \`confirmations\` when calling \`complete_task\`
|
|
790
794
|
- If you learned something about the codebase, consider updating project context
|
|
791
795
|
|
|
796
|
+
### Content Style Guide
|
|
797
|
+
|
|
798
|
+
All content you generate — titles, descriptions, changelogs, notes — should follow these conventions for consistency.
|
|
799
|
+
|
|
800
|
+
**Task titles:**
|
|
801
|
+
- Imperative verb prefix matching type: bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …"
|
|
802
|
+
- Sentence case after verb (lowercase unless proper noun): "Add dark mode support"
|
|
803
|
+
- Max 60 characters, no trailing period
|
|
804
|
+
- Specific enough to understand without reading the description
|
|
805
|
+
|
|
806
|
+
**Task descriptions** (shown on public roadmap):
|
|
807
|
+
- Write for end users, not developers — no code references, file paths, or jargon
|
|
808
|
+
- 1-3 sentences explaining what changes and why it matters to users
|
|
809
|
+
- Focus on the user benefit, not implementation details
|
|
810
|
+
|
|
811
|
+
**Subtask titles:**
|
|
812
|
+
- Short imperative phrase: "Add validation to login form"
|
|
813
|
+
- Specific enough to track independently
|
|
814
|
+
|
|
815
|
+
**Changelog content:**
|
|
816
|
+
- Write for users who want to know what changed and why they should care
|
|
817
|
+
- Group entries by type: Added, Improved, Fixed
|
|
818
|
+
- Each entry: 1-2 sentences focused on the user-visible change, not the technical approach
|
|
819
|
+
- Use plain language — avoid technical jargon
|
|
820
|
+
|
|
821
|
+
**Changelog summaries** (max 280 chars):
|
|
822
|
+
- Lead with the most impactful change
|
|
823
|
+
- Conversational tone suitable for social media or email subject
|
|
824
|
+
|
|
825
|
+
**Commit messages:**
|
|
826
|
+
- Conventional commits format: \`type(scope): description\`
|
|
827
|
+
- Types: feat, fix, refactor, test, docs, chore, style, perf
|
|
828
|
+
- Imperative mood: "add feature" not "added feature"
|
|
829
|
+
|
|
830
|
+
**Notes:**
|
|
831
|
+
- Prefix with category: "Decision: …", "Blocked: …", "Context: …"
|
|
832
|
+
- Only log non-obvious decisions and blockers — skip routine progress
|
|
833
|
+
|
|
792
834
|
### Why This Matters
|
|
793
835
|
- **Project context prevents mistakes** - Contains architecture decisions, gotchas, and patterns
|
|
794
836
|
- Locked tasks block other agents from working on them
|
|
@@ -1731,10 +1773,12 @@ server.registerTool('create_changelog', {
|
|
|
1731
1773
|
'Use this to create additional changelogs if needed.',
|
|
1732
1774
|
inputSchema: z.object({
|
|
1733
1775
|
title: z.string().describe('Changelog title (e.g., "v2.1.0" or "January 2025 Release")'),
|
|
1734
|
-
content: z.string().optional().describe('
|
|
1776
|
+
content: z.string().optional().describe('Changelog content (markdown). Write for users: group by Added/Improved/Fixed, ' +
|
|
1777
|
+
'1-2 sentences per entry focused on user-visible changes. Avoid technical jargon.'),
|
|
1735
1778
|
version: z.string().optional().describe('Version number'),
|
|
1736
1779
|
date: z.string().optional().describe('Custom display date (ISO 8601). When set, used for sorting/display instead of publishedAt.'),
|
|
1737
|
-
summary: z.string().max(280).optional().describe('Short summary for social sharing and email subject (max 280 chars)'
|
|
1780
|
+
summary: z.string().max(280).optional().describe('Short summary for social sharing and email subject (max 280 chars). ' +
|
|
1781
|
+
'Lead with the most impactful change, conversational tone.'),
|
|
1738
1782
|
status: z.enum(['draft', 'published']).optional().describe('Status (default: draft)'),
|
|
1739
1783
|
}),
|
|
1740
1784
|
outputSchema: z.object({
|
|
@@ -1766,10 +1810,12 @@ server.registerTool('update_changelog', {
|
|
|
1766
1810
|
inputSchema: z.object({
|
|
1767
1811
|
changelogId: z.string().describe('Changelog ID'),
|
|
1768
1812
|
title: z.string().optional().describe('New title'),
|
|
1769
|
-
content: z.string().optional().describe('New content (markdown)'
|
|
1813
|
+
content: z.string().optional().describe('New content (markdown). Write for users: group by Added/Improved/Fixed, ' +
|
|
1814
|
+
'1-2 sentences per entry focused on user-visible changes. Avoid technical jargon.'),
|
|
1770
1815
|
version: z.string().optional().describe('Version number'),
|
|
1771
1816
|
date: z.string().optional().describe('Custom display date (ISO 8601). When set, used for sorting/display instead of publishedAt. Pass empty string to clear.'),
|
|
1772
|
-
summary: z.string().max(280).optional().describe('Short summary for social sharing and email subject (max 280 chars)'
|
|
1817
|
+
summary: z.string().max(280).optional().describe('Short summary for social sharing and email subject (max 280 chars). ' +
|
|
1818
|
+
'Lead with the most impactful change, conversational tone.'),
|
|
1773
1819
|
status: z.enum(['draft', 'published']).optional().describe('Status'),
|
|
1774
1820
|
}),
|
|
1775
1821
|
outputSchema: z.object({
|