From cascade-mcp
Generates full Jira stories from next unwritten shell story in epic: User Story, Gherkin AC, NFRs, notes. Loads Figma screens, creates ticket, adds blockers, marks shell complete.
npx claudepluginhub bitovi/cascade-mcp --plugin cascade-mcpThis skill uses the workspace's default tool permissions.
Turn the next unwritten shell story in a Jira epic into a full Jira subtask with comprehensive acceptance criteria, by loading only the relevant Figma screens and using the shell story's scope bullets as the scope anchor.
Generates or refreshes Jira epic Shell Stories section from linked Figma, Confluence, Google Docs context via parallel frame analysis, scope analysis, and prioritized workflow-grouped outlines with markers.
Generates user stories with Given/When/Then acceptance criteria following INVEST principles from PRDs, feature-persona-goal inputs, narratives, Jira epics, or screenshots.
Converts Confluence spec pages into Jira backlogs with Epics and linked tickets. Use for generating backlogs from specs, breaking down requirements, or creating issues from Confluence.
Share bugs, ideas, or general feedback.
Turn the next unwritten shell story in a Jira epic into a full Jira subtask with comprehensive acceptance criteria, by loading only the relevant Figma screens and using the shell story's scope bullets as the scope anchor.
Use when the user wants to:
Typical triggers:
PROJ-123) — the epic containing the shell storiesst003) — if omitted, the first unwritten story is usedCall MCP tool extract-linked-resources with the Jira epic URL (e.g., https://myco.atlassian.net/browse/PROJ-123).
Save the returned markdown+frontmatter directly to .temp/cascade/context/jira-PROJ-123.md.
Parse discoveredLinks from frontmatter to build .temp/cascade/context/to-load.md.
For each non-Figma URL in to-load.md (prioritize parent and blocks relationships first):
extract-linked-resources with the URL.temp/cascade/context/{type}-{identifier}.mddiscoveredLinks from frontmatter — add any new URLs to to-load.mdImportant: Figma URLs are collected but NOT loaded here — only the target shell story's screens will be loaded in Phase 3.
Read the current epic description via atlassian-get-issue and locate the ## Shell Stories section.
Parse shell stories from the section. Find the target story:
st003), use that storyStop conditions:
## Shell Stories section exists: tell the user to run write-shell-stories first for this epic, then stop.The shell story has this structure:
- `st003` **Story Title** ⟩ One sentence description
* SCREENS: [Screen Name](figma-url), [Another Screen](figma-url)
* DEPENDENCIES: st001, st002
* ☐ Included feature
* ⏬ Deferred feature (implement in stXXX)
* ❓ Open question
Record the story's:
st003)For each Figma URL in the target story's SCREENS list only (do NOT load all epic Figma files):
figma-batch-load with the Figma URLcurl -o .temp/cascade/figma/{fileKey}/batch.zip "{downloadUrl}"
cd .temp/cascade/figma/{fileKey} && unzip -o batch.zip
If frames for these screens were already analyzed in a prior run (.temp/cascade/figma/{fileKey}/frames/{dirName}/analysis.md exists), skip re-downloading for that file.
For each frame in the target story's screens, launch a subagent using the cascade-analyze-figma-frame sub-skill.
Pass only the frame directory path (e.g., .temp/cascade/figma/{fileKey}/frames/{dirName}/). Do NOT read context.md, structure.xml, or image.png yourself — the subagent reads all files internally.
Run all subagents in parallel. Wait for all to complete before proceeding.
Use sub-skill cascade-analyze-feature-scope to produce .temp/cascade/scope-analysis.md.
Key difference from other skills: Pass the shell story's own ☐, ⏬, and ❓ bullets as the starting scope anchor. The scope analysis should refine and expand on these, but the shell story's scope bullets are the primary source of truth for what is in and out of scope for this story.
Self-healing check: If the scope analysis recommends CLARIFY (>5 unanswered ❓), warn the user. Proceed if the user confirms — this story may have open questions embedded as ❓ bullets in the output.
Check whether the target shell story already has a Jira link (i.e., is partially or fully written):
**[Title](https://...)**), the story was previously created. Call atlassian-get-issue on that issue key to fetch the existing description.Using the scope analysis (.temp/cascade/scope-analysis.md), frame analyses, content summaries, Figma annotations, and existing description (if any), write the full story description.
## User Story Statement
As a {role}, I want {capability} so that {benefit}.
## Supporting Artifacts
- **Figma**: [Screen Name](figma-url) | [Another Screen](figma-url)
- **Confluence**: [Spec Title](confluence-url)
- **Epic**: [PROJ-123](jira-url): {epic summary}
<details>
<summary>Scope Analysis</summary>
### {Feature Area}
- ☐ **{Feature}**: {description} — [Screen Name](figma-url)
- ✅ **{Existing Feature}**: {description}
- ❌ **{Out of Scope}**: {why excluded}
- ❓ **{Open Question}**: {what needs clarification}
- 💬 **{Answered Question}**: {question} → {answer from comments/context}
</details>
## Non-Functional Requirements
{ONLY include if explicitly mentioned in context — do NOT invent}
## Developer Notes
{ONLY include if explicitly mentioned in context — do NOT invent}
## Acceptance Criteria
**GIVEN** {precondition}:
[View in Figma](figma-url)
- **WHEN** {user action}, **THEN**
- {expected result 1}
- {expected result 2}
- **WHEN** {subsequent action}, **THEN**
- {nested expected result}
**GIVEN** {another precondition}:
- **WHEN** {user action}, **THEN**
- {expected result}
☐ bullets define what goes in Acceptance Criteria. Scope analysis refines and adds detail — it does not override the shell story's explicit scope.⏬ deferred features or ❌ out-of-scope features in Acceptance Criteria.❓ bullets that are still unresolved, include them in the Scope Analysis section — do NOT include them in Acceptance Criteria.atlassian-update-issue-description conventionsatlassian-create-issue (or equivalent available tool) to create a Jira story under the epic:
PROJ-123)Record the new issue key (e.g., PROJ-456) and URL for Phase 10.
atlassian-get-issue## Shell Stories section, find the target shell story entry**[Story Title](https://myco.atlassian.net/browse/PROJ-456)**_(2025-02-10T14:23:00Z)_ (use current UTC time)atlassian-update-issue-description with the updated full epic description (only the shell story entry changes)## Shell Stories. All other epic sections stay exactly as-is.write-next-story-from-shell-story again to write the next unwritten shell story.