From 707a6f1ef1b5835a7163ed5b96fb1cc8dfbc3bca Mon Sep 17 00:00:00 2001 From: --global <--global> Date: Fri, 2 Oct 2026 01:00:09 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(skills=5Flinker):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E9=94=AE=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 ++- skills_linker.bat | 424 ++++++++++++++++++++++++++++++++++++++++++++++ skills_linker.sh | 0 3 files changed, 445 insertions(+), 3 deletions(-) create mode 100644 skills_linker.bat mode change 100755 => 100644 skills_linker.sh diff --git a/README.md b/README.md index 318e516..48b3fe1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ - 🧩 **开箱即用**:每个技能自带完整提示词(`SKILL.md`)与接口策略(`agents/openai.yaml`),复制即用、无需额外依赖。 - 🗂️ **分层分类**:按「开发与规范 → 测试与修复 → 交付与部署 → 全自动化」四层递进组织,形成完整质量闭环。 - 🔗 **技能互链**:技能之间通过 `/技能名` 相互调用(如 `ci-cd-pipeline` 可串联 13 个子技能),可组装成自动化流水线。 -- 🚀 **一键安装**:`skills_linker.sh` 将分类目录下全部技能软链接到 `~/.agents/skills/`,全局可用。 +- 🚀 **一键安装**:`skills_linker.sh`(Linux / macOS)与 `skills_linker.bat`(Windows)将分类目录下全部技能链接到 `~/.agents/skills/`,全局可用。 - 📊 **可观测可审计**:每个技能输出带时间戳的结构化 Markdown 报告(`*_.md`),全程留痕、便于审计。 - 🛡️ **安全优先**:内置强制安全规则——生产环境保护、敏感信息脱敏、最小权限、人工确认点。 @@ -43,7 +43,8 @@ ```text AgentSkills/ -├── skills_linker.sh # 一键安装脚本(软链接到 ~/.agents/skills/) +├── skills_linker.sh # 一键安装脚本 Linux/macOS(软链接到 ~/.agents/skills/) +├── skills_linker.bat # 一键安装脚本 Windows(junction / 符号链接) ├── README.md # 项目说明(本文件) ├── development-and-standards/ # ① 开发与规范(6 个技能) │ ├── readme-generator/ # README 生成器 @@ -115,6 +116,23 @@ chmod +x skills_linker.sh > > `skills_linker.sh` 会跳过指向不同目标的同名已存在链接(打印警告),不会覆盖非符号链接目录,可安全重复执行。 +#### 🪟 Windows + +在仓库根目录双击 `skills_linker.bat`,或在 cmd / PowerShell 中执行: + +```bat +skills_linker.bat :: 链接全部技能(默认目标 %USERPROFILE%\.agents\skills) +skills_linker.bat /n :: 预演,只打印计划,不写入不删除 +skills_linker.bat /u :: 卸载,只删除指向本仓库的链接 +skills_linker.bat /? :: 查看全部选项 +``` + +> [!NOTE] +> +> Windows 版优先使用目录联接(junction),无需管理员权限或开发者模式;不可用时自动回退到符号链接,网络路径请用 `/c` 复制模式。已存在且指向同一技能会跳过、指向别处会替换、同名普通目录只告警不覆盖,同样可安全重复执行。 +> +> 脚本输出为纯 ASCII 英文:cmd.exe 按**当前控制台代码页**解码批处理文件,中文 Windows 的 936 控制台(含资源管理器双击)与 PowerShell 7 的 65001 控制台无法用同一份非 ASCII 字节同时正确显示,而纯 ASCII 在任何代码页下都一致。 + ### 3️⃣ 在 Agent 中调用 在支持 Skills 的 AI 编码工具(如 Claude Code、VS Code Copilot Chat 等)中,直接以技能名唤起即可,例如 `/blackbox-tester`、`/ci-cd-pipeline`。 @@ -247,7 +265,7 @@ flowchart LR 1. 每个技能放在对应分类目录下,包含 `SKILL.md` 与 `agents/openai.yaml`。 2. `SKILL.md` 至少包含:角色与描述、工作流程、行为准则、输出格式。 3. 涉及破坏性或副作用操作的技能,务必在 `openai.yaml` 中设置 `require_confirmation: true`。 -4. 新增技能后,可运行 `./skills_linker.sh` 验证安装脚本兼容性。 +4. 新增技能后,可运行 `./skills_linker.sh`(Windows 上运行 `skills_linker.bat /n` 预演)验证安装脚本兼容性。 diff --git a/skills_linker.bat b/skills_linker.bat new file mode 100644 index 0000000..90c7ac5 --- /dev/null +++ b/skills_linker.bat @@ -0,0 +1,424 @@ +@echo off +rem =========================================================================== +rem AgentSkills - skills linker for Windows (cmd / .bat version) +rem --------------------------------------------------------------------------- +rem This file is deliberately PURE ASCII, UTF-8/ANSI agnostic, CRLF endings. +rem +rem Why: cmd.exe decodes a batch file with the *current console code page*. +rem A 936 (Simplified-Chinese / Explorer double click) console and a 65001 +rem (PowerShell 7) console decode the same non-ASCII bytes differently, and +rem switching the code page inside a batch file (chcp) can desynchronise cmd's +rem parser so that it executes comment text. A pure ASCII file has no such +rem ambiguity: every byte means the same thing under every code page, and the +rem output renders identically everywhere. Keep it ASCII when editing. +rem =========================================================================== +setlocal EnableExtensions DisableDelayedExpansion + +rem =========================================================================== +rem AgentSkills skills linker (Windows) - the counterpart of skills_linker.sh +rem +rem What it does: scans \\ two levels below this +rem script and links every skill directory into the global skills directory +rem (default %USERPROFILE%\.agents\skills) so every project can use them. +rem How it links: a directory junction first (no admin rights, no developer +rem mode needed), falling back to a directory symlink (mklink /D). Use +rem /c (copy mode) when links are not usable, e.g. on a network path. +rem Safety: it only adds or removes the links themselves inside the target +rem directory - it never enters or deletes the content behind a link, and it +rem never overwrites a real directory that happens to share a skill name. +rem =========================================================================== + +set "EXITCODE=0" +set "ROOT=%~dp0" +if "%ROOT:~-1%"=="\" set "ROOT=%ROOT:~0,-1%" +if "%ROOT:~-1%"==":" set "ROOT=%ROOT%\" +set "TARGET=" +set "MODE=link" +set "DRYRUN=0" +set "PAUSE_AT_END=0" +set "TMPLIST=" +set /a N_LINKED=0 >nul +set /a N_REPLACED=0 >nul +set /a N_REMOVED=0 >nul +set /a N_COPIED=0 >nul +set /a N_SKIPPED=0 >nul +set /a N_WARN=0 >nul +set /a N_FAIL=0 >nul + +rem A double click starts us as: cmd /c ""