Imported from zzoretich/UniDeX-Agent-Harness (
codex-plugin/skills/propose/SKILL.md). Install upstream withnpx skills add zzoretich/UniDeX-Agent-Harness --skill propose. Copyright stays with the author.
Host: Codex CLI, through the
agenticosplugin. Invoke as$agenticos:propose.<plugin root>is the plugin's folder, two levels above the folder that holds this SKILL.md; theaoslauncher is<plugin root>/bin/aos. The tools of theagenticosMCP server are namedmcp__agenticos__<tool>.
File this as a proposal: the text the user wrote after $agenticos:propose
A proposal is something for the user to decide: a change to make, or an idea to keep. When the text points at a plan or write-up earlier in this conversation ("the plan above", "that proposal"), file that one and keep its substance.
Vault: the vault value in ${CLAUDE_CONFIG_DIR:-~/.claude}/agenticos.json (also visible in the injected <brain-context>). Proposals live in <vault>/persona/proposals/; its README.md, when present, is the format's reference. If node is not on PATH, use the node path recorded in agenticos.json.
- Classify.
kind:vaultfor a change inside the vault that the review would apply;selffor a change to the Chief of Staff's own files (IDENTITY.md, duties, persona scripts, schedules);workflowfor an idea about how the user works, including a plan for another project;productfor an idea for UniDeX itself.surface, on aproductproposal only:cli|plugin|brain|hud|vault-template|docs, where most of the change lands.slug: kebab-case,[a-z0-9-], 2–61 characters, not used by a file inpersona/proposals/or a section ofpersona/backlog.md.workspace: runaos workspace which --jsonin the shell from the folder this session runs in, without changing directory first (fallback:sh "<plugin root>/bin/aos" workspace which --json). It prints{"name": "<name>", "slug": "<slug>", "via": "<how it matched>"}when the folder belongs to a workspace (the workspace itself, a worktree of it, or a code folder linked to it), or{"name": null}when it does not. Only whennameis set, the proposal records it asworkspace: <name>, which links it to that workspace in the Workbench Spaces tab. Whennameis null, or the command fails or prints anything else, the proposal has noworkspace:line.
- Recheck. One read-only
/bin/shcommand, under 15 seconds, no network, that exits 0 while the situation behind the proposal still holds and nonzero once it is resolved (a file still lacks a line, a version is still below a number). For an idea with nothing to check, usetrue. It must pass the read-only grammar in the proposals README —grep,test,ls,wc,head,tail,cat,diffand read-onlygitjoined by|,&&,||, a leading!,$HOMEthe only expansion; no;, redirections or$(…)— or it never runs; check it withnode <vault>/brain/scripts/persona/ledger.js run-recipe '<recipe>'(it printsrefused: <reason>when it does not pass). - Write
<vault>/persona/proposals/<today>-<slug>.md(local date; create the folder when missing) in exactly this shape:
---
slug: <slug>
filed: <today>
kind: <kind>
surface: <surface — product proposals only; leave the line out otherwise>
workspace: <name — only when step 1's `which` printed one; leave the line out otherwise>
target: <one line — what the change touches, or what the idea is about>
recheck: "<the recipe, with any inner double quote written as \">"
---
# <Title — one line the user recognises>
## What
<the exact change (a diff or the full replacement text), or for an idea what would be built or done. Several items: a numbered list, each led by its priority (🔺 ⏫ 🔼 🔽) when they differ, with timing in brackets.>
## Why
<the evidence: what prompted it, with sources>
## Risk
<what could go wrong, and what undoing it costs>
## Premises
| Premise | Status | Evidence |
|---|---|---|
| <a claim the proposal depends on> | VERIFIED | <how you checked it in this session, with path and date> |
| <a claim taken on trust> | ASSUMED | <why it is believed> |
Mark a premise VERIFIED only when you checked it in this session. Do not write the "Open the proposal in browser" line: the renderer owns it. 4. Ledger and render, in the vault:
node <vault>/brain/scripts/persona/ledger.js append filed <slug> --kind <kind> --by user --target "<target>"node <vault>/brain/scripts/persona/proposal-html.js <vault>/persona/proposals/<today>-<slug>.md— writes the page to<vault>/brain/_index/proposals/<today>-<slug>.htmland the link line under the title. If either script is missing (a vault not yet upgraded), say so and leave the file in place: the nextaos upgradeand scan render it.
- Reply in two lines: the title as the page link, copied from the file's
**[Open the proposal in browser](file://…)**line, then "Decide it in the Workbench Proposals tab, or sayreview persona flags." Commit nothing — proposals stay uncommitted until the review decides them.
