SuperAPI AI 工具集

generate-do-work

编程与开发

查看项目

更新于 10-15 10:35

技能介绍

用途

Generate Do-Work 用于为当前代码仓库自动生成一份定制化的 "do-work" 技能。它基于模板 templates/do-work.template.md(相对于本技能)进行脚手架生成,最终把解析后的内容写入仓库根目录的 .claude/skills/do-work/SKILL.md。

主要能力

该技能的核心是自动检测仓库的具体情况,而不是向用户询问可推断的信息。检测内容包括:

  • REPO_NAME:通过 git rev-parse --show-toplevel 获取 git 顶层目录的 basename。
  • 包管理器:根据锁文件判断,pnpm-lock.yaml→pnpm,yarn.lock→yarn,package-lock.json→npm,bun.lockb→bun。
  • monorepo 包:通过 pnpm-workspace.yaml 或 package.json#workspaces 列出包目录与名称。
  • lint / 类型检查 / 测试命令:从 package.json#scripts 中匹配 lint、lint:ts/typecheck、test 等键。
  • 语言规则:依据 tsconfig.json(strict、通过 type:module 判断 ESM)以及是否存在 .ts 文件。
  • 数据 sink:扫描队列/数据库使用情况(prisma、sqs、kafka),设置 {{SINK}},默认值为 "DB/queue"。
  • 提交钩子:检查 .husky/commit-msg、commitlint.config.、.commitlintrc。

检测时使用一次 git/文件批量操作,而非多次 Read 调用,优先读取 package.json、锁文件名、工作区配置以及 husky/commitlint 文件。

使用方式

工作流分为以下步骤:

  1. 自动检测仓库细节(如上所列)。
  2. 解析提交信息部分,分两种情况:
    • 存在 Husky + commitlint(例如 .husky/commit-msg 运行 commitlint 并从分支名自动前置 Jira 工单号):只生成 Conventional Commits 正文;设置 COMMIT_HOOK_NOTE 说明 commit-msg 钩子会自动从分支名前置 Jira 工单号,无需手动添加;设置 COMMIT_RULES_EXTRA 说明工单键由 husky 钩子从分支名添加,若分支无工单则手动前置 JIRA-1234:。
    • 无钩子:生成 Conventional Commits,并添加规则提示用户若团队使用 Jira 优先的历史,应手动前置 Jira 键(JIRA-1234: <type>(<scope>): ...)。通过采样 git log --oneline -30 中是否有 ^[A-Z]+-\d+ 前缀来判断是否为 Jira 优先。
  3. 填充模板中的占位符,包括 {{REPO_NAME}}、{{PACKAGES_NOUN}}、{{PACKAGES_LIST}}、{{PACKAGE_SINGULAR}}、{{PATTERNS_REF}}、{{LANG_RULES}}、{{SINK}}、{{FEEDBACK_COMMANDS}}、{{FEEDBACK_NOTES}}、{{COMMIT_HOOK_NOTE}}、{{COMMIT_RULES_EXTRA}}、{{SCOPE_HINT}}。要求不留下任何未解析的 {{...}},空占位符若导致行变空或悬空则删除该行。
  4. 仅确认缺口:若某些字段无法推断(如无测试脚本、lint 命令不明确),只把这些字段合并成一个批量问题询问用户,绝不重复询问已检测到的内容。
  5. 写入技能:将解析后的内容写入仓库根目录的 .claude/skills/do-work/SKILL.md(创建目录),使用 Write 工具而非 shell 重定向。随后报告检测值表格与输出路径,并提示用户运行 /do-work(若技能为会话加载,则需重启会话)。

适用场景

适用于需要为代码仓库快速生成标准化 "do-work" 技能的场景,尤其是使用 Claude 技能体系、希望基于仓库实际配置自动生成工作流说明的团队。对 monorepo 和单包仓库均适用。

限制与注意事项

  • 前端仓库:保留前端块,删除或弱化 TDD 循环。
  • 幂等性:重新生成会覆盖已有的 do-work 技能。
  • 模板路径相对于本技能,需确保模板存在。
  • 部分字段(如测试脚本、lint 命令)可能无法自动推断,此时需用户补充。
  • 关于收费、价格、平台支持等具体信息,资料中暂未提供。