Skip to content

fix: /upgrade carries the uncommitted plugin setting into the hub's worktree - #17

Merged
mauricios merged 1 commit into
mainfrom
fix/upgrade-hub-uncommitted-settings
Oct 2, 2026
Merged

mauricios merged 1 commit into
mainfrom
fix/upgrade-hub-uncommitted-settings

Conversation

@mauricios

Copy link
Copy Markdown
Contributor

What changed and why

Found while writing the pilot's steps. The install prompt leaves the plugin setting uncommitted in .claude/settings.json on purpose, so the adoption or upgrade pull request carries it. But when the developer chooses parallel-agents during /upgrade, the whole upgrade moves into a worktree created from the last commit, and that uncommitted change stays behind:

  • /upgrade would add the setting again in the worktree, so the pull request was still right.
  • The main checkout kept its copy, and the first git pull after the merge refused to overwrite it — in the hub, where nothing should be uncommitted.

plugins/aplyca-framework/skills/upgrade/SKILL.md now:

  • Checks git status in the main checkout before creating the worktree. It carries the plugin setting into the worktree, then restores the main checkout's copy (git restore .claude/settings.json), and lists both moves in the plan. Anything else uncommitted is the developer's: it asks, and never discards it.
  • Tells three cases apart in the plugin-setting check:
    • already committed: nothing to do;
    • uncommitted from the install: commit it with the upgrade, in the worktree for a hub;
    • missing, from a user- or local-scope install: offer to add it.

Plugin 0.2.5, so claude plugin update picks it up. The practices check covers the new step.

Upgrade impact

Framework-internal: update the plugin.

How to verify

  1. Run ./evals/run-evals.sh. Both claude plugin validate checks pass.
  2. Read /upgrade Step 2, from "If the developer chooses parallel-agents".

Verified / not verified

  • Verified: static suites 131, 61, 43, and 9 pass; the plugin and marketplace manifests validate.
  • Not verified: a real /upgrade that installs the hub. The pilot is that test, if it chooses parallel-agents.

🤖 Generated with Claude Code

…orktree

Choosing parallel-agents moves the upgrade into a worktree created from
the last commit, so the plugin setting the install prompt left
uncommitted in the main checkout stayed behind: the pull request added
it again, and the main checkout's copy stopped the first pull after the
merge. /upgrade now checks git status first, carries the setting into
the worktree, restores the main checkout's copy, and lists both in the
plan; other uncommitted work is the developer's to decide. The
plugin-setting check tells committed, uncommitted, and missing apart.
aplyca-framework 0.2.5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mauricios
mauricios marked this pull request as ready for review October 2, 2026 04:01
@mauricios
mauricios merged commit d5934b3 into main Oct 2, 2026
1 check passed
@mauricios
mauricios deleted the fix/upgrade-hub-uncommitted-settings branch October 2, 2026 04:01
mauricios added a commit that referenced this pull request Oct 2, 2026
…ersioning (#21)

* fix: the install refreshes a marketplace added before

A machine that added the aplyca marketplace before the rename keeps its
copy, which lists only aplyca-framework, and `marketplace add` leaves it
alone — so the install prompt failed with "Plugin aplyca-adf not found"
in every project adopted before it. The prompt, ADOPT.md, and the
documented commands run `claude plugin marketplace update aplyca` before
the install. Tested on a copy of the marketplace from 7383422.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: release v1.0.0 — one plugin, a packaged install, and semantic versioning

Turns Unreleased into v1.0.0, covering #17–#20 and the install fix, and
opens it with the order to upgrade in from 7383422: install aplyca-adf
with the prompt, run /aplyca-adf:upgrade (renames the setting, pins
v1.0.0, restamps), then uninstall aplyca-framework. plugin.json is
already 1.0.0, and the static check now matches it to the heading.

README's "Update a project" and UPGRADING point at releases: the target
is the newest tag, the stamp carries the version, and a project adopted
before v1.0.0 has its own scenario. The plugin README's update section
no longer tells those projects to update a plugin they never installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant