关于 dotfiles
dotfiles 是用于修改和发布由 chezmoi 管理的 seven7thirty3five5/dotfiles 仓库的技能。它引导仓库所有者检查同步状态、编辑和部署文件、运行验证,并跟踪提交后的工作流。
主要功能
- 01检查仓库所有权与同步状态
- 02编辑前阅读设计说明
- 03使用 chezmoi 部署改动
- 04运行 lint、shell 和安装检查
- 05提交、推送并监控工作流
适用场景
- 01修改受管理的配置文件
- 02将仓库改动应用到主目录
- 03发布前验证设置脚本
- 04发布 dotfiles 更新并检查工作流
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ seven7thirty3five5/ dotfiles --skill dotfiles安装后在 Claude Code 中输入/dotfiles确认已加载。
附带文件agents/openai.yaml
详细介绍
Dotfiles
根据用户的请求修改其 dotfiles:GitHub 仓库
seven7thirty3five5/dotfiles,
已克隆到 ~/.local/share/chezmoi。如果用户没有提出请求,询问需要修改什么。
每次运行都从同步状态开始,并以同步状态结束:git status 状态干净,本地 main 与
origin/main 一致,并且 chezmoi verify --exclude=scripts 通过,因此主目录与仓库相符。
1. 了解情况
- 确认这台机器用于发布 dotfiles,因为只有仓库所有者才能推送:运行
chezmoi execute-template '{{ .publishDotfiles }}'会输出true,git push --dry-run成功,并且gh auth status显示seven7thirty3five5是当前活动账号(gh 用于监看工作流)。 - 从同步状态开始。确认
git status状态干净,并且chezmoi verify --exclude=scripts通过后,chezmoi update会拉取并应用最新提交;之后main必须与origin/main一致。 - 阅读
README.md:其中的 Design 部分说明了此配置的工作原理,以及各类更改应放在哪里。然后阅读此次更改涉及的文件。对于每项使用的 chezmoi 功能,都要阅读 chezmoi 参考文档中的对应页面: https://www.chezmoi.io/reference/.
如果某项检查失败,或者机器未处于同步状态,请在编辑前停止,并向用户说明发现的问题:未提交的工作、已部署文件的编辑和未推送的提交都应由用户处理。完成标准:所有检查均通过,并且你能说清此次更改涉及的每项内容归谁所有。
2. 修改
编辑仓库中的文件:chezmoi apply 会部署这些文件,并覆盖在主目录中所做的编辑(chezmoi source-path FILE 会显示已部署文件对应的源文件路径)。确保所有更改在 macOS 和 Linux 上均可运行,也能在有 sudo 和无 sudo 的情况下运行。遵循 README 的 Design 部分和下方的注意事项;写作风格应与所编辑的文件一致:使用直白的注释解释每条命令、每个选项和模板函数的作用及原因,让刚接触该工具的读者也能看懂。
完成标准:git grep 在 README、注释或检查中找不到任何被此次更改弄得不再属实的内容。
3. 验证
python3 scripts/check-lint.py和python3 scripts/check-shell.py均通过。chezmoi diff只显示预期的更改,包括它将运行的设置脚本。然后运行chezmoi apply。
4. 发布
- 按照
git log中的风格提交。 sh scripts/check-install.sh通过;此脚本会检查已应用更改的机器,并要求工作树干净。- 推送,并监看推送提交上的每个工作流,直到其运行结束(
gh run watch);Bootstrap 大约需要十分钟。如果某个工作流失败,修复问题并再次发布。
完成标准:所有工作流均通过,且机器处于同步状态。报告更改内容,以及用户需要在其他机器上手动执行的操作。
注意事项
- 在这台机器上,chezmoi 会在运行检查前提交并推送它所做的每项源文件更改
(
chezmoi add、chezmoi edit)。请使用 chezmoi 的命名规则(dot_、private_、executable_、.tmpl)自行创建和编辑源文件。 - 当 chezmoi 停止管理某个文件时,它会在每台机器上保留该文件。
update会升级机器上的所有内容:只有在用户提出要求时才运行;并单独测试其中有更改的部分。