Your agent asks when a choice changes scope, touches customers, revenue, security or data that can't come back, goes against a principle, or is a real choice between options. Anything else is a note and it carries on. It checks the spec first, because an answered decision or a principle may already settle it.
01When it asks
02What an ask looks like
Three lines: the topic, the ask, and the options with the one it would take. If you've stated a principle that would settle this next time, it names that too. You should be able to answer in one line.
03One at a time
A priority carries one open ask. A new topic waits until you answer. Asking doesn't block your agent: it carries on with whatever doesn't depend on the answer. The ask lands in Needs You.
04Where you answer
Answer in the app, or from your own terminal when you're signed in as yourself (annsa.act answer). The agent reads your answer on the spec (decision) the next time it opens it, if the priority has a spec. Only a "Looks like #NNN" answer merges on its own. Every other answer is stored for the agent to read; it isn't carried out for you. An agent credential can't answer.
Your call: the answer, and whether to make it a principle so it isn't asked again.
05If you want more first
If you ask your agent something back, it rewrites the same ask with what you wanted. Same topic, better options. If it's context that doesn't change the ask, it adds a note.
06How the answer lands
When the answer changes what your agent builds, it adds one line to the section quoting your words and the date, plus your principle if you gave one. It never rewrites the answer or sends the line alone. It never treats an open ask as a decision.
07The full skill your agent reads
Your agent fetches this with annsa.ask topic=decisions when it connects. It is the product’s own rule, word for word.
Overview
An ask puts a priority in a person's Needs you queue. It costs their attention, so it is rare, it has a shape so it can be answered in one line, and the answer comes back to you as direction. Really simple language. No essays.
Who decides: a person answers; you raise, read and apply. You cannot clear
your own ask, and one priority carries one open ask at a time. A person answers
from the board, or from their own terminal with annsa.act answer (and asks
you something back with annsa.act ask_back) — both refused to an agent
credential, so do not try them yourself.
Raise
When
- It is one of the four triggers. If not, it is a note —
annsa.act noteand carry on.- scope — Changes scope or intended outcome
- customers — Affects customers, revenue, security or irreversible data
- principle — Contradicts a principle
- options — Requires choosing between legitimate product options
- Nothing on the spec already settles it.
annsa.specfirst — an answereddecisionthere is direction, not a question. - No ask is already open on the row (
decision.state == "open"). A person answers one question at a time.
The shape
Three questions, in order:
- Which kind?
decision | help | gap | update. A decision carries options, as short labels, with the one you'd take. - What is the ask, in one line? A person should be able to answer it in one line.
- What principle, if the person stated it, would let an agent settle this next time? That is
principle— the line agents skip and the one that matters. An ask without it is an ask they will get again.
topic— one line — what this is aboutkind— decision | help | gap | updateask— the ask itself, one lineoptions— short labels, only for a decision — "A - human only", "B - agent and human" (optional)recommend— which option you'd take, by its letter — optionalprinciple— the rule that would let an agent settle this next time — Catherine chose this word over "why you" (11 Sep) because it invites the rule, not a sentence about the agent
Her example, verbatim — this is the register:
Topic: Needs-you flag
Ask: Decision on who can clear it or if it can't be exited
Options: A - human only B - agent and human C - can't be removed
Principle - product decision
The call
annsa.act escalate
priority_number: <#0NN>
trigger: options
topic: "Needs-you flag"
kind: decision
ask: "on who can clear it or if it can't be exited"
options: ["A - human only", "B - agent and human", "C - can't be removed"]
recommend: "A"
principle: "product decision"
What happens next
- The priority shows in Needs you on the board and the ask sits above the brief until a person answers.
- Raising does not block you. Carry on with anything that does not depend on the answer.
- The reply carries
url: hand that link to the person instead of naming the priority. It opens the sheet on the open decision, options ready to tap.annsa.speccarries the sameurlon an opendecision, andannsa.priorities mine=trueon aneeds_mequestion back. - If the door refuses the shape, the reply shows the shape and her example — fix and resend.
What not to do
- Do not narrate. A topic is a line; an option is a label; a principle is a rule, not a paragraph.
- Do not raise a second topic on a row with an open ask — wait, or fold it into the open one.
- Do not raise what you can settle from the spec, a note, or a principle already written.
Read back
When
- Every time you pick a priority up:
annsa.spec priority_number=Nand readdecisionbefore you write.
The shape
decision is absent when nothing was ever asked — like updates, which is absent when none are pending; read both keys, an absent key means nothing to do. Otherwise:
state: open—ask,lines,since, andquestion_backif a person asked you something.state: answered—answer,option,answered_at,topic,principle, and theaskit settled.
The answer's fields:
text— what the person wroteoption— the option they chose, by its label — only if the ask had optionskind— answer | ask_back — ask_back is a question back to you; the ask stays openby— the user id who answeredat— when
The same record is a note on the priority, titled by kind — decision: Decision made, help: Help given, gap: Gap answered, update: Update acknowledged — e.g. Decision made — Needs-you flag: A - human only.
What happens next
-
answered_atafter your last note → the direction changed while you were away. Apply it (below) before anything else. -
question_backset → answer it (below). -
state: openand it is your ask → carry on with what does not depend on it.
What not to do
- Do not treat an open ask as an answer. Open means nobody has decided.
- Do not re-ask an answered question. The answer stays on the row until a new ask replaces it.
Answer a question back
When
-
decision.question_backis set, or a note titledQuestion for the agent — <topic>appeared. The person wants more before deciding; the ask is still open.
The shape
The same three-line ask, rewritten with what they asked for — the same topic, a better ask, better options. Not a reply thread.
The call
annsa.act escalate # same topic → updates the open ask
priority_number: <#0NN>
topic: "Needs-you flag" # unchanged
ask: "<the ask, with what they asked for>"
...
If what they asked for is context that does not change the ask, annsa.act note it and leave the ask as it is.
What happens next
- The open ask is replaced; the question back is consumed; the person sees the new ask in the same place.
- Their question stays on the priority as the note
Question for the agent — Needs-you flag.
What not to do
- Do not change the topic. A new topic is a second question and the door refuses it while one is open.
Apply
When
-
decision.state == "answered"and the answer changes what you would build.
The shape
The section as it stands, plus one line quoting the decision: "Decision (12 Sep): A - human only — <their words>." The principle goes with it if they gave one, so the next agent does not ask again. write REPLACES the section with what you send — so send the current text with the line added, never the line alone.
The call
-
annsa.spec priority_number=N— copy the section's current text. - Your section (you hold the priority):
annsa.act write section=what_to_build text="<current text, then a blank line, then> Decision (<date>): <option> — <their words>. Principle: <principle>". - Someone else's section, or you do not hold it: the same
write— the door refuses it and records your text as an update on that section;reasonon the update is why it was refused. Nothing is lost. - Then
annsa.act note text="Applied: <topic> → <option>. Changed: <section>."— one line.
What not to do
- Do not send the decision line alone.
writereplaces the whole section; the rest of the direction would be gone. - Do not paraphrase the answer. Quote it.
- Do not mark anything shipped because a decision was made. Shipped means merged and checked.