agentleFS
mariomilemariomile/builder-os/skills/pressure-testing/SKILL.md

pressure-testing

Skill2 starsChanged 49 days agoMITView on GitHub

Interviews the person on an idea, plan or decision in numbered rounds with options and a recommendation, until nothing is assumed and the context to go on is shared. Use when asked to grill, brainstorm or stress-test, or before relying on a choice.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Only unresolved branches the applicable gate names block it.

    line 72

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Pressure Testing

Grilling, for every situation BuilderOS meets: a raw idea, a brainstorm, a problem, a choice, a plan about to be relied on. Standalone or inside a phase, per operating modes; ADRs and gate effects belong to a lifecycle initiative.

The Design Tree

Interview the person relentlessly until you reach a shared understanding. Map it as a design tree: every decision branches into the decisions that hang off it. The root follows what was brought:

BroughtRootFirst branches
An idea, a brainstormWhat you need to proceedWho it is for, the problem it removes, what done looks like, constraints, what was tried, what must not change
A plan or decision to rely onThe claim in its strongest formThe load-bearing assumption, what would prove it wrong, the cheapest way to find out
A choice between optionsWhat the choice servesThe deciding factor, the options nobody listed: doing nothing, the cheaper version, the reversal

Openers per situation and phase: question banks. Follow the answers, not the bank.

Rounds

Work the tree in rounds. The frontier is every decision whose prerequisites are settled: the questions you can ask now without guessing at answers you have not heard. A round asks the whole frontier, numbered, each with your recommended answer; then wait for the person's answers before the next round. Numbers run on across rounds and sessions: if round 1 ends at Q6, round 2 starts at Q7, so Qn always names one question.

🎯 **Thesis:** {the idea or claim in its strongest form}; it rests on {the load-bearing assumption}. Correct me if I misread it.

---
❓ **Q{n} · {short title}**
{The question, with the context it needs.}
- **A** {option} → {what happens if chosen}
- **B** {option} → {what happens if chosen}
- **C** {option} → {what happens if chosen}

➡️ **B**: {the deciding factor, with its source tag when it rests on a fact}.

---
❓ **Q{n+1} · {short title}**
{One plain line, for a fact only the person holds.}

---
📍 {n} decided · {n} open · {n} deferred · next: {the branch the next round opens}
✍️ `{n}B, {n+1} …` or "go with the recommendations"

The 🎯 line opens the first round and any round after the thesis changes; 📍 closes every round, in the person's language. Options are the two to four the person could credibly pick, including ones you would argue against. Recommend the strongest option, not the safest, in one clause naming the deciding factor.

Each answered round reshapes the tree: settled decisions push the frontier outward and unblock the questions that depended on them. Recompute it and ask the next round. A question resting on another still open in this round belongs to a later round. Answers cost one line: a code (7B, 8A, 9 other: …), free text, or "go with the recommendations", which records each recommendation of the round as the person's.

Facts and Decisions

Finding facts is your job, never the person's. Read the memory, the question log, the repository and the documents they named before round 1; when a question needs a fact from the environment, delegate the search where the host allows, and ask the rest of the frontier meanwhile: only the questions downstream of it wait. A fact only the person holds is one plain line, with no options and no recommendation, since a guessed value invents evidence. A fact neither side holds gets the ways to close the gap as options, per round formats.

The decisions are the person's: put each to them and wait. Routine reversible choices within delegated scope need no question.

Done

The interview is done when the frontier is empty: every branch visited, decided, accepted as a risk, deferred with a test and owner, or named once as out of scope, and nothing silently assumed. Then write the context brief, the shared understanding the next step, skill or session continues from without asking again, and act on it only once the person confirms it.

## Context brief: {topic}
**Goal:** {what this is for, in one line}
**Decided:** {each decision with its Qn}
**Facts:** {each established fact with its source tag}
**Constraints and non-goals:** {what must hold, what this will not do}
**At risk:** {accepted risks and deferred branches, each with its test, owner and date}
**Out of scope:** {branches named once and left}
**Next step:** {what happens now, and who does it}

Only unresolved branches the applicable gate names block it; a deferred risk leaves a mandatory condition mandatory.

Across Sessions

A topic takes as many sessions as its frontier needs, sharing one question log: each Qn with its answer, who, when, the answers it rests on and its status (grilling.md in the initiative's folder in lifecycle mode, .builderos/grilling/{topic}.md elsewhere in a project); the brief is appended to it. Read it first: numbering resumes after its last Qn, its open rows are the frontier. An answer that contradicts a logged answer or a decision becomes the next round's first question (⚠️, both quoted); a replaced answer is marked superseded and everything resting on it is asked again. scripts/bos.mjs grill checks the logs. Formats: round formats.

Watch for

DoInstead of
Ask the whole frontier, then wait for the answersRationing questions, or acting before the round is answered
Look up what can be looked upAsking the person for a fact in the repository or the memory
Continue the numbering; ask a contradiction first, both quotedRestarting at Q1, or letting the later answer silently win
Ask a fact only the person holds in one plain lineOptions that guess its value
Stop at an empty frontier, then write the briefStopping when the person agrees

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.