自动化与脚本
在 groove-work-compound…
当已有可分享的工作流学习,且项目配置了 groovebook 仓库时,可将其脱敏后以 PR 形式发布到共享 commons。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 groove-work-compou特定
解决思路
- 从 `.groove/index.md` 读取 `groovebook:`;如果不存在,退出并提示:`groovebook is not configured. Add 'groovebook: <owner>/<repo>' to .groove/index.md to enable.`
- 检查 `gh auth status`;如果未认证,退出并提示:`Not authenticated with GitHub. Run: gh auth login`
- 验证 groovebook 仓库可访问:`gh repo view <groovebook>`;如果失败,退出并给出清晰消息。
- 获取学习文本:如果提供了 $ARGUMENTS,以它作为起点;否则询问 "What's the learning you'd like to publish? (paste it or describe briefly)";再询问一句话摘要,用于 PR 标题和文件名 slug。
- 展示学习文本预览并询问:`Does this contain any repo-specific context to redact? (file paths, internal names, product names)`;如果是,帮助用户脱敏,将具体名称替换为通用描述;如果否,继续。
- 询问 topic(例如 `patterns`、`tools`、`anti-patterns`、`workflow`)和 skill area(例如 `compound`、`plan`、`review`、`daily`)。
- 生成 slug:将摘要转为小写,空格替换为连字符,去掉特殊字符,截断到 40 字符。构造:分支名 `learning/<YYYY-MM-DD>-<slug>`;文件路径 `learned/<topic>/<YYYY-MM-DD>-<slug>.md`。
- 如果尚未 fork groovebook 仓库,则 fork:`gh repo fork <groovebook> --clone=false`;如果 fork 已存在,静默跳过。
- 创建分支和文件:用 `gh api repos/<user-fork>/git/refs` 检查分支是否存在;如果存在,追加一个简短的唯一后缀。写入文件内容(见文件格式)并通过 `gh api` 提交;或者如果 `gh api` 方式太复杂,对 fork URL 使用 `git` 操作——优先选择更简单的路径。
- 打开 PR: ``` gh pr create --repo <groovebook> \ --title "<one-sentence summary>" \ --body "<formatted body>" \ --head "<fork-user>:<branch-name>" ```
- 打印 PR URL。
- 按学习文件格式写入:使用 YAML frontmatter: ```markdown --- date: YYYY-MM-DD topic: <topic> skill-area: <skill-area> source: groovebook-publish --- # <One-sentence summary> ## Context <What triggered this learning — what problem were you solving? Generic, no project specifics.> ## Learning <The insight itself — what to do, what to avoid, or what pattern works.> ## Groove skill area `<skill-area>` (e.g. `groove-work-compound`, `groove-work-plan`) ```
- 按 PR body 格式组织内容: ``` ## Summary <one-sentence summary> ## Context <what triggered this> ## Learning <the insight> ## Groove skill area `<skill-area>` --- *Published via groove-groovebook-publish* ```
- 确保 slug 可安全用作文件名:小写、仅连字符、无路径分隔符或特殊字符。如果分支已存在,追加 `-2`、`-3` 等,直到找到空闲名称。
- 确认学习已作为 PR 发布到 `<groovebook>` 仓库;PR 使用 groovebook PR 模板格式(Summary、Context、Learning、Groove skill area);文件位于 `learned/<topic>/<YYYY-MM-DD>-<slug>.md`;并向用户打印 PR URL。
适用边界 · 注意事项
- 没有在 `.groove/index.md` 中配置 `groovebook:`、未通过 `gh auth status` 认证,或 `gh repo view <groovebook>` 无法访问该仓库时,不要尝试发布。
- 学习文本包含项目专属名称、文件路径或内部标识符,且用户未明确确认要发布时,不要发布。
- fork 步骤因权限失败时,不要继续自动发布;应建议用户手动 fork 并将自己的 fork 设置为 `groovebook:` 值。