Approve synthesis findings and create implementation tickets from discovery
Creates Jira tickets from approved discovery synthesis findings.
/plugin marketplace add Jeffallan/claude-skills/plugin install jeffallan-fullstack-dev-skills-2@Jeffallan/claude-skills<synthesis-url> [--decision=<id>:<value>...]project/discovery/Arguments: $ARGUMENTS
Parse the arguments to extract:
{Synthesis_URL} - Confluence synthesis document URL (required){Decisions} - Optional pre-provided decision resolutions (via --decision=D1:OptionB)Examples:
/approve-synthesis https://confluence/synthesis-doc → Review and approve interactively/approve-synthesis https://confluence/synthesis-doc --decision=D1:B --decision=D2:Y → Pre-resolve decisions/create-epic-discovery <epic-key> → Discovery Document
↓
[Manual research, interviews, experiments]
↓
/synthesize-discovery <doc-urls...> → Synthesis Document
↓
/approve-synthesis <synthesis-url> → Creates Jira Tickets (YOU ARE HERE)
↓
/create-implementation-plan <overview-doc> → Implementation planning continues
Fetch the synthesis document from {Synthesis_URL}
Extract from synthesis document:
<!-- PROPOSED_TICKETS_START --> and <!-- PROPOSED_TICKETS_END --> markers)FAILURE CONDITION - Invalid Synthesis Document:
If synthesis document cannot be fetched or lacks required sections:
STOP and prompt the user:
I was unable to retrieve the synthesis document or it is missing required data.
URL: {Synthesis_URL}
Issue: [document not found / missing Proposed Tickets section / invalid JSON]
Please verify:
1. The URL is correct and accessible
2. The document was created by /synthesize-discovery
3. The "Proposed Tickets Data" section (Section 9) exists
DO NOT PROCEED until valid document is provided.
FAILURE CONDITION - Already Approved:
If synthesis is already approved (approval_status: "approved"):
STOP and report:
This synthesis has already been approved.
Approved By: [user]
Approved Date: [date]
Tickets Created: [list]
Options:
A) View the created tickets
B) Create additional tickets (will append to existing)
C) Cancel
DO NOT PROCEED without user choice.
MANDATORY CHECKPOINT - Synthesis Overview:
## Synthesis Document Retrieved
**Discovery Epic:** {Discovery_Epic_Key}
**Synthesis Date:** [date]
**Sources Analyzed:** [count]
**Proposed Tickets:** [count] tickets, [sum] story points
**Target Epics:** [list epic keys]
**Blocking Decisions:** [count] pending / [count] total
Ready to review? (Yes / No)
DO NOT PROCEED without confirmation.
Check for unresolved blocking decisions:
Parse the blocking_decisions array from the JSON data.
Apply any pre-provided decisions from --decision arguments:
For each --decision=ID:Value:
FAILURE CONDITION - Unresolved Blocking Decisions:
If any blocking decisions remain unresolved:
STOP and present each decision:
## Blocking Decisions Require Resolution
The following decisions must be resolved before tickets can be created:
### Decision D1: [Decision Question]
**Options:**
A) [Option A description]
B) [Option B description]
C) [Option C description]
**Recommendation:** [Option from synthesis]
**Rationale:** [Why this was recommended]
**Blocks Tickets:** T1, T3, T5
Please select an option: [A/B/C]
---
### Decision D2: [Decision Question]
...
DO NOT PROCEED until all decisions are resolved.
Record decision resolutions:
For each resolved decision:
Present proposed tickets for review:
## Proposed Tickets for Approval
All blocking decisions have been resolved. Review the tickets below.
### Epic: {Epic_Key_1} - {Epic_Title}
| # | ID | Title | Type | Points | Priority | Dependencies |
|---|-----|-------|------|--------|----------|--------------|
| 1 | T1 | [title] | Story | 5 | High | None |
| 2 | T2 | [title] | Task | 3 | Med | T1 |
### Epic: {Epic_Key_2} - {Epic_Title}
| # | ID | Title | Type | Points | Priority | Dependencies |
|---|-----|-------|------|--------|----------|--------------|
| 1 | T3 | [title] | Spike | 2 | High | None |
**Total:** [count] tickets, [sum] story points
---
**Options:**
- **Approve** - Create all tickets as shown
- **Edit** - Modify tickets before creation
- **Cancel** - Exit without creating tickets
What would you like to do? [Approve / Edit / Cancel]
If Edit selected:
## Edit Proposed Tickets
Available actions:
- **Add:** Add a new ticket (e.g., "Add Story 'Implement caching' to CC-62")
- **Remove:** Remove a ticket (e.g., "Remove T3")
- **Modify:** Change ticket details (e.g., "Modify T1 points to 8" or "Modify T2 priority to High")
- **Done:** Finish editing and review again
Current tickets:
[... ticket list ...]
Enter your changes (or "Done" to finish):
Editing loop:
MANDATORY CHECKPOINT - Final Ticket Approval:
## Final Ticket Approval
The following tickets will be created in Jira:
[... final ticket list with all edits applied ...]
**Total:** [count] tickets, [sum] story points
Create these tickets? (Yes / No)
DO NOT CREATE TICKETS without explicit "Yes" approval.
For each approved ticket:
Create ticket in Jira under the target epic:
Creating ticket: [title]
Epic: {Target_Epic}
Set ticket fields:
from-discovery, {Discovery_Epic_Key}Populate description using template:
## Source
- Discovery Epic: [{Discovery_Epic_Key}]({url})
- Synthesis Document: [{Synthesis_Doc}]({url})
- Based on Findings: [F1, F2, ...]
## Context
[Why this ticket was created based on discovery findings]
## Summary
[What this ticket accomplishes]
## Acceptance Criteria
- [ ] [Criterion from synthesis]
- [ ] [Criterion from synthesis]
## Notes from Discovery
- [Relevant insights that inform implementation]
- [Constraints or considerations discovered]
## Decisions Made
- D1: [Decision question] → [Resolution chosen]
---
*This ticket was generated from discovery synthesis. See source documents for full context.*
Link tickets:
Track created tickets:
Maintain mapping: { T1: "CC-123", T2: "CC-124", ... }
FAILURE CONDITION - Ticket Creation Fails:
If any ticket creation fails:
## Ticket Creation Error
Failed to create ticket: [title]
Error: [error message]
**Tickets Created So Far:**
- CC-123: [title]
- CC-124: [title]
**Remaining Tickets:**
- [title] (failed)
- [title] (pending)
Options:
A) Retry failed ticket
B) Skip failed ticket and continue
C) Stop and save progress
What would you like to do? [A/B/C]
Update synthesis document in Confluence:
Add/update Section 10: Approved Tickets:
### 10. Approved Tickets
**Approval Date:** [timestamp]
**Approved By:** [user]
**Decisions Resolved:** [count]
#### Tickets Created
| Jira Key | Title | Type | Epic | Points |
|----------|-------|------|------|--------|
| [CC-123](url) | [title] | Story | CC-62 | 5 |
| [CC-124](url) | [title] | Task | CC-62 | 3 |
**Total:** [count] tickets, [sum] story points
#### Decision Resolutions
| Decision | Question | Resolution | Resolved By |
|----------|----------|------------|-------------|
| D1 | [question] | Option B | [user] |
#### Changes from Original Proposal
- Added: [list any added tickets]
- Removed: [list any removed tickets]
- Modified: [list any modified tickets]
Update JSON approval status in Section 9:
{
"approval_status": "approved",
"approved_by": "[user]",
"approved_date": "[timestamp]",
"created_tickets": {
"T1": "CC-123",
"T2": "CC-124"
}
}
Update discovery epic with:
When complete, you MUST provide:
## Synthesis Approved - Tickets Created!
**Synthesis Document:** {Synthesis_URL} (updated)
### Decisions Resolved
| Decision | Resolution |
|----------|------------|
| D1 | [chosen option] |
| D2 | [chosen option] |
### Tickets Created
#### {Epic_Key_1}: {Epic_Title}
| Key | Title | Type | Points |
|-----|-------|------|--------|
| [CC-123](url) | [title] | Story | 5 |
| [CC-124](url) | [title] | Task | 3 |
#### {Epic_Key_2}: {Epic_Title}
| Key | Title | Type | Points |
|-----|-------|------|--------|
| [CC-125](url) | [title] | Spike | 2 |
**Total:** [count] tickets, [sum] story points
### Changes from Original Proposal
- Added: [list or "None"]
- Removed: [list or "None"]
- Modified: [list or "None"]
### Next Steps
1. Review created tickets in Jira
2. Run implementation planning:
/create-implementation-plan {Target_Epic_Overview_Doc}
| Condition | Action |
|---|---|
| Synthesis URL not accessible | Ask user to verify URL |
| Missing Proposed Tickets section | Ask user to run /synthesize-discovery first |
| Invalid JSON in Proposed Tickets | Report parsing error, ask for manual fix |
| Unresolved blocking decisions | Present decisions for resolution, block ticket creation |
| Synthesis already approved | Offer options: view, append, or cancel |
| Jira ticket creation fails | Report error, offer retry/skip/stop options |
| Confluence update fails | Provide content for manual update |
| Target epic not found | Ask user to verify epic key |
Before ticket creation:
During ticket creation: