Install
openclaw skills install @wair56/prd-implementation-readyUse when writing, reviewing, or filling gaps in PRDs, product requirements, BRDs, functional specs, or SaaS/admin workflows that must become implementation-ready. Especially useful for business flows, object states, page UX, data sources, permissions, exceptions, finance/payment/reconciliation/profit-sharing, formulas, and post-event writebacks.
openclaw skills install @wair56/prd-implementation-readyThe job is not "fill in a document." The job is to figure out the product together with the user — align on the real need, research the domain, design the whole flow and UX — and then capture that as a doc a developer (or an AI) can implement directly. Work progressively: confirm what the business is trying to do, identify the flow shape, scan business possibilities, reconstruct every business flow, then expand into object flow, data flow, linkage, rules, exceptions, object status changes, data, page structure, and final detail. Do not force a real parallel, master-child, state-machine, event-driven, or cycle workflow into one artificial sequential mainline. Be complete but lean — do not add words, entities, statuses, pages, fields, or components unless they make the product clearer, safer, more usable, or more testable. Never dump every checklist at the user at once, and never let a generated detail enter the PRD without a source or a 待确认 mark.
A good PRD passes one test: a developer or AI can implement it without coming back to ask a single business question. The only thing left open is technical 选型 (framework, library, storage), never business behavior.
Concretely, every one of these must be answered in the doc, not in the reader's head:
If a reader would have to ask "but what happens when…" or "where does this number come from?", it is not done. Do not multiply 待确认. When a safe working口径 can be derived from business anchors, source data, existing system behavior, or a low-risk best-practice default, close the decision with that default and its basis. Use 待确认 + recommended default only when the user explicitly leaves it open, sources conflict, or no safe default exists.
When the user's draft is a downgrade of a doc that already exists, do not silently backfill it into a fresh "complete" version — that creates two contradictory docs. Diff the draft against the existing locked doc, reconcile to its 口径, and ask the user which differences are intentional changes vs accidental omissions. Treat a regression as a question, not a gap to quietly fix.
Definition of Done checks whether the doc is complete. But a complete doc can still describe a clumsy product. A good PRD also has to pass a quality bar: the flow is smooth and the UX is good — not just fully specified. Both bars must hold; completeness without quality ships a well-documented bad product.
So part of the job is to actively make the product better, not just record it:
references/research-and-flow.md)references/page-ui.md)Guide the user toward the better product; do not merely transcribe what they first described. Every improvement is a recommendation until confirmed.
When producing the main PRD file, begin with a business flow atlas before detailed rules, page specs, field tables, or acceptance criteria. Pick the diagram set based on the flow shape:
flowchart for the full path.flowchart per independent flow line.stateDiagram-v2 showing object status changes, allowed transitions, rollback/reopen paths, terminal states, and which flow step triggers each transition.Diagrams clarify structure; they do not replace rules. After each diagram, still write the trigger, preconditions, actors, input/output, persisted object, status changes, exception branches, downstream impact, and testable acceptance criteria.
For a multi-module or multi-side PRD, the 00 主文件 must include an information architecture / mind map before module details so users can immediately see where each function lives. This map complements the business flow atlas: the atlas explains how the business runs; the navigation map explains where users find and operate each capability.
Use Mermaid mindmap or flowchart:
For each node with meaningful difference, mark default entry, target role, permission, data scope, and cross-side / 跨端 linkage. Do not bury this in module text. The reader of 00 should know which side/module/page owns each function before detailed module PRDs begin.
Before locking flows, actively scan for business shapes that are easy to miss. This is especially important for SaaS, marketplace, platform, finance, approval, and partner-collaboration products.
Treat multi-tenant / 多租户 and SaaS compatibility as a first-class possibility, not a late technical detail. Check whether the same customer, same legal entity, account, supplier, contractor, employee, or asset can appear in multiple tenants, multiple organizations, or multiple roles at the same time.
For each possibility, decide whether it is in scope, out of scope, or closed by a recommended default:
Do not add all of these to the PRD as features. Use them as a possibility scan to prevent wrong assumptions. If the answer is "not supported in MVP", write the boundary and the safe behavior.
Many PRD mistakes are not finance mistakes. They are resource-flow mistakes. Use this gate for any controlled resource or value object, not only finance: money, credit, inventory, coupon, points, quota, seat capacity, delivery capacity, task capacity, appointment slots, assets, vehicle energy, content permission, membership rights, API usage, approval authority, visibility rights, or any scarce/controlled thing.
Before writing modules, prove the closed loop:
This is the same thinking behind fund flow, but it also applies to non-finance business. For example, an appointment quota, coupon balance, inventory stock, API quota, and content permission all need source, reserve, allocate, consume, release, trace, and role perspective.
Module PRDs should be easy for humans to read first, then detailed enough for implementation. Do not open a module with dense rule tables unless the user explicitly asks for a checklist-only artifact.
Use this top-level order for each concrete module:
After the reader-first section, write implementation detail inside the page/action/server-flow where it belongs. Do not create separate generic sections for "fields and data source", "status and writeback", and "permissions and idempotency" when those details are easier to understand in the page context.
For each page, include Page Implementation Details:
For server-only automatic flows that do not need page participation, still keep them inside the owning module. Write them as "后台自动流程" or "系统自动处理": trigger/timing, input source, processing rule, persisted object, status/writeback, idempotency/retry, failure/compensation, visibility/log/alert entry, downstream impact, and acceptance checks. Do not hide business behavior in a technical appendix just because no one clicks a page.
"Align the mainline first" is meaningless without saying what a complete mainline is. The mainline is the closed loop of how value/money is created, flows through objects, and is finally settled — not a one-line process summary. A summary like "成本归集 → 应收 → 分润 → 支付" is usually an open line: it emits 应收 but never says how the money comes in or gets collected. Modules hung on an open mainline will not reconcile.
A mainline is not locked until all of these are present and the loop closes end-to-end:
Acceptance bar: can you cut every module out by following the mainline, and does each module map back to a step on it? Does the money loop connect head-to-tail with no open end? If not, the mainline is not locked yet — keep working it before writing any module.
Before locking, the mainline can be challenged and improved (Progressive Workflow #2). Once locked, it becomes an anchor that generic best practices must not override (Operating Rules). Challenge first, anchor after.
Before locking the flow or defaults, you MUST first read what already exists: project docs (design.md, ui-design-spec.md, old PRDs, screenshots), the code/data layer if relevant, and mature market/open-source patterns. Aligning to an existing 口径 beats inventing a new one.
If a more complete version of this exact doc/module already exists in the repo, diff against it first. Do not rewrite a mature PRD back into a draft. Reconcile to its 口径, merge any genuinely new intent, and surface conflicts — handing the team two contradictory docs is worse than handing them none.
Under time pressure this is the first thing skipped. Do not. If you genuinely cannot read sources now, write the affected口径 as 待确认 — never as confirmed.
This is the highest-pressure failure point. The wrong move is to abandon confirmation and write a PRD full of invented-but-unmarked rules. The right move:
Speed and rigor are not in conflict: deliver fast AND mark every unsourced detail. Skipping the 待确认 marks is not "saving time," it is shipping landmines.
A multi-module PRD does not have to be written in one sitting. Writing all modules at once is high-pressure and produces modules that silently contradict each other. Instead:
00_总览) — main flow, core objects, global rules, cross-module dependencies, in/out scope. This is the authority; modules must not contradict it.While writing one module you will often discover a change. Handle it by where the change lands, immediately — do not just note it and keep writing the current module:
00) completely first, then cascade to every module that references it. Never patch it only in the current module.The failure mode this prevents: six modules that each look internally complete but disagree on the same formula/status/wording. Detecting that at final review is far more expensive than propagating each change when you find it. If a change to a confirmed mainline anchor is involved, confirm it with the user before cascading.
Read only the references needed for the current stage:
| Situation | Read |
|---|---|
| Starting a PRD conversation or deciding the next stage | references/stage-gates.md |
| Deciding whether to add an object, state, field, page, component, flow step, table, section, exception, or detailed rule | references/necessity-gate.md |
| Capturing user-agreed business mainline, obvious domain premises, non-negotiable constraints, or preventing later rewrites from losing them | references/business-anchors.md |
| Reader may not understand the business, roles, domain terms, business model, special concepts, or value/money flow | references/business-context.md |
| Need broad coverage across business objects, object flow, or information introduced during each step without dumping all questions at once | references/coverage-matrix.md |
| Need to clarify data flow, cross-object linkage, side effects, writebacks, notifications, statistics, locks, rollback, or downstream impacts | references/data-flow.md |
| Requirement says a transaction completion, payment success, audit pass, refund success, callback, batch creation, sync/import, or cancellation updates another object/field such as last time, payment month, eligibility marker, summary counter, or next-period flag | references/data-flow.md, then references/business-consistency.md |
| A list/detail field such as last time, last month, last paid-through period, handled-through period, next period, progress marker, or eligibility marker is used to default, lock, or limit the next create/action flow | references/data-flow.md, then references/business-consistency.md and references/page-ui.md |
| Requirement involves any controlled resource/value such as inventory, coupon, quota, capacity, permission, entitlement, slot, balance, support credit, or visibility right | references/coverage-matrix.md, then references/data-flow.md, references/business-consistency.md, and domain-specific references |
| Requirement mixes platform-side/admin-side/finance-side/operator wording, or a page can switch viewed subjects | references/page-ui.md, then references/business-context.md and references/coverage-matrix.md |
| Requirement says "single total", "summary only", "按总额", "不按明细", or removes a detail dimension used for analysis | references/data-flow.md and references/business-consistency.md |
| Requirement contains formula operators or vague formula nouns such as guarantee/保底, max/min/取大取小, cap/floor/封顶兜底, tier/阶梯, threshold/门槛, base amount, adjustment, rate, coefficient, or "plus/minus items" | references/business-consistency.md, then references/coverage-matrix.md and domain-specific references |
| Requirement includes annual/prepaid/cross-period costs, one-time payments recognized over time, or amortization/accrual | references/finance-operations.md, then references/data-flow.md |
| Requirement involves costs entering bills/reconciliation/profit sharing, payroll, vehicle fees, supplier costs, insurance, or paid/unpaid cost inclusion | references/finance-operations.md, then references/business-consistency.md and references/data-flow.md |
| Requirement involves customer/shipper billing, monthly charter, transport-volume billing, platform service fee, profit sharing, settlement, or duplicate reconciliation | references/finance-operations.md, references/data-flow.md, and references/business-consistency.md |
| Requirement creates payment orders or says payment completion triggers downstream business actions, supplier output, payroll distribution, push, callback, unlock, or recovery | references/finance-operations.md, then references/data-flow.md |
| Requirement involves support credit, operating credit, frozen funds, contractor advances, grant, occupation, repay, release, or centralized fund governance | references/finance-operations.md, then references/page-ui.md |
| Requirement has missing required links such as unmatched vehicle, customer, supplier, contract, source detail, or external record | references/page-ui.md, references/data-flow.md, and references/review-checklists.md |
| User describes workflow, says "你来决定", or flow seems awkward | references/research-and-flow.md |
| Reviewing multiple docs, finding contradictory口径, or checking money / formula / fund movement computability | references/business-consistency.md |
| Finance operations include cost periods, fund priority, fund-flow, support credit, recharge/payment, sync data, supplier states, reconciliation, invoice, red flush / void, or cross-module jumps | references/finance-operations.md |
| Details may be unsupported, data source unclear, state axes / initial states uncertain, technical terms or 计价口径-type words appear | references/source-language-guards.md |
| Discussing target端, touchpoints, menus, page Tabs, UX, component choice, UI style, design.md, interaction habits | references/page-ui.md |
| User asks for full PRD, multiple docs, index/global rules, final structure | references/output-structure.md |
| Before claiming a PRD is complete, or reviewing an existing PRD | references/review-checklists.md |
stateDiagram-v2 diagrams for key object status changes when objects have lifecycles.status=1 / incomeStatus in (...) / code enums into PRD正文.Any of these means: stop and return to the progressive workflow.
For a rough requirement, start with: (1) one-sentence plain-language business goal, (2) known/unknown about scope/users/objects/risk, (3) initial flow-shape judgment and business flow atlas plan, clearly marked as inferred if needed; if multiple flows may run in parallel, name each flow and its convergence points, (4) inferred high-risk control loops, especially repeated/cyclic operations where a last/previous/paid-through/handled-through field may drive the next create/action flow, and (5) the 3-6 highest-value confirmation questions with recommended defaults. Do not open with exception matrices, page-level Tab tables, or detailed state machines before the business and flow shape are clear.