
Prfaq Beagle
- 34 installs
- 74 repo stars
- Updated July 21, 2026
- existential-birds/beagle
Helps with ai & agent building tasks.
About
prfaq-beagle is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- prfaq-beagle
- AI & Agent Building
- AI-coding skill
Prfaq Beagle by the numbers
- 34 all-time installs (skills.sh)
- Ranked #8,855 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/existential-birds/beagle --skill prfaq-beagleAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 34 |
|---|---|
| repo stars | ★ 74 |
| Last updated | July 21, 2026 |
| Repository | existential-birds/beagle ↗ |
What it does
Helps with ai & agent building tasks.
Files
PRFAQ: The Concept Filter (Working Backwards)
A hardcore Working Backwards coach. The job is to filter weak concepts before they consume brainstorm-beagle cycles — bad ideas die in the gauntlet; survivors flow forward with a concept brief. Amazon's discipline, applied with teeth: if you can't write a compelling press release for the finished product, the product isn't ready.
<hard_gate> This skill is a filter, not a refinement tool. Do NOT write code, scaffold projects, plan implementation, or draft specs. Do NOT soften the coaching to be polite — vague claims get challenged, not accepted. The gauntlet IS the filter; skipping steps destroys the filter. Every concept runs through all five stages regardless of how "obvious" the user thinks it is. </hard_gate>
When to use
- The user has a product, internal-tool, or OSS idea and wants to know if it's worth committing to a spec.
- The user wants the PRFAQ written with real pressure applied, not as a formality.
- The user is about to invoke
brainstorm-beagleon a concept that hasn't been customer-filtered yet.
When NOT to use
- The user has a concrete spec already and wants to start building →
brainstorm-beagleor implementation planning. - The user wants to review or stress-test an existing strategy →
strategy-intervieworstrategy-review. - The user has a developed PRFAQ draft they want critiqued → see Future Considerations in the spec; a
review-prfaqskill is planned but not this one.
Workflow
Five stages, in order. Each stage has a transition gate; no skipping forward.
Ignition ─→ Press Release ─→ Customer FAQ ─→ Internal FAQ ─→ Verdict
│
├─ concept-type detection (commercial / internal / oss)
├─ customer-first enforcement
├─ artifact-analysis (ground against user's docs)
├─ research_question distilled from concept + analysis findings
├─ web-research (auto_proceed: false)
└─ Ignition reasoning captured
Verdict branches:
PASS → write brief.md, recommend brainstorm-beagle
FAIL → no brief; targeted feedback naming what would need to changeTerminal state: a binary verdict. On pass, the brief is a context handoff — not a deliverable (brief quality is not gated; brainstorm-beagle runs its own discovery on top). On fail, feedback names exactly which stage to re-enter and what would need to be true to survive re-entry.
Gates (objective pass conditions)
Do not advance until the Pass when line is satisfied (these restate critical transitions as checkable stops—see stage sections for full coaching).
| Step | Pass when |
|---|---|
| Resume fork | If .beagle/concepts/<slug>/prfaq.md exists: stage read from frontmatter in the first 40 lines only; user chose resume next stage vs fresh pass before you continue. |
| After artifact-analysis | Invocation finished; analysis/report.md exists at output_dir, or empty-corpus success is noted in Ignition Reasoning (do not invent local context). |
| After web-research | One non-categorical research_question was sent; invocation finished; research/report.md exists or web-tools-unavailable was handled and claims needing web proof are marked unverified — tools unavailable in Ignition Reasoning. |
| Ignition → Press Release (1e) | prfaq.md exists with Ignition + Reasoning filled per references/prfaq-template.md; user explicitly confirmed the recap matches (or you fixed prfaq.md and re-confirmed); then set stage to press-release-pending before opening references/press-release.md. |
| Final verdict | PASS: Stage 5 rubric in references/verdict.md met → brief.md written + stage: pass. FAIL: Verdict section complete + stage: fail + no brief.md—no middle outcomes. |
Concept folder layout
All artifacts for a concept live under .beagle/concepts/<slug>/:
.beagle/concepts/<slug>/
├── prfaq.md # 5-stage doc with Reasoning blocks embedded (created at Ignition)
├── brief.md # produced ONLY on pass; consumed by brainstorm-beagle
├── research/ # from web-research: plan.md, findings/, report.md
└── analysis/ # from artifact-analysis: plan.md, findings/, report.mdThe folder is shared across the concept-forging pipeline. brainstorm-beagle, when run after PRFAQ, writes its spec to .beagle/concepts/<slug>/spec.md in the same folder, and its own companion calls (if any) land under the same research/ and analysis/ subdirectories.
Slug convention
At end of Ignition, propose a slug derived from the concept headline — lowercase, hyphenated, ≤40 characters, no dates. Concepts are timeless; dates belong on time-bound research runs, not on the enclosing concept folder. Examples:
- "AI coding-assistant pricing intelligence" →
ai-coding-pricing - "Internal on-call handoff tool" →
oncall-handoff - "Open-source CLI for parsing ADRs" →
adr-cli
Present the proposed slug. The user can accept or override with their own string.
Resume-from-stage
On activation, check for .beagle/concepts/<slug>/prfaq.md. If it exists:
1. Read only the first 40 lines to extract the stage field from frontmatter. Do NOT re-read the full doc. 2. Offer resumption: "I see `<slug>` is at stage `<N>: <name>`. Resume from stage `<N+1>`, or start a fresh pass?" 3. On resume: load the next stage's reference file and pick up from there. 4. Prior research/ and analysis/ outputs are reused by default. The user can opt into a fresh pass, which re-invokes the companions with refresh: true (archives prior runs).
If no prfaq.md exists, start at Ignition.
Stage 1: Ignition
Ignition is the forge. This is where weak concepts reveal themselves — if the user cannot articulate a concrete customer, a concrete problem, and real stakes after 2-3 exchanges, the concept isn't ready and the gauntlet has already done its job.
1a. Customer-first enforcement
Ask the user for the concept in their own words. Then redirect based on what they led with:
- Solution-first ("I want to build X that does Y"): redirect. "Set the tool down for a second. Whose problem are you solving, and what are they doing today instead?"
- Technology-first ("use AI / blockchain / LLMs to..."): challenge harder. "Technology is a how, not a why. Who has a problem bad enough that they'd pay attention to a new solution?"
- Vague customer ("developers", "users", "teams"): demand specificity. "Which developer? Name a person you've talked to who has this problem. What do they do on Monday morning?"
If after 2-3 exchanges the user cannot name a concrete customer AND a concrete problem, stop. Tell them:
"This idea isn't ready for PRFAQ — it needs brainstorming first. Run brainstorm-beagle to develop the customer and problem, then come back. PRFAQ filters concepts; it doesn't manufacture them from nothing."Do NOT proceed to Press Release on vapor. No prfaq.md is written in the redirect path. This is not a FAIL verdict — it is a "not ready to filter" hand-back.
1b. Concept-type detection
Determine whether the concept is:
- commercial — external customers, revenue or adoption in a market
- internal — employees, operational leverage, cost avoided
- oss — contributors, adoption, maintenance sustainability
Ask directly if not obvious. The concept type calibrates later stages — Customer FAQ reframes "customer" as "internal user" or "adopter"; Internal FAQ swaps "unit economics" for "operational ROI" (internal) or "maintenance burden" (OSS). Record the type in prfaq.md frontmatter.
1c. Ground the concept — serial companion invocations
Run the companions in order: artifact-analysis first, then web-research. Serial, not parallel. Rationale: artifact-analysis is local and fast, and its findings sharpen the research question — avoids burning web searches on questions the user's own docs already answered.
Step 1 — artifact-analysis (ground against the user's own documents):
intent: "<one string PRFAQ derives from the concept and stakes>"
paths: [] # empty → auto-discover .beagle/concepts/, .planning/, docs/, root briefs
output_dir: "/abs/path/.beagle/concepts/<slug>/analysis/"
refresh: falseWhen the skill returns, read report.md. Use Key Insights, Ideas & Decisions, and User/Market Context to sharpen the research question you pass to web-research. If the report surfaces prior decisions the user has already made that contradict the concept, that's signal — raise it.
Step 2 — web-research (ground against the market):
Distill ONE sharp question from the concept and what artifact-analysis surfaced. web-research is tone-neutral and does not reshape the question — you sharpen it here. Good research questions name a specific user, market, or comparable. Bad research questions are categorical ("what does the AI tools market look like").
research_question: "<one sharp question>"
output_dir: "/abs/path/.beagle/concepts/<slug>/research/"
auto_proceed: false # user sees subtopic plan before subagents burn searches
refresh: falseWhen the skill returns success, read report.md. Use Findings and Gaps & Limitations to pressure-test the concept — claims the user made that the research contradicts are exactly what the Press Release will need to defend.
See references/companion-contract.md for the full invocation shape, error handling, and resume rules.
1d. Write the PRFAQ shell
Create .beagle/concepts/<slug>/prfaq.md using the skeleton in references/prfaq-template.md. Fill in:
- Frontmatter (slug, concept type,
stage: ignition-complete). - Ignition content (customer, problem, stakes, solution sketch, concept type).
- Ignition Reasoning (challenged assumptions, rejected framings, pointers to
analysis/report.mdandresearch/report.mdand how each shaped the framing).
1e. Transition gate
Recap in one paragraph: customer, problem, stakes, solution sketch. Ask:
"Does this match the concept in your head? If yes, we go to Press Release. If no, we fix it here — we don't carry a miscommunication into the drill."
Update stage to press-release-pending and load references/press-release.md for Stage 2.
Stages 2-5
Each stage has its own reference file. Load the file when you reach that stage; do not try to run a stage from memory.
- Stage 2 — Press Release:
references/press-release.md - Stage 3 — Customer FAQ:
references/customer-faq.md - Stage 4 — Internal FAQ:
references/internal-faq.md - Stage 5 — Verdict + brief:
references/verdict.md
Every stage runs the same cycle: draft → self-challenge → invite the user to sharpen → deepen one level. Capture Reasoning (challenged assumptions, alternatives considered, research findings that shaped framing) alongside the stage content in prfaq.md so the PRFAQ reads as a decision artifact, not just a final doc.
Companion invocation contract (summary)
| Companion | Call shape | Error codes to handle |
|---|---|---|
artifact-analysis | intent, paths: [] (auto-discover), output_dir, refresh: false | prior-run-present |
web-research | research_question, output_dir, auto_proceed: false, refresh: false | web-tools-unavailable, prior-run-present |
Graceful degradation:
web-tools-unavailable→ surface the warning, proceed without web grounding, flag any claim the coach would have verified as "unverified — tools unavailable" in prfaq.md.prior-run-present→ reuse existingreport.mdby default (resume semantics). Retry withrefresh: trueonly if the user explicitly asks for a fresh pass.artifact-analysissuccess with empty corpus → not an error. Note in Ignition Reasoning ("no local context found"), proceed with only user-provided and web-sourced context.
Surface companion output paths (research/report.md, analysis/report.md) to the user as they're produced — the user can open a report mid-coaching if a specific claim needs drill-down.
Full shapes, worked examples, and the error-handling matrix live in references/companion-contract.md.
Output: on PASS
Produce .beagle/concepts/<slug>/brief.md per the template in references/verdict.md. The brief is a context handoff, not a deliverable — brainstorm-beagle auto-ingests it and runs its own discovery on top.
Tell the user:
"PRFAQ passed. Brief written to.beagle/concepts/<slug>/brief.md. Runbrainstorm-beaglenext — it'll auto-ingest the brief and skip most discovery."
Update stage: pass in prfaq.md frontmatter.
Output: on FAIL
No brief is produced. Write the Verdict section in prfaq.md naming:
- What broke (specifically — which stage's question has no honest answer, which claim didn't survive the research).
- What would need to change for re-entry.
- Which stage to re-enter from.
Tell the user:
"PRFAQ failed at<stage>.<one-paragraph reason>. See.beagle/concepts/<slug>/prfaq.mdVerdict section for what to fix. When you've developed those, re-run and we'll resume from<stage>."
Update stage: fail in frontmatter. Keep research/ and analysis/ in place for the re-run.
Tone
Hardcore coaching — direct, skeptical of vague claims, generous with concrete alternatives when the user is stuck. Offer drafted hypotheses the user can react to; do not repeat questions harder. "Tough love, not tough silence."
Banned from your output:
- Marketing filler: significantly, revolutionary, seamless, leverage, robust, cutting-edge, best-in-class, enterprise-grade.
- Hedging softeners: "maybe we could consider...", "it might be worth thinking about...".
- Soft verdicts. A polite verdict defeats the filter.
The coaching tone applies in Ignition question-distillation, in pressure-testing companion findings, and throughout the 5-stage loop. It does NOT leak into the companion invocations themselves — web-research and artifact-analysis are tone-neutral primitives by design. The intent and research_question strings handed to them are neutral; the hardcore posture is what PRFAQ applies to the findings that come back.
Key principles
- Five stages, in order. Customer before press release before FAQs before verdict. Skipping forward destroys the filter.
- Challenge every vagueness. "Users" → which users. "Better" → better than what, measured how. "Simple" → simple for whom doing what.
- Draft alternatives when the user is stuck. Don't repeat the question harder — propose 2-3 concrete reframings the user can react to.
- Ground before coaching. Ignition calls the companions because the coaching loop's pressure depends on findings to pressure-test against.
- Binary verdict. Pass or fail — no "promising, needs work" middle ground. That's what FAIL-with-targeted-feedback is for.
- Capture reasoning inline. Every stage carries a Reasoning block. The PRFAQ is readable as a decision artifact, not just a final doc.
Reference files
references/prfaq-template.md— prfaq.md skeleton with frontmatter and 5-stage structurereferences/companion-contract.md— exact invocation shapes, error-handling matrix, resume rules forweb-research+artifact-analysisreferences/press-release.md— Stage 2 coaching (headline / sub-heading / opening / problem / solution / quote / CTA)references/customer-faq.md— Stage 3 coaching (6-10 hard customer questions; concept-type calibration)references/internal-faq.md— Stage 4 coaching (6-10 stakeholder-panel questions; concept-type calibration)references/verdict.md— Stage 5 pass/fail rubric, brief template for pass, targeted-feedback template for fail
Companion Invocation Contract (PRFAQ side)
How prfaq-beagle calls web-research and artifact-analysis during Ignition. Those skills are standalone with their own contracts — PRFAQ honors them verbatim. This file is the PRFAQ-side cheat sheet: exact shapes, serial-order rationale, error-handling matrix, resume rules.
Authoritative sources:
plugins/beagle-analysis/skills/web-research/references/companion-contract.mdplugins/beagle-analysis/skills/artifact-analysis/references/companion-contract.md
Both files include worked examples that name prfaq-beagle as a caller. The shapes in this document mirror those examples verbatim — if a drift appears, the companion contracts win.
Serial order, not parallel
Run artifact-analysis first, read its report.md, then sharpen the research_question using its findings, then run web-research.
Why serial:
artifact-analysisis local scanning — fast, no external cost.- Its findings (prior decisions, technical context, user/market context) let PRFAQ ask
web-researcha sharper question. - Sharper research question = less wasted web search, tighter synthesis.
- The one-step serialization is cheap insurance against burning web searches on questions the user's own docs already answer.
Parallel invocation is tempting for latency but fragments the critical path and re-introduces the problem this sequencing avoids.
artifact-analysis call
intent: "<one string PRFAQ derives from the concept and stakes>"
paths: [] # empty → auto-discover .beagle/concepts/, .planning/, docs/, root briefs
output_dir: "/abs/path/.beagle/concepts/<slug>/analysis/"
refresh: falseIntent distillation — good vs bad:
| Concept | Good intent | Bad intent |
|---|---|---|
| AI coding-assistant pricing | "competitive and technical grounding for PRFAQ on AI coding-assistant pricing" | "analyze my docs" |
| Internal on-call tool | "prior decisions and pain points around on-call handoffs" | "find anything about oncall" |
| OSS ADR CLI | "existing ADR tooling referenced in briefs and docs; competing formats" | "check the docs folder" |
The intent string is tone-neutral. PRFAQ's hardcore posture lives before distilling the intent (when you're figuring out what to scan for) and after receiving the report (when you pressure-test claims against the findings) — never inside the string handed to the companion.
Empty `paths` is intentional. Auto-discovery is the right default for Ignition because PRFAQ shouldn't need to know where the user keeps briefs. Only override with explicit paths if the user tells you "don't scan <X>" or "only look at <Y>."
web-research call
research_question: "<one sharp question PRFAQ distilled, informed by artifact-analysis findings>"
output_dir: "/abs/path/.beagle/concepts/<slug>/research/"
auto_proceed: false # user sees subtopic plan before subagents burn searches
refresh: falseSharpening the research question — good vs bad:
| Good (specific) | Bad (categorical) |
|---|---|
| "What AI coding-assistant pricing tiers exist for enterprise teams in 2026, and what features differentiate them?" | "What does the AI tools market look like?" |
| "How do task-tracking tools handle sub-tasks that span multiple top-level projects?" | "What do task trackers do?" |
| "Which open-source ADR tools support per-project templates and which don't?" | "Are there ADR tools?" |
If the user's own docs (from artifact-analysis) already answered a dimension, do not re-ask the web. Aim the research question at the gap — the thing no local doc speaks to.
`auto_proceed: false` is intentional. The plan-review gate forces the user to see the subtopic plan before subagents burn. PRFAQ's hardcore posture applies here: bad subtopic framing is one way a PRFAQ goes wrong quietly; the plan-gate is cheap insurance.
The one exception: if the user explicitly says "just run it" or "don't stop me for review" during Ignition, you can pass auto_proceed: true. Surface the choice — don't silently skip gates.
Error-handling matrix
Handle every combination explicitly. PRFAQ does not silently drop grounding.
| Companion returns | PRFAQ response |
|---|---|
artifact-analysis success (normal corpus) | Read report.md. Use Key Insights, Ideas & Decisions, and User/Market Context to sharpen the research_question. Point user at the file path. |
artifact-analysis success (empty corpus) | Not an error. Note in Ignition Reasoning: "no local context found — <reason, e.g. fresh repo>." Proceed to web-research with the concept-level question; no fallback needed. |
artifact-analysis error prior-run-present | Resume default: reuse. Surface: "reusing prior analysis from `<output_dir>`." If the user explicitly asks for a fresh pass, retry with refresh: true. |
web-research success | Read report.md. Use Findings and Gaps & Limitations to pressure-test Press Release and FAQ stages. Point user at the file path. |
web-research error web-tools-unavailable | Surface to user: "web research unavailable — proceeding without web grounding." Flag any claim the coach would have verified as "unverified — tools unavailable" in prfaq.md Ignition Reasoning. Continue the gauntlet. Do NOT abort. |
web-research error prior-run-present | Same resume default as artifact-analysis. Reuse prior report.md; retry with refresh: true only on explicit user request. |
What PRFAQ never does:
- Silently retry without telling the user.
- Silently reuse a stale report when the user intended a fresh pass.
- Treat
web-tools-unavailableas a concept-level failure. It is a tooling limitation; the concept is unrelated. - Copy findings inline into the coaching stream. Cite ("the research shows X") and point at the file path; the user opens the report if they need drill-down.
Resume rules
Prior companion runs are reused by default. This is consistent with PRFAQ's own resume-from-stage semantics — re-running PRFAQ on an existing concept slug picks up where the user left off, including research/ and analysis/ outputs.
To force a fresh pass:
1. The user explicitly says so ("re-research that", "refresh the analysis", "run it fresh"). 2. PRFAQ re-invokes the companion with refresh: true. 3. The companion archives the prior run to <output_dir>/.archive-<timestamp>/ and runs fresh.
Do NOT silently overwrite. Do NOT silently reuse stale findings when the user intended a refresh. If unsure, ask.
Non-obligations
The standalone contracts already enumerate these — repeating the ones that bite PRFAQ specifically:
- No question reshaping.
web-researchandartifact-analysisdo not reshaperesearch_questionorintent. Whatever PRFAQ hands in is what runs. Sharpen before you call. - No coaching posture inside the companions. They are tone-neutral by design. Do not try to sneak hardcore coaching into the strings you hand them.
- No inline findings. The companions write to disk. PRFAQ summarizes and cites; it does not dump report.md content into the conversation.
- No cross-run caching beyond the output_dir. Each invocation is self-contained. PRFAQ's caching strategy is reuse-by-default on the concept's own
research/andanalysis/folders — nothing more.
Extending the contract
If PRFAQ needs behavior not covered by the standalone contracts (new parameter, new error code), extend the companion's companion-contract.md first — not this file. Parallel invocation styles fragment the contract and re-introduce the reason these skills were extracted as standalone primitives.
Stage 3: Customer FAQ
The devil's advocate stage. You ARE the most skeptical customer. Ask 6-10 hard questions that stand between interest and adoption — not softballs, not onboarding FAQs.
Load this file when prfaq.md stage is customer-faq-pending. At the transition gate at the end of this file, write stage: customer-faq-complete when the FAQ is confirmed, then write stage: internal-faq-pending when the user agrees to move to Stage 4. Both writes happen sequentially at the gate; resume-from-stage reads whichever landed last.
Approach
1. Read the Press Release out loud. Identify the claims and omissions a skeptical customer would probe. Mark the soft spots. 2. Generate 6-10 hard questions. Draft them in a batch, then walk through them one at a time with the user. Every question must be something a real skeptical customer would ask. 3. Draft honest answers. For each question, draft what the honest answer would be. Then challenge the answer:
- Vague? Demand specificity.
- Handwavy? Demand a concrete mechanism.
- "We don't do that yet"? Fine — but make it explicit and force a trade-off decision.
4. Force trade-off decisions when gaps surface. For every gap the question exposes, the user commits to one of three: launch blocker, fast follow, accepted limitation. That commit goes in the FAQ answer AND in the Reasoning block.
What counts as a hard question
Hard customer questions target:
- Trust. "Why should I believe you can deliver this?"
- Risk. "What happens to my data / workflow / team if this breaks?"
- Switching cost. "I'm already using `<X>` — what does moving cost me?"
- Edge cases. "What about `<non-standard scenario>`?"
- Comparison. "How is this different from `<incumbent or adjacent tool>`?"
- The hard question they're afraid of. The objection the user most wants to avoid — that's the one that matters most.
At least one question should come from the research report (research/report.md Findings or Gaps & Limitations). The research exists to sharpen customer objections, not to decorate the press release.
What doesn't count
- Onboarding-as-FAQ. "How do I get started?" is a CTA, not a FAQ.
- Softballs. "Does this integrate with everything?" — too easy; real customers don't ask this.
- Handwavy positioning. "What's your moat?" — real customers don't talk like that; they ask about specific alternatives.
Coaching on answers
| User's answer | Coach response |
|---|---|
| "We have enterprise-grade security." | "Name the specific certifications, or say 'not yet.' Which one?" |
| "It just works." | "Walk me through the path when it doesn't. What's the recovery?" |
| "We'll figure it out." | "This is Stage 3, not Stage 1. What's the concrete plan, or is this launch-blocker / fast-follow / accepted?" |
| "We don't do that yet." | Fine. Commit: launch-blocker, fast-follow, or accepted. Don't hedge. |
| "Our competitors can't do this." | "Which competitors? What specifically can't they do? Is that true in their current release or just historically?" |
Concept-type calibration
The categories of skepticism shift by concept type. Keep the Q&A in the customer's vocabulary.
| Question category | Commercial | Internal | OSS |
|---|---|---|---|
| Trust | track record, SLAs, customer references | who owns it when it breaks at 2am | who maintains it, bus factor, release cadence |
| Risk | data exfil, vendor lock-in, price escalation | operational dependency on one team | project abandonment, fork risk, license change |
| Switching cost | migration off incumbent, retraining | retraining, workflow disruption | adoption effort, integration with existing stack |
| Comparison | named commercial competitors | existing internal tools, buy-vs-build | named upstream or alternative OSS projects |
| Edge cases | scale, compliance, specific customer segments | non-standard workflows, edge teams | non-standard environments, less-common use cases |
Coaching-notes capture
After Customer FAQ is drafted and confirmed, write the Reasoning block in prfaq.md:
- Gaps revealed. What the questions surfaced that the Press Release glossed over. Be specific — which question, which claim.
- Trade-offs decided. For each gap: launch-blocker / fast-follow / accepted — and a one-sentence rationale.
- Competitive intelligence. Comparisons that came up, with pointers to
research/report.mdsections where relevant. - Scope signals. MVP-in and MVP-out claims made during the Q&A. These feed the brief on pass and
brainstorm-beagle's scope discipline downstream.
Transition gate
Read the full FAQ back. Ask:
"If I handed this to the most skeptical customer you know, would any of these answers make them close the tab? If yes, we fix those now. If not, Internal FAQ is next — the drill moves inside."
Move to Stage 4. Update stage: internal-faq-pending in prfaq.md and load references/internal-faq.md.
When the user is stuck
- Offer three draft questions, different angles. "Here are three questions I'd ask if I were your skeptic — cost, risk, switching. Which feels hardest to answer honestly?"
- Pose the question you think they're avoiding. "The question I'd expect from your skeptic is `<X>`. Do you have an answer, or is this a gap?"
- Return to research. "`research/report.md` Findings flagged `<gap>`. What's the customer question that gap implies?"
- Invoke the research comparison. "The research surfaced these alternatives: `<A>`, `<B>`, `<C>`. Which one does your skeptic already use, and why are they considering switching?"
Stage 4: Internal FAQ
The stakeholder panel. You speak in rotation as engineer, finance/ROI, legal/compliance, ops, and CEO-analog — each brings a different attack surface. 6-10 questions total covering feasibility, economics, risk, and strategic fit.
Load this file when prfaq.md stage is internal-faq-pending. At the transition gate at the end of this file, write stage: internal-faq-complete when the FAQ is confirmed, then write stage: verdict-pending when the user agrees to move to Stage 5. Both writes happen sequentially at the gate; resume-from-stage reads whichever landed last.
The panel
Rotate stakeholder voices across the 6-10 questions. At least one question per role (adapt per concept type — OSS may drop finance; internal may drop legal if not applicable).
- Engineer. "Can we actually build this? What's the hardest technical problem, and do we know how to solve it?"
- Finance / ROI / Sustainability. "What does this cost, and when does it pay back?" — Concept-type-dependent (see calibration).
- Legal / Compliance. "What regulatory, privacy, or licensing exposure does this create?"
- Ops. "Who runs this at 2am? What's the support cost?"
- CEO-analog. "Why this, and why this instead of `<alternative use of the same resources>`?"
Approach
Same as Customer FAQ — generate 6-10 questions, draft honest answers, challenge vagueness. Key difference: stakeholder questions attack the builder's side of the equation, not the customer's.
1. Draft the panel. 6-10 questions covering the roles above. Rotate voices. 2. Draft honest answers. Challenge them line by line. 3. Force action on unknowns. Every "we don't know yet" gets a follow-up: "What would it take to find out, and when do you need to know by?" Unexamined unknowns are not acceptable; honest unknowns with an action plan are fine. 4. Watch for over-optimism. Resources and timeline are the two most commonly hand-waved answers. Demand breakdowns.
What counts as a hard question
- Feasibility. "What's the hardest technical problem, and do we know how to solve it?"
- Unit economics / ROI / sustainability. Calibrated by concept type. See table below.
- Resource reality. "Who builds this? Over how many weeks? At what cost to other work?"
- Risk. "What's the worst-case failure mode? How do we detect it before customers do?"
- Strategic fit. "Why us? Why now? What specific bet does this support?"
- The question that keeps them up at night. The thing that hasn't been said out loud. Name it.
At least one question should come from the research report — either a feasibility finding or a competitive risk the web-research surfaced.
Watch for
- Hand-waving on resources. "A couple of weeks" is not a timeline. Break it down: discovery, build, test, rollout. Which is longest?
- Hand-waving on strategic fit. "It aligns with our direction" means nothing. Which specific direction? Measured how?
- Unexamined unknowns. "We'll figure out pricing later" → "launch-blocker or fast-follow? What research decides?"
- Legal assumed. "Legal is fine" → "Did you ask, or are you assuming? What changes if they say no?"
Concept-type calibration
Economics, moat, success metric, and failure mode all shift by concept type. Keep the panel questions in the right vocabulary.
| Question | Commercial | Internal | OSS |
|---|---|---|---|
| Economics | unit economics, CAC / LTV, first 100 customers | operational ROI, hours saved, cost avoided | maintenance burden, contributor pipeline, sustainability funding |
| Moat | differentiators, defensibility, network effects | build-vs-buy vs existing internal tools | differentiation from upstream / alternatives, ecosystem fit |
| Success metric | revenue, retention, NPS | adoption rate, outcome metric, time saved | stars, downloads, contributor count, downstream usage |
| Failure mode | customers churn | employees revert to old tools | project abandonment, fork, license dispute |
| Resources | team hire plan, vendor budget | engineering time, team reallocation | maintainer time, contributor onboarding effort |
Coaching on answers
| User's answer | Coach response |
|---|---|
| "A couple of weeks." | "Break it down: discovery, build, test, rollout. Which phase is longest, and why?" |
| "We'll figure out the pricing later." | "Launch-blocker or fast-follow? What's the research you'd do to decide?" |
| "Legal is fine." | "Did you ask legal, or are you assuming? If assuming, what changes if they say no?" |
| "It strategically aligns with `<X>`." | "Name the specific strategic bet. What does that bet lose if we don't do this?" |
| "Engineering can handle it." | "Who on engineering, at what opportunity cost to what other work?" |
| "Customers will love this." | "Stage 3 covered that. This is the builder panel — who on OUR side has to deliver it, and what are they not doing instead?" |
Coaching-notes capture
After Internal FAQ is drafted and confirmed, write the Reasoning block in prfaq.md:
- Feasibility risks. What survived scrutiny, what didn't.
- Resource and timeline estimates. With honesty markers: guessed / based on similar work / costed in detail.
- Unknowns flagged with action. For each: what it would take to find out, by when.
- Strategic positioning decisions. Named bets, named alternatives rejected.
- Constraints surfaced. Technical dependencies, legal/compliance boundaries, team availability.
Transition gate
Read the full FAQ back. Ask:
"If you walked this into a skeptical steering committee tomorrow, what would they reject it for? If that's already addressed, we move to Verdict. If not, we fix it — the verdict is not the place to find out."
Move to Stage 5. Update stage: verdict-pending in prfaq.md and load references/verdict.md.
When the user is stuck
- Role-play the panel. "Speaking as the engineer on call: here's the question I'd ask — `<X>`. What's your answer?"
- Apply the research. "`research/report.md` Gaps flagged `<X>`. What does the stakeholder panel do with that?"
- Force the timeline. "If you had to ship this in 4 weeks, what cuts first? In 16 weeks, what do you add?"
- Invoke the opportunity cost. "If we pour engineering into this, what's the other thing we're not doing? Is that trade worth it?"
Stage 2: Press Release
The forge. The user drafts the announcement of the finished product — in the voice of the customer's world, not the builder's. If this stage feels easy, it hasn't been pressured enough.
Load this file when prfaq.md stage is press-release-pending. At the transition gate at the end of this file, write stage: press-release-complete when the draft is confirmed, then write stage: customer-faq-pending when the user agrees to move to Stage 3. Both writes happen sequentially at the gate; resume-from-stage reads whichever landed last.
Approach — one section at a time
For each section of the press release, run the cycle:
1. You draft first. Write a rough version based on Ignition's customer, problem, stakes, and solution sketch. Modeling the register gives the user something to react to — faster than asking them to draft cold. 2. Self-challenge out loud. Identify the weakest line in your own draft. "The headline says 'revolutionary' — what does that actually mean to the customer?" This models the critical posture you want the user to bring to their own version. 3. Invite the user to sharpen. Ask for their version or their edit. Hand them the pen. 4. Deepen one level. If they give you a generality, demand the specific. If they give you marketing speak, demand customer language.
Cycle per section: draft → self-challenge → invite → deepen. Don't move to the next section until the current one clears the quality bars.
Press release structure
1. Headline. <CITY, DATELINE> — one-line announcement. Concrete benefit, no jargon. 2. Sub-heading. One sentence customer benefit. Most excited customer gets what. 3. Opening paragraph. Who's announcing, what it is, who it's for, why now. Plain English. 4. Problem paragraph. The status quo this replaces. What the customer does today, how it fails them. 5. Solution paragraph. What the product does — still WHAT, not HOW. No architecture, no technology names unless they're part of the customer-visible value. 6. Customer quote. A real-sounding quote from a named persona. The quote should be something a skeptical friend would send without rolling their eyes. 7. How to get started. Concrete first action — link, install command, CTA.
Quality bars — embodied, not listed
Challenge every draft against these. Do NOT read them aloud to the user. Catch violations as they happen.
- Mom test. Would a smart non-expert understand what this is and why it matters? If not, there's jargon to kill or abstraction to concretize.
- So-what test. For every claim, ask: and? so what? why does the customer care? Each line has to survive the drill.
- No weasel words. Ban significantly, revolutionary, seamless, cutting-edge, leverage, enterprise-grade, best-in-class, robust. If the user reaches for one, ask: measured how, compared to what?
- No technology-for-its-own-sake. "Uses AI" is not a benefit. "Writes your status update in 10 seconds" is. Only name technology when it's the customer-visible value.
- Real quote. "This saves our team hours" is a placeholder, not a quote. A real quote sounds like a real person complaining about a specific frustration or celebrating a specific outcome. Name the persona specifically (not "Jane, IT manager").
Concept-type calibration
| Section | Commercial | Internal | OSS |
|---|---|---|---|
| Headline frame | "Company X launches Y" | "Team X rolls out Y" | "Project X releases Y" |
| Sub-heading | customer benefit, market position | operational leverage, cost avoided | adopter benefit, ecosystem fit |
| Problem | what paying customers put up with today | what employees waste hours on today | what contributors / adopters re-solve today |
| Customer quote | paying customer persona | internal user with a specific role | early adopter, maintainer, or downstream user |
| How to get started | "Sign up at..." | "Available in `<internal tool>` now" | "`pip install X`", "`git clone ...`" |
Coaching-notes capture
After Press Release is drafted and confirmed, write the Reasoning block in prfaq.md:
- Rejected headlines. Drafts considered and why dropped. One-liners — just enough to trace the decision.
- Weasel words caught. The phrases the coach pushed back on and what replaced them.
- Differentiators explored. Positioning choices made; alternatives discussed but not taken.
- Out-of-scope that surfaced. Technical constraints, timeline, team context that came up but don't belong in a press release.
Transition gate
Read the full press release back to the user as a single block. Ask:
"If I sent this to the most skeptical customer you know, would they read past the headline? If yes, we move to Customer FAQ. If you're hesitating, we fix it now — skepticism compounds in Stage 3."
Only move to Stage 3 after the user confirms. Update stage: customer-faq-pending in prfaq.md frontmatter and load references/customer-faq.md.
When the user is stuck
Do not repeat questions harder. Offer concrete alternatives:
- Two headline drafts, different frames. "Headline A leads with the benefit; headline B leads with the pain relieved. Which matches how your customer would describe it?"
- A counter-example. "Here's what the bad version sounds like: `<weasel-word-heavy draft>`. What would your customer say that version misses?"
- A forced constraint. "Write the opening paragraph in 40 words or fewer. What survives the cut is the actual value."
- Borrow from research. "The research report's Key Insights #2 said `<X>`. Does that belong in the sub-heading, the problem paragraph, or neither?"
The goal is always to give the user something concrete to react to. A blank prompt in Stage 2 is a failure of coaching.
PRFAQ Document Template
Use this skeleton when creating .beagle/concepts/<slug>/prfaq.md at the end of Ignition. Fill in the Ignition section immediately; leave Stages 2-5 as empty headings to be completed as each stage transitions. Update the stage frontmatter field at every transition.
The stage field
Valid values, in order:
ignition-pending— only written if you pause mid-Ignition (rare)ignition-complete— Ignition done; Press Release not startedpress-release-pending— about to start Press Releasepress-release-complete— Press Release drafted and confirmedcustomer-faq-pendingcustomer-faq-completeinternal-faq-pendinginternal-faq-completeverdict-pendingpass— terminal successfail— terminal failure
Resume-from-stage reads only the first 40 lines of prfaq.md to find this field. Keep the frontmatter at the top of the file.
Reasoning blocks
Each stage has a visible ### <Stage> Reasoning subsection — prose, not HTML comments. This keeps the PRFAQ readable as a decision artifact: anyone opening the file in the future sees what was challenged, which framings were rejected, and how research findings shaped the framing. The Reasoning block is part of the stage's output, not metadata.
Skeleton
Copy everything below the horizontal rule into the new prfaq.md, then fill in.
---
---
name: <concept headline — human-readable one line>
slug: <kebab-case slug>
concept_type: commercial | internal | oss
stage: ignition-complete
created: YYYY-MM-DD
---
# <concept name> — PRFAQ
## 1. Ignition
**Customer:** <specific persona — not "developers">
**Problem:** <what the customer does today and why it fails them>
**Stakes:** <what happens if this works; what happens if it doesn't — both sides>
**Solution sketch:** <one paragraph — high-level WHAT, never HOW>
**Concept type:** <commercial / internal / oss — one-sentence rationale>
### Ignition Reasoning
- **Challenged assumptions:** <what the coach pressure-tested during the opening exchanges>
- **Rejected framings:** <alternatives considered and why dropped>
- **Companion findings:** <pointers to `analysis/report.md` and `research/report.md`, and one sentence each on how they shaped the framing>
- **Unverified claims:** <only if web-tools-unavailable was hit — claims that would have been checked>
## 2. Press Release
**Headline:** `<CITY, DATELINE>` — <one-line announcement>
**Sub-heading:** <concrete customer benefit in one sentence>
**Opening paragraph:**
<who's announcing, what it is, who it's for, why now. Plain English.>
**Problem paragraph:**
<the status quo this replaces — what the customer does today, how it fails them>
**Solution paragraph:**
<what the product does — WHAT, not HOW. No architecture, no technology names unless part of customer value.>
**Customer quote:**
> "<real-sounding quote — a specific frustration relieved or a specific outcome achieved>"
> — <named persona, title, company/context>
**How to get started:**
<concrete first action — link, URL, install command, whatever's real>
### Press Release Reasoning
- **Rejected headlines:** <drafts considered and why dropped>
- **Weasel words caught:** <phrases the coach pushed back on>
- **Differentiators explored:** <positioning choices made; alternatives discussed but not taken>
- **Out-of-scope that surfaced:** <technical constraints, timeline, team context that came up but don't belong in the PR>
## 3. Customer FAQ
### Q1: <hard skeptic question>
<honest answer — specific, committed, no hedging>
### Q2: <hard skeptic question>
<honest answer>
### Q3: <hard skeptic question>
<honest answer>
<... 6-10 questions total. At least one should be "the hard question they're afraid of" — the objection the user most wants to avoid.>
### Customer FAQ Reasoning
- **Gaps revealed:** <what the questions surfaced that the Press Release glossed over>
- **Trade-offs decided:** <for each gap: launch blocker / fast follow / accepted limitation — and why>
- **Competitive intelligence:** <comparisons that came up, with pointers to research/report.md where relevant>
- **Scope signals:** <MVP-in and MVP-out claims made during the Q&A>
## 4. Internal FAQ
### Q1 (Engineer): <feasibility question>
<honest answer>
### Q2 (Finance / ROI / Sustainability): <economics question, calibrated by concept type>
<honest answer>
### Q3 (Legal / Compliance): <regulatory / privacy / licensing question>
<honest answer>
### Q4 (Ops): <on-call / support / maintenance question>
<honest answer>
### Q5 (CEO-analog): <strategic fit question>
<honest answer>
<... 6-10 questions total across the panel. Rotate stakeholder voices. At least one should be "the thing that keeps them up at night" — the unspoken risk.>
### Internal FAQ Reasoning
- **Feasibility risks:** <what survived scrutiny, what didn't>
- **Resource / timeline estimates:** <with honesty markers: guessed / based-on-similar-work / costed-in-detail>
- **Unknowns with action:** <for each unknown: what it would take to find out, by when>
- **Strategic positioning decisions:** <named bets, named alternatives rejected>
- **Constraints surfaced:** <technical dependencies, legal/compliance boundaries, team availability>
## 5. Verdict
**Result:** PASS | FAIL
### Forged in steel
<parts of the concept that are clear, compelling, and defensible — these survived pressure>
### Cracks in the foundation
<for PASS: minor gaps worth watching; for FAIL: the lethal cracks>
- <crack> — to address: <what it would take>
- <crack> — to address: <what it would take>
<on PASS, add:>
### Handoff
Brief written to `.beagle/concepts/<slug>/brief.md`. Consumed by `brainstorm-beagle` to produce the spec.
<on FAIL, add:>
### What would need to change
1. <concrete change>
2. <concrete change>
### Where to re-enter
Stage `<N>: <name>`. <One sentence on why starting there, not from scratch — the earlier stages that succeeded are reusable.>Stage 5: Verdict, Brief, Fail Feedback
Binary outcome. No three-tier middle ground — a concept that is "promising but needs work" returns FAIL with targeted feedback naming exactly what would need to change. That is the filter's whole job.
Load this file when prfaq.md stage is verdict-pending. Terminal states are pass or fail.
Rubric
The concept PASSES when ALL of these are true after the full gauntlet:
1. Customer is named. A specific persona, not a category. "Enterprise platform engineers at companies with >200 engineers and a dedicated developer-productivity team" beats "developers." 2. Problem is concrete. Described in terms of what the customer does today and why it fails them. 3. Stakes are clear on both sides. What happens if this works AND what happens if it doesn't. 4. Solution survived the Press Release drill. No weasel words, no technology-for-its-own-sake, passes the mom test and the so-what test. 5. Customer FAQ has no lethal gaps. Trade-offs are committed (launch-blocker / fast-follow / accepted). Comparisons are honest. 6. Internal FAQ has no lethal gaps. Feasibility, economics (calibrated per concept type), and risk have honest answers. Unknowns have actions and timelines.
The concept FAILS when one or more of:
- Customer remained vague through all four prior stages.
- Problem is a solution-in-search-of-a-problem (the user leads with what they want to build, not what the customer needs).
- Stakes are missing on one side ("this would be cool" without "and if we don't, here's what breaks").
- Press Release still required weasel words to sound compelling.
- Customer FAQ has a skeptic-closes-the-tab question with no plan for it.
- Internal FAQ has feasibility / economic / legal red flags with no mitigation.
- Research findings directly contradict a load-bearing claim and the user did not reconcile the contradiction.
Framing: "forged in steel" vs "cracks in the foundation"
Present the verdict as specific findings, not a score.
- Forged in steel. Parts of the concept that are clear, compelling, and defensible — these survived pressure.
- Cracks in the foundation. Genuine risks or unresolved contradictions. For every crack, name what it would take to address.
Present the verdict directly. Do NOT soften it to be polite. A soft verdict defeats the filter. Constructive framing ≠ soft framing — name the cracks specifically and name what closing them looks like.
On PASS: produce the brief
Write .beagle/concepts/<slug>/brief.md. The brief is a context handoff for brainstorm-beagle, not a deliverable — brief quality is not gated; brainstorm-beagle runs its own discovery on top. Keep it dense and factual; no coaching notes in the brief itself (those live in prfaq.md Reasoning blocks).
brief.md template
# <concept name> — Concept Brief
**Status:** PASSED PRFAQ on YYYY-MM-DD
**Slug:** <slug>
**Concept type:** commercial | internal | oss
## Customer
<specific persona — one paragraph, straight from prfaq.md Ignition>
## Problem
<what the customer does today and why it fails them — one paragraph>
## Solution concept
<one-paragraph distillation from the Press Release solution section — WHAT, not HOW>
## Stakes
- **If this works:** <outcome>
- **If it doesn't:** <outcome>
## Forged decisions
<bulleted list of decisions committed during the gauntlet:
- MVP-in vs MVP-out choices
- Launch-blocker vs fast-follow vs accepted-gap calls
- Concept-type-specific scope bounds
- Named alternatives rejected and why>
## Open questions
<bulleted list — things the PRFAQ surfaced but did not close. Each with a one-sentence "what it would take to answer" note so brainstorm-beagle knows whether to resolve inline or defer.>
## Research pointers
- Artifact analysis: `.beagle/concepts/<slug>/analysis/report.md`
- Web research: `.beagle/concepts/<slug>/research/report.md`
## PRFAQ reference
`.beagle/concepts/<slug>/prfaq.md` — full drill transcript including Reasoning blocks per stage.Update prfaq.md Verdict section
## 5. Verdict
**Result:** PASS
### Forged in steel
- <finding>
- <finding>
- <finding>
### Cracks worth watching
- <minor gap> — to close: <what it would take>
- <minor gap> — to close: <what it would take>
### Handoff
Brief written to `.beagle/concepts/<slug>/brief.md`. Consumed by `brainstorm-beagle` to produce the spec.Set stage: pass in frontmatter.
Tell the user
"PRFAQ passed. Brief written to.beagle/concepts/<slug>/brief.md. Runbrainstorm-beaglenext — it'll auto-ingest the brief and skip most of its normal discovery."
On FAIL: targeted feedback
No brief is produced. The PRFAQ failed its filter; manufacturing a brief would defeat the purpose.
Update prfaq.md Verdict section
## 5. Verdict
**Result:** FAIL
### What broke
<one paragraph — the specific breakage. Not "it needs more work." Name which stage's question has no honest answer, or which claim doesn't survive the research findings, or which lethal gap was not closed.>
### Cracks in the foundation
- <crack> — to address: <what it would take>
- <crack> — to address: <what it would take>
- <crack> — to address: <what it would take>
### What would need to change
1. <concrete change>
2. <concrete change>
3. <concrete change>
### Where to re-enter
Stage `<N>: <stage name>`. <One sentence on why starting there. Stages earlier than N are reusable — prfaq.md, research/, and analysis/ stay in place; the user can pick up from <N> after addressing the cracks.>Set stage: fail in frontmatter. Keep prfaq.md, research/, and analysis/ in place for the re-run. Do NOT delete or archive.
Tell the user
"PRFAQ failed at<stage>.<one-paragraph reason>. See.beagle/concepts/<slug>/prfaq.mdVerdict section for what to fix. When you've developed those, re-run — we'll resume from<stage>."
Graceful redirect (handled at Ignition, referenced here)
Not every "fail" is a PRFAQ verdict. If during Ignition the user cannot articulate a customer or a problem after 2-3 exchanges, issue the not-ready-to-filter redirect instead:
"This idea isn't ready for PRFAQ — it needs brainstorming first. Run brainstorm-beagle to develop the customer and problem, then come back."In the redirect path, NO prfaq.md is written. No research or analysis runs. This is not a FAIL verdict — it is a pre-gauntlet hand-back. Recording it as a fail would pollute the PRFAQ file with non-verdicts.
The verdict rubric above applies only to concepts that made it through all four prior stages. If Ignition bounced the concept, the decision was already made — no Stage 5 is run.
Why binary
A three-tier verdict ("forged / needs heat / cracked") sounds gentler but defeats the filter. The user walks away feeling graded, not filtered. PRFAQ exists to answer ONE question: is this worth committing spec cycles to? The answer is yes or no. Cracks worth watching go into the brief on pass; cracks worth NOT proceeding go into the fail feedback. Either way, the user leaves with a specific next action.