reorg-sync

reorg-sync is a skill for Claude Code from joymin5655/Agent. It costs 129 tokens per session (4,751 once invoked), scanned A, original, MIT.

A path-reference checker for after a directory move. It finds old absolute paths in interpreter lines, Git worktree files, scheduled tasks, documents, and path-based local memory, then can rewrite them after confirmation.

In plain words
What is it for?
Use it to scan a project tree with an old and new path prefix, review the reported file-and-line matches, and update confirmed references.
Why use it?
Moving a directory can leave hidden references pointing to locations that no longer exist. A dry run shows the affected files first, reducing the risk of changing unrelated paths.

Skill for Claude Code

Written for Claude Code: disable-model-invocation in frontmatter. Also seen: reads .claude/ paths.

Not installable: its command points at a path on the author’s own machine, so it runs nowhere else. The line is /home/u/.claude/projects/-a-b.

Part of the agent-harness-extras plugin — 10 skills, 1 agent shipped together

Good fit Use it to scan a project tree with an old and new path prefix, review the reported file-and-line matches, and update confirmed references.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add joymin5655/Agent
Claude Code
/plugin install agent-harness-extras

Made for: Claude Code.

Or install agent-harness-extras, the plugin that ships this one along with the rest of its 10 skills, 1 agent.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for reorg-sync

README.md
[![agentmods](https://agentmods.dev/badge/skills/joymin5655/agent/reorg-sync/github.svg)](https://agentmods.dev/skills/joymin5655/agent/reorg-sync)
Your own site
<a href="https://agentmods.dev/skills/joymin5655/agent/reorg-sync"><img src="https://agentmods.dev/badge/skills/joymin5655/agent/reorg-sync/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for reorg-sync

Your own site · 80×15
<a href="https://agentmods.dev/skills/joymin5655/agent/reorg-sync"><img src="https://agentmods.dev/badge/skills/joymin5655/agent/reorg-sync.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 129 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,751 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00129 $0.04751
Opus 5.5 $0.00052 $0.01900
Sonnet 5.5 $0.00026 $0.00950
Haiku 4.5 $0.00013 $0.00475

Measured 14d ago against content hash 3f5dccc5490b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

reorg-sync scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 14d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

extras/skills/reorg-sync/SKILL.md · 279 lines

How it starts

The opening of the file, as written. The whole thing — 279 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/reorg-sync

Goal

After a tree moves, absolute-path references left behind break silently. This skill sweeps them in one pass, reporting first and rewriting only on explicit confirmation.

What it sweeps (5 classes)

Class Example that breaks
shebang #!<old>/bin/python3 — a dead interpreter path
worktree-gitfile gitdir: <old>/repo/.git/worktrees/x in a worktree's .git file
crontab 0 3 * * * <old>/scripts/backup.sh — a cron job running a gone path
anchor a doc/config that references <old>/...
native-memory-key ~/.claude/projects/<encoded>/ where the key encodes the path (/ . _ → -) — orphaned when the source path moves

Steps

1. Report (dry-run — always first)

bash "${CLAUDE_PLUGIN_ROOT}/core/infra/reorg-sync.sh" \
  --old <old-prefix> --new <new-prefix> --root <tree>

Read the CLASS file:line <text> rows and the per-class summary with the user. The tool refuses six input shapes outright, each a proven corruption/injection hazard:

  • a bare / or empty --old (would match everything);
  • a relative --old/--new (both must be /-leading — a slash-less OLD is byte-identical to its own encoded key form and would double-match both axes);
  • any --old/--new containing a line separator — not just \n but every character Python's splitlines() honors (\r \v \f \x1c-\x1e \x85 U+2028 U+2029), any of which would inject lines into swept files on apply;
  • a promote-up move (--old under --new, e.g. /old/sub → /old): after one apply, a migrated ref and a fresh /old/sub ref are byte-identical, so no stateless rewrite can be idempotent — a re-run eats one path component per pass, which is data corruption. A real reorg moves children individually; run one sweep per moved child instead. (Decision 2026-08-10, superseding the earlier "make promote-up rewrite" direction.) The refusal is per axis: the encoded-key forms of OLD/NEW are checked too, and because enc() preserves characters like : and space, a move can be a promote-up on the key axis alone (/a.b:c → /a/b gives keys -a-b:c / -a-b) — refused with a key-axis message. Identity (--old X --new X, including trailing-slash spellings) is not a promote-up: it is accepted and reports an honest 0, as does the key axis of a rename that changes only / . _ (whose keys encode identically);
  • a suffix-overlap ("demote") move — --new occurs inside --old at any offset ≥ 1 followed by a path boundary or OLD's end (as a suffix /srv:/app → /app, /a/b → /b; or strictly inside: /srv:/app/bin → /app), or a proper suffix of --old equals a boundary-terminated proper prefix of --new (partial: /a/b → /b/c): the mirror of promote-up. After one apply, pre-existing text ending in OLD's leading remainder followed by the written NEW is byte-identical to a fresh OLD ref, so each re-apply eats one leading component per pass (reproduced on every boundary character). Sweep with a more specific --old, or move through an intermediate name sharing no boundary-anchored affix with either side. (/proj → /proj/inner is not this shape — extends-moves stay supported via the protected-span guard. /data/appx → /app is not either: a non-boundary junction after the embedded NEW cannot re-match.) Unlike promote-up, this family is checked on the path axis only: a key-axis straddle is unconstructible (the key matcher is pinned by its fixed-width claude/projects/ lookbehind), so key-suffix-overlapping moves like /x/a_b → /a/b (keys -x-a-b / -a-b) sweep normally;
  • a cross-axis overlap — --old contains claude/projects/ followed by a boundary-terminated prefix of the encoded --new key (/home/u/.claude/projects/-a-b → /a/b, whose key is -a-b): the key rewrite writes that key immediately after the same literal context, so one --apply manufactures a byte-exact fresh --old path reference and the next pass destroys the migrated key. This is the one constructible cross-axis straddle direction (key-on-key and key-on-path provably cannot occur). In practice it means the memory-dir tree itself (~/.claude/projects/...) cannot be swept as --old when the destination's key collides this way — move it under a different name first.

Read the full file on GitHub · 279 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 14d ago Changed 3f5dccc5490b
  2. 16d ago Changed · +1 lines f09498bda372
  3. 29d ago First seen · 278 lines · 129 tokens per session scan A 38734473cb61

Subscribe to this mod's changes

reorg-sync is a skill published in the GitHub repository joymin5655/Agent (2 stars, last pushed yesterday), licensed MIT. It adds 129 tokens to every session and 4,751 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-08.

Related

reorg-sync compared with skills from other repositories

reorg-sync next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
reorg-syncjoymin5655/AgentSkill2yesterdayMITA129Claude Code
git-expertlibrefang/librefang-registrySkill111mo agoMITA17Claude Code, Codex
githublibrefang/librefang-registrySkill111mo agoMITA20Claude Code, Codex
deployment-patternsaffaan-m/ECCSkill298k4d agoMITA41Claude Code, Kiro
mem0-test-integrationmem0ai/mem0Skill68k2d agoApache-2.0A207Claude Code, Codex
otto-pr-review-loopomnigent-ai/omnigentSkill11kyesterdayApache-2.0A17Claude Code, Codex
baby-sitlangchain-ai/open-sweSkill11kyesterdayMITA30Claude Code, Codex