From 3da100f300b95a72e3754c1c2e7c0073f111e9ac Mon Sep 17 00:00:00 2001 From: Agent Skills Bot Date: Fri, 4 Sep 2026 07:46:37 +0000 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=20latest=20skill=20releases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dist-sync/versions.json | 1 + skills/init-workspace/SKILL.md | 73 +++++++++++++++++++ .../init-workspace/assets/AGENTS.template.md | 52 +++++++++++++ .../assets/CODINGRULES.template.md | 34 +++++++++ .../assets/project.code-workspace | 35 +++++++++ 5 files changed, 195 insertions(+) create mode 100644 skills/init-workspace/SKILL.md create mode 100644 skills/init-workspace/assets/AGENTS.template.md create mode 100644 skills/init-workspace/assets/CODINGRULES.template.md create mode 100644 skills/init-workspace/assets/project.code-workspace diff --git a/.dist-sync/versions.json b/.dist-sync/versions.json index 915ad05..de1e38e 100644 --- a/.dist-sync/versions.json +++ b/.dist-sync/versions.json @@ -2,6 +2,7 @@ "baimiao-table-ocr": "v1", "disk-master": "v1", "everything-file-search": "v1", + "init-workspace": "v1", "teach-me": "v2", "think-twice": "v3.1", "why-here": "v1" diff --git a/skills/init-workspace/SKILL.md b/skills/init-workspace/SKILL.md new file mode 100644 index 0000000..cf4cb2f --- /dev/null +++ b/skills/init-workspace/SKILL.md @@ -0,0 +1,73 @@ +--- +name: init-workspace +description: 初始化或补全个人执行工作区,搭目录脚手架、生成 AGENTS.md 与可选 CODINGRULES.md。仅在用户明确要求初始化或重构工作区时使用。 +disable-model-invocation: true +--- + +# Init Workspace + +为个人执行工作区搭脚手架并生成规则文件。工作区模式:一个目录同时容纳源码仓库、本地文档库(`docs/`)和参考库(`pkgs/`),由 `AGENTS.md` 承载工作区规则。生成的文件假定目标机器装有 `$think-twice`。 + +## Step 1 — 访谈 + +一轮问完,每题带默认值;已存在的工作区只问缺口: + +1. 目标目录:在哪个路径创建新工作区,或补全哪个已有目录 +2. 工作区名/项目名(决定目录名与 `.code-workspace` 文件名) +3. 源码仓库:已有路径还是待克隆(待克隆的要拿远端 URL),一个还是多个 +4. Quick Context 内容:用户负责的模块、维护的上游库、需要防止误判的事项 +5. 是否生成 `CODINGRULES.md`(默认否) +6. 工作区是否需要 git 跟踪(默认否,有些工作区不需要) + +## Step 2 — 探测现状 + +检查:`AGENTS.md`、`CLAUDE.md`(是否已是可用的链接或 `@AGENTS.md` 桥)、`CODINGRULES.md`、`.agents/skills` 与 `.claude/skills` 的连接、`*.code-workspace`、PATH 上是否有 `just`、`think-twice` skill 是否可用(生成的文件引用它,不可用时提醒用户先安装)。 + +已有文件一律不覆盖:逐节给出保留/替换/新增提案,模板不认识的章节原样保留,用户确认后才写入。 + +## Step 3 — 目录脚手架 + +只创建缺失的部分: + +``` +-workspace/ +|- .agents/skills/ 真身目录 +|- .claude/skills Junction 指向 .agents/skills +|- docs/ 本地文档库(prd/ plans/ guides/ sop/ 按需) +|- / 源码仓库,可多个 +|- pkgs/ 参考库 +|- scripts/ 工作区脚本 +|- .gitignore 至少含 nul(Git Bash 下 > nul 会产生真实文件) +|- .code-workspace 从 assets/project.code-workspace 填充 +|- justfile 仅当 PATH 上有 just 时创建空骨架 +|- AGENTS.md, CLAUDE.md +``` + +- Windows 目录 Junction 不需要管理员权限:`New-Item -ItemType Junction -Path .claude\skills -Target <绝对路径>\.agents\skills` +- POSIX:`ln -s ../.agents/skills .claude/skills` +- `code-workspace` 的 folders:Workspace(`.`)+ 每个源码仓一个入口 + Docs;有独立入口的目录在 `files.exclude` 里对 Workspace 视图隐藏,从 [assets/project.code-workspace](assets/project.code-workspace) 填充 +- 访谈给到远端 URL 的待克隆仓库,克隆到对应目录;没有 URL 的只建空目录并记入 `docs/TODO.md` +- `docs/` 的子目录与生成的 `AGENTS.md` Workspace Docs 一节保持一致,并写一个最小的 `docs/README.md` 目录地图,不留悬空指针 +- `justfile` 骨架只需一条默认任务:`default:` 下接 `@just --list` + +## Step 4 — 生成规则文件 + +- `AGENTS.md`:复制 [assets/AGENTS.template.md](assets/AGENTS.template.md),填访谈槽位。未生成 `CODINGRULES.md` 时,整节删除 Coding Rules。 +- `CLAUDE.md` 桥:先尝试符号链接指向 `AGENTS.md`(Windows 需要管理员权限或开发者模式);失败则写只有一行 `@AGENTS.md` 的文件。已有可用桥不动。 +- `CODINGRULES.md`(访谈答是才生成):复制 [assets/CODINGRULES.template.md](assets/CODINGRULES.template.md),并保留 `AGENTS.md` 的 Coding Rules 指针节。 + +## Step 5 — git 跟踪(访谈答是才做) + +1. `git init` +2. `pkgs/.gitignore`:屏蔽全部,只放行 `.gitignore` 与 `README.md`;`pkgs/README.md` 维护参考仓名单 +3. 已存在的源码仓用 `git submodule add ` 登记;拿不到远端 URL 的仓记入 `docs/TODO.md`,不强行处理。`pkgs/README.md` 只维护参考仓名单 + +## Done when + +- [ ] 写入已有文件前得到过用户确认;全新空目录且用户明确说过不必再问时可直接执行。任何已有内容都没有被覆盖 +- [ ] 每条规则只存在于一个文件,`AGENTS.md` 与 `CODINGRULES.md` 无重复 +- [ ] `AGENTS.md` 里的指针都带触发条件和动作,不是裸文件名 +- [ ] commit 尾注规则在 `AGENTS.md`,不在 `CODINGRULES.md` +- [ ] `.claude/skills` Junction 解析成功;`code-workspace` 是合法 JSON +- [ ] 生成的文件不含 `<占位符>`、模板注释或未替换的示例行 +- [ ] `AGENTS.md` 不超过 200 行 diff --git a/skills/init-workspace/assets/AGENTS.template.md b/skills/init-workspace/assets/AGENTS.template.md new file mode 100644 index 0000000..6b9b1da --- /dev/null +++ b/skills/init-workspace/assets/AGENTS.template.md @@ -0,0 +1,52 @@ +# <工作区名> Workspace Guide + +这个工作区是 <谁> 进行 <项目> 工作时使用的个人执行目录。 + +## Quick Context + +- <用户> 主要负责 <模块> 相关内容。 +- 任务模块不明确时先确认或结合最近上下文判断,不要直接假设。 +- <上游库> 也是 <用户> 维护的库。问题疑似来自这些库时,先说明判断并询问是否去上游排查,不在业务仓库堆绕行补丁。 + +## Communication +- 默认中文;路径、命令、代码标识符、技术术语保留原文。 +- 描述工作时直接说动作和结果:做了什么、改了哪个文件、行为变化是什么;每个说法都能对应到具体的文件、命令或数据。 +- 结论先行;有取舍、风险或需要证据链时再补原因。 +- 如无特殊说明或指定,"文档"指工作区文档(`docs/` 与 `AGENTS.md`)。 + +## Workspace Docs + +- 处理需求、方案、review 或恢复上下文时,优先查看 `docs/README.md`、`docs/prd/`、`docs/plans/`、`docs/guides/`、`docs/sop/`。 +- 目录边界不用卡得太死,重点是快速找到信息并继续推进。 + +## Shell on Windows +- 临时文件放系统临时目录下的任务独立子目录,不在仓库里散落。 +- 路径含空格或中文时加引号。 +- Git Bash/MSYS2 下抑制输出用 `/dev/null`;`> nul` 会创建名为 `nul` 的真实文件,发现即删。 + +## Commits +- commit message 不加 `Co-Authored-By` 等 AI 署名 trailer,不加会话链接(如 claude.ai/code 的 session URL)。 + +## Design Check +- 实现或 review 中发现修复在叠加条件、状态同步、调用方绕行或特殊分支(patch-on-patch)时,回到模块边界、数据流、调用关系重新看问题,说明更干净的方向。 + +## Code Review +- findings 按 P0 到 Px 排序,P0.1 式细分可用。 +- 定级前 double-check;缺复现证据的低概率问题降级并标注不确定性。 +- 根据 diff、代码、测试和工作区文档反推修改意图或对应 PRD;推测标注为推测。 +- 提到路径、函数名时顺带说明这块是做什么的。 +- review 结论输出前用 `$think-twice` 做自包含、证据和表达检查。 + +## Output Quality +- 交付需要独立成立的文本(handoff、PR/issue 正文、文档)前,用 `$think-twice`。 + +## Coding Rules + +- 实现、修复或 review 代码前,先完整读取 @CODINGRULES.md 并遵循;宿主已自动加载其内容时不必重复读取。纯文档改动不适用。 + +## Structure + +- `/`: 源码仓库 +- `pkgs/`: 参考库,仅作补充上下文 +- `docs/`: 工作区文档、PRD、计划、SOP 与临时记录 +- `scripts/`: 工作区脚本 diff --git a/skills/init-workspace/assets/CODINGRULES.template.md b/skills/init-workspace/assets/CODINGRULES.template.md new file mode 100644 index 0000000..df21e00 --- /dev/null +++ b/skills/init-workspace/assets/CODINGRULES.template.md @@ -0,0 +1,34 @@ +# Coding Rules + +Bias toward caution over speed. For trivial tasks, use judgment. + +## Before coding + +- State assumptions explicitly. When interpretations genuinely diverge in + outcome, list them and let the user pick; otherwise state your assumption + and proceed. +- If you cannot form a workable assumption at all, stop and ask, naming + exactly what is confusing. Do not invent one to keep moving. +- If a simpler approach exists, say so. + +## Scope of change + +- Every changed line traces to the request, or to low-risk cleanup in the + same context; call out anything beyond that instead of doing it. +- Match existing style. Mention unrelated dead code; leave it in place. +- Remove imports/variables/functions that your change orphaned. + +## Simplicity + +- Minimum code that solves the problem. No speculative features, + abstractions, or configurability. +- Defensive handling only at untrusted boundaries: external input, network, + permissions, migration. + +## Verification + +- Define a verifiable success check before starting. Prefer a failing test + when reproduction is cheap; otherwise state how the change was verified. +- For multi-step tasks, keep a brief plan with a check per step. +- Documentation-only changes: read/diff self-check, and say tests were not + run. diff --git a/skills/init-workspace/assets/project.code-workspace b/skills/init-workspace/assets/project.code-workspace new file mode 100644 index 0000000..92e87fc --- /dev/null +++ b/skills/init-workspace/assets/project.code-workspace @@ -0,0 +1,35 @@ +{ + "folders": [ + { + "name": "Workspace", + "path": "." + }, + { + "name": "", + "path": "" + }, + { + "name": "Docs", + "path": "docs" + } + ], + "settings": { + "explorer.compactFolders": false, + "workbench.startupEditor": "none", + "files.exclude": { + "": true, + "docs": true, + "**/.DS_Store": true, + "**/node_modules": true, + "**/dist": true, + "**/build": true, + "CLAUDE.md": true, + ".claude/": true + }, + "search.exclude": { + "**/node_modules": true, + "**/dist": true, + "**/build": true + } + } +}