一键导入
skill-maintainer
Track upstream drift and sync adapted skill libraries
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Track upstream drift and sync adapted skill libraries
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Autonomous multi-step deep research engine implementing an iterative Think → Search → Extract → Synthesize → Stop loop. The LLM drives every decision: what to search, what's relevant, what's missing, and when to stop. Produces a cited, magazine-quality report with inline citations, category- specific formatting, and research stats. Trigger when the user asks for "deep research", "research report on", "comprehensive analysis of", "look into X in depth", "write a report on X", or any question needing multi-source synthesis beyond a single search. For entity vetting/dossiers use entity-research; for news digests use news-monitoring; for source-grounded Q&A use notebooklm-mode.
Use when the user wants to organize, tidy, or restructure a messy directory (Downloads, Desktop, documents folder). LLM-powered file organizer that scans content, proposes a structure, and executes moves in chunks with a mandatory user confirmation gate.
Compile a task brief BEFORE starting substantial work — pin down the goal (what "done" looks like), the context (everything known that bears on the task), the constraints (guardrails, with the organisation's standing rules included automatically) and the tooling (which installed skill or tool will do the work) — confirm it with the user, then execute against it. Use whenever the user says "brief this task", "brief this first", "make sure you understand before you start", "scope this properly", "compile a brief", "what do you need from me", "improve my prompt", "help me get better output", or hands over a SUBSTANTIAL task — multi-step, multi-document, or producing a deliverable someone else will read — as a thin one-line request. Asks at most 2-3 clarifying questions, and only where the answer would change the output; otherwise it states its assumptions in the brief and proceeds. Not for quick one-step asks — just answer those directly.
Convert Claude Code plugins into self-contained Hermes plugins — discovery analysis then full conversion
Parse agent log files to identify error patterns, rate limit hits, timeout clusters, tool failures, and component-level error counts. Produces a structured anomaly report. Cron-compatible — silent if no issues, alert digest if anomalies found.
Generate short marketing/social VIDEO clips via fal.ai through a staged studio workflow — brainstorm the motion, draft cheaply, then produce the final at quality. Three modes: text-to-video (a clip from a prompt, no source image); animate (bring a still image to life — a product, people, b-roll, a space); and camera-move (a gentle push-in, pan, tilt or shallow orbit over a still, including an interior "3D view"). Use when the user wants to "make a video/clip", "generate a video from text", "animate this image/photo", "create a marketing reel / social video / teaser", "do a 3D / parallax move", "pan/zoom/orbit a shot", or when they mention fal.ai, Kling, Veo or Seedance for video. Do not use for still images (use image-studio), Canva-style template designs, slide decks, data charts/dashboards, or flowcharts/diagrams. Carries an honesty discipline for real subjects: never use text-to-video to depict a real, identifiable place, product or person. Do not override platform-native video tools where the host environ
| name | skill-maintainer |
| description | Track upstream drift and sync adapted skill libraries |
| version | 1.0.1 |
| author | moonlight-lupin |
| license | MIT |
| platforms | ["linux","macos"] |
A meta-skill for agents who maintain a library of skills — their own, adapted from external repos, or published to a shared repo. Covers the full lifecycle: authoring → curating → tracking → syncing → publishing.
This skill encodes a workflow built and battle-tested across dozens of skills.
It is agent-agnostic: replace tool names (e.g. write_file, terminal,
delegate_task) with your platform's equivalents. The patterns — manifest
tracking, layered sync, parallel diff dispatch, cron-based drift detection —
transfer to any agent runtime.
Don't use for: one-off skill creation with no upstream tracking need (just use your platform's skill-authoring tool directly). This skill adds value when you have ≥5 skills or ≥1 external dependency to track.
| Layer | Direction | What drifts | Example |
|---|---|---|---|
| 1. External → Local | Upstream repo → your skill | Upstream adds features, fixes bugs, changes API | baoyu-skills v1.56 → v1.117 |
| 2. Local → Published repo | Your skill → your GitHub repo | You improve locally; repo copy goes stale | skill gets new flags locally; repo doesn't |
| 3. Local → Standalone repo | Your skill → a code project repo | Skill documents a workflow; the code evolves | skill describes CLI v1; CLI is now v3 |
All three need tracking. Layer 1 is the most common concern. Layer 2 is the most commonly forgotten — publish once, keep improving, repo goes stale.
A single UPSTREAM_MANIFEST.md file at your skills root tracks every skill
with external provenance. One row per skill, covering all three layers. See
templates/upstream-manifest.md for the file format.
An automated script (scripts/upstream_check.py) runs monthly, fetches
upstream versions, and reports drift. See the Cron Setup section.
Before creating a new skill:
Read 2–3 existing skills in the target category to match tone, structure, and frontmatter conventions.
Every skill needs:
---
name: my-skill-name # lowercase, hyphens, ≤64 chars
description: > # ≤1024 chars, starts with trigger context
Use when <trigger>. <one-line behavior>.
version: 1.0.0
author: your-name
license: MIT
platforms: [linux, macos, windows]
---
# <Title>
## Overview — what and why (1-2 paragraphs)
## When to Use — bullet triggers + "Don't use for"
## <Topic sections> — quick-reference tables, exact commands, recipes
## Common Pitfalls — numbered list of mistakes and fixes
## Verification Checklist — checkbox list
references/*.md, linked from SKILL.mdscripts/*.py, deterministic, pure stdlib where possibleCommon quality failures: premature completion, duplication, sediment (stale lines), sprawl (too much always-visible material), no-op prose.
\n---\nname and description present, description ≤1024 chars---If the skill has external provenance (adapted from upstream, wraps a third-party
tool, or published to a repo), add a row to UPSTREAM_MANIFEST.md. This is
mandatory — an untracked skill is invisible to the monthly sync check. Skip
the manifest only for original skills with zero external dependency.
When porting skills from an external collection, classify each:
| Class | Action |
|---|---|
| Keep — unique, valuable, no overlap | Adapt to your format |
| Duplicate — you already have an equivalent | Merge unique parts or skip |
| Thin/pointer — just a URL, no real content | Skip |
| Novelty — joke/toy, no practical value | Skip |
| Capability-layer/router — installer + router delegating to upstream CLIs | Evaluate each backend; don't wholesale replace native skills |
Compare each candidate against existing skills. When two overlap, prefer your native one unless the external one adds clear value. If merging: patch the existing skill with unique content, discard the external copy.
Frontmatter: strip all framework-specific fields. Keep name,
description, version (bump for adapted), author (e.g. "Source (adapted)").
Body: full rewrite, not copy-paste:
# Non-English characters remaining (if source was non-EN)
grep -cP '[\x{4e00}-\x{9fff}]' SKILL.md
# Framework jargon remaining
grep -c 'framework-specific-term\|upstream-field' SKILL.md
# Version/author consistency
grep '^version:\|^author:' SKILL.md
Use existing categories. Don't invent new top-level categories casually.
Add a row to UPSTREAM_MANIFEST.md for every adapted skill. See the
Upstream Tracking section for entry types.
Maintain UPSTREAM_MANIFEST.md at your skills root. One row per skill with
external provenance. See templates/upstream-manifest.md for the full template.
| Type | What it tracks | Audit method |
|---|---|---|
| Adapted skill | Skill content adapted from an upstream skill repo | Diff upstream SKILL.md, compare version fields |
| Engine dependency | Skill wraps a third-party CLI/pip tool | tool --version vs GitHub releases |
| Engine-tracking skill | Original skill built around a third-party engine | pip show <pkg> + GitHub releases |
| Third-party skill | Adapted from external repo (not a skill repo per se) | Fetch README/latest, compare concepts |
| Published skill | Local skill pushed to your repo | diff local vs repo copy |
Skip the manifest for original skills with zero external dependency.
For skills with significant structural changes, maintain PORT_NOTES.md
inside the skill directory:
# Port Notes — <skill-name>
Ported from <repo-url> v<upstream-version>.
## Changes from upstream
| Change | Upstream | Ours |
### What was preserved
<list of verbatim-copied files>
## Syncing with upstream
<exact curl/diff commands>
<files safe to overwrite vs requiring manual merge>
Run monthly or when prompted.
Note last-checked dates. Identify stale rows (last sync >60 days).
For each adapted skill:
| Source type | Sync approach |
|---|---|
| Versioned, verbatim-heavy | Overwrite verbatim files, merge adapted files |
| Unversioned, full rewrite | Keep ours — diff for new domain content only |
| Actively evolving | Content merge — add upstream sections, preserve local wiring |
| Archived/moved | Update URLs only — upstream may have changed format |
| Low activity | One-time check, usually nothing to do |
For each published skill, diff local vs repo copy. If local is ahead,
re-publish (debrand, generalize, push).
For skills tied to code repos, check if the repo's workflow/CLI has changed.
# List installed CLI binaries
for tool in <your-tools>; do
path=$(which $tool 2>/dev/null) && echo "$tool: $path" || echo "$tool: not installed"
done
# List pip packages
for pkg in <your-packages>; do
pip show $pkg 2>/dev/null | grep -E '^Version:'
done
# Check latest releases
curl -s https://api.github.com/repos/<owner>/<repo>/releases/latest | grep tag_name
Cross-reference with manifest — any installed tool that powers a skill but isn't in the manifest is an untracked dependency. Add it.
Record last-checked date, new upstream version, any sync actions taken.
When auditing multiple upstream sources simultaneously:
This turns a serial 30-minute audit into a 5-minute parallel one.
When publishing a skill derived from a client/org-specific source:
| Platform-specific term | Replace with |
|---|---|
Platform tool names (image_generate, etc.) | Generic description |
| Platform metadata fields | Remove from frontmatter |
| Hardcoded paths | Env var with fallback, or <skill_dir>/... |
| Sibling skill dependencies | Env var resolution with fallbacks |
| Platform-specific delivery | Generic "send via the user's channel" |
python3 -c "import ast; ast.parse(open('scripts/main.py').read())"python3 -c "from script import main_func"In a pick-and-choose repo, each skill must be self-contained and runnable standalone, even at the cost of code duplication across siblings. Do NOT extract shared modules — a user who clones only one skill should not need a file from another.
Set up a monthly cron job to automatically check for upstream drift.
cp templates/upstream-manifest.md /path/to/your/skills/UPSTREAM_MANIFEST.md
Edit it to list your actual skills, upstream repos, and versions.
cp scripts/upstream_check.py /path/to/your/scripts/
The script reads Layer 1 and Layer 2 tables directly from
UPSTREAM_MANIFEST.md. No hardcoded skill lists — the manifest is the
single source of truth.
Engine dependencies (ENGINE_DEPS) are configured in the script file
itself, not in the manifest. This is a deliberate security boundary:
manifest content is markdown that could be externally edited, so we
don't execute shell commands derived from it. Add entries like:
ENGINE_DEPS = [
{"name": "my-cli-tool", "command": ["my-cli", "--version"], "version_regex": r"(\d+\.\d+\.\d+)"},
{"name": "my-pip-pkg", "command": ["pip", "show", "my-pip-pkg"], "version_regex": r"(\d+\.\d+\.\d+)"},
]
Commands are passed as lists (never shell=True) to prevent shell
injection from untrusted config.
You may also need to set SKILLS_ROOT and LAYER_2_REPO at the top of
the script, or via the SKILLS_ROOT and LAYER_2_REPO env vars.
Using a generic cron scheduler (adapt to your platform):
# Monthly upstream sync check — 9am on the 1st
0 9 1 * * /path/to/python3 /path/to/scripts/upstream_check.py
Or using an agent platform's cron tool:
{
"name": "Monthly Upstream Sync Check",
"schedule": "0 9 1 * *",
"prompt": "Run the upstream sync check script at /path/to/scripts/upstream_check.py. Report any drift detected. If drift is found, summarize which skills need attention and what changed upstream.",
"no_agent": true
}
The script exits 0 if all in sync, 1 if drift detected. Non-empty stdout is delivered as the message; empty stdout means silent (nothing to report).
master). The upstream file location is guessed as
skills/<name>/SKILL.md unless the manifest row carries an optional
Upstream path column — add that column for upstreams with a different
layout, or the check will warn "could not fetch upstream" every run.When the cron reports drift:
When a new capability overlaps with an existing skill:
When a sub-topic grows large enough to warrant a dedicated skill, the
umbrella skill MUST point to the new skill, not keep duplicate content.
Replace inline detail with a pointer: "→ See dedicated <skill-name> skill
for: ..." Duplicate content drifts; a pointer ensures one source of truth.
---, closes with \n---\n, parses as YAMLname (≤64 chars, lowercase+hyphens) and description (≤1024 chars) presentreferences/*.md filestests/test_upstream_check.py (this skill's own suite) passes — run
python3 -m pytest tests/ -q from the skill directory