operon-setup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited operon-setup (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A meta-skill: install the Operon CLI on a fresh machine, authenticate the user via a browser tab, detect their AI tools, pick or create a workspace, mine their first candidates, and surface the top three so they can publish one. Designed to be driven by an AI assistant (Claude Code, Codex, Cursor) end-to-end.
Codex, or Cursor and asks how to share it with a teammate.
and doesn't know where to start.
node --versionRequire node ≥ 22. If older, point them at https://nodejs.org and stop.
npm i -g @withoperon/cliIf they're on a system without global npm permissions, suggest the pnpm dlx @withoperon/cli form instead.
operon setup --yes --jsonThree important things about this invocation:
default to the user's $USER; mining window defaults to 30d.
line is written to stdout the instant each step completes. Parse stdout line by line instead of waiting for one final blob.
https://app.withoperon.com/auth/cli?code=ABC12345. They click Approve. No copy/paste of tokens.
Each event has the shape { ts, cmd, level, event, data }. Watch for:
event | Meaning | What to do |
|---|---|---|
started | Setup began | Show a "Setting up Operon…" status |
auth.login_started | Device-code flow started | Tell the user "Your browser will open in a second" |
auth.ready | User signed in | Note data.apiBase |
sources.detected | Claude Code / Codex / Cursor presence | Read data.sources (array of names) |
workspace.picked | Workspace selected/created | Save data.slug for downstream commands |
mine.complete | First mine finished | data.candidates is the array — present top 3 to user |
done | Setup is complete | Move to step 5 |
If the user closes the terminal mid-setup, you can recover state with:
cat ~/.operon/events.log | tail -50After mine.complete, you have a list like:
{
"slug": "review-pr",
"score": 0.91,
"uses": 12,
"summary": "Review the diff for security, performance, and consistency issues."
}Show the user the top 3 in plain English and ask which to publish.
Only if ANTHROPIC_API_KEY is set in the environment:
operon polish <slug>This drafts a clean SKILL.md from the raw candidate. Skip if the key isn't set — operon publish works without polishing.
operon publish <slug>Report the resulting URL back to the user (it'll look like https://app.withoperon.com/<workspace>/<slug>).
If a command exits non-zero, parse stderr for the line https://withoperon.com/docs/cli/errors#<slug>. The error code prefix tells you the recovery step:
operon setup. Their token is missingor invalid.
Cursor first. Operon needs at least one to mine.
--since 90d or --since 180d.Their sessions don't have enough repeats yet in the current window.
operon setup (or pass--workspace <slug> if they know the slug).
--api-base <url>.
If you're driving the CLI in a fully-automated context where no human will see prompts, also pass --non-interactive. The CLI will fail fast with a clear error code if any input was needed instead of hanging.
operon setup --yes --json --non-interactiveprerequisites; if none are present, setup aborts with NO_SOURCES.
--dry-run — theuser explicitly opts in via operon publish.
cluster recurring prompts. All mining is local-first; nothing leaves the laptop until publish.
~/.operon/config.json. After thefirst successful operon setup, subsequent runs are authenticated automatically — you don't need to repeat the device-code dance.
started event but no auth.ready after ~30 seconds,the user hasn't clicked Approve yet — surface the URL from auth.browser_opened.data.url so they can find the tab.
step 1 short-circuits if already authed, step 3 short-circuits if a workspace is already linked, step 4 short-circuits if candidates already exist on disk.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.