mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-08-25 16:48:28 +00:00
feat: skills - build auto-tmux swarm report packs
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
# swarm-report-pack: build a portable read-only report pack for swarm state.
|
||||
set -euo pipefail
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
swarm-report-pack: build an auto-tmux swarm report pack
|
||||
|
||||
Usage:
|
||||
swarm-report-pack.sh [--dir DIR] [--session NAME] [--out DIR]
|
||||
|
||||
Defaults:
|
||||
--dir AUTO_TMUX_SWARM_DIR or /tmp/ai_swarm
|
||||
--out /tmp/auto-tmux-report-pack-YYYYmmdd-HHMMSS
|
||||
|
||||
This script is read-only for tmux and swarm state. It writes only to --out.
|
||||
EOF
|
||||
}
|
||||
|
||||
die() {
|
||||
printf 'error: %s\n' "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
swarm_dir="${AUTO_TMUX_SWARM_DIR:-/tmp/ai_swarm}"
|
||||
session=""
|
||||
out_dir="/tmp/auto-tmux-report-pack-$(date +%Y%m%d-%H%M%S)"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--dir|--swarm-dir)
|
||||
swarm_dir="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
--session)
|
||||
session="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
--out)
|
||||
out_dir="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
die "unknown option: $1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
mkdir -p "$out_dir/export"
|
||||
|
||||
run_report() {
|
||||
local label="$1"
|
||||
shift
|
||||
if "$@" >/tmp/auto-tmux-report-pack.log 2>&1; then
|
||||
printf '[OK] %s\n' "$label"
|
||||
else
|
||||
printf '[WARN] %s failed\n' "$label" >&2
|
||||
sed -n '1,80p' /tmp/auto-tmux-report-pack.log >&2
|
||||
fi
|
||||
}
|
||||
|
||||
run_report "board" "$script_dir/swarm-board.sh" --dir "$swarm_dir" --out "$out_dir/board.md"
|
||||
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 "export" "$script_dir/swarm-export.sh" --dir "$swarm_dir" --out "$out_dir/export"
|
||||
|
||||
if [[ -n "$session" ]]; then
|
||||
run_report "assign" "$script_dir/swarm-assign.sh" --swarm-dir "$swarm_dir" --session "$session" --out "$out_dir/assign.md"
|
||||
else
|
||||
run_report "assign" "$script_dir/swarm-assign.sh" --swarm-dir "$swarm_dir" --out "$out_dir/assign.md"
|
||||
fi
|
||||
|
||||
cat > "$out_dir/index.md" <<EOF
|
||||
# auto-tmux Swarm Report Pack
|
||||
|
||||
- created_at: \`$(date -Is)\`
|
||||
- swarm_dir: \`$swarm_dir\`
|
||||
- session: \`${session:-<not provided>}\`
|
||||
|
||||
## Files
|
||||
|
||||
- [board.md](./board.md)
|
||||
- [deps.md](./deps.md)
|
||||
- [timeline.md](./timeline.md)
|
||||
- [blockers.md](./blockers.md)
|
||||
- [assign.md](./assign.md)
|
||||
- [export/manifest.json](./export/manifest.json)
|
||||
EOF
|
||||
|
||||
rm -f /tmp/auto-tmux-report-pack.log
|
||||
printf 'swarm report pack written: %s\n' "$out_dir"
|
||||
Reference in New Issue
Block a user