Update Git Workflow
SkillAI & modelsUpdate 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.
No other account needed.
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:
--source{PACKAGE_ROOT}, derived from the absolute physical directory containing this loadedSKILL.mdas{SKILL_DIR}/../.., when it contains.codex-plugin/plugin.jsonPLUGIN_ROOT, thenCLAUDE_PLUGIN_ROOT, as compatibility fallbacks only when the host cannot expose the loaded skill path; verify the manifest before accepting either valuesourcerecorded 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:
| Source | Target | When |
|---|---|---|
skills/*/ | .claude/skills/*/ | Manual Claude installation |
agents/*.md | .claude/agents/*.md | Manual Claude installation |
references/*.md | .claude/references/*.md | Manual Claude installation |
.codex/agents/*.toml | .codex/agents/*.toml | Codex 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. --prunemay 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-runperforms 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