feat: skills - summarize auto-tmux worker results

This commit is contained in:
tukuaiai
2026-05-19 14:06:18 +08:00
parent 1a53248281
commit 52303a5565
11 changed files with 149 additions and 5 deletions
+3 -1
View File
@@ -22,6 +22,7 @@ skills/auto-tmux/
│ ├── swarm-export.sh
│ ├── swarm-timeline.sh
│ ├── swarm-blockers.sh
│ ├── swarm-results.sh
│ ├── swarm-report-pack.sh
│ ├── swarm-assign.sh
│ ├── swarm-health.sh
@@ -63,6 +64,7 @@ skills/auto-tmux/
- `scripts/swarm-export.sh` 是机器可读导出层,将任务、依赖和锁导出为 JSONL。
- `scripts/swarm-timeline.sh` 是状态时间线层,将 `status.log` 渲染为 Markdown。
- `scripts/swarm-blockers.sh` 是阻塞报告层,聚合 BLOCKED/FAIL、锁和异常状态。
- `scripts/swarm-results.sh` 是结果收敛层,汇总 DONE/FAIL/BLOCKED worker 结果。
- `scripts/swarm-report-pack.sh` 是报告包层,聚合多个只读报告与 JSONL 导出。
- `scripts/swarm-assign.sh` 是分配建议层,将 ready task 轮询映射到 worker pane。
- `scripts/swarm-health.sh` 是健康检查层,汇总 tmux 和 swarm state 的只读报告包。
@@ -82,4 +84,4 @@ skills/auto-tmux/
- 上游来源:`tools/external/.tmux``tools/external/tmux`
- 下游使用:`SKILL.md``references/` 中的命令示例。
- 验证入口:`skills/auto-skill/scripts/validate-skill.sh skills/auto-tmux --strict`
- 脚本验证:`skills/auto-tmux/scripts/validate-auto-tmux.sh``bash -n skills/auto-tmux/scripts/auto-tmux.sh``bash -n skills/auto-tmux/scripts/swarm-state.sh``bash -n skills/auto-tmux/scripts/swarm-brief.sh``bash -n skills/auto-tmux/scripts/swarm-watch.sh``bash -n skills/auto-tmux/scripts/swarm-archive.sh``bash -n skills/auto-tmux/scripts/swarm-board.sh``bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh``bash -n skills/auto-tmux/scripts/swarm-export.sh``bash -n skills/auto-tmux/scripts/swarm-timeline.sh``bash -n skills/auto-tmux/scripts/swarm-blockers.sh``bash -n skills/auto-tmux/scripts/swarm-report-pack.sh``bash -n skills/auto-tmux/scripts/swarm-assign.sh``bash -n skills/auto-tmux/scripts/swarm-health.sh``bash -n skills/auto-tmux/scripts/remote-readonly.sh``bash -n skills/auto-tmux/scripts/record-summary.sh``bash -n skills/auto-tmux/scripts/completion.bash``bash -n skills/auto-tmux/scripts/safety-check.sh``bash -n skills/auto-tmux/scripts/render-swarm-prompt.sh``bash -n skills/auto-tmux/scripts/swarm-dispatch.sh``skills/auto-tmux/scripts/auto-tmux-smoke-test.sh`
- 脚本验证:`skills/auto-tmux/scripts/validate-auto-tmux.sh``bash -n skills/auto-tmux/scripts/auto-tmux.sh``bash -n skills/auto-tmux/scripts/swarm-state.sh``bash -n skills/auto-tmux/scripts/swarm-brief.sh``bash -n skills/auto-tmux/scripts/swarm-watch.sh``bash -n skills/auto-tmux/scripts/swarm-archive.sh``bash -n skills/auto-tmux/scripts/swarm-board.sh``bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh``bash -n skills/auto-tmux/scripts/swarm-export.sh``bash -n skills/auto-tmux/scripts/swarm-timeline.sh``bash -n skills/auto-tmux/scripts/swarm-blockers.sh``bash -n skills/auto-tmux/scripts/swarm-results.sh``bash -n skills/auto-tmux/scripts/swarm-report-pack.sh``bash -n skills/auto-tmux/scripts/swarm-assign.sh``bash -n skills/auto-tmux/scripts/swarm-health.sh``bash -n skills/auto-tmux/scripts/remote-readonly.sh``bash -n skills/auto-tmux/scripts/record-summary.sh``bash -n skills/auto-tmux/scripts/completion.bash``bash -n skills/auto-tmux/scripts/safety-check.sh``bash -n skills/auto-tmux/scripts/render-swarm-prompt.sh``bash -n skills/auto-tmux/scripts/swarm-dispatch.sh``skills/auto-tmux/scripts/auto-tmux-smoke-test.sh`
+1
View File
@@ -29,6 +29,7 @@ bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh
bash -n skills/auto-tmux/scripts/swarm-export.sh
bash -n skills/auto-tmux/scripts/swarm-timeline.sh
bash -n skills/auto-tmux/scripts/swarm-blockers.sh
bash -n skills/auto-tmux/scripts/swarm-results.sh
bash -n skills/auto-tmux/scripts/swarm-report-pack.sh
bash -n skills/auto-tmux/scripts/swarm-assign.sh
bash -n skills/auto-tmux/scripts/swarm-health.sh
+4 -1
View File
@@ -43,6 +43,7 @@ bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh
bash -n skills/auto-tmux/scripts/swarm-export.sh
bash -n skills/auto-tmux/scripts/swarm-timeline.sh
bash -n skills/auto-tmux/scripts/swarm-blockers.sh
bash -n skills/auto-tmux/scripts/swarm-results.sh
bash -n skills/auto-tmux/scripts/swarm-report-pack.sh
bash -n skills/auto-tmux/scripts/swarm-assign.sh
bash -n skills/auto-tmux/scripts/swarm-health.sh
@@ -133,6 +134,7 @@ skills/auto-tmux/scripts/swarm-deps-graph.sh --dir /tmp/ai_swarm --out /tmp/ai-s
skills/auto-tmux/scripts/swarm-export.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-export
skills/auto-tmux/scripts/swarm-timeline.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-timeline.md
skills/auto-tmux/scripts/swarm-blockers.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-blockers.md
skills/auto-tmux/scripts/swarm-results.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-results.md
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --session ai-hub --out /tmp/ai-swarm-report-pack
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-report-pack --attach /tmp/auto-tmux-remote
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-report-pack --tar
@@ -290,6 +292,7 @@ skills/auto-tmux/scripts/swarm-dispatch.sh --role worker --target <session>:<win
- `scripts/swarm-export.sh`: 导出任务、依赖和锁的 JSONL 状态包
- `scripts/swarm-timeline.sh`: 渲染 `status.log` 的 Markdown 时间线
- `scripts/swarm-blockers.sh`: 聚合 BLOCKED/FAIL 任务、锁和最近异常状态
- `scripts/swarm-results.sh`: 汇总 DONE/FAIL/BLOCKED worker 结果
- `scripts/swarm-report-pack.sh`: 聚合 board、依赖图、时间线、阻塞清单、分配建议、附件、`manifest.json` 和可选 tar.gz
- `scripts/swarm-assign.sh`: 根据 ready tasks 和 worker pane 生成只读分配建议
- `scripts/swarm-health.sh`: 汇总 tmux 与 swarm state 的只读健康检查报告包
@@ -319,6 +322,6 @@ skills/auto-tmux/scripts/swarm-dispatch.sh --role worker --target <session>:<win
4. ≥3 个端到端示例,含输入/步骤/验收。
5. 长文档放在 `references/` 并可导航;无文档堆砌。
6. 不确定项给出验证路径;禁止虚构 tmux 行为。
7. `bash -n skills/auto-tmux/scripts/auto-tmux.sh``bash -n skills/auto-tmux/scripts/swarm-state.sh``bash -n skills/auto-tmux/scripts/swarm-brief.sh``bash -n skills/auto-tmux/scripts/swarm-watch.sh``bash -n skills/auto-tmux/scripts/swarm-archive.sh``bash -n skills/auto-tmux/scripts/swarm-board.sh``bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh``bash -n skills/auto-tmux/scripts/swarm-export.sh``bash -n skills/auto-tmux/scripts/swarm-timeline.sh``bash -n skills/auto-tmux/scripts/swarm-blockers.sh``bash -n skills/auto-tmux/scripts/swarm-report-pack.sh``bash -n skills/auto-tmux/scripts/swarm-assign.sh``bash -n skills/auto-tmux/scripts/swarm-health.sh``bash -n skills/auto-tmux/scripts/remote-readonly.sh``bash -n skills/auto-tmux/scripts/record-summary.sh``bash -n skills/auto-tmux/scripts/completion.bash``bash -n skills/auto-tmux/scripts/safety-check.sh``bash -n skills/auto-tmux/scripts/render-swarm-prompt.sh``bash -n skills/auto-tmux/scripts/swarm-dispatch.sh``bash -n skills/auto-tmux/scripts/validate-auto-tmux.sh` 通过。
7. `bash -n skills/auto-tmux/scripts/auto-tmux.sh``bash -n skills/auto-tmux/scripts/swarm-state.sh``bash -n skills/auto-tmux/scripts/swarm-brief.sh``bash -n skills/auto-tmux/scripts/swarm-watch.sh``bash -n skills/auto-tmux/scripts/swarm-archive.sh``bash -n skills/auto-tmux/scripts/swarm-board.sh``bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh``bash -n skills/auto-tmux/scripts/swarm-export.sh``bash -n skills/auto-tmux/scripts/swarm-timeline.sh``bash -n skills/auto-tmux/scripts/swarm-blockers.sh``bash -n skills/auto-tmux/scripts/swarm-results.sh``bash -n skills/auto-tmux/scripts/swarm-report-pack.sh``bash -n skills/auto-tmux/scripts/swarm-assign.sh``bash -n skills/auto-tmux/scripts/swarm-health.sh``bash -n skills/auto-tmux/scripts/remote-readonly.sh``bash -n skills/auto-tmux/scripts/record-summary.sh``bash -n skills/auto-tmux/scripts/completion.bash``bash -n skills/auto-tmux/scripts/safety-check.sh``bash -n skills/auto-tmux/scripts/render-swarm-prompt.sh``bash -n skills/auto-tmux/scripts/swarm-dispatch.sh``bash -n skills/auto-tmux/scripts/validate-auto-tmux.sh` 通过。
8. `skills/auto-tmux/scripts/auto-tmux-smoke-test.sh` 通过或在无 tmux 环境下明确跳过。
9. 运行 `skills/auto-tmux/scripts/validate-auto-tmux.sh``skills/auto-skill/scripts/validate-skill.sh skills/auto-tmux --strict` 通过。
@@ -39,6 +39,7 @@
| `swarm-export.sh` | 导出 JSONL 状态包 | 只读读取 state,写显式输出目录 |
| `swarm-timeline.sh` | 渲染状态日志时间线 | 只读生成 Markdown |
| `swarm-blockers.sh` | 聚合阻塞、失败、锁和异常状态 | 只读生成 Markdown |
| `swarm-results.sh` | 汇总 DONE/FAIL/BLOCKED worker 结果 | 只读生成 Markdown |
| `swarm-report-pack.sh` | 聚合多个只读报告、附件与 JSONL 导出 | 生成 `index.md``manifest.json` |
| `swarm-assign.sh` | 生成 ready task 到 worker pane 的分配建议 | 只读,不 claim,不发送 |
| `swarm-health.sh` | 汇总 tmux 与 swarm state 健康报告 | 只读,不自动修复 |
@@ -115,6 +116,7 @@ skills/auto-tmux/scripts/swarm-deps-graph.sh --dir /tmp/ai_swarm --out /tmp/ai-s
skills/auto-tmux/scripts/swarm-export.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-export
skills/auto-tmux/scripts/swarm-timeline.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-timeline.md
skills/auto-tmux/scripts/swarm-blockers.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-blockers.md
skills/auto-tmux/scripts/swarm-results.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-results.md
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --session ai-hub --out /tmp/ai-swarm-report-pack
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-report-pack --attach /tmp/auto-tmux-remote
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-report-pack --tar
@@ -279,6 +281,7 @@ bash -n skills/auto-tmux/scripts/swarm-deps-graph.sh
bash -n skills/auto-tmux/scripts/swarm-export.sh
bash -n skills/auto-tmux/scripts/swarm-timeline.sh
bash -n skills/auto-tmux/scripts/swarm-blockers.sh
bash -n skills/auto-tmux/scripts/swarm-results.sh
bash -n skills/auto-tmux/scripts/swarm-report-pack.sh
bash -n skills/auto-tmux/scripts/swarm-assign.sh
bash -n skills/auto-tmux/scripts/swarm-health.sh
@@ -41,13 +41,14 @@
| 33 | `ff8cd86` | 远程证据包增强 | `remote-readonly.sh` 输出 `metadata.jsonl`validator 覆盖 fake SSH |
| 34 | `5677df3` | 报告附件索引 | `swarm-report-pack.sh --attach` |
| 35 | `7a2ff13` | 报告包 manifest | `swarm-report-pack.sh` 输出根级 `manifest.json` |
| 36 | `本轮` | 报告包压缩 | `swarm-report-pack.sh --tar` |
| 36 | `9eac52f` | 报告包压缩 | `swarm-report-pack.sh --tar` |
| 37 | `本轮` | worker 结果收敛 | `swarm-results.sh` |
## 后续候选方向
| 优先级 | 方向 | 说明 |
|:---|:---|:---|
| P3 | worker 结果收敛 | 从 report pack 中提取 worker 产出摘要 |
| P3 | 结果摘要导出 | 为 `swarm-results.sh` 增加 JSONL 导出 |
## 每轮验收清单
+2
View File
@@ -18,6 +18,7 @@ scripts/
├── swarm-export.sh # 导出 JSONL 状态包
├── swarm-timeline.sh # 从 status.log 渲染 Markdown 时间线
├── swarm-blockers.sh # 聚合 BLOCKED/FAIL、锁和异常状态
├── swarm-results.sh # 汇总 DONE/FAIL/BLOCKED worker 结果
├── swarm-report-pack.sh # 聚合只读报告包
├── swarm-assign.sh # 生成 ready task 到 worker pane 的分配建议
├── swarm-health.sh # 汇总只读健康检查报告包
@@ -48,6 +49,7 @@ scripts/
- 导出脚本只读 `tasks.tsv``deps.tsv` 和锁目录,只写显式输出目录。
- 时间线脚本只读 `status.log`,不改写状态目录。
- 阻塞报告脚本只读任务、锁和状态日志,不做自动修复。
- 结果收敛脚本只读任务、结果文件和状态日志,不改写状态目录。
- 报告包脚本只编排只读脚本并写入显式输出目录,不 claim 任务、不发送 prompt。
- 分配建议脚本只读任务和 pane 拓扑,不 claim 任务、不发送 prompt。
- 健康检查脚本只读 tmux 与 swarm state,失败项写入报告,不做自动修复。
+4
View File
@@ -14,6 +14,7 @@
- [`swarm-export.sh`](./swarm-export.sh) - 将任务、依赖和锁导出为 JSONL 包。
- [`swarm-timeline.sh`](./swarm-timeline.sh) - 将 `status.log` 渲染为 Markdown 时间线。
- [`swarm-blockers.sh`](./swarm-blockers.sh) - 聚合 BLOCKED/FAIL 任务、锁和最近异常状态。
- [`swarm-results.sh`](./swarm-results.sh) - 汇总 DONE/FAIL/BLOCKED worker 结果。
- [`swarm-report-pack.sh`](./swarm-report-pack.sh) - 聚合 board、依赖图、时间线、阻塞清单、分配建议和 JSONL 导出。
- 报告包根目录会生成 `index.md``manifest.json`,附件目录通过 `--attach` 显式加入。
- [`swarm-assign.sh`](./swarm-assign.sh) - 根据 ready tasks 和 worker pane 生成只读分配建议。
@@ -85,6 +86,9 @@ skills/auto-tmux/scripts/swarm-timeline.sh --dir /tmp/ai_swarm --out /tmp/ai-swa
# 生成阻塞清单
skills/auto-tmux/scripts/swarm-blockers.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-blockers.md
# 汇总 worker 结果
skills/auto-tmux/scripts/swarm-results.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-results.md
# 生成完整报告包
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --session ai-hub --out /tmp/ai-swarm-report-pack
skills/auto-tmux/scripts/swarm-report-pack.sh --dir /tmp/ai_swarm --out /tmp/ai-swarm-report-pack --attach /tmp/auto-tmux-remote
+1 -1
View File
@@ -153,7 +153,7 @@ cmd_doctor() {
status_line "WARN" "tmux server has no reachable session yet"
fi
for script in auto-tmux.sh swarm-state.sh swarm-brief.sh swarm-watch.sh swarm-archive.sh swarm-board.sh swarm-deps-graph.sh swarm-export.sh swarm-timeline.sh swarm-blockers.sh swarm-report-pack.sh swarm-assign.sh swarm-health.sh remote-readonly.sh record-summary.sh safety-check.sh render-swarm-prompt.sh swarm-dispatch.sh auto-tmux-smoke-test.sh validate-auto-tmux.sh; do
for script in auto-tmux.sh swarm-state.sh swarm-brief.sh swarm-watch.sh swarm-archive.sh swarm-board.sh swarm-deps-graph.sh swarm-export.sh swarm-timeline.sh swarm-blockers.sh swarm-results.sh swarm-report-pack.sh swarm-assign.sh swarm-health.sh remote-readonly.sh record-summary.sh safety-check.sh render-swarm-prompt.sh swarm-dispatch.sh auto-tmux-smoke-test.sh validate-auto-tmux.sh; do
if [[ -x "$script_dir/$script" ]]; then
status_line "OK" "script executable: $script"
else
@@ -91,6 +91,7 @@ run_report "board" "$script_dir/swarm-board.sh" --dir "$swarm_dir" --out "$out_d
run_report "dependency graph" "$script_dir/swarm-deps-graph.sh" --dir "$swarm_dir" --out "$out_dir/deps.md"
run_report "timeline" "$script_dir/swarm-timeline.sh" --dir "$swarm_dir" --out "$out_dir/timeline.md"
run_report "blockers" "$script_dir/swarm-blockers.sh" --dir "$swarm_dir" --out "$out_dir/blockers.md"
run_report "results" "$script_dir/swarm-results.sh" --dir "$swarm_dir" --out "$out_dir/results.md"
run_report "export" "$script_dir/swarm-export.sh" --dir "$swarm_dir" --out "$out_dir/export"
if [[ -n "$session" ]]; then
@@ -142,6 +143,7 @@ cat > "$out_dir/manifest.json" <<EOF
"deps.md",
"timeline.md",
"blockers.md",
"results.md",
"assign.md",
"export/manifest.json"
],
@@ -164,6 +166,7 @@ cat > "$out_dir/index.md" <<EOF
- [deps.md](./deps.md)
- [timeline.md](./timeline.md)
- [blockers.md](./blockers.md)
- [results.md](./results.md)
- [assign.md](./assign.md)
- [manifest.json](./manifest.json)
- [export/manifest.json](./export/manifest.json)
+119
View File
@@ -0,0 +1,119 @@
#!/usr/bin/env bash
# swarm-results: render terminal worker results as a delivery summary.
set -euo pipefail
usage() {
cat <<'EOF'
swarm-results: summarize DONE/FAIL/BLOCKED worker results
Usage:
swarm-results.sh [--dir DIR] [--out FILE] [--limit N]
Defaults:
--dir AUTO_TMUX_SWARM_DIR or /tmp/ai_swarm
--out stdout
--limit 80 result rows
This script is read-only. It does not mutate swarm state.
EOF
}
die() {
printf 'error: %s\n' "$*" >&2
exit 1
}
swarm_dir="${AUTO_TMUX_SWARM_DIR:-/tmp/ai_swarm}"
out_file=""
limit=80
while [[ $# -gt 0 ]]; do
case "$1" in
--dir|--swarm-dir)
swarm_dir="${2:-}"
shift 2
;;
--out)
out_file="${2:-}"
shift 2
;;
--limit)
limit="${2:-}"
shift 2
;;
-h|--help)
usage
exit 0
;;
*)
die "unknown option: $1"
;;
esac
done
[[ "$limit" =~ ^[0-9]+$ ]] || die "--limit must be a number"
tasks_tsv="$swarm_dir/tasks.tsv"
results_dir="$swarm_dir/results"
status_log="$swarm_dir/status.log"
[[ -f "$tasks_tsv" ]] || die "tasks file not found: $tasks_tsv"
render_results() {
printf '# auto-tmux Swarm Results\n\n'
printf -- '- dir: `%s`\n' "$swarm_dir"
printf -- '- created_at: `%s`\n\n' "$(date -Is)"
printf '## Summary\n\n'
awk -F '\t' '
NR > 1 {count[$2]++}
END {
print "| status | count |"
print "|:---|---:|"
n = split("DONE FAIL BLOCKED DOING TODO", order, " ")
for (i = 1; i <= n; i++) {
status = order[i]
print "| `" status "` | " (count[status] + 0) " |"
}
}
' "$tasks_tsv"
printf '\n## Terminal Results\n\n'
printf '| status | id | owner | text | result |\n'
printf '|:---|:---|:---|:---|:---|\n'
awk -F '\t' -v limit="$limit" '
function esc(value) {
gsub(/\|/, "\\|", value)
return value
}
NR > 1 && ($2 == "DONE" || $2 == "FAIL" || $2 == "BLOCKED") {
print "| `" esc($2) "` | `" esc($1) "` | `" esc($3) "` | " esc($4) " | " esc($5) " |"
shown++
if (shown >= limit) exit
}
END {if (shown == 0) print "| - | - | - | - | - |"}
' "$tasks_tsv"
printf '\n## Result Files\n\n'
if [[ -d "$results_dir" ]] && find "$results_dir" -mindepth 1 -maxdepth 1 -type f -name '*.txt' -print -quit | grep -q .; then
find "$results_dir" -mindepth 1 -maxdepth 1 -type f -name '*.txt' -print | sort | while read -r path; do
printf -- '- `%s`: %s\n' "$(basename "$path")" "$(head -n 1 "$path")"
done
else
printf -- '- no result files\n'
fi
printf '\n## Recent Terminal Status\n\n'
if [[ -s "$status_log" ]]; then
tail -n 30 "$status_log" | grep -E '\[(DONE|FAIL|BLOCKED)\]' | sed 's/^/- /' || printf -- '- no recent terminal status\n'
else
printf -- '- no status log\n'
fi
}
if [[ -n "$out_file" ]]; then
mkdir -p "$(dirname "$out_file")"
render_results > "$out_file"
printf 'swarm results written: %s\n' "$out_file"
else
render_results
fi
@@ -108,6 +108,7 @@ scripts=(
"$script_dir/swarm-export.sh"
"$script_dir/swarm-timeline.sh"
"$script_dir/swarm-blockers.sh"
"$script_dir/swarm-results.sh"
"$script_dir/swarm-report-pack.sh"
"$script_dir/swarm-assign.sh"
"$script_dir/swarm-health.sh"
@@ -137,6 +138,7 @@ run_gate "swarm-deps-graph help" "$script_dir/swarm-deps-graph.sh" --help
run_gate "swarm-export help" "$script_dir/swarm-export.sh" --help
run_gate "swarm-timeline help" "$script_dir/swarm-timeline.sh" --help
run_gate "swarm-blockers help" "$script_dir/swarm-blockers.sh" --help
run_gate "swarm-results help" "$script_dir/swarm-results.sh" --help
run_gate "swarm-report-pack help" "$script_dir/swarm-report-pack.sh" --help
run_gate "swarm-report-pack attachment" bash -c '
tmp="$(mktemp -d)"
@@ -145,6 +147,7 @@ run_gate "swarm-report-pack attachment" bash -c '
printf "remote evidence\n" > "$tmp/remote/remote-tmux.txt"
"$1" --dir "$tmp/swarm" --out "$tmp/out" --attach "$tmp/remote" >/dev/null
grep -Fq "attachments.md" "$tmp/out/index.md"
grep -Fq "results.md" "$tmp/out/index.md"
grep -Fq "manifest.json" "$tmp/out/index.md"
grep -Fq "\"type\": \"auto-tmux-swarm-report-pack\"" "$tmp/out/manifest.json"
grep -Fq "\"attachments\"" "$tmp/out/manifest.json"
@@ -178,6 +181,7 @@ require_contains "$skill_dir/SKILL.md" "scripts/swarm-deps-graph.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-export.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-timeline.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-blockers.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-results.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-report-pack.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-assign.sh"
require_contains "$skill_dir/SKILL.md" "scripts/swarm-health.sh"
@@ -204,6 +208,7 @@ require_contains "$script_dir/README.md" "swarm-deps-graph.sh"
require_contains "$script_dir/README.md" "swarm-export.sh"
require_contains "$script_dir/README.md" "swarm-timeline.sh"
require_contains "$script_dir/README.md" "swarm-blockers.sh"
require_contains "$script_dir/README.md" "swarm-results.sh"
require_contains "$script_dir/README.md" "swarm-report-pack.sh"
require_contains "$script_dir/README.md" "swarm-assign.sh"
require_contains "$script_dir/README.md" "swarm-health.sh"
@@ -221,6 +226,7 @@ require_contains "$script_dir/AGENTS.md" "swarm-deps-graph.sh"
require_contains "$script_dir/AGENTS.md" "swarm-export.sh"
require_contains "$script_dir/AGENTS.md" "swarm-timeline.sh"
require_contains "$script_dir/AGENTS.md" "swarm-blockers.sh"
require_contains "$script_dir/AGENTS.md" "swarm-results.sh"
require_contains "$script_dir/AGENTS.md" "swarm-report-pack.sh"
require_contains "$script_dir/AGENTS.md" "swarm-assign.sh"
require_contains "$script_dir/AGENTS.md" "swarm-health.sh"