@specforge/mcp 3.0.6 → 3.1.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.
Files changed (123) hide show
  1. package/dist/cli/commands/index.d.ts +2 -0
  2. package/dist/cli/commands/index.d.ts.map +1 -1
  3. package/dist/cli/commands/index.js +2 -0
  4. package/dist/cli/commands/index.js.map +1 -1
  5. package/dist/cli/commands/init.d.ts.map +1 -1
  6. package/dist/cli/commands/init.js +268 -2
  7. package/dist/cli/commands/init.js.map +1 -1
  8. package/dist/cli/commands/init.types.d.ts +39 -0
  9. package/dist/cli/commands/init.types.d.ts.map +1 -1
  10. package/dist/cli/commands/init.types.js +18 -0
  11. package/dist/cli/commands/init.types.js.map +1 -1
  12. package/dist/cli/commands/plan.d.ts +18 -0
  13. package/dist/cli/commands/plan.d.ts.map +1 -0
  14. package/dist/cli/commands/plan.js +154 -0
  15. package/dist/cli/commands/plan.js.map +1 -0
  16. package/dist/cli/commands/plan.types.d.ts +60 -0
  17. package/dist/cli/commands/plan.types.d.ts.map +1 -0
  18. package/dist/cli/commands/plan.types.js +8 -0
  19. package/dist/cli/commands/plan.types.js.map +1 -0
  20. package/dist/cli/commands/spec-activate.d.ts +29 -0
  21. package/dist/cli/commands/spec-activate.d.ts.map +1 -0
  22. package/dist/cli/commands/spec-activate.js +155 -0
  23. package/dist/cli/commands/spec-activate.js.map +1 -0
  24. package/dist/cli/commands/spec-activate.types.d.ts +24 -0
  25. package/dist/cli/commands/spec-activate.types.d.ts.map +1 -0
  26. package/dist/cli/commands/spec-activate.types.js +8 -0
  27. package/dist/cli/commands/spec-activate.types.js.map +1 -0
  28. package/dist/cli/commands/status.d.ts.map +1 -1
  29. package/dist/cli/commands/status.js +89 -1
  30. package/dist/cli/commands/status.js.map +1 -1
  31. package/dist/cli/commands/status.types.d.ts +2 -0
  32. package/dist/cli/commands/status.types.d.ts.map +1 -1
  33. package/dist/cli/commands/status.types.js.map +1 -1
  34. package/dist/cli/config/agent-teams.types.d.ts +194 -0
  35. package/dist/cli/config/agent-teams.types.d.ts.map +1 -0
  36. package/dist/cli/config/agent-teams.types.js +36 -0
  37. package/dist/cli/config/agent-teams.types.js.map +1 -0
  38. package/dist/cli/config/index.d.ts +2 -0
  39. package/dist/cli/config/index.d.ts.map +1 -1
  40. package/dist/cli/config/index.js +2 -0
  41. package/dist/cli/config/index.js.map +1 -1
  42. package/dist/cli/config/loader.d.ts +36 -2
  43. package/dist/cli/config/loader.d.ts.map +1 -1
  44. package/dist/cli/config/loader.js +65 -0
  45. package/dist/cli/config/loader.js.map +1 -1
  46. package/dist/cli/config/validation.d.ts +69 -0
  47. package/dist/cli/config/validation.d.ts.map +1 -0
  48. package/dist/cli/config/validation.js +295 -0
  49. package/dist/cli/config/validation.js.map +1 -0
  50. package/dist/cli/config/writer.d.ts +39 -0
  51. package/dist/cli/config/writer.d.ts.map +1 -1
  52. package/dist/cli/config/writer.js +58 -0
  53. package/dist/cli/config/writer.js.map +1 -1
  54. package/dist/cli/index.d.ts.map +1 -1
  55. package/dist/cli/index.js +5 -1
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/lib/index.d.ts +3 -0
  58. package/dist/lib/index.d.ts.map +1 -1
  59. package/dist/lib/index.js +3 -0
  60. package/dist/lib/index.js.map +1 -1
  61. package/dist/lib/monorepo-detector.d.ts +31 -0
  62. package/dist/lib/monorepo-detector.d.ts.map +1 -0
  63. package/dist/lib/monorepo-detector.js +271 -0
  64. package/dist/lib/monorepo-detector.js.map +1 -0
  65. package/dist/lib/prompt-generator.d.ts +65 -0
  66. package/dist/lib/prompt-generator.d.ts.map +1 -0
  67. package/dist/lib/prompt-generator.js +172 -0
  68. package/dist/lib/prompt-generator.js.map +1 -0
  69. package/dist/lib/strategy-analyzer.d.ts +59 -0
  70. package/dist/lib/strategy-analyzer.d.ts.map +1 -0
  71. package/dist/lib/strategy-analyzer.js +137 -0
  72. package/dist/lib/strategy-analyzer.js.map +1 -0
  73. package/dist/tools/core/blueprint.d.ts.map +1 -1
  74. package/dist/tools/core/blueprint.js +6 -0
  75. package/dist/tools/core/blueprint.js.map +1 -1
  76. package/dist/tools/core/context-helper.d.ts +22 -0
  77. package/dist/tools/core/context-helper.d.ts.map +1 -1
  78. package/dist/tools/core/context-helper.js +37 -1
  79. package/dist/tools/core/context-helper.js.map +1 -1
  80. package/dist/tools/core/workspace-files.d.ts +49 -0
  81. package/dist/tools/core/workspace-files.d.ts.map +1 -0
  82. package/dist/tools/core/workspace-files.js +259 -0
  83. package/dist/tools/core/workspace-files.js.map +1 -0
  84. package/dist/tools/index.d.ts.map +1 -1
  85. package/dist/tools/index.js +147 -0
  86. package/dist/tools/index.js.map +1 -1
  87. package/package.json +3 -2
  88. package/src/cli/templates/agents/content/core/sfag-implementer.ts +113 -0
  89. package/src/cli/templates/agents/content/core/sfag-orchestrator.ts +107 -0
  90. package/src/cli/templates/agents/content/core/sfag-spec-creator.ts +126 -0
  91. package/src/cli/templates/agents/content/core/sfag-ticket-implementer.ts +132 -0
  92. package/src/cli/templates/agents/content/research/sfag-package-researcher.ts +153 -0
  93. package/src/cli/templates/agents/content/task-type/sfag-api-implementer.ts +132 -0
  94. package/src/cli/templates/agents/content/task-type/sfag-docs-writer.ts +183 -0
  95. package/src/cli/templates/agents/content/task-type/sfag-frontend-builder.ts +141 -0
  96. package/src/cli/templates/agents/content/task-type/sfag-infra-architect.ts +149 -0
  97. package/src/cli/templates/agents/content/task-type/sfag-schema-designer.ts +132 -0
  98. package/src/cli/templates/agents/content/task-type/sfag-test-writer.ts +171 -0
  99. package/src/cli/templates/agents/index.ts +74 -0
  100. package/src/cli/templates/commands.ts +179 -0
  101. package/src/cli/templates/content/sf-autonomous.ts +78 -0
  102. package/src/cli/templates/content/sf-blockers.ts +68 -0
  103. package/src/cli/templates/content/sf-commit.ts +78 -0
  104. package/src/cli/templates/content/sf-context.ts +64 -0
  105. package/src/cli/templates/content/sf-create-epics.ts +129 -0
  106. package/src/cli/templates/content/sf-create-spec.ts +136 -0
  107. package/src/cli/templates/content/sf-create-tickets.ts +148 -0
  108. package/src/cli/templates/content/sf-epic.ts +69 -0
  109. package/src/cli/templates/content/sf-help.ts +61 -0
  110. package/src/cli/templates/content/sf-import.ts +88 -0
  111. package/src/cli/templates/content/sf-init.ts +61 -0
  112. package/src/cli/templates/content/sf-next.ts +67 -0
  113. package/src/cli/templates/content/sf-reset.ts +78 -0
  114. package/src/cli/templates/content/sf-review.ts +67 -0
  115. package/src/cli/templates/content/sf-search.ts +64 -0
  116. package/src/cli/templates/content/sf-status.ts +67 -0
  117. package/src/cli/templates/content/sf-ticket.ts +76 -0
  118. package/src/cli/templates/content/sf-validate.ts +78 -0
  119. package/src/cli/templates/index.ts +16 -0
  120. package/src/cli/templates/skills/specforge-conventions.md +109 -0
  121. package/src/cli/templates/skills/specforge-orchestrator.md +401 -0
  122. package/src/cli/templates/skills/specforge-validator.md +122 -0
  123. package/src/cli/templates/skills/specforge-worker.md +378 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * SF-Import-Plan Command Template
3
+ *
4
+ * Template for transforming a plan into a complete SpecForge specification.
5
+ */
6
+
7
+ export const SF_IMPORT_PLAN_CONTENT = `# Import Plan (SpecForge)
8
+
9
+ Transform a plan document into a complete SpecForge specification with epics and tickets.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Required: Path to plan markdown file
13
+
14
+ ## Task
15
+
16
+ ### 1. Read and Parse Plan
17
+
18
+ **Logic:**
19
+ - Read file at $ARGUMENTS
20
+ - Extract specification metadata
21
+ - Parse epic sections
22
+ - Extract ticket information
23
+ - Identify patterns and guardrails
24
+
25
+ ### 2. Create Specification
26
+
27
+ **MCP Calls:**
28
+ \`\`\`typescript
29
+ create_specification({
30
+ title: extractedTitle,
31
+ description: extractedDescription,
32
+ metadata: extractedMetadata
33
+ })
34
+ \`\`\`
35
+
36
+ ### 3. Create Epics and Tickets
37
+
38
+ **MCP Calls:**
39
+ \`\`\`typescript
40
+ // For each epic in plan
41
+ for (const epic of epics) {
42
+ const epicId = await create_epic({
43
+ specificationId,
44
+ title: epic.title,
45
+ description: epic.description
46
+ })
47
+
48
+ // For each ticket in epic
49
+ for (const ticket of epic.tickets) {
50
+ await create_ticket({
51
+ epicId,
52
+ title: ticket.title,
53
+ description: ticket.description,
54
+ dependencies: ticket.dependencies
55
+ })
56
+ }
57
+ }
58
+ \`\`\`
59
+
60
+ ### 4. Display Import Results
61
+
62
+ **Output:**
63
+ \`\`\`
64
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65
+ PLAN IMPORT COMPLETE
66
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67
+ Specification: {title}
68
+ ID: {specificationId}
69
+
70
+ CREATED
71
+ ─────────────────────────────────────────────────────────────────
72
+ Epics: {epicCount}
73
+ Tickets: {ticketCount}
74
+
75
+ STRUCTURE
76
+ ─────────────────────────────────────────────────────────────────
77
+ E1 │ {title} │ {ticketCount} tickets
78
+ E2 │ {title} │ {ticketCount} tickets
79
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
80
+
81
+ Next: Run /sf-init {specificationId} to start work
82
+ \`\`\`
83
+
84
+ ## Notes
85
+ - Automatically creates full ticket system from plan
86
+ - Preserves epic and ticket structure
87
+ - Use /sf-init to begin implementation
88
+ `;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * SF-Init Command Template
3
+ *
4
+ * Template for initializing SpecForge specification for implementation work.
5
+ */
6
+
7
+ export const SF_INIT_CONTENT = `# Initialize Ticket System (SpecForge)
8
+
9
+ Initialize a SpecForge specification for implementation work.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Specification ID to initialize
13
+
14
+ ## Task
15
+
16
+ ### 1. Get or Set Working Context
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ // Get current context
21
+ get_working_context()
22
+
23
+ // If $ARGUMENTS provided, set specification
24
+ set_working_context({
25
+ specificationId: "$ARGUMENTS"
26
+ })
27
+ \`\`\`
28
+
29
+ ### 2. Load Specification Details
30
+
31
+ **MCP Calls:**
32
+ \`\`\`typescript
33
+ get_specification(specificationId)
34
+ list_epics({ specificationId })
35
+ list_tickets({ specificationId })
36
+ \`\`\`
37
+
38
+ ### 3. Display Initialization Summary
39
+
40
+ **Output:**
41
+ \`\`\`
42
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
+ SPECFORGE INITIALIZED
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ Specification: {title}
46
+ Status: {status}
47
+ Epics: {epicCount}
48
+ Tickets: {ticketCount}
49
+
50
+ Progress: {done}/{total} ({percentage}%)
51
+ Ready: {readyCount} tickets available
52
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
53
+
54
+ Next: Run /sf-next to start the next ready ticket
55
+ \`\`\`
56
+
57
+ ## Notes
58
+ - Context persists across commands
59
+ - Use /sf-status for detailed view
60
+ - Use /sf-next to start implementation
61
+ `;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * SF-Next Command Template
3
+ *
4
+ * Template for quick starting the next ready ticket.
5
+ */
6
+
7
+ export const SF_NEXT_CONTENT = `# Quick Start Next Ticket (SpecForge)
8
+
9
+ Automatically find and start the next ready ticket for implementation.
10
+
11
+ ## Task
12
+
13
+ ### 1. Find Next Ready Ticket
14
+
15
+ **MCP Calls:**
16
+ \`\`\`typescript
17
+ get_working_context()
18
+ list_tickets({
19
+ specificationId,
20
+ status: 'ready',
21
+ sortBy: 'priority'
22
+ })
23
+ \`\`\`
24
+
25
+ ### 2. Set Ticket Context
26
+
27
+ **MCP Calls:**
28
+ \`\`\`typescript
29
+ set_working_context({
30
+ ticketId: nextTicket.id
31
+ })
32
+ update_ticket({
33
+ ticketId: nextTicket.id,
34
+ status: 'in_progress'
35
+ })
36
+ \`\`\`
37
+
38
+ ### 3. Display Ticket Details
39
+
40
+ **Output:**
41
+ \`\`\`
42
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
+ STARTING: E{n}-T{m}
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ Title: {title}
46
+ Priority: {priority}
47
+ Epic: E{n} - {epicTitle}
48
+ Dependencies: {depCount} completed
49
+
50
+ DESCRIPTION
51
+ ─────────────────────────────────────────────────────────────────
52
+ {description}
53
+
54
+ ACCEPTANCE CRITERIA
55
+ ─────────────────────────────────────────────────────────────────
56
+ □ {criterion1}
57
+ □ {criterion2}
58
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
+
60
+ Ready to implement!
61
+ \`\`\`
62
+
63
+ ## Notes
64
+ - Automatically selects highest priority ready ticket
65
+ - Updates ticket status to in_progress
66
+ - Sets working context to selected ticket
67
+ `;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * SF-Reset Command Template
3
+ *
4
+ * Template for resetting ticket statuses with dependency awareness.
5
+ */
6
+
7
+ export const SF_RESET_CONTENT = `# Reset Ticket Statuses (SpecForge)
8
+
9
+ Reset ticket statuses to ready state with dependency awareness.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Specification ID or ticket ID to reset
13
+
14
+ ## Task
15
+
16
+ ### 1. Get Reset Scope
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ get_working_context()
21
+
22
+ if ($ARGUMENTS.match(/E\d+-T\d+/)) {
23
+ // Single ticket reset
24
+ get_ticket($ARGUMENTS)
25
+ } else {
26
+ // Full specification reset
27
+ if ($ARGUMENTS) {
28
+ set_working_context({ specificationId: "$ARGUMENTS" })
29
+ }
30
+ list_tickets({ specificationId })
31
+ }
32
+ \`\`\`
33
+
34
+ ### 2. Reset Tickets
35
+
36
+ **MCP Calls:**
37
+ \`\`\`typescript
38
+ // For each ticket to reset
39
+ for (const ticket of tickets) {
40
+ // Check dependencies
41
+ const allDepsCompleted = ticket.dependencies.every(
42
+ dep => getTicketStatus(dep) === 'done'
43
+ );
44
+
45
+ // Update status
46
+ update_ticket({
47
+ ticketId: ticket.id,
48
+ status: allDepsCompleted ? 'ready' : 'blocked'
49
+ })
50
+ }
51
+ \`\`\`
52
+
53
+ ### 3. Display Reset Results
54
+
55
+ **Output:**
56
+ \`\`\`
57
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
58
+ TICKET RESET COMPLETE
59
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
+ Scope: {scope}
61
+
62
+ RESET SUMMARY
63
+ ─────────────────────────────────────────────────────────────────
64
+ Ready: {readyCount} tickets
65
+ Blocked: {blockedCount} tickets
66
+ Done: {doneCount} tickets (unchanged)
67
+
68
+ RESET TICKETS
69
+ ─────────────────────────────────────────────────────────────────
70
+ E{n}-T{m} │ {oldStatus} → {newStatus}
71
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
72
+ \`\`\`
73
+
74
+ ## Notes
75
+ - Respects dependency constraints
76
+ - Can reset single ticket or entire specification
77
+ - Completed tickets remain unchanged by default
78
+ `;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * SF-Review Command Template
3
+ *
4
+ * Template for reviewing accomplishments and progress analysis.
5
+ */
6
+
7
+ export const SF_REVIEW_CONTENT = `# Review Accomplishments (SpecForge)
8
+
9
+ Comprehensive review of implementation progress and accomplishments.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Specification ID to review
13
+
14
+ ## Task
15
+
16
+ ### 1. Get Specification Context
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ get_working_context()
21
+
22
+ if ($ARGUMENTS) {
23
+ set_working_context({ specificationId: "$ARGUMENTS" })
24
+ }
25
+
26
+ get_specification(specificationId)
27
+ \`\`\`
28
+
29
+ ### 2. Load Implementation Data
30
+
31
+ **MCP Calls:**
32
+ \`\`\`typescript
33
+ list_epics({ specificationId })
34
+ list_tickets({ specificationId })
35
+ \`\`\`
36
+
37
+ ### 3. Display Review Summary
38
+
39
+ **Output:**
40
+ \`\`\`
41
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
+ IMPLEMENTATION REVIEW
43
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
+ Specification: {title}
45
+ Overall: {done}/{total} ({percentage}%)
46
+
47
+ PROGRESS BY EPIC
48
+ ─────────────────────────────────────────────────────────────────
49
+ E{n} │ {title} │ {ticketsDone}/{ticketsTotal} ({pct}%)
50
+
51
+ RECENTLY COMPLETED
52
+ ─────────────────────────────────────────────────────────────────
53
+ ✓ E{n}-T{m} │ {title} │ {completedDate}
54
+
55
+ VELOCITY
56
+ ─────────────────────────────────────────────────────────────────
57
+ Last 7 days: {ticketsCompleted} tickets
58
+ Average: {avgPerDay} tickets/day
59
+ Remaining: ~{estimatedDays} days
60
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
+ \`\`\`
62
+
63
+ ## Notes
64
+ - Shows completed tickets and velocity metrics
65
+ - Provides estimated completion timeline
66
+ - Use /sf-status for current state
67
+ `;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * SF-Search Command Template
3
+ *
4
+ * Template for searching tickets by text, tags, or filters.
5
+ */
6
+
7
+ export const SF_SEARCH_CONTENT = `# Search Tickets (SpecForge)
8
+
9
+ Search tickets by text, tags, status, or other filters.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Required: Search query
13
+
14
+ ## Task
15
+
16
+ ### 1. Parse Search Query
17
+
18
+ **Logic:**
19
+ - Extract search terms
20
+ - Parse filters (status:, epic:, tag:)
21
+ - Identify text search vs filter search
22
+
23
+ ### 2. Search Tickets
24
+
25
+ **MCP Calls:**
26
+ \`\`\`typescript
27
+ get_working_context()
28
+
29
+ list_tickets({
30
+ specificationId,
31
+ search: extractedTerms,
32
+ status: extractedStatus,
33
+ epicId: extractedEpicId,
34
+ tags: extractedTags
35
+ })
36
+ \`\`\`
37
+
38
+ ### 3. Display Search Results
39
+
40
+ **Output:**
41
+ \`\`\`
42
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
+ SEARCH RESULTS
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ Query: {query}
46
+ Found: {resultCount} tickets
47
+
48
+ RESULTS
49
+ ─────────────────────────────────────────────────────────────────
50
+ E{n}-T{m} │ {title} │ {status}
51
+ {matchedText}...
52
+
53
+ E{n}-T{m} │ {title} │ {status}
54
+ {matchedText}...
55
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
56
+
57
+ Tip: Use filters like status:ready or epic:E1
58
+ \`\`\`
59
+
60
+ ## Notes
61
+ - Supports text search and filters
62
+ - Filters: status:, epic:, tag:, priority:
63
+ - Can combine multiple filters
64
+ `;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * SF-Status Command Template
3
+ *
4
+ * Template for displaying implementation status with consolidated tools.
5
+ */
6
+
7
+ export const SF_STATUS_CONTENT = `# Implementation Status (SpecForge)
8
+
9
+ Display comprehensive implementation status with consolidated progress view.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Specification ID to view status for
13
+
14
+ ## Task
15
+
16
+ ### 1. Get Working Context
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ get_working_context()
21
+
22
+ // If $ARGUMENTS provided, switch context
23
+ if ($ARGUMENTS) {
24
+ set_working_context({ specificationId: "$ARGUMENTS" })
25
+ }
26
+ \`\`\`
27
+
28
+ ### 2. Load Implementation Data
29
+
30
+ **MCP Calls:**
31
+ \`\`\`typescript
32
+ get_specification(specificationId)
33
+ list_epics({ specificationId })
34
+ list_tickets({ specificationId })
35
+ \`\`\`
36
+
37
+ ### 3. Display Status Overview
38
+
39
+ **Output:**
40
+ \`\`\`
41
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
+ IMPLEMENTATION STATUS
43
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
+ Specification: {title}
45
+ Progress: {done}/{total} ({percentage}%)
46
+
47
+ EPICS
48
+ ─────────────────────────────────────────────────────────────────
49
+ E{n} │ {title} │ {progress}% │ {status}
50
+
51
+ READY TICKETS
52
+ ─────────────────────────────────────────────────────────────────
53
+ E{n}-T{m} │ {title} │ {priority}
54
+
55
+ BLOCKED TICKETS
56
+ ─────────────────────────────────────────────────────────────────
57
+ E{n}-T{m} │ {title} │ Blocked by: {dependencies}
58
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
+
60
+ Next: Run /sf-next to start implementation
61
+ \`\`\`
62
+
63
+ ## Notes
64
+ - Shows overall progress and epic breakdown
65
+ - Lists ready and blocked tickets
66
+ - Use /sf-validate for system health check
67
+ `;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SF-Ticket-Implementation Command Template
3
+ *
4
+ * Template for implementing a specific ticket with streamlined workflow.
5
+ */
6
+
7
+ export const SF_TICKET_IMPLEMENTATION_CONTENT = `# Implement Ticket (SpecForge)
8
+
9
+ Implement a specific ticket with full context and streamlined workflow.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Ticket ID to implement (e.g., E1-T3)
13
+
14
+ ## Task
15
+
16
+ ### 1. Select Ticket
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ // If no arguments, prompt user
21
+ if (!$ARGUMENTS) {
22
+ list_tickets({
23
+ specificationId,
24
+ status: 'ready'
25
+ })
26
+ // Display selection menu
27
+ }
28
+
29
+ // Get ticket details
30
+ get_ticket($ARGUMENTS || selectedId)
31
+ \`\`\`
32
+
33
+ ### 2. Verify Dependencies
34
+
35
+ **MCP Calls:**
36
+ \`\`\`typescript
37
+ // Check all dependencies are completed
38
+ for (const depId of ticket.dependencies) {
39
+ get_ticket(depId)
40
+ // Verify status is 'done'
41
+ }
42
+ \`\`\`
43
+
44
+ ### 3. Set Context and Start
45
+
46
+ **MCP Calls:**
47
+ \`\`\`typescript
48
+ set_working_context({ ticketId: ticket.id })
49
+ update_ticket({
50
+ ticketId: ticket.id,
51
+ status: 'in_progress'
52
+ })
53
+ \`\`\`
54
+
55
+ ### 4. Display Implementation View
56
+
57
+ **Output:**
58
+ \`\`\`
59
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
+ IMPLEMENTING: E{n}-T{m}
61
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
62
+ {title}
63
+
64
+ {fullDescription}
65
+ {implementationGuidance}
66
+ {acceptanceCriteria}
67
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
68
+
69
+ Begin implementation
70
+ \`\`\`
71
+
72
+ ## Notes
73
+ - Verifies all dependencies are completed
74
+ - Provides full ticket context for implementation
75
+ - Use /sf-commit when complete
76
+ `;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * SF-Validate Command Template
3
+ *
4
+ * Template for validating ticket system health.
5
+ */
6
+
7
+ export const SF_VALIDATE_CONTENT = `# Validate Ticket System (SpecForge)
8
+
9
+ Run comprehensive health checks on the ticket system.
10
+
11
+ ## Arguments
12
+ - \`$ARGUMENTS\` - Optional: Specification ID to validate
13
+
14
+ ## Task
15
+
16
+ ### 1. Get Specification Context
17
+
18
+ **MCP Calls:**
19
+ \`\`\`typescript
20
+ get_working_context()
21
+
22
+ if ($ARGUMENTS) {
23
+ set_working_context({ specificationId: "$ARGUMENTS" })
24
+ }
25
+
26
+ get_specification(specificationId)
27
+ \`\`\`
28
+
29
+ ### 2. Load and Validate Data
30
+
31
+ **MCP Calls:**
32
+ \`\`\`typescript
33
+ list_epics({ specificationId })
34
+ list_tickets({ specificationId })
35
+
36
+ // Validate each ticket
37
+ for (const ticket of tickets) {
38
+ get_ticket(ticket.id)
39
+ // Check dependencies, status, fields
40
+ }
41
+ \`\`\`
42
+
43
+ ### 3. Display Validation Results
44
+
45
+ **Output:**
46
+ \`\`\`
47
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
48
+ SYSTEM VALIDATION
49
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
50
+ Specification: {title}
51
+
52
+ CHECKS
53
+ ─────────────────────────────────────────────────────────────────
54
+ ✓ All epics have valid structure
55
+ ✓ All tickets have required fields
56
+ ✓ Dependency graph is acyclic
57
+ ✓ Status transitions are valid
58
+ ✓ No orphaned tickets
59
+
60
+ WARNINGS
61
+ ─────────────────────────────────────────────────────────────────
62
+ ⚠ E{n}-T{m}: Missing acceptance criteria
63
+ ⚠ E{n}-T{m}: Long dependency chain (depth {n})
64
+
65
+ ERRORS
66
+ ─────────────────────────────────────────────────────────────────
67
+ ✗ E{n}-T{m}: Circular dependency detected
68
+ ✗ E{n}-T{m}: Invalid dependency reference
69
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
70
+
71
+ Status: {errors ? 'FAILED' : 'PASSED'}
72
+ \`\`\`
73
+
74
+ ## Notes
75
+ - Checks dependency graph integrity
76
+ - Validates ticket structure and fields
77
+ - Reports warnings and errors
78
+ `;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Templates Module
3
+ *
4
+ * Exports all template functions for command and agent scaffolding.
5
+ */
6
+
7
+ // Command templates
8
+ export { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from './commands.js';
9
+
10
+ // Agent templates
11
+ export {
12
+ getAgentTemplates,
13
+ getAgentTemplate,
14
+ getAgentsByCategory,
15
+ getAgentNames,
16
+ } from './agents/index.js';