@groupby/ai-dev 0.1.1 → 0.2.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 (50) hide show
  1. package/README.md +9 -0
  2. package/dist/index.js +260 -21
  3. package/package.json +15 -10
  4. package/toolsets/rzlv-flow/README.md +57 -0
  5. package/toolsets/rzlv-flow/docs/mcp-setup.md +126 -0
  6. package/toolsets/rzlv-flow/resources/README.md +16 -0
  7. package/toolsets/rzlv-flow/resources/confluence-file-structure.md +179 -0
  8. package/toolsets/rzlv-flow/resources/confluence-page-templates/README.md +19 -0
  9. package/toolsets/rzlv-flow/resources/confluence-page-templates/decisions.md +36 -0
  10. package/toolsets/rzlv-flow/resources/confluence-page-templates/initiative-overview.md +40 -0
  11. package/toolsets/rzlv-flow/resources/confluence-page-templates/strategic-context.md +44 -0
  12. package/toolsets/rzlv-flow/resources/confluence-page-templates/technical-architecture.md +48 -0
  13. package/toolsets/rzlv-flow/resources/fcmp-protocol.md +331 -0
  14. package/toolsets/rzlv-flow/resources/jira-file-structure.md +177 -0
  15. package/toolsets/rzlv-flow/resources/sync-state-format.md +209 -0
  16. package/toolsets/rzlv-flow/skills/atlassian-orchestrator/SKILL.md +643 -0
  17. package/toolsets/rzlv-flow/skills/context-analyst/SKILL.md +265 -0
  18. package/toolsets/rzlv-flow/skills/jira-comment/SKILL.md +89 -0
  19. package/toolsets/rzlv-flow/skills/jira-daily-triage/SKILL.md +135 -0
  20. package/toolsets/rzlv-flow/skills/jira-sprint-status/SKILL.md +116 -0
  21. package/toolsets/rzlv-flow/skills/jira-status/SKILL.md +97 -0
  22. package/toolsets/rzlv-flow/skills/jira-sync/SKILL.md +148 -0
  23. package/toolsets/rzlv-flow/skills/jira-ticket-focus/SKILL.md +240 -0
  24. package/toolsets/rzlv-flow/skills/jira-ticket-trace/SKILL.md +112 -0
  25. package/toolsets/rzlv-flow/skills/jira-wrap-sync/SKILL.md +227 -0
  26. package/toolsets/toolsets/rzlv-flow/README.md +102 -0
  27. package/toolsets/toolsets/rzlv-flow/docs/getting-started.md +102 -0
  28. package/toolsets/toolsets/rzlv-flow/docs/mcp-setup.md +126 -0
  29. package/toolsets/toolsets/rzlv-flow/resources/README.md +16 -0
  30. package/toolsets/toolsets/rzlv-flow/resources/confluence-file-structure.md +285 -0
  31. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/README.md +19 -0
  32. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/decisions.md +36 -0
  33. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/initiative-overview.md +40 -0
  34. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/strategic-context.md +44 -0
  35. package/toolsets/toolsets/rzlv-flow/resources/confluence-page-templates/technical-architecture.md +48 -0
  36. package/toolsets/toolsets/rzlv-flow/resources/fcmp-protocol.md +331 -0
  37. package/toolsets/toolsets/rzlv-flow/resources/jira-file-structure.md +177 -0
  38. package/toolsets/toolsets/rzlv-flow/resources/sync-state-format.md +318 -0
  39. package/toolsets/toolsets/rzlv-flow/skills/atlassian-orchestrator/SKILL.md +643 -0
  40. package/toolsets/toolsets/rzlv-flow/skills/confluence-fetch/SKILL.md +189 -0
  41. package/toolsets/toolsets/rzlv-flow/skills/confluence-publish/SKILL.md +178 -0
  42. package/toolsets/toolsets/rzlv-flow/skills/context-analyst/SKILL.md +265 -0
  43. package/toolsets/toolsets/rzlv-flow/skills/jira-comment/SKILL.md +89 -0
  44. package/toolsets/toolsets/rzlv-flow/skills/jira-daily-triage/SKILL.md +143 -0
  45. package/toolsets/toolsets/rzlv-flow/skills/jira-sprint-status/SKILL.md +143 -0
  46. package/toolsets/toolsets/rzlv-flow/skills/jira-status/SKILL.md +97 -0
  47. package/toolsets/toolsets/rzlv-flow/skills/jira-sync/SKILL.md +148 -0
  48. package/toolsets/toolsets/rzlv-flow/skills/jira-ticket-focus/SKILL.md +245 -0
  49. package/toolsets/toolsets/rzlv-flow/skills/jira-ticket-trace/SKILL.md +112 -0
  50. package/toolsets/toolsets/rzlv-flow/skills/jira-wrap-sync/SKILL.md +260 -0
@@ -0,0 +1,265 @@
1
+ ---
2
+ name: context-analyst
3
+ description: Transform meeting transcripts, notes, or unstructured input into structured context documents. Extracts key decisions, action items, requirements, and stakeholder positions. Produces documents ready for PM review and handoff to other skills (like atlassian-orchestrator for Jira/Confluence creation). Use when you have raw meeting notes, transcripts, or brainstorming output that needs to be structured.
4
+ ---
5
+
6
+ Transform unstructured input — meeting transcripts, notes, brainstorming output, audio summaries — into structured context documents with clear decisions, action items, requirements, assumptions with confidence levels, and stakeholder positions. The absolute priority is retention of ALL relevant discussion nuances, assumptions, and explicit statements — even at the expense of brevity. Output is ready for PM review and can be handed off to `atlassian-orchestrator` for Jira/Confluence creation.
7
+
8
+ ## Requirements
9
+
10
+ No MCP servers required. This skill works with any LLM client.
11
+
12
+ Optional: Atlassian MCP (`atlassian-rovo`) if you want to immediately create Jira/Confluence structures from the output. See the rzlv-flow toolset README for setup.
13
+
14
+ ## Core Principles
15
+
16
+ - **Context retention is paramount** — never aggressively summarize. Preserve the "how" of discussions, not just the "what."
17
+ - **Always create a file** — never dump processed output only in chat. The context document must be saved to a file for downstream use.
18
+ - **Preserve speaker attribution** — direct quotes preserve intent better than paraphrasing. Attribute positions, decisions, and assumptions to speakers.
19
+ - **Flag uncertainty explicitly** — unresolved debates and open questions are valuable signal, not noise.
20
+ - **Every assumption deserves documentation** — with confidence level (High/Medium/Low) and speaker attribution.
21
+
22
+ ## Resources to Load
23
+
24
+ None required — this skill is standalone.
25
+
26
+ Optionally, if the user wants output placed in the Jira mirror structure, read:
27
+ - `docs/ai/resources/jira-file-structure.md` — for file placement rules
28
+
29
+ ## Process
30
+
31
+ ### Step 1: Accept Input
32
+
33
+ Accept the source material in any of these forms:
34
+
35
+ - **Pasted text** — User pastes meeting transcript, notes, or other unstructured text directly into the conversation.
36
+ - **File reference** — User points to a file containing the source material (e.g. "analyze the notes in `meeting-notes/2025-04-03.md`").
37
+ - **Multiple sources** — User provides several files or snippets to combine into one context document.
38
+
39
+ If the input is unclear or empty, ask:
40
+
41
+ ```
42
+ What would you like me to analyze? You can:
43
+ 1. Paste meeting notes or a transcript here
44
+ 2. Point me to a file (e.g. "meeting-notes/standup.md")
45
+ 3. Describe the meeting or discussion to capture
46
+
47
+ Choose or paste your content:
48
+ ```
49
+
50
+ ### Step 2: Identify Source Metadata
51
+
52
+ Before analyzing, capture metadata about the source:
53
+
54
+ - **Title/topic** — What was the meeting or discussion about? Infer from content or ask.
55
+ - **Date** — When did this occur? Extract from the content or use today's date.
56
+ - **Participants** — Who was involved? Extract names mentioned in the content.
57
+ - **Key contributors** — Identify the 2-3 most active participants.
58
+ - **Source type** — Transcript, notes, brainstorm, audio summary, etc. Infer from format.
59
+
60
+ ### Step 3: Noise Filtering
61
+
62
+ Apply minimal filtering before analysis:
63
+
64
+ - **Remove ONLY:** Phatic communication ("hello", "how are you"), social pleasantries, audio/connection technical issues ("can you hear me?", "you're on mute").
65
+ - **RETAIN ALL:** Product discussions, scope discussions, technical discussions, UX discussions, disagreements, tentative ideas, and "thinking out loud" sections. When in doubt, retain.
66
+
67
+ ### Step 4: Extract and Structure
68
+
69
+ Analyze the input and extract the following categories. Not every category will be present in every input — include only sections that have content.
70
+
71
+ **Initial Framing & Goals:**
72
+ - Synthesize introductory remarks — what problem is being discussed and why now?
73
+ - Capture the business case if stated.
74
+ - Identify the high-level goal of the meeting.
75
+
76
+ **Problem and User Context:**
77
+ - User needs with speaker attribution and direct quotes.
78
+ - Edge cases and historical context discussed.
79
+ - Target users or personas mentioned.
80
+
81
+ **Key Decisions:**
82
+ - Identify explicit decisions ("we decided...", "the decision is...", "agreed to...")
83
+ - Identify implicit decisions (consensus reached, directions chosen)
84
+ - For each decision, capture the outcome and rationale
85
+ - Quote the relevant source text for traceability
86
+
87
+ **Action Items:**
88
+ - Identify tasks assigned or volunteered ("I'll do...", "can you...", "{name} will...")
89
+ - Capture the owner if mentioned
90
+ - Capture any deadlines or timeframes mentioned
91
+ - Mark as checklist items for easy tracking
92
+
93
+ **Requirements:**
94
+ - Identify functional requirements discussed
95
+ - Identify non-functional requirements (performance, security, scalability)
96
+ - Identify constraints or limitations mentioned (security, compliance, tech stack)
97
+ - Distinguish between confirmed requirements and proposed/tentative ones
98
+
99
+ **Assumptions:**
100
+ - Capture every assumption — both explicit ("I'm assuming...") and inferred from context.
101
+ - For each assumption, document:
102
+ - **Type:** Explicit (speaker stated it) or Inferred (analyst detected it)
103
+ - **Speaker:** Who made or implied this assumption
104
+ - **Confidence:** High (80%+), Medium (50-80%), or Low (<50%)
105
+ - **Impact:** What breaks if this assumption is wrong
106
+
107
+ **Open Questions:**
108
+ - Identify unresolved questions raised during the discussion
109
+ - Identify items that were deferred ("we'll discuss later", "needs more research")
110
+ - Capture who is responsible for following up, if mentioned
111
+ - Include the original quote where possible
112
+
113
+ **Stakeholder Positions:**
114
+ - Track individual viewpoints, concerns, and preferences with speaker names
115
+ - Note any disagreements or tensions
116
+ - Capture context for why someone holds a position
117
+
118
+ **Solution Discussion & Technical Details:**
119
+ - Proposed components/approaches with speaker attribution
120
+ - Architecture decisions or preferences discussed
121
+ - Technology choices or constraints
122
+ - Integration requirements
123
+ - Performance targets or SLAs mentioned
124
+
125
+ ### Step 5: Produce Context Document
126
+
127
+ Generate a structured markdown document with the extracted content using the output format below.
128
+
129
+ ### Step 6: Save Output
130
+
131
+ Determine where to save the context document:
132
+
133
+ 1. **If the user specifies a path** — Save there.
134
+ 2. **If a Jira project context exists** — Offer to save in the Jira mirror structure:
135
+ ```
136
+ docs/jira/{instance}/{project}/_context/{date}-{topic-slug}.md
137
+ ```
138
+ 3. **Default** — Ask the user:
139
+ ```
140
+ Where should I save this context document?
141
+ 1. Specify a file path
142
+ 2. Save to project context folder (docs/jira/.../_context/)
143
+ 3. Don't save — just display it
144
+
145
+ Choose [3]:
146
+ ```
147
+
148
+ If the target path already exists, warn before overwriting:
149
+ ```
150
+ ⚠️ File already exists: {path}
151
+ 1. Overwrite
152
+ 2. Save as {path-v2}
153
+ 3. Cancel
154
+
155
+ Choose [2]:
156
+ ```
157
+
158
+ ### Step 7: Suggest Follow-up
159
+
160
+ Based on what was extracted, suggest relevant next steps using other skills:
161
+
162
+ - **If requirements and technical details were identified:**
163
+ "Use `atlassian-orchestrator` to create an epic structure with documentation from this context."
164
+
165
+ - **If action items map to Jira tickets:**
166
+ "Use `atlassian-orchestrator` to create Jira stories from the identified action items."
167
+
168
+ - **If decisions should be documented in Confluence:**
169
+ "Use `atlassian-orchestrator` (Confluence sync — flexible mode) to publish this document to Confluence."
170
+
171
+ ## Output Format
172
+
173
+ ```
174
+ # {Feature/Topic Name} — Meeting Context Document
175
+
176
+ ## Meeting Metadata
177
+ | Field | Value |
178
+ |-------|-------|
179
+ | **Meeting Name** | {meeting name or topic} |
180
+ | **Date** | {date} |
181
+ | **Participants** | {alphabetical list} |
182
+ | **Key Contributors** | {top 2-3 most active names} |
183
+ | **Source Type** | {Transcript / Notes / Audio Summary / etc.} |
184
+
185
+ ---
186
+
187
+ {INCLUDE ONLY SECTIONS THAT HAVE CONTENT:}
188
+
189
+ ## Initial Framing & High-Level Goal
190
+ {Synthesis of introductory remarks and business case}
191
+
192
+ ## Problem and User Context
193
+
194
+ ### User Needs
195
+ {FOR EACH KEY POINT WITH SPEAKER:}
196
+ * **{Speaker Name}:** "{quote or detailed summary}"
197
+
198
+ ### Edge Cases & Historical Context
199
+ {FOR EACH ITEM:}
200
+ * {Specific scenario or historical context discussed}
201
+
202
+ ## Solution Discussion
203
+
204
+ ### Proposed Components
205
+ | Component | Description | Speaker |
206
+ |-----------|-------------|---------|
207
+ | {Component A} | {description} | {speaker} |
208
+ | {Component B} | {description} | {speaker} |
209
+
210
+ ### Constraints Identified
211
+ * **Security/Compliance:** {specific mentions}
212
+ * **Performance:** {metrics or concerns}
213
+ * **Technology Stack:** {platforms, languages, constraints}
214
+
215
+ ## Decisions Made
216
+ | Decision | Outcome | Context | Speaker |
217
+ |----------|---------|---------|---------|
218
+ | {Decision 1} | {final outcome} | {why/rationale} | {speaker} |
219
+
220
+ ## Assumptions
221
+ | Assumption | Type | Speaker | Confidence | Impact if Wrong |
222
+ |------------|------|---------|------------|----------------|
223
+ | {Assumption 1} | Explicit/Inferred | {name} | High/Medium/Low | {what breaks} |
224
+
225
+ ## Action Items
226
+ {FOR EACH ACTION:}
227
+ - [ ] {Action description} {IF OWNER:}(Owner: {person}) {IF DEADLINE:}— Due: {date/timeframe}
228
+
229
+ ## Requirements
230
+ **Confirmed:**
231
+ {FOR EACH CONFIRMED REQUIREMENT:}
232
+ - {Requirement description}
233
+
234
+ **Proposed / Tentative:**
235
+ {FOR EACH PROPOSED REQUIREMENT:}
236
+ - {Requirement description} — needs confirmation
237
+
238
+ ## Open Questions
239
+ {FOR EACH QUESTION:}
240
+ * **{Question}:** "{original quote or summary}" — {Speaker}
241
+
242
+ ## Stakeholder Positions
243
+ {FOR EACH PERSON WITH A NOTABLE POSITION:}
244
+ - **{Person}:** {Position or concern summary}
245
+
246
+ ---
247
+
248
+ ## Suggested Next Steps
249
+ {Based on extracted content:}
250
+ 1. {Actionable suggestion, potentially referencing other skills}
251
+ 2. {Additional suggestion}
252
+
253
+ ---
254
+ *Generated by: context-analyst skill*
255
+ *Source: {filename or "pasted input"}*
256
+ ```
257
+
258
+ ## Session Context
259
+
260
+ After running, update conversational context with:
261
+
262
+ - **last_context_document_path** — Where the document was saved (if saved)
263
+ - **last_context_document_topic** — The topic/title of the document
264
+ - **context_action_items_count** — Number of action items extracted (useful for follow-up)
265
+ - **context_assumptions_count** — Number of assumptions captured (useful for PM review)
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: jira-comment
3
+ description: Add a comment to a Jira ticket with FCMP sync safety. Fetches current ticket state first, shows any new comments since last sync, confirms the comment to add, then pushes via MCP. Use when you want to add a comment to a Jira ticket.
4
+ ---
5
+
6
+ Add a comment to a Jira ticket with sync safety. Follows the FCMP protocol — fetches the current ticket state and recent comments before writing, so you have full context and avoid surprises.
7
+
8
+ ## Requirements
9
+
10
+ Requires: Atlassian MCP (`atlassian-rovo`). See the rzlv-flow toolset README for setup.
11
+
12
+ ## Resources to Load
13
+
14
+ Before executing, read this resource file:
15
+
16
+ - `docs/ai/resources/fcmp-protocol.md` — follow the FCMP protocol for the comment operation
17
+
18
+ ## Process
19
+
20
+ ### Step 1: Get Ticket Key and Comment
21
+
22
+ - Use the `focused_ticket` from conversation context if available.
23
+ - Otherwise, ask the user for the ticket key.
24
+ - Get the comment text from the user. If not provided, ask: "What would you like to comment?"
25
+
26
+ ### Step 2: FETCH — Get Current State
27
+
28
+ Fetch the current ticket state via `mcp_atlassian-rovo_fetch()`:
29
+
30
+ - Current status, assignee, summary (brief context)
31
+ - All comments — especially any added since the last sync
32
+
33
+ ### Step 3: Show New Comments
34
+
35
+ Compare the fetched comments against the last known state (from the local `{TICKET-KEY}.md` file's `sync.last_synced` timestamp, if available).
36
+
37
+ If there are new comments from others since the last sync, display them:
38
+
39
+ ```
40
+ ### New Comments Since Last Sync
41
+ - **{author}** ({time ago}): "{comment excerpt}"
42
+ - **{author}** ({time ago}): "{comment excerpt}"
43
+ ```
44
+
45
+ This ensures the user has full context before adding their own comment.
46
+
47
+ ### Step 4: Confirm Comment
48
+
49
+ Present the comment to be added and ask for confirmation:
50
+
51
+ ```
52
+ ### Comment to Add on {TICKET-KEY}
53
+ {comment text}
54
+
55
+ Add this comment? (y/n/edit)
56
+ ```
57
+
58
+ - **y** — proceed to push
59
+ - **n** — cancel
60
+ - **edit** — let the user revise the comment text
61
+
62
+ ### Step 5: PUSH — Add Comment
63
+
64
+ Push the comment via MCP.
65
+
66
+ - On success: confirm with the timestamp.
67
+ - On failure: report the error and preserve the comment text so the user can retry.
68
+
69
+ ### Step 6: Update Local State
70
+
71
+ If a local `{TICKET-KEY}.md` file exists, update `sync.last_synced` to the current timestamp.
72
+
73
+ ## Output Format
74
+
75
+ ```
76
+ ## 💬 Comment: {TICKET-KEY}
77
+
78
+ {IF NEW COMMENTS FOUND:}
79
+ ### New Comments Since Last Sync
80
+ - **{author}** ({time ago}): "{comment excerpt}"
81
+
82
+ ### Your Comment
83
+ {comment text}
84
+
85
+ Add this comment? (y/n/edit)
86
+
87
+ {AFTER PUSH:}
88
+ ✓ Comment added to {TICKET-KEY} at {timestamp}
89
+ ```
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: jira-daily-triage
3
+ description: Start your day with intelligent Jira ticket triage. Confirms your project and sprint, fetches prioritized tickets grouped by status, identifies blockers, and recommends what to focus on. Use when starting your workday, switching projects, or needing a prioritized view of your sprint.
4
+ ---
5
+
6
+ Daily ticket triage and sprint planning. Connects to Jira via MCP, detects the active sprint, fetches and prioritizes your tickets, and presents an actionable overview with numbered ticket selection.
7
+
8
+ ## Requirements
9
+
10
+ Requires: Atlassian MCP (`atlassian-rovo`). See the rzlv-flow toolset README for setup.
11
+
12
+ ## Resources to Load
13
+
14
+ Before executing, read these resource files for protocol and structure guidance:
15
+
16
+ - `docs/ai/resources/fcmp-protocol.md` — follow read protocols for all Jira operations
17
+ - `docs/ai/resources/jira-file-structure.md` — understand the local file structure
18
+
19
+ ## Process
20
+
21
+ ### Step 1: Confirm Project
22
+
23
+ - Check the conversation for a previously confirmed Jira project key.
24
+ - If a project is known from prior context, offer to continue with it or switch:
25
+ ```
26
+ Select project for this session:
27
+ 1. Continue with {PROJECT} (default)
28
+ 2. Use a different project
29
+
30
+ Choose [1]:
31
+ ```
32
+ - If the user enters "1" or presses Enter, use the default.
33
+ - If the user enters "2", ask: "Enter project key:"
34
+ - If the user provides a project key directly (e.g. "PROJ"), use it.
35
+ - Store the confirmed project for all subsequent commands in this session.
36
+
37
+ ### Step 2: Detect Active Sprint
38
+
39
+ - Use MCP to search for the active sprint in the confirmed project:
40
+ ```
41
+ JQL: project = {PROJECT} AND sprint in openSprints()
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.
46
+
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
+
49
+ ### Step 3: Fetch Tickets in Priority Order
50
+
51
+ Run three JQL queries via `mcp_atlassian-rovo_search()`:
52
+
53
+ **a) Sprint tickets assigned to me** (highest priority):
54
+ ```
55
+ project = {PROJECT} AND sprint in openSprints() AND assignee = currentUser()
56
+ ORDER BY status ASC, priority DESC
57
+ ```
58
+ Group results by status: "In Progress" first, then "To Do" / "Open".
59
+
60
+ **b) Unassigned sprint tickets:**
61
+ ```
62
+ project = {PROJECT} AND sprint in openSprints() AND assignee is EMPTY
63
+ ORDER BY priority DESC
64
+ ```
65
+
66
+ **c) High-priority backlog — my assignments (top 3):**
67
+ ```
68
+ project = {PROJECT} AND assignee = currentUser() AND sprint is EMPTY
69
+ ORDER BY priority DESC
70
+ ```
71
+ Limit to 3 tickets. Exclude any tickets already in sprint results.
72
+
73
+ ### Step 4: Triage and Present
74
+
75
+ - Calculate sprint progress metrics (tickets done / total tickets).
76
+ - Flag blockers or stale tickets (no updates for 3+ days).
77
+ - Identify quick wins (low-point tickets in "To Do") vs deep work (high-point "In Progress").
78
+ - Recommend a focus ticket based on status and priority:
79
+ - Prefer continuing "In Progress" tickets over starting new ones.
80
+ - Among "To Do" tickets, prefer higher priority and lower story points.
81
+
82
+ ### Step 5: Assign Numbered List
83
+
84
+ - Assign a sequential number to every ticket across all sections (1, 2, 3, ...).
85
+ - The numbered mapping persists in conversational context so that subsequent commands (e.g. `jira-ticket-focus`) can accept a number instead of a full ticket key.
86
+
87
+ ## Output Format
88
+
89
+ Present results using this structure:
90
+
91
+ ```
92
+ ## 🌅 Your Day — {date}
93
+ **Project:** {PROJECT} | **Sprint:** {Sprint Name} ({X}/{Y} tickets complete)
94
+
95
+ ### 🔥 In Progress (Complete These First)
96
+ | # | Ticket | Summary | Points | Days Active |
97
+ |---|--------|---------|--------|-------------|
98
+ | 1 | PROJ-123 | Backend API endpoint | 3 | 2d |
99
+
100
+ ### 📋 Sprint — Ready to Start
101
+ | # | Ticket | Summary | Points | Priority |
102
+ |---|--------|---------|--------|----------|
103
+ | 2 | PROJ-124 | User validation | 2 | High |
104
+ | 3 | PROJ-125 | Error handling | 1 | Medium |
105
+
106
+ ### 🆘 Sprint — Needs Assignment
107
+ | # | Ticket | Summary | Points | Priority |
108
+ |---|--------|---------|--------|----------|
109
+ | 4 | PROJ-126 | Integration test | 3 | High |
110
+
111
+ ### 📌 High Priority Backlog (Top 3)
112
+ | # | Ticket | Summary | Points | Priority |
113
+ |---|--------|---------|--------|----------|
114
+ | 5 | PROJ-130 | Performance fix | 5 | Critical |
115
+
116
+ ### ⚠️ Blockers & Flags
117
+ - PROJ-120: Waiting on design review (3 days)
118
+
119
+ **Recommended Focus:** #1 PROJ-123 (continue in-progress work) or #2 PROJ-124 (fresh start)
120
+
121
+ Type a number (1-5) to focus on that ticket, or say "adjust" to reprioritize.
122
+ ```
123
+
124
+ Omit any section that has no tickets (e.g. skip "Needs Assignment" if all sprint tickets are assigned).
125
+
126
+ ## Session Context
127
+
128
+ After running, remember the following in conversational context for subsequent commands:
129
+
130
+ - **confirmed_project** — The Jira project key
131
+ - **active_sprint_name** — The detected sprint name
132
+ - **active_sprint_id** — The sprint ID
133
+ - **numbered_ticket_list** — Mapping of display numbers to Jira ticket keys
134
+
135
+ These values should be reused by other skills (e.g. `jira-ticket-focus`) without re-prompting the user.
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: jira-sprint-status
3
+ description: Generate a sprint status report with completion metrics. Fetches all sprint tickets, groups by status, calculates progress percentages, identifies risks and blockers, and summarizes your personal contribution. Use when you need a sprint overview or standup preparation.
4
+ ---
5
+
6
+ Sprint status report with completion metrics. Fetches all tickets in the active sprint, groups them by status, calculates progress (ticket count and story points), flags risks and blockers, and highlights your personal contribution — useful for standups or mid-sprint check-ins.
7
+
8
+ ## Requirements
9
+
10
+ Requires: Atlassian MCP (`atlassian-rovo`). See the rzlv-flow toolset README for setup.
11
+
12
+ ## Resources to Load
13
+
14
+ Before executing, read this resource file:
15
+
16
+ - `docs/ai/resources/fcmp-protocol.md` — follow read protocols for Jira fetch operations
17
+
18
+ ## Process
19
+
20
+ ### Step 1: Confirm Project
21
+
22
+ - Use `confirmed_project` from conversation context (set by `jira-daily-triage`) if available.
23
+ - Otherwise, ask the user for their Jira project key.
24
+
25
+ ### Step 2: Detect Active Sprint
26
+
27
+ Use MCP to find the active sprint:
28
+
29
+ ```
30
+ JQL: project = {PROJECT} AND sprint in openSprints()
31
+ ```
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.
34
+
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
+
37
+ ### Step 3: Fetch All Sprint Tickets
38
+
39
+ Fetch all tickets in the sprint via `mcp_atlassian-rovo_search()`:
40
+
41
+ ```
42
+ JQL: project = {PROJECT} AND sprint in openSprints() ORDER BY status ASC, priority DESC
43
+ ```
44
+
45
+ For each ticket, collect: key, summary, status, assignee, story points, priority, last updated date.
46
+
47
+ ### Step 4: Group and Calculate Metrics
48
+
49
+ Group tickets by status category:
50
+
51
+ - **Done** — tickets in terminal/completed statuses
52
+ - **In Progress** — tickets actively being worked on
53
+ - **To Do** — tickets not yet started
54
+ - **Blocked** — tickets flagged or with blocker labels (if detectable)
55
+
56
+ Calculate:
57
+ - Ticket count per group
58
+ - Story points per group (sum)
59
+ - Overall completion percentage (done points / total points, or done count / total count)
60
+ - Sprint velocity so far (points completed)
61
+
62
+ ### Step 5: Identify Risks
63
+
64
+ Flag potential risks:
65
+
66
+ - **Stale tickets:** "In Progress" tickets with no updates for 3+ days.
67
+ - **Unassigned work:** Sprint tickets with no assignee.
68
+ - **High-point items in To Do:** Large stories that haven't started yet (risk of not completing in sprint).
69
+ - **Scope indicators:** Compare total points against typical sprint velocity if known.
70
+
71
+ ### Step 6: Summarize Personal Contribution
72
+
73
+ Filter tickets assigned to the current user:
74
+
75
+ - Tickets completed this sprint
76
+ - Tickets currently in progress
77
+ - Points completed vs total assigned
78
+
79
+ ## Output Format
80
+
81
+ ```
82
+ ## 📊 Sprint Status: {Sprint Name}
83
+ **Project:** {PROJECT} | **Sprint:** {Sprint Name}
84
+
85
+ ### Progress
86
+ | Status | Tickets | Story Points |
87
+ |--------|---------|-------------|
88
+ | Done | {n} | {pts} |
89
+ | In Progress | {n} | {pts} |
90
+ | To Do | {n} | {pts} |
91
+ | **Total** | **{n}** | **{pts}** |
92
+
93
+ **Completion:** {percent}% by points ({done_pts}/{total_pts})
94
+
95
+ ### Ticket Breakdown
96
+ | # | Ticket | Summary | Status | Assignee | Points |
97
+ |---|--------|---------|--------|----------|--------|
98
+ | 1 | PROJ-101 | Feature A | Done | @user1 | 3 |
99
+ | 2 | PROJ-102 | Feature B | In Progress | @user2 | 5 |
100
+ | 3 | PROJ-103 | Feature C | To Do | Unassigned | 2 |
101
+
102
+ ### ⚠️ Risks
103
+ {IF STALE TICKETS:}
104
+ - **Stale:** {TICKET-KEY} — In Progress, no update for {n} days
105
+ {IF UNASSIGNED:}
106
+ - **Unassigned:** {TICKET-KEY} — {summary} ({points} pts)
107
+ {IF LARGE ITEMS NOT STARTED:}
108
+ - **At Risk:** {TICKET-KEY} — {points} pts, not started yet
109
+ {IF NO RISKS:}
110
+ ✓ No risks detected
111
+
112
+ ### My Contribution
113
+ - **Completed:** {n} tickets ({pts} pts)
114
+ - **In Progress:** {n} tickets ({pts} pts)
115
+ - **Assigned (To Do):** {n} tickets ({pts} pts)
116
+ ```
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: jira-status
3
+ description: Change a Jira ticket's status with transition validation and FCMP sync safety. Fetches current state, verifies status hasn't changed remotely, shows available transitions as a numbered list, and executes the selected transition. Use when you want to move a Jira ticket to a different status.
4
+ ---
5
+
6
+ Transition a Jira ticket's status with sync safety. Follows the FCMP protocol — fetches the current state, verifies no remote status change since last sync, presents valid transitions as a numbered list, and executes the selected transition via MCP.
7
+
8
+ ## Requirements
9
+
10
+ Requires: Atlassian MCP (`atlassian-rovo`). See the rzlv-flow toolset README for setup.
11
+
12
+ ## Resources to Load
13
+
14
+ Before executing, read this resource file:
15
+
16
+ - `docs/ai/resources/fcmp-protocol.md` — follow the FCMP protocol for status transitions
17
+
18
+ ## Process
19
+
20
+ ### Step 1: Get Ticket Key
21
+
22
+ - Use the `focused_ticket` from conversation context if available.
23
+ - Otherwise, ask the user for the ticket key.
24
+
25
+ ### Step 2: FETCH — Get Current State
26
+
27
+ Fetch the current ticket state via `mcp_atlassian-rovo_fetch()`:
28
+
29
+ - Current status
30
+ - Assignee and summary (for confirmation context)
31
+ - Version field (for optimistic locking)
32
+
33
+ ### Step 3: COMPARE — Verify No Remote Change
34
+
35
+ Compare the fetched status against the last known local state (from the `{TICKET-KEY}.md` frontmatter if available).
36
+
37
+ - If the remote status has changed since last sync, warn the user:
38
+ ```
39
+ ⚠️ Status changed remotely: {old_status} → {current_remote_status}
40
+ Continue with transition from {current_remote_status}? (y/n)
41
+ ```
42
+
43
+ ### Step 4: Get Available Transitions
44
+
45
+ Fetch available transitions for the ticket via MCP (e.g. `getTransitionsForJiraIssue` or equivalent).
46
+
47
+ Present as a numbered list:
48
+
49
+ ```
50
+ Current Status: {current_status}
51
+
52
+ Available transitions:
53
+ 1. {transition_name_1}
54
+ 2. {transition_name_2}
55
+ 3. {transition_name_3}
56
+ 4. Cancel
57
+
58
+ Choose transition [1]:
59
+ ```
60
+
61
+ Do not assume a standard workflow (To Do → In Progress → Done). Always fetch the actual available transitions, as Jira workflows vary by project.
62
+
63
+ ### Step 5: Execute Transition
64
+
65
+ After the user selects a transition number:
66
+
67
+ 1. Confirm: "Transition {TICKET-KEY} from {current_status} to {target_status}? (y/n)"
68
+ 2. **PUSH** — Execute the transition via MCP.
69
+ 3. On success: confirm with the new status.
70
+ 4. On failure: report the error (e.g. required fields missing, permission denied, transition not available).
71
+
72
+ ### Step 6: Update Local State
73
+
74
+ If a local `{TICKET-KEY}.md` file exists:
75
+
76
+ - Update `sync.status` to the new status
77
+ - Update `sync.last_synced` to the current timestamp
78
+ - Update `sync.version` with the new version from Jira
79
+
80
+ ## Output Format
81
+
82
+ ```
83
+ ## 🔄 Status: {TICKET-KEY}
84
+
85
+ **Current Status:** {current_status}
86
+
87
+ Available transitions:
88
+ 1. {transition_1}
89
+ 2. {transition_2}
90
+ 3. {transition_3}
91
+ 4. Cancel
92
+
93
+ Choose transition [1]:
94
+
95
+ {AFTER TRANSITION:}
96
+ ✓ {TICKET-KEY} transitioned: {old_status} → {new_status}
97
+ ```