siesa-agents 2.1.44 → 2.1.45
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/bmad/_config/workflow-manifest.csv +1 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-01-load-story.md +101 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-02-build-plan.md +89 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-03-review.md +91 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-04-fix.md +92 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-05-sync-sprint.md +70 -0
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-06-jira-sync.md +123 -0
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.md +57 -0
- package/bmad/bmm/workflows/sync-epics-stories/completion-summary-sync-epics-stories.md +43 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-01-init.md +150 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-01b-continue.md +79 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-02-setup.md +117 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-03-scope.md +70 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-04-epics.md +124 -0
- package/bmad/bmm/workflows/sync-epics-stories/steps/step-05-stories.md +189 -0
- package/bmad/bmm/workflows/sync-epics-stories/workflow-plan-sync-epics-stories.md +252 -0
- package/bmad/bmm/workflows/sync-epics-stories/workflow.md +54 -0
- package/claude/commands/bmad/bmm/workflows/sync-epics-stories.md +5 -0
- package/gemini/commands/bmad-workflow-bmm-sync-epics-stories.toml +4 -0
- package/package.json +1 -1
- /package/bmad/bmm/workflows/4-implementation/code-review/{instructions.xml → instructions.xml.bak} +0 -0
- /package/bmad/bmm/workflows/4-implementation/code-review/{workflow.yaml → workflow.yaml.bak} +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-05-stories'
|
|
3
|
+
description: 'Synchronize Stories from markdown to Jira, linking to Parent Epics'
|
|
4
|
+
|
|
5
|
+
# Path Definitions
|
|
6
|
+
workflow_path: '{project-root}/_bmad/bmm/workflows/sync-epics-stories'
|
|
7
|
+
|
|
8
|
+
# File References
|
|
9
|
+
thisStepFile: '{workflow_path}/steps/step-05-stories.md'
|
|
10
|
+
storiesFolder: '{output_folder}/implementation-artifacts/'
|
|
11
|
+
epicsFile: '{output_folder}/planning-artifacts/epics.md'
|
|
12
|
+
configFile: '{project-root}/_bmad-output/jira_docs/project_config.yaml'
|
|
13
|
+
workflowFile: '{workflow_path}/workflow.md'
|
|
14
|
+
|
|
15
|
+
# Task References
|
|
16
|
+
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
|
17
|
+
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Step 5: Story Synchronization
|
|
22
|
+
|
|
23
|
+
## STEP GOAL:
|
|
24
|
+
|
|
25
|
+
To read story files from `{storiesFolder}`, link them to Parent Epics (found in `epics.md`), check existence in Jira, create missing stories, and update documentation.
|
|
26
|
+
|
|
27
|
+
## MANDATORY EXECUTION RULES:
|
|
28
|
+
|
|
29
|
+
- 🛑 NEVER generate content without user input
|
|
30
|
+
- 📖 CRITICAL: Read the complete step file before taking any action
|
|
31
|
+
- 🔒 **STRICT MCP ONLY:** You must ONLY use the provided MCP tools (`searchJiraIssuesUsingJql`, `createJiraIssue`, `addCommentToJiraIssue`).
|
|
32
|
+
- ⛔ **FORBIDDEN:** Do NOT use `fetch`, `curl`, or raw HTTP requests.
|
|
33
|
+
|
|
34
|
+
## EXECUTION SEQUENCE:
|
|
35
|
+
|
|
36
|
+
### 1. Pre-flight Validation (Parent Check)
|
|
37
|
+
|
|
38
|
+
1. **Analyze Dependencies:**
|
|
39
|
+
- Scan all markdown files in `{storiesFolder}`.
|
|
40
|
+
- Extract all Parent Epic names/references.
|
|
41
|
+
- Check `{epicsFile}` for these links.
|
|
42
|
+
2. **Verify Sync Status:**
|
|
43
|
+
- For each Parent Epic:
|
|
44
|
+
- Does it have a `[KEY-123]` (Jira Key) in the header?
|
|
45
|
+
- If NO: Mark as `Unsynced`.
|
|
46
|
+
3. **Decision Gate:**
|
|
47
|
+
- If `Unsynced` count > 0:
|
|
48
|
+
- Display: "⚠️ CRITICAL: Found {{count}} Parent Epics that are not synced to Jira. Stories cannot be linked without Parent IDs."
|
|
49
|
+
- Display: "**Unsynced Epics detected:** {{List of Epics}}"
|
|
50
|
+
- **Prompt Menu:**
|
|
51
|
+
- **[S]** Sync Epics First (Required)
|
|
52
|
+
- **[E]** Exit Workflow
|
|
53
|
+
- **Handler [S]:** Load and execute `{workflow_path}/steps/step-04-epics.md` IMMEDIATELY. (Note: Step 4 will ask to Continue back to this step if scope allows, or you must restart).
|
|
54
|
+
- **Handler [E]:** Exit and terminate.
|
|
55
|
+
- If All Parents Synced: **PROCEED** to Load Data.
|
|
56
|
+
|
|
57
|
+
### 2. Load Data
|
|
58
|
+
|
|
59
|
+
- Read `{configFile}`.
|
|
60
|
+
- Get list of all `.md` files in `{storiesFolder}`.
|
|
61
|
+
- Read `{epicsFile}` (to lookup Parent Epic IDs).
|
|
62
|
+
|
|
63
|
+
### 3. Iterate and Sync
|
|
64
|
+
|
|
65
|
+
For each markdown file in `{storiesFolder}`:
|
|
66
|
+
|
|
67
|
+
1. **Parse & Local Check (Prevention of Duplicates):**
|
|
68
|
+
- Read file content.
|
|
69
|
+
- **Check:** Does the file already contain a `**Jira Issue Key:**` [KEY-123] reference?
|
|
70
|
+
- **Condition A (Already Synced Locally):**
|
|
71
|
+
- If YES:
|
|
72
|
+
- **Log:** "Story {{StoryName}} already synced locally as {{KEY}}."
|
|
73
|
+
- **Extract:** The Jira Key (e.g., `KEY-123`) from the file to use in Step 6.
|
|
74
|
+
- **ACTION:** **SKIP** Steps 2, 3, and 4.
|
|
75
|
+
- **JUMP DIRECTLY** to **Step 6 (Sub-task Synchronization)**.
|
|
76
|
+
- **Condition B (Not Synced):**
|
|
77
|
+
- If NO: Proceed to Step 2.
|
|
78
|
+
|
|
79
|
+
2. **Resolve Parent (If Condition B):**
|
|
80
|
+
- Find the parent Epic in `{epicsFile}` based on reference.
|
|
81
|
+
- Extract its **Jira Issue Key** (e.g., KEY-1).
|
|
82
|
+
- If no Key found: **SKIP Story** (Cannot link). Log failure.
|
|
83
|
+
|
|
84
|
+
3. **Remote Idempotency Check (If Condition B):**
|
|
85
|
+
- Execute `searchJiraIssuesUsingJql`: `project = KEY AND issuetype in (Story, Historia) AND summary ~ "Story Name"`
|
|
86
|
+
- **Condition Found (Remote Exists):**
|
|
87
|
+
- If found:
|
|
88
|
+
- **Log:** "Story {{StoryName}} found in Jira as {{FoundKEY}}."
|
|
89
|
+
- **Set:** `{{KEY}}` = `{{FoundKEY}}`.
|
|
90
|
+
- **Update Action:** APPEND the Jira Information block to the end of the file. **DO NOT rewrite existing content.**
|
|
91
|
+
- **SKIP** Step 4 (Creation).
|
|
92
|
+
- **PROCEED** to **Step 6 (Sub-task Synchronization)**.
|
|
93
|
+
- **Condition Not Found:**
|
|
94
|
+
- Proceed to Step 4.
|
|
95
|
+
|
|
96
|
+
4. **Creation (Atomic Transaction - If Condition Not Found):**
|
|
97
|
+
- Execute `createJiraIssue` using the following REFERENCE TEMPLATE:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"provider": "jira",
|
|
102
|
+
"issueTypeName": "Story",
|
|
103
|
+
"projectKey": "{{project_key}}",
|
|
104
|
+
"summary": "{{Story Name}}",
|
|
105
|
+
"description": "## User Story\n{{user_story}}\n\n## Description\n{{description}}\n\n## Acceptance Criteria\n{{acceptance_criteria}}\n\n---\n*Source: {{file_path}}*",
|
|
106
|
+
"parent": "{{Parent_Epic_Key}}",
|
|
107
|
+
"additional_fields": {
|
|
108
|
+
"priority": { "name": "Medium" },
|
|
109
|
+
"labels": ["prd-sync", "automated", "epic-file-sync", "{{parent-epic-slug}}"],
|
|
110
|
+
"customfield_10014": "{{Parent_Epic_Key}}" // 'Epic Link' field. IMPORTANT: Check project capability for field ID.
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
- **Set:** `{{KEY}}` = New Issue Key.
|
|
115
|
+
|
|
116
|
+
5. **Immediate File Persistence (CRITICAL):**
|
|
117
|
+
- **IMMEDIATELY** after obtaining the `key` (from Step 4):
|
|
118
|
+
- Update the story file **RIGHT NOW**.
|
|
119
|
+
- **Action:** Append the following block to the end of the file:
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
|
|
123
|
+
## Jira Information
|
|
124
|
+
|
|
125
|
+
**Jira Issue Key:** [{{KEY}}]({{jira_url}}/browse/{{KEY}})
|
|
126
|
+
**Jira URL:** {{jira_url}}/browse/{{KEY}}
|
|
127
|
+
**Status:** Synced
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
6. **Sub-task Synchronization (Hierarchical Sync & Validation):**
|
|
131
|
+
- **Prerequisite:** Ensure we have a valid `{{KEY}}` for the Parent Story. If ID is missing, SKIP sub-tasks.
|
|
132
|
+
- **Goal:** Sync items from `## Tasks / Subtasks` to Jira as Sub-tasks, avoiding duplicates.
|
|
133
|
+
- **Action:**
|
|
134
|
+
1. **Parse Sync Table:** Read the `## Synced Tasks` table at the bottom of the file (if it exists).
|
|
135
|
+
- Create a list/set of *already synced tasks* by minimizing/normalizing the "Task Name" column.
|
|
136
|
+
2. **Locate Source Tasks:** Find `## Tasks / Subtasks` section.
|
|
137
|
+
- If missing: Log "No Tasks section". **CONTINUE** to next file.
|
|
138
|
+
3. **Iterate:** For each **Level 1 Bullet Point** (The Task) in the source list:
|
|
139
|
+
- **Validation (Idempotency):**
|
|
140
|
+
- Check: Is `{{Task Name}}` already present in the *already synced tasks* list?
|
|
141
|
+
- **If YES:** **SKIP** this task. Log "Task '{{Task Name}}' already synced."
|
|
142
|
+
- **If NO:** **PROCEED** to Create.
|
|
143
|
+
- **Create:** Execute `createJiraIssue`:
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"provider": "jira",
|
|
147
|
+
"issueTypeName": "Sub-task",
|
|
148
|
+
"projectKey": "{{project_key}}",
|
|
149
|
+
"parent": "{{KEY}}",
|
|
150
|
+
"summary": "{{Task Text}}"
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
- **Context:** If the task has nested items (indented bullets), combine them into a **simple markdown bulleted list** (ensuring no checklist `[ ]` syntax is used) and execute `addCommentToJiraIssue`:
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"issueIdOrKey": "{{New_SubTask_Key}}",
|
|
157
|
+
"commentBody": "## Details\n\n{{nested_bullets_content}}"
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
- **Persistence (Append Update):**
|
|
161
|
+
- **Immediately** append a new row to the `## Synced Tasks` table (create table header if it doesn't exist yet):
|
|
162
|
+
```markdown
|
|
163
|
+
| {{Task Name}} | [{{SubTaskKey}}]({{url}}) | Synced | {{Date}} |
|
|
164
|
+
```
|
|
165
|
+
*(Ensure the table structure is maintained)*
|
|
166
|
+
|
|
167
|
+
### 4. Report Results
|
|
168
|
+
|
|
169
|
+
Display summary: "Created: X, Skipped: Y, Failed: Z".
|
|
170
|
+
|
|
171
|
+
### 5. Present MENU OPTIONS
|
|
172
|
+
|
|
173
|
+
Display: "**Stories Synced - Select an Option:** [C] Finish"
|
|
174
|
+
|
|
175
|
+
#### Menu Handling Logic:
|
|
176
|
+
|
|
177
|
+
- IF C: Display "Workflow Complete. All artifacts synchronized." and exit.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
|
182
|
+
|
|
183
|
+
### ✅ SUCCESS:
|
|
184
|
+
|
|
185
|
+
- Stories processed and linked to Epics
|
|
186
|
+
- No duplicates
|
|
187
|
+
- `stories.md` updated
|
|
188
|
+
|
|
189
|
+
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8]
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Workflow Creation Plan: sync-epics-stories
|
|
6
|
+
|
|
7
|
+
## Initial Project Context
|
|
8
|
+
|
|
9
|
+
- **Module:** bmm
|
|
10
|
+
- **Target Location:** _bmad-output/bmb-creations/workflows/sync-epics-stories
|
|
11
|
+
- **Created:** 2026-01-13
|
|
12
|
+
|
|
13
|
+
## Detailed Requirements
|
|
14
|
+
|
|
15
|
+
### 1. Workflow Purpose and Scope
|
|
16
|
+
- **Problem:** Synchronize epics and user stories documentation generated by Bmad (Markdown files) with a Jira project.
|
|
17
|
+
- **User:** Product Owner (PO) Team.
|
|
18
|
+
- **Main Outcome:**
|
|
19
|
+
- Validated Jira configuration.
|
|
20
|
+
- Epics and Stories created/synced in Jira.
|
|
21
|
+
- Local documentation (`epics.md`, `stories.md`) updated with Jira Issue Keys and sync status.
|
|
22
|
+
|
|
23
|
+
### 2. Workflow Type
|
|
24
|
+
- **Type:** **Action Workflow** with interactive setup and decision points (Branching).
|
|
25
|
+
|
|
26
|
+
### 3. Workflow Flow and Structure (Action & Branching)
|
|
27
|
+
The workflow will follow a phased approach as detailed in `_bmad/bmm/data/docs.md`:
|
|
28
|
+
|
|
29
|
+
**Phase 0: Initialization & Configuration (Jira Setup Task)**
|
|
30
|
+
1. **Check Config:** Check for `_bmad/jira_docs/project_config.yaml`.
|
|
31
|
+
2. **Authenticate/Validate:** Use MCP to get accessible resources (Cloud ID).
|
|
32
|
+
3. **Project Key:** Elicit from user.
|
|
33
|
+
4. **Verify Access:** Use MCP to verify project access and get project name/URL.
|
|
34
|
+
5. **Save Config:** Create/Update `project_config.yaml`.
|
|
35
|
+
|
|
36
|
+
**Phase 1: Bifurcation (Scope Selection)**
|
|
37
|
+
- User selects: [1] Epics, [2] Stories, [3] Both.
|
|
38
|
+
|
|
39
|
+
**Phase 2: Epic Synchronization (if selected)**
|
|
40
|
+
1. **Load:** Read `_bmad-output/planning-artifacts/epics.md`.
|
|
41
|
+
2. **Iterate:**
|
|
42
|
+
- Check for existence in Jira (Idempotency check via JQL).
|
|
43
|
+
- Create if missing (Issue Type: "Epic").
|
|
44
|
+
3. **Update:** Append "Jira Sync Status" to `epics.md`.
|
|
45
|
+
4. **Report:** Summary of created/skipped/failed.
|
|
46
|
+
|
|
47
|
+
**Phase 3: Story Synchronization (if selected)**
|
|
48
|
+
1. **Load:** Read `_bmad-output/planning-artifacts/stories.md`.
|
|
49
|
+
2. **Iterate:**
|
|
50
|
+
- **Resolve Parent:** Find Jira Key of parent Epic from `epics.md`. Skip if missing.
|
|
51
|
+
- Check for existence in Jira (Idempotency check).
|
|
52
|
+
- Determine Issue Type ("Story" or localized "Historia").
|
|
53
|
+
- Create if missing (linked to Parent Epic).
|
|
54
|
+
3. **Update:** Append "Jira Sync Status" to `stories.md`.
|
|
55
|
+
4. **Report:** Summary of created/skipped/failed.
|
|
56
|
+
|
|
57
|
+
### 4. User Interaction Style
|
|
58
|
+
- **Collaborative Setup:** Guided setup for credentials and project selection.
|
|
59
|
+
- **Autonomous Execution:** Once configured and scope selected, the sync process runs largely autonomously, reporting progress.
|
|
60
|
+
|
|
61
|
+
### 5. Instruction Style
|
|
62
|
+
- **Prescriptive:** Specific steps for MCP calls, strict rules for idempotency, and exact formatting for updating markdown files.
|
|
63
|
+
|
|
64
|
+
### 6. Input Requirements
|
|
65
|
+
- **Configuration:** Jira Project Key, User Authentication (via MCP).
|
|
66
|
+
- **Files:** `_bmad-output/planning-artifacts/epics.md`, `_bmad-output/planning-artifacts/stories.md`.
|
|
67
|
+
|
|
68
|
+
### 7. Output Specifications
|
|
69
|
+
- **Jira:** Created Epics and Stories.
|
|
70
|
+
- **Local Files:** Updated `epics.md` and `stories.md` with sync status/links.
|
|
71
|
+
- **Config File:** `_bmad/jira_docs/project_config.yaml`.
|
|
72
|
+
- **Console:** Progress logs and final summary reports.
|
|
73
|
+
|
|
74
|
+
### 8. Success Criteria
|
|
75
|
+
- **Zero Duplication:** Idempotency checks prevent creating duplicate tickets.
|
|
76
|
+
- **Correct Linking:** Stories are correctly linked to their parent Epics in Jira.
|
|
77
|
+
- **Traceability:** Local files contain direct links and IDs of created Jira issues.
|
|
78
|
+
- **Stability:** Handles authentication failures or missing files gracefully.
|
|
79
|
+
|
|
80
|
+
### 9. Technical Specifics (from docs.md)
|
|
81
|
+
- **MCP Server:** `mcp-atlassian` (or equivalent provided environment).
|
|
82
|
+
- **Tools:** `getAccessibleAtlassianResources`, `getVisibleJiraProjects`, `createJiraIssue`, `searchJiraIssuesUsingJql`.
|
|
83
|
+
- **Structure:** Sequential steps with a central branching menu.
|
|
84
|
+
|
|
85
|
+
## Tools Configuration
|
|
86
|
+
|
|
87
|
+
### Core BMAD Tools
|
|
88
|
+
|
|
89
|
+
- **Party-Mode**: Excluded (Technical workflow)
|
|
90
|
+
- **Advanced Elicitation**: Excluded (Technical workflow)
|
|
91
|
+
- **Brainstorming**: Excluded (Technical workflow)
|
|
92
|
+
|
|
93
|
+
### LLM Features
|
|
94
|
+
|
|
95
|
+
- **Web-Browsing**: Included - Use cases: Lookup Jira error codes or API nuances if needed.
|
|
96
|
+
- **File I/O**: Included - Operations: Read/Write markdown files and config.
|
|
97
|
+
- **Sub-Agents**: Excluded - Single thread execution for reliability.
|
|
98
|
+
- **Sub-Processes**: Excluded.
|
|
99
|
+
|
|
100
|
+
### Memory Systems
|
|
101
|
+
|
|
102
|
+
- **Sidecar File**: Included - Purpose: Backup context and session persistence.
|
|
103
|
+
|
|
104
|
+
### External Integrations
|
|
105
|
+
|
|
106
|
+
- **MCP Atlassian (Jira)**: Essential.
|
|
107
|
+
- `getAccessibleAtlassianResources`
|
|
108
|
+
- `getVisibleJiraProjects`
|
|
109
|
+
- `createJiraIssue`
|
|
110
|
+
- `searchJiraIssuesUsingJql`
|
|
111
|
+
|
|
112
|
+
### Installation Requirements
|
|
113
|
+
|
|
114
|
+
- **mcp-atlassian**: Must be installed and authenticated via `/mcp auth mcp-atlassian`.
|
|
115
|
+
|
|
116
|
+
## Output Format Design
|
|
117
|
+
|
|
118
|
+
**Format Type**: Mixed (Strict Template & Structured)
|
|
119
|
+
|
|
120
|
+
**Output Requirements**:
|
|
121
|
+
- **Configuration**: YAML file (`project_config.yaml`)
|
|
122
|
+
- **Status Updates**: Markdown blocks appended to existing files (`epics.md`, `stories.md`)
|
|
123
|
+
- **File Format**: YAML, Markdown
|
|
124
|
+
|
|
125
|
+
**Structure Specifications**:
|
|
126
|
+
|
|
127
|
+
**A. Configuration (`project_config.yaml`) - Strict Template:**
|
|
128
|
+
```yaml
|
|
129
|
+
project_key: "{{PROJECT_KEY}}"
|
|
130
|
+
project_name: "{{PROJECT_NAME}}"
|
|
131
|
+
cloud_id: "{{CLOUD_ID}}"
|
|
132
|
+
jira_url: "{{JIRA_URL}}"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**B. Sync Status Block (`.md` append) - Structured:**
|
|
136
|
+
```markdown
|
|
137
|
+
### Jira Sync Status
|
|
138
|
+
- **Status:** {{Synced | Skipped | Failed}}
|
|
139
|
+
- **Issue Key:** {{JIRA-KEY}}
|
|
140
|
+
- **Issue ID:** {{issue_id}}
|
|
141
|
+
- **Link:** {{issue_url}}
|
|
142
|
+
- **Last Sync:** {{timestamp}}
|
|
143
|
+
- **Notes:** {{notes}}
|
|
144
|
+
- **Last Updated:** {{current_date}}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Template Information**:
|
|
148
|
+
- **Source**: Defined in workflow plan.
|
|
149
|
+
- **Placeholders**: `{{PROJECT_KEY}}`, `{{CLOUD_ID}}`, `{{JIRA-KEY}}`, etc.
|
|
150
|
+
|
|
151
|
+
**Special Considerations**:
|
|
152
|
+
- **Idempotency**: Must check existence before creating.
|
|
153
|
+
- **Traceability**: Must log specific Issue Keys to enable linking.
|
|
154
|
+
|
|
155
|
+
## Workflow Structure Design
|
|
156
|
+
|
|
157
|
+
### 1. Structure Overview
|
|
158
|
+
- **Type**: Multi-session Action Workflow
|
|
159
|
+
- **Role**: Jira Integration Specialist
|
|
160
|
+
- **Continuation Support**: YES (`step-01-init` + `step-01b-continue`)
|
|
161
|
+
|
|
162
|
+
### 2. Step Sequence
|
|
163
|
+
|
|
164
|
+
**Step 1: Init (`step-01-init.md`)**
|
|
165
|
+
- **Goal:** Detect existing workflow state or initialize.
|
|
166
|
+
- **Logic:** Check for `stepsCompleted` in output files.
|
|
167
|
+
- **Route:** Go to `step-01b` if resuming, or `step-02` for fresh run.
|
|
168
|
+
|
|
169
|
+
**Step 1b: Continue (`step-01b-continue.md`)**
|
|
170
|
+
- **Goal:** Resume context and route to the next pending step.
|
|
171
|
+
|
|
172
|
+
**Step 2: Configuration & Setup (`step-02-setup.md`)**
|
|
173
|
+
- **Goal:** Validate Jira configuration and access.
|
|
174
|
+
- **Actions:**
|
|
175
|
+
- Check/Create `_bmad/jira_docs/project_config.yaml`.
|
|
176
|
+
- Authenticate via MCP (`getAccessibleAtlassianResources`).
|
|
177
|
+
- Elicit `project_key` if missing.
|
|
178
|
+
- Verify access (`getVisibleJiraProjects`).
|
|
179
|
+
- **Output:** Validated configuration.
|
|
180
|
+
|
|
181
|
+
**Step 3: Scope Selection (`step-03-scope.md`)**
|
|
182
|
+
- **Goal:** User selects synchronization scope.
|
|
183
|
+
- **Menu Options:**
|
|
184
|
+
- [1] **Epics Only** -> Load `step-04-epics.md`.
|
|
185
|
+
- [2] **Stories Only** -> Load `step-05-stories.md`.
|
|
186
|
+
- [3] **Both** -> Load `step-04-epics.md` (with logic to chain to `step-05`).
|
|
187
|
+
|
|
188
|
+
**Step 4: Epic Synchronization (`step-04-epics.md`)**
|
|
189
|
+
- **Goal:** Sync `epics.md` to Jira.
|
|
190
|
+
- **Actions:**
|
|
191
|
+
- Read `epics.md`.
|
|
192
|
+
- For each epic: Check existence (JQL) -> Create if missing (MCP) -> Update `epics.md`.
|
|
193
|
+
- **Logic:** If scope was "Both", load `step-05` next. Else, finish.
|
|
194
|
+
|
|
195
|
+
**Step 5: Story Synchronization (`step-05-stories.md`)**
|
|
196
|
+
- **Goal:** Sync `stories.md` to Jira, linking to Epics.
|
|
197
|
+
- **Actions:**
|
|
198
|
+
- Read `stories.md`.
|
|
199
|
+
- For each story: Find Parent Epic ID -> Check existence -> Create (linked) -> Update `stories.md`.
|
|
200
|
+
- **Completion:** Final report and workflow finish.
|
|
201
|
+
|
|
202
|
+
### 3. File Structure
|
|
203
|
+
- `.../workflows/sync-epics-stories/`
|
|
204
|
+
- `workflow.md` (Main entry)
|
|
205
|
+
- `steps/`
|
|
206
|
+
- `step-01-init.md`
|
|
207
|
+
- `step-01b-continue.md`
|
|
208
|
+
- `step-02-setup.md`
|
|
209
|
+
- `step-03-scope.md`
|
|
210
|
+
- `step-04-epics.md`
|
|
211
|
+
- `step-05-stories.md`
|
|
212
|
+
|
|
213
|
+
### 4. Data Flow
|
|
214
|
+
- **Inputs:** `project_config.yaml`, `epics.md`, `stories.md`, Jira API (MCP).
|
|
215
|
+
- **State:** Tracked in file frontmatter (`stepsCompleted`) and markdown content updates.
|
|
216
|
+
- **Outputs:** Created Jira Issues, updated markdown files.
|
|
217
|
+
|
|
218
|
+
## Build Summary
|
|
219
|
+
|
|
220
|
+
**Generated Files:**
|
|
221
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/workflow.md`
|
|
222
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-01-init.md`
|
|
223
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-01b-continue.md`
|
|
224
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-02-setup.md`
|
|
225
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-03-scope.md`
|
|
226
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-04-epics.md`
|
|
227
|
+
- `_bmad-output/bmb-creations/workflows/sync-epics-stories/steps/step-05-stories.md`
|
|
228
|
+
|
|
229
|
+
**Status:**
|
|
230
|
+
- All files created successfully.
|
|
231
|
+
- Structure aligns with approved plan.
|
|
232
|
+
- Ready for review.
|
|
233
|
+
|
|
234
|
+
## Review and Completion
|
|
235
|
+
|
|
236
|
+
### Review Findings
|
|
237
|
+
- **File Structure**: Correctly mirrors the standard BMAD structure.
|
|
238
|
+
- **Configuration**: All paths use dynamic placeholders (`{project-root}`, etc.) for portability.
|
|
239
|
+
- **Compliance**: Steps follow the micro-file architecture (one step, one file).
|
|
240
|
+
- **Logic**: Continuation logic is properly implemented in Steps 1 and 1b.
|
|
241
|
+
|
|
242
|
+
### Deployment
|
|
243
|
+
- **Path**: `_bmad-output/bmb-creations/workflows/sync-epics-stories/workflow.md`
|
|
244
|
+
- **Execution**: Can be run immediately by an agent pointing to this path.
|
|
245
|
+
- **Testing**:
|
|
246
|
+
1. Ensure `mcp-atlassian` is authenticated.
|
|
247
|
+
2. Ensure `epics.md` and `stories.md` exist in `_bmad-output/planning-artifacts/`.
|
|
248
|
+
3. Run the workflow.
|
|
249
|
+
|
|
250
|
+
### Final Approval
|
|
251
|
+
- User approved the design and build.
|
|
252
|
+
- Workflow ready for production use.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync-epics-stories
|
|
3
|
+
description: Synchronize Bmad generated epics and stories documentation with Jira
|
|
4
|
+
web_bundle: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Sync Epics & Stories
|
|
8
|
+
|
|
9
|
+
**Goal:** Synchronize epics and user stories documentation generated by Bmad (Markdown files) with a Jira project, ensuring zero duplication and correct linking.
|
|
10
|
+
|
|
11
|
+
**Your Role:** In addition to your name, communication_style, and persona, you are also a **Jira Integration Specialist** collaborating with the **Product Owner Team**. This is a partnership, not a client-vendor relationship. You bring **technical precision and Jira API expertise**, while the user brings **product requirements**. Work together as equals.
|
|
12
|
+
|
|
13
|
+
## WORKFLOW ARCHITECTURE
|
|
14
|
+
|
|
15
|
+
### Core Principles
|
|
16
|
+
|
|
17
|
+
- **Micro-file Design**: Each step of the overall goal is a self contained instruction file that you will adhere too 1 file as directed at a time
|
|
18
|
+
- **Just-In-Time Loading**: Only 1 current step file will be loaded, read, and executed to completion - never load future step files until told to do so
|
|
19
|
+
- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
|
|
20
|
+
- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document
|
|
21
|
+
- **Append-Only Building**: Build documents by appending content as directed to the output file
|
|
22
|
+
|
|
23
|
+
### Step Processing Rules
|
|
24
|
+
|
|
25
|
+
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
|
26
|
+
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
|
27
|
+
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
|
28
|
+
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
|
29
|
+
5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step
|
|
30
|
+
6. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
|
31
|
+
|
|
32
|
+
### Critical Rules (NO EXCEPTIONS)
|
|
33
|
+
|
|
34
|
+
- 🛑 **NEVER** load multiple step files simultaneously
|
|
35
|
+
- 📖 **ALWAYS** read entire step file before execution
|
|
36
|
+
- 🚫 **NEVER** skip steps or optimize the sequence
|
|
37
|
+
- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step
|
|
38
|
+
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
|
39
|
+
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
|
40
|
+
- 📋 **NEVER** create mental todo lists from future steps
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## INITIALIZATION SEQUENCE
|
|
45
|
+
|
|
46
|
+
### 1. Module Configuration Loading
|
|
47
|
+
|
|
48
|
+
Load and read full config from {project-root}/_bmad/bmm/config.yaml and resolve:
|
|
49
|
+
|
|
50
|
+
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`
|
|
51
|
+
|
|
52
|
+
### 2. First Step EXECUTION
|
|
53
|
+
|
|
54
|
+
Load, read the full file and then execute `{project-root}/_bmad/bmm/workflows/sync-epics-stories/steps/step-01-init.md` to begin the workflow.
|
package/package.json
CHANGED
/package/bmad/bmm/workflows/4-implementation/code-review/{instructions.xml → instructions.xml.bak}
RENAMED
|
File without changes
|
/package/bmad/bmm/workflows/4-implementation/code-review/{workflow.yaml → workflow.yaml.bak}
RENAMED
|
File without changes
|