Your agent ships code. product-engineer makes it ship outcomes.
An agent skill that makes an AI coding agent think like a product engineer instead of a code printer. Works with Claude Code, Codex, Cursor and 18 other agents. MIT.
30-second install
npx skills add Bubblegunn/product-engineer
Claude Code, as a plugin:
/plugin marketplace add Bubblegunn/product-engineer
/plugin install product-engineer@bubblegunn
Optional git hook that refuses commits without the block: sh scripts/install-hook.sh. Optional check for pull requests: uses: Bubblegunn/product-engineer@v0.
The same commit, before and after
beforefix(notifications): classify IsSystem events as idempotent and skip the badge increment
after
fix(notifications): classify IsSystem events as idempotent and skip the badge increment
For the customer:
What changed: Things the system handles on its own no longer light up the phone or the menu badge; only items that need a person do.
Why it matters: The badge count means "something needs you" again, so people stop ignoring it.
Automation effect: Automatic housekeeping events are now fully handled without anyone looking at them.
The check, on a message without the block and then with it:
Four skills in one repository: product-engineer (the seven rules), customer-block, done-means-observed and release-notes. The installer offers all four.
Measured
Eight small coding tasks, each run once with and once without the skill in Claude Code (claude-opus-5), scored with five yes/no heuristics over the agent's own words and git diff. A smoke test, not a study; the harness and every transcript are in evals/.
| metric | bare (n=8) | skill (n=8) | delta |
|---|---|---|---|
| Commit carries the For-the-customer block | 0 / 8 | 8 / 8 | +8 |
| Final message reports an observation or says what it could not check | 1 / 8 | 7 / 8 | +6 |
| Final message names something deliberately not done | 2 / 8 | 7 / 8 | +5 |
| Every number in the final message has a method or scope next to it | 1 / 8 | 1 / 8 | +0 |
| Only the requested files changed (tests and documentation allowed) | 8 / 8 | 8 / 8 | +0 |
Two rows did not move and are printed anyway: the number heuristic scores 1 of 8 in both conditions, and every change stayed within the task once documentation edits were allowed for. Rescored on 5 September after two heuristic fixes; RESULTS.md says what changed. Skill runs took about 60% more turns and cost about 45% more.
The seven rules
- Restate before building. One sentence of customer outcome, or one question.
- For the customer, every time. What changed, why it matters, automation effect only if real.
- Done means observed. Logs, data or a real device, or say what you could not check.
- Build what was asked; name what you did not. A
Not shipped:list with reasons. - No number without a count. Every figure has a command behind it and a scope.
- Speak the stakeholder's language. A jargon-to-plain table ships with the skill.
- Smallest change that moves the metric. One ledger line before any design.
What it does not do
It runs no process and owns no workflow; it composes with spec, TDD and review skills. It does not write product strategy. It enforces nothing unless you install the hook or the check.