@groupby/ai-dev 0.2.1 → 0.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.
Files changed (45) hide show
  1. package/README.md +3 -1
  2. package/dist/index.js +86 -19
  3. package/package.json +4 -4
  4. package/skills/library/implementation-plan/README.md +19 -0
  5. package/skills/library/implementation-plan/SKILL.md +337 -0
  6. package/skills/library/jira-plan/README.md +17 -0
  7. package/skills/library/jira-plan/SKILL.md +163 -0
  8. package/toolsets/rzlv-flow/README.md +54 -9
  9. package/toolsets/rzlv-flow/resources/confluence-file-structure.md +129 -23
  10. package/toolsets/rzlv-flow/resources/sync-state-format.md +109 -0
  11. package/toolsets/rzlv-flow/skills/jira-daily-triage/SKILL.md +13 -5
  12. package/toolsets/rzlv-flow/skills/jira-sprint-status/SKILL.md +28 -1
  13. package/toolsets/rzlv-flow/skills/jira-ticket-focus/SKILL.md +6 -1
  14. package/toolsets/rzlv-flow/skills/jira-wrap-sync/SKILL.md +41 -8
  15. package/skills/skills/README.md +0 -61
  16. package/skills/skills/archived/README.md +0 -3
  17. package/skills/skills/library/README.md +0 -3
  18. package/skills/skills/library/frontend-design/LICENSE.txt +0 -177
  19. package/skills/skills/library/frontend-design/SKILL.md +0 -42
  20. package/teams/teams/brain-studio/skills/code-review/SKILL.md +0 -46
  21. package/toolsets/toolsets/rzlv-flow/README.md +0 -102
  22. package/toolsets/toolsets/rzlv-flow/docs/mcp-setup.md +0 -126
  23. package/toolsets/toolsets/rzlv-flow/resources/README.md +0 -16
  24. package/toolsets/toolsets/rzlv-flow/resources/confluence-file-structure.md +0 -285
  25. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/README.md +0 -19
  26. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/decisions.md +0 -36
  27. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/initiative-overview.md +0 -40
  28. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/strategic-context.md +0 -44
  29. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/technical-architecture.md +0 -48
  30. package/toolsets/toolsets/rzlv-flow/resources/fcmp-protocol.md +0 -331
  31. package/toolsets/toolsets/rzlv-flow/resources/jira-file-structure.md +0 -177
  32. package/toolsets/toolsets/rzlv-flow/resources/sync-state-format.md +0 -318
  33. package/toolsets/toolsets/rzlv-flow/skills/atlassian-orchestrator/SKILL.md +0 -643
  34. package/toolsets/toolsets/rzlv-flow/skills/context-analyst/SKILL.md +0 -265
  35. package/toolsets/toolsets/rzlv-flow/skills/jira-comment/SKILL.md +0 -89
  36. package/toolsets/toolsets/rzlv-flow/skills/jira-daily-triage/SKILL.md +0 -143
  37. package/toolsets/toolsets/rzlv-flow/skills/jira-sprint-status/SKILL.md +0 -143
  38. package/toolsets/toolsets/rzlv-flow/skills/jira-status/SKILL.md +0 -97
  39. package/toolsets/toolsets/rzlv-flow/skills/jira-sync/SKILL.md +0 -148
  40. package/toolsets/toolsets/rzlv-flow/skills/jira-ticket-focus/SKILL.md +0 -245
  41. package/toolsets/toolsets/rzlv-flow/skills/jira-ticket-trace/SKILL.md +0 -112
  42. package/toolsets/toolsets/rzlv-flow/skills/jira-wrap-sync/SKILL.md +0 -260
  43. /package/toolsets/{toolsets/rzlv-flow → rzlv-flow}/docs/getting-started.md +0 -0
  44. /package/toolsets/{toolsets/rzlv-flow → rzlv-flow}/skills/confluence-fetch/SKILL.md +0 -0
  45. /package/toolsets/{toolsets/rzlv-flow → rzlv-flow}/skills/confluence-publish/SKILL.md +0 -0
@@ -1,6 +1,6 @@
1
1
  # Confluence File Structure — Local Page Mirrors
2
2
 
3
- **Pattern:** Dual-mode local mirrors for Confluence pages
3
+ **Pattern:** Leaf Bundle local mirrors for Confluence pages
4
4
 
5
5
  ---
6
6
 
@@ -15,6 +15,30 @@ Both modes follow the FCMP protocol for safe sync operations and preserve manual
15
15
 
16
16
  ---
17
17
 
18
+ ## Leaf Bundle Pattern
19
+
20
+ Every Confluence page is stored as a **directory** containing an `index.md` file — never as a standalone `.md` file. This is called the Leaf Bundle pattern.
21
+
22
+ ### Why Folders, Not Files?
23
+
24
+ - **Child pages** — A Confluence page can have child pages. The folder naturally represents this hierarchy; child pages become subdirectories.
25
+ - **Assets** — Pages may include attachments, images, or diagrams. These are stored alongside `index.md` in the same folder.
26
+ - **Hierarchy expansion** — New child pages can be added without restructuring. A flat file cannot grow into a parent.
27
+
28
+ ### DO NOT / DO
29
+
30
+ ```
31
+ ❌ DO NOT create flat files:
32
+ docs/confluence/rezolve/ENG/strategic-context.md
33
+
34
+ ✅ DO create Leaf Bundle directories:
35
+ docs/confluence/rezolve/ENG/strategic-context/index.md
36
+ ```
37
+
38
+ This rule applies to **all** Confluence page mirrors, in both structured and flexible modes.
39
+
40
+ ---
41
+
18
42
  ## Base Path
19
43
 
20
44
  ```
@@ -37,27 +61,34 @@ docs/confluence/{instance}/{space}/
37
61
  └── {initiative-name}/
38
62
  ├── index.md # Initiative Overview
39
63
  └── {epic-name}/
40
- ├── overview.md
41
- ├── technical-architecture.md
42
- ├── decisions.md
43
- ├── strategic-context.md
44
- ├── research-and-findings.md # Created only if relevant content exists
45
- ├── assumptions.md # Created only if relevant content exists
46
- └── implementation-guidance.md
64
+ ├── overview/
65
+ │ └── index.md
66
+ ├── technical-architecture/
67
+ │ └── index.md
68
+ ├── decisions/
69
+ │ └── index.md
70
+ ├── strategic-context/
71
+ │ └── index.md
72
+ ├── research-and-findings/ # Created only if relevant content exists
73
+ │ └── index.md
74
+ ├── assumptions/ # Created only if relevant content exists
75
+ │ └── index.md
76
+ └── implementation-guidance/
77
+ └── index.md
47
78
  ```
48
79
 
49
80
  ### Page Types
50
81
 
51
- | Page Type | Source | Description |
52
- |-----------|--------|-------------|
53
- | Initiative Overview (`index.md` at initiative root) | Initiative metadata | Top-level overview: goals, epic breakdown, navigation |
54
- | `overview.md` | Epic `_docs/` | High-level epic overview and goals |
55
- | `technical-architecture.md` | Epic `_docs/` | Architecture decisions and technical design |
56
- | `decisions.md` | Epic `_docs/` | Decision log and rationale |
57
- | `strategic-context.md` | Epic `_docs/` | Business context and strategic alignment |
58
- | `research-and-findings.md` | Epic `_docs/` | User research, discoveries, and clarifications* |
59
- | `assumptions.md` | Epic `_docs/` | Assumptions with confidence levels and validation status* |
60
- | `implementation-guidance.md` | Epic `_docs/` | High-value technical guides for development |
82
+ | Page Type | Folder | Source | Description |
83
+ |-----------|--------|--------|-------------|
84
+ | Initiative Overview | `index.md` (at initiative root) | Initiative metadata | Top-level overview: goals, epic breakdown, navigation |
85
+ | Overview | `overview/index.md` | Epic `_docs/` | High-level epic overview and goals |
86
+ | Technical Architecture | `technical-architecture/index.md` | Epic `_docs/` | Architecture decisions and technical design |
87
+ | Decisions | `decisions/index.md` | Epic `_docs/` | Decision log and rationale |
88
+ | Strategic Context | `strategic-context/index.md` | Epic `_docs/` | Business context and strategic alignment |
89
+ | Research & Findings | `research-and-findings/index.md` | Epic `_docs/` | User research, discoveries, and clarifications* |
90
+ | Assumptions | `assumptions/index.md` | Epic `_docs/` | Assumptions with confidence levels and validation status* |
91
+ | Implementation Guidance | `implementation-guidance/index.md` | Epic `_docs/` | High-value technical guides for development |
61
92
 
62
93
  \* Created only if the source material includes relevant content.
63
94
 
@@ -84,10 +115,11 @@ Used for ad-hoc documentation, user-specified locations, and non-epic-based cont
84
115
  ```
85
116
  docs/confluence/{instance}/{space}/
86
117
  └── {user-specified-path}/
87
- └── {page-name}.md
118
+ └── {page-name}/
119
+ └── index.md
88
120
  ```
89
121
 
90
- No predefined structure — adapts to the user's needs.
122
+ No predefined structure beyond the Leaf Bundle requirement — adapts to the user's needs.
91
123
 
92
124
  ### When to Use
93
125
 
@@ -141,15 +173,28 @@ Skills using flexible mode should ask:
141
173
 
142
174
  ---
143
175
 
176
+ ## Confluence Link Format
177
+
178
+ When constructing Confluence URLs:
179
+
180
+ - Replace spaces in page titles with `+`
181
+ - Use the `/wiki/display/{SPACE}/{Title}` format for display links
182
+ - Use the `/wiki/spaces/{SPACE}/pages/{pageId}` format for direct links
183
+
184
+ Example: `https://company.atlassian.net/wiki/display/ENG/Technical+Architecture`
185
+
186
+ ---
187
+
144
188
  ## Page File Format
145
189
 
146
- Each local Confluence mirror file uses YAML frontmatter for sync metadata:
190
+ Each local Confluence mirror file (`index.md` inside a Leaf Bundle directory) uses YAML frontmatter for sync metadata:
147
191
 
148
192
  ```yaml
149
193
  ---
150
194
  sync:
151
195
  confluence_page_id: "123456789"
152
196
  confluence_url: "https://company.atlassian.net/wiki/spaces/ENG/pages/123456789"
197
+ confluence_title: "Technical Architecture"
153
198
  space: "ENG"
154
199
  parent_page_id: "987654321"
155
200
  last_synced: "2025-12-11T10:30:00Z"
@@ -163,6 +208,9 @@ source:
163
208
  jira_ticket: "PROJ-120"
164
209
  doc_type: "technical-architecture"
165
210
  generated_from: "docs/jira/rezolve/PROJ/user-authentication/_docs/technical-architecture.md"
211
+ bmad_docs_referenced:
212
+ - "docs/jira/rezolve/PROJ/PROJ-120-user-auth/_docs/technical-architecture.md"
213
+ jira_initiative_key: "PROJ-100"
166
214
 
167
215
  # For flexible mode
168
216
  # origin: "manual"
@@ -174,6 +222,64 @@ source:
174
222
  Page content in markdown, converted to Confluence storage format during sync.
175
223
  ```
176
224
 
177
- See `sync-state-format.md` for full frontmatter schema details.
225
+ ### Frontmatter Field Reference
226
+
227
+ | Field | Type | Required | Description |
228
+ |-------|------|----------|-------------|
229
+ | `sync.confluence_page_id` | string | After first sync | Confluence page ID |
230
+ | `sync.confluence_url` | string | After first sync | Full page URL |
231
+ | `sync.confluence_title` | string | Yes | Exact title as it appears in Confluence (used for page lookups) |
232
+ | `sync.space` | string | Yes | Confluence space key |
233
+ | `sync.parent_page_id` | string | Yes | Parent page ID in Confluence |
234
+ | `sync.last_synced` | ISO8601 | After first sync | Last sync timestamp |
235
+ | `sync.version` | number | After first sync | Confluence page version for optimistic locking |
236
+ | `sync.remote_updated` | ISO8601 | After first sync | Last remote change timestamp |
237
+ | `mode` | enum | Yes | `structured` or `flexible` |
238
+ | `source.jira_ticket` | string | Structured | Associated Jira ticket key |
239
+ | `source.doc_type` | string | Structured | Page type (overview, technical-architecture, decisions, strategic-context) |
240
+ | `source.generated_from` | string | Structured | Path to the `_docs/` source file |
241
+ | `source.bmad_docs_referenced` | string[] | No | BMAD source docs used to generate the page (traceability) |
242
+ | `source.jira_initiative_key` | string | No | Related Jira initiative key (cross-linking) |
243
+ | `source.origin` | string | Flexible | Origin skill or `manual` |
244
+ | `source.linked_jira` | string | Flexible | Optionally linked Jira ticket |
245
+
246
+ > **Note on field naming:** The source rzlv-flow repo uses flat root-level fields (e.g. `confluence_space_key: "ENG"`). This toolset uses nested fields under `sync.*` for consistency with the Jira file schema. Both conventions represent the same data; skills should follow the nested format documented here.
247
+
248
+ ### Post-Sync Frontmatter Example
249
+
250
+ **Before first sync (draft state):**
251
+ ```yaml
252
+ ---
253
+ sync:
254
+ confluence_title: "Technical Architecture"
255
+ space: "ENG"
256
+ parent_page_id: "987654321"
257
+ mode: "structured"
258
+ source:
259
+ jira_ticket: "PROJ-120"
260
+ doc_type: "technical-architecture"
261
+ generated_from: "docs/jira/rezolve/PROJ/PROJ-120-user-auth/_docs/technical-architecture.md"
262
+ ---
263
+ ```
264
+
265
+ **After first sync (populated by sync operation):**
266
+ ```yaml
267
+ ---
268
+ sync:
269
+ confluence_page_id: "123456789"
270
+ confluence_url: "https://company.atlassian.net/wiki/spaces/ENG/pages/123456789"
271
+ confluence_title: "Technical Architecture"
272
+ space: "ENG"
273
+ parent_page_id: "987654321"
274
+ last_synced: "2025-12-11T10:30:00Z"
275
+ version: 1
276
+ remote_updated: "2025-12-11T10:30:00Z"
277
+ mode: "structured"
278
+ source:
279
+ jira_ticket: "PROJ-120"
280
+ doc_type: "technical-architecture"
281
+ generated_from: "docs/jira/rezolve/PROJ/PROJ-120-user-auth/_docs/technical-architecture.md"
282
+ ---
283
+ ```
178
284
 
179
- <!-- TODO: Pull additional detail from full rzlv-flow repo for Leaf Bundle pattern specifics and doc-type-mapping rules if available -->
285
+ See `sync-state-format.md` for the full frontmatter schema and worked examples.
@@ -113,6 +113,7 @@ Confluence mirror files use this frontmatter:
113
113
  sync:
114
114
  confluence_page_id: "123456789" # Confluence page ID
115
115
  confluence_url: "https://..." # Full page URL
116
+ confluence_title: "Page Title" # Exact title as it appears in Confluence
116
117
  space: "ENG" # Confluence space key
117
118
  parent_page_id: "987654321" # Parent page ID in Confluence
118
119
  last_synced: "2025-12-11T10:30:00Z" # Last sync timestamp
@@ -126,6 +127,9 @@ source:
126
127
  jira_ticket: "PROJ-120" # Associated Jira ticket (optional)
127
128
  doc_type: "technical-architecture" # overview | technical | decisions | strategic
128
129
  generated_from: "docs/jira/.../technical-architecture.md" # Source _docs/ file
130
+ bmad_docs_referenced: # BMAD source docs used (traceability)
131
+ - "docs/jira/.../technical-architecture.md"
132
+ jira_initiative_key: "PROJ-100" # Related Jira initiative (cross-linking)
129
133
 
130
134
  # Flexible mode fields (use instead of structured fields)
131
135
  # origin: "manual" # manual | context-analyst | other skill
@@ -207,3 +211,108 @@ Build a REST API endpoint for user authentication that accepts username/password
207
211
  - Uses existing `UserService` for credential validation
208
212
  - Token signing key stored in environment variables
209
213
  ```
214
+
215
+ ---
216
+
217
+ ## Complete Example: Synced Confluence Page (Structured Mode)
218
+
219
+ This example shows a Confluence page mirror created via the `atlassian-orchestrator` skill from an epic's `_docs/` folder. The file lives at:
220
+
221
+ ```
222
+ docs/confluence/rezolve/ENG/platform-initiative/user-authentication/technical-architecture/index.md
223
+ ```
224
+
225
+ Note the **Leaf Bundle** pattern: the page is a directory (`technical-architecture/`) containing `index.md`, not a flat `.md` file. See `confluence-file-structure.md` for details.
226
+
227
+ ```yaml
228
+ ---
229
+ sync:
230
+ confluence_page_id: "456789012"
231
+ confluence_url: "https://rezolve.atlassian.net/wiki/spaces/ENG/pages/456789012"
232
+ confluence_title: "Technical Architecture — User Authentication"
233
+ space: "ENG"
234
+ parent_page_id: "456789000"
235
+ last_synced: "2025-12-11T10:30:00Z"
236
+ version: 3
237
+ remote_updated: "2025-12-11T09:15:00Z"
238
+
239
+ mode: "structured"
240
+
241
+ source:
242
+ jira_ticket: "AIP-200"
243
+ doc_type: "technical-architecture"
244
+ generated_from: "docs/jira/rezolve/AIP/AIP-200-user-authentication/_docs/technical-architecture.md"
245
+ bmad_docs_referenced:
246
+ - "docs/jira/rezolve/AIP/AIP-200-user-authentication/_docs/technical-architecture.md"
247
+ jira_initiative_key: "AIP-100"
248
+
249
+ orchestrator:
250
+ generated_at: "2025-12-08T14:00:00Z"
251
+ auto_sync: true
252
+ ---
253
+
254
+ # Technical Architecture — User Authentication
255
+
256
+ ## Overview
257
+
258
+ REST API authentication using JWT tokens with bcrypt password hashing and Redis-backed rate limiting.
259
+
260
+ ## Authentication Flow
261
+
262
+ 1. Client sends POST `/api/auth/login` with credentials
263
+ 2. Server validates against UserService
264
+ 3. On success: sign JWT with RS256, return token + expiry
265
+ 4. On failure: increment rate limiter, return 401
266
+
267
+ ## Technology Decisions
268
+
269
+ - **JWT signing:** RS256 with rotating keys (see decisions.md)
270
+ - **Rate limiting:** Redis sliding window, 5 req/min/IP
271
+ - **Password storage:** bcrypt with cost factor 12
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Complete Example: Synced Confluence Page (Flexible Mode)
277
+
278
+ This example shows an ad-hoc page published to Confluence by a developer using the `confluence-publish` skill. The file lives at:
279
+
280
+ ```
281
+ docs/confluence/rezolve/ENG/team-guides/onboarding-guide/index.md
282
+ ```
283
+
284
+ ```yaml
285
+ ---
286
+ sync:
287
+ confluence_page_id: "789012345"
288
+ confluence_url: "https://rezolve.atlassian.net/wiki/spaces/ENG/pages/789012345"
289
+ confluence_title: "Developer Onboarding Guide"
290
+ space: "ENG"
291
+ parent_page_id: "789012000"
292
+ last_synced: "2025-12-12T14:00:00Z"
293
+ version: 1
294
+ remote_updated: "2025-12-12T14:00:00Z"
295
+
296
+ mode: "flexible"
297
+
298
+ source:
299
+ origin: "manual"
300
+ linked_jira: "AIP-300"
301
+ ---
302
+
303
+ # Developer Onboarding Guide
304
+
305
+ Welcome to the team! This guide covers local setup, tooling, and key workflows.
306
+
307
+ ## Local Setup
308
+
309
+ 1. Clone the monorepo
310
+ 2. Run `npm install` in the root
311
+ 3. Copy `.env.example` to `.env` and fill in values
312
+
313
+ ## Key Workflows
314
+
315
+ - **Daily triage:** Use `jira-daily-triage` to start your day
316
+ - **Ticket focus:** Use `jira-ticket-focus` to deep-load a ticket
317
+ - **Wrap up:** Use `jira-wrap-sync` when finishing work
318
+ ```
@@ -40,9 +40,9 @@ Before executing, read these resource files for protocol and structure guidance:
40
40
  ```
41
41
  JQL: project = {PROJECT} AND sprint in openSprints()
42
42
  ```
43
- - Extract the sprint name and ID from the results.
44
- - If no open sprint is found, inform the user and continue without a sprint filter.
45
- - Store the active sprint name and ID for the session.
43
+ - Extract the sprint name, ID, end date, and days remaining from the results.
44
+ - If no open sprint is found, display: "No active sprint detected — Backlog mode" and continue without a sprint filter. In Backlog mode, skip sprint-scoped queries and show only the user's assigned tickets ordered by priority.
45
+ - Store the active sprint name, ID, end date, and days remaining for the session.
46
46
 
47
47
  > **Note:** Sprint data may be stored in custom fields whose names vary by Jira instance. When using MCP to query sprint tickets, inspect the returned fields for sprint information (name, start/end dates, goal). If sprint details are missing from the default field set, request additional fields or use `'*all'` to retrieve all fields.
48
48
 
@@ -90,7 +90,12 @@ Present results using this structure:
90
90
 
91
91
  ```
92
92
  ## 🌅 Your Day — {date}
93
- **Project:** {PROJECT} | **Sprint:** {Sprint Name} ({X}/{Y} tickets complete)
93
+ **Project:** {PROJECT} | **Sprint:** {Sprint Name} | **Ends:** {end_date} ({days_left} days left)
94
+ **Sprint Progress:** {X}/{Y} tickets complete
95
+
96
+ {IF NO SPRINT:}
97
+ ## 🌅 Your Day — {date}
98
+ **Project:** {PROJECT} | **No active sprint detected — Backlog mode**
94
99
 
95
100
  ### 🔥 In Progress (Complete These First)
96
101
  | # | Ticket | Summary | Points | Days Active |
@@ -114,7 +119,10 @@ Present results using this structure:
114
119
  | 5 | PROJ-130 | Performance fix | 5 | Critical |
115
120
 
116
121
  ### ⚠️ Blockers & Flags
117
- - PROJ-120: Waiting on design review (3 days)
122
+ - {TICKET-KEY}: {blocker description} ({n} days)
123
+ - {TICKET-KEY}: {blocker description} ({n} days)
124
+ {IF NO BLOCKERS:}
125
+ ✓ No blockers detected
118
126
 
119
127
  **Recommended Focus:** #1 PROJ-123 (continue in-progress work) or #2 PROJ-124 (fresh start)
120
128
 
@@ -30,7 +30,7 @@ Use MCP to find the active sprint:
30
30
  JQL: project = {PROJECT} AND sprint in openSprints()
31
31
  ```
32
32
 
33
- Extract the sprint name and ID. If no open sprint is found, inform the user and offer to report on a specific sprint or the full backlog.
33
+ Extract the sprint name, ID, start date, end date, and sprint goal (if set). If no open sprint is found, inform the user and offer to report on a specific sprint or the full backlog.
34
34
 
35
35
  > **Note:** Sprint data may be stored in custom fields whose names vary by Jira instance. When using MCP to query sprint tickets, inspect the returned fields for sprint information (name, start/end dates, goal). If sprint details are missing from the default field set, request additional fields or use `'*all'` to retrieve all fields.
36
36
 
@@ -59,6 +59,16 @@ Calculate:
59
59
  - Overall completion percentage (done points / total points, or done count / total count)
60
60
  - Sprint velocity so far (points completed)
61
61
 
62
+ ### Step 4b: Calculate Velocity and Forecast
63
+
64
+ Using the sprint start date, end date, and points completed so far:
65
+
66
+ - **Days elapsed** — business days since sprint start
67
+ - **Days remaining** — business days until sprint end
68
+ - **Ideal velocity** — total points / total sprint days (points/day to finish on time)
69
+ - **Actual velocity** — done points / days elapsed
70
+ - **Forecast** — at current velocity, project whether the sprint will finish on time, ahead, or behind. If behind, estimate the shortfall: "May miss by {n} points"
71
+
62
72
  ### Step 5: Identify Risks
63
73
 
64
74
  Flag potential risks:
@@ -81,6 +91,11 @@ Filter tickets assigned to the current user:
81
91
  ```
82
92
  ## 📊 Sprint Status: {Sprint Name}
83
93
  **Project:** {PROJECT} | **Sprint:** {Sprint Name}
94
+ **Ends:** {end_date} ({days_left} days left)
95
+ {IF SPRINT GOAL SET:}
96
+ **Goal:** {Sprint Goal}
97
+
98
+ ████████████░░░░░░░░ {percent}% Complete
84
99
 
85
100
  ### Progress
86
101
  | Status | Tickets | Story Points |
@@ -92,6 +107,11 @@ Filter tickets assigned to the current user:
92
107
 
93
108
  **Completion:** {percent}% by points ({done_pts}/{total_pts})
94
109
 
110
+ ### Velocity & Forecast
111
+ - **Ideal:** {n} points/day
112
+ - **Actual:** {n} points/day
113
+ - **Forecast:** {On track | Ahead by {n} points | May miss by {n} points}
114
+
95
115
  ### Ticket Breakdown
96
116
  | # | Ticket | Summary | Status | Assignee | Points |
97
117
  |---|--------|---------|--------|----------|--------|
@@ -113,4 +133,11 @@ Filter tickets assigned to the current user:
113
133
  - **Completed:** {n} tickets ({pts} pts)
114
134
  - **In Progress:** {n} tickets ({pts} pts)
115
135
  - **Assigned (To Do):** {n} tickets ({pts} pts)
136
+
137
+ ---
138
+ **Quick Actions:**
139
+ 1. View at-risk tickets in detail
140
+ 2. Focus on blocked items
141
+ 3. Generate standup update (summary for copy/paste)
142
+ 4. Export sprint data as markdown table
116
143
  ```
@@ -25,7 +25,10 @@ Before executing, read these resource files — they are critical for correct be
25
25
  - If the user provides a **number** (e.g. "3"), look it up from the `numbered_ticket_list` stored in conversational context from a prior `jira-daily-triage` run.
26
26
  - If the user provides a **Jira key** (e.g. "PROJ-123"), use it directly.
27
27
  - If the key is **incomplete** (e.g. "123"), prepend the `confirmed_project` key from session context (e.g. "PROJ-123").
28
- - If neither a number mapping nor a project key is available, ask the user for the full ticket key.
28
+ - If neither a number mapping nor a project key is available, attempt fallback detection:
29
+ 1. **Git branch:** Check the current branch name for a `{PROJECT}-{n}` pattern (e.g. `feature/PROJ-123` → project is `PROJ`).
30
+ 2. **Config file:** Check for a `.jira.json` file in the project root containing `{ "project": "PROJ", "instance": "rezolve" }`.
31
+ 3. If neither yields a project key, ask the user for the full ticket key.
29
32
 
30
33
  ### Step 2: Fetch Ticket Details (FCMP Fetch Step)
31
34
 
@@ -35,6 +38,8 @@ Use `mcp_atlassian-rovo_fetch()` to retrieve:
35
38
  - Comments and recent history
36
39
  - Sprint information (use `active_sprint_name` from session context if available)
37
40
  - Linked Confluence documents (if any)
41
+ - **Subtasks** — fetch all subtasks of the ticket via JQL: `parent = {TICKET-KEY} ORDER BY status ASC, priority DESC`
42
+ - **Linked issues** — fetch linked issues (blocks, is blocked by, relates to)
38
43
 
39
44
  **Parent Epic detection** — check in this order:
40
45
 
@@ -40,12 +40,23 @@ Before executing, read these resource files:
40
40
  - Map code changes to acceptance criteria where possible.
41
41
  - Summarize: files changed, insertions, deletions.
42
42
 
43
+ **c) Acceptance criteria progress:**
44
+ - Read the AC list from the ticket file.
45
+ - Based on code changes and commit messages, infer which AC items have been completed.
46
+ - Show checkbox progress:
47
+ ```
48
+ - [x] AC 1 — Completed (matches changes in auth-controller.ts)
49
+ - [x] AC 2 — Completed (matches changes in rate-limiter.ts)
50
+ - [ ] AC 3 — Not yet addressed
51
+ ```
52
+ - Note: this is a best-effort inference. The user confirms the final state.
53
+
43
54
  ### Step 3: Draft Jira Comment
44
55
 
45
- Build a comprehensive comment covering both ticket updates and code progress:
56
+ Build a comprehensive comment with the standardized prefix `[rzlv-flow Update]`:
46
57
 
47
58
  ```
48
- **Work Update:**
59
+ [rzlv-flow Update]
49
60
 
50
61
  {IF TICKET FIELD CHANGES:}
51
62
  **Ticket Updates:**
@@ -61,22 +72,44 @@ Build a comprehensive comment covering both ticket updates and code progress:
61
72
  - {file1}: {brief description}
62
73
  - {file2}: {brief description}
63
74
 
64
- **AC Completed:** {X}/{Y}
65
- **Remaining:** {what's left}
75
+ **Acceptance Criteria:**
76
+ - [x] {completed AC 1}
77
+ - [x] {completed AC 2}
78
+ - [ ] {remaining AC 3}
79
+ **Progress:** {X}/{Y} completed
66
80
 
67
81
  **Next Steps:** {suggested next action}
82
+
83
+ Context: {optional PR link or Confluence doc link}
68
84
  ```
69
85
 
70
- ### Step 4: FCMP Protocol (Before Any Sync)
86
+ ### Step 4: FCMP Preview (Prepare PUSH — Dry Run)
71
87
 
72
- Before executing any write operations, run the full FCMP cycle:
88
+ Before executing any write operations, run the full FCMP cycle and present a dry-run preview:
73
89
 
74
90
  1. **FETCH** — Get the current ticket state from Jira via MCP.
75
91
  2. **COMPARE** — Check for remote changes since last sync (compare `sync.version` and `sync.remote_updated`).
76
92
  3. **MERGE** — If conflicts detected, show a diff of remote changes vs local changes and resolve with the user.
77
- 4. Show the diff to the user and warn if conflicts exist.
93
+ 4. **Preview** — Show a dry-run diff of what will change if the user proceeds:
94
+
95
+ ```
96
+ ### FCMP Preview (Dry Run)
97
+ {IF NO REMOTE CHANGES:}
98
+ ✓ Remote is unchanged since last sync — safe to push.
99
+
100
+ {IF REMOTE CHANGES DETECTED:}
101
+ ⚠️ Remote changes detected since last sync:
102
+ - {field}: {old_value} → {new_value}
103
+
104
+ **Proposed local → remote changes:**
105
+ - Description: {diff summary}
106
+ - Story Points: {old} → {new}
107
+ - Status: {current} (no change)
108
+
109
+ Proceed with sync? (y/n)
110
+ ```
78
111
 
79
- Only proceed to the action menu after the FCMP cycle completes.
112
+ Only proceed to the action menu after the FCMP preview is confirmed.
80
113
 
81
114
  ### Step 5: Present Multi-Select Action Menu
82
115
 
@@ -1,61 +0,0 @@
1
- # Skills
2
-
3
- This folder manages all skills, archived skills, and examples/instructions on using them.
4
-
5
- All skills in this `skills/library/` should represent _generally useful skills_ that might be used across teams.
6
-
7
- If any particular skill goes missing, note that it may have simply been archived (see [the archive](skills/archived/)) and may no longer be recommended for use. Ideally skills are not simply deleted from this repository, since others may be expecting them to be there.
8
-
9
- ## Usage
10
-
11
- When developing a project, it is generally recommended to commit any skills you use to that codebase so that others may use them as well. Skills are stored as folders and can include many files, but need to include at least a SKILL.md file. Normal locations are:
12
-
13
- * **Claude Code**: `.claude/skills/<skill-name>/`
14
- * **Copilot**: `.github/skills/<skill-name>/`
15
- * **Codex**: `.agents/skills/<skill-name>/`
16
- * Codex allows for storing skills in [many places](https://developers.openai.com/codex/skills#where-to-save-skills), including outside the repo.
17
-
18
- Note that each folder must contain a SKILL.md file, and may optionally contain other arbitrary files:
19
- * Other markdown files that describe processes
20
- * Script files that allow for deterministic coding
21
- * ...plus other resources required by either
22
-
23
- All of the above should be referenced directly by their SKILL.md file, with an explanation on when to read or use them.
24
-
25
- ## Recommended usage
26
-
27
- However, to allow everyone to use skills regardless of their LLM client of choice, it can be valuable to do the following:
28
-
29
- * Store the skill folder in a place like `docs/ai/skills/<skill-name>/`
30
- * Reference the skill in the folder for each relevant client.
31
-
32
- For example:
33
-
34
- In `docs/ai/skills/frontend-design/SKILL.md`:
35
-
36
- ```
37
- ---
38
- name: frontend-design
39
- description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
40
- ---
41
-
42
- This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
43
-
44
- The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
45
-
46
- ...
47
- ```
48
-
49
- Then, in `.github/skills/frontend-design/SKILL.md` (and anywhere else needed):
50
-
51
- ```
52
- ---
53
- name: frontend-design
54
- description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
55
- license: Complete terms in LICENSE.txt
56
- ---
57
-
58
- See `docs/ai/skills/frontend-design/SKILL.md` and follow closely.
59
- ```
60
-
61
- Note that we MUST include the skill boilerplate in any official skills location (eg. `.github/skills/`, etc.) to enable discovery and usage. We then copy the entire skill into `docs/ai/skills/` to leave it intact, though we don't technically need the boilerplate.
@@ -1,3 +0,0 @@
1
- # Skills archive
2
-
3
- Any deprecated/archived skills should be moved here for discoverability purposes.
@@ -1,3 +0,0 @@
1
- # Skills library
2
-
3
- This folder contains skill folders that can be easily copied into project repos.