Sprint effort report
Skill alycd/agent-skills/.claude/skills/sprint-effort-report
Generate a per-assignee effort summary from a Jira sprint CSV export. Use when the user provides a sprint CSV file (e.g. s144.csv, sprint export) and wants to summarize effort by assignee, see who helped on cross-team subtasks, or understand sprint load distribution. Produces a new markdown report file.From its SKILL.md
npx -y skills add alycd/agent-skills --skill sprint-effort-reportAssembled 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
4.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Sprint Effort Report
Generates a per-assignee effort breakdown from a Jira sprint CSV and writes a new markdown report file in the same directory as the CSV.
CSV format
Expected columns (order matters):
Parent Key, Parent Summary, Key, Type, Summary, Status, Assignee, Impact, Effort, Created, Updated
The Effort column contains size values: Small, Medium, Large, Extra-Large (or blank).
Rules
- Only count items with Status = "Done". Any other status → excluded from all counts.
- Only count items that have an Effort value. Blank effort → excluded from all counts.
- Count all non-Sub-task types (Story, Task, Feature, Bug, Template, Epic, etc.) for their assigned person.
- Sub-tasks: only count toward the subtask's assignee if that assignee differs from the parent story/task's assignee.
- To find the parent's assignee: look up the Parent Key in the same CSV and read its Assignee column.
- If the parent does not appear as its own row in the CSV, treat it as unknown — count the subtask.
- Unassigned items are always excluded.
- Effort buckets: Extra-Large, Large, Medium, Small (no "no size" bucket — those are dropped).
- Effort weights for the weighted total: Extra-Large = 8, Large = 5, Medium = 3, Small = 1.
Instructions
Step 1 — Read the CSV
Read the full CSV file. Build two lookup maps:
row_by_key: key → full row (for parent lookups)assignee_by_key: key → assignee (for quick parent owner checks)
Step 2 — Classify each row
For each row:
- Skip if
Statusis not "Done" - Skip if
Assigneeis blank or "Unassigned" - Skip if
Effortis blank - If
Type== "Sub-task":- Look up parent assignee via
Parent Key - If parent assignee == row assignee → skip
- If parent assignee != row assignee (or parent not found) → count for row assignee, mark as cross-assigned
- Look up parent assignee via
- All other types → count for row assignee
Step 3 — Build per-assignee buckets
For each qualifying row, add to the assignee's size bucket:
assignee → { Extra-Large: [], Large: [], Medium: [], Small: [] }
Compute the weighted total per assignee:
weighted_total = (count(Extra-Large) × 8) + (count(Large) × 5) + (count(Medium) × 3) + (count(Small) × 1)
Track cross-assigned subtasks separately for the cross-help section.
Step 4 — Write the report
Create a new file named <csv-basename>-effort-summary.md in the same directory as the CSV.
Report structure
# Sprint XXX — Effort Summary by Assignee
> Rules: only Done items are included. Items without effort are excluded.
> Sub-tasks only counted when assignee differs from parent owner.
## Summary Table
| Assignee | Extra-Large | Large | Medium | Small | Weighted Total |
| -------- | :---------: | :---: | :----: | :---: | :------------: |
| ... | | | | | |
Weights: XL=8, L=5, M=3, S=1. Sort by Weighted Total descending.
---
## Breakdown by Assignee
One section per assignee (order matches summary table):
### Name (N)
| Key | Type | Summary | Size | Note |
|-----|------|---------|------|------|
| ... | ... | ... | ... | "cross-assigned from MAR-XXXX (Owner)" if subtask |
---
## Cross-Help Summary
List every parent that had at least one cross-assigned subtask.
For each such parent, show:
- **MAR-XXXX** _(Type, Parent Owner)_ — Parent Summary
- MAR-YYYY (Sub-task, Assignee) → counted for **Assignee** as Size
- MAR-ZZZZ (Sub-task, SameAsParent) → same as parent owner → skipped
Example cross-help entry
- **MAR-12301** _(Story, Rajab Nagori)_ — Account Audience Summary Breakdown by ISP (Phase 1)
- MAR-12335 (Sub-task, Rrahul Raja) → counted for **Rrahul Raja** as Medium
- MAR-12313 (Sub-task, Rrahul Raja) → counted for **Rrahul Raja** as Small
- MAR-12329 (Sub-task, Rajab Nagori) → same as parent owner → skipped
Only include parents that have at least one cross-assigned subtask with effort. Still show the skipped same-owner subtasks for context (even without effort).
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.