Sprint goals
Transform a Jira sprint CSV export into sprint goals for company-wide communication. Generates a Feature Summary table and a Slack-ready sprint goals post grouped by epic. Use when given a CSV file with Jira sprint tickets and asked to create sprint goals, generate a sprint summary, write the Slack sprint update, produce company-wide sprint communication, or make a sprint goals document. Trigger phrases: "create sprint goals", "generate sprint summary", "write slack sprint update", "make sprint goals from csv", "sprint goals from jira", "disseminate sprint", "sprint goals for the company".From its SKILL.md
npx -y skills add alycd/agent-skills --skill sprint-goalsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.3 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Sprint Goals
Transforms a Jira sprint CSV into two communication artifacts:
- A Feature Summary table for Obsidian (the sprint planning doc)
- A Slack Summary for company-wide sprint announcement
Input
A CSV file exported from Jira with columns:
Parent Key, Parent Summary, Key, Type, Summary, Status, Assignee, Impact, Effort, Created, Updated
Also requires: the sprint number (e.g. 147).
Instructions
Step 1: Gather inputs
If the user hasn't provided a CSV file path, ask for it. If they haven't specified the sprint number, infer it from the filename (e.g., sprint_147_jira.csv → sprint 147) or ask.
Step 2: Read and parse the CSV
Read the CSV file. Build a list of features by:
- Skip sub-tasks: If a row has a non-empty
Parent Summary, it is a sub-task. Don't create a separate feature entry — it will be represented by its parent row. - Identify top-level tickets: Rows where
Parent KeyandParent Summaryare both empty are standalone features. Use theirSummaryas the feature title. - Identify epic-child tickets: Rows where
Parent Summaryis set but the row itself is not a sub-task (Type = Story, Feature, Task, Bug) — use the row'sSummaryas the feature title and itsParent Summaryas a hint for grouping. - Skip total/empty rows: Ignore the "Total: N items" row and blank rows.
- Skip purely operational tasks that are not meaningful to external stakeholders, such as:
- "Add New Major Account: X" (internal onboarding ops)
- ISP-specific delivery investigations
- Internal infrastructure ops with no user-facing impact
Step 3: Group features by epic
Assign each feature to a display epic using these rules (in priority order):
- If the ticket's
Parent Summarymaps to a known tinyEmail epic, use it — but apply the clean display name:Authenticator Implementation→AuthenticatorAdaptive Traffic Shaping→Adaptive Traffic ShapingUser Action Audit→User Action AuditSamCart Integration→3rd Party IntegrationsCustomer Support Request→Customer Support
- If the ticket has no parent, infer the epic from the ticket summary using context clues:
- SMS, Voizee →
SMS - Onboarding, Chatbot, Tours →
OnboardingorNew Feature Utilization - Segment, Audience, List, Contact →
Audience - Campaign Link, Link Retention, Replay Attack →
Campaign Links - Nightly AI, Dashboard, Analytics, Engagement →
Analytics - Relay, API Key, List Cleaning →
tinyEmail and APIs - Billing, Stripe, Invoice →
Customer Support(orBilling) - HMAC, Security →
Campaign Links(orSecurity) - A/B Test →
Campaigns - Pause Integration, Discount, 3rd party →
3rd Party Integrations - Workflow Node, Template Preview, BO (Back Office) →
Customer Support
- SMS, Voizee →
- For anything that doesn't fit, use your best judgment to assign a logical epic name.
Step 4: Generate descriptions
For each feature, produce:
- Summary (for the table): A 1–2 sentence neutral description of what the feature does. Technical but accessible. Present tense. No "we" or "users can" framing — state what the feature does: "Generates per-account HMAC signatures for tracked campaign links to ensure integrity."
- Business Context (for the table): 1 sentence on the business or customer value. Why it matters. Start with a verb or noun — no "This feature...". Example: "Protects click metric integrity; required for compliance and trust in click tracking."
- Slack description: 1 sentence, active voice, customer-facing impact. What does this mean for users? Start with a strong verb. Example: "Extends campaign link engagement data retention past the 30-day limit on a per-user basis for longer attribution windows."
Use your knowledge of tinyEmail's product domain to write accurate, non-generic descriptions. GreenArrow is the email delivery infrastructure. tinyAlbert is an AI-powered email product. Back Office (BO) is the internal admin tool. Entri handles DNS. Prometheus is used for infrastructure monitoring.
Step 5: Map effort to size
| Effort value | Size |
|---|---|
| Small | S |
| Medium | M |
| Large | L |
| Extra-Large | XL |
| (empty) | — |
For features where multiple sub-tasks contribute, use the parent story's Effort if available.
Step 6: Generate the Feature Summary table
Output a Markdown table with these columns: Epic | Title | Summary | Business Context | Size
Sort rows by epic (group all rows of the same epic together). Use the same epic ordering as Sprint 146: New Feature Utilization → Onboarding → 3rd Party Integrations → Audience → Campaign Links → User Action Audit → Authenticator → Adaptive Traffic Shaping → Customer Support → Analytics → tinyEmail and APIs → SMS
Example row:
| Campaign Links | Stop Replay Attacks on Campaign Links | Detects and blocks replay attacks on campaign link tokens | Protects click metric integrity and deliverability reputation from malicious replay activity | L |
Step 7: Generate the Slack Summary
Format for Slack (Slack uses *bold* and _italic_ markdown):
*Sprint [N] — What We're Building*
*[Epic Name]*
• *[Feature Title]* — [Slack description sentence.]
*[Next Epic Name]*
• *[Feature Title]* — [Slack description sentence.]
...
- Use the same epic grouping and ordering as the table.
- Omit epics that have zero features.
- Each bullet starts with
•(not-). - The feature title in each bullet is bold:
*Feature Title*. - The description comes after
—(space-dash-dash-space).
Step 8: Write output to file
Write both artifacts to a Markdown file at:
[parent_directory_of_csv]/Sprint [N].md
If that file already exists, ask the user before overwriting.
Structure the file as:
## Feature Summary
| Epic | Title | Summary | Business Context | Size |
|------|-------|---------|-----------------|------|
[rows]
---
## Slack Summary
[slack content]
Step 9: Confirm
Tell the user the file was written and show a brief count: how many features were included, how many epics.
Notes
- Don't include carry-over tracking, backlog items, or items already Done from the previous sprint unless they appear in the current CSV with significant new work remaining.
- If a ticket appears both as a parent row AND has sub-tasks, represent it as a single feature entry (don't duplicate).
- The Feature Summary table is the source of truth for sprint planning; the Slack Summary is for company-wide communication — keep the Slack descriptions punchy and non-technical.
- When in doubt about whether to include a ticket, include it rather than exclude it — the user can trim.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.