一键导入
sync-pocock-skills
Sync Matt Pocock's skills from upstream, applying pi-specific patches and handling dependencies and lifecycle migrations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Sync Matt Pocock's skills from upstream, applying pi-specific patches and handling dependencies and lifecycle migrations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Maintain an English Obsidian product journal for technical decisions, what works / what doesn't, monetization, and distribution. Use when the user wants to document product/tech decisions in Obsidian, log learnings, capture pricing/margin notes, map distribution funnels, bootstrap a product folder in their vault, or mentions Obsidian ADRs / product journal notes.
Deploy Node.js apps to a single VPS using the shipnode CLI (zero-downtime releases, PM2, Caddy, SSH). Use when the user asks about deploying, setting up a server, rolling back, configuring Caddy/PM2, managing .env on a remote server, or running shipnode commands.
| name | sync-pocock-skills |
| description | Sync Matt Pocock's skills from upstream, applying pi-specific patches and handling dependencies and lifecycle migrations. |
| disable-model-invocation | true |
Sync our copies of mattpocock/skills against either the default branch or an exact release, apply pi-specific patches, and surface migration work.
Use absolute paths so current-directory confusion does not matter:
SKILL_ROOT="$HOME/.pi/agent/skills/sync-pocock-skills"
bash "$SKILL_ROOT/scripts/sync.sh" \
"$HOME/.pi/agent/skills" \
"$SKILL_ROOT/patches" \
--keep-upstream
For a release, pin its exact tag instead of analysing a moving default branch:
bash "$SKILL_ROOT/scripts/sync.sh" \
"$HOME/.pi/agent/skills" \
"$SKILL_ROOT/patches" \
--ref 'mattpocock-skills@1.0.0' \
--keep-upstream
Options:
--ref <git-ref> — clone an exact tag or branch.--keep-upstream — retain the temporary clone after the script exits.--upstream-dir <dir> — clone into a specific path and retain it.When the user supplies a release URL, read the notes first and pass its tag to --ref. Treat explicit breaking changes as migration instructions, not ordinary file diffs.
Parse these report sections:
required_by= marks dependencies of installed skills.skills/ root, requested ref, and resolved commit.The upstream root contains category directories. Resolve a skill's actual directory before invoking another script:
upstream_root="<UPSTREAM_DIR from sync output>"
skill="<skill-name>"
upstream_skill_dir=$(find "$upstream_root" -mindepth 2 -maxdepth 2 -type d -name "$skill" -print -quit)
[[ -n "$upstream_skill_dir" ]] || { echo "missing upstream skill dir for $skill"; exit 1; }
Lifecycle mappings live in patches/upstream-migrations.tsv.
Do not carry disable-model-invocation across a rename or replacement automatically. Upstream 1.0.0 distinguishes:
disable-model-invocation: true; descriptions are human-facing.Respect upstream's classification unless a deliberate pi policy is recorded in patches/local-overrides.json.
Install missing dependencies before updating the skills that invoke them. A user-invoked skill may orchestrate model-invoked skills, but must not invoke another user-invoked skill as an automatic dependency.
For each new optional skill, show its name, category, description, and dependants. Ask whether to:
scripts/install-new.sh.patches/excluded.txt.bash "$SKILL_ROOT/scripts/install-new.sh" \
"$skill" "$upstream_skill_dir" \
"$HOME/.pi/agent/skills" "$SKILL_ROOT/patches"
If installing a router such as ask-matt, first confirm that every skill it routes to is installed. Rerun the analysis after installation to expose any dependency gap.
For each CHANGED: entry:
Apply a complete upstream skill atomically:
bash "$SKILL_ROOT/scripts/apply-upstream.sh" \
"$skill" "$upstream_skill_dir" \
"$HOME/.pi/agent/skills" "$SKILL_ROOT/patches"
Inspect the working-tree diff immediately. rsync --delete removes old bundled resources, and local frontmatter not configured in local-overrides.json may disappear.
For each UNPATCHED: entry:
bash "$SKILL_ROOT/scripts/make-patch.sh" \
"$skill" "$rel_path" "$upstream_file" "$our_file" "$SKILL_ROOT/patches"
make-patch.sh uses stable labels. For SKILL.md, it excludes configured local metadata from the text patch while preserving a field if upstream now supplies it natively.
| Claude Code pattern | Pi replacement |
|---|---|
Agent tool with subagent_type=Explore | Walk the codebase using read, grep, find, and bash. |
| Spawn parallel sub-agents | Produce the alternatives independently from the original brief; do not let one alternative anchor the next. |
Generic sub-agent / subagent | Remove it or replace it with direct-agent instructions. |
Check CLAUDE.md first | Check AGENTS.md first and CLAUDE.md as fallback. |
sync.sh against the same --ref.git diff -- <changed skill paths>.patches/excluded.txt — upstream skills intentionally not installed.patches/local-only.txt — local skills that must not be mistaken for removed upstream skills.patches/upstream-migrations.tsv — confirmed rename, replacement, and removal mappings.patches/local-overrides.json — deliberate pi frontmatter policy applied after upstream and text patches.patches/*.patch — pi-specific content changes.sync-pocock-skills/
├── SKILL.md
├── scripts/
│ ├── sync.sh
│ ├── apply-upstream.sh
│ ├── install-new.sh
│ ├── apply-frontmatter-overrides.py
│ └── make-patch.sh
└── patches/
├── excluded.txt
├── local-only.txt
├── upstream-migrations.tsv
├── local-overrides.json
└── *.patch