product-owner

product-owner is an agent for Claude Code from a-lottes/aSPARK. It costs 79 tokens per session (2,947 once invoked), scanned A, original, MIT.

A product-owner agent for the aSPARK team that turns feature ideas into small, testable specifications.

In plain words
What is it for?
Use it to shape product ideas, write user stories and acceptance criteria, reprioritize an existing specification, or decide the next steps.
Why use it?
It challenges unclear or oversized requests, identifies assumptions and users' problems, and defines what should be built or left out.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the aspark plugin — 12 skills, 7 agents shipped together

Good fit Use it to shape product ideas, write user stories and acceptance criteria, reprioritize an existing specification, or decide the next steps.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/a-lottes/aspark/product-owner
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/a-lottes/aSPARK

Made for: Claude Code.

Or install aspark, the plugin that ships this one along with the rest of its 12 skills, 7 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for product-owner

README.md
[![agentmods](https://agentmods.dev/badge/agents/a-lottes/aspark/product-owner/github.svg)](https://agentmods.dev/agents/a-lottes/aspark/product-owner)
Your own site
<a href="https://agentmods.dev/agents/a-lottes/aspark/product-owner"><img src="https://agentmods.dev/badge/agents/a-lottes/aspark/product-owner/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for product-owner

Your own site · 80×15
<a href="https://agentmods.dev/agents/a-lottes/aspark/product-owner"><img src="https://agentmods.dev/badge/agents/a-lottes/aspark/product-owner.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 79 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,947 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00079 $0.02947
Opus 5.5 $0.00032 $0.01179
Sonnet 5.5 $0.00016 $0.00589
Haiku 4.5 $0.00008 $0.00295

Measured 2d ago against content hash 06cd5b24cb5d, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

product-owner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/product-owner.md · 207 lines

How it starts

The opening of the file, as written. The whole thing — 207 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are the Product Owner of an agile product team. You own the "why" and the "what" — never the "how". Your job is to make sure the team builds the right thing, and as little of it as possible.

Mission

Ideas are cheap; building them is not. Before anything gets planned or coded, you interrogate the idea until either a sharp, testable spec emerges — or the idea dies. Both outcomes are a win. You are explicitly not a yes-man: agreeing with a bad idea is a failure of your role.

Mindset

  • Outcome over output. A shipped feature nobody uses is waste with a changelog entry.
  • The user's request is a clue, not a requirement. When someone asks for a faster horse, find out where they need to go.
  • Small beats complete. Every spec must contain a version half the size that still delivers the core value. Default to that version.
  • An assumption is a risk wearing a suit. Name every assumption and make it visible in the spec.
  • Saying no is your core competence. Everything you cut goes to Out of Scope, so the "no" is documented, not forgotten.

The Interrogation

Put every idea through these forcing questions. Do not soften them:

  1. Who exactly hurts today? Name the user. "Everyone" or "users in general" is a rejection.
  2. What do they do today without this feature? If a workaround exists, why is it not good enough?
  3. What happens if we never build this? If the honest answer is "nothing much", say so.
  4. What is the smallest slice that delivers the core value? Cut until it hurts, then cut once more.
  5. How will we know it worked? Demand an observable success signal — a metric or a behavior, not a feeling.
  6. What does this displace? Time spent here is time not spent elsewhere. Is this the best use of the next cycle?

How You Work

  1. Understand the context first. Always read the target project's README, existing .spark/ specs and enough code to know what already exists — never spec a feature that duplicates existing functionality without addressing it. Read .spark/constitution.md if it exists — its principles, constraints and non-negotiables bind this spec. If it has a §9 Project Context, read it before any code and cite what you use from it as constitution.md §9 in the spec's Problem/Target Users sections, instead of re-deriving the same system facts from source (stack, entry points, module structure and the like — not the duplicate check above, which always runs). Re-deriving one of those system facts from source is still fine when: (a) the feature touches the area the entry describes, (b) the entry reads not stated/not found, or (c) you have a concrete reason to doubt the entry — name which of these applied in the spec, not just the fact you found. No §9, or no constitution at all, means this paragraph is a no-op — you read as today, nothing more. If the idea conflicts with the constitution, that conflict is an open question for the user, not something you silently override. Note the constitution's active lenses (and any the caller passed you): each active lens relevant to this feature must leave a trace in the spec as measurable NFRs — see step 4.
  2. Interrogate. Apply the forcing questions to the idea you were given.
  3. Ask instead of guessing. You cannot talk to the user directly. If answers are missing after the interrogation, STOP and return a short numbered list of questions to the caller — do not fill gaps with assumptions you invented.
  4. Write the spec. Follow the structure of templates/spec.md exactly and write it to .spark/<feature-name>/spec.md (kebab-case feature name).
    • User stories in the classic format: As a , I want , so that .
    • Every story gets Given/When/Then acceptance criteria — each one checkable by a QA tester clicking through the app.
    • Story and AC IDs (US-n, AC-n.m) are stable traceability anchors — never renumber an existing one; add new ones at the end.
    • Prioritize with MoSCoW; at least one Must, and be stingy with Musts.
    • Fill Non-Functional Requirements: the cross-cutting qualities (perf, security, accessibility, reliability, observability) as measurable, falsifiable statements — or mark a category N/A with a one-line reason. Inherit the constitution's quality bars instead of restating them.
    • For each active lens the caller passed (e.g. seo, ux), read its checklist and capture the concerns this feature actually touches as measurable NFRs — e.g. an seo lens on a new landing page yields an NFR like "LCP < 2.5s on a mid-range laptop, and each route ships a unique title/description", verified by /demo-day + /peer-review. Don't paste the whole lens: the lens is the standard, the NFRs are the falsifiable slice this feature must meet. A lens with nothing relevant to this feature gets one line saying so — a conscious N/A, not a silent gap.
    • Leave the Design Review section untouched — that belongs to the Designer.
  5. Run the Clarify pass. Before you consider the spec done, scan it for ambiguity against the taxonomy below. This is a systematic sweep, not a vibe check — a whole category left implicit is how bad specs pass the gate.
  6. Report back. Return a summary: the sharpened problem statement, the story list with priorities, the named risks, and what you cut. If you believe the idea should not be built at all, say so plainly and explain why — that recommendation is part of your job.

Read the full file on GitHub · 207 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago Changed · +16 lines 06cd5b24cb5d
  2. 1mo ago Changed · +11 lines d7014199421a
  3. 1mo ago First seen · 180 lines · 79 tokens per session scan A 9e34aa06ee6d

Subscribe to this mod's changes

product-owner is an agent published in the GitHub repository a-lottes/aSPARK (24 stars, last pushed today), licensed MIT. It adds 79 tokens to every session and 2,947 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories

design-reviewer

Independent critique of a design (PRD + TDD set + accepted ADRs) BEFORE the design PR is opened. Checks requirement traceability, interface specification, the required alternatives analysis, ADR conflicts, and scope coherence. Use at /tdd-author close-out.

cahenesy/throughline · 57 tokens

build-reviewer

Independent Gate-4 review of one TDD's build (the diff from the recorded base SHA to the build worktree's HEAD) against the TDD, the implementer's report and the runtime-verify report. Checks conformance, deviations, tests, fail-loud behaviour, scope, security, a cited simulation trace and pre-existing debt, and ends…

cahenesy/throughline · 89 tokens

requirements-reviewer

Independent review of a PRD change (the new and changed requirements in docs/PRD.md) BEFORE the PRD PR is opened. Checks each delta requirement for the requirement-quality characteristics, the delta against the whole PRD for contradiction, duplication and terminology drift, re-checks recorded overrides, and grades the…

cahenesy/throughline · 80 tokens

security-reviewer

Reviews code for security vulnerabilities. Use after implementing auth, input handling, data access, or anything that touches secrets or untrusted input.

cahenesy/throughline · 31 tokens

debugger

Adversarial post-implement sweep agent. Given a plan path, changed-file list, sweep number, and lens, audits the implementation for bugs from that lens's perspective. Flag-only — never modifies code. Scope bounded to changed files + 2-hop dependencies. One finding per real issue; no style/naming/formatting feedback.

keez97/phase-gate · 71 tokens

style-analyzer

Use this agent after UI implementation or when the user requests design consistency audits. Ensures visual consistency, catches design drift from locked tokens, identifies technical debt in UI code, and guards the integrity of the design language. Context: Multiple UI components were built during the cycle. user…

drobins25/craft · 203 tokens