| name | make |
| description | 当用户要求生成、搭建、创建或实现具体项目、功能、脚本或配置,或说“make”“生成代码”、
“构建项目”“做一个 xxx”时使用。
|
| metadata | {"openclaw":{"emoji":"🛠️"}} |
make — 项目生成技能(聚合编排其他技能)
执行前置
遵循当前目录 AGENTS.md「技能执行公共契约」;仅按需读取技能正文与 reference。
生成对象为用户指定的项目。本技能不重复发明流程,而是编排调用本目录下的全部技能
(init/tag/debug/optim/diff/analy/test),按"解析需求 → 调查规划 → 实现 → 测试 → 优化 →
复查 → 归档 → 打标"的全流程推进;其细节要求即本目录所有技能的汇总,执行时逐项落实。
核心原则(本目录所有技能要求汇总)
- 先解析需求,不臆断:生成对象、范围、约束、通过标准不明确时先提问(test/optim/debug 先问对问题);
所有问题在第一次交互一次性全部提出(编号列表),用户一次回答,不逐次追问。
- 两阶段执行与范围先行:先明确生成对象与比较范围,再只读调查产出计划表(阶段 A),
确认后统一执行写操作(阶段 B);不臆断目标(init/diff)。
- 证据驱动:一切结论与统计数字实测(debug/optim/diff/analy/test);不编造文件、API、数据或收益。
- 最小改动:只改必要处,遵循代码库既有约定;修复与重构、优化与功能改动分离(debug/optim)。
- 验证闭环:生成后必须测试——失败按 debug 方法论循环修复,全部通过按 optim 方法论循环优化,
每轮优化后回归全部测试(test)。
- 不变量校验:以量纲/守恒律/边界情形(空输入、0、越界、退化)校验结论(debug/test 复查)。
- 幂等:已生成/已归档内容不再重复处理;重复运行应输出"无变更"(init)。
- 循环尝试直至成功:一次失败不停止——基于新证据重新分析、优化方案后再执行,
直至成功或用户终止;每次迭代更新终端摘要与计划状态(所有技能)。
- 诚实、安全与可追溯:不确定就问;不越界访问;改动按公共 Git 契约检查,未经明确要求不自动提交或推送;触及系统配置前先说明;
分析/报告类结论附
文件:行号 参考源(analy)。
触发时机
- 用户要求生成项目:"make"、"生成项目"、"搭建项目"、"构建项目"、"做一个xxx"、
"生成xxx"(xxx 为脚本/配置/文档/代码/报告)
- 用户指定生成对象:"生成 bin/xxx.sh"、"给 xxx 仓库做一个 agent.sh"、
"生成上次分析的 PDF 报告"、"实现 xxx 功能"
- 与其他技能配合:生成内容为 agent 产出 → init 归集 skill;生成过程报错 → debug;
性能不足 → optim;生成后打标签 → tag;生成后查看改动 → diff;分析类项目 → analy;
生成完成后验证 → test;多步骤任务先规划 → plan;优化 skill 自身 → skill-creator;
需求模糊 → brainstorm;实现先测试 → tdd;审查改动质量 → review;skill 库升级 → up;
多独立子任务(多文件调查/多用例测试)→ dispatch 并行派发
技能编排矩阵(自行调用本目录其他技能)
| 阶段 | 调用技能 | 关键要求(落实细则) |
|---|
| 调查与规划 | init(两阶段)、diff(先定范围)、analy(全库调查)、plan(复杂任务计划)、dispatch(多目录/多文件并行调查) | 阶段 A 只读调查;计划表确认后进入阶段 B;复杂任务先用 plan 编写实现计划;多独立调查域并行派发 |
| 实现 | (本技能直接执行) | 最小改动、既有约定、bash -n/lint/typecheck |
| 测试 | test、dispatch(多用例并行验证) | 先定通过标准;证据驱动;中间结果落盘 test_out/;失败转 debug;独立用例可并行 |
| 修复 | debug | 先复现→证据→二分→不变量→最小修复→回归,循环至成功 |
| 优化 | optim | 先测量基线→主导项→最小改动→回归全部测试,不虚报收益 |
| 分析报告 | analy | 结论附 文件:行号;\lstinputlisting 直引原文件;编译 PDF 到 docs/ |
| 复查 | diff | 只读概览(--stat)→详情;边界校验(冲突标记/调试残留/未跟踪/二进制/重命名) |
| 归档 | init | agent 生成内容 → 完整 skill 归集到本库根 .opencode/skills/;AGENTS.md 维护 |
| 打标 | tag | 先看后打;注释标签;消息格式 follow <前标签>, 1. ...; [opencode].;远程同步须获授权 |
工作流程
Step 1. 解析生成对象(先问对问题)
收集并确认(缺项先提问,不臆断;所有问题在第一次交互一次性全部提出,用户一次回答,不逐次追问):
| 信息项 | 说明 |
|---|
| 生成对象 | 用户指定的项目/脚本/配置/文档,名称与目标位置 |
| 项目类型 | 脚本(shell/python/...)、配置、文档(LaTeX/Markdown)、分析报告、完整项目 |
| 功能需求 | 期望行为、输入输出、边界情形 |
| 通过标准 | 如何判定"生成成功"(预期输出/数值容差/行为断言) |
| 约束 | 语言/工具链、设备(GPU/CPU)、精度、兼容范围、性能目标 |
输出一句任务定义(如"生成对象:bin/agent.sh(shell 启动器,实现 Git 检查点与输入清单读取)")
并在终端摘要中说明,避免歧义。
Step 2. 环境与基线调查(阶段 A,只读,不改任何文件)
git rev-parse --is-inside-work-tree && git rev-parse --abbrev-ref HEAD && git log -1 --oneline
git status --short
find . -type f -not -path "./.git/*" -not -path "*/node_modules/*" \
-not -path "*/__pycache__/*" -not -path "./tmp/*" | sort
- 既有约定:阅读仓库/目录的
AGENTS.md(确切命令、目录结构、入口点、框架怪癖、测试方式);
参考同目录既有代码的风格与命名(init 参考先于归档,analy 全库索引)。
- 参考知识库(analy 默认引入):git 家目录下
docs/books/refer 等参考目录存在即
建索引,主题相关时检索并入证据链;不存在则注明"未引入"。
- 确认目标位置:生成对象位置须在当前工作目录范围内;越界路径先向用户确认,不越界访问。
- 调查结果在终端摘要中说明(目录结构、约定要点、知识库覆盖)。
Step 3. 规划与确认(dry-run 计划表)
- 输出生成计划表:拟新建/修改的文件清单(路径 + 内容要点)、调用的技能阶段、
通过标准;默认 dry-run 不写任何文件。
- 用户确认后进入阶段 B;用户明确"直接执行"/"apply" 时跳过确认(init 运行模式)。
- 计划表在终端摘要中说明。
计划表质量要求(writing-plans 吸收):
- 任务粒度可独立验证:每个计划任务是一个自含的完成单元——有自己的测试周期、
可独立验证的交付物("写失败测试→运行确认失败→实现→运行确认通过→交付检查"一步一动作);
配置/脚手架/文档类步骤并入其交付物所属任务,不单列空任务。
- 无占位符:禁止 "TBD"、"TODO"、"实现细节后补"、"类似任务 N"(代码必须写全,
读者可能跳序阅读);给出确切文件路径、接口签名、预期输出。
- 覆盖检查:计划完成后对照需求/规格逐条核对——每条需求都能指向一个任务;
有需求无任务的补任务。
- 一致性检查:跨任务的函数名/接口签名/命名前后一致(Task 3 用
clearLayers()
Task 7 用 clearFullLayers() 即计划 bug)。
Step 4. 实现(阶段 B,最小改动)
- 按计划逐文件生成/修改;遵循既有约定(命令、风格、目录结构、命名);
- 一次只专注当前任务,不擅自扩大范围;修复与重构分离;
- 生成代码时的中间变量自行计算并保存(test 要求,可落盘
test_out/intermediate/ 或项目产物目录);
- 语法/静态校验:shell 脚本
bash -n <脚本>;Python python -m py_compile;
有 lint/typecheck 框架则必须运行(debug/test 验证闭环要求);
- 新增内容为 agent 生成(本技能产物即符合)→ 按 init 要求登记:
完成后将生成此类内容的完整 skill 归集到本库根(git 家目录)
.opencode/skills/;
- 触及系统配置(PATH、rc 文件、全局配置)前先说明意图与回滚方式,经用户同意后执行。
Step 5. 测试验证(调用 test 方法论)
- 先定通过标准:逐项预期输出/数值容差/行为断言,形成测试计划表在终端摘要中说明;
- 逐项执行:记录触发命令、实际输出(过长截断并注明)、退出码
exit=N,判定通过/失败/跳过;
- 中间变量与最终结果、图表落盘
test_out/(intermediate/、results/、figures/),
记录 dtype/设备标注;
- 失败项 → 按 debug 方法论循环:复现→证据定位→二分收敛→不变量校验→最小修复→
原复现路径回归→跑全部测试;每次迭代更新终端摘要;
- 数值类项目注意设备切换(CUDA GPU 优先、CPU 回退、NPU 经确认)与多精度切换
(默认 fp32,可 fp64/fp16),数据读写间显式管理精度转换(astype + 相对容差)。
Step 6. 优化循环(调用 optim 方法论,可选)
全部测试通过后审视优化空间:
- 测量基线(3–5 次取中位数,记录原始值序列);复杂度/调用开销/IO/启动主导项分析;
- 只优化主导项;最小改动;正确性优先(优化不得改变对外行为);
- 改动后先回归全部测试,再复测对比;收益量化如实记录,不虚报;
- 循环直至目标达成、收益微小或用户终止;每次迭代更新终端摘要。
Step 7. 分析报告(调用 analy 方法论,可选)
用户要求或项目为分析/文档类时:
- 结论附参考源
文件:行号;代码片段用 \lstinputlisting 直引原文件(不转写);
- LaTeX(中文用 ctex+xelatex)编译 PDF 到当前工作目录
docs/,
命名 analy_<slug>_<YYYYMMDD>.pdf;依据编译退出码和终端错误重试。
Step 8. 收尾(diff + init + tag)
- 改动复查(diff):先概览(
git diff --stat / --numstat)后详情(逐文件),
边界校验:冲突标记(git diff --check)、调试残留、未跟踪文件(git status 中 ??)、
二进制/大文件、重命名(git diff -M)、权限位(--summary);
- skill 归集(init):本技能生成的 agent 内容对应的完整 skill
(即 make 技能自身或更专门的生成技能)复制归集到本库根
.opencode/skills/<name>/;
更新相关 AGENTS.md(技能表登记);
- 版本标签(tag,用户要求时):先看后打——分析基线以来变更,构建诚实分组变更清单;
注释标签消息格式
follow <前一标签>, 1. 变更一; 2. 变更二; [opencode].;
远程同步须获明确授权;类型按上下文推断(无信号默认 dev);
破坏性操作(删除/改写已推送标签)先警告再执行;
- Git 检查:按公共契约执行检查;不自动暂存、提交或推送;无 Git 或无改动立即跳过。
Step 9. 总结(结构化输出)
✓ make 完成
任务: <生成对象任务定义>
改动: <新建 N / 修改 M 文件,统计>
测试: <N 项通过 M 失败 K(跳过 S: 原因)>
debug: <N 次迭代>(修复: 文件:行号 <说明>,无则省略)
optim: <N 次迭代>(基线 → 优化后,收益量化,无则省略)
产物: <产物路径与格式,如 test_out/、docs/xxx.pdf>
归档: <skill 归集/AGENTS.md 更新,无则省略>
标签: <tag 创建与推送结果,无则省略>
Git: <git diff --check 与定向复查结果;无 Git 或无改动则跳过>
遗留: <未覆盖项/待确认项,无则省略>
错误处理
| 场景 | 处理 |
|---|
| 生成对象不明确 | 一次性列出全部候选(项目类型/位置/功能)提问确认,不逐次追问 |
| 目标位置越界(工作目录外) | 先向用户确认路径与访问权限,不越界访问 |
| 需求含糊(无通过标准) | 一次性列出全部候选(预期行为/判定标准)提问确认 |
| 生成后测试失败 | 按 debug 循环(复现→定位→最小修复→回归),循环直至成功或用户终止 |
| 多次 debug 迭代仍失败 | 检查证据是否不足或方向错误;向用户报告进展与下一步,不无限循环 |
| 优化收益微小 | 报告权衡(复杂度 vs 收益),由用户决定取舍 |
| 无测试框架 | 纯 shell 至少 bash -n + 原复现路径手动回归 |
| 无 LaTeX 工具链(需报告) | 报告缺项并提供安装建议,不静默跳过 |
| 生成内容为 agent 产出 | 按 init 要求归集完整 skill 到本库根 .opencode/skills/ |
| 打标签失败/推送失败 | 按 tag 技能定位重试(循环),重试仍失败暂停并报告 |
| 计划未确认即要求执行 | dry-run 默认不写文件;执行前展示计划表并获确认(除非明确 "apply") |
| 幂等性校验 | 重复运行同一生成任务应输出"无变更"或明确跳过已处理项 |
注意事项
- 生成全程遵循本目录所有技能的公共约定;关键事件、命令与退出码在终端摘要中说明;
- 以实测为准,不虚报通过/失败与收益;不编造文件、API、行号与数据;
- 不越界访问工作目录之外的内容;触及系统配置前先说明意图与回滚方式;