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.
/plugin marketplace add joymin5655/Agent/plugin install agent-harness-extrasWrote 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.
[](https://agentmods.dev/skills/joymin5655/agent/reorg-sync)<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.
<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>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.
| Model | Per session | Once 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 |
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.
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/--newcontaining a line separator — not just\nbut every character Python'ssplitlines()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 (
--oldunder--new, e.g./old/sub→/old): after one apply, a migrated ref and a fresh/old/subref 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 becauseenc()preserves characters like:and space, a move can be a promote-up on the key axis alone (/a.b:c→/a/bgives 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 —
--newoccurs inside--oldat 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--oldequals 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/inneris not this shape — extends-moves stay supported via the protected-span guard./data/appx→/appis 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-widthclaude/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 —
--oldcontainsclaude/projects/followed by a boundary-terminated prefix of the encoded--newkey (/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--applymanufactures a byte-exact fresh--oldpath 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--oldwhen the destination's key collides this way — move it under a different name first.
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.
- 14d ago Changed 3f5dccc5490b
- 16d ago Changed · +1 lines f09498bda372
- 29d ago First seen · 278 lines · 129 tokens per session scan A 38734473cb61
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.
reorg-sync compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| reorg-syncjoymin5655/Agent | Skill | 2 | yesterday | MIT | A | 129 | Claude Code |
| git-expertlibrefang/librefang-registry | Skill | 11 | 1mo ago | MIT | A | 17 | Claude Code, Codex |
| githublibrefang/librefang-registry | Skill | 11 | 1mo ago | MIT | A | 20 | Claude Code, Codex |
| deployment-patternsaffaan-m/ECC | Skill | 298k | 4d ago | MIT | A | 41 | Claude Code, Kiro |
| mem0-test-integrationmem0ai/mem0 | Skill | 68k | 2d ago | Apache-2.0 | A | 207 | Claude Code, Codex |
| otto-pr-review-loopomnigent-ai/omnigent | Skill | 11k | yesterday | Apache-2.0 | A | 17 | Claude Code, Codex |
| baby-sitlangchain-ai/open-swe | Skill | 11k | yesterday | MIT | A | 30 | Claude Code, Codex |