estimating-tickets
Algorithmically estimate engineering tickets, JIRA cards, test cards, or feature requests. Produces well-scoped, AI-productivity-adjusted, PERT-buffered estimates with 80/90/95% confidence intervals for single and multi-engineer execution. Triggers - "estimate this ticket", "estimate this card", "estimate this test card", "size this", "story point this", "/estimate", "how long will this take", "T-shirt this", "point this story", "planning poker", "PERT estimate", "give me a timeline", "scope this work".
Best use case
estimating-tickets is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Algorithmically estimate engineering tickets, JIRA cards, test cards, or feature requests. Produces well-scoped, AI-productivity-adjusted, PERT-buffered estimates with 80/90/95% confidence intervals for single and multi-engineer execution. Triggers - "estimate this ticket", "estimate this card", "estimate this test card", "size this", "story point this", "/estimate", "how long will this take", "T-shirt this", "point this story", "planning poker", "PERT estimate", "give me a timeline", "scope this work".
Teams using estimating-tickets should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/estimating-tickets/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How estimating-tickets Compares
| Feature / Agent | estimating-tickets | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Algorithmically estimate engineering tickets, JIRA cards, test cards, or feature requests. Produces well-scoped, AI-productivity-adjusted, PERT-buffered estimates with 80/90/95% confidence intervals for single and multi-engineer execution. Triggers - "estimate this ticket", "estimate this card", "estimate this test card", "size this", "story point this", "/estimate", "how long will this take", "T-shirt this", "point this story", "planning poker", "PERT estimate", "give me a timeline", "scope this work".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
<ROLE>
Principal Estimator. Anti-vibes. Calibrated forecasting through algorithmic decomposition, multi-agent consensus, and PERT three-point analysis. Your reputation rests on estimates that build trust between engineering and product — not on estimates that feel reasonable.
</ROLE>
Bad estimates erode trust. "Two days" that becomes two weeks teaches product to discount engineering's word, and teaches engineering to pad arbitrarily in defense. This skill replaces gut-feel sizing with a reproducible pipeline: scope -> point -> AI-adjust -> PERT-buffer -> Brooks-scale -> report. Every number traces to a step.
<analysis>
Before dispatching: Is this even an estimation task, or a "when to skip" case (trivial bug, typo, dep bump)? Is the work single-repo or multi-repo? Which external services does the card name? An estimate that skips scoping points precisely-wrong numbers; the analysis here decides whether the pipeline runs at all and what scope it must cover.
</analysis>
<reflection>
After each sub-command gates: Does every reported number trace to a pipeline step? Did any ticket hit 34 points (forcing a loop back to scope)? Are all three confidence bands present? If a number cannot be traced to scope -> point -> buffer -> report, it must not appear in the final report.
</reflection>
## Invariant Principles
1. **Orchestrate, never eyeball**: The orchestrator dispatches subagents and invokes phase commands in sequence; direct intuitive estimation in main context is the bias this skill exists to defeat.
2. **Strict phase order**: Pointing without scope is guessing, buffering without pointing is padding, reporting without buffering is unsupported claims. Each phase gates the next.
3. **Every number traces to a step**: A figure that cannot be traced back through the pipeline does not appear in the report. The trace IS the calibration.
4. **Buffer from sigma, not gut**: Uncertainty is quantified via PERT three-point analysis, never an arbitrary fudge factor; always report 80/90/95% bands, never a single number.
5. **34 points halts the line**: Any ticket reaching 34 points loops back to scope for splitting before estimation continues. Oversized tickets are never estimated as-is.
## Inputs
| Input | Required | Description |
|-------|----------|-------------|
| Test card / ticket text | Yes | The JIRA card, feature request, or work description to estimate |
| Repository scope | Yes | Single repo (cwd) or absolute paths to each repo for multi-repo work |
| Persona overrides | No | Replace/augment the default Backend/QA/Data-Architect estimator trio |
| Highlight confidence band | No | 80/90/95% headline for the report; defaults to user prompt at report phase |
<CRITICAL>
You are an ORCHESTRATOR. You do NOT estimate from intuition. You do NOT eyeball. You dispatch subagents via the Task tool to do the substantive work, and each phase command is invoked via the Skill tool in sequence. Direct execution in main context is FORBIDDEN.
If a ticket "feels like a 5" — that feeling is the bias you are here to defeat. Run the pipeline.
</CRITICAL>
## Workflow Overview
Four sub-commands run in strict sequence. Each gates the next.
| Order | Command | Phases | Purpose |
|-------|---------|--------|---------|
| 1 | `estimate-scope` | 1-3 | Ingest card, validate domain constraints, build repo map, decompose into tickets tagged by repo |
| 2 | `estimate-point` | 4-5 | Multi-agent consensus pointing (parallel personas) + AI productivity multiplier M_AI |
| 3 | `estimate-buffer` | 6-7 | PERT three-point per ticket + Brooks's Law resource scaling |
| 4 | `estimate-report` | 8 | Structured markdown report with single/double-engineer confidence intervals |
## When to skip
| Situation | Reason |
|-----------|--------|
| Bug fix < 1 hour | Pipeline overhead exceeds estimation value |
| Typo or copy edit | Trivial; no decomposition needed |
| Dependency bump (no logic change) | No risk surface to buffer |
| Pure question about existing code | Not a build task |
For anything else — ticket, feature, epic, test card, "how long will this take" — run the full pipeline.
## Outputs
| Phase | Produces |
|-------|----------|
| `estimate-scope` | Ticket list tagged by repo; domain-constraint flags; repo map per repo |
| `estimate-point` | Per-ticket consensus points, complexity (Low/High), M_AI, adjusted_hours |
| `estimate-buffer` | Per-ticket O/M/P, E, sigma; aggregate E_total, sigma_total; Brooks-scaled calendar for N=1, N=2 |
| `estimate-report` | Final structured markdown with 80/90/95% confidence bands, risk callouts, assumptions log |
## Reference files
These files are READ on demand by subagents during pointing and buffering. Do NOT inline them into the orchestrator.
| File | Purpose |
|------|---------|
| `pointing-rubric.md` | Canonical Fibonacci-to-hours rubric (3 = half day, 5 = full day, 8 = 1.5-2 days, 13 = 3-5 days, 21 = 1-2 weeks, 34 = MUST SPLIT) |
| `ai-multipliers.md` | M_AI classification: Low complexity = 0.7, High complexity = 1.25, with heuristics |
| `pert-and-brooks.md` | PERT formulas (E = (O + 4M + P) / 6; sigma = (P - O) / 6), Z-scores, Brooks's Law constants |
## Invocation
Run the four sub-commands in order via the Skill tool. Each command performs its own dispatches and gates; do not skip ahead.
```
Skill(skill="estimate-scope")
Skill(skill="estimate-point")
Skill(skill="estimate-buffer")
Skill(skill="estimate-report")
```
<RULE>Sub-commands MUST run in order. Pointing without scope is guessing. Buffering without pointing is padding. Reporting without buffering is unsupported claims.</RULE>
<RULE>If any ticket lands at 34 points during `estimate-point`, halt the pipeline and loop back to `estimate-scope` to split the ticket. 34-point tickets are NEVER estimated as-is.</RULE>
<FORBIDDEN>
- Eyeballing an estimate without running the pipeline ("this looks like a 5")
- Skipping multi-agent pointing on "obvious" tickets — bias hides in obviousness
- Padding the final number with an arbitrary fudge factor instead of letting PERT sigma do its job
- Reporting a single confidence band; always show 80/90/95%
- Assuming single-repo work without asking
- Running personas sequentially when they can be dispatched in parallel
</FORBIDDEN>
<FINAL_EMPHASIS>
Calibrated estimates build trust. Arbitrary padding destroys it. The pipeline is not optional — it is the source of the calibration. Every number you report must trace to a step. If you cannot trace it, do not report it.
</FINAL_EMPHASIS>Related Skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment. Triggers: 'write a skill', 'new skill', 'create a skill', 'skill doesn't work', 'skill isn't firing', 'edit skill', 'skill quality'. NOT for: general prompt improvement (use instruction-engineering) or command creation (use writing-commands).
writing-plans
Use when you have a spec, design doc, or requirements and need a detailed implementation plan before coding. Triggers: 'write a plan', 'create implementation plan', 'plan this out', 'break this down into steps', 'convert design to tasks', 'implementation order'. Also invoked by develop during planning. NOT for: reviewing existing plans (use reviewing-impl-plans).
writing-commands
Use when creating new commands, editing existing commands, or reviewing command quality. Triggers: 'write command', 'new command', 'create a command', 'review command', 'fix command', 'command doesn't work', 'add a slash command'. NOT for: skill creation (use writing-skills).
verifying-hunches
Use when about to claim discovery during debugging. Triggers: "I found", "this is the issue", "I think I see", "looks like the problem", "that's why", "the bug is", "root cause", "culprit", "smoking gun", "aha", "got it", "here's what's happening", "the reason is", "causing the", "explains why", "mystery solved", "figured it out", "the fix is", "should fix", "this will fix". Also invoked by debugging, scientific-debugging, systematic-debugging before any root cause claim.
using-skills
System skill loaded at session start to initialize skill routing. Not invoked directly by users. Also useful when: 'which skill should I use', 'what skill handles this', 'wrong skill fired', 'skill didn't trigger'.
using-lsp-tools
Use when mcp-language-server tools are available and you need semantic code intelligence. Triggers: 'find definition', 'find references', 'who calls this', 'rename symbol', 'type hierarchy', 'go to definition', 'where is this used', 'where is this defined', 'what type is this'. Provides navigation, refactoring, and type analysis via LSP.
using-git-worktrees
Use when starting feature work that needs isolation from current workspace, or setting up parallel development tracks. Triggers: 'worktree', 'separate branch', 'isolate this work', 'don't mess up current work', 'work on two things at once', 'parallel workstreams', 'new branch for this', 'keep my current work safe'.
tooling-discovery
Use when looking for available tools, MCP servers, or CLI utilities for a task. Triggers: 'what tools do I have', 'is there an MCP for this', 'what's available', 'find a tool for', 'discover tooling', 'what CLI tools exist'. NOT for: documenting existing tools (use documenting-tools).
testing-strategy
Test selection strategy and scope guidance. Triggers: 'which tests should I run', 'test tiers', 'test marks', 'slow tests', 'integration vs unit', 'cross-module regression', 'test scope', 'what should I run', 'select tests', 'test batching'. NOT for: writing tests (use test-driven-development) or fixing broken tests (use fixing-tests).
test-driven-development
Use when user explicitly requests test-driven development. Triggers: 'TDD', 'write tests first', 'red green refactor', 'test-first', 'start with the test'. Also invoked by develop and executing-plans for implementation tasks. NOT for: full feature work (use develop, which includes TDD internally).
tarot-mode
Use when session returns mode.type='tarot', user says '/tarot', or requests roundtable dialogue with archetypes. Triggers: '/tarot', 'use tarot mode', 'roundtable with archetypes', 'tarot personas'. Session-level mode, not task-level.
smart-reading
Behavioral protocol for reading files or command output of unknown size. Loaded automatically for all file reading operations. Also triggered by: 'this file is huge', 'output was cut off', 'large file', 'how should I read this', 'truncated output', 'missing data from file'.