propose
Write a short self-build proposal card (a new skill, helper agent, tool, automation or ready-made blueprint) for the user to approve, or, in proactive mode at the end of a session, suggest at most one
SKILL.md.claude/skills/propose/SKILL.md
GitHubPropose
Turn a repeated need into a one-page proposal the user can say yes or no to.
When to use
- The user asks for a new ability: "Could you make that a skill?", "I want something that checks my numbers", "Can you connect Zotero?".
- The user picks something "available to build" from
/menu(a blueprint) or a tool from the catalogue. - Proactive mode (
/propose --proactive): at the end of a session, or from/weekly-review, when the user did the same manual job again. Rules inreferences/proactive.md.
Nothing is built here. Building is /build, and only after a yes.
Before you start
- Check self-build settings:
node system/scripts/proposals.mjs status --json.can_propose: false(modeoff): say "Building new skills is switched off. Say/reconfigureif you'd like it on." Stop.- Proactive mode: continue only if
can_suggest_proactivelyis true.
- Look for something that already exists, so you don't propose a duplicate:
.claude/skills/*/SKILL.mddescriptions (including the user'smy-*skills);system/blueprints/*.mdtitles (a ready-made plan is safer than a new design);system/catalogue/mcp.jsonservers[](whatlines);- open cards in
vault/00_inbox/proposals/. If one fits, say so and offer it instead ("/studyalready does most of this. Want me to show you?").
- A vague idea is fine here. Write what you know;
/buildruns/clarifybefore anything is built. - Get today's date from the system:
node system/scripts/date.mjs(local date).
Steps
- Decide the kind (
skill,agent,mcp,blueprint,automation) and the name:- designed for the user:
my-<slug>(lowercase, hyphens, 2–4 words:my-case-summary); - a blueprint: the blueprint's file name without
.md(zotero); - a catalogue tool only: the catalogue
id.
- designed for the user:
- Pick model and effort from the routing table (SPEC §6): sorting or tagging → haiku/low; drafting, notes, research → sonnet/medium; checking or critique → sonnet/high; real judgement → opus/high (rare). For a blueprint, use what it states.
- Rate the risk:
low: reads and writes only insidevault/; no new accounts or keys.medium: uses the web, a new tool, an API key, or school systems (read-only).high: anything that could send, post, submit or delete; tools withtier: "high-risk"; always-on servers;autosending. A blueprint's ownriskwins if higher.
- Write the card at
vault/00_inbox/proposals/<YYYY-MM-DD> <Title>.md, starting fromsystem/templates/notes/proposal.md. Frontmatter exactly as SPEC §11 (type,created,status: "open",kind,name,model,effort,risk). Body sections, in plain words a non-technical reader understands:- What it does: one line, then one concrete example ("You drop a case PDF in; you get a one-page summary note in your course folder.").
- Why I'm suggesting it: the evidence ("You asked me to summarise case readings 3 times in the past 2 weeks." or "You asked for it."). For a blueprint: the user's reason.
- What it will touch: folders it reads and writes; tools it uses; for an MCP, that
config/mcp.selected.jsonchanges. Say clearly what it will not touch. - Cost and risk: usage (light / moderate / heavy for their plan), money (usually free), and the risk in one sentence.
- How to undo: "Say
/remove-skill <name>. It removes everything this added; your notes stay."
- Add the task:
node system/scripts/tasks.mjs add "Approve or reject: <Title>" --tag propose --priority low --link "00_inbox/proposals/<YYYY-MM-DD> <Title>". - Record it:
node system/scripts/proposals.mjs mark <key> suggested --card "vault/00_inbox/proposals/<file>.md"(key: the slug withoutmy-). - Ask in chat (3–5 lines: what it does, why, risk, then the question). AskUserQuestion: Yes, build it now (recommended only if risk is low) / Not now (keep the card) / No thanks.
- Yes: set the card
status: "approved", tick the task (node system/scripts/tasks.mjs done "Approve or reject: <Title>"), then run/buildwith the card path. - Not now: leave it open. "It's in your proposals; say 'build <Title>' any time."
- No thanks: set
status: "rejected", tick the task, runnode system/scripts/proposals.mjs mark <key> rejected. Don't suggest it again.
- Yes: set the card
Outputs
vault/00_inbox/proposals/<YYYY-MM-DD> <Title>.md(a proposal card).- A
#ab/proposetask invault/00_inbox/Tasks.md. state/proposals.jsonupdated (signals and outcomes) viasystem/scripts/proposals.mjs.
Safety
- Never build, install or edit anything from this skill. Only the card, the task and
state/proposals.json. - Never propose changes to protected files:
system/**,.claude/settings.json,system/core.md, the catalogue, or framework skills. If a need can only be met that way, say so and suggest/update-alterbrainor telling the Alterbrain maintainers.- One exception: the quarterly model check (
.claude/skills/health-check/references/model-check.md) writes "Update model routing" cards. They may change only themodel:andeffort:lines of skills and agents, and/health-checkapplies them after approval, not/build.
- One exception: the quarterly model check (
- Proactive mode: at most one suggestion per session, never mid-task, never a rejected idea, never above
max_open_proposals. Seereferences/proactive.md. - Evidence in cards and signals is described in plain words without other people's names or personal details.
- Don't oversell. If the gain is small, say so.