Start
Skill emaballarin/ccplugins/plugins/autoresearch/skills/start
Personal plugins for Claude Code (& friends)... maybe worth sharing!
npx -y skills add emaballarin/ccplugins --skill startAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Open a new autoresearch experiment loop — dedicated `ar/…` git branch, `./.ar/` state, and a measured baseline noise floor so later gains can be told apart from run-to-run scatter. Invoke ONLY when explicitly asked to start an autoresearch run, open an experiment loop, or `/ar:start` — e.g. "autoresearch this", "start an ar run", "set up a loop to minimise X". Do NOT auto-fire on ordinary optimisation work. "Make this faster", "improve the accuracy", "tune these hyperparameters", "benchmark this", "find the best configuration" are normal requests to handle directly, not loops. Warranted only when many measured iterations under a locked harness are wanted — it creates a git branch and a commit on first use.
SKILL.md
5.1 KB, as published. Nobody here has run it
/ar:start — begin an autoresearch run
Stand up the loop: dedicated branch, ./.ar/ state, a real harness, and a
measured noise floor. Starting does not iterate — /ar:resume does that.
First action, always
Check for existing state before anything else:
ls -la ./.ar/ar.jsonl 2>/dev/null && git branch --show-current
If ar.jsonl already exists, this is not a fresh run. Print the status block and
say so — offer /ar:resume to continue or an explicit new-segment start
over. Never silently overwrite a run in progress.
Hard rules
- Confirm before creating. If this fired on inferred rather than stated intent, describe what opening a loop would do and confirm it is wanted before step 2. Ordinary optimisation — making something faster, tuning a few hyperparameters, running a benchmark — is handled directly. A loop is for many measured iterations under a locked harness, and it is not free: it branches and commits.
- Never act on a branch this run did not create. Create
ar/<slug>-<DD-MM-YYYY>, carrying the current working tree across — uncommitted and untracked files included — then commit it immediately as the revert floor. Full sequence in${CLAUDE_PLUGIN_ROOT}/references/protocol.md§0. - Never fabricate a benchmark. The harness is filled in by the operator, and the loop does not start until it emits a real number. An invented benchmark makes every number downstream of it fiction.
- Locked harness.
benchmark.sh,checks.sh,evaluator.pyand the code emitting the metric are never edited, for the whole run. A score is only meaningful while the thing measuring it holds still. - State lives only under
./.ar/. Nothing is written outside the target repo, and no global or shared store is touched. - Defer execution. Print exact commands for long runs; do not launch training inside the session.
./.ar/is gitignored as.ar/*plus!.ar/final_report.md— which is also what keepsgit clean -fdfrom eating the loop's own state.
Steps
- Confirm the objective first — goal, metric name,
minimizeormaximize, target if any, budget. State it back and get agreement before touching anything. Nothing in this step has side effects, which is the point: a misfired invocation costs one sentence rather than a branch and a commit in somebody's repository. - Branch and snapshot —
references/protocol.md§0. First side effect of the run; everything after it is recoverable from the snapshot. - Scaffold
./.ar/from${CLAUDE_PLUGIN_ROOT}/templates/(ar.config.json,benchmark.sh,ar-loop.sh, pluschecks.sh/evaluator.pyif that contract applies). Write the agreed objective intoar.config.json. - Hand over the harness. Stop here and ask for
benchmark.shand the config to be completed. This is the one point where starting waits on work it cannot do itself. - Measure the noise floor —
baselineRepeatsbaseline runs, reduced tobaselineandnoiseFloorperreferences/statistics.md. - Write the config header to
./.ar/ar.jsonl; seedresearch.md,worklog.md,ideas.md— seereferences/state-schema.md. - Print the status block and stop. Suggest
/ar:resume.
Read on demand
| Need | File |
|---|---|
| Branch interlock, start and loop detail | ${CLAUDE_PLUGIN_ROOT}/references/protocol.md |
| Baseline, noise floor, keep threshold | ${CLAUDE_PLUGIN_ROOT}/references/statistics.md |
| File formats and metric contracts | ${CLAUDE_PLUGIN_ROOT}/references/state-schema.md |
Read a reference when the step that needs it is reached — not up front.
Completion status
End with a terminal status token as the last line of your reply — DONE,
DONE_WITH_CONCERNS, BLOCKED, or NEEDS_CONTEXT — per
references/completion-status.md. For /ar:start, NEEDS_CONTEXT is the
expected outcome at the harness hand-over (step 4, waiting on benchmark.sh and
the config); DONE once the noise floor is measured and the config header is
written; BLOCKED if no clean baseline can be established.