[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P1R8M20WYVQMD7GS4X0PDJ":3,"skill-same:01M6P1R8M20WYVQMD7GS4X0PDJ":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":31,"commitSha":52,"skillDirectory":53,"forksCount":13,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6P1R8M20WYVQMD7GS4X0PDJ","distribute-skill-to-all-agents",null,"Distribute a skill across configured agent skill folders while respecting local symlink layouts.","duc-duy-1612\u002FOnline-Delivery-Systems-Web","duc-duy-1612","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F192231384?v=4","01M6NSDKQQDKVTHZ8DZMZ1VYY6","01M6NSDKW8DDVTQHBT1HBDDJPT",0,"MIT","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fdistribute-skill-to-all-agents\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"distribute","distribute skill to all agents","github","codex","development","license","https","community","main","across","local","agent skill","distribution","critical","symlink","2026-11-10 10:12:30",false,"---\nname: distribute-skill-to-all-agents\ndescription: \"Distribute a skill across configured agent skill folders while respecting local symlink layouts.\"\ncategory: development\nrisk: critical\nsource: community\nsource_repo: davidondrej\u002Fskills\nsource_type: community\ndate_added: \"2026-07-07\"\nauthor: davidondrej\ntags: [skills, distribution, agents]\ntools: [claude, codex]\nlicense: \"MIT\"\nlicense_source: \"https:\u002F\u002Fgithub.com\u002Fdavidondrej\u002Fskills\u002Fblob\u002Fmain\u002FLICENSE\"\n---\n\n# Distribute a Skill Across All Agents\n\n## When to Use\n\n- Use when a skill should be made available across multiple local agent skill folders.\n- Use when the user asks to sync or distribute skill updates to other agents.\n\nThe user has 4 agent skill locations on his MacBook. A skill must exist in each (or via symlink) to be discoverable by every agent.\n\n## The 4 Canonical Locations\n\n| Agent | Skills Folder | Notes |\n|---|---|---|\n| Codex \u002F OpenAI Agents | `~\u002F.agents\u002Fskills\u002F` | **Canonical** — author skills here first |\n| Claude Code | `~\u002F.claude\u002Fskills\u002F` | **Symlink → `~\u002F.agents\u002Fskills\u002F`** — writing to `.agents\u002Fskills` automatically covers Claude |\n| Pi Agent | `~\u002F.pi\u002Fagent\u002Fskills\u002F` | **Symlink → `~\u002F.agents\u002Fskills\u002F`** — auto-covered. (Path is `\u002Fagent\u002F` nested — NOT `~\u002F.pi\u002Fskills\u002F`) |\n| Hermes Agent | `~\u002F.hermes\u002Fskills\u002F` | Independent copy — the only one needing a manual copy |\n\n## Workflow\n\n1. **Author the skill in `~\u002F.agents\u002Fskills\u002F\u003Cskill-name>\u002FSKILL.md`** (canonical). Follow `effective-agent-skills` SKILL.md guidance.\n2. **Verify the `.claude` symlink is intact** (one-time check):\n   ```bash\n   ls -la ~\u002F.claude\u002Fskills\n   # Expect: ~\u002F.claude\u002Fskills -> ~\u002F.agents\u002Fskills\n   ```\n   If it's a real directory instead of a symlink, the user has diverged copies — ask before touching.\n3. **Copy to `.hermes` only** (`.claude` and `.pi` are symlinks — already covered):\n   ```bash\n   SKILL=\u003Cskill-name>\n   cp -r ~\u002F.agents\u002Fskills\u002F$SKILL ~\u002F.hermes\u002Fskills\u002F\n   ```\n4. **Verify all 4 locations** show identical byte counts:\n   ```bash\n   for p in ~\u002F.agents\u002Fskills\u002F$SKILL ~\u002F.claude\u002Fskills\u002F$SKILL ~\u002F.pi\u002Fagent\u002Fskills\u002F$SKILL ~\u002F.hermes\u002Fskills\u002F$SKILL; do\n     echo \"$p: $(wc -c \u003C $p\u002FSKILL.md) bytes\"\n   done\n   ```\n   All four numbers must match. If `.claude` or `.pi` shows a different byte count, that symlink is broken — investigate before proceeding.\n\n## Updating an Existing Distributed Skill\n\nSame flow — re-copy from `~\u002F.agents\u002Fskills\u002F` to `.hermes\u002Fskills\u002F`. The `.claude` and `.pi` symlinks update automatically. `cp -r` overwrites by default; use `rsync -a --delete` if the skill folder has nested files that may have been removed:\n\n```bash\nrsync -a --delete ~\u002F.agents\u002Fskills\u002F$SKILL\u002F ~\u002F.hermes\u002Fskills\u002F$SKILL\u002F\n```\n\n## Pitfalls\n\n- **`~\u002F.pi\u002Fskills\u002F` is the wrong location.** Pi Agent loads from `~\u002F.pi\u002Fagent\u002Fskills\u002F` only. A skill placed in `~\u002F.pi\u002Fskills\u002F` is invisible. If you find skills already there, they're orphans — confirm with the user before deleting.\n- **`~\u002F.claude\u002Fskills` is a symlink, not a folder.** `cp -r ~\u002F.agents\u002Fskills\u002Ffoo ~\u002F.claude\u002Fskills\u002F` will error with \"are identical\". Skip the explicit Claude copy.\n- **Project-local skills exist too** — `.\u002F.pi\u002Fagent\u002Fskills\u002F` (or `.pi\u002Fskills\u002F`) inside a repo overrides the global one on collision (later-discovered wins). This skill only handles GLOBAL distribution.\n- **`.pi\u002Fagent\u002Fskills` is a symlink → `.agents\u002Fskills`.** Don't `cp` into it (errors \"are identical\"); it auto-syncs. Only `.hermes\u002Fskills` is an independent copy — don't unilaterally consolidate Hermes into a symlink unless the user asks.\n- **Hermes snapshots skills at session start.** A newly-distributed skill won't appear inside a running Hermes session until restart (it works fine for future sessions and for the other 3 agents immediately).\n- **Filename casing matters on case-sensitive volumes.** `SKILL.md` must be uppercase.\n\n## When NOT to Use This Skill\n\n- Skill is project-specific → put it in `.\u002F.claude\u002Fskills\u002F`, `.\u002F.pi\u002Fagent\u002Fskills\u002F`, etc. inside the repo, not globally.\n- Editing one agent's skill only (e.g. a Hermes-only workflow) → patch that file directly, don't propagate.\n- Removing a skill globally is destructive. First show the exact skill directories\n  that would be removed, confirm with the user, then use the user's preferred\n  safe deletion method for `~\u002F.agents\u002Fskills\u002F` and `~\u002F.hermes\u002Fskills\u002F`.\n\n## Limitations\n\n- Adapted from `davidondrej\u002Fskills`; verify local paths, tools, credentials, and agent features before acting.\n- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first.\n","# Distribute a Skill Across All Agents\n\n## When to Use\n\n- Use when a skill should be made available across multiple local agent skill folders.\n- Use when the user asks to sync or distribute skill updates to other agents.\n\nThe user has 4 agent skill locations on his MacBook. A skill must exist in each (or via symlink) to be discoverable by every agent.\n\n## The 4 Canonical Locations\n\n| Agent | Skills Folder | Notes |\n|---|---|---|\n| Codex \u002F OpenAI Agents | `~\u002F.agents\u002Fskills\u002F` | **Canonical** — author skills here first |\n| Claude Code | `~\u002F.claude\u002Fskills\u002F` | **Symlink → `~\u002F.agents\u002Fskills\u002F`** — writing to `.agents\u002Fskills` automatically covers Claude |\n| Pi Agent | `~\u002F.pi\u002Fagent\u002Fskills\u002F` | **Symlink → `~\u002F.agents\u002Fskills\u002F`** — auto-covered. (Path is `\u002Fagent\u002F` nested — NOT `~\u002F.pi\u002Fskills\u002F`) |\n| Hermes Agent | `~\u002F.hermes\u002Fskills\u002F` | Independent copy — the only one needing a manual copy |\n\n## Workflow\n\n1. **Author the skill in `~\u002F.agents\u002Fskills\u002F\u003Cskill-name>\u002FSKILL.md`** (canonical). Follow `effective-agent-skills` SKILL.md guidance.\n2. **Verify the `.claude` symlink is intact** (one-time check):\n   ```bash\n   ls -la ~\u002F.claude\u002Fskills\n   # Expect: ~\u002F.claude\u002Fskills -> ~\u002F.agents\u002Fskills\n   ```\n   If it's a real directory instead of a symlink, the user has diverged copies — ask before touching.\n3. **Copy to `.hermes` only** (`.claude` and `.pi` are symlinks — already covered):\n   ```bash\n   SKILL=\u003Cskill-name>\n   cp -r ~\u002F.agents\u002Fskills\u002F$SKILL ~\u002F.hermes\u002Fskills\u002F\n   ```\n4. **Verify all 4 locations** show identical byte counts:\n   ```bash\n   for p in ~\u002F.agents\u002Fskills\u002F$SKILL ~\u002F.claude\u002Fskills\u002F$SKILL ~\u002F.pi\u002Fagent\u002Fskills\u002F$SKILL ~\u002F.hermes\u002Fskills\u002F$SKILL; do\n     echo \"$p: $(wc -c \u003C $p\u002FSKILL.md) bytes\"\n   done\n   ```\n   All four numbers must match. If `.claude` or `.pi` shows a different byte count, that symlink is broken — investigate before proceeding.\n\n## Updating an Existing Distributed Skill\n\nSame flow — re-copy from `~\u002F.agents\u002Fskills\u002F` to `.hermes\u002Fskills\u002F`. The `.claude` and `.pi` symlinks update automatically. `cp -r` overwrites by default; use `rsync -a --delete` if the skill folder has nested files that may have been removed:\n\n```bash\nrsync -a --delete ~\u002F.agents\u002Fskills\u002F$SKILL\u002F ~\u002F.hermes\u002Fskills\u002F$SKILL\u002F\n```\n\n## Pitfalls\n\n- **`~\u002F.pi\u002Fskills\u002F` is the wrong location.** Pi Agent loads from `~\u002F.pi\u002Fagent\u002Fskills\u002F` only. A skill placed in `~\u002F.pi\u002Fskills\u002F` is invisible. If you find skills already there, they're orphans — confirm with the user before deleting.\n- **`~\u002F.claude\u002Fskills` is a symlink, not a folder.** `cp -r ~\u002F.agents\u002Fskills\u002Ffoo ~\u002F.claude\u002Fskills\u002F` will error with \"are identical\". Skip the explicit Claude copy.\n- **Project-local skills exist too** — `.\u002F.pi\u002Fagent\u002Fskills\u002F` (or `.pi\u002Fskills\u002F`) inside a repo overrides the global one on collision (later-discovered wins). This skill only handles GLOBAL distribution.\n- **`.pi\u002Fagent\u002Fskills` is a symlink → `.agents\u002Fskills`.** Don't `cp` into it (errors \"are identical\"); it auto-syncs. Only `.hermes\u002Fskills` is an independent copy — don't unilaterally consolidate Hermes into a symlink unless the user asks.\n- **Hermes snapshots skills at session start.** A newly-distributed skill won't appear inside a running Hermes session until restart (it works fine for future sessions and for the other 3 agents immediately).\n- **Filename casing matters on case-sensitive volumes.** `SKILL.md` must be uppercase.\n\n## When NOT to Use This Skill\n\n- Skill is project-specific → put it in `.\u002F.claude\u002Fskills\u002F`, `.\u002F.pi\u002Fagent\u002Fskills\u002F`, etc. inside the repo, not globally.\n- Editing one agent's skill only (e.g. a Hermes-only workflow) → patch that file directly, don't propagate.\n- Removing a skill globally is destructive. First show the exact skill directories\n  that would be removed, confirm with the user, then use the user's preferred\n  safe deletion method for `~\u002F.agents\u002Fskills\u002F` and `~\u002F.hermes\u002Fskills\u002F`.\n\n## Limitations\n\n- Adapted from `davidondrej\u002Fskills`; verify local paths, tools, credentials, and agent features before acting.\n- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first.\n",{"name":5,"risk":36,"tags":43,"tools":46,"author":48,"source":30,"license":14,"category":27,"date_added":49,"description":7,"source_repo":50,"source_type":30,"license_source":51},[44,35,45],"skills","agents",[47,26],"claude","davidondrej","2026-07-07","davidondrej\u002Fskills","https:\u002F\u002Fgithub.com\u002Fdavidondrej\u002Fskills\u002Fblob\u002Fmain\u002FLICENSE","f3312ba749561b6159f477dbfc9313c875d40a56",".agents\u002Fskills_archive\u002Fdistribute-skill-to-all-agents","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612","2026-10-25 23:50:58",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill distribute-skill-to-all-agents",{"tool":63,"command":64},"bunx","bunx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill distribute-skill-to-all-agents",{"tool":66,"command":67},"pnpm","pnpm dlx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill distribute-skill-to-all-agents","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fdistribute-skill-to-all-agents\u002FSKILL.md",true,[],[72,98,122,142,170,194],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":38},"01M6Q0FA5FZ410Z33Z3TFQ4DBA","zero-trust","Implement zero-trust network architecture. Configure identity-based access, micro-segmentation, and continuous verification. Use when implementing modern security architectures.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fzero-trust\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",[82,83,84,85,86,87,74,88,89,90,91,92,30,31,93,36,94,95,96,97],"ZeRO","trust","zero trust","architecture","assessment","verification","segmentation","devops-security","access","configure","only","active","scope","scripts","relevant","implementing",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":38},"01M6Q0F1YZJW3KX5FBKEVZ8CV4","zcode-delegate","Delegate coding tasks to the Z.AI ZCode CLI only when the user explicitly requests it, while the orchestrator retains review and landing responsibility.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fzcode-delegate\u002FSKILL.md",[],[105,106,107,108,109,110,111,112,113,114,115,116,117,92,118,30,119,120,36,121],"delegate","zcode","zcode delegate","review","cli","orchestration","tasks","run","Bash","model","node","read","orchestrator","files","desktop app","app","agent-orchestration",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":38},"01M6Q0ETK41VGNMYEXW0T00AJN","youtube-transcript","Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-transcript\u002FSKILL.md",[],[129,130,131,132,25,26,133,28,29,134,135,136,137,30,31,33,138,139,140,141],"transcript","youtube transcript","youtube","safe","research","text","fetch","tooling","clean","output","deepapi","youtube transcripts","blob",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":159,"publishedAt":38},"01M6Q0EPPH2PVMDW40017F8WX0","youtube-transcript-skills","Fetch YouTube video transcripts, search videos\u002Fchannels, browse channels, and extract playlists via the getyoutubetranscript.com API - free tier, no card required.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-transcript-skills\u002FSKILL.md",[148,151,154],{"categoryNo":149,"categoryName":150,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":152,"categoryName":153,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":155,"categoryName":156,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[129,130,131,160,132,161,25,26,28,162,163,164,165,135,166,30,31,167,168,169],"youtube transcript skills","gemini","search","api","Video","browse","api-integration","free","card","channels",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":180,"publishedAt":38},"01M6Q0EAB96PX83W5PTE8A0R8D","youtube-notetaker","Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-notetaker\u002FSKILL.md",[176,179],{"categoryNo":177,"categoryName":178,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":152,"categoryName":153,"taxonomyType":20,"taxonomyTypeDesc":21},[131,181,182,109,132,183,184,185,186,28,164,187,188,189,190,31,191,33,192,193],"youtube notetaker","notetaker","workflow","official","notes","code","markdown","slides","annotations","README","study","dair-academy","viewer",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":201,"publishedAt":38},"01M6Q0E55F0GW5MX48V8HXS8B5","youtube-full","Fetch YouTube transcripts, search videos, browse channels, and extract playlists via TranscriptAPI — no yt-dlp, no Google API key, works from any cloud server.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-full\u002FSKILL.md",[200],{"categoryNo":149,"categoryName":150,"taxonomyType":20,"taxonomyTypeDesc":21},[202,131,203,204,132,161,162,205,206,163,164,165,135,207,166,30,31,167,208,140],"youtube full","full","google","server","dlp","credits","automatic"]