@nathan33/nao-skill 0.20.3 → 0.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -63,7 +63,7 @@ description: PM 交付核对清单(按需,交付/派发前读取)
63
63
  - [ ] 输出里有 `warn`/`error`/`pending approval`/`N vulnerabilities` 却判完成,或遗留项未走三出口(「先放着」不算出口)?(见 @.agents/skills/task-completion.md)
64
64
  - [ ] 降级(无 `gh` / 无远端)未在 `tasks-state` 与回执中标注?
65
65
 
66
- ## 交付检查清单(完整 43 项)
66
+ ## 交付检查清单(完整 44 项)
67
67
 
68
68
  - [ ] 目标/边界/验收三件事齐备
69
69
  - [ ] 证据 + 5 Whys 已产出
@@ -107,6 +107,7 @@ description: PM 交付核对清单(按需,交付/派发前读取)
107
107
  - [ ] `gh` 可用则已用 `gh`,降级已注明;发布后事实(含 `tasks-state` 版本/Tag 行)的**落地时机与工作区纪律见 `github-flow.md` BR5**(单源指针,本清单不复写命令细节)
108
108
  - [ ] 任务 DoD 四类已随**开工确认卡**逐任务实例化(产物路径 / 可执行验证判据 / 遗留项 / 交接),验收按同一份核
109
109
  - [ ] 回执含 `遗留:` 字段且遗留项已**三出口**收口(关闭 / 接受含到期日 / 转办;零遗留显式「无」,可执行项已进 `tasks-state` 待派发队列)
110
+ - [ ] **计数类数字必须 PM 自证一条命令** —— 用例数 `bash tests/t4/run.sh --list | tail -n +2 | wc -l`(**`--list` 首行是表头**,裸 `wc -l` = 19 会多算 1 —— 这条命令本身也已实测校准)· 断言数(run.sh 汇总 PASS 数或 `grep -c '\[PASS\]'`)· `files=` 口径(`check` 输出 vs `find "$NAO_SKILLS/.agents" -type f | wc -l`);**回执与命令输出不一致时以命令为准**,并当场订正回执/文档(来源:L1 复盘 `docs/reports/2026-11-01-T536-retro.md`)
110
111
  - [ ] 通过上面全部红线
111
112
 
112
113
  ## 会话回收 / 收窗核对(验收通过后 / 手工关窗前)
@@ -20,7 +20,7 @@ description: 测试工程师交付核对清单(按需,交付前读取)
20
20
  - [ ] 只测主路径,无异常/边界覆盖?
21
21
  - [ ] 未 Verify 就关闭缺陷?
22
22
  - [ ] 定位被测代码/受影响测试未走三段阶梯:原生入口 `codegraph_explore`(需插件 + CLI + 索引齐备)→ CLI → `grep -rn` + 行段(口径见 @.agents/skills/codegraph.md)?(回退 grep 需注明原因)
23
- - [ ] 未跑**全范围门禁**(不是子目录)并回执精确数字?(PM 不重复跑,回执数字即验收唯一依据;全范围口径见项目 `AGENTS.md`)
23
+ - [ ] 未跑**全范围门禁**(不是子目录)并回执精确数字?(PM 不重复跑,回执数字即验收唯一依据;全范围口径见项目 `AGENTS.md`;**计数类数字(例数/文件数/断言数)口径单源见 `tests/README.md`「计数可见」**,不以最大编号推断)
24
24
  - [ ] 视觉/UI 呈现类验证启动了浏览器自动化(无头浏览器/截图对比)?(应产出用户验收清单交用户人工,见 skills/test-design.md「视觉/UI 呈现验证」)
25
25
  - [ ] 含 UI 呈现的交付未产出用户验收清单(测什么/怎么操作/预期结果/对应 AC)?
26
26
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  description: 产品经理角色 Prompt(短常驻)——需求分析/PRD/优先级/验收/多会话调度
3
3
  role: pm
4
- version: 30
5
- updated: 2026-10-31
4
+ version: 31
5
+ updated: 2026-11-01
6
6
  ---
7
7
 
8
8
  # 产品经理(PM)
@@ -106,7 +106,8 @@ updated: 2026-10-31
106
106
  - [ ] 输出里有 `warn`/`error`/`pending approval`/`N vulnerabilities` 却判完成?(`exit 0` ≠ 完成,见 @.agents/skills/task-completion.md §三)
107
107
  - [ ] 降级(无 `gh` / 无远端)未在 `tasks-state` 与回执中标注?
108
108
 
109
- > 完整红线(34 项)与交付检查清单(43 项):**交付/派发前**读取 @.agents/checklists/pm.md 逐项核对。
109
+ > 完整红线(34 项)与交付检查清单(**44 项**):**交付/派发前**读取 @.agents/checklists/pm.md 逐项核对。
110
+ > **计数类数字(用例数 / 断言数 / `files=`)必须 PM 自证一条命令**:判据与命令单源在清单该条,本卡不复写。
110
111
 
111
112
  ## 十一、交付检查清单
112
113
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  description: 测试工程师角色 Prompt(短常驻)——策略/用例/缺陷/质量保障
3
3
  role: qa
4
- version: 15
5
- updated: 2026-10-28
4
+ version: 16
5
+ updated: 2026-11-01
6
6
  ---
7
7
 
8
8
  # 测试工程师(QA)
@@ -64,7 +64,7 @@ DDD 分层对齐(简):
64
64
  - **评审参与**:需求评审确认可测性(数据口径/埋点/边界)。
65
65
  - **接缝确认 = QA 在 PRD 阶段的输入**:PM 列验证接缝候选(理想 1 个、优先复用、能高不高低)→ QA 确认或修正(可改为更高/更少)→ PM 写入 PRD「AC」首行;用例按确认后的接缝组织(流程见 @.agents/skills/pm-to-spec.md,用例设计见 @.agents/skills/test-design.md)。
66
66
  - **缺陷闭环联动**:指派明确、信息完整,避免"环境问题/数据问题"推诿。缺陷**全量入库**,落点见 @.agents/skills/test-design.md「缺陷管理」(`docs/reports/<编号>-defects.md` 或项目约定缺陷平台)。
67
- - **PR 验证**:在 PR 评论贴**全量门禁精确数字**(命令 + exit code + 文件数/例数/红数)与预览环境结论;**PM 验收通过前不得以"测试已过"为由催促合并**(合并由 RD 在 PM 授权后执行)。
67
+ - **PR 验证**:在 PR 评论贴**全量门禁精确数字**(命令 + exit code + 文件数/例数/红数)与预览环境结论;**例数口径单源**在 `tests/README.md`「计数可见」——不以最大编号推断例数(编号不连续属正常);**PM 验收通过前不得以"测试已过"为由催促合并**(合并由 RD 在 PM 授权后执行)。
68
68
 
69
69
  ## 六、硬性红线
70
70
 
@@ -77,7 +77,7 @@ DDD 分层对齐(简):
77
77
  - [ ] 视觉/UI 呈现类验证启动了浏览器自动化(无头浏览器/截图对比)?(应产出用户验收清单交用户人工,见技能包)
78
78
  - [ ] 含 UI 呈现的交付未产出用户验收清单(测什么/怎么操作/预期结果/对应 AC)?
79
79
 
80
- > 完整红线(14 项)与交付检查清单(17 项):**交付前**读取 @.agents/checklists/qa.md 逐项核对。
80
+ > 完整红线(14 项)与交付检查清单(18 项):**交付前**读取 @.agents/checklists/qa.md 逐项核对。
81
81
 
82
82
  ## 七、交付检查清单
83
83
 
@@ -90,6 +90,8 @@ TMUX_MIN_PANE_WIDTH_DEFAULT=30
90
90
  TMUX_MIN_PANE_WIDTH="${NAO_TMUX_MIN_PANE_WIDTH:-$TMUX_MIN_PANE_WIDTH_DEFAULT}"
91
91
  # T517:派生宿主窗口 ID(归一化 @<window_id>;空 = 定位失败 ⇒ 该角色 pane warn+skip,禁无 -t 续建)
92
92
  HOST_WINDOW=""
93
+ # T536:本轮真正创建成功的 pane 数(>0 ⇒ ensure 收尾打印**恰一行**就绪提示;跳过/失败分支恒 0,BR3/AC4)
94
+ SPAWN_OK=0
93
95
  # check 输出契约:默认摘要 2 行(摘要行 + codegraph 状态行,四态之一),-v 展开完整报告(六态全展开);失败始终展开
94
96
  VERBOSE=false
95
97
  # close 的在跑 turn 判定(pi 默认状态行:Working (esc to interrupt) / Thinking... / Retrying / Compacting)
@@ -1057,6 +1059,7 @@ spawn_tmux() {
1057
1059
  warn " 已跳过该 pane,其余角色继续拉起;可放大窗口后重跑 ensure"
1058
1060
  return 0
1059
1061
  fi
1062
+ SPAWN_OK=$((SPAWN_OK + 1)) # T536:真创建成功才计数(就绪提示的唯一开关)
1060
1063
  apply_tmux_layout
1061
1064
  }
1062
1065
 
@@ -1082,7 +1085,12 @@ spawn_one() {
1082
1085
  inner="cd $(printf %q "$repo") && export CODEGRAPH_TELEMETRY=0 && exec pi --name $(printf %q "$name")"
1083
1086
  [[ -n "$model" ]] && inner+=" --model $(printf %q "$model")"
1084
1087
  inner+=" --append-system-prompt $(printf %q "$prompt_file")"
1085
- ( sleep 60; rm -f -- "$prompt_file" ) & disown 2>/dev/null || true
1088
+ # T536/BR2:后台清理必须**完全脱离调用方 fd**。原写法 `( sleep 60; … ) &` 让子 shell 继承调用方
1089
+ # stdout/stderr ⇒ 输出被 `| cat` / CI 捕获时调用方要等 EOF 到 60s 才返回(实测 60.3s vs 0.3s)。
1090
+ # `disown` 只脱离作业表,不关继承而来的 fd。⇒ ① 三路重定向到 /dev/null;② 改用独立 argv 的
1091
+ # `bash -c`(清理进程不再顶着本脚本 argv,`pgrep -f nao-fleet.sh` 无残留命中)。
1092
+ # 不用 setsid:macOS 无该 bin,`… || true` 会静默跳过清理(BR1 缩水)。清理窗口 60s 不缩短。
1093
+ bash -c 'sleep 60; rm -f -- "$1"' _ "$prompt_file" >/dev/null 2>&1 </dev/null & disown 2>/dev/null || true
1086
1094
 
1087
1095
  # 拉起(pane 级失败 = warn + 跳过该角色,D-A);成功后打印「已拉起」
1088
1096
  spawn_tmux "$name" "$inner"
@@ -1697,6 +1705,11 @@ cmd_ensure() {
1697
1705
  fi
1698
1706
  spawn_one "$disp" "$repo" "$model"
1699
1707
  done
1708
+ # T536/BR3/AC4:仅当本轮真拉起过 pane 才打印**恰一行**就绪提示;
1709
+ # 跳过(已在运行)/失败(无宿主窗口、分屏失败)分支不打印;既有行内容与顺序不变(只追加末尾一行)。
1710
+ if (( SPAWN_OK > 0 )); then
1711
+ log "已拉起 ${SPAWN_OK} 个会话;就绪后在线状态用 nao-fleet.sh status 查看"
1712
+ fi
1700
1713
  }
1701
1714
 
1702
1715
  # ---------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nathan33/nao-skill",
3
- "version": "0.20.3",
3
+ "version": "0.20.4",
4
4
  "description": "nao 多角色 AI 开发舰队:角色卡 / 技能 / 协作协议 / 工具链,一键接入项目(pi / Claude / 任意 Agent)",
5
5
  "type": "module",
6
6
  "bin": {