Skip to content

Releases

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 19:33

Changed

  • The plugin report spells out a disabled plugin's state. Every plugin the run updates gets its own row, disabled ones included, and a disabled one reads ✅ current, disabled (or ⬆️ updated, disabled) in place of the 💤 marker.

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 17:41

Added

  • /maintain-harness ends with everything the run changed. The closing lists each file it changed in your repos (uncommitted or committed), each issue it filed, the version it recorded, and the caches it pruned, followed by the steps left for you, or "Nothing left to run." Only the run's own changes are listed: it snapshots each repo before writing to it, so work your other sessions left in the same checkout stays out, and a file that already had changes is marked.

Changed

  • The first upgrade asks a clearer question about your plugins. It asks whether you maintain each author's plugins. The ones you don't are ignored: never examined and never reported. For each one you do, it asks whether to fix what it finds in your checkout or file an issue. The old skip answer, which read like "don't update this plugin", is now ignore, and decisions you've already recorded carry over.

Other

  • shipshape's icon shows in marketplace catalogs and the plugin directory.

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 28 Oct 04:13

Fixed

  • /maintain-harness plugins removes dependencies nothing needs any more. A plugin Claude Code installs because another plugin depends on it stays enabled after that plugin is uninstalled, so the reconcile kept it, and kept updating it. It now uninstalls those dependencies and keeps their data dirs, asking before it deletes one that holds files. claude plugin prune removes the same plugins but deletes their data dirs without asking, so shipshape doesn't use it.

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 27 Oct 01:45

Fixed

  • /maintain-harness no longer rejects honest replies as offers. Its reply check blocked a tally of changelog entries that had all been walked ("the other 34 are harness-internal"), any reply quoting a blocked phrase in double quotes, and ordinary sentences containing "happy to" or "on request". Those now pass; a reply that offers more work instead of doing it is still blocked.

Other

  • The docs site deploys from each release.

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 26 Oct 02:48

Fixed

  • shipshape keeps itself and your plugins updated on a machine without jq. Claude Code leaves auto-update off for marketplaces outside Anthropic's own, and shipshape's session-start hook needs jq to turn it on. Without jq, shipshape stayed on the version you first installed, along with your other plugins. It now downloads jq 1.8.2 into its data directory, checked against a pinned SHA-256. If that fails, a banner tells you to install jq or turn auto-update on in /plugin → Marketplaces.
  • An upgrade asks about your claude.ai-synced skills once. Answering that you maintain none of them now records each as skip, and a recorded skill stays out of the question, so the next upgrade doesn't ask again.
  • Plugin reports show n/a when a plugin has no version number.

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 02:35

Fixed

  • A plugin installed into a settings file that doesn't load is reported as not enabled. Claude Code 2.1.295 and later warns after an install when the settings file it wrote to doesn't load, and ignores that whole file, so the plugin isn't running. /maintain-harness plugins now marks it 🔧 with the file and what's wrong with it, and the closing steps start with fixing that file (plus claude plugin enable where the enable didn't land) ahead of /reload-plugins.
  • /maintain-harness plugins shows its progress on models without the task tools. Claude Code offers its task list to a fixed set of models, so on a current model the reconcile ran silent through its updates and prunes. It now posts a checklist there and re-posts it as each group finishes, and uses the task list wherever it's offered.
  • On Windows, the cache prune keeps the versions your running sessions use. Claude Code on Windows records a session's start time in a form git-bash's ps can't read, so shipshape read every lease as expired and could prune a version a live session had loaded. It now reads those start times through PowerShell, and treats a lease as in use wherever it can't read one. The scan also matches the install paths Claude Code records on Windows (C:\…) against the cache dirs it finds, and reads jq output without the carriage returns a Windows jq adds.

Other

  • The test suites run on Windows (git-bash) in CI, alongside Linux and macOS.

  • When an upgrade pass repairs shipshape's own checkout, it runs the fixes, just test, and just generate before asking you to restart with --plugin-dir. With the Bash sandbox on, the restarted session can't write into the checkout.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 16:34

Changed

  • The Claude Code version banner is opt-in. Sessions no longer open with a line announcing a version change unless you set SHIPSHAPE_VERSION_NOTICE in the env block of ~/.claude/settings.json to 1 or true (on and yes work too, in any case). /maintain-harness still finds a pending upgrade and walks it when you run it, and marketplace auto-update stays enabled as before. If you'd set the variable to off, you can remove it.
  • A run's reply ends with the commands you run, and nothing after them. Each step is the exact command, in the order it has to run, with no reason attached. /reload-plugins comes ahead of any plugin's installer, and the reload step names --force and your other sessions up front.
  • The Claude Code status line shows the two versions, plus anything that needs your action.

Fixed

  • An update blocked on a marketplace-declared command goes straight to your terminal. Claude Code ignores --accept-command inside a session as it does -y, so shipshape quotes the line to run in your own shell instead of trying either flag.

Other

  • The upgrade report labels each changelog entry with a category and each target with an action.
  • The plugin manifest links the docs site as its documentation.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 19:45

Breaking

  • /plugin-maintenance and /claude-code-version are now /maintain-harness plugins and /maintain-harness claude-code. The old names no longer resolve; type the new ones instead.
  • Only you start /maintain-harness. A run updates, uninstalls, and prunes your plugins, so Claude no longer runs it when you ask about a Claude Code upgrade; it names the command for you to type.

Added

  • /maintain-harness brings your whole harness current in one run. It handles a pending Claude Code upgrade, then reconciles your plugins; /maintain-harness all does the same. /maintain-harness claude-code runs the upgrade alone, /maintain-harness plugins runs the plugin reconcile alone, and /maintain-harness guide shows, changes, or sets up your guide without running either. The version banner names /maintain-harness.
  • One guide holds your own steps for both halves. harness-maintenance-guide.md in shipshape's data dir has a section for after a Claude Code upgrade and one for after plugins change, and each half carries out only its own. A ### subheading, one per plugin say, stays inside its section. Commands only you can type, like /reload-plugins or a plugin's CLI installer, close the report as a numbered list in the order you wrote them. The first run that finds no guide offers to write it, starting from the CLI installers your plugins ship. Run /maintain-harness guide to show or change it.

Changed

  • One maintenance lock covers a whole /maintain-harness run, so a second session's run stops and names the first instead of interleaving with either half.
  • Steps in on-claude-code-version-change.md move into the new guide. The next /maintain-harness run puts them under the upgrade heading, drops any /plugin-maintenance step (the plugins section covers it), and removes the old file.

Fixed

  • Plugins synced from claude.ai are left alone. A <name>@synced plugin is governed in claude.ai, so /maintain-harness plugins no longer offers to uninstall it, counts it as missing, or tries to update it. It gets its own row in the report, marked as managed in claude.ai. A plugin from any origin that isn't a registered marketplace is treated the same way. (#15)
  • The what-changed walk names the versions the Claude Code changelog skips. Some releases ship with no changelog entry. The walk now lists those versions as having none instead of guessing what was in them. When the version you're running is one of them, it says so instead of walking an older entry. (#19)

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 19:52

Added

  • A shipshape reply can't end by offering more instead of doing it. Once /claude-code-version or /plugin-maintenance runs, a Stop hook checks every reply for the rest of the session. It blocks phrases like "let me know if", "I can walk those", or "the other 79 are…", and Claude rewrites the reply. A phrase quoted in code doesn't count, and a rewrite that still matches goes through with the phrase named to you instead of looping.

Changed

  • A maintenance report describes a marketplace's auto-update as enabled, the word the rest of shipshape uses.

Fixed

  • A version-change guide can run /plugin-maintenance. Acknowledging carries out each step of your guide, and the step shipshape's own example suggests was one Claude could not invoke, so the run stopped there and left the upgrade pending. Claude can now call the skill, which puts its description back in every session's skill listing; it still confirms before it deletes anything.
  • What changed walks every entry. The report leads with what you'd act on, then gives every other entry one line grouped by area, where it used to offer to walk the rest.
  • An uninstall that Claude Code refuses is reported with its reason. Since Claude Code 2.1.282, an uninstall stops when a settings file still enables the plugin or can't be read, and names that file. A reconcile now reports the extra as skipped with that file.

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 17:20

Added

  • A maintenance run now examines the skills and plugins your claude.ai account syncs in. They carry no install-manifest row, so a run used to report full coverage over a lane it had never opened. --drift names what it can name and counts what it cannot, and a bucket file that does not parse is reported unreadable rather than empty.
  • Leftovers Claude Code strands are reported with their size. A scratch clone at the top of the plugin cache arrives as one line naming the directory Claude Code created, rather than one line per directory inside it, and a download left behind by a failed auto-update is named for you to clear.

Changed

  • The version banner takes the shape the other plugins' banners use — <source>: <resolution> # <reasoning> — so the command to type sits where your eye lands across every line a session opens with.
  • A version-change run no longer tallies the plugins you leave to their own maintainers, and it delivers its findings as a set you walk one at a time instead of one offer to file everything.
  • A pass that starts inside shipshape's own checkout repairs shipshape first. Every later verdict is reached against the changelog, the install manifest and the plugin cache, so a release that moves one of those would leave the rest of the run reading a stale map.

Fixed

  • A --plugin-dir session reads the state an installed session wrote. Your acknowledged version, your version-change guide and your deep-scan declaration live in a data directory whose name changes when the plugin is mounted from a checkout, so the built-in guide's own advice to restart that way used to land you on what looked like a machine shipshape had never run on. Where the install manifest can't settle which lane to read, the session stays in its own and says why.
  • A reconcile whose inputs arrive in an awkward order no longer exits without a word. A recorded checkout that has moved, a marketplace manifest that does not parse, and the last plugin in the outstanding list each used to drop out silently; each now reaches the report.
  • Reading what changed works without the GitHub CLI. The changelog walk pulls the file from its raw URL, so /claude-code-version reports what an upgrade contains on a machine with no gh installed and without an expired token stopping the run. Reading the first-party examples an entry implicates still uses gh.
  • A what-changed summary no longer tells you it left nothing out. Where every changelog entry made the one-screen summary, the summary is the whole account, so the run states how many entries it omitted only when it omitted some.