@specforge/mcp 2.2.0 → 2.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.
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Template for creating epics with epic-level patterns from plan phases.
5
5
  */
6
- export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with patterns extracted from plan phases.\n\n## Arguments\n- `$ARGUMENTS` - Required: Specification ID\n\n## Task\n\n### 1. Get Specification\n\n**MCP Calls:**\n```typescript\nget_specification($ARGUMENTS)\n```\n\n### 2. Read Original Plan\n\n**Logic:**\n- Locate original plan file from specification metadata\n- Parse plan phases/sections\n- Extract epic-level descriptions\n- Identify patterns per epic\n\n### 3. Create Epics\n\n**MCP Calls:**\n```typescript\n// For each phase/section in plan\nfor (const phase of phases) {\n await create_epic({\n specificationId: $ARGUMENTS,\n title: phase.title,\n description: phase.description,\n patterns: phase.patterns,\n order: phase.order\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEPICS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSpecification: {title}\n\nCREATED EPICS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE1 \u2502 {title} \u2502 {description}\nE2 \u2502 {title} \u2502 {description}\nE3 \u2502 {title} \u2502 {description}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-tickets <epic-id> for each epic\n```\n\n## Notes\n- Creates epic structure from plan phases\n- Preserves patterns for ticket creation\n- Use /sf-create-tickets for each epic\n";
6
+ export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with objectives extracted from plan phases.\n\n## Arguments\n- `$ARGUMENTS` - Required: Specification ID\n\n## Task\n\n### 1. Get Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'get',\n specificationId: $ARGUMENTS,\n include: ['epics', 'patterns'] // Get existing epics and inherited patterns\n})\n```\n\n### 2. Read Original Plan\n\n**Logic:**\n- Locate original plan file from specification metadata\n- Parse plan phases/sections\n- Extract epic-level titles, descriptions, and objectives\n- Identify epic-specific technical details\n\n### 3. Create Epics\n\n**MCP Calls:**\n```typescript\n// For each phase/section in plan\nfor (const phase of phases) {\n await epic({\n operation: 'create',\n\n // === REQUIRED ===\n specificationId: $ARGUMENTS,\n title: phase.title,\n description: phase.description,\n objective: phase.objective, // Clear goal statement\n\n // === CORE (recommended) ===\n content: phase.fullContent, // Full markdown content\n scope: phase.scope, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['phase1', 'backend'],\n estimatedHours: 40,\n\n // === PLANNING ===\n goals: ['Implement X', 'Enable Y'],\n acceptanceCriteria: ['Feature X works', 'Tests pass'],\n guardrails: ['Do NOT break existing API'],\n constraints: ['Must be backward compatible'],\n assumptions: ['Database schema is stable'],\n risks: ['May require migration'],\n\n // === TECHNICAL ===\n architecture: 'Service layer with repository pattern',\n fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',\n techStack: ['typescript', 'prisma'],\n dependencies: ['zod', '@prisma/client'],\n apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },\n\n // === PATTERN OVERRIDES (override spec-level patterns) ===\n sharedPatterns: {\n errorHandling: 'Custom error handling for this epic',\n validation: 'Use zod schemas'\n },\n additionalImports: [\n \"import { z } from 'zod'\",\n \"import { PrismaClient } from '@prisma/client'\"\n ],\n commonFiles: {\n 'types.ts': 'Shared types for this epic',\n 'utils.ts': 'Epic-specific utilities'\n }\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEPICS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSpecification: {title}\n\nCREATED EPICS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE1 \u2502 {title} \u2502 {objective}\nE2 \u2502 {title} \u2502 {objective}\nE3 \u2502 {title} \u2502 {objective}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-tickets <epic-id> for each epic\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| specificationId | \u2705 | Parent specification |\n| title | \u2705 | Epic title |\n| description | \u2705 | Epic description |\n| objective | \u2705 | Clear goal statement |\n| content | | Full markdown content |\n| scope | | In/out of scope |\n| goals | | Epic-specific goals |\n| guardrails | | What NOT to do |\n| architecture | | Epic-level design |\n| sharedPatterns | | Override spec patterns |\n| additionalImports | | Extra imports for tickets |\n\n## Notes\n- specificationId, title, description, and objective are required\n- sharedPatterns override specification-level patterns\n- additionalImports are added to spec-level commonImports\n- Use /sf-create-tickets for each epic after creation\n";
7
7
  //# sourceMappingURL=sf-create-epics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,m9EA+DnC,CAAC"}
1
+ {"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,upJA0HnC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export const SF_CREATE_EPICS_CONTENT = `# Create Epics (SpecForge)
7
7
 
8
- Create epics for a specification with patterns extracted from plan phases.
8
+ Create epics for a specification with objectives extracted from plan phases.
9
9
 
10
10
  ## Arguments
11
11
  - \`$ARGUMENTS\` - Required: Specification ID
@@ -16,7 +16,11 @@ Create epics for a specification with patterns extracted from plan phases.
16
16
 
17
17
  **MCP Calls:**
18
18
  \`\`\`typescript
19
- get_specification($ARGUMENTS)
19
+ specification({
20
+ operation: 'get',
21
+ specificationId: $ARGUMENTS,
22
+ include: ['epics', 'patterns'] // Get existing epics and inherited patterns
23
+ })
20
24
  \`\`\`
21
25
 
22
26
  ### 2. Read Original Plan
@@ -24,8 +28,8 @@ get_specification($ARGUMENTS)
24
28
  **Logic:**
25
29
  - Locate original plan file from specification metadata
26
30
  - Parse plan phases/sections
27
- - Extract epic-level descriptions
28
- - Identify patterns per epic
31
+ - Extract epic-level titles, descriptions, and objectives
32
+ - Identify epic-specific technical details
29
33
 
30
34
  ### 3. Create Epics
31
35
 
@@ -33,12 +37,50 @@ get_specification($ARGUMENTS)
33
37
  \`\`\`typescript
34
38
  // For each phase/section in plan
35
39
  for (const phase of phases) {
36
- await create_epic({
40
+ await epic({
41
+ operation: 'create',
42
+
43
+ // === REQUIRED ===
37
44
  specificationId: $ARGUMENTS,
38
45
  title: phase.title,
39
46
  description: phase.description,
40
- patterns: phase.patterns,
41
- order: phase.order
47
+ objective: phase.objective, // Clear goal statement
48
+
49
+ // === CORE (recommended) ===
50
+ content: phase.fullContent, // Full markdown content
51
+ scope: phase.scope, // What's in/out of scope
52
+ priority: 'high', // high | medium | low
53
+ tags: ['phase1', 'backend'],
54
+ estimatedHours: 40,
55
+
56
+ // === PLANNING ===
57
+ goals: ['Implement X', 'Enable Y'],
58
+ acceptanceCriteria: ['Feature X works', 'Tests pass'],
59
+ guardrails: ['Do NOT break existing API'],
60
+ constraints: ['Must be backward compatible'],
61
+ assumptions: ['Database schema is stable'],
62
+ risks: ['May require migration'],
63
+
64
+ // === TECHNICAL ===
65
+ architecture: 'Service layer with repository pattern',
66
+ fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',
67
+ techStack: ['typescript', 'prisma'],
68
+ dependencies: ['zod', '@prisma/client'],
69
+ apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },
70
+
71
+ // === PATTERN OVERRIDES (override spec-level patterns) ===
72
+ sharedPatterns: {
73
+ errorHandling: 'Custom error handling for this epic',
74
+ validation: 'Use zod schemas'
75
+ },
76
+ additionalImports: [
77
+ "import { z } from 'zod'",
78
+ "import { PrismaClient } from '@prisma/client'"
79
+ ],
80
+ commonFiles: {
81
+ 'types.ts': 'Shared types for this epic',
82
+ 'utils.ts': 'Epic-specific utilities'
83
+ }
42
84
  })
43
85
  }
44
86
  \`\`\`
@@ -54,17 +96,34 @@ Specification: {title}
54
96
 
55
97
  CREATED EPICS
56
98
  ─────────────────────────────────────────────────────────────────
57
- E1 │ {title} │ {description}
58
- E2 │ {title} │ {description}
59
- E3 │ {title} │ {description}
99
+ E1 │ {title} │ {objective}
100
+ E2 │ {title} │ {objective}
101
+ E3 │ {title} │ {objective}
60
102
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
103
 
62
104
  Next: Run /sf-create-tickets <epic-id> for each epic
63
105
  \`\`\`
64
106
 
107
+ ## Field Reference
108
+
109
+ | Field | Required | Description |
110
+ |-------|----------|-------------|
111
+ | specificationId | ✅ | Parent specification |
112
+ | title | ✅ | Epic title |
113
+ | description | ✅ | Epic description |
114
+ | objective | ✅ | Clear goal statement |
115
+ | content | | Full markdown content |
116
+ | scope | | In/out of scope |
117
+ | goals | | Epic-specific goals |
118
+ | guardrails | | What NOT to do |
119
+ | architecture | | Epic-level design |
120
+ | sharedPatterns | | Override spec patterns |
121
+ | additionalImports | | Extra imports for tickets |
122
+
65
123
  ## Notes
66
- - Creates epic structure from plan phases
67
- - Preserves patterns for ticket creation
68
- - Use /sf-create-tickets for each epic
124
+ - specificationId, title, description, and objective are required
125
+ - sharedPatterns override specification-level patterns
126
+ - additionalImports are added to spec-level commonImports
127
+ - Use /sf-create-tickets for each epic after creation
69
128
  `;
70
129
  //# sourceMappingURL=sf-create-epics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DtC,CAAC"}
1
+ {"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HtC,CAAC"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Template for creating a SpecForge specification with patterns from a plan.
5
5
  */
6
- export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with patterns extracted from a plan document.\n\n## Arguments\n- `$ARGUMENTS` - Required: Path to plan markdown file\n\n## Task\n\n### 1. Read and Analyze Plan\n\n**Logic:**\n- Read file at $ARGUMENTS\n- Extract specification metadata\n- Identify patterns and guardrails\n- Parse high-level structure\n- Extract success criteria\n\n### 2. Create Specification\n\n**MCP Calls:**\n```typescript\ncreate_specification({\n title: extractedTitle,\n description: extractedDescription,\n patterns: extractedPatterns,\n guardrails: extractedGuardrails,\n successCriteria: extractedCriteria\n})\n```\n\n### 3. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSPECIFICATION CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTitle: {title}\nID: {specificationId}\n\nEXTRACTED PATTERNS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2022 {pattern1}\n\u2022 {pattern2}\n\u2022 {pattern3}\n\nGUARDRAILS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2022 {guardrail1}\n\u2022 {guardrail2}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-epics {specificationId} to create epics\n```\n\n## Notes\n- Creates specification structure only\n- Extracts patterns for epic/ticket creation\n- Use /sf-create-epics to add epics\n";
6
+ export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with metadata extracted from a plan document.\n\n## Arguments\n- `$ARGUMENTS` - Required: Path to plan markdown file\n\n## Task\n\n### 1. Read and Analyze Plan\n\n**Logic:**\n- Read file at $ARGUMENTS\n- Extract specification title and description\n- Identify priority level (high/medium/low)\n- Parse tags from plan categories/themes\n- Extract goals, requirements, and constraints\n\n### 2. Create Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'create',\n\n // === REQUIRED ===\n projectId: currentProjectId,\n title: extractedTitle,\n\n // === CORE (recommended) ===\n description: shortSummary, // 2-3 sentence summary\n content: fullMarkdownContent, // Full markdown content\n background: problemContext, // Why this exists\n scope: scopeDefinition, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['feature', 'api'],\n estimatedHours: 40,\n targetAudience: 'developers',\n\n // === GOALS & REQUIREMENTS ===\n goals: ['Enable X', 'Improve Y'],\n requirements: ['Must do A', 'Must support B'],\n nonFunctionalRequirements: ['< 100ms latency', '99.9% uptime'],\n acceptanceCriteria: ['Users can X', 'System handles Y'],\n successMetrics: ['50% reduction in Z'],\n\n // === GUARDRAILS & RISKS ===\n guardrails: ['Do NOT modify X', 'Avoid pattern Y'],\n constraints: ['Must use existing auth', 'Budget limit'],\n assumptions: ['Users have Node 18+'],\n risks: ['Third-party API may change'],\n\n // === TECHNICAL ===\n architecture: 'Microservices with event-driven communication',\n fileStructure: 'src/\\n components/\\n services/\\n utils/',\n techStack: ['typescript', 'react', 'node'],\n dependencies: ['@aws-sdk/client-s3', 'zod'],\n apiContracts: { endpoints: [{ path: '/api/v1/users', method: 'GET' }] },\n\n // === PATTERN INHERITANCE (for epics/tickets) ===\n codeStandards: {\n errorHandling: 'Use Result<T, E> pattern',\n naming: 'camelCase for functions, PascalCase for types'\n },\n commonImports: [\n \"import { logger } from '@/lib/logger'\",\n \"import { db } from '@/lib/db'\"\n ],\n returnTypes: {\n success: '{ success: true, data: T }',\n error: '{ success: false, error: string }'\n },\n\n // === VALIDATION (for CI/CD) ===\n validationCommands: {\n test: 'npm test',\n lint: 'npm run lint',\n build: 'npm run build',\n typeCheck: 'npm run typecheck'\n },\n workingDirectory: './src',\n outputDirectory: './dist'\n})\n```\n\n### 3. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSPECIFICATION CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTitle: {title}\nID: {specificationId}\nPriority: {priority}\n\nDESCRIPTION\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{description}\n\nTAGS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{tags}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-epics {specificationId} to create epics\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| projectId | \u2705 | Project to create spec in |\n| title | \u2705 | Specification title |\n| description | | Short summary |\n| content | | Full markdown content |\n| background | | Problem context |\n| scope | | In/out of scope |\n| goals | | Business objectives |\n| requirements | | Functional requirements |\n| guardrails | | What NOT to do |\n| architecture | | System design |\n| techStack | | Technologies used |\n| codeStandards | | Inherited by epics/tickets |\n\n## Notes\n- Only projectId and title are required\n- codeStandards, commonImports, returnTypes are inherited by child epics/tickets\n- Use /sf-create-epics to add epics after creation\n";
7
7
  //# sourceMappingURL=sf-create-spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,gxFA4DlC,CAAC"}
1
+ {"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,wsKAiIlC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export const SF_CREATE_SPEC_CONTENT = `# Create Specification (SpecForge)
7
7
 
8
- Create a SpecForge specification structure with patterns extracted from a plan document.
8
+ Create a SpecForge specification structure with metadata extracted from a plan document.
9
9
 
10
10
  ## Arguments
11
11
  - \`$ARGUMENTS\` - Required: Path to plan markdown file
@@ -16,21 +16,75 @@ Create a SpecForge specification structure with patterns extracted from a plan d
16
16
 
17
17
  **Logic:**
18
18
  - Read file at $ARGUMENTS
19
- - Extract specification metadata
20
- - Identify patterns and guardrails
21
- - Parse high-level structure
22
- - Extract success criteria
19
+ - Extract specification title and description
20
+ - Identify priority level (high/medium/low)
21
+ - Parse tags from plan categories/themes
22
+ - Extract goals, requirements, and constraints
23
23
 
24
24
  ### 2. Create Specification
25
25
 
26
26
  **MCP Calls:**
27
27
  \`\`\`typescript
28
- create_specification({
28
+ specification({
29
+ operation: 'create',
30
+
31
+ // === REQUIRED ===
32
+ projectId: currentProjectId,
29
33
  title: extractedTitle,
30
- description: extractedDescription,
31
- patterns: extractedPatterns,
32
- guardrails: extractedGuardrails,
33
- successCriteria: extractedCriteria
34
+
35
+ // === CORE (recommended) ===
36
+ description: shortSummary, // 2-3 sentence summary
37
+ content: fullMarkdownContent, // Full markdown content
38
+ background: problemContext, // Why this exists
39
+ scope: scopeDefinition, // What's in/out of scope
40
+ priority: 'high', // high | medium | low
41
+ tags: ['feature', 'api'],
42
+ estimatedHours: 40,
43
+ targetAudience: 'developers',
44
+
45
+ // === GOALS & REQUIREMENTS ===
46
+ goals: ['Enable X', 'Improve Y'],
47
+ requirements: ['Must do A', 'Must support B'],
48
+ nonFunctionalRequirements: ['< 100ms latency', '99.9% uptime'],
49
+ acceptanceCriteria: ['Users can X', 'System handles Y'],
50
+ successMetrics: ['50% reduction in Z'],
51
+
52
+ // === GUARDRAILS & RISKS ===
53
+ guardrails: ['Do NOT modify X', 'Avoid pattern Y'],
54
+ constraints: ['Must use existing auth', 'Budget limit'],
55
+ assumptions: ['Users have Node 18+'],
56
+ risks: ['Third-party API may change'],
57
+
58
+ // === TECHNICAL ===
59
+ architecture: 'Microservices with event-driven communication',
60
+ fileStructure: 'src/\\n components/\\n services/\\n utils/',
61
+ techStack: ['typescript', 'react', 'node'],
62
+ dependencies: ['@aws-sdk/client-s3', 'zod'],
63
+ apiContracts: { endpoints: [{ path: '/api/v1/users', method: 'GET' }] },
64
+
65
+ // === PATTERN INHERITANCE (for epics/tickets) ===
66
+ codeStandards: {
67
+ errorHandling: 'Use Result<T, E> pattern',
68
+ naming: 'camelCase for functions, PascalCase for types'
69
+ },
70
+ commonImports: [
71
+ "import { logger } from '@/lib/logger'",
72
+ "import { db } from '@/lib/db'"
73
+ ],
74
+ returnTypes: {
75
+ success: '{ success: true, data: T }',
76
+ error: '{ success: false, error: string }'
77
+ },
78
+
79
+ // === VALIDATION (for CI/CD) ===
80
+ validationCommands: {
81
+ test: 'npm test',
82
+ lint: 'npm run lint',
83
+ build: 'npm run build',
84
+ typeCheck: 'npm run typecheck'
85
+ },
86
+ workingDirectory: './src',
87
+ outputDirectory: './dist'
34
88
  })
35
89
  \`\`\`
36
90
 
@@ -41,27 +95,42 @@ create_specification({
41
95
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
96
  SPECIFICATION CREATED
43
97
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
- Title: {title}
45
- ID: {specificationId}
98
+ Title: {title}
99
+ ID: {specificationId}
100
+ Priority: {priority}
46
101
 
47
- EXTRACTED PATTERNS
102
+ DESCRIPTION
48
103
  ─────────────────────────────────────────────────────────────────
49
- {pattern1}
50
- • {pattern2}
51
- • {pattern3}
104
+ {description}
52
105
 
53
- GUARDRAILS
106
+ TAGS
54
107
  ─────────────────────────────────────────────────────────────────
55
- {guardrail1}
56
- • {guardrail2}
108
+ {tags}
57
109
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
58
110
 
59
111
  Next: Run /sf-create-epics {specificationId} to create epics
60
112
  \`\`\`
61
113
 
114
+ ## Field Reference
115
+
116
+ | Field | Required | Description |
117
+ |-------|----------|-------------|
118
+ | projectId | ✅ | Project to create spec in |
119
+ | title | ✅ | Specification title |
120
+ | description | | Short summary |
121
+ | content | | Full markdown content |
122
+ | background | | Problem context |
123
+ | scope | | In/out of scope |
124
+ | goals | | Business objectives |
125
+ | requirements | | Functional requirements |
126
+ | guardrails | | What NOT to do |
127
+ | architecture | | System design |
128
+ | techStack | | Technologies used |
129
+ | codeStandards | | Inherited by epics/tickets |
130
+
62
131
  ## Notes
63
- - Creates specification structure only
64
- - Extracts patterns for epic/ticket creation
65
- - Use /sf-create-epics to add epics
132
+ - Only projectId and title are required
133
+ - codeStandards, commonImports, returnTypes are inherited by child epics/tickets
134
+ - Use /sf-create-epics to add epics after creation
66
135
  `;
67
136
  //# sourceMappingURL=sf-create-spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-spec.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DrC,CAAC"}
1
+ {"version":3,"file":"sf-create-spec.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIrC,CAAC"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Template for creating detailed tickets individually with full implementation context.
5
5
  */
6
- export declare const SF_CREATE_TICKETS_CONTENT = "# Create Tickets (SpecForge)\n\nCreate detailed tickets for an epic with full implementation context.\n\n## Arguments\n- `$ARGUMENTS` - Required: Epic ID\n\n## Task\n\n### 1. Get Epic Context\n\n**MCP Calls:**\n```typescript\nget_epic($ARGUMENTS)\nget_specification(epic.specificationId)\n```\n\n### 2. Extract Ticket Definitions\n\n**Logic:**\n- Read epic description and patterns\n- Parse task breakdown\n- Extract dependencies\n- Generate acceptance criteria\n- Add implementation guidance\n\n### 3. Create Tickets\n\n**MCP Calls:**\n```typescript\n// For each task in epic\nfor (const task of tasks) {\n await create_ticket({\n epicId: $ARGUMENTS,\n title: task.title,\n description: task.description,\n acceptanceCriteria: task.criteria,\n dependencies: task.dependencies,\n implementationGuidance: task.guidance,\n estimatedComplexity: task.complexity\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTICKETS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEpic: E{n} - {epicTitle}\n\nCREATED TICKETS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE{n}-T1 \u2502 {title} \u2502 {complexity}\nE{n}-T2 \u2502 {title} \u2502 {complexity} \u2502 Depends: E{n}-T1\nE{n}-T3 \u2502 {title} \u2502 {complexity}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nTotal: {ticketCount} tickets created\n\nNext: Run /sf-status to see overall progress\n```\n\n## Notes\n- Creates tickets with full implementation details\n- Establishes dependency relationships\n- Use /sf-next to start implementation\n";
6
+ export declare const SF_CREATE_TICKETS_CONTENT = "# Create Tickets (SpecForge)\n\nCreate detailed tickets for an epic with full implementation context.\n\n## Arguments\n- `$ARGUMENTS` - Required: Epic ID\n\n## Task\n\n### 1. Get Epic Context\n\n**MCP Calls:**\n```typescript\nepic({\n operation: 'get',\n epicId: $ARGUMENTS,\n include: ['tickets', 'specification'] // Get existing tickets and parent spec\n})\n```\n\n### 2. Extract Ticket Definitions\n\n**Logic:**\n- Read epic description and objective\n- Parse task breakdown from epic content\n- Determine complexity and dependencies\n- Extract acceptance criteria for each ticket\n\n### 3. Create Tickets\n\n**MCP Calls:**\n```typescript\n// For each task in epic\nfor (const task of tasks) {\n await ticket({\n operation: 'create',\n\n // === REQUIRED ===\n epicId: $ARGUMENTS,\n title: task.title,\n\n // === CORE (recommended) ===\n description: task.description,\n priority: 'high', // high | medium | low\n complexity: 'medium', // small | medium | large | xlarge\n estimatedHours: 4,\n tags: ['feature', 'api'],\n notes: 'Watch out for edge case X', // Warnings, considerations\n\n // === ACCEPTANCE CRITERIA ===\n acceptanceCriteria: [\n 'Function returns correct result for valid input',\n 'Function throws error for invalid input',\n 'Unit tests cover all branches'\n ],\n\n // === IMPLEMENTATION GUIDANCE ===\n implementation: {\n filesToCreate: ['src/services/user.service.ts'],\n filesToModify: ['src/index.ts'],\n steps: [\n 'Create UserService class',\n 'Implement createUser method',\n 'Add validation with zod',\n 'Write unit tests'\n ],\n testing: 'Use vitest with mocked database'\n },\n technicalDetails: {\n approach: 'Repository pattern with dependency injection',\n stack: ['typescript', 'prisma', 'zod'],\n endpoints: ['/api/users POST'],\n databaseChanges: ['Add users table']\n },\n\n // === CODE REFERENCES ===\n codeReferences: [{\n name: 'createUser',\n language: 'typescript',\n code: `async function createUser(data: CreateUserInput): Promise<User> {\n const validated = createUserSchema.parse(data);\n return await db.user.create({ data: validated });\n}`\n }],\n typeReferences: [{\n name: 'CreateUserInput',\n definition: `interface CreateUserInput {\n email: string;\n name: string;\n role?: 'admin' | 'user';\n}`\n }],\n\n // === DEPENDENCIES ===\n dependsOn: ['ticket-id-1', 'ticket-id-2'] // Must complete these first\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTICKETS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEpic: E{n} - {epicTitle}\n\nCREATED TICKETS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE{n}-T1 \u2502 {title} \u2502 {complexity} \u2502 ready\nE{n}-T2 \u2502 {title} \u2502 {complexity} \u2502 pending (depends on T1)\nE{n}-T3 \u2502 {title} \u2502 {complexity} \u2502 ready\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nTotal: {ticketCount} tickets created\n\nNext: Run /sf-status to see overall progress\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| epicId | \u2705 | Parent epic |\n| title | \u2705 | Ticket title |\n| description | | What to implement |\n| complexity | | small \\| medium \\| large \\| xlarge |\n| acceptanceCriteria | | Success criteria (array of strings) |\n| implementation | | Steps, files to create/modify |\n| technicalDetails | | Approach, stack, endpoints |\n| codeReferences | | Code snippets to guide implementation |\n| typeReferences | | Type definitions to implement |\n| dependsOn | | Ticket IDs that must complete first |\n| notes | | Warnings, edge cases, considerations |\n\n## Notes\n- Only epicId and title are required\n- Tickets with dependsOn start as 'pending', others as 'ready'\n- codeReferences and typeReferences provide implementation guidance\n- Use /sf-next to start working on ready tickets\n";
7
7
  //# sourceMappingURL=sf-create-tickets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-tickets.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,yBAAyB,upFAqErC,CAAC"}
1
+ {"version":3,"file":"sf-create-tickets.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,yBAAyB,4kKA6IrC,CAAC"}
@@ -16,18 +16,20 @@ Create detailed tickets for an epic with full implementation context.
16
16
 
17
17
  **MCP Calls:**
18
18
  \`\`\`typescript
19
- get_epic($ARGUMENTS)
20
- get_specification(epic.specificationId)
19
+ epic({
20
+ operation: 'get',
21
+ epicId: $ARGUMENTS,
22
+ include: ['tickets', 'specification'] // Get existing tickets and parent spec
23
+ })
21
24
  \`\`\`
22
25
 
23
26
  ### 2. Extract Ticket Definitions
24
27
 
25
28
  **Logic:**
26
- - Read epic description and patterns
27
- - Parse task breakdown
28
- - Extract dependencies
29
- - Generate acceptance criteria
30
- - Add implementation guidance
29
+ - Read epic description and objective
30
+ - Parse task breakdown from epic content
31
+ - Determine complexity and dependencies
32
+ - Extract acceptance criteria for each ticket
31
33
 
32
34
  ### 3. Create Tickets
33
35
 
@@ -35,14 +37,67 @@ get_specification(epic.specificationId)
35
37
  \`\`\`typescript
36
38
  // For each task in epic
37
39
  for (const task of tasks) {
38
- await create_ticket({
40
+ await ticket({
41
+ operation: 'create',
42
+
43
+ // === REQUIRED ===
39
44
  epicId: $ARGUMENTS,
40
45
  title: task.title,
46
+
47
+ // === CORE (recommended) ===
41
48
  description: task.description,
42
- acceptanceCriteria: task.criteria,
43
- dependencies: task.dependencies,
44
- implementationGuidance: task.guidance,
45
- estimatedComplexity: task.complexity
49
+ priority: 'high', // high | medium | low
50
+ complexity: 'medium', // small | medium | large | xlarge
51
+ estimatedHours: 4,
52
+ tags: ['feature', 'api'],
53
+ notes: 'Watch out for edge case X', // Warnings, considerations
54
+
55
+ // === ACCEPTANCE CRITERIA ===
56
+ acceptanceCriteria: [
57
+ 'Function returns correct result for valid input',
58
+ 'Function throws error for invalid input',
59
+ 'Unit tests cover all branches'
60
+ ],
61
+
62
+ // === IMPLEMENTATION GUIDANCE ===
63
+ implementation: {
64
+ filesToCreate: ['src/services/user.service.ts'],
65
+ filesToModify: ['src/index.ts'],
66
+ steps: [
67
+ 'Create UserService class',
68
+ 'Implement createUser method',
69
+ 'Add validation with zod',
70
+ 'Write unit tests'
71
+ ],
72
+ testing: 'Use vitest with mocked database'
73
+ },
74
+ technicalDetails: {
75
+ approach: 'Repository pattern with dependency injection',
76
+ stack: ['typescript', 'prisma', 'zod'],
77
+ endpoints: ['/api/users POST'],
78
+ databaseChanges: ['Add users table']
79
+ },
80
+
81
+ // === CODE REFERENCES ===
82
+ codeReferences: [{
83
+ name: 'createUser',
84
+ language: 'typescript',
85
+ code: \`async function createUser(data: CreateUserInput): Promise<User> {
86
+ const validated = createUserSchema.parse(data);
87
+ return await db.user.create({ data: validated });
88
+ }\`
89
+ }],
90
+ typeReferences: [{
91
+ name: 'CreateUserInput',
92
+ definition: \`interface CreateUserInput {
93
+ email: string;
94
+ name: string;
95
+ role?: 'admin' | 'user';
96
+ }\`
97
+ }],
98
+
99
+ // === DEPENDENCIES ===
100
+ dependsOn: ['ticket-id-1', 'ticket-id-2'] // Must complete these first
46
101
  })
47
102
  }
48
103
  \`\`\`
@@ -58,9 +113,9 @@ Epic: E{n} - {epicTitle}
58
113
 
59
114
  CREATED TICKETS
60
115
  ─────────────────────────────────────────────────────────────────
61
- E{n}-T1 │ {title} │ {complexity}
62
- E{n}-T2 │ {title} │ {complexity} │ Depends: E{n}-T1
63
- E{n}-T3 │ {title} │ {complexity}
116
+ E{n}-T1 │ {title} │ {complexity} │ ready
117
+ E{n}-T2 │ {title} │ {complexity} │ pending (depends on T1)
118
+ E{n}-T3 │ {title} │ {complexity} │ ready
64
119
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65
120
 
66
121
  Total: {ticketCount} tickets created
@@ -68,9 +123,26 @@ Total: {ticketCount} tickets created
68
123
  Next: Run /sf-status to see overall progress
69
124
  \`\`\`
70
125
 
126
+ ## Field Reference
127
+
128
+ | Field | Required | Description |
129
+ |-------|----------|-------------|
130
+ | epicId | ✅ | Parent epic |
131
+ | title | ✅ | Ticket title |
132
+ | description | | What to implement |
133
+ | complexity | | small \\| medium \\| large \\| xlarge |
134
+ | acceptanceCriteria | | Success criteria (array of strings) |
135
+ | implementation | | Steps, files to create/modify |
136
+ | technicalDetails | | Approach, stack, endpoints |
137
+ | codeReferences | | Code snippets to guide implementation |
138
+ | typeReferences | | Type definitions to implement |
139
+ | dependsOn | | Ticket IDs that must complete first |
140
+ | notes | | Warnings, edge cases, considerations |
141
+
71
142
  ## Notes
72
- - Creates tickets with full implementation details
73
- - Establishes dependency relationships
74
- - Use /sf-next to start implementation
143
+ - Only epicId and title are required
144
+ - Tickets with dependsOn start as 'pending', others as 'ready'
145
+ - codeReferences and typeReferences provide implementation guidance
146
+ - Use /sf-next to start working on ready tickets
75
147
  `;
76
148
  //# sourceMappingURL=sf-create-tickets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-tickets.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqExC,CAAC"}
1
+ {"version":3,"file":"sf-create-tickets.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,IAsFtB,CAAC;AAUF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA4D3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,oEAGrD"}
1
+ {"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,IAmItB,CAAC;AAUF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAmG3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,oEAGrD"}
@@ -20,14 +20,33 @@ export const epicTool = {
20
20
  epicId: { type: 'string', description: 'Epic ID' },
21
21
  // For create/list/lookup
22
22
  specificationId: { type: 'string', description: 'Specification ID' },
23
- // For create/update
24
- title: { type: 'string' },
25
- description: { type: 'string' },
26
- objective: { type: 'string' },
27
- status: { type: 'string', enum: ['pending', 'active', 'done', 'archived'] },
28
- priority: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
29
- tags: { type: 'array', items: { type: 'string' } },
30
- estimatedHours: { type: 'number' },
23
+ // For create/update - core fields
24
+ title: { type: 'string', description: 'Epic title' },
25
+ description: { type: 'string', description: 'Epic description (required for create)' },
26
+ objective: { type: 'string', description: 'Epic objective/goal (required for create)' },
27
+ content: { type: 'string', description: 'Full epic content (markdown)' },
28
+ scope: { type: 'string', description: "What's in/out of scope for this epic" },
29
+ status: { type: 'string', enum: ['todo', 'in_progress', 'completed'] },
30
+ priority: { type: 'string', enum: ['high', 'medium', 'low'] },
31
+ tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
32
+ estimatedHours: { type: 'number', description: 'Total estimated hours for epic' },
33
+ // Planning fields
34
+ goals: { type: 'array', items: { type: 'string' }, description: 'Epic-specific goals' },
35
+ acceptanceCriteria: { type: 'array', items: { type: 'string' }, description: 'Epic-level success criteria' },
36
+ guardrails: { type: 'array', items: { type: 'string' }, description: 'What NOT to do' },
37
+ risks: { type: 'array', items: { type: 'string' }, description: 'Risk factors' },
38
+ constraints: { type: 'array', items: { type: 'string' }, description: 'Technical/business constraints' },
39
+ assumptions: { type: 'array', items: { type: 'string' }, description: 'Key assumptions made' },
40
+ // Technical details
41
+ architecture: { type: 'string', description: 'Architectural approach for this epic' },
42
+ fileStructure: { type: 'string', description: 'File/folder organization' },
43
+ techStack: { type: 'array', items: { type: 'string' }, description: 'Technologies used' },
44
+ dependencies: { type: 'array', items: { type: 'string' }, description: 'Required packages/libraries' },
45
+ apiContracts: { type: 'object', description: 'API specifications (if epic defines APIs)' },
46
+ // Pattern Inheritance (F7-003)
47
+ sharedPatterns: { type: 'object', description: 'EpicSharedPatterns - overrides spec patterns' },
48
+ additionalImports: { type: 'array', items: { type: 'string' }, description: 'Additional imports for this epic' },
49
+ commonFiles: { type: 'object', description: 'EpicCommonFiles - shared files across tickets' },
31
50
  // For create - inline tickets
32
51
  tickets: {
33
52
  type: 'array',
@@ -44,7 +63,7 @@ export const epicTool = {
44
63
  },
45
64
  priority: {
46
65
  type: 'string',
47
- enum: ['critical', 'high', 'medium', 'low'],
66
+ enum: ['high', 'medium', 'low'],
48
67
  description: 'Ticket priority',
49
68
  },
50
69
  tags: {
@@ -58,8 +77,34 @@ export const epicTool = {
58
77
  },
59
78
  acceptanceCriteria: {
60
79
  type: 'array',
61
- items: { type: 'object' },
62
- description: 'Acceptance criteria objects',
80
+ items: { type: 'string' },
81
+ description: 'Acceptance criteria strings',
82
+ },
83
+ notes: { type: 'string', description: 'Additional context, warnings, considerations' },
84
+ implementation: { type: 'object', description: 'Detailed implementation steps' },
85
+ technicalDetails: { type: 'object', description: 'Technical details object' },
86
+ codeReferences: {
87
+ type: 'array',
88
+ items: {
89
+ type: 'object',
90
+ properties: {
91
+ name: { type: 'string' },
92
+ code: { type: 'string' },
93
+ language: { type: 'string' },
94
+ },
95
+ },
96
+ description: 'Code snippets as references',
97
+ },
98
+ typeReferences: {
99
+ type: 'array',
100
+ items: {
101
+ type: 'object',
102
+ properties: {
103
+ name: { type: 'string' },
104
+ definition: { type: 'string' },
105
+ },
106
+ },
107
+ description: 'Type definitions as references',
63
108
  },
64
109
  dependsOn: {
65
110
  type: 'array',
@@ -103,9 +148,29 @@ export function createEpicOperations(apiClient) {
103
148
  title: args.title,
104
149
  description: args.description,
105
150
  objective: args.objective,
151
+ content: args.content,
152
+ scope: args.scope,
106
153
  priority: args.priority,
107
154
  tags: args.tags,
108
155
  estimatedHours: args.estimatedHours,
156
+ // Planning fields
157
+ goals: args.goals,
158
+ acceptanceCriteria: args.acceptanceCriteria,
159
+ guardrails: args.guardrails,
160
+ risks: args.risks,
161
+ constraints: args.constraints,
162
+ assumptions: args.assumptions,
163
+ // Technical details
164
+ architecture: args.architecture,
165
+ fileStructure: args.fileStructure,
166
+ techStack: args.techStack,
167
+ dependencies: args.dependencies,
168
+ apiContracts: args.apiContracts,
169
+ // Pattern Inheritance
170
+ sharedPatterns: args.sharedPatterns,
171
+ additionalImports: args.additionalImports,
172
+ commonFiles: args.commonFiles,
173
+ // Inline tickets
109
174
  tickets: args.tickets,
110
175
  });
111
176
  },
@@ -123,10 +188,29 @@ export function createEpicOperations(apiClient) {
123
188
  title: args.title,
124
189
  description: args.description,
125
190
  objective: args.objective,
191
+ content: args.content,
192
+ scope: args.scope,
126
193
  status: args.status,
127
194
  priority: args.priority,
128
195
  tags: args.tags,
129
196
  estimatedHours: args.estimatedHours,
197
+ // Planning fields
198
+ goals: args.goals,
199
+ acceptanceCriteria: args.acceptanceCriteria,
200
+ guardrails: args.guardrails,
201
+ risks: args.risks,
202
+ constraints: args.constraints,
203
+ assumptions: args.assumptions,
204
+ // Technical details
205
+ architecture: args.architecture,
206
+ fileStructure: args.fileStructure,
207
+ techStack: args.techStack,
208
+ dependencies: args.dependencies,
209
+ apiContracts: args.apiContracts,
210
+ // Pattern Inheritance
211
+ sharedPatterns: args.sharedPatterns,
212
+ additionalImports: args.additionalImports,
213
+ commonFiles: args.commonFiles,
130
214
  });
131
215
  },
132
216
  list: async (args, _userId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAG7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE;;;;;uCAKwB;IACrC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnD,WAAW,EAAE,0BAA0B;aACxC;YACD,iBAAiB;YACjB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;YAClD,yBAAyB;YACzB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACpE,oBAAoB;YACpB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE;YAC3E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YACzE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAClD,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClC,8BAA8B;YAC9B,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,wCAAwC;gBACrD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;wBACjE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;wBAClE,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;4BAC5C,WAAW,EAAE,mBAAmB;yBACjC;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;4BAC3C,WAAW,EAAE,iBAAiB;yBAC/B;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,qBAAqB;yBACnC;wBACD,cAAc,EAAE;4BACd,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,6BAA6B;yBAC3C;wBACD,kBAAkB,EAAE;4BAClB,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,6BAA6B;yBAC3C;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,4DAA4D;yBAC1E;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD,aAAa;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;YACjE,WAAW;YACX,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B;aACF;YACD,mBAAmB;YACnB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAClD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;YACjF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SACtD;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAA0B,EAAE,GAAG,MAAgB;IACvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC5D,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAC/E,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,GAAG,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YACzD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjC,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE;gBACtC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC5D,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjC,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC1D,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAyC,CAAC;YAC9D,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE;gBACxC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;aACtC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC5D,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,IA2C/B,CAAC;AAUF,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAoDpG;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,oEAG9D"}
1
+ {"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,IAuE/B,CAAC;AAUF,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAiHpG;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,oEAG9D"}
@@ -20,15 +20,43 @@ export const specificationTool = {
20
20
  specificationId: { type: 'string', description: 'Specification ID' },
21
21
  // For create/list/import
22
22
  projectId: { type: 'string', description: 'Project ID' },
23
- // For create/update
24
- title: { type: 'string' },
25
- description: { type: 'string' },
26
- status: { type: 'string', enum: ['draft', 'active', 'completed', 'archived'] },
27
- priority: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
28
- tags: { type: 'array', items: { type: 'string' } },
29
- // For import
30
- content: { type: 'string', description: 'YAML/JSON content for import' },
31
- specificationTypeId: { type: 'string' },
23
+ specificationTypeId: { type: 'string', description: 'Specification type ID' },
24
+ // For create/update - core fields
25
+ title: { type: 'string', description: 'Specification title' },
26
+ description: { type: 'string', description: 'Short summary (2-3 sentences)' },
27
+ content: { type: 'string', description: 'Full markdown content' },
28
+ background: { type: 'string', description: 'Problem context and why this exists' },
29
+ scope: { type: 'string', description: "What's in/out of scope" },
30
+ status: { type: 'string', enum: ['draft', 'planning', 'ready', 'in_progress', 'completed'] },
31
+ priority: { type: 'string', enum: ['high', 'medium', 'low'] },
32
+ tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
33
+ estimatedHours: { type: 'number', description: 'Total estimated effort' },
34
+ targetAudience: { type: 'string', description: 'Who this is for' },
35
+ // Goals & Requirements
36
+ goals: { type: 'array', items: { type: 'string' }, description: 'Business/user/technical objectives' },
37
+ requirements: { type: 'array', items: { type: 'string' }, description: 'Functional requirements' },
38
+ nonFunctionalRequirements: { type: 'array', items: { type: 'string' }, description: 'Performance, security, scalability' },
39
+ acceptanceCriteria: { type: 'array', items: { type: 'string' }, description: 'Success criteria for the spec' },
40
+ successMetrics: { type: 'array', items: { type: 'string' }, description: 'KPIs to measure success' },
41
+ // Guardrails & Constraints
42
+ guardrails: { type: 'array', items: { type: 'string' }, description: 'What NOT to do, anti-patterns' },
43
+ constraints: { type: 'array', items: { type: 'string' }, description: 'Technical/business constraints' },
44
+ assumptions: { type: 'array', items: { type: 'string' }, description: 'Key assumptions made' },
45
+ risks: { type: 'array', items: { type: 'string' }, description: 'Risk factors and mitigations' },
46
+ // Technical Details
47
+ architecture: { type: 'string', description: 'High-level architecture description' },
48
+ fileStructure: { type: 'string', description: 'Expected file/folder structure' },
49
+ techStack: { type: 'array', items: { type: 'string' }, description: 'Technologies to use' },
50
+ dependencies: { type: 'array', items: { type: 'string' }, description: 'External/internal dependencies' },
51
+ apiContracts: { type: 'object', description: 'API specifications (JSON)' },
52
+ // Pattern Inheritance (MI-05)
53
+ codeStandards: { type: 'object', description: 'Code standards: { errorHandling, naming, language, etc. }' },
54
+ commonImports: { type: 'array', items: { type: 'string' }, description: 'Common import statements' },
55
+ returnTypes: { type: 'object', description: 'Standard return type patterns' },
56
+ // Validation & Workflow
57
+ validationCommands: { type: 'object', description: 'Commands: { test, lint, build, typeCheck, custom }' },
58
+ workingDirectory: { type: 'string', description: 'Working directory for commands' },
59
+ outputDirectory: { type: 'string', description: 'Output directory for builds' },
32
60
  // For list
33
61
  filter: {
34
62
  type: 'object',
@@ -57,10 +85,41 @@ export function createSpecificationOperations(apiClient) {
57
85
  validateRequired(args, 'projectId', 'title');
58
86
  return await apiClient.call('create_specification', {
59
87
  projectId: args.projectId,
88
+ specificationTypeId: args.specificationTypeId,
60
89
  title: args.title,
61
90
  description: args.description,
91
+ content: args.content,
92
+ background: args.background,
93
+ scope: args.scope,
62
94
  priority: args.priority,
63
95
  tags: args.tags,
96
+ estimatedHours: args.estimatedHours,
97
+ targetAudience: args.targetAudience,
98
+ // Goals & Requirements
99
+ goals: args.goals,
100
+ requirements: args.requirements,
101
+ nonFunctionalRequirements: args.nonFunctionalRequirements,
102
+ acceptanceCriteria: args.acceptanceCriteria,
103
+ successMetrics: args.successMetrics,
104
+ // Guardrails & Constraints
105
+ guardrails: args.guardrails,
106
+ constraints: args.constraints,
107
+ assumptions: args.assumptions,
108
+ risks: args.risks,
109
+ // Technical Details
110
+ architecture: args.architecture,
111
+ fileStructure: args.fileStructure,
112
+ techStack: args.techStack,
113
+ dependencies: args.dependencies,
114
+ apiContracts: args.apiContracts,
115
+ // Pattern Inheritance
116
+ codeStandards: args.codeStandards,
117
+ commonImports: args.commonImports,
118
+ returnTypes: args.returnTypes,
119
+ // Validation & Workflow
120
+ validationCommands: args.validationCommands,
121
+ workingDirectory: args.workingDirectory,
122
+ outputDirectory: args.outputDirectory,
64
123
  });
65
124
  },
66
125
  get: async (args, _userId) => {
@@ -76,9 +135,39 @@ export function createSpecificationOperations(apiClient) {
76
135
  specificationId: args.specificationId,
77
136
  title: args.title,
78
137
  description: args.description,
138
+ content: args.content,
139
+ background: args.background,
140
+ scope: args.scope,
79
141
  status: args.status,
80
142
  priority: args.priority,
81
143
  tags: args.tags,
144
+ estimatedHours: args.estimatedHours,
145
+ targetAudience: args.targetAudience,
146
+ // Goals & Requirements
147
+ goals: args.goals,
148
+ requirements: args.requirements,
149
+ nonFunctionalRequirements: args.nonFunctionalRequirements,
150
+ acceptanceCriteria: args.acceptanceCriteria,
151
+ successMetrics: args.successMetrics,
152
+ // Guardrails & Constraints
153
+ guardrails: args.guardrails,
154
+ constraints: args.constraints,
155
+ assumptions: args.assumptions,
156
+ risks: args.risks,
157
+ // Technical Details
158
+ architecture: args.architecture,
159
+ fileStructure: args.fileStructure,
160
+ techStack: args.techStack,
161
+ dependencies: args.dependencies,
162
+ apiContracts: args.apiContracts,
163
+ // Pattern Inheritance
164
+ codeStandards: args.codeStandards,
165
+ commonImports: args.commonImports,
166
+ returnTypes: args.returnTypes,
167
+ // Validation & Workflow
168
+ validationCommands: args.validationCommands,
169
+ workingDirectory: args.workingDirectory,
170
+ outputDirectory: args.outputDirectory,
82
171
  });
83
172
  },
84
173
  import: async (args, _userId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,IAuHxB,CAAC;AAUF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAmH7F;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,oEAGvD"}
1
+ {"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,IA0IxB,CAAC;AAUF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAqI7F;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,oEAGvD"}
@@ -22,14 +22,23 @@ export const ticketTool = {
22
22
  ticketId: { type: 'string', description: 'Ticket ID' },
23
23
  // For create
24
24
  epicId: { type: 'string', description: 'Epic ID for create' },
25
- title: { type: 'string' },
26
- description: { type: 'string' },
27
- // Common fields
28
- status: { type: 'string', enum: ['pending', 'active', 'done', 'archived'] },
29
- priority: { type: 'string', enum: ['critical', 'high', 'medium', 'low'] },
30
- complexity: { type: 'string' },
31
- estimatedHours: { type: 'number' },
32
- tags: { type: 'array', items: { type: 'string' } },
25
+ // Core fields
26
+ title: { type: 'string', description: 'Ticket title' },
27
+ description: { type: 'string', description: 'Ticket description' },
28
+ status: { type: 'string', enum: ['pending', 'ready', 'active', 'done'] },
29
+ priority: { type: 'string', enum: ['high', 'medium', 'low'] },
30
+ complexity: { type: 'string', enum: ['small', 'medium', 'large', 'xlarge'] },
31
+ estimatedHours: { type: 'number', description: 'Estimated hours to complete' },
32
+ tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
33
+ notes: { type: 'string', description: 'Additional context, warnings, considerations' },
34
+ // Implementation details
35
+ implementation: { type: 'object', description: 'Detailed implementation steps (JSON)' },
36
+ technicalDetails: { type: 'object', description: 'Technical details (JSON)' },
37
+ acceptanceCriteria: {
38
+ type: 'array',
39
+ items: { type: 'string' },
40
+ description: 'Acceptance criteria strings (will be converted to structured format)',
41
+ },
33
42
  // Code and type references
34
43
  codeReferences: {
35
44
  type: 'array',
@@ -56,6 +65,16 @@ export const ticketTool = {
56
65
  },
57
66
  description: 'Type definitions as implementation references',
58
67
  },
68
+ // Dependencies
69
+ dependsOn: {
70
+ type: 'array',
71
+ items: { type: 'string' },
72
+ description: 'Array of ticket IDs this ticket depends on',
73
+ },
74
+ // Tracking fields (read-only for get, update for status changes)
75
+ blockReason: { type: 'string', description: 'Reason ticket is blocked' },
76
+ actualHours: { type: 'number', description: 'Actual hours spent (for update)' },
77
+ testsPassed: { type: 'boolean', description: 'Whether tests passed (for update)' },
59
78
  // For list
60
79
  filter: {
61
80
  type: 'object',
@@ -83,9 +102,9 @@ export const ticketTool = {
83
102
  type: 'boolean',
84
103
  description: 'Whether criterion passed validation',
85
104
  },
86
- notes: {
105
+ validationNotes: {
87
106
  type: 'string',
88
- description: 'Validation notes',
107
+ description: 'Validation notes (for validate operation)',
89
108
  },
90
109
  validations: {
91
110
  type: 'array',
@@ -140,8 +159,16 @@ export function createTicketOperations(apiClient) {
140
159
  complexity: args.complexity,
141
160
  estimatedHours: args.estimatedHours,
142
161
  tags: args.tags,
162
+ notes: args.notes,
163
+ // Implementation details
164
+ implementation: args.implementation,
165
+ technicalDetails: args.technicalDetails,
166
+ acceptanceCriteria: args.acceptanceCriteria,
167
+ // Code and type references
143
168
  codeReferences: args.codeReferences,
144
169
  typeReferences: args.typeReferences,
170
+ // Dependencies
171
+ dependsOn: args.dependsOn,
145
172
  });
146
173
  },
147
174
  get: async (args, _userId) => {
@@ -162,8 +189,18 @@ export function createTicketOperations(apiClient) {
162
189
  complexity: args.complexity,
163
190
  estimatedHours: args.estimatedHours,
164
191
  tags: args.tags,
192
+ notes: args.notes,
193
+ // Implementation details
194
+ implementation: args.implementation,
195
+ technicalDetails: args.technicalDetails,
196
+ acceptanceCriteria: args.acceptanceCriteria,
197
+ // Code and type references
165
198
  codeReferences: args.codeReferences,
166
199
  typeReferences: args.typeReferences,
200
+ // Tracking fields
201
+ blockReason: args.blockReason,
202
+ actualHours: args.actualHours,
203
+ testsPassed: args.testsPassed,
167
204
  });
168
205
  },
169
206
  list: async (args, _userId) => {
@@ -202,7 +239,7 @@ export function createTicketOperations(apiClient) {
202
239
  ticketId: args.ticketId,
203
240
  criterionId: args.criterionId,
204
241
  passed: args.passed,
205
- notes: args.notes,
242
+ notes: args.validationNotes,
206
243
  validatedBy: userId,
207
244
  });
208
245
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specforge/mcp",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "MCP server for SpecForge - AI agent integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",