Update Git Workflow

SkillAI & models

Update Git Workflow skills and Claude/Codex project agents from a source checkout or installed plugin, with dry-run, pruning, customization detection, and legacy migration support. Use when the user asks to update, refresh, or synchronize Git Workflow.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Update Git Workflow skill

What this skill tells your AI

The instructions your AI receives, as published by rlajous/claude-code-commands in skills/update/SKILL.md and read by ahel’s review.

Follow runtime compatibility. Claude Code users invoke this as /update; Codex users invoke it as $update.

1. Parse options

  • --dry-run: calculate and display changes without writing.
  • --prune: include previously managed files that no longer exist in the source as removal candidates.
  • --force: overwrite customized managed files after still showing their diffs.
  • --host <claude|codex|both>: synchronize only the selected host assets; otherwise infer installed hosts and ask if ambiguous.
  • --source <path-or-git-url>: use an explicit Git Workflow checkout, plugin directory, or Git URL.

Unknown options are errors. Destructive pruning is never implied by --force alone.

2. Resolve project and source

Resolve the project root from Git, then accept either .git-workflow/, .claude/, or .codex/ as evidence of an existing installation. Resolve the source in this order:

  1. --source
  2. {PACKAGE_ROOT}, derived from the absolute physical directory containing this loaded SKILL.md as {SKILL_DIR}/../.., when it contains .codex-plugin/plugin.json
  3. PLUGIN_ROOT, then CLAUDE_PLUGIN_ROOT, as compatibility fallbacks only when the host cannot expose the loaded skill path; verify the manifest before accepting either value
  4. source recorded in .git-workflow/version.json

Never substitute an empty package variable or silently fall back to /scripts. If no complete source resolves, stop before writing and report every candidate checked.

For an explicit Git URL, clone it shallowly into a newly created temporary directory, validate it, and remove the temporary clone on success or failure. Do not perform a default network clone when an installed package root or ledger source is available. Validate that the source contains skills/, agents/, .codex/agents/, and a valid .codex-plugin/plugin.json. Stop without writing if it is incomplete.

3. Build the synchronization set

Use the synchronizer bundled with setup, resolved relative to this skill as {SKILL_DIR}/../setup/scripts/sync-project.mjs, to calculate and apply this set. Always run it first with --dry-run; after the user reviews changes, rerun without --dry-run. Add --force only when changed files were approved, and add --confirm-prune only after separate confirmation of listed prune candidates.

node "{SKILL_DIR}/../setup/scripts/sync-project.mjs" --source <source> --target <project> --host <codex|claude|both> --dry-run

Synchronize only components relevant to the installation:

SourceTargetWhen
skills/*/.claude/skills/*/Manual Claude installation
agents/*.md.claude/agents/*.mdManual Claude installation
references/*.md.claude/references/*.mdManual Claude installation
.codex/agents/*.toml.codex/agents/*.tomlCodex project agents

Codex plugin skills are updated by the plugin manager and must not be copied into .codex/skills/ by this workflow.

For every target, classify it as missing (+), changed (~), identical (=), or orphaned (?). Show a unified diff for changed text files.

4. Protect customizations

  • Without --force, ask once before overwriting the listed changed files. A rejection preserves all changed files while still allowing missing files to install.
  • With --force, overwrite changed managed files only after showing the summary.
  • --prune may remove only paths recorded as managed in the version ledger. Never remove an untracked local skill or agent merely because the source lacks the same name.
  • Show prune candidates and require explicit confirmation even with --force.
  • --dry-run performs no writes, removals, directory creation, or ledger updates.

Use atomic per-file replacement where practical. A failure must not truncate the previous target.

5. Migrate and record state

If .git-workflow/config.yaml is absent and .claude/config.yaml exists, offer the same non-destructive copy used by $setup; do not make migration a prerequisite for updating agents.

After a successful non-dry-run update, the synchronizer rewrites .git-workflow/version.json with version 2.5.2, the resolved source, timestamp, hosts, and the exact relative paths managed by this run. Preserve the user's workflow configuration, local hook opt-in, PR context, status report, and reviewed-SHA ledger.

Output

Report installed, updated, unchanged, preserved, pruned, and failed files separately. If any item fails, return a non-success summary with the exact recovery command. Otherwise suggest /status for Claude Code or $status for Codex.

Signals

GitHub stars
30
Forks
2
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
update-rlajous
Source
github.com/rlajous/claude-code-commands