Sync mattpocock method skills into neo
neo vendors its method layer from mattpocock/skills
instead of depending on an external plugin at runtime. This skill pulls the
allowlisted skills into skills/<name>/ (flat neo layout) and never touches
neo-owned domain skills or the using-neo router.
In scope
Allowlist is sync-state.json:synced_skills (source path → dest name):
Dest (skills/) |
Upstream source |
tdd |
skills/engineering/tdd |
diagnosing-bugs |
skills/engineering/diagnosing-bugs |
domain-modeling |
skills/engineering/domain-modeling |
research |
skills/engineering/research |
prototype |
skills/engineering/prototype |
codebase-design |
skills/engineering/codebase-design |
resolving-merge-conflicts |
skills/engineering/resolving-merge-conflicts |
grilling |
skills/productivity/grilling |
Out of scope (never touched)
- All neo-owned skills:
using-neo, code-review, api-spec, e2e-playwright, openapi-doc,
open-collection, confluence-api-doc, markitdown, init-project,
migrate-project, atlassian, gitlab
code-review was synced and is now neo-owned: upstream discovers standards from
CODING_STANDARDS.md / CONTRIBUTING.md and an issue tracker, none of which exist in this
org's services — the real sources are .kiro/steering/ and docs/tasks/<card>/spec.md.
Re-adding it to the allowlist would overwrite that.
- Entry skills from mattpocock that neo absorbed into the router
(
grill-with-docs, implement, wayfinder, to-spec, to-tickets, triage, …)
hooks/, agents/, manifests, docs, README
To add a method skill later: append it to synced_skills in sync-state.json,
then re-run. To drop one: remove it from the allowlist and git rm skills/<name>
by hand — the sync never auto-deletes.
Files
assets/sync.py — fetch/clone, 3-way compare, dry-run/apply, advance baseline
sync-state.json — allowlist, upstream URL/path, last synced commit
Workflow
Dry run — always first.
python3 .agents/skills/sync-mattpocock/assets/sync.py
Optional: --upstream <path> if you already have a local clone;
--ref origin/main (default from state); --no-fetch to skip git fetch.
Read the report:
- ADD / UPDATE — files the apply step will write
- LOCAL-KEPT — you edited a vendored file and upstream did not change it; kept
- CONFLICT — both you and upstream changed the same file; merge by hand, re-run
- UPSTREAM-REMOVED — file gone upstream; decide manually (sync never deletes)
- MISSING-UPSTREAM-SKILL — allowlist path not found; fix
sync-state.json
Apply.
python3 .agents/skills/sync-mattpocock/assets/sync.py --apply
Writes add/update files and advances last_synced_commit / last_synced_date.
First run clones into .agents/skills/sync-mattpocock/.upstream-cache/
(gitignored-friendly; re-used on later runs).
Verify (do not skip).
node scripts/validate-skills.js
node scripts/validate-pi-package.js
bash hooks/session-start-test.sh
All green. Spot-check git diff skills/ — only allowlisted method skills should change.
Finish. Review the diff, bump plugin version if you are shipping the update,
then commit (yours to run). Prefer /ship when cutting a release.
Guarantees
- Allowlist-only. Skills not listed in
synced_skills are invisible to the sync.
- Neo-owned hard-blocked. Even a mistaken allowlist entry for
using-neo / domain
skills is rejected up front.
- Never clobbers hand-edits. 3-way compare keeps your change when upstream is quiet;
CONFLICT when both sides moved.
- Never auto-deletes. Removed-upstream files are reported only.
- Idempotent. Dry run against the recorded baseline reports zero pending writes.
When to run
- Upstream mattpocock/skills cut a release you want
- A method skill is missing under
skills/ after a fresh clone
- You expanded
synced_skills and need the new skill on disk
1---2name: sync-mattpocock3description: Sync the allowlisted method-layer skills from mattpocock/skills into this neo-plugin repo. Use when updating the method layer, pulling tdd/code-review/grilling and related skills, or when the user says "sync mattpocock", "update method skills", or "pull mattpocock skills".4---56# Sync mattpocock method skills into neo78neo vendors its **method layer** from [mattpocock/skills](https://github.com/mattpocock/skills)9instead of depending on an external plugin at runtime. This skill pulls the10allowlisted skills into `skills/<name>/` (flat neo layout) and never touches11neo-owned domain skills or the `using-neo` router.1213## In scope1415Allowlist is `sync-state.json:synced_skills` (source path → dest name):1617| Dest (`skills/`) | Upstream source |18|---|---|19| `tdd` | `skills/engineering/tdd` |20| `diagnosing-bugs` | `skills/engineering/diagnosing-bugs` |21| `domain-modeling` | `skills/engineering/domain-modeling` |22| `research` | `skills/engineering/research` |23| `prototype` | `skills/engineering/prototype` |24| `codebase-design` | `skills/engineering/codebase-design` |25| `resolving-merge-conflicts` | `skills/engineering/resolving-merge-conflicts` |26| `grilling` | `skills/productivity/grilling` |2728## Out of scope (never touched)2930- All neo-owned skills: `using-neo`, `code-review`, `api-spec`, `e2e-playwright`, `openapi-doc`,31 `open-collection`, `confluence-api-doc`, `markitdown`, `init-project`,32 `migrate-project`, `atlassian`, `gitlab`33- `code-review` **was** synced and is now neo-owned: upstream discovers standards from34 `CODING_STANDARDS.md` / `CONTRIBUTING.md` and an issue tracker, none of which exist in this35 org's services — the real sources are `.kiro/steering/` and `docs/tasks/<card>/spec.md`.36 Re-adding it to the allowlist would overwrite that.37- Entry skills from mattpocock that neo absorbed into the router38 (`grill-with-docs`, `implement`, `wayfinder`, `to-spec`, `to-tickets`, `triage`, …)39- `hooks/`, `agents/`, manifests, docs, README4041To add a method skill later: append it to `synced_skills` in `sync-state.json`,42then re-run. To drop one: remove it from the allowlist and `git rm skills/<name>`43by hand — the sync never auto-deletes.4445## Files4647- `assets/sync.py` — fetch/clone, 3-way compare, dry-run/apply, advance baseline48- `sync-state.json` — allowlist, upstream URL/path, last synced commit4950## Workflow51521. **Dry run — always first.**5354 ```bash55 python3 .agents/skills/sync-mattpocock/assets/sync.py56 ```5758 Optional: `--upstream <path>` if you already have a local clone;59 `--ref origin/main` (default from state); `--no-fetch` to skip `git fetch`.6061 Read the report:62 - **ADD / UPDATE** — files the apply step will write63 - **LOCAL-KEPT** — you edited a vendored file and upstream did not change it; kept64 - **CONFLICT** — both you and upstream changed the same file; merge by hand, re-run65 - **UPSTREAM-REMOVED** — file gone upstream; decide manually (sync never deletes)66 - **MISSING-UPSTREAM-SKILL** — allowlist path not found; fix `sync-state.json`67682. **Apply.**6970 ```bash71 python3 .agents/skills/sync-mattpocock/assets/sync.py --apply72 ```7374 Writes add/update files and advances `last_synced_commit` / `last_synced_date`.75 First run clones into `.agents/skills/sync-mattpocock/.upstream-cache/`76 (gitignored-friendly; re-used on later runs).77783. **Verify (do not skip).**7980 ```bash81 node scripts/validate-skills.js82 node scripts/validate-pi-package.js83 bash hooks/session-start-test.sh84 ```8586 All green. Spot-check `git diff skills/` — only allowlisted method skills should change.87884. **Finish.** Review the diff, bump plugin version if you are shipping the update,89 then commit (yours to run). Prefer `/ship` when cutting a release.9091## Guarantees9293- **Allowlist-only.** Skills not listed in `synced_skills` are invisible to the sync.94- **Neo-owned hard-blocked.** Even a mistaken allowlist entry for `using-neo` / domain95 skills is rejected up front.96- **Never clobbers hand-edits.** 3-way compare keeps your change when upstream is quiet;97 CONFLICT when both sides moved.98- **Never auto-deletes.** Removed-upstream files are reported only.99- **Idempotent.** Dry run against the recorded baseline reports zero pending writes.100101## When to run102103- Upstream mattpocock/skills cut a release you want104- A method skill is missing under `skills/` after a fresh clone105- You expanded `synced_skills` and need the new skill on disk