ask-arman
The gate and path for any question an agent wants Arman to decide. Use when about to ask him anything, ending a turn on a question for him, writing 'needs Arman's decision', marking work blocked on hi
SKILL.md.claude/skills/ask-arman/SKILL.md
GitHub<!-- SYNCED COPY — do not edit here.
Canonical: common-docs/skills/ask-arman/SKILL.md
This file is distributed to every consuming repo by
common-docs/meta/scripts/sync_skills.py. Edit the canonical, run the
sync, and commit each repo. Edits made here are overwritten and lost. -->
ask-arman — the homework gate, the desk, the interview
How every sentence to him is shaped: talk to Arman like a person. Default to stating numbered decisions, then one "confirm and I start". This skill is the path a real question travels.
1. The homework gate — run in order, record each result
- Boss or user? Would the question exist if he had never used the product himself? A question about ONE organization's content, taste or settings is a customer's: make it an onboarding step, a starter kit, or a knob with a default (ask the boss). 0b. Does any answer change what he will see? If not, decide and record it.
- A fact? Code, the DB, a doc or the web settles it: look it up (a
quicklane if tedious). - Already ruled or delegated? Grep the SUBJECT nouns across the owning node's
DECISIONS.mdandVISION.md, the vocabulary lexicon, conflicts, andquestion_desk(action='list_answers'). A dated ruling → apply and cite it. "Research the best and decide" → decide, record the reason inDECISIONS.md, tell him. - Table stakes, a knob, a limit or a number? Decide it (table stakes, limits are knobs).
- Do the champions agree? (champions) Do what they do, name who, list it as "decided — override by number".
- A human step? His account, his screen, money, a credential → one guided session in chat (rule 11), not a question.
3. File it on the Question Desk
The desk is the in-app surface /administration/question-desk/<interview id>, driven by the
AI Dream MCP tool question_desk. There is no markdown ledger.
question_desk(action='list_interviews'), thenget_interviewon the open ones; a question on the same subject exists → add yourself throughupdate_question(also_asked_by), adopt its default, stop.- Otherwise
create_interview(respondent Arman; needs full MCP access) or reuse an open one, thenadd_questionwithslug,title,questionandfields: the five parts (ruled_before,the_best_do,today,implications,recommendation),background,default_in_force,door,node(a realsystems/…orprojects/…path),checked(your gate results),filed_chat_title,filed_session_id. update_question(status='researched')once all five parts are filled (the tool refuses otherwise).
5. Interview mode (/ask-arman when he has time)
- Gather: every open question across
list_interviewsand the owner questions in conflicts. Merge duplicate subjects. - Re-run §1 for every asker. Close what fails with its reason and evidence; a rescue of a closed row must show the ruling is absent.
- Research survivors: one
standardbrief per question fills the five parts with sources; tag kind (quick/complex), door, weight. - Rounds: open with "I have N questions to ask you and M things to tell you"; the things
first. Then rounds per the grilling mechanics,
mark_askedas each goes out, closing with how many remain and "anything you skip ships with my recommendation". "I don't know" means the question failed: back to research. - Record: answers he typed in the admin surface are already on the row; an answer given in
chat →
record_answer, verbatim. Then the owningDECISIONS.md(his words →VISION.md). - Deliver: the asking chat gets one paragraph (question, verbatim answer, where recorded)
via
SendMessage, orclaude --resume <session> -pwhen it is closed; thenmark_delivered. Drain the agent half ofwork_loopcampaignquestion-desk(qd:overturn:*,qd:decide:*, claimed by exact key) untilstatusshows nothing claimable. - Close: answered, closed-without-him (one line each), remaining, chats he must poke.
Never create a schedule for this (no unapproved schedules).
6. Picking up your answer
On resume: question_desk(action='list_answers') (or the bounded wait_for_answers when idle),
read it verbatim, apply it, reverse the default where it differs.
Rationalizations
| Excuse | Reality |
|---|---|
| "This needs Arman's decision" | Tests 1–4 were not run. |
| "It's blocked on him" | Only a one-way door blocks. |
| "I don't guess on a permissions question" | Champions decide it; the default is reversible. |
| "I end my turn there on that one question" | File it, say it, keep building. |
| "Which one do you want?" | A fork without a recommendation is homework handed to him. |
Red flags
- "Let me check with Arman before I…" before grepping
DECISIONS.md. - "Blocked" in your status with no one-way door.
- A question containing a path, a code, or "see".