skills/proposal-create/SKILL.md
Creates a proposal for a high-leverage improvement discovered during work. Only for ideas with real impact — not trivial fixes. Use when you discover something worth operationalizing.
npx skillsauth add gtapps/claude-code-hermit proposal-createInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a proposal only when you discover something with real leverage:
Only create a proposal if all three are true:
scheduled-check/*, operator-request, and current-session evidence sources — recurrence is either established by the check's own analysis or was validated upstream by reflection-judge.If any applicable condition cannot be stated concretely, do not create the proposal. Respond: "Not enough evidence yet. Note it in SHELL.md Findings and revisit after more sessions."
Before creating the proposal, call claude-code-hermit:proposal-triage. Pass Evidence Source: when known:
Title: <proposal title>
Evidence Source: <archived-session | current-session | scheduled-check/<id> | operator-request>
Evidence: <one-paragraph evidence summary>
Evidence Source: is optional (default: archived-session).
CREATE — proceed with the steps belowDUPLICATE:<PROP-ID> — <reason>: stop, report to the caller: "Proposal already exists as <PROP-ID>"SUPPRESS — <code>: <reason>: stop, report the suppression reason to the callerDetermine the next proposal ID:
.claude-code-hermit/proposals/PROP-*.md filesPROP-001PROP-NNN with zero-padded 3-digit numberCreate .claude-code-hermit/proposals/PROP-NNN.md using .claude-code-hermit/templates/PROPOSAL.md.template:
id: the assigned PROP-NNNstatus: proposedsource: manual (default), auto-detected (when invoked by reflect), or operator-request (when triggered by a direct operator request). This field records proposal origin only — gate bypass is controlled by the caller-supplied Evidence Source: above, not by source:.session: the current session ID (S-NNN)created: current ISO 8601 timestamp with timezone offset (e.g., 2026-04-06T14:30:00+01:00). Use the timezone from config.json if set, otherwise UTC.related_sessions: relevant session IDs as YAML array (optional — used by auto-detected proposals to link evidence across multiple sessions). Use [] if none.category: classify as one of:
improvement — workflow or tooling fixroutine — repeating scheduled taskcapability — new agent, skill, or heartbeat itemconstraint — OPERATOR.md refinementbug — incorrect or broken behaviortitle: short proposal title (same text used in the H1 heading after the dash)resolved_date: null (set later by reflect when pattern is confirmed gone)- **Created:**, etc.) — all metadata lives in frontmatter onlyAdd a reference to the proposal in .claude-code-hermit/sessions/SHELL.md under the Findings section
Append a created event to proposal metrics (include source and category from the frontmatter):
node ${CLAUDE_PLUGIN_ROOT}/scripts/append-metrics.js .claude-code-hermit/state/proposal-metrics.jsonl '{"ts":"<now ISO>","type":"created","proposal_id":"PROP-NNN","source":"manual","category":"improvement"}'
Update state summary:
node ${CLAUDE_PLUGIN_ROOT}/scripts/generate-summary.js .claude-code-hermit/state/
OPERATOR.mdIf the proposal affects security boundaries — permissions, network access, credential handling — clearly note the security impact so the operator can make an informed decision.
When your operational scope changes (new API, new local service, new publishing channel), create a PROP recommending deny pattern additions or networking changes. Never modify deny-patterns.json or Docker config directly. The operator implements security changes.
When the proposed solution involves creating a new agent, skill, heartbeat item, or OPERATOR.md change, ultrathink and make the Suggested Plan self-contained:
For a new sub-agent:
.claude/agents/<name>.md with:
For a new skill:
.claude/skills/<name>/SKILL.md with:
For a heartbeat check:
.claude-code-hermit/HEARTBEAT.md under the appropriate group/claude-code-hermit:heartbeat run to verify it evaluates correctlyFor an OPERATOR.md refinement:
tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.