specweave 0.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.
- package/INSTALL.md +848 -0
- package/LICENSE +21 -0
- package/README.md +675 -0
- package/SPECWEAVE.md +665 -0
- package/bin/install-agents.sh +57 -0
- package/bin/install-all.sh +49 -0
- package/bin/install-commands.sh +56 -0
- package/bin/install-skills.sh +57 -0
- package/bin/specweave.js +81 -0
- package/dist/adapters/adapter-base.d.ts +50 -0
- package/dist/adapters/adapter-base.d.ts.map +1 -0
- package/dist/adapters/adapter-base.js +146 -0
- package/dist/adapters/adapter-base.js.map +1 -0
- package/dist/adapters/adapter-interface.d.ts +108 -0
- package/dist/adapters/adapter-interface.d.ts.map +1 -0
- package/dist/adapters/adapter-interface.js +9 -0
- package/dist/adapters/adapter-interface.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +54 -0
- package/dist/adapters/claude/adapter.d.ts.map +1 -0
- package/dist/adapters/claude/adapter.js +184 -0
- package/dist/adapters/claude/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +42 -0
- package/dist/adapters/copilot/adapter.d.ts.map +1 -0
- package/dist/adapters/copilot/adapter.js +239 -0
- package/dist/adapters/copilot/adapter.js.map +1 -0
- package/dist/adapters/cursor/adapter.d.ts +42 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -0
- package/dist/adapters/cursor/adapter.js +297 -0
- package/dist/adapters/cursor/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +40 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -0
- package/dist/adapters/generic/adapter.js +155 -0
- package/dist/adapters/generic/adapter.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +247 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +7 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +160 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +154 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/package.json +90 -0
- package/src/adapters/README.md +312 -0
- package/src/adapters/adapter-base.ts +146 -0
- package/src/adapters/adapter-interface.ts +120 -0
- package/src/adapters/claude/README.md +241 -0
- package/src/adapters/claude/adapter.ts +157 -0
- package/src/adapters/copilot/.github/copilot/instructions.md +376 -0
- package/src/adapters/copilot/README.md +200 -0
- package/src/adapters/copilot/adapter.ts +210 -0
- package/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
- package/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
- package/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
- package/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
- package/src/adapters/cursor/.cursorrules +325 -0
- package/src/adapters/cursor/README.md +243 -0
- package/src/adapters/cursor/adapter.ts +268 -0
- package/src/adapters/generic/README.md +277 -0
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +676 -0
- package/src/adapters/generic/adapter.ts +159 -0
- package/src/adapters/registry.yaml +126 -0
- package/src/agents/architect/AGENT.md +416 -0
- package/src/agents/devops/AGENT.md +1738 -0
- package/src/agents/docs-writer/AGENT.md +239 -0
- package/src/agents/performance/AGENT.md +228 -0
- package/src/agents/pm/AGENT.md +751 -0
- package/src/agents/qa-lead/AGENT.md +150 -0
- package/src/agents/security/AGENT.md +179 -0
- package/src/agents/sre/AGENT.md +582 -0
- package/src/agents/sre/modules/backend-diagnostics.md +481 -0
- package/src/agents/sre/modules/database-diagnostics.md +509 -0
- package/src/agents/sre/modules/infrastructure.md +561 -0
- package/src/agents/sre/modules/monitoring.md +439 -0
- package/src/agents/sre/modules/security-incidents.md +421 -0
- package/src/agents/sre/modules/ui-diagnostics.md +302 -0
- package/src/agents/sre/playbooks/01-high-cpu-usage.md +204 -0
- package/src/agents/sre/playbooks/02-database-deadlock.md +241 -0
- package/src/agents/sre/playbooks/03-memory-leak.md +252 -0
- package/src/agents/sre/playbooks/04-slow-api-response.md +269 -0
- package/src/agents/sre/playbooks/05-ddos-attack.md +293 -0
- package/src/agents/sre/playbooks/06-disk-full.md +314 -0
- package/src/agents/sre/playbooks/07-service-down.md +333 -0
- package/src/agents/sre/playbooks/08-data-corruption.md +337 -0
- package/src/agents/sre/playbooks/09-cascade-failure.md +430 -0
- package/src/agents/sre/playbooks/10-rate-limit-exceeded.md +464 -0
- package/src/agents/sre/scripts/health-check.sh +230 -0
- package/src/agents/sre/scripts/log-analyzer.py +213 -0
- package/src/agents/sre/scripts/metrics-collector.sh +294 -0
- package/src/agents/sre/scripts/trace-analyzer.js +257 -0
- package/src/agents/sre/templates/incident-report.md +249 -0
- package/src/agents/sre/templates/mitigation-plan.md +375 -0
- package/src/agents/sre/templates/post-mortem.md +418 -0
- package/src/agents/sre/templates/runbook-template.md +412 -0
- package/src/agents/tech-lead/AGENT.md +263 -0
- package/src/commands/add-tasks.md +176 -0
- package/src/commands/close-increment.md +347 -0
- package/src/commands/create-increment.md +223 -0
- package/src/commands/create-project.md +528 -0
- package/src/commands/generate-docs.md +623 -0
- package/src/commands/list-increments.md +180 -0
- package/src/commands/review-docs.md +331 -0
- package/src/commands/start-increment.md +139 -0
- package/src/commands/sync-github.md +115 -0
- package/src/commands/validate-increment.md +800 -0
- package/src/hooks/README.md +252 -0
- package/src/hooks/docs-changed.sh +59 -0
- package/src/hooks/human-input-required.sh +55 -0
- package/src/hooks/post-task-completion.sh +57 -0
- package/src/hooks/pre-implementation.sh +47 -0
- package/src/skills/ado-sync/README.md +449 -0
- package/src/skills/ado-sync/SKILL.md +245 -0
- package/src/skills/ado-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/ado-sync/test-cases/test-2.yaml +8 -0
- package/src/skills/ado-sync/test-cases/test-3.yaml +9 -0
- package/src/skills/bmad-method-expert/SKILL.md +628 -0
- package/src/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
- package/src/skills/bmad-method-expert/scripts/check-setup.js +208 -0
- package/src/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
- package/src/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/SKILL.md +523 -0
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +48 -0
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/SKILL.md +625 -0
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/context-loader/SKILL.md +734 -0
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +39 -0
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +44 -0
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +45 -0
- package/src/skills/context-optimizer/SKILL.md +618 -0
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +97 -0
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +109 -0
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +98 -0
- package/src/skills/cost-optimizer/SKILL.md +190 -0
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +75 -0
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +52 -0
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +63 -0
- package/src/skills/cost-optimizer/test-results/README.md +46 -0
- package/src/skills/design-system-architect/SKILL.md +107 -0
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +23 -0
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +24 -0
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +23 -0
- package/src/skills/diagrams-architect/SKILL.md +763 -0
- package/src/skills/diagrams-generator/SKILL.md +25 -0
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +8 -0
- package/src/skills/docs-updater/README.md +48 -0
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/dotnet-backend/SKILL.md +250 -0
- package/src/skills/e2e-playwright/README.md +506 -0
- package/src/skills/e2e-playwright/SKILL.md +457 -0
- package/src/skills/e2e-playwright/execute.js +373 -0
- package/src/skills/e2e-playwright/lib/utils.js +514 -0
- package/src/skills/e2e-playwright/package.json +33 -0
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +54 -0
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +64 -0
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +74 -0
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +98 -0
- package/src/skills/figma-designer/SKILL.md +149 -0
- package/src/skills/figma-implementer/SKILL.md +148 -0
- package/src/skills/figma-mcp-connector/SKILL.md +136 -0
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +22 -0
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +21 -0
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +18 -0
- package/src/skills/figma-to-code/SKILL.md +128 -0
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +29 -0
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +27 -0
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +28 -0
- package/src/skills/frontend/SKILL.md +177 -0
- package/src/skills/github-sync/SKILL.md +252 -0
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/hetzner-provisioner/README.md +308 -0
- package/src/skills/hetzner-provisioner/SKILL.md +251 -0
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +71 -0
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +85 -0
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +126 -0
- package/src/skills/hetzner-provisioner/test-results/README.md +259 -0
- package/src/skills/increment-planner/SKILL.md +889 -0
- package/src/skills/increment-planner/scripts/feature-utils.js +250 -0
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +27 -0
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +30 -0
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +24 -0
- package/src/skills/increment-quality-judge/SKILL.md +566 -0
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +95 -0
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +108 -0
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +87 -0
- package/src/skills/jira-sync/README.md +328 -0
- package/src/skills/jira-sync/SKILL.md +209 -0
- package/src/skills/jira-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-2.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-3.yaml +10 -0
- package/src/skills/nextjs/SKILL.md +176 -0
- package/src/skills/nodejs-backend/SKILL.md +181 -0
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/python-backend/SKILL.md +226 -0
- package/src/skills/role-orchestrator/README.md +197 -0
- package/src/skills/role-orchestrator/SKILL.md +1184 -0
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +98 -0
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +73 -0
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +121 -0
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +145 -0
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +149 -0
- package/src/skills/skill-creator/LICENSE.txt +202 -0
- package/src/skills/skill-creator/SKILL.md +209 -0
- package/src/skills/skill-creator/scripts/init_skill.py +303 -0
- package/src/skills/skill-creator/scripts/package_skill.py +110 -0
- package/src/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/skill-router/SKILL.md +497 -0
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +33 -0
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +42 -0
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +50 -0
- package/src/skills/spec-driven-brainstorming/README.md +264 -0
- package/src/skills/spec-driven-brainstorming/SKILL.md +439 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +148 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +190 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +233 -0
- package/src/skills/spec-driven-debugging/README.md +479 -0
- package/src/skills/spec-driven-debugging/SKILL.md +652 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +212 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +461 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +366 -0
- package/src/skills/spec-kit-expert/SKILL.md +1012 -0
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/specweave-ado-mapper/SKILL.md +501 -0
- package/src/skills/specweave-detector/SKILL.md +420 -0
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +34 -0
- package/src/skills/specweave-jira-mapper/SKILL.md +500 -0
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/task-builder/README.md +90 -0
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/templates/.env.example +144 -0
- package/src/templates/.gitignore.template +81 -0
- package/src/templates/CLAUDE.md.template +383 -0
- package/src/templates/README.md.template +240 -0
- package/src/templates/config.yaml +333 -0
- package/src/templates/docs/README.md +124 -0
- package/src/templates/docs/adr-template.md +118 -0
- package/src/templates/docs/hld-template.md +220 -0
- package/src/templates/docs/lld-template.md +580 -0
- package/src/templates/docs/prd-template.md +132 -0
- package/src/templates/docs/rfc-template.md +229 -0
- package/src/templates/docs/runbook-template.md +298 -0
- package/src/templates/environments/minimal/.env.production +16 -0
- package/src/templates/environments/minimal/README.md +54 -0
- package/src/templates/environments/minimal/deploy-production.yml +52 -0
- package/src/templates/environments/progressive/.env.qa +28 -0
- package/src/templates/environments/progressive/README.md +129 -0
- package/src/templates/environments/progressive/deploy-production.yml +93 -0
- package/src/templates/environments/progressive/deploy-qa.yml +62 -0
- package/src/templates/environments/progressive/deploy-staging.yml +67 -0
- package/src/templates/environments/standard/.env.development +20 -0
- package/src/templates/environments/standard/.env.production +30 -0
- package/src/templates/environments/standard/.env.staging +23 -0
- package/src/templates/environments/standard/README.md +97 -0
- package/src/templates/environments/standard/deploy-production.yml +68 -0
- package/src/templates/environments/standard/deploy-staging.yml +61 -0
- package/src/templates/environments/standard/docker-compose.yml +43 -0
- package/src/templates/increment-metadata-template.yaml +138 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-jira-mapper
|
|
3
|
+
description: Expert in bidirectional conversion between SpecWeave increments and JIRA epics/stories/subtasks. Handles export (increment → JIRA), import (JIRA → increment), and bidirectional sync with conflict resolution. Activates for JIRA sync, issue creation, import from JIRA.
|
|
4
|
+
tools: Read, Write, Edit, Bash
|
|
5
|
+
model: claude-sonnet-4-5-20250929
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Specweave Jira Mapper Skill
|
|
9
|
+
|
|
10
|
+
You are an expert in mapping SpecWeave concepts to JIRA and vice versa with precision and traceability.
|
|
11
|
+
|
|
12
|
+
## Core Responsibilities
|
|
13
|
+
|
|
14
|
+
1. **Export SpecWeave increments to JIRA** (Increment → Epic + Stories + Subtasks)
|
|
15
|
+
2. **Import JIRA epics as SpecWeave increments** (Epic → Increment structure)
|
|
16
|
+
3. **Bidirectional sync** with conflict detection and resolution
|
|
17
|
+
4. **Maintain traceability** (store keys, URLs, timestamps)
|
|
18
|
+
5. **Validate mapping accuracy** using test cases
|
|
19
|
+
6. **Handle edge cases** (missing fields, invalid statuses, API errors)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Concept Mappings
|
|
24
|
+
|
|
25
|
+
### SpecWeave → JIRA
|
|
26
|
+
|
|
27
|
+
| SpecWeave Concept | JIRA Concept | Mapping Rules |
|
|
28
|
+
|-------------------|--------------|---------------|
|
|
29
|
+
| **Increment** | Epic | Title: `[Increment ###] [Title]` |
|
|
30
|
+
| **User Story** (from spec.md) | Story | Linked to parent Epic, includes acceptance criteria |
|
|
31
|
+
| **Task** (from tasks.md) | Subtask | Linked to parent Story, checkbox → Subtask |
|
|
32
|
+
| **Acceptance Criteria** (TC-0001) | Story Description | Formatted as checkboxes in Story description |
|
|
33
|
+
| **Priority P1** | Priority: Highest | Critical path, must complete |
|
|
34
|
+
| **Priority P2** | Priority: High | Important but not blocking |
|
|
35
|
+
| **Priority P3** | Priority: Medium | Nice to have |
|
|
36
|
+
| **Status: planned** | Status: To Do | Not started |
|
|
37
|
+
| **Status: in-progress** | Status: In Progress | Active work |
|
|
38
|
+
| **Status: completed** | Status: Done | Finished |
|
|
39
|
+
| **spec.md** | Epic Description | Summary + link to spec (if GitHub repo) |
|
|
40
|
+
| **context-manifest.yaml** | Custom Field: Context | Serialized YAML in custom field (optional) |
|
|
41
|
+
|
|
42
|
+
### JIRA → SpecWeave
|
|
43
|
+
|
|
44
|
+
| JIRA Concept | SpecWeave Concept | Import Rules |
|
|
45
|
+
|--------------|-------------------|--------------|
|
|
46
|
+
| **Epic** | Increment | Auto-number next available (e.g., 0003) |
|
|
47
|
+
| **Story** | User Story | Extract title, description, acceptance criteria |
|
|
48
|
+
| **Subtask** | Task | Map to tasks.md checklist |
|
|
49
|
+
| **Story Description** | Acceptance Criteria | Parse checkboxes as TC-0001, TC-0002 |
|
|
50
|
+
| **Epic Link** | Parent Increment | Maintain parent-child relationships |
|
|
51
|
+
| **Priority: Highest** | Priority P1 | Critical |
|
|
52
|
+
| **Priority: High** | Priority P2 | Important |
|
|
53
|
+
| **Priority: Medium/Low** | Priority P3 | Nice to have |
|
|
54
|
+
| **Status: To Do** | Status: planned | Not started |
|
|
55
|
+
| **Status: In Progress** | Status: in-progress | Active |
|
|
56
|
+
| **Status: Done** | Status: completed | Finished |
|
|
57
|
+
| **Custom Field: Spec URL** | spec.md link | Bidirectional reference |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Conversion Workflows
|
|
62
|
+
|
|
63
|
+
### 1. Export: Increment → JIRA Epic
|
|
64
|
+
|
|
65
|
+
**Input**: `.specweave/increments/0001-feature-name/`
|
|
66
|
+
|
|
67
|
+
**Prerequisites**:
|
|
68
|
+
- Increment folder exists
|
|
69
|
+
- `spec.md` exists with valid frontmatter
|
|
70
|
+
- `tasks.md` exists
|
|
71
|
+
- JIRA connection configured
|
|
72
|
+
|
|
73
|
+
**Process**:
|
|
74
|
+
|
|
75
|
+
1. **Read increment files**:
|
|
76
|
+
```bash
|
|
77
|
+
# Read spec.md
|
|
78
|
+
- Extract frontmatter (title, description, priority)
|
|
79
|
+
- Extract user stories (US1-001, US1-002)
|
|
80
|
+
- Extract acceptance criteria (TC-0001, TC-0002)
|
|
81
|
+
|
|
82
|
+
# Read tasks.md
|
|
83
|
+
- Extract task checklist
|
|
84
|
+
- Group tasks by user story (if structured)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
2. **Create JIRA Epic**:
|
|
88
|
+
```
|
|
89
|
+
Title: [Increment 0001] Feature Name
|
|
90
|
+
Description:
|
|
91
|
+
{spec.md summary}
|
|
92
|
+
|
|
93
|
+
Specification: {link to spec.md if GitHub repo}
|
|
94
|
+
|
|
95
|
+
Labels: specweave, priority:P1, status:planned
|
|
96
|
+
Custom Fields:
|
|
97
|
+
- SpecWeave Increment ID: 0001-feature-name
|
|
98
|
+
- Spec URL: https://github.com/user/repo/blob/main/.specweave/increments/0001-feature-name/spec.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
3. **Create JIRA Stories** (one per user story):
|
|
102
|
+
```
|
|
103
|
+
Title: {User Story title}
|
|
104
|
+
Description:
|
|
105
|
+
**As a** {role}
|
|
106
|
+
**I want to** {goal}
|
|
107
|
+
**So that** {benefit}
|
|
108
|
+
|
|
109
|
+
**Acceptance Criteria**:
|
|
110
|
+
- [ ] TC-0001: {criteria}
|
|
111
|
+
- [ ] TC-0002: {criteria}
|
|
112
|
+
|
|
113
|
+
Epic Link: {Epic Key}
|
|
114
|
+
Labels: specweave, user-story
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
4. **Create JIRA Subtasks** (from tasks.md):
|
|
118
|
+
```
|
|
119
|
+
Title: {Task description}
|
|
120
|
+
Parent: {Story Key}
|
|
121
|
+
Labels: specweave, task
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
5. **Update increment frontmatter**:
|
|
125
|
+
```yaml
|
|
126
|
+
jira:
|
|
127
|
+
epic_key: "PROJ-123"
|
|
128
|
+
epic_url: "https://jira.company.com/browse/PROJ-123"
|
|
129
|
+
stories:
|
|
130
|
+
- key: "PROJ-124"
|
|
131
|
+
user_story_id: "US1-001"
|
|
132
|
+
- key: "PROJ-125"
|
|
133
|
+
user_story_id: "US1-002"
|
|
134
|
+
last_sync: "2025-10-26T14:00:00Z"
|
|
135
|
+
sync_direction: "export"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Output**:
|
|
139
|
+
```
|
|
140
|
+
✅ Exported to JIRA!
|
|
141
|
+
|
|
142
|
+
Epic: PROJ-123
|
|
143
|
+
URL: https://jira.company.com/browse/PROJ-123
|
|
144
|
+
Stories: 5 created (PROJ-124 to PROJ-128)
|
|
145
|
+
Subtasks: 12 created
|
|
146
|
+
Last Sync: 2025-10-26T14:00:00Z
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### 2. Import: JIRA Epic → Increment
|
|
152
|
+
|
|
153
|
+
**Input**: JIRA Epic key (e.g., `PROJ-123`)
|
|
154
|
+
|
|
155
|
+
**Prerequisites**:
|
|
156
|
+
- Valid JIRA Epic key
|
|
157
|
+
- Epic exists and is accessible
|
|
158
|
+
- JIRA connection configured
|
|
159
|
+
|
|
160
|
+
**Process**:
|
|
161
|
+
|
|
162
|
+
1. **Fetch Epic details** (via JIRA API/MCP):
|
|
163
|
+
```
|
|
164
|
+
- Epic title, description, labels
|
|
165
|
+
- Epic custom fields (if SpecWeave ID exists)
|
|
166
|
+
- Priority, status
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
2. **Fetch linked Stories and Subtasks**:
|
|
170
|
+
```
|
|
171
|
+
- All Stories linked to Epic
|
|
172
|
+
- All Subtasks linked to each Story
|
|
173
|
+
- Story descriptions (acceptance criteria)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
3. **Auto-number next increment**:
|
|
177
|
+
```bash
|
|
178
|
+
# Scan .specweave/increments/ for highest number
|
|
179
|
+
ls .specweave/increments/ | grep -E '^[0-9]{4}' | sort -n | tail -1
|
|
180
|
+
# Increment by 1 → 0003
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
4. **Create increment folder**:
|
|
184
|
+
```
|
|
185
|
+
.specweave/increments/0003-imported-feature/
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
5. **Generate spec.md**:
|
|
189
|
+
```yaml
|
|
190
|
+
---
|
|
191
|
+
increment_id: "0003"
|
|
192
|
+
title: "{Epic title}"
|
|
193
|
+
status: "{mapped from JIRA status}"
|
|
194
|
+
priority: "{mapped from JIRA priority}"
|
|
195
|
+
created_at: "{Epic created date}"
|
|
196
|
+
jira:
|
|
197
|
+
epic_key: "PROJ-123"
|
|
198
|
+
epic_url: "https://jira.company.com/browse/PROJ-123"
|
|
199
|
+
imported_at: "2025-10-26T14:00:00Z"
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
# {Epic title}
|
|
203
|
+
|
|
204
|
+
{Epic description}
|
|
205
|
+
|
|
206
|
+
## User Stories
|
|
207
|
+
|
|
208
|
+
### US1-001: {Story 1 title}
|
|
209
|
+
|
|
210
|
+
**As a** {extracted from Story description}
|
|
211
|
+
**I want to** {extracted}
|
|
212
|
+
**So that** {extracted}
|
|
213
|
+
|
|
214
|
+
**Acceptance Criteria**:
|
|
215
|
+
- [ ] TC-0001: {parsed from Story description}
|
|
216
|
+
- [ ] TC-0002: {parsed}
|
|
217
|
+
|
|
218
|
+
**JIRA Story**: [PROJ-124](https://jira.company.com/browse/PROJ-124)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
6. **Generate tasks.md**:
|
|
222
|
+
```markdown
|
|
223
|
+
# Tasks: {Increment title}
|
|
224
|
+
|
|
225
|
+
## User Story: US1-001
|
|
226
|
+
|
|
227
|
+
- [ ] {Subtask 1 title} (JIRA: PROJ-130)
|
|
228
|
+
- [ ] {Subtask 2 title} (JIRA: PROJ-131)
|
|
229
|
+
|
|
230
|
+
## User Story: US1-002
|
|
231
|
+
|
|
232
|
+
- [ ] {Subtask 3 title} (JIRA: PROJ-132)
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
7. **Generate context-manifest.yaml** (default):
|
|
236
|
+
```yaml
|
|
237
|
+
---
|
|
238
|
+
spec_sections: []
|
|
239
|
+
documentation: []
|
|
240
|
+
max_context_tokens: 10000
|
|
241
|
+
priority: high
|
|
242
|
+
auto_refresh: false
|
|
243
|
+
---
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
8. **Update JIRA Epic** (add custom field if available):
|
|
247
|
+
```
|
|
248
|
+
Custom Field: SpecWeave Increment ID = 0003-imported-feature
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Output**:
|
|
252
|
+
```
|
|
253
|
+
✅ Imported from JIRA!
|
|
254
|
+
|
|
255
|
+
Increment: 0003-imported-feature
|
|
256
|
+
Location: .specweave/increments/0003-imported-feature/
|
|
257
|
+
User Stories: 5 imported
|
|
258
|
+
Tasks: 12 imported
|
|
259
|
+
JIRA Epic: PROJ-123
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### 3. Bidirectional Sync
|
|
265
|
+
|
|
266
|
+
**Trigger**: Manual (`/sync-jira`) or webhook
|
|
267
|
+
|
|
268
|
+
**Prerequisites**:
|
|
269
|
+
- Increment has JIRA metadata in frontmatter
|
|
270
|
+
- JIRA Epic/Stories exist
|
|
271
|
+
- Last sync timestamp available
|
|
272
|
+
|
|
273
|
+
**Process**:
|
|
274
|
+
|
|
275
|
+
1. **Detect changes since last sync**:
|
|
276
|
+
```
|
|
277
|
+
SpecWeave changes:
|
|
278
|
+
- spec.md modified after last_sync
|
|
279
|
+
- tasks.md modified after last_sync
|
|
280
|
+
- Task checkboxes changed
|
|
281
|
+
|
|
282
|
+
JIRA changes:
|
|
283
|
+
- Epic/Story/Subtask updated after last_sync
|
|
284
|
+
- Status changes
|
|
285
|
+
- New comments
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
2. **Compare and detect conflicts**:
|
|
289
|
+
```
|
|
290
|
+
Conflict types:
|
|
291
|
+
- Title changed in both (SpecWeave + JIRA)
|
|
292
|
+
- Task marked done in SpecWeave, but JIRA Subtask still "In Progress"
|
|
293
|
+
- Priority changed in both
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
3. **Present conflicts to user**:
|
|
297
|
+
```
|
|
298
|
+
⚠️ Sync Conflicts Detected:
|
|
299
|
+
|
|
300
|
+
1. Title changed:
|
|
301
|
+
SpecWeave: "User Authentication v2"
|
|
302
|
+
JIRA: "User Auth with OAuth"
|
|
303
|
+
|
|
304
|
+
Choose: [SpecWeave] [JIRA] [Manual]
|
|
305
|
+
|
|
306
|
+
2. Task status mismatch:
|
|
307
|
+
Task: "Implement login endpoint"
|
|
308
|
+
SpecWeave: ✅ completed
|
|
309
|
+
JIRA Subtask: In Progress
|
|
310
|
+
|
|
311
|
+
Choose: [Mark JIRA Done] [Uncheck SpecWeave] [Manual]
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
4. **Apply sync**:
|
|
315
|
+
```
|
|
316
|
+
SpecWeave → JIRA:
|
|
317
|
+
- Update Epic/Story titles
|
|
318
|
+
- Update Subtask statuses (checkbox → JIRA status)
|
|
319
|
+
- Add comments for significant changes
|
|
320
|
+
|
|
321
|
+
JIRA → SpecWeave:
|
|
322
|
+
- Update spec.md frontmatter (status, priority)
|
|
323
|
+
- Update task checkboxes (JIRA Subtask status → checkbox)
|
|
324
|
+
- Log JIRA comments to increment logs/
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
5. **Update sync timestamps**:
|
|
328
|
+
```yaml
|
|
329
|
+
jira:
|
|
330
|
+
last_sync: "2025-10-26T16:30:00Z"
|
|
331
|
+
sync_direction: "bidirectional"
|
|
332
|
+
conflicts_resolved: 2
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**Output**:
|
|
336
|
+
```
|
|
337
|
+
✅ Synced with JIRA!
|
|
338
|
+
|
|
339
|
+
Direction: Bidirectional
|
|
340
|
+
Changes Applied:
|
|
341
|
+
- SpecWeave → JIRA: 3 updates
|
|
342
|
+
- JIRA → SpecWeave: 5 updates
|
|
343
|
+
Conflicts Resolved: 2 (user decisions)
|
|
344
|
+
Last Sync: 2025-10-26T16:30:00Z
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Edge Cases and Error Handling
|
|
350
|
+
|
|
351
|
+
### Missing Fields
|
|
352
|
+
|
|
353
|
+
**Problem**: Increment missing spec.md or JIRA Epic missing required fields
|
|
354
|
+
|
|
355
|
+
**Solution**:
|
|
356
|
+
```
|
|
357
|
+
❌ Error: spec.md not found in increment 0001-feature-name
|
|
358
|
+
|
|
359
|
+
Expected: .specweave/increments/0001-feature-name/spec.md
|
|
360
|
+
|
|
361
|
+
Please create spec.md before exporting to JIRA.
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### JIRA API Errors
|
|
365
|
+
|
|
366
|
+
**Problem**: JIRA API rate limit, authentication failure, network error
|
|
367
|
+
|
|
368
|
+
**Solution**:
|
|
369
|
+
```
|
|
370
|
+
❌ JIRA API Error: Rate limit exceeded (429)
|
|
371
|
+
|
|
372
|
+
Retry in: 60 seconds
|
|
373
|
+
|
|
374
|
+
Alternative: Export to JSON and manually import to JIRA later.
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Invalid Status Mapping
|
|
378
|
+
|
|
379
|
+
**Problem**: JIRA uses custom workflow statuses not in standard mapping
|
|
380
|
+
|
|
381
|
+
**Solution**:
|
|
382
|
+
```
|
|
383
|
+
⚠️ Unknown JIRA status: "Awaiting Review"
|
|
384
|
+
|
|
385
|
+
Available mappings:
|
|
386
|
+
- To Do → planned
|
|
387
|
+
- In Progress → in-progress
|
|
388
|
+
- Done → completed
|
|
389
|
+
|
|
390
|
+
Map "Awaiting Review" to: [planned] [in-progress] [completed] [Custom]
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### Conflict Resolution
|
|
394
|
+
|
|
395
|
+
**Problem**: Same field changed in both SpecWeave and JIRA
|
|
396
|
+
|
|
397
|
+
**Solution**:
|
|
398
|
+
- Always ask user for resolution
|
|
399
|
+
- Provide diff view
|
|
400
|
+
- Offer merge options
|
|
401
|
+
- Never auto-resolve conflicts silently
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Templates
|
|
406
|
+
|
|
407
|
+
Use templates in `templates/` folder for consistent outputs:
|
|
408
|
+
|
|
409
|
+
- `epic-from-increment.md` - Epic creation template
|
|
410
|
+
- `story-from-user-story.md` - Story creation template
|
|
411
|
+
- `increment-from-epic.md` - Increment import template
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## References
|
|
416
|
+
|
|
417
|
+
Consult references in `references/` folder:
|
|
418
|
+
|
|
419
|
+
- `jira-concepts.md` - JIRA terminology (Epic, Story, Subtask, Epic Link)
|
|
420
|
+
- `specweave-concepts.md` - SpecWeave structure (Increment, User Story, Task)
|
|
421
|
+
- `mapping-examples.md` - Real-world conversion examples
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## Test Cases
|
|
426
|
+
|
|
427
|
+
Validate all conversions using test cases in `test-cases/`:
|
|
428
|
+
|
|
429
|
+
1. **test-1-increment-to-epic.yaml** - Basic export (Increment → Epic)
|
|
430
|
+
2. **test-2-epic-to-increment.yaml** - Basic import (Epic → Increment)
|
|
431
|
+
3. **test-3-bidirectional-sync.yaml** - Sync with conflict resolution
|
|
432
|
+
|
|
433
|
+
**Run tests**:
|
|
434
|
+
```bash
|
|
435
|
+
npm run test:agents:specweave-jira-mapper
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## Best Practices
|
|
441
|
+
|
|
442
|
+
1. **Always validate before sync** - Check increment structure, JIRA connection
|
|
443
|
+
2. **Preserve traceability** - Store JIRA keys in frontmatter, SpecWeave IDs in JIRA
|
|
444
|
+
3. **Ask before overwriting** - Never auto-resolve conflicts
|
|
445
|
+
4. **Log all operations** - Write sync logs to `.specweave/increments/{id}/logs/jira-sync.log`
|
|
446
|
+
5. **Handle errors gracefully** - Provide actionable error messages
|
|
447
|
+
6. **Test mappings** - Use test cases to validate accuracy
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Usage Examples
|
|
452
|
+
|
|
453
|
+
### Export to JIRA
|
|
454
|
+
|
|
455
|
+
```
|
|
456
|
+
User: "Export increment 0001 to JIRA"
|
|
457
|
+
|
|
458
|
+
You:
|
|
459
|
+
1. Read .specweave/increments/0001-*/spec.md and tasks.md
|
|
460
|
+
2. Extract user stories and tasks
|
|
461
|
+
3. Create JIRA Epic with title "[Increment 0001] {title}"
|
|
462
|
+
4. Create Stories for each user story
|
|
463
|
+
5. Create Subtasks for each task
|
|
464
|
+
6. Update increment frontmatter with JIRA keys
|
|
465
|
+
7. Present summary with Epic URL
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Import from JIRA
|
|
469
|
+
|
|
470
|
+
```
|
|
471
|
+
User: "Import JIRA epic PROJ-123"
|
|
472
|
+
|
|
473
|
+
You:
|
|
474
|
+
1. Fetch Epic PROJ-123 via JIRA API
|
|
475
|
+
2. Fetch linked Stories and Subtasks
|
|
476
|
+
3. Auto-number next increment (e.g., 0003)
|
|
477
|
+
4. Generate spec.md with user stories
|
|
478
|
+
5. Generate tasks.md with subtasks
|
|
479
|
+
6. Generate context-manifest.yaml (default)
|
|
480
|
+
7. Present summary with increment location
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### Bidirectional Sync
|
|
484
|
+
|
|
485
|
+
```
|
|
486
|
+
User: "Sync increment 0001 with JIRA"
|
|
487
|
+
|
|
488
|
+
You:
|
|
489
|
+
1. Read increment frontmatter for JIRA keys
|
|
490
|
+
2. Detect changes since last_sync
|
|
491
|
+
3. Compare SpecWeave vs JIRA
|
|
492
|
+
4. Present conflicts (if any) for user resolution
|
|
493
|
+
5. Apply sync (SpecWeave ↔ JIRA)
|
|
494
|
+
6. Update sync timestamps
|
|
495
|
+
7. Present summary with changes applied
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
**You are the authoritative mapper between SpecWeave and JIRA. Your conversions must be accurate, traceable, and reversible.**
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# task-builder Skill
|
|
2
|
+
|
|
3
|
+
**Status**: To be developed
|
|
4
|
+
**Priority**: High
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
Converts high-level spec.md (user stories, epics, capabilities) into detailed tasks.md with:
|
|
9
|
+
- Technical implementation details
|
|
10
|
+
- File paths and code snippets
|
|
11
|
+
- Acceptance criteria per task
|
|
12
|
+
- Agent/skill references (which agent to use for each task)
|
|
13
|
+
- Documentation update requirements
|
|
14
|
+
|
|
15
|
+
## When It Activates
|
|
16
|
+
|
|
17
|
+
- After increment-planner creates increment
|
|
18
|
+
- After spec.md is created
|
|
19
|
+
- User says "create tasks for this feature"
|
|
20
|
+
- User says "break down implementation"
|
|
21
|
+
|
|
22
|
+
## What It Does
|
|
23
|
+
|
|
24
|
+
1. **Reads spec.md**: Understands user stories, acceptance tests
|
|
25
|
+
2. **Creates tasks.md**:
|
|
26
|
+
- Maps user stories → tasks
|
|
27
|
+
- Adds technical details (file paths, code)
|
|
28
|
+
- Adds acceptance criteria per task
|
|
29
|
+
- Specifies which agent/skills to use
|
|
30
|
+
- Links to documentation
|
|
31
|
+
3. **Updates docs**: Marks sections as [DRAFT] that need updates
|
|
32
|
+
4. **Understands structure**: Adapts to JIRA, ADO, or simple user stories
|
|
33
|
+
|
|
34
|
+
## Task vs User Story
|
|
35
|
+
|
|
36
|
+
- **User Story**: Has acceptance TESTS (verify feature works)
|
|
37
|
+
- **Task**: Has acceptance CRITERIA (verify task complete)
|
|
38
|
+
|
|
39
|
+
## Example Output
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
# tasks.md
|
|
43
|
+
|
|
44
|
+
## Task T001: Create StripeService
|
|
45
|
+
|
|
46
|
+
**Agent**: nodejs-backend
|
|
47
|
+
**Skills**: stripe-integration, api-design
|
|
48
|
+
|
|
49
|
+
**Description**: Create Stripe service class for payment processing
|
|
50
|
+
|
|
51
|
+
**File**: src/services/stripe-service.ts
|
|
52
|
+
|
|
53
|
+
**Implementation**:
|
|
54
|
+
```typescript
|
|
55
|
+
export class StripeService {
|
|
56
|
+
async createSubscription(params) {
|
|
57
|
+
// Implementation
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Acceptance Criteria**:
|
|
63
|
+
- [ ] StripeService class exists in src/services/stripe-service.ts
|
|
64
|
+
- [ ] createSubscription method implemented
|
|
65
|
+
- [ ] Error handling added
|
|
66
|
+
- [ ] Unit tests passing
|
|
67
|
+
|
|
68
|
+
**Documentation Updates**:
|
|
69
|
+
- [ ] .specweave/docs/api/payments.md [DRAFT]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Integration
|
|
73
|
+
|
|
74
|
+
- Called by: increment-planner (after spec.md created)
|
|
75
|
+
- Calls: docs-updater (to update documentation)
|
|
76
|
+
- Output: tasks.md in .specweave/increments/####-feature/
|
|
77
|
+
|
|
78
|
+
## Configuration
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
# .specweave/config.yaml
|
|
82
|
+
task_builder:
|
|
83
|
+
structure: "auto-detect" # user-stories | jira | ado
|
|
84
|
+
detail_level: "high" # Include code snippets
|
|
85
|
+
agent_references: true # Specify which agent for each task
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
**To implement**: See task in .specweave/increments/
|