Skip to content
Back to skills

Agent Loom Sync

ASecurity

Sync library skills from an agent-loom upstream repo into this project's .agents/skills while preserving project-local and forked skills. Load when the user asks to sync agent-loom, update skills from upstream, rsync from ../agent-loom, pull new library skills, upgrade installed skills, or refresh the .agents folder without losing custom project skills. Also triggers on "sync skills from agent-loom", "update my agent skills", "pull skill library updates", or "merge agent-loom improvements int...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
testingpythonrustgobashgit

Works with

  • cursor

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add dvy1987/agent-loom --skill agent-loom-sync --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Loom Sync?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Loom Sync
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvy1987-agent-loom-sync/badge)](https://www.skillsdirectory.com/skills/dvy1987-agent-loom-sync)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-loom-sync
description: >
  Sync library skills from an agent-loom upstream repo into this project's
  .agents/skills while preserving project-local and forked skills. Load when
  the user asks to sync agent-loom, update skills from upstream, rsync from
  ../agent-loom, pull new library skills, upgrade installed skills, or
  refresh the .agents folder without losing custom project skills. Also triggers
  on "sync skills from agent-loom", "update my agent skills", "pull skill
  library updates", or "merge agent-loom improvements into this repo".
license: MIT
metadata:
  author: dvy1987
  version: "1.2"
  category: project-specific
  sources: agent-loom consumer install pattern (copy .agents + local skills)
  resources:
    references:
      - examples.md
      - sync-policy.md
    scripts:
      - sync_agent_loom.py
    templates:
      - agent-loom-sync.json
---

# Agent-Loom Sync

You merge upstream agent-loom library improvements into a consumer project's `.agents/skills/` without deleting or overwriting skills that belong only to this project.

## Hard Rules

**Never delete local-only skills.** A skill directory present in the project but absent from upstream is project-local — keep it forever unless the user explicitly asks to remove it.

**Never overwrite protected or forked skills without explicit user approval.** Protection sources: `metadata.origin: project-local` in SKILL.md, `.agents/agent-loom-sync.json` → `protected_skills` / `forked_skills`, or skills that exist only locally.

**Always dry-run before apply.** Present the plan (add / update / unchanged / local-only / forked) and wait for confirmation before `--apply`.

**Never sync the project root `AGENTS.md` from upstream.** That file is project-specific (from `project-setup`). Sync `.agents/skills/`, and **`hooks/`** when present upstream, optionally `.agents/ROUTING.md` when the user opts in.

**Never run rsync on the whole `.agents/skills/` tree with `--delete`.** Sync per library skill directory only — bulk delete would remove project-local skills.

**Ensure `metadata.origin: project-local` on every local-only skill.** After `--apply`, `sync_agent_loom.py` stamps missing origin on skills absent from upstream. Report stamped skills in the impact report. Same-name upstream forks use `forked_skills` in config instead.

---

## Workflow

### Step 1 — Resolve upstream path

Default: `../agent-loom` relative to project root. Override via:
- User-provided path argument
- `.agents/agent-loom-sync.json` → `"upstream"`

Verify upstream exists and contains `.agents/skills/`. If missing, stop with the exact path checked.

Bootstrap config if absent: copy `templates/agent-loom-sync.json` → `.agents/agent-loom-sync.json`.

### Step 2 — Build sync plan

```bash
python3 .agents/skills/agent-loom-sync/scripts/sync_agent_loom.py --dry-run
```

Classify each skill — read `references/sync-policy.md` for protection rules. Summarize for the user:

| Bucket | Meaning |
|--------|---------|
| **Add** | New upstream skill not in project |
| **Update** | Upstream skill differs; safe to rsync |
| **Unchanged** | Already matches upstream hash |
| **Local-only** | Project skill with no upstream counterpart — protected |
| **Forked** | Modified library skill — skipped until user merges |

### Step 3 — Confirm with user

Show counts and name lists for Add and Update. Ask: "Apply sync?" One confirmation for apply; forked skills need per-skill decision if user wants upstream version.

### Step 4 — Apply

```bash
python3 .agents/skills/agent-loom-sync/scripts/sync_agent_loom.py --apply
```

Updates `.agents/agent-loom-sync.json` with `last_sync` and `upstream_commit`. Script stamps `metadata.origin: project-local` on local-only skills missing it — report which skills were stamped.

### Step 5 — Optional ROUTING.md

Only if user asks: `rsync` upstream `.agents/ROUTING.md` when project has not forked it (no local diff). Never auto-overwrite without asking.

### Step 6 — Post-sync validation

Invoke `validate-skills` (or run Step 4e craft gates) on updated skills. Report P0/P1 before user commits.
Regenerate host routing adapters: `python3 .agents/skills/project-setup/scripts/gen_host_adapters.py` (refreshes `.cursor/rules/` from the synced skill set).

### Step 7 — Log and handoff

Append to `docs/skill-outputs/SKILL-OUTPUTS.md`. Recommend commit message: `chore: sync agent-loom library @ <commit>`. Offer `memory-handoff` if session ends.

---

## Project-local origin (this skill's job)

| Responsibility | Owner |
|----------------|-------|
| Write `metadata.origin: project-local` when creating skills | `universal-skill-creator` (Step 4 + Step 7b) |
| Stamp missing origin on local-only skills after sync | `agent-loom-sync` (`--apply` via `sync_agent_loom.py`) |
| Protect skills with that metadata from overwrite | `agent-loom-sync` sync plan |
| Same-name customized upstream skill | `forked_skills` in `.agents/agent-loom-sync.json` |

Every project-local SKILL.md should carry `origin: project-local`. These skills ensure it — not the user.

---

## Gotchas

- **Copying all of `.agents/` once ≠ ongoing sync.** This skill is the ongoing path; re-copying blindly deletes project-local skills.
- **`../agent-loom` is relative to project root**, not the skill directory — run the script from repo root.
- **rsync `--delete` is per-skill**, removing stale files inside an updated library skill dir only.
- **Global install (`install.sh`) is different** — that symlinks to `~/.agents/skills`; this skill targets project-copied `.agents/`.
- **Upstream must be pulled first** — remind user to `git pull` in agent-loom before sync if they want latest.

---

## Common Rationalizations

| Excuse | Reality |
|--------|---------|
| "Just rsync the whole .agents folder" | Deletes project-local skills and project config |
| "Skip dry-run, I trust upstream" | Forked/custom skills get wiped without a plan |
| "Overwrite my fork — upstream is always right" | Require explicit per-skill opt-in to replace forked |
| "Sync AGENTS.md from agent-loom" | Project AGENTS.md is from project-setup — merge manually |
| "Delete skills removed upstream" | Local-only stays; upstream removals don't delete local skills |

---

## Verification

- [ ] Dry-run plan shown before apply
- [ ] All local-only skills listed under protected
- [ ] No protected/forked skill in Update list without user approval
- [ ] `agent-loom-sync.json` updated after apply
- [ ] Local-only skills have `metadata.origin: project-local` (stamped by apply if missing)
- [ ] SKILL-OUTPUTS.md appended when files changed

---

## Red Flags

- Whole-tree rsync with delete on .agents/skills/
- Local-only skill missing from protected list in plan
- Forked skill overwritten without user opt-in
- Upstream path points at wrong repo or missing .agents/skills
## Example

<examples>
  <example>
    <input>sync agent-loom from ../agent-loom without losing my custom skills</input>
    <output>Plan: 15 add, 22 update, 3 local-only protected. Awaiting confirm before --apply.</output>
  </example>
</examples>

Read `references/examples.md` for full session walkthroughs.

---

## Prune Log
Last pruned: 2026-07-04
- No changes — citation audit passed; content current (improve-skills full pass 2026-07-04)


## Impact Report

`Agent-loom sync: upstream @ <commit> | add: N | update: N | protected: N | forked: N | applied: yes/no | Config: .agents/agent-loom-sync.json`

Files in this skill

  • SKILL.md7.3 KB
  • references/examples.md1.9 KB
  • references/sync-policy.md1.5 KB
  • scripts/sync_agent_loom.py9.5 KB
  • templates/agent-loom-sync.json131 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…