From refinery
Use when evaluating a sprint before starting it. Use when user says 'sprint review', 'review sprint', 'evaluar sprint', 'sprint planning review', or mentions checking sprint readiness.
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:
issue_tracker — determines which adapter to loadsprint_review.oversized_threshold — story points above this are flaggedsprint_review.systemic_threshold — percentage (0-1) above which findings become systemicsprint_review.bug_alert_threshold — percentage of bugs that triggers a warningsprint_review.vague_terms_es — list of vague terms in Spanishsprint_review.vague_terms_en — list of vague terms in Englishcommunication — tool and channels for sending reportsIssue tracker-specific config (e.g., jira.story_points_field, jira.default_project).
Read the adapter file at ${CLAUDE_PLUGIN_ROOT}/skills/sprint-review/adapters/{issue_tracker}.md.
If the adapter does not exist, tell the user that {issue_tracker} is not yet supported and stop.
All tool-specific calls come from the adapter. Do not invent tool calls.
IMPORTANT: Instructions are in English, but all output MUST be in Spanish.
Determine the source of tickets:
Store all tickets as {tickets}.
Remove from the analysis:
Store the filtered list as {active_tickets}. Report how many were filtered and why.
For each ticket in {active_tickets}, run these 8 checks. Use Agent to parallelize when possible.
Compare all ticket summaries and descriptions. Flag pairs with >70% similarity in title or identical acceptance criteria.
For each ticket, evaluate:
Score: 0 (no definition) to 3 (fully defined).
For each ticket, check if story points are set (using the adapter's story points field).
Scan title, description, and AC for terms from {config.sprint_review.vague_terms_es} and {config.sprint_review.vague_terms_en}.
Report each match with the exact term and location.
Check for:
[A-Z]+-\d+)Calculate:
{config.sprint_review.bug_alert_threshold} → flagFlag tickets with story points > {config.sprint_review.oversized_threshold}.
Suggest splitting oversized tickets.
Flag tickets without an assignee.
For each check, calculate the percentage of tickets that failed:
fail_rate = failed_tickets / total_active_ticketsIf fail_rate > {config.sprint_review.systemic_threshold} for any check, classify it as a systemic issue that needs process-level attention, not just ticket-level fixes.
Read the output format at references/output-format.md.
Build the report using that format. All text in the report MUST be in Spanish.
Include:
Ask the user which action to take:
{config.communication.tool} is configured, offer to send a summary to the configured channel. Format the message using references/output-format-slack.md if sending to Slack.