Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Crystallize the product vision — problem, solution thesis, principles, non-goals, success criteria, target actors, scope boundaries, risks, and a glossary stub — as the first artifact in an Agent-Driven Development project. Use when asked to draft a proposal, write the proposal, start a new ADD project, capture the product vision, or produce a PROPOSAL.md.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 99% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 288% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 288% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 241% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 294% | 0% |
Produce a PROPOSAL.md that anchors an Agent-Driven Development project at the vision layer. The document states the problem in the user's domain language, the thesis of the solution, the principles that will constrain every later decision, the non-goals that prevent scope creep, the testable success criteria, the target actors, the first-milestone scope boundaries, the risks and assumptions, a small glossary stub, and any genuinely unresolved questions. An agent reading this document alone can set the direction for downstream artifacts — /use-cases derives its actors and scenarios from it, /domain draws its initial glossary from it, /architecture inherits its principles and non-goals — without needing to re-ask the user what the project is about or why it matters.
PROPOSAL.md is the first file written in an ADD project and has no prior artifacts to read. It is produce-once and read-many: every later phase cites it for grounding. A weak proposal produces weak downstream artifacts; treat every section as a commitment that propagates.
Read-set size: 1 required + up to 2 optional. The read count at this step is 0 prior ADD artifacts — the proposal is the seed. Read the user prompt word-for-word; subtle hints about users, scale, or constraints are often the deciding input for a section.
Proposal generation proceeds in six phases: intent extraction, problem-and-thesis draft, principles-and-non-goals, success-criteria-and-actors, scope-risks-glossary, and validation. Phases are sequential — each phase feeds the next — but revisit earlier phases if a later one reveals a gap or contradiction.
Read the user prompt and any reference material end-to-end. Extract four things into a working list:
Repository, Push, Collaborator; Order, Cart, Line Item). These seed § 9 Glossary and hint at actors.If any of the four categories is empty, do not invent content — note the gap as an open question in Phase 6.
Pick the product name: prefer the name the user uses verbatim; if absent, use a bracketed placeholder like {ProductName} throughout and list "confirm product name" as an open question.
Draft § 1 and § 2 in that order. § 1 must precede § 2 so the thesis answers a named problem.
§ 1 Problem Statement. Two to five paragraphs in the user's domain language. Answer: what is broken today, for whom, why existing alternatives do not suffice. Lead with a concrete scenario where possible — "today, a team that wants to collaborate on a shared git repository behind their firewall must choose between standing up their own GitLab, paying per-seat for a hosted product, or scripting raw git over SSH" — rather than abstractions ("current solutions have gaps"). Name the existing alternatives explicitly and say what each one gets wrong.
Keep the problem statement solution-free. The moment the prose says "we need X" or "an API that does Y", stop and rephrase in pure problem language. The thesis in § 2 is where solution language begins.
§ 2 Solution Thesis. Two to four paragraphs. Start with a single sentence answering "what we will build" in domain terms. Follow with elaboration of the core insight that makes the solution work — what does the solution know or do differently that the alternatives do not? A thesis is not a feature list. "We will build a content-addressable storage layer that never re-transmits bytes it has seen before" is a thesis. "We will build a CLI with push, pull, clone, and init subcommands" is a feature list.
The thesis must be defensible. A reader should be able to ask "why will this work when the alternatives did not?" and the paragraphs must answer. If the answer is missing, the thesis is weak — go back and strengthen it before writing principles.
Draft § 3 and § 4 together. They are complementary — principles commit to a shape; non-goals commit to an absence.
§ 3 Core Principles. Three to seven bullets. Each principle is a constraint on every later decision, followed by a one-line rationale. Test each candidate principle with the falsification question: "if we deleted this principle, would we build anything differently?" If the answer is no, it is a platitude — drop it. Real principles read like: "server owns all business logic, clients are dumb — clients can be rewritten or replaced without touching invariants"; "content-addressable protocol, never re-transmit known bytes — the protocol scales with change volume, not data volume"; "every write is atomic — partial states are never observable".
Principles are scarce on purpose. Seven is a soft upper bound; more than seven and the list loses force. If the product has a tenth candidate principle, fold similar ones together or demote one to an ADR that comes later in /architecture.
§ 4 Non-Goals. Bulleted list. Each entry pairs a realistic alternative scope with a one-line reason it is excluded, in the pattern {capability} — {why not}. Non-goals must be plausibly expectable — "we will not build a rocket ship" is useless; "we will not provide fine-grained per-branch access control in v1 — the model is repository-level and adding per-branch roles is a separate design effort" is useful. Aim for at least as many non-goals as principles; well-chosen non-goals save more downstream time than any other section.
If the user did not state exclusions explicitly, derive non-goals from the space of features a reader might reasonably expect given § 1 and § 2 — and cut them, with reason.
Draft § 5 and § 6.
§ 5 Success Criteria. Three to seven bullets, each measurable or testable. A success criterion is one of two shapes:
fetch operations on a 4-core VM with p99 latency < 2s"; "adding a new backend plugin requires no changes to crates/core".getting-started guide works end-to-end on a clean Ubuntu LTS VM".Reject vague candidates. "Easy to use" is not a criterion — "a first-time user completes task X in ≤ N minutes without reading docs beyond --help" is. If a criterion cannot be mechanically verified, rewrite it or drop it.
Criteria must be at the vision level, not at a feature level. "The push command supports --force" is a feature, not a success criterion.
§ 6 Target Users / Actors. One paragraph per actor class. Name each actor with a short capitalised singular noun (Operator, Collaborator, Contributor, Viewer) and a one-line role description. Three to seven actors typical. Full actor modelling — scenarios, permissions, relationships — is owned by /use-cases; this section is the enumeration that /use-cases will expand.
Every actor here should feel like a stakeholder in § 1 Problem Statement. If a named actor does not map back to someone harmed by the current problem or served by the thesis, re-examine whether they belong.
Draft § 7, § 8, and § 9.
§ 7 Scope Boundaries. What is and is not in the first milestone, phrased as capabilities (not features). "In scope: accepting authenticated pushes, fetching public repositories over HTTPS, enumerating references. Out of scope: branch protection rules, pull requests, issue tracking." This anchors downstream scoping decisions; /use-cases will expand the in-scope list into concrete use cases that, once design phases A–F complete, become the basis for trigger artifacts in roadmap/ driving the per-trigger implementation pipeline.
Scope boundaries are not non-goals. Non-goals (§ 4) are things we will never build or will deliberately not build. Scope boundaries are things we will build eventually but are out of the first milestone.
§ 8 Risks & Open Assumptions. Bulleted. Each risk: one-line description, impact severity (L / M / H), one-line mitigation or reason-to-accept. Each assumption: one-line description of what we are taking for granted, one-line consequence if wrong. Cover technical risk ("the chosen sync algorithm assumes a stable clock across peers — if clock skew exceeds 30s, conflict resolution degrades to last-write-wins"), market risk, and organizational risk where applicable.
§ 9 Glossary Stub. 5–15 project-specific terms with one-line definitions. Seed the vocabulary a reader needs to understand § 1–§ 7 without guessing. Prefer domain terms over technology terms — Push and Repository, not HTTP endpoint and JSON body. Mark the section with the preview note: (Authoritative glossary: DOMAIN.md. The entries here are a preview.) so readers know this is not the final source of truth.
Verify the document holds together before finalising:
/architecture, not here. "Responses are JSON" belongs in /interfaces, not here. If one leaked, demote it to an open question or drop it.Update frontmatter counts (principles_count, non_goals_count, success_criteria_count, open_questions) to reflect the final document. Set status to complete if § 10 is "All questions resolved." and has_open_questions otherwise.
These rules govern the output document. Violations are detected by the quality checklist.
§ 1 Problem Statement must describe the problem in the user's domain language only. Forbidden vocabulary in § 1: API, endpoint, database, service, microservice, frontend, backend, queue, container, cluster, JSON, HTTP, gRPC, SDK, library. The problem is "a team cannot collaborate on a shared repository", not "there is no REST API for git". Solution-shaped vocabulary is allowed starting in § 2 Solution Thesis.
Every bullet in § 3 must pass the falsification test: "if we deleted this principle, would we build anything differently?" If the honest answer is no, the bullet is a platitude — cut it. "Ship quality code" is a platitude; "server owns all business logic, clients are dumb" is a principle because it forbids client-side business rules.
Every bullet in § 4 must name a capability someone might reasonably expect given § 1 and § 2. Strawman non-goals add no value. "We will not build a rocket ship" when building a git server is a strawman. "We will not build fine-grained per-branch access control in v1" is realistic. The strawman test: would removing this non-goal cause a plausible reader to ask "wait, will it do X?" — if no, drop it.
Every bullet in § 5 is either a metric with a target (duration, throughput, latency, count, ratio, time-to-first-X) or a scenario with a pass/fail outcome (a named journey a reader can run through and report complete / incomplete). Reject qualitative adjectives without numbers: "fast", "simple", "easy", "robust", "scalable" — rewrite with a target or drop. A rule of thumb: a criterion you cannot write a unit test or a stopwatch test for is not a criterion.
The proposal commits to what and why, not how. Forbidden anywhere outside § 9 Glossary Stub:
auth-service, worker, gateway)If the user's prompt specifies a component or technology, record the intent behind it in § 3 Core Principles or § 7 Scope Boundaries and leave the component to /architecture. Example: the user says "we'll use Postgres for this" — the proposal records "the system needs transactional multi-row writes across {entity} and {entity}" as a principle and lets /architecture decide Postgres or alternatives.
§ 2 Solution Thesis must name the insight that makes the solution work, not the features that will ship. "We will build a CLI with push, pull, clone, and init subcommands" is a feature list. "We will build a content-addressable protocol that never re-transmits known bytes" is a thesis. Features belong in /use-cases and per-unit SPECs.
Pick one name for the product and use it consistently. If the user has not chosen a name, use {ProductName} as a bracketed placeholder throughout and add "confirm product name" to § 10 Open Questions. Do not invent a creative name; naming is the user's call.
§ 9 must carry the preview note (Authoritative glossary: DOMAIN.md. The entries here are a preview.) so readers know this is not the final source of truth. Keep it small (5–15 entries) and focused on terms that appear in § 1–§ 7. The full glossary is /domain's deliverable.
Non-goals protect the project from scope drift; principles constrain shape. A proposal with three principles and one non-goal is under-constrained on the "what we will not build" axis. Target at least as many non-goals as principles, and usually more.
Every numbered section § 1 through § 10 must appear in the output. If a section genuinely has no content (rare — typically only § 10 Open Questions), state "None." or the standard empty-state phrase under the heading. Never omit a heading.
One YAML frontmatter block at the top of the file, containing common fields (skill, date, status) and proposal-specific count fields. Never emit a second YAML block anywhere in the document. Counts must match the body — principles_count equals the number of bullets in § 3, etc.
No "appropriate", "relevant", "as needed", "etc.", "and so on", "various", "many". Use exact nouns, exact actor names, exact targets. If exact is impossible because the decision is genuinely open, surface it in § 10 Open Questions rather than hiding behind a placeholder word.
markdown--- skill: PROPOSAL.md date: {YYYY-MM-DD} status: {complete | has_open_questions | blocked} product_name: {name or "{ProductName}"} principles_count: {N} non_goals_count: {N} success_criteria_count: {N} open_questions: {N} --- # PROPOSAL — {ProductName} > Vision layer for the {ProductName} project. Every principle and non-goal here > constrains later decisions. Downstream artifacts (USE_CASES, DOMAIN, ARCHITECTURE, > and every per-unit SPEC) cite this document for grounding. ## § 1. Problem Statement {Two to five paragraphs in the user's domain language. Lead with a concrete scenario where possible. Name the existing alternatives and say what each one gets wrong. No solution language — no API, endpoint, database, service, JSON, HTTP, frontend, backend, container, cluster, queue.} --- ## § 2. Solution Thesis {Single opening sentence answering "what we will build" in domain terms.} {Two to four paragraphs elaborating the core insight that makes the solution work — what the solution knows or does differently that the alternatives do not. Defensible against the reader's "why will this work when the alternatives did not?" — not a feature list.} --- ## § 3. Core Principles - **{Principle, one short phrase}** — {one-line rationale stating what this principle forbids or requires in later decisions}. (Repeat 3–7 times. Each principle must pass the falsification test: deleting it would change what we build.) --- ## § 4. Non-Goals - **{Capability}** — {one-line reason it is excluded}. (Repeat — count ≥ principles_count. Each entry is a capability someone might reasonably expect, paired with why we are not building it.) --- ## § 5. Success Criteria - {Metric with a target, OR scenario with a pass/fail outcome — e.g., "a new user can install and complete their first push in ≤ 5 minutes on a typical home broadband connection" or "the server sustains 1000 concurrent fetch operations on a 4-core VM with p99 latency < 2s"}. (Repeat 3–7 times. Every entry is measurable or testable; no un-quantified adjectives.) --- ## § 6. Target Users / Actors ### `{ActorName}` {One paragraph: who this actor is, what they care about, one-line role. Example: "Operator — self-hosts the service for a team. Runs the binary, configures TLS, provisions storage, and manages user invites. Cares about low operational burden and long-running uptime."} (Repeat for each actor. Three to seven typical. Full actor modelling is owned by USE_CASES.md; this section is the enumeration USE_CASES will expand.) --- ## § 7. Scope Boundaries ### In first milestone - {Capability phrased at the vision level — not a feature. Example: "Accepting authenticated pushes to a repository owned by the authenticated user."} (Repeat for each in-scope capability.) ### Not in first milestone - {Capability — one-line reason it is deferred (not excluded forever — that is § 4). Example: "Pull requests — modelled as a separate collaboration layer on top of the storage substrate; out of v1."} (Repeat for each deferred capability.) --- ## § 8. Risks & Open Assumptions ### Risks - **{Risk, one-line description}** — impact: {L | M | H}. Mitigation: {one line}. (Repeat for each risk. If none: "None identified at this stage.") ### Assumptions - **{Assumption, one-line description}** — if wrong: {one-line consequence}. (Repeat for each assumption. If none: "None — scope is self-contained.") --- ## § 9. Glossary Stub *(Authoritative glossary: DOMAIN.md. The entries here are a preview.)* | Term | Definition | |------|-----------| | `{Term}` | {one-line, domain-level, testable definition} | (Repeat 5–15 times. Terms that appear in § 1–§ 7 and would be ambiguous to a reader unfamiliar with the product's domain.) --- ## § 10. Open Questions - [ ] {Question — e.g., "Confirm the product name — the user prompt uses both 'Bitserve' and 'bit-serve' informally."} - **Option A:** {description} — {tradeoff} - **Option B:** {description} — {tradeoff} - **Recommendation:** {suggestion and reasoning} (If none: "All questions resolved.")
/use-cases)/use-cases/domain/architecture/interfaces/data/errors/behavior/quality/security/operations/web-ia, /cli-ia, /mobile-ia, /tui-ia, /voice-ia)/SPEC.md through /RECONCILIATION.md) under units/<area>/u<NN>/skill, date, status, product_name, principles_count, non_goals_count, success_criteria_count, open_questions)API, endpoint, database, service, frontend, backend, queue, container, cluster, JSON, HTTP, gRPC, SDKprinciples_count entries, each names a realistic alternative (no strawmen)/architecture, /interfaces, /data, /operations){ProductName} placeholder with an open question to confirmprinciples_count, non_goals_count, success_criteria_count, open_questions) match the body exactlystatus is complete if § 10 is "All questions resolved." and has_open_questions otherwiseOther measured skills in the registry, with their headline benchmark lift.