agentleFS
ARCASSystemsARCASSystems/FounderOS/skills/founder-next-move/SKILL.md

founder-next-move

Skill7 starsChanged 19 days agoMITView on GitHub

Propose the single highest-leverage next move. For a founder it aims at their next paying customer; for an operator running a role inside a company it aims at the outcome they own for whoever is waiting on it. Trigger on "what should I do next", "what's my next move", "where do I push", "I don't know what to do next", "give me one thing to do", or any moment the operator wants the OS to decide the next step instead of listing options. Also fires on the raw idea pitch: "I have an idea", "is this a good idea", "help me validate my idea", or a first-time founder describing an everyday problem and a solution they want to build. Reads the brain, works out where they actually are, picks the one move with the most leverage, and closes with three things they can do today. Free-tier. On your yes it saves one progress card so the next session starts from what happened.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 6 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Before proposing, read brain/.snapshot.md if it exists.

    line 38
  2. Very specific:

    If a deal in context/clients.md has stalled with no touch in 7+ days and no blocker, that stalled deal is usually the move - a warm …

    line 100
  3. Distinctive:

    Known and allowed: put how they know on the card (their licence, their permit), then the money test can run.

    line 110
  4. Very specific:

    After any write to the card or Must Do,: run python scripts/brain-snapshot.py --write so the snapshot shows the change now, not at the next …

    line 168
  5. Very specific:

    When it is more than a business problem: If they say or show they are in crisis or unsafe, stop proposing.

    line 188
  6. Distinctive:

    Use this format. Keep it tight.

    line 194
  7. Very specific:

    If the founder asks "is this the right move" or pushes back on the plan, that is a different job - route to founder-scope-challenge to …

    line 236
  8. Distinctive:

    Every proposal cites the brain.

    line 243
  9. Distinctive:

    Always end with the three-option close.

    line 244
  10. Distinctive:

    No money test until the founder knows they may take money for it where they sell.

    line 249
  11. Distinctive:

    No em dashes, no en dashes, no banned words.

    line 252
  12. Very specific:

    If roles/employees.yaml carries the next-move-caller row, close with one line so the run leaves a trace whether or not anyone was watching:

    line 259

≈ “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

Founder Next Move

Runs on: local-exec - reasons over your files after refreshing the local snapshot (brain-snapshot.py --write) when it is missing or stale; on a cloud or read-only surface I reason from the snapshot or identity files I can read, I do not run the script. No API key, no paid tool.

This is the propose engine. The OS surfaces the operator's state everywhere else; this is the one place it says "therefore, do this." It reads the brain, decides where they are, and names the single highest-leverage move. It always ends with a step small enough to start today, so nobody leaves with a blank screen.

The North Star depends on who is operating, and the identity role decides it:

  • founder / team_of_one: move this founder to their first paying customer faster. If they already have one, the next one. Nothing the OS proposes is for its own sake; it is for the customer.
  • operator (a person running a role inside a company): keep the work they own moving, in front of the person waiting on it. The customer of an operator's work is whoever they answer to and whoever that work serves. Same compression, same three-step close; the aim point changes.

When the input is a raw idea ("I have an idea for...")

The message that triggers this skill is often the pitch itself: a first-time founder - sometimes a student - describing an everyday problem and a solution, the way they would to any chatbot. Treat that message as brain material, not as a request for a lecture:

  • Parse the pitch the way the setup wizard parses a ramble. The problem they describe is the customer clue, the solution is the venture, and their own words are the stage evidence - almost always pre-idea or idea-validation. Run the engine on what they said. Nothing is saved at this point: the progress card below is where it gets kept, and only on their yes.
  • Do not return a startup course, a business plan, a SWOT, or a feature list. The stage table below already says what an idea needs next: real people with the problem, talked to this week, before anything gets built. That is the move.
  • Say it in their vocabulary. "Talk to five people who wear glasses in humid weather and ask what they do about the fog" beats "conduct customer discovery interviews". The move must be something they could start today with a phone and no money.
  • A thin or missing snapshot is already handled by Step 1: the capture move IS the move. Never a blank screen, never an invented plan, and never a refusal that sends a first-timer back to a generic chatbot.
  • Leave them with a card, not just a move. Once the move names a test, offer to save it as the progress card (below). One line in, one card out, and the next session starts from the result.

Brain context (read first)

Before proposing, read brain/.snapshot.md if it exists. If it is missing, or its date: line is more than 3 days old, run:

python scripts/brain-snapshot.py --write

Then read it. A stale cache read as current is how a proposal ends up aimed at last month's state, so the date check is not optional. If the snapshot script is also missing (older install), read core/identity.md directly. Do not block - a thin read still proposes.

The snapshot carries the identity snapshot block - ## Founder Snapshot (venture, customer, stage seed, biggest blocker) or ## Role Snapshot (scope, answers to, yours to own, not yours to decide, blocker) - plus the operator's active working preferences, open flags, this week's must-do, and recent decisions.

The ## Working preferences block in the snapshot is a gate on this output, not context. This skill produces the thing operators correct most, because it tells them what to do. If a row says they want the call made rather than a menu, the three-option close still runs (it is the rule) but the recommendation is stated flat, with no hedging around it. If a row says short answers, cut WHY THIS, NOW to two sentences. Apply the rows silently and never mention the file. A preference this engine ignores is a correction the operator has to give twice, and this is the surface where that is most likely to happen. If brain/.snapshot.md is unavailable, read core/working-preferences.md directly; if that is missing too, carry on without it.

Then read, in this order, skipping what is missing:

  1. core/identity.md - the snapshot block (source of truth if brain/.snapshot.md is stale) and the ## Basics location (drives the UAE ground-truth layer below).
  2. core/profile.md - what the OS leads with. Context only, never a gate. The gate for this engine lives in core/identity.md and passes on either of two shapes: a ## Founder Snapshot block plus a **Role:** of founder or team_of_one under ## Basics, OR a ## Role Snapshot block plus a **Role:** of operator (the identity-layer role from setup, not the profile variant - team_of_one is a role and never appears in the variant field). The block decides the path: Founder Snapshot runs the founder path below, Role Snapshot runs the operator path. If an install somehow carries both blocks (a by-hand copy of the full template), the **Role:** token decides. When neither shape is present, do not run this engine; point them at /next instead. The one exception is a raw idea pitch (see When the input is a raw idea): run the founder path on their words alone, offer the card as usual, and say once that setup can add their venture to core/identity.md so the OS remembers more.
  3. brain/log.md - the last 5 to 10 entries. This is how you re-infer the stage (below).
  4. context/clients.md - active deals, pipeline, last-touched dates.
  5. context/priorities.md, cadence/weekly-commitments.md, brain/flags.md, brain/needs-input.md - grounding for what is already in flight.
  6. context/progress-card.md - the open test, if there is one. Read it before you pick a move: an open test past its deadline with no result makes recording that result the move (see The progress card). Read it every run, even when the snapshot shows no open test. The newest line under ## Closed tests is where the founder stopped: start from its decision, and never propose a test it already ran with the same buyer unless they ask to repeat it.

Step 1 - is the brain functional?

Operator path (Role Snapshot present): the brain is functional the moment Answers to is real plus at least one of Scope or Biggest blocker. With those, propose. With scope but no blocker, propose thin and say so, then ask for the one blocker that would sharpen it. With Answers to missing, do not guess a move - the move IS capturing it: "I can point you at a real move the moment I know who is waiting on your work. Tell me in one line." Then stop.

Founder path: the brain is "functional enough to propose" the moment the Founder Snapshot has a real customer and at least one of stage or biggest blocker. Check the four fields:

  • If customer plus (stage or blocker) are set: propose a real move (Step 2 onward).
  • If the customer is set but neither stage nor blocker is: still propose. Read the stage from the venture and the customer, give a thin first move toward that customer, and say plainly it is thin - then ask for the one blocker that would sharpen it. Do not stall on a missing stage when you already know who the customer is.
  • If the customer is not set (only the venture, or all four thin): do not guess a move. The move IS capturing the missing field. Say: "I can point you at a real move the moment I know [the missing field]. Tell me in one line: who is your first customer? / what is the single thing blocking your next sale?" Then stop. This is the empty-states rule - a thin brain gets a capture move, never a blank screen and never an invented plan.

Propose from thin data when you have the minimum, and say it is thin. Sharpen as the brain fills.


Step 2 - infer the current stage

Founder path only. On the operator path there is no venture stage to infer: skip this step and read the state straight from the Role Snapshot, the log, and this week's commitments - what is owed, to whom, and what has gone quiet. Then go to Step 3.

The stage seed in the Founder Snapshot is a starting read, not a fixed label. Re-infer the current stage every run from the log and the pipeline, then say which signal you used. A founder who closed their first sale last week is at revenue this morning even if the seed still says first-customer.

Six stages, each with the move that has the most leverage toward a paying customer:

StageWhat it looks like in the brainThe leverage move
pre-ideaventure vague, no named customerName one kind of customer and talk to a handful of them this week about the problem, not the idea. Five is a good start, not proof. No building.
idea-validationcustomer named, no proof anyone will payGet the strongest evidence they are allowed to get. Interest that costs the buyer something other than money (a waitlist with their details, a letter of intent with no price, a booked follow-up call) is open to anyone. A deposit or pre-sale only once they know they may take money for it where they sell (see Before a test takes money). Still no building.
buildingmaking the product, no buyer lined upCut scope to the smallest thing one customer would pay for, and line up one pilot buyer in parallel (a paid pilot waits for permission, see Before a test takes money). Building without a buyer in sight is the trap here.
first-customerproduct exists, zero paying customersDirect outbound to named prospects, or go where the customer physically is. This is the money stage - the North Star bites hardest here. Settle the right to sell before any paid sale.
revenueone or a few paying customersDo it again with a lookalike. Tighten the offer, ask for a referral and a testimonial, find the second and third customer. If their right to sell is not on file (sales to friends are not permission), settle it before the next sale.
mrr-scalerepeatable revenue, founder is the bottleneckThe constraint is now founder-dependency on the revenue engine. Route to bottleneck-diagnostic, but keep the move anchored to winning more customers, not internal polish.

Pick the stage from evidence. If the evidence is mixed, say so and pick the lower stage - it is safer to propose the earlier move than to assume progress that has not happened.


Step 3 - pick the one move

From the stage, the blocker, and what is already in flight (pipeline, flags, this week's must-do), pick the SINGLE highest-leverage move toward a paying customer. One move, not three. The founder has too many options already - your job is to compress them to one.

Bias the pick toward the territory, not the screen. A founder at first-customer is better served by "go stand in the market where your buyer is on Saturday" than "redesign your landing page." Action that touches a real potential customer beats internal work almost every time.

If a deal in context/clients.md has stalled with no touch in 7+ days and no blocker, that stalled deal is usually the move - a warm prospect going cold costs the most.

On the operator path the same logic reads sideways instead of outward: the highest-leverage move is almost always the one that lands or unblocks the thing whoever you answer to is waiting on. A commitment gone quiet for 7+ days is the operator's stalled deal, and anything that sits inside "not yours to decide" is never the move - the move there is handing it upward with a recommendation attached.


Before a test takes money

A deposit, a pre-order, a paid pilot and any sale take money, and earlier sales to friends do not settle the question. Propose one only when the founder knows they are allowed to take money for this activity where they sell. In most countries, the UAE included, that means a trade licence or a permit that covers the activity.

  • Known and allowed: put how they know on the card (their licence, their permit), then the money test can run.
  • Not known: do not propose the money test. Use problem or intent evidence this week, and make finding out the route part of the next action. The legal-compliance skill can outline the routes for a jurisdiction it has loaded, and a qualified adviser confirms them. This is a safety rule, not legal advice.
  • Taking an order is a money test. "Want me to put you down for a box at AED 60?" takes an order, even with no payment yet, so it waits for permission like a deposit does. So does asking a buyer to hold a date, a slot, an appointment or a box for themselves, with or without a price: that is the start of a sale. An agreement to pay later (a deposit promised, a slot held against payment) is an order too. Before permission, a test never asks for or counts any of these. A booked call to talk about the problem stays intent. A free trial offered as a test is not an order, but it puts the product in a stranger's hands, so the free-test rule below applies. Barter, pay-what-you-want, and a crowdfunding pledge that gets the product back are sales. A letter of intent with a price is an order, and without one it is intent. Asking "would you pay AED 60?" is not evidence either: a yes to a price nobody has to pay is a guess. Before permission, price evidence comes from what buyers already do: what they pay now for the nearest thing, where, and how often. That needs no permission.
  • A payment route is not a permission. A platform, a marketplace or someone else invoicing for them settles how the money moves, not whether they may sell this.
  • A free test can still need a permit. Giving out food, cosmetics, health products or anything regulated can need a permit even when no money changes hands. A test that puts the product in a stranger's hands waits for the same check. Until then, test with conversations, a waitlist, or showing the product without handing it over.
  • Grants, competition prizes and family money are funding, not customers. They go on the card under funding and never count as a first customer.

The progress card

A move is half the job. The other half is the next session knowing what the founder tried and what happened. The card carries that: one file, owned by the founder, small enough to paste into any AI chat or copy onto paper. The free one-line-idea route (docs/one-line-idea.md) uses the same card, so a founder can start on a phone and move to the full OS without starting again.

When to offer it: after any founder-path proposal that names a test. Ask once, as a plain question that names both files: "Want me to save this as your progress card (context/progress-card.md) and put its deadline in this week's Must Do (cadence/weekly-commitments.md)? (yes / no)". Only a clear yes is a yes. Silence, "maybe" or a change of subject means not now. Write nothing without a yes. On the operator path, skip the card.

A yes covers only what it names. A yes to the card covers exactly the two writes the question named: context/progress-card.md and one line under Must Do in cadence/weekly-commitments.md. It never covers core/identity.md, a lead, a priority, a log entry or any other file. If you also want to update one of those, ask for it separately, name the file, and wait for its own answer.

The card lives at context/progress-card.md, in exactly this shape. It holds one open test for one venture. Write only the lines inside the code block, without the code fence:

# Progress card
Updated: YYYY-MM-DD
Venture alias: <a short name for the venture, no personal names>
Venture: <one line, in the founder's words>
Buyer: <the kind of person or business you want to pay you, not a named person>
Stage: <pre-idea / idea-validation / building / first-customer / revenue / mrr-scale>
Uncertainty: <the one thing that has to be true and has the least evidence>
Test: <the cheapest test this week, with a phone and no money where possible>
Evidence class: <problem / intent / paid sale / repeat sale>
Target, set before the test: <supported if ... / disconfirmed if ...>
Deadline: YYYY-MM-DD
Country: <where you sell>
Money: <none in this test / allowed to sell here, because ... / not known yet>
Result: <filled in after the test>
Status: <untested / attempted / disconfirmed / supported>
Decision: <keep / change / stop, and why>
Next action: <one step, with a date>
Funding (not customers): <grants, prizes, family money, if any>

Rules for the card:

  • The target is written before the test and is not moved after the result. If the founder wants a different target, close the old test with its result (see Old tests are kept), and the new target starts a new test.
  • The target measures the uncertainty. The number that decides must answer the Uncertainty line above it. If the uncertainty is "strangers will book me", count strangers who ask about booking or book a call to talk, not people who say they use Instagram. Count bookings themselves only once the Money line says they may sell. A target that measures something easier is not a test of the uncertainty.
  • Evidence classes stay apart. Problem: people show the problem in what they already do or pay for. Intent: they commit something other than money (time, a referral, their details on a waitlist, a letter of intent), and it binds no one. Paid sale: a stranger pays, taken once the founder knows they may sell. Repeat sale: they pay again. Funding is none of these. "I would use this" is not evidence of anything, and neither is a yes to "would you buy this?" or "would you order a box?": that is a guess about the future, not an act. A target counts acts, such as people who describe the problem from their own week, who give their details to hear when it is ready (no date, slot or box held for them), or who book a call. The Evidence class line holds one of the four words, problem, intent, paid sale or repeat sale, and nothing else.
  • Status words. untested: not run yet. attempted: run, and the result is still unclear. disconfirmed: the result met the disconfirmed line. supported: it met the supported line. Status holds one of those four words and nothing else, never "in progress" or "pending". Read the line as it was written, count for count: a strong rate is not the line, so 7 yes out of 8 asked does not meet "supported if 10 of 15". A result short of both lines is attempted, and stays attempted when the founder decides to keep going: their decision goes on Decision, and never changes the Status the numbers earned.
  • Decision words. keep: the same buyer and idea, and the next test. change: a different buyer, offer or test. stop: end or park this venture. Running the same test for longer is not a decision. It is an extension (see When the card has an open test), and the test stays open.
  • Five is a starting number, not proof. Set the number that decides from the question being asked, before the results come in.
  • People on the card are aliases (Person A, the cafe owner near campus). Names, phone numbers and chats stay in the founder's own notes. Keep family details, health or wellbeing notes, passwords and customer contact exports off the card, because the card is the thing they paste into AI tools.
  • One open test at a time. A second test waits until the first has a result and a decision.
  • One venture per card. The card is for the venture the founder is working on now. If they talk about a different venture, ask before you treat it as the card's venture: "Your card is for <alias>. Is this the same venture, or are you switching?" A switch closes the open test first (its result and decision, or "parked until <date>") and starts the new venture's card only on their yes. Never carry one venture's test, target or money status over to another.
  • Old tests are kept. When a test has a decision, or its target changes, move it to one line under ## Closed tests at the bottom of the same file, newest first, before the next test goes into the card. The card only ever holds the open test. A closed test is one line in exactly this shape, never a heading or a block of fields: - 2026-10-15 | Test: five parent conversations | Target: supported if 3 of 5 name a frustration | Result: 4 of 5 | Status: supported | Decision: keep, "they all hate the no-shows" Decision holds the founder's own decision word and their words for why. The status word (supported, disconfirmed, attempted) goes on Status and never stands in for the decision.
  • Text tagged private stays out of the files. Before writing the card or the must-do line, leave out everything between <private> and </private> (any capital letters), tags included. If a <private> tag is never closed, leave out everything after it. This covers what the text means, not only its words: do not paraphrase it, sum it up or hint at it, and never fill a card line from it. If the only source for a line (Funding, for example) is private text, leave that line empty. If everything they said is tagged, write nothing and say "skipped - content was tagged private." in the chat. That sentence never goes on a card line: a line whose only source is private text stays empty. Be plain about the limit: this keeps the text out of the saved files. It cannot unsend what is already in this chat, which the AI provider received when they typed it.

The way back to the next session. When the card is saved, add one line under ## Must Do in cadence/weekly-commitments.md: Test result due <deadline>: <test> (context/progress-card.md). Replace an unfilled template placeholder if there is one. If Must Do already holds three real items, ask which one the test replaces. If they keep all three, leave the line out and say plainly that Must Do will not show the deadline. The card still comes back: the snapshot carries the open test from the card itself, and the session nudge names it when a message reads like a result. Not every phrasing does, so the open-test rule in CLAUDE.md covers the rest.

After any write to the card or Must Do, run python scripts/brain-snapshot.py --write so the snapshot shows the change now, not at the next refresh. A snapshot written before the save would otherwise read as fresh and still miss the card.

When the card has an open test:

  • Past the deadline with no result: the move is recording the result. Ask for it in one line.
  • Result given: compare it with the target set before the test and set Status. The Result line holds their result in their own words and numbers, not your reading of it. Then ask the founder for the decision (keep, change or stop) in one line and stop there. Do not propose the next test in the same answer. The decision is theirs: do not fill the Decision line yourself, not even as a suggestion to approve.
  • They extend the same test (more time or more people, same target): record it now, in this reply. Write the partial result on Result, set Status to attempted, and keep the target as it is. Leave Decision empty, because the test is still open and a filled Decision tells the next session it is closed. Move the deadline only on their yes. A date or a length they gave ("one more week") is that yes. Count a length from the current deadline, or from today if that has passed, so an extension never moves the deadline earlier. Write the new date, say it, and change the date on its must-do line to match. If they gave none, keep the deadline.
  • Decision given: record it first, before asking anything else. Their decision is the yes for this write, so do not ask whether to record it, and do not wait to hear the next customer or the next test. Showing the line you would write is not writing it. Write the result and their decision in their words, move the closed test under ## Closed tests, and take its Test result due line out of Must Do, even if the next test still needs an answer from them. Then name the next uncertainty and its test with a target set before it, and ask for a yes before writing the new test into the card, its Updated: date and the must-do line.
  • Disconfirmed is a good result. It saves weeks of building the wrong thing. Say so.

Step 4 - the human-support layer

Two conditions add to the output. Apply them only when they fit.

UAE ground truth (only when the founder's location or market is the UAE / Dubai). Put one or two concrete, territory-level specifics into the move: how the trade actually moves, the gatekeepers, the physical markets (a wholesale produce market, a weekend market: check the name and how to get in on the ground), who you have to get past to reach the buyer. Send them to the ground, not just to the inbox. Do not invent specifics you are unsure of - name the market and the move, and tell them to verify the access detail on the ground. If the move takes money or hands over a product, the permission question in Before a test takes money comes first. To point them somewhere, read the matching file in skills/legal-compliance/references/uae/ (for food, industry-specific.md) and quote who it names with that file's last-verified date, and tell them to confirm it is current. If the pack does not cover it, name only the question ("which licence or permit covers selling food from home in your emirate"), never a licence, authority or fee from memory.

The jobs off-ramp (only when they signal they are rethinking the whole venture - or, on the operator path, the role itself - or a stage has stalled for a long stretch with no movement). Name it plainly and without judgement: not every venture is the right one to push, and changing track is a valid move, not a failure. Offer the choices they can make and let them pick: pause until a date they choose, a smaller test, a different venture, or a job for now. Record only the choice they make, never a judgment about them. A stall can come from exams, money, care duties or a hard month, so do not read it as low commitment. Do not surface this on a normal proposal - it is for the founder who is actually questioning the path.

When it is more than a business problem. If they say or show they are in crisis or unsafe, stop proposing. Follow the support rule in founder-coaching: this needs a person, not a move.


Step 5 - render the proposal

Use this format. Keep it tight. No em dashes, no en dashes.

YOUR NEXT MOVE
<the single move, one or two sentences, clearly toward a paying customer>

WHY THIS, NOW
<two or three sentences. The stage read and why this move has the most leverage toward a customer. Cite the brain - the blocker, the named customer, a stalled deal, an open flag.>

WHERE YOU ARE
Stage: <inferred stage> (<one line: seed, or re-inferred from the log because X>)
Aiming at: your <first / next> paying customer

[Operator path: replace the two lines above with]
Scope: <the part of the job you run, from the Role Snapshot>
Aiming at: the work you own, in front of <who they answer to>

[UAE ground truth - include only when the market is the UAE]
<one or two concrete territory specifics tied to the move>

DO ONE OF THESE - YOU LEAVE WITH A STEP IN YOUR HAND
1. <HIGH: the ambitious version, the one that moves the needle most>
2. <LOW: a 15 to 30 minute step toward it>
3. <LOW: the smallest possible step, something you can do from your phone right now>

[Founder path, when the move names a test]
THE CARD
Uncertainty: <one line> | Test: <one line> | Evidence class: <one> | Target, set before the test: <the act it counts, with a number> | Deadline: <date>
Save this as your progress card (context/progress-card.md) and its deadline in this week's Must Do (cadence/weekly-commitments.md)? (yes / no)

[Rethinking the whole thing? - include only when the founder signals a track change or a long stall]
<the jobs off-ramp line, plainly stated: pause until a date, a smaller test, a different venture, or a job for now - their pick>

The three-option close is the rule, not a suggestion: one high, two low. The founder must always leave with at least one step small enough that there is no excuse not to start.


After proposing

This skill recommends; the founder acts. It writes to the founder's operating files only on their yes: the progress card (context/progress-card.md) and its one must-do line. Otherwise the only side effect is refreshing brain/.snapshot.md when it is stale or missing. If the founder then does the move, that gets logged through the normal brain-log flow, not by this skill.

If the founder asks "is this the right move" or pushes back on the plan, that is a different job - route to founder-scope-challenge to stress-test the plan, or decision-framework for a structured choice.


Rules

  • One move. Not a menu. The whole point is compression.
  • Every proposal cites the brain. No move without a reason drawn from the founder's own files.
  • Always end with the three-option close. Never a blank screen, never zero next steps.
  • A thin brain gets a capture move, not an invented plan. Do not fabricate a customer, a stage, a manager, or a blocker.
  • The North Star is a paying customer for a founder, and the work you own in front of whoever waits on it for an operator. Internal polish is almost never the move on either path.
  • Free-tier only. Reads files and reasons. No API key, no paid tool.
  • A flag, pattern or log entry labelled as an example is the OS's demo, not the founder's state. Never cite it as evidence.
  • No money test until the founder knows they may take money for it where they sell. Grants and prizes are funding, never a first customer.
  • No unchecked outside-world facts. A date (a festival, an event, a deadline), a law, an authority, a fee, or the name of a group, market or event comes only from the founder's files, a reference pack, or a source checked in this session. A well-known institution, such as a university, can be named as a place to look. A specific group, page, community, market or event cannot: name the kind of place instead ("a brides' group in your city"). Otherwise say what to check: "check this year's date", "find which authority licenses this in your emirate". A move built on a wrong date or the wrong regulator sends the founder the wrong way with confidence.
  • The card is written only on a yes. Its target is set before the test and is not moved after the result.
  • No em dashes, no en dashes, no banned words.
  • The gate is identity, not variant: a ## Founder Snapshot block with the founder or team_of_one role, or a ## Role Snapshot block with the operator role, in core/identity.md. The profile variant never gates this engine. When neither shape is present, point to /next, except for a raw idea pitch, which runs on their words alone.

Record the run (the closing act, when this runs as a seat)

If roles/employees.yaml carries the next-move-caller row, close with one line so the run leaves a trace whether or not anyone was watching:

python scripts/agent_runs.py record --seat next-move-caller --trigger "asked for the next move"         --read "brain/.snapshot.md,core/identity.md,brain/log.md" --produced "" --outcome ok

When the founder said yes to the card, pass --produced "context/progress-card.md,cadence/weekly-commitments.md" instead of the empty value. Use --outcome refused (with --could-not "<why>") when the brain was too thin to propose and you asked for the missing field instead, and --outcome failed --could-not "<why>" when it broke - the script requires the reason for both, so a failure with no reason is never a silent no-record. A refusal is not a failure and the log distinguishes them. Skip this silently if the script or the registry is absent, and never mention it in your reply - it is bookkeeping, not output.

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.