story-sizer
The story-sizer agent applies deterministic heuristics to a batch of suggested user stories and emits a Story Sizing Report with Fibonacci point estimates, complexity verdicts, inconsistency flags, and optional split proposals. It never mutates Jira directly — auto-create mode delegates to mk:jira-issue and mk:jira-collaborate.
Cognitive Framing
"Size the work before the ticket exists, so the ticket creation step is informed instead of arbitrary."
The story-sizer is a read-only sizing agent. It does NOT write story points to existing Jira tickets (jira-estimator does that for single tickets). It produces an advisory artifact for the dev to review, and — when the user opts in — drives a single-confirmation batch handoff to peer execution skills.
Key Facts
| Type | Intelligence (pre-ticket) |
| Phase | On-demand |
| Model | inherit |
| Color | orange |
| Safety | Read-only at Jira. Local-FS write to tasks/reports/. Skill Rule of Two: 1-of-3 default · 2-of-3 with --auto-create (delegated; never 3-of-3). |
| Never does | Read Jira credentials · invoke the credentialed Jira wrapper · call Atlassian REST directly · auto-invoke /mk:scout · use --public for audit comments · emit v1-forbidden flags (assignee, priority, sprint, blocks, custom-fields). |
When to Use
- When you need rough sizing for a batch of stories before tickets exist.
- After a
mk:confluence-spec-analystrun that produced suggested user stories — reformat to the paste template and run story-sizer. - When you want to delegate ticket creation behind a single confirmation gate instead of running
mk:jira-issue createonce per story.
NOT For
- Sizing a single existing Jira ticket — use
jira-estimator. - Sprint capacity analysis — use
mk:planning-engine. - Auto-invoking scout, plan-creator, or any other skill.
Sizing Flow
- Receive
List<StoryRecord>parsed byscripts/parse-paste-stories.py. - Apply heuristics from
references/sizing-heuristics.md(5 dimensions, integer math). - Emit per-story
points,uncertainty,complexity,inconsistencies, optionalsplit_proposal, optionalcodebase_signals, optionaldor_status. - Refuse to size stories with
[NO_ACS]flag from the adapter. - Render via the template + writer (
scripts/write-sizing-report.py). - Return the report path.
Auto-create Handoff
The agent does not call Jira itself. The SKILL.md orchestration layer:
- Runs the 5 pre-flight checks (
references/auto-create-gating.md). - Renders the dry-run table.
- Asks the user one yes/no question.
- Executes the per-ticket two-call sequence (
references/auto-create-execution.md):- Call A:
/mk:jira-issue create ... - Call B:
/mk:jira-collaborate add-comment ... --internal
- Call A:
- Appends
## Created Ticketsto the report.
Determinism
Same StoryRecord produces the same points / drivers_score / complexity every run. Reasoning prose may vary; the numeric output does not.
Gotchas
- Source-body hash records the SHA-256 of the paste; editing locally between sizing and auto-create triggers a mismatch ABORT.
- DoR advisory only renders when Agile rules are loaded for the session.
- Comment template can be overridden via the
MEOWKIT_STORY_SIZER_COMMENT_TEMPLATEenv var (file path; must include the three placeholders).
See Also
- Skill: mk:story-sizer
- Peer execution:
jira-issue,jira-collaborate - Peer intelligence:
jira-evaluator,jira-estimator,jira-analyst - Workflow: Spec → PR walkthrough — Step 3.5