/ardd-update¶
Tier: extension
Update this project's ArDD install from its recorded source — resolve the release channel (dev-mode checkouts warned), check standing, re-run install.sh, and relay its output.
Usage¶
/ardd-update
/ardd-update --reconfigure
/ardd-update --stable
/ardd-update --beta
/ardd-update --local
Bare form: no arguments. Updates the installed skills from the source checkout recorded at install time — you don't have to remember where it lives. It's also how install-time output (migrations applied, gitignore/badge suggestions) reaches your session: install.sh only prints to whoever runs it, which is exactly why this skill exists.
--reconfigure: does everything the bare form does, but also re-asks all
four workflow fields (workflow_mode, next_step_prompt, delegation,
and — solo mode only — merge_policy) regardless of whether they're
already set, showing each field's current value before asking whether to
keep it or change it.
--stable / --beta: a deliberate channel switch. Skips the recorded
Channel: line entirely and resolves directly on the named channel
against the owned checkout, then reinstalls with ARDD_CHANNEL set so
install.sh re-records the new channel — regardless of what was
previously recorded. This takes precedence over the recorded channel
every time it's passed, not just on the first switch.
--local: a deliberate dev-mode switch. Resolves to a live checkout —
the recorded Source-Path if it already resolves channel=dev, otherwise
you're asked for a live checkout's path (never guessed, never searched for)
— and reinstalls from that checkout's own install.sh without setting
ARDD_CHANNEL (dev-mode ignores it). Because the flag itself is the
deliberate request, the usual dev-mode confirmation prompt (see step 1
below) is skipped.
--stable, --beta, and --local are mutually exclusive; passing more
than one at once is a usage error, reported before anything else runs.
What a run does¶
- Resolve the source. With
--stable/--beta: skips the recordedChannel:line and runssource-resolve.sh --channel stable(orbeta) directly against the owned checkout (~/.ardd/source), then setsARDD_CHANNELfor step 4's reinstall so the new channel gets re-recorded. With--local: resolves a live checkout (recordedSource-Pathif already dev-mode, else a prompted path) and reinstalls from it in step 4 without settingARDD_CHANNEL. Bare form (no flag, unchanged): readsChannel:from.project/ardd-version.md(absent =stable) and runssource-resolve.sh --channel <recorded>. For the tooling-owned checkout that fetches tags and moves it to the latest release on that channel — stable means strictvX.Y.Ztags; beta countsvX.Y.Z-beta.Nprereleases, where a newer stable still beats an older beta. A dev-mode source (any other live checkout) gets an explicit warning — its current state may hold unreleased, possibly-broken skills — and a confirmation before proceeding, unless--localwas the explicit request that led there. Outside of--stable/--beta, a channel switch is offered only when you raise it, never as a routine prompt — those two flags are that raising, made explicit. - Report standing via
ardd-update-check.sh— behind, up-to-date (a reinstall is still offered; it repairs files and re-surfaces suggestions), dev-ahead (a dev-mode checkout that's actually ahead of the latest release tag — never recommended to "update," since that would regress it), or the source can't be found (you're asked for the path; the filesystem is never searched). The check itself is local-git-only unless the constitution opts in viaupdate_check_max_age_days(see configuration.md) — fetching otherwise belongs tosource-resolve.shin step 1. - Dev-mode only: offer a pull — never assumed, never on a dirty tree, never a push. The owned checkout was already moved in step 1.
- Reinstall: reads the installed harness from
ardd-scripts/harness-capabilities.env(HARNESS=<claude|codex>; a missing file means a pre-harness install, treated asclaude) and runs<source>/install.sh --harness <harness>against the project, relaying its full output verbatim — the update preserves the harness that's installed, never silently reverting a Codex install to the Claude layout. If a Codex install's selected source predates--harnesssupport (an older release tag whoseinstall.shrejects the flag), the run refuses and presents the safe choices — pick a newer release/channel that has harness support, or stop — rather than running the old installer as a fallback. AHARNESS=claudeinstall against the same pre---harnesssource is treated differently, not refused: since every pre-harness installer installed for Claude implicitly, the run simply omits--harness claudefrom the reinstall invocation and notes in its output that the source predates explicit-harness recording. Suggestions in the relayed output are offers: when you accept one (a gitignore line, the badge snippet), the agent shows you the exact diff it would apply and asks before writing — nothing is applied unprompted. After relaying, if the project has a README without theardd-badge-version-startmarker, it offers the dynamic ArDD version badge: a single split endpoint badge ("built with ArDD │ vX.Y.Z") whose JSON — kept in sync with.project/ardd-version.mdby a small workflow — supplies both halves, the brand colour, and the icon. Saying yes re-runs the same install withARDD_VERSION_BADGE=1set and relays the printed snippet — filled with your repo's own coordinates when a GitHuboriginremote exists — plus its caveats (the badge renders only for public repos, since shields.io fetches raw.githubusercontent.com unauthenticated). Adding it to the README follows the same confirm-with-diff posture: the agent offers the edit, shows the exact diff, and writes only on your yes. The offer is skipped when the marker is already present, no README exists, or the run is headless/scripted. - Ask the workflow-field questions. Without
--reconfigure(default): backfills only, once — for constitutions that lacknext_step_prompt,delegation, or (solo mode only)merge_policyentirely, it asks the same questions/ardd-initasks and stamps the answers. Field presence — either value — suppresses re-asking forever; headless paths simply keep the safe defaults. With--reconfigure: it re-asks all four fields —workflow_mode,next_step_prompt,delegation, and (solo mode only)merge_policy— regardless of whether they're already set, showing each field's current value (or "not yet set") first and stamping only the fields you actually choose to change. This is the only way to changeworkflow_modeoutside of/ardd-init. - Report old → new commit, migrations applied, and suggestions;
reminds you to commit
.project/ardd-version.md(and.ardd-appliedif migrations ran). Ends by running/ardd-status.
Reads / writes¶
Reads .project/ardd-version.md; writes nothing itself — install.sh does
the writing (skills, scripts, templates, migrations, a fresh
ardd-version.md), and constitution frontmatter stamps go through
ardd-state.sh.
Related¶
/ardd-status— its update-availability line is what usually prompts a run- install.md — channels, dev-mode, and what install.sh does