自动化与脚本
在维护 Just/justfile 任务自动化时…
适用于创建或修改 justfile、recipe、settings、modules 及 command-runner 工作流,并需匹配仓库现有 Just 版本与格式约定时。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在维护 Just/justfile 任务特定
解决思路
- 以匹配仓库已安装的 Just 版本和现有 justfile 约定为目标来创建可读的任务自动化。
- 编辑前先检查 `just --version`、现有 justfile/module 树和 `just --list`;已安装能力与现有语法优先于本技能示例。
- 保留仓库特有格式;不要用 `just --fmt` 重写 justfile;仅当仓库明确以内置格式化器为准时用 `just --fmt --check`;`just --dump` 只用于查看,不作为格式化来源。
- 定义多项字符串序列时,每项一行,使用带括号的拼接;每个非最后项保留尾部分隔符;不要合并成一个长字符串。三引号字符串只用于换行具有语义的值,不用于视觉换行。例如:`check-steps := ( "event-class-coverage " + "orphan-disposal " + "price-coverage" )`
- 编写 recipe 且涉及可执行前置条件、quiet/script echo 规则时,读取 `references/recipes.md`。
- 选择 shell 或编写脚本体(包括 macOS Bash 限制)时,读取 `references/inline-scripts.md`。
- 创建新的独立 justfile 时,使用用户的 section-banner 风格;已有仓库组织方式优先于此。
- 确定所请求 recipe 的行为、输入、输出、cwd、shell、环境、依赖和成功条件。
- 对版本敏感语法,使用已安装的手册(`just --help`、`just --man` 或 <https://just.systems/man/en/>);只读取与任务相关的参考。
- Recipes、参数、依赖、缓存:读取 `references/recipes.md`。
- Settings、dotenv、列表、模块:读取 `references/settings.md`。
- 表达式、函数、常量:读取 `references/syntax.md`。
- Shell 或 script recipes:读取 `references/inline-scripts.md`。
- Check/write、status、aliases、组织:读取 `references/patterns.md`。
- 做最小的 recipe 或 setting 改动;除非所请求设计需要且已安装版本支持,不要启用 unstable features。
- 用 `just --list` 或 `just --summary` 验证解析,然后执行最窄的安全 recipe 路径;对于改变状态的 recipe,先使用已有的 dry-run/check 模式或检查展开后的命令。
- 对于新的独立文件,优先按依赖声明、常量、公共 recipes、checks、私有 helpers 排序;当没有单一默认动作且已安装版本支持时,使用 `set default-list := true`。
- 仅在创建对应形态时加载 `examples/standalone.just` 和 `examples/devkit.just` 示例起点。
- 完成条件:justfile 可解析、所请求 recipe 行为正确、且有与副作用相称的执行或 dry-run 证据。
- 结束时输出 `### ✅ Just workflow ready`;如果有多个条目变更,输出紧凑的 recipe/alias/用途表;输出 `### 🧪 Verification` 并列出确切命令和结果。
- 保持确认提示、recipe 数据输出、编译器输出和 `just --list` 输出不带装饰;保留仓库自己的 banner vocabulary。
适用边界 · 注意事项
- 仓库没有安装 Just,或任务不是 Just/justfile 自动化。
- 仓库使用其他任务运行器或构建系统,或明确禁止修改 justfile 时。
- 仅想用内置格式化器统一重写现有 justfile 时(除非仓库明确以 `just --fmt` 为准)。