Skip to content
Back to skills

Upgrade

ASecurity

Use it when the weekly review reports a newer version of the framework than the core's `.claude/manence-version`, or when the user asks to bring the MOS up to date. Runs `upgrade.sh` as a dry run, gets the user's GO, applies, gives each conflict its fate (dropped, moved into the MOS's own files, rewritten in English for upstreaming, or held for the user when a local override contradicts a framework rule), confirms with `--resolved`, does the manual touches the script lists, and leaves an `eve...

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentsgobashsecurity

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add manence/manence --skill upgrade --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Upgrade?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Upgrade
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/manence-upgrade/badge)](https://www.skillsdirectory.com/skills/manence-upgrade)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: upgrade
description: Use it when the weekly review reports a newer version of the framework than the core's `.claude/manence-version`, or when the user asks to bring the MOS up to date. Runs `upgrade.sh` as a dry run, gets the user's GO, applies, gives each conflict its fate (dropped, moved into the MOS's own files, rewritten in English for upstreaming, or held for the user when a local override contradicts a framework rule), confirms with `--resolved`, does the manual touches the script lists, and leaves an `event |` entry in the log. Not for changing the framework itself: that happens in its repository.
---

# upgrade, bring a MOS onto a newer version of the framework

## Purpose
That a core moves to the version the framework ships **without losing what the MOS had added, and without keeping in an installed organ what belongs to the MOS**. The mechanics are the script's: `upgrade.sh` (three-way merge of the hooks, templates and base skills; its header lists the options) and `UPGRADING.md` in the framework's repository (the three classes of organ, what each version asks by hand). This skill carries the judgment the script cannot have: reading the plan, deciding the fate of each conflict, and the trace.

## Read before you act
- `.claude/manence-version` (the version you have) and the framework's `CHANGELOG.md` and `UPGRADING.md` for the versions between it and the target.
- `AGENTS.md` of the MOS: its Skills line (which base skills point to a MOS page for their local content) and whether it reserves the push of the core to the user.
- The workstreams in progress, so that an organ replaced mid-gesture does not surprise the session.

## Procedure
1. **Dry run first, nothing written**: `bash <framework>/upgrade.sh <absolute path of the core>` (add `--source <local clone>` when the public repository is out of reach). Read the plan line by line; the verdicts are defined in `UPGRADING.md` "Three classes of organ".
2. **The user's GO before `--apply`** (`AGENTS.md` "Security, hard vs soft"): the upgrade rewrites the core's organs; that is the user's call, with the plan in front of them.
3. **Apply**, then **sort every conflict**. What a `CONFLICT` leaves on disk depends on its kind (`UPGRADING.md` "Three classes of organ"): an ordinary conflict keeps your file and writes the merge with markers into `<file>.upgrade-conflict`; an organ that predates the framework's keeps yours and puts the framework's beside it, unchanged; a language switch puts the framework's file in place and yours beside it. Read the verdict before deciding which file is which. Two cases under `.claude/hooks/`:
   - A conflict there needs the user's admin GO, or their hand when the installed version has no admin GO yet (the upgrade to 0.13 itself): the guardrail refuses the agent's writes there otherwise (step 4). Read every `.upgrade-conflict` before anything is installed from it: a merge full of markers went in unread on a core and broke its test suite behind a guard that then refused the repair (2026-10-05).
   - Rules of the MOS's own found in `guard.sh` move to `.claude/hooks/guard.local.sh`; the shipped `guard.sh` is taken as it is (`UPGRADING.md`, 0.13.0). Compare your version with the one the installed version shipped (`.claude/manence-version`; `--from` names another base when the stamp is wrong), and give each local change one of four fates:
   - **already covered** by the new version → drop it; this is also the fate of a skill this MOS wrote and the framework has since shipped (`CONFLICT (local skill predates the shipped one)` or `diverges`): the shipped file replaces the prototype (`Implementation.md` §10 of the framework);
   - **content of the MOS** (a watch scope, paths, routines, a section about the MOS's own trade) → it never lives in an installed organ, which the next upgrade replaces: move it into a page of the MOS's knowledge base and point to that page from the skill's line in `AGENTS.md` Skills;
   - **guidance useful to every MOS** → rewrite it in English in the English organ, and file an inbox item for upstreaming (see `skill-craft`, "Base skills"); an installed copy is never the place to fix the framework;
   - **a local override that contradicts a framework rule** (a dated decision of the user that departs from the Spec or a base skill) → a stop: it is neither dropped nor filed away by the agent; the user decides, and the outcome is recorded in a page of the MOS's knowledge base with its date.
   Then remove the `.upgrade-conflict` files and rerun with `--resolved --apply`: the stamp is written only when no conflict file and no conflict marker remain (the script's header says so).
4. **The manual touches** the script lists for the target version (`UPGRADING.md`): do them, or say which ones you leave and why. A touch in `.claude/settings.json`, `.claude/settings.local.json` or `.claude/hooks/` needs the user's admin GO (`AGENTS.md` "Security, hard vs soft"): ask for it once, for all of them, in the words the guard's refusal gives, make the touches in that session and show the before/after. Without it, or before the core has an admin GO, hand them over as an exact before/after for the user to apply, and check them afterwards. The hooks themselves arrive through the script, never through a hand edit. Check what the upgrade retired (`.upgrade-removed/`, a renamed template folder): nothing in the core points to it any more before it goes.
5. **Check**: `lint.sh` clean on the files touched; every skill's line in `AGENTS.md` still points to something that exists; the workstreams in progress untouched.
6. **Trace**: an `event |` entry, at the top of `log.md`, under its H1 (Spec §4) — from which version to which, how many organs replaced and created, each conflict and its fate, what was retired, the manual touches done or left. Commit the core; push it where a push publishes nothing (`checkpoint`, step 5), unless the MOS's `AGENTS.md` reserves the push to the user. If a replaced organ breaks something in use afterwards, an `incident |` entry names it: that is the trace the framework's method feeds on.

## Done
- Success condition: `.claude/manence-version` carries the target version; no `.upgrade-conflict` and no conflict marker left; `lint.sh` clean; the `event |` entry exists and names every conflict's fate.
- Reading criterion: a fresh context reads the `event |` entry and can say, for each conflict, where its content went and why, without opening the files.
- Trace: the `event |` entry; the inbox items for upstreaming, if any; the knowledge-base pages that now hold the MOS's own content or its recorded overrides.
- Stops: no `--apply` without the user's GO; no hand edit of the guardrail's own files; a local override against a framework rule is the user's decision; no push where the push is the user's gesture; nothing written in the framework's repositories from here (the framework is fixed at its source: `skill-craft`, "Base skills").

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.