5.0 KiB
name, description, tags, related_skills
| name | description | tags | related_skills | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| gitea-scoping-audit | Audit a Gitea backlog for scoping quality — identify thin tickets, add acceptance criteria, break epics into subtasks, close duplicates, and post actionable guidance comments. Use when Alexander asks to "scope", "ground", or "break out" tickets. |
|
|
Gitea Scoping Audit
When to Use
- Alexander asks to "scope", "ground acceptance criteria", or "break out tasks"
- Backlog has thin tickets (2-3 sentence descriptions with no AC)
- Auto-generated tickets from Kimi/Gemini burn sessions need grounding
- Before sprint planning — tickets need to be executable
The Scoping Quality Test
Read every open issue body and classify:
has_ac = any(kw in body.lower() for kw in ['acceptance criteria', '- [ ]', '- [x]', 'criteria'])
has_deliverables = any(kw in body.lower() for kw in ['deliverable', 'output', 'produces'])
has_steps = any(kw in body.lower() for kw in ['step ', 'steps', '1.', '## how', '## implementation'])
body_len = len(body)
if body_len < 100:
quality = "THIN" # Almost empty, needs full rewrite
elif has_ac and has_steps:
quality = "GOOD" # Ready to execute
elif has_ac or has_deliverables:
quality = "OK" # Minimal but workable
elif body_len > 200 and not has_ac:
quality = "NEEDS AC" # Has content but no acceptance criteria
else:
quality = "NEEDS SCOPE" # Vague, needs breakdown
What a Well-Scoped Ticket Looks Like
Every ticket should have:
- Concrete deliverables — specific file names, not "implement a system"
- Input/output schema — what goes in, what comes out (JSON examples)
- Acceptance criteria —
- [ ]checkboxes that are testable - Dependencies — "depends on #N" if sequenced
- Implementation guidance — not full code, but enough that the implementer knows WHERE to start
Template for scoping comments:
## Ezra Scoping Pass
### Deliverable: `scripts/specific_name.py`
**Input:** [what it takes]
**Output:** [what it produces, with example schema]
### Subtask 1: [first concrete step]
**File:** [exact path]
**What it does:** [one sentence]
### Subtask 2: [second step]
...
### Acceptance Criteria
- [ ] [Testable condition 1]
- [ ] [Testable condition 2]
- [ ] Test: [specific test to run]
Common Scoping Patterns
Pattern 1: Pipeline Decomposition
When a ticket describes a multi-stage pipeline (e.g., "build video analysis"):
- Create one ticket per stage with explicit input → output
- Add dependency chain: #123 → #124 → #125
- Final ticket is the orchestrator that calls all stages
- Each stage is independently testable
Pattern 2: Research → Decision → Implementation
When a ticket mixes research with building:
- Split into: research spike (produces a finding document) + implementation ticket (references the finding)
- Research ticket closes with a recommendation, not code
- Implementation ticket opens only if research recommends proceeding
Pattern 3: Epic → Sprint Tickets
When a ticket is really an epic (too big for one PR):
- Post a breakdown comment listing subtasks
- Each subtask should be ≤500 lines of code change
- First subtask should be "scaffold + tests" that subsequent subtasks fill in
Pattern 4: Duplicate Consolidation
When multiple tickets cover the same ground:
- Close the thinner one with "Duplicate of #N"
- Add the unique content from the closed ticket as a comment on the surviving ticket
Steps
-
Fetch all open issues via execute_code + urllib (same as gitea-board-triage)
-
Classify each by scoping quality using the test above
-
For THIN tickets: Either close (if truly empty) or rewrite with full scope
-
For NEEDS AC tickets: Post a scoping comment adding:
- Concrete deliverable file names
- Input/output examples with JSON schemas
- [ ]acceptance criteria- Implementation hints
-
For NEEDS SCOPE tickets: Break into subtasks if too big, or add the missing structure
-
Assign all — no unassigned tickets after a scoping pass
-
Identify dependency chains and note them in comments
Pitfalls
-
Don't over-scope creative/research tickets. A research spike is "done" when it produces a finding, not when it ships code. Acceptance criteria for research: "Document exists at path X with sections Y and Z."
-
Don't scope on behalf of Alexander's judgment calls. Tickets like "soul rewrite" or "dissolution" need Alexander's input, not Ezra's AC.
-
Auto-generated tickets often need the MOST scoping. Kimi/Gemini produce volume with thin descriptions. Every auto-generated ticket needs: specific files, test commands, and "done looks like X."
-
Retract when wrong. If you misread context (e.g., flagging deliberate backlog generation as undirected churn), update your comment immediately.
-
One scoping comment per ticket, not a conversation. Post a single comprehensive comment, not multiple small ones.