Aspirina po
Product Owner - scans codebase and creates or amends GitHub issues with PRD. Use when: PRD, feature, issue, create issue, amend issue, what should we build, plan feature, design feature, scope, requirements.
install
source · Clone the upstream repo
git clone https://github.com/leandronsp/aspirina
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/leandronsp/aspirina "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/po" ~/.claude/skills/leandronsp-aspirina-po && rm -rf "$T"
manifest:
.claude/skills/po/skill.mdsource content
Product Owner
Scan the codebase, write a PRD, and open a GitHub issue.
Usage
- Create a GitHub issue from the given feature description/po <prompt>
- Create issue with explicit priority/po <prompt> --priority <P0|P1|P2|P3>
- Ask user what to build, then create the issue/po
- Append a revision to an existing issue/po amend <issue_number> <summary>
If no
--priority is given, ask the user which priority to assign.
Workflow
- Scan the codebase to understand current state:
- Read
to see existing modules and exportssrc/lib.rs - Explore relevant source files for what's already implemented
- Identify gaps, dependencies, and integration points
- Read
- Read CLAUDE.md if the prompt maps to a known roadmap item
- Write the PRD as the issue body (no local file)
- Create GitHub issue with conventional title and PRD body
Issue Title
Conventional format:
feat(<module>): <short description>
Examples:
feat(matrix): add batch multiplicationfeat(neural_network): implement learning rate decayfeat(computer): add stack operations to CPUfix(alu): handle carry overflow in 4-bit addition
Rules:
- Lowercase after prefix
- Present tense imperative ("add", not "added")
- Under 70 characters
- Module name matches
orsrc/*.rs
or domain areasrc/computer/*.rs
Issue Body (PRD)
## Overview What we're building and why. ## Problem Statement What user problem does this solve? ## Current State What already exists in the codebase relevant to this feature. ## Requirements - [ ] R-1: Description ## Technical Approach - Affected modules - New structs/traits needed - Data flow and ownership model ## Acceptance Criteria Given/When/Then scenarios. ## Out of Scope What we're explicitly NOT doing.
Creating the Issue
gh issue create \ --title "feat(<module>): <description>" \ --body "$(cat <<'EOF' <PRD content> EOF )" \ --label "prd" \ --label "P2: medium"
Replace
"P2: medium" with the chosen priority label (P0: critical, P1: high, P2: medium, P3: low).
If the
prd label doesn't exist, create it first:
gh label create prd --description "Product Requirements Document" --color "0075ca"
Report the issue URL to the user when done.
Amending an Issue
When called with
/po amend <issue_number> <summary>, the PO appends a revision to the existing issue. The original PRD is immutable — never edit or overwrite it.
Amend Workflow
- Fetch the current issue using
gh issue view <number> --json title,body - Read the summary provided by the engineer
- Research the codebase if needed to validate the proposed changes
- Append a revision block to the issue body:
gh issue edit <number> --body "$(cat <<'EOF' <original body unchanged> --- ## Revision <N> — <date> **Source:** implementer research ### Changes - <what changed and why> ### Updated Requirements - [ ] R-X: <new or modified requirement> ### Removed/Deferred - ~~R-Y: <requirement removed or moved to out of scope>~~ EOF )"
Amend Rules
- Never modify the original PRD text — append only
- Increment revision number (Revision 1, Revision 2, ...)
- Each revision is self-contained — reader can understand what changed without diffing
- Link back to the source — who requested the change and why
- The PO may push back on the amendment if it contradicts product goals — surface disagreement to the user
Constraints
- Rust — ownership, borrowing, lifetimes
- No external deps unless strictly necessary (zero deps currently)
- Core library is the priority — matrix, calc, layer, neural_network
Pipeline
/po <prompt> -> GitHub issue -> /dev -> /review -> /commit -> /pr ^ | | | (PRD feedback) +--- /po amend --+