Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+22 more

    Writing PRDs — Problem-First Specs, Metrics and Non-Goals

    1

    Writes PRDs, one-pagers and PR-FAQs that lead with an evidenced problem, explicit non-goals and testable criteria.

    Free

    Security scanned
    Writing PRDs — Problem-First Specs, Metrics and Non-Goals

    Writing PRDs — Problem-First Specs, Metrics and Non-Goals

    Example session with this skill installed

    Write a PRD for "saved filters" on the invoice list.

    Context

    • We're a small-business invoicing app. The invoice list has filters (status, client, due date, amount) but they reset every visit.
    • Support tagged 140 tickets "filters" last quarter, mostly "how do I keep my filters?".
    • In 12 customer interviews, 9 said they rebuild the same view every morning (e.g. "overdue more than 30 days for client X").
    • Analytics: 41% of invoice-list sessions apply 2 or more filters.
    • Goal from leadership: cut "filters" tickets in half.
    • One team (web + API), PM is Dana Ruiz, aiming for Q1 2027.
    • Read your context and instructions
    • Compiled the writing prds

    Artifact choice: mini-PRD. This is a well-understood change for one team with low risk, so a full PRD or PR-FAQ would be more than it needs. Numbers below come only from your context; every target you didn't give is marked TBD and listed under open questions.


    PRD: Saved filters on the invoice list

    Owner: Dana Ruiz ·

    Status: Draft ·

    Target: Q1 2027 ·

    Links: design: TBD · engineering design doc: TBD · support tag: "filters"

    TL;DR

    Let users save a named filter combination on the invoice list and return to it in one click. The goal is to halve "filters" support tickets, starting from 140 last quarter.

    Problem

    Users who triage invoices daily rebuild the same filter combination on every visit because filters reset.
    Evidence:

    • 140 support tickets tagged "filters" last quarter, mostly asking how to keep filters.
    • 9 of 12 interviewed customers rebuild the same view every morning (e.g. "overdue > 30 days for client X").
    • 41% of invoice-list sessions apply 2+ filters, so repeated multi-filter use is common.

    Goals

    1. Users can get back to a recurring view without rebuilding it.
    2. Cut "filters" support tickets by half.

    Non-goals

    Sharing saved filters with teammates. Single-user first. Sharing raises permission questions this PRD does not answer.

    • Filters on other lists (clients, payments). Invoice list only.
    • New filter fields or operators. Only existing filters can be saved.
    • Scheduled reports or alerts from a saved filter.

    Remembering the last-used filter automatically. This PRD covers explicit saves only. Auto-restore is a separate decision.

    Target users

    Account owners and bookkeepers who open the invoice list at least daily to chase overdue invoices.

    User stories

    • As a bookkeeper, I want to save "overdue > 30 days, client X" under a name, so I can open it each morning in one click.
    • As a user with several routines, I want to rename and delete saved filters, so my list stays relevant.

    Requirements

    Functional

    • R1. Save the current filter combination with a user-given name.
    • R2. List the user's saved filters on the invoice list; selecting one applies all of its filters.
    • R3. Rename and delete a saved filter.
    • R4. Saved filters are private to the user who created them.

    Non-functional

    • R5. Applying a saved filter returns the same results as applying the same filters manually.
    • R6. Controls are keyboard-operable and labeled for screen readers.
    • R7. Maximum saved filters per user: TBD (see Q2).

    Acceptance criteria

    AC1 (R1): Given a user with status=Overdue and client=X applied, when they save it as "Morning chase", then "Morning chase" appears in their saved filters.

    AC2 (R2, R5): Given a saved filter "Morning chase", when the user selects it on a fresh visit, then the list shows exactly the invoices matching status=Overdue and client=X.

    AC3 (R1): Given a user saving a filter, when the name is empty, then the save is rejected with a message asking for a name.

    AC4 (R1): Given a saved filter named "Morning chase", when the user saves another with the same name, then they are asked to rename or overwrite.

    AC5 (R3): Given a saved filter, when the user deletes it, then it no longer appears and the current results are unchanged.

    AC6 (R4): Given user A's saved filter, when user B in the same account opens the invoice list, then A's filter is not listed.

    AC7 (R2): Given a saved filter that references a deleted client, when the user selects it, then the remaining filters apply and the user sees that the client filter was dropped.

    AC8 (R7): Given a user at the saved-filter limit, when they try to save another, then they are told the limit and how to delete one.

    Success metrics

    MetricTypeBaselineTargetTimeframe
    "filters"-tagged support tickets per quarterLagging140≤ 70First full quarter after GA
    Share of daily invoice-list users with ≥ 1 saved filterLeading0 (new)TBD30 days after GA
    Share of multi-filter sessions started from a saved filterLeading0 (new)TBD60 days after GA
    Invoice-list load time (p95)GuardrailTBD (measure before build)No regression vs. baselineOngoing from beta

    Scope

    Now: R1–R7 on web. Deferred: saved filters in the mobile app; a default saved filter that opens automatically.

    Dependencies and assumptions

    • The API can store per-user preferences. Unvalidated. Confirm with engineering (Q3).
    • Ticket tagging stays consistent before and after launch, so the ticket metric is comparable. Unvalidated. Confirm with Support.
    • The 12 interviewees represent daily users. Partly validated: consistent with the 41% multi-filter sessions.

    Risks

    Low discovery: users don't notice the save option. Mitigation: show the save prompt after a user applies 2+ filters. Trigger: leading metric below target at 30 days.

    • Stale filters after clients are deleted or renamed. Mitigation: AC7 behavior.

    Open questions

    #QuestionOwnerResolve by
    Q1Targets for the two leading metricsDana Ruiz2026-10-22
    Q2Saved-filter limit per userDana Ruiz + eng lead2026-10-22
    Q3Where per-user preferences are stored (design doc)Eng lead2026-10-29
    Q4Baseline p95 load time for the invoice listEng lead2026-10-29

    Rollout

    Feature-flagged beta for interviewed customers who opt in, then GA. "Launched" means GA to all web users with AC1–AC8 passing.


    Anti-pattern lint: problem cited with evidence before any solution ✔ · non-goals specific ✔ · every metric has a target and timeframe, or a TBD with an owner and date ✔ · acceptance and success in separate sections ✔ · no architecture or schema in the PRD ✔.

    Next steps

    1. Dana resolves Q1–Q2. Replace each TBD with a real number before review.
    2. Engineering writes the design doc (storage, API) and links it in the header.
    3. Turn AC1–AC8 into test cases (developing-features).

    Connects securely to your tools. The creator never sees your data.

    About this skill

    Many PRDs fail in predictable ways. They describe a solution before anyone has shown the problem exists. Their metrics say "increase engagement" with no number or date. They have no non-goals, so scope grows during review. And they mix "we shipped it" with "it worked". This skill makes the agent write product requirements that avoid those failures.

    Workflow:

    1. Decide whether and what to write. A quick opportunity check using Marty Cagan's 10 questions. For unproven strategic bets, it writes an Amazon PR-FAQ first.
    2. Pick the artifact weight. One-pager or mini-PRD for small, one-team changes; full PRD for new or cross-functional products; PR-FAQ when the value is unvalidated. The engineering design doc (the "how") stays separate.
    3. Problem before solution. Problem statement, evidence and target users come before any solution text.
    4. Metrics and acceptance criteria. North Star, leading and lagging metrics, each with a target and timeframe, plus guardrails. Acceptance criteria in Given/When/Then, kept in a separate section from success criteria.
    5. Lint against anti-patterns before sharing: solution-first writing, vanity metrics, missing non-goals, untestable requirements, smuggled implementation detail.

    Reference files:

    • prd-structure.md: the 14-section PRD skeleton with one line of guidance per section, plus the artifact ladder.
    • metrics-and-acceptance.md: North Star and guardrail metrics, acceptance vs. success criteria, and RICE, MoSCoW, Kano and Impact/Effort.
    • pr-faq.md: the Working Backwards press release and internal/external FAQ template.
    • shared/.../communication.md: answer-first structure (Minto Pyramid, SCQA), so the PRD opens with the recommendation.

    It triggers on "write a PRD", "product spec", "one-pager", "PR-FAQ", "define requirements", "scope this feature", or a rough feature idea that needs a problem framed.

    What sets it apart: it won't invent numbers. Missing targets are marked TBD and flagged with an owner. It also never commits anything.

    Free and MIT-licensed, part of the claude-skills-czl collection.

    Source on GitHub: this skill · full repository

    How to use

    Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Free forever

    No account required to browse

    Trust & safety

    Security scanned

    Verified clean 11 days ago

    • Free to download with an account

    Listed11 days ago

    What's inside

    Frequently Asked Questions