From cascade-mcp
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.
npx claudepluginhub bitovi/cascade-mcp --plugin cascade-mcpThis skill uses the workspace's default tool permissions.
Generate or refresh the `## Shell Stories` section of a Jira epic using comprehensive context from all linked sources (Figma, Confluence, Google Docs) and a scope analysis pass.
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.
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.
Generates user stories with Given/When/Then acceptance criteria following INVEST principles from PRDs, feature-persona-goal inputs, narratives, Jira epics, or screenshots.
Share bugs, ideas, or general feedback.
Generate or refresh the ## Shell Stories section of a Jira epic using comprehensive context from all linked sources (Figma, Confluence, Google Docs) and a scope analysis pass.
Use when the user wants to:
Typical triggers:
PROJ-123) โ the epic to write shell stories forCall 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 โ they go in the ## Figma section of to-load.md for Phase 3.
For each Figma URL collected:
figma-batch-load with the Figma file URLcurl -o .temp/cascade/figma/{fileKey}/batch.zip "{downloadUrl}"
cd .temp/cascade/figma/{fileKey} && unzip -o batch.zip
.temp/cascade/figma/{fileKey}/
โโโ manifest.json โ frame list with metadata
โโโ prompts/
โ โโโ frame-analysis.md โ analysis prompt for frames
โโโ frames/
โโโ {nodeId}-{name}/
โ โโโ image.png
โ โโโ structure.xml
โ โโโ context.md
โโโ ...
For each frame listed in manifest.json, 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. This categorizes every feature by scope (โ/โ
/โฌ/โ/โ/๐ฌ) using the epic context as the primary source of truth.
Self-healing check: If cascade-analyze-feature-scope recommends CLARIFY (>5 unanswered โ and no previous scope analysis exists), warn the user that there are many open questions. Suggest running generate-behavior-questions first to get answers before generating shell stories. Proceed only if the user confirms.
Call atlassian-get-issue with the epic key to get the current epic description. This is needed to:
## Shell Stories section to find completion markers (stories with a Jira link + timestamp, e.g., **[Story Title](https://...atlassian.net/browse/PROJ-456)** _(2025-01-15T10:30:00Z)_) โ these must be preserved exactly## Scope Analysis section (if present) for โ โ ๐ฌ flipping awarenessPreserve completion markers: Record which story IDs already have a jiraUrl completion marker. During Phase 7, do NOT rewrite those stories โ copy them verbatim from the existing description.
Using the scope analysis (.temp/cascade/scope-analysis.md), frame analyses, content summaries, and Figma annotations, generate a prioritized list of shell stories.
Each story is a top-level list item with sub-bullets:
## Shell Stories
- `st001` **Story Title** โฉ One sentence description of what this story delivers
* SCREENS: [Screen Name](figma-url), [Another Screen](figma-url)
* DEPENDENCIES: none
* โ Feature included in this story
* โ Another included feature โ [Screen Name](figma-url)
* โฌ Lower-priority feature (implement in st005)
* โ Out of scope for this epic
* โ Open question about behavior
- `st002` **Another Story Title** โฉ One sentence description
* SCREENS: [Screen Name](figma-url)
* DEPENDENCIES: st001
* โ Feature that builds on st001
* โ Another open question
โ In-Scope features โ include as โ bulletsโฌ Low Priority features โ group into stories at the end (add โฌ bullets with (implement in stXXX))โ Out-of-Scope features โ add as โ bullets (no story reference needed)โ Open questions โ include as โ bullets in the most relevant storySCREENS bullet with Figma links. Extract Figma URLs from the scope analysis feature areas.none. Only reference story IDs that exist in the output. Sequence foundational stories first.โฌ bullets โ all deferred work must be accounted for in earlier or intermediate stories.โ, not โฌ.When the epic already has a ## Shell Stories section:
**[Title](url)** _(date)_) must be copied exactly as-is. Do NOT renumber or rephrase them.DEPENDENCIES bullets that reference it.## Shell Stories section exists: replace it with the newly generated section## Shell Stories after ## Scope Analysis (or at the end of the description if no scope analysis section is present)atlassian-update-issue-description with the updated full description (preserve all other sections unchanged)## Shell Stories section. Leave ## Scope Analysis, ## Acceptance Criteria, and any other sections exactly as they are.[Screen Name](figma-url) โ screen name as link text, Figma node URL as target.cascade-analyze-feature-scope sub-skill will flip โ โ ๐ฌ automatically. Updated scope analysis may result in different stories being generated.write-next-story-from-shell-story skill to turn the first unwritten shell story into a full Jira subtask with acceptance criteria.