vc:update
Skill0 starsChanged 3 months agoMITView on GitHub
Pull latest agent harness improvements from the remote kit repository. Shows a dry-run diff summary, waits for confirmation, then applies updates.
- Deletes or force-pushes
We split this skill into the rules it gives an agent
33 rules. About 0 are common, 18 are distinctive, and 15 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈18
Distinctive · estimate
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
After being told a new harness version is available
- Very specific: line 30
After bootstrapping a project with vc-setup and wanting the latest improvements
- Distinctive: line 34
Follow these steps exactly.
- Distinctive: line 38
Run git status --porcelain in the project root.
- Distinctive: line 40
If output is non-empty: warn the user that they have uncommitted changes and suggest git stash or committing first.
- Distinctive: line 41
If output is empty: proceed silently.
- Very specific: line 45
Read the file .vc-version in the project root.
- Very specific: line 47
If it exists: store its contents as currentVersion (a semver string like 2.0.4).
- Very specific: line 48
If it does not exist: set currentVersion to "0.0.0" (treat as first update).
- Distinctive: line 57
If the clone fails (network error, auth error, repo not found):
- Distinctive: line 60
Stop: Do not proceed.
- Distinctive: line 64
Run the resolver script from the cloned repo:
- Very specific: line 82
Legacy fallback: If resolve-manifest.mjs does not exist in the remote (very old kit version), fall back to reading vc-manifest.json …
- Very specific: line 88
If they are equal: report "Already up to date (vX.Y.Z)" and clean up $TMPDIR.
- Very specific: line 89
If remote is newer (or currentVersion is 0.0.0): continue to diff.
- Very specific: line 98
Write this synthetic snapshot to .vc-installed-files for future updates.
- Distinctive: line 106
If different: modified (note line count changes).
- Distinctive: line 114
If the symlink exists and points to the correct target: mark as ok.
- Distinctive: line 115
If the symlink is missing or points to a different target: mark as will fix.
- Distinctive: line 116
If a real directory exists at the symlink path (not a symlink): mark as will replace dir with symlink.
- Distinctive: line 151
Do NOT proceed until the user explicitly says "apply" (or a clear affirmative like "yes", "go", "do it").
- Distinctive: line 153
If the user aborts:
- Distinctive: line 168
Delete the local file.
- Distinctive: line 169
If the parent directory is now empty, remove it too.
- Very specific: line 172
If a real directory exists at the path: rm -rf it first.
- Very specific: line 173
If a wrong symlink exists: rm it first.
- Very specific: line 174
Create the symlink: ln -s {target} {path}
- Very specific: line 176
Write snapshot: Write the remote files list (sorted, one per line) to .vc-installed-files.
- Very specific: line 178
Write version: Write the manifest version string to .vc-version.
- Very specific: line 180
Clean up: Remove $TMPDIR.
- Distinctive: line 182
If any copy/delete fails with a permission error:
- Distinctive: line 207
Always show the dry-run diff before applying.
- Very specific: line 209
If .vc-version is missing, treat as version 0.0.0 (first update, apply everything).
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
vc-update
Pull the latest agent harness improvements from the remote vibecode-pro-max-kit repository into the current project.
Codex Mirror Note
The .codex/agents/*.toml files are generated from .claude/agents/*.md by the build step
build-codex-toml.mjs. After any agent source change, run:
node .claude/skills/vc-audit-vc/scripts/build-codex-toml.mjsThis regenerates all 12 TOML files. Re-running on unchanged inputs produces no diff (idempotent).
The validate-agent-parity.mjs --strict check enforces that all TOML files carry the
# Generated by ... header — hand-edited TOML is rejected.
When to Use
- After being told a new harness version is available
- Periodically to check for updates
- After bootstrapping a project with
vc-setupand wanting the latest improvements
Workflow
Follow these steps exactly. Do NOT skip the dry-run or confirmation step.
Step 1: Check Worktree Status
Run git status --porcelain in the project root.
- If output is non-empty: warn the user that they have uncommitted changes and suggest
git stashor committing first. Do not block -- continue after warning. - If output is empty: proceed silently.
Step 2: Read Current Version
Read the file .vc-version in the project root.
- If it exists: store its contents as
currentVersion(a semver string like2.0.4). - If it does not exist: set
currentVersionto"0.0.0"(treat as first update).
Step 3: Clone Remote Repository
TMPDIR="/tmp/vc-update-$(date +%s)"
git clone --depth 1 https://github.com/withkynam/vibecode-pro-max-kit.git "$TMPDIR"If the clone fails (network error, auth error, repo not found):
- Print the error message.
- Clean up the temp directory if it was partially created.
- Stop. Do not proceed.
Step 4: Resolve Remote Manifest
Run the resolver script from the cloned repo:
node "$TMPDIR/resolve-manifest.mjs" --root "$TMPDIR" --jsonParse the JSON output to extract:
files(string[]) -- resolved managed file pathsmerge(string[]) -- files where user customizations are preserved (not overwritten)copyIfMissing(string[]) -- files only installed if they don't already exist locallystrip(string[]) -- files needing content stripping (informational)symlinks(object) -- symlink path -> target mappings
Extract the remote version from the manifest:
node -e "console.log(JSON.parse(require('fs').readFileSync('$TMPDIR/vc-manifest.json','utf8')).version)"Legacy fallback: If resolve-manifest.mjs does not exist in the remote (very old kit version), fall back to reading vc-manifest.json directly and using the old managed/managedDirs/seedsDir fields for file resolution.
Step 5: Compare Versions
Compare the remote manifest version against currentVersion.
- If they are equal: report "Already up to date (vX.Y.Z)" and clean up
$TMPDIR. Stop. - If remote is newer (or currentVersion is
0.0.0): continue to diff.
Step 6: Read Local Snapshot and Compute Diff
Read .vc-installed-files from the project root (if it exists). This file contains one file path per line -- the list of files installed by the last update.
If .vc-installed-files does NOT exist (first update with new system):
- Build a synthetic snapshot by scanning the user project for files that exist AND match the remote
fileslist. - Also check for legacy
deletionsfrom the v2.0.4 era -- the resolver embeds these aslegacyDeletionsin legacy mode. For any path in the legacy deletions list that still exists locally, mark it for deletion. - Write this synthetic snapshot to
.vc-installed-filesfor future updates.
Compute the diff using three lists: remote files, local snapshot, and local filesystem:
- Additions: Files in remote
filesbut NOT in local snapshot (new files to install). - Removals: Files in local snapshot but NOT in remote
files(files removed from kit -- should be deleted locally). - Modifications: Files in both lists -- compare content via
diffbetween$TMPDIR/{path}and{projectRoot}/{path}.- If identical: unchanged.
- If different: modified (note line count changes).
- Merge files: Files in the
mergelist that have local changes. Show the diff but note they will NOT be overwritten. The user must manually reconcile. - Copy-if-missing files: Files in the
copyIfMissinglist that already exist locally. Show the diff but note they will NOT be overwritten.
Step 7: Check Symlinks
For each entry in the symlinks object (key = symlink path, value = target):
- If the symlink exists and points to the correct target: mark as ok.
- If the symlink is missing or points to a different target: mark as will fix.
- If a real directory exists at the symlink path (not a symlink): mark as will replace dir with symlink.
Step 8: Print Dry-Run Summary
Print a summary with all collected results. Format:
vc-update dry run: v{currentVersion} -> v{remoteVersion}
FILES:
[modified] .claude/agents/vc-execute-agent.md (+12 -3)
[new] .claude/hooks/lib/new-util.cjs
[removed] .claude/skills/deprecated-skill/SKILL.md
[unchanged] .claude/agents/vc-debugger.md
...
MERGE (preserved, manual review needed):
[differs] .claude/settings.json (+2 -1)
COPY-IF-MISSING (skipped, already present):
[skipped] process/context/planning/example-simple-prd.md
SYMLINKS:
[ok] .agents/skills -> ../.claude/skills
[will fix] .codex/hooks -> ../.claude/hooks
Summary: 5 modified, 2 new, 1 removal, 1 merge skipped, 45 unchangedStep 9: Wait for Confirmation
STOP HERE. Tell the user:
"This is a dry-run summary. Type apply to proceed with the update, or abort to cancel. The temp clone will be cleaned up either way."
Do NOT proceed until the user explicitly says "apply" (or a clear affirmative like "yes", "go", "do it").
If the user aborts:
- Remove
$TMPDIR. - Print "Update cancelled. No changes made."
- Stop.
Step 10: Apply Changes
On user confirmation, apply in this order:
- Additions and modifications: For each file in the remote
fileslist:- Skip if file is in
mergelist AND exists locally (preserve user version). - Skip if file is in
copyIfMissinglist AND exists locally (preserve user version). - Otherwise:
mkdir -pthe parent directory, copy from$TMPDIR/{path}to{projectRoot}/{path}.
- Skip if file is in
- Removals: For each file in the local snapshot but NOT in the remote
fileslist:- Delete the local file.
- If the parent directory is now empty, remove it too.
- Symlinks: For each entry in
symlinks:- If a real directory exists at the path:
rm -rfit first. - If a wrong symlink exists:
rmit first. - Create the symlink:
ln -s {target} {path}
- If a real directory exists at the path:
- Write snapshot: Write the remote
fileslist (sorted, one per line) to.vc-installed-files. - Write version: Write the manifest version string to
.vc-version. - Clean up: Remove
$TMPDIR.
If any copy/delete fails with a permission error:
- Print which file failed and the error.
- Suggest running
chmodon the affected path or checking file ownership. - Continue with remaining files (do not abort the entire update).
Step 11: Print Applied Changes Summary
vc-update complete: v{currentVersion} -> v{remoteVersion}
Applied:
5 files modified
2 files added
1 file removed
1 symlink fixed
1 merge file preserved (review .claude/settings.json manually)
Snapshot written to .vc-installed-files
Version written to .vc-version: {remoteVersion}Rules
process/_seeds/is managed reference -- overwritten entirely on update (included in the resolved file list).- Real working files outside
_seeds/(process/context/,process/features/,process/general-plans/) are NEVER touched by vc-update. - Always show the dry-run diff before applying. Never apply without user confirmation.
- Clean up the temp clone directory even on error or abort.
- If
.vc-versionis missing, treat as version0.0.0(first update, apply everything). - Files in the
mergelist are never overwritten if they exist locally. Show the diff for manual review. - Files in the
copyIfMissinglist are only installed if they don't already exist locally. - Removals are detected by comparing the local
.vc-installed-filessnapshot against the new resolved file list.
Reference
For detailed algorithm, error handling matrix, and edge cases, see references/vc-update.md.
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- opencue/cuecards★ 696% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository51 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- vc:kitSkill
- vc:auditSkill
- vc:autoresearchSkill
- vc:chrome-devtoolsSkill
- vc:context-engineeringSkill
- vc:debugSkill
- vc:docs-seekerSkill
- vc:generate-contextSkill
- vc:generate-planSkill
- vc:mcp-managementSkill
- vc:merge-worktreeSkill
- vc:previewSkill
- vc:problem-solvingSkill
- vc:publishSkill
- vc:repomixSkill
- vc:scoutSkill
- vc:securitySkill
- vc:sequential-thinkingSkill
- vc:setupSkill
- vc:stress-testSkill
- vc:tech-graphSkill
- vc:updateSkill
- vc:watzupSkill
- vc:web-testingSkill
- vc:xiaSkill
- vc:kitSkill
- vc:auditSkill
- vc:autoresearchSkill
- vc:chrome-devtoolsSkill
- vc:context-engineeringSkill
- vc:debugSkill
- vc:docs-seekerSkill
- vc:generate-contextSkill
- vc:generate-planSkill
- vc:mcp-managementSkill
- vc:merge-worktreeSkill
- vc:previewSkill
- vc:problem-solvingSkill
- vc:publishSkill
- vc:repomixSkill
- vc:scoutSkill
- vc:securitySkill
- vc:sequential-thinkingSkill
- vc:setupSkill
- vc:stress-testSkill
- vc:tech-graphSkill
- vc:watzupSkill
- vc:web-testingSkill
- vc:xiaSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

