From refinery
Use when extracting user stories from a visual board. Use when user says 'extract stories', 'genera user stories', 'procesa scope', 'board to stories', or shares a board URL.
npx claudepluginhub weorbitant/workbench-dev --plugin refineryThis skill is limited to using the following tools:
Read `${CLAUDE_PLUGIN_ROOT}/config.yaml`.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Retrieves current documentation, API references, and code examples for libraries, frameworks, SDKs, CLIs, and services via Context7 CLI. Ideal for API syntax, configs, migrations, and setup queries.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Read ${CLAUDE_PLUGIN_ROOT}/config.yaml.
If it does not exist, tell the user to copy config.example.yaml to config.yaml and fill in their values. Stop here.
Extract:
board_tool — miro, excalidraw, or noneboard_config.default_parent_page — target page for publishing user storiesboard_config.available_roles — list of roles for user story formatissue_tracker — for optional ticket creationIf board_tool is "none", tell the user no board tool is configured and stop.
Read the adapter file at ${CLAUDE_PLUGIN_ROOT}/skills/board-to-stories/adapters/{board_tool}.md.
If the adapter does not exist, tell the user that {board_tool} is not yet supported and stop.
From $ARGUMENTS:
If no URL provided, ask the user.
Use the adapter's commands to:
For each item on the board, extract:
Present the board structure to the user and confirm which sections to process.
For each concept or feature mentioned on the board:
Search the codebase for existing implementations:
Classify each item:
For each board item that maps to a user story, generate using this format:
Como [{role}], quiero [{action}], para [{benefit}].
Where {role} comes from {config.board_config.available_roles}.
Classify each generated story:
Stories with enough information to estimate and implement:
Stories that are implied by the board but not explicitly stated:
Stories that cannot be defined without additional information:
For each story, generate:
Read the US template at references/us-template.md.
Ask the user where to publish the generated stories:
If {config.board_config.default_parent_page} is set:
If {config.issue_tracker} is configured:
docs/user-stories/{date}-{board_section}.md━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 BOARD TO STORIES: {board_name}
Section: {section_name} | Stories: {count}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━ DEFINED ({count}) ━━━━━━━━━━━━━━━━━━━━━━━━━
US-001: {title}
Como {role}, quiero {action}, para {benefit}.
Complejidad: {S/M/L/XL}
AC:
- [ ] {criterion_1}
- [ ] {criterion_2}
US-002: {title}
...
━━ IMPLICIT ({count}) ━━━━━━━━━━━━━━━━━━━━━━━━
US-I01: {title}
Implícita por: {what implies this story}
...
━━ BLOCKED ({count}) ━━━━━━━━━━━━━━━━━━━━━━━━━
US-B01: {title}
Bloqueada por: {reason}
Pregunta: {what needs to be answered}
━━ ALREADY EXISTS ({count}) ━━━━━━━━━━━━━━━━━━
- {feature}: ya implementado en {file_path}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━