@ duyquangnvx/ 痛苦
共享重播配置: Biome, tsconfig, lefthook and Ruff 预设和克洛德代码的lint-on-edit钩. Repo 扩展了预设, 并保留了自己文件中的覆盖; 包的 harness 命令设置,检查并升级. 发布软件包的回放 @duyquangnvx/release。 。 。 .
| 文件 | 这是什么 | 一个回扣用它作为 |
|---|---|---|
biome.preset.json | 材料和机械规则: any, (中文(简体) ), !, (中文(简体) ), enum, (中文(简体) ), console,嵌入式三角形,复杂度,文件长度,详尽无遗的开关 | "extends": ["@duyquangnvx/harness/biome"] |
tsconfig.strict.json | strict 加上它不给的支票 | "extends": ["@duyquangnvx/harness/tsconfig.strict.json"] |
lefthook.yml | 承诺前:Biome在已上演的文件中,然后 tsc --noEmit,两者来自 node_modules/.bin 在任何软件包管理器下 | extends: [node_modules/@duyquangnvx/harness/lefthook.yml] |
ruff.toml | Python 行长和规则选择 | extend = "node_modules/@duyquangnvx/harness/ruff.toml" |
lint-on-edit.mjs | 克劳德代码 PostToolUse 钩子:格式和指针 每个编辑的文件, 退出2手 剩下的Claude。 仅在 Repo 安装时运行 Biome, 仅在 Ruff 配置存在时运行 | 下面的命令 |
Biome预设是平的,因为一个文件Biome扩展不能再扩展另一个. 生化取光谱,没有 .json。 。 。 .
这个 harness 命令
| 命令 | 它会做什么 |
|---|---|
init | 设置重播 : 下级 |
doctor [--json] | 说,改变什么, 它运行的git repo是什么 和这个机器缺少或有后面, 每个有命令或线 修复它。 Repo:在npmjs上对最近的包,Biome在版本的包针上,每个配置扩展其预设,林特钩,左上钩,一个 AGENTS.md (单位:千美元) CLAUDE.md 进口它, 和旧的复制 - 任何东西都留下。 机器:规则链接在 ~/.claude/rules/harness,则 duyquangnvx 插件, 和Matt在标记此软件包名称时的技能 |
context [--json] | 说,改变什么, 克劳德代码在启动时在它运行的文件夹中加载什么, 并有一个粗略的符号数: 指令文件及其导入,规则(那些带有 paths: 技术和副剂说明 ~/.claude, (中文(简体) ), .claude 并启用插件。 它命名了两个已装入的文件, 以及从 repo 根上方装入的任何文件(ADR 0010 (英语)(中文(简体) ) |
upgrade | 添加数 @duyquangnvx/harness@latest 与Repo的软件包管理器,将Biome设定到它所标注的版本,并打印所改变的东西. Python 唯一回波运行 npx @duyquangnvx/harness@latest upgrade,它再次复制了钩子和 Ruff 配置;当运行的软件包落后于 npmjs 上的最新数据时,它拒绝 |
运行它 npx @duyquangnvx/harness <command> 在安装软件包之前,然后通过软件包管理器(pnpm exec harness doctor) (中文(简体) ). init 财务报告和审定财务报表 upgrade 拒绝写入未承诺的更改. harness <command> --help 有细节.
| 退出 | 含义 |
|---|---|
0 | 没什么好修的 |
1 | 使用错误 |
2 | 用于在 repo 或 机器 中修复的东西, 输出名称 |
70 | 错误 |
设置回购
npx @duyquangnvx/harness init
在一次追债中 package.json 和一个锁文件, init 添加软件包和工具其预设运行到 devDependencies 使用软件包管理器锁定文件名称, 制作 lefthook install 页:1 prepare 没有脚本时, 请拒绝左上角安装脚本为 下级,在下面的配置缺失时写出,并将钩子添加到 .claude/settings.json,指向一个开着旧副本的钩子 .claude/hooks/lint-on-edit.mjs 放在包裹里 无类型脚本的重播( 无) tsconfig.json,没有 typescript 软件包和无 .ts file git sees) 获得的既不是 typescript 也没有 tsconfig.json,以及 doctor 不要求一个 tsconfig.json。它从不重写 repo 已有的文件: 它打印文件需要的行并退出 2 .
在每一次重播中, Python -Only, init 写入 AGENTS.md 持有 ## Project status (绿地默认)和占位符 ## Commands, (中文(简体) ), ## Coding standards 财务报告和审定财务报表 ## Agent skills 各节,每节只写一个注释,说明属于何处,以及 CLAUDE.md 仅持有 @AGENTS.md,所以克劳德代码 和其他特工读一个文件。 A 类 CLAUDE.md 和它自己的内容 获得如何移动 AGENTS.md。 。 。 . doctor 检查一下 AGENTS.md 它只持有一个特工自己找不到的东西 所以命令 package.json 或读取器已经放弃.
通过手,同样的设置是:
pnpm add -D @duyquangnvx/harness lefthook typescript
pnpm add -D --save-exact @biomejs/[email protected]
biome.json中,在 extends数字 :
{
"$schema": "https://biomejs.dev/schemas/2.6.2/schema.json",
"extends": ["@duyquangnvx/harness/biome"]
}
tsconfig.json,在带有类型脚本的重播中:添加 "extends": ["@duyquangnvx/harness/tsconfig.strict.json"]。 。 。 .
lefthook.yml。任务按名称合并,如果两个文件都设置了密钥,则包的值将获得胜利,所以Repo会添加自己的任务,或者密钥,例如 root,除了包裹的:
extends:
- node_modules/@duyquangnvx/harness/lefthook.yml
工作运行工具 从repo's node_modules/.bin,所以预设在 npm 和 pnpm 下工作,从不获取缺失的工具. pnpm exec 在 npm repo 中失败,并且 npx 增加约半秒的工作,解决登记册上一个缺失的名字.
.claude/settings.json;在第一个安装包丢失之前,然后钩子退出 0:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "f=\"$CLAUDE_PROJECT_DIR/node_modules/@duyquangnvx/harness/lint-on-edit.mjs\"; [ -f \"$f\" ] || exit 0; node \"$f\""
}
]
}
]
}
}
旁边有 Python 的重播 package.json数字 : ruff.toml 持有 extend 线条上。 仅限Python的回放,无 package.json没有 node_modules显示 : init 复制钩子到 .claude/hooks/lint-on-edit.mjs 此配置为 .claude/harness.ruff.toml,添加 node "$CLAUDE_PROJECT_DIR/.claude/hooks/lint-on-edit.mjs" 作为钩入 .claude/settings.json,并撰写 ruff.toml 持有 extend = ".claude/harness.ruff.toml" 当雷波没有 Ruff 配置时; a ruff.toml, (中文(简体) ), .ruff.toml 或者说 pyproject.toml [tool.ruff] 它自己得到的行 代替打印.
在npm 12和pnpm 11下的基特钩
两个左撇子的 postinstall,这是用来安装 gi钩。 由npm 12.2.0,pnpm 11.8.0和左旋 2.2.2
- npm 12 安装软件包但离开
.git/hooks空出,警告脚本"没有被允许的脚本所覆盖". - pnpm 11 安装失败(
ERR_PNPM_IGNORED_BUILDS,退出 1 ,直到允许或拒绝建造. - 左旋二进制来自平台可选依赖性,运行时没有
postinstall。 。 。 .
因此repo安装了钩子本身,并否认了"左克"的脚本,在两者下都有效:
package.json数字 :"scripts": { "prepare": "lefthook install" },并在 npm 下"allowScripts": { "lefthook": false }。 。 。 .- 时间 :
pnpm-workspace.yaml持有allowBuilds:与lefthook: false。 。 。 .
lefthook install,以及 lefthook run,它首先同步了钩子,然后写到 repo 共享 .git/hooks:安装在任何工作树上,为所有人安装钩子.
一个 pnpm repo 也列出 '@duyquangnvx/harness' 下级 minimumReleaseAgeExclude 内 pnpm-workspace.yaml这样 upgrade 安装发售日,而不是一天后.
释放此软件包
它从这个文件夹中发布 @duyquangnvx/release. 对已建成的 dist/数字 : pnpm test 先盖起.