mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-08-20 14:28:05 +00:00
feat: skills - add auto-tmux shell completion
This commit is contained in:
@@ -17,6 +17,7 @@ scripts/
|
||||
├── swarm-assign.sh # 生成 ready task 到 worker pane 的分配建议
|
||||
├── swarm-health.sh # 汇总只读健康检查报告包
|
||||
├── record-summary.sh # 汇总 pipe-pane 录制日志
|
||||
├── completion.bash # Bash completion
|
||||
├── safety-check.sh # 发送/粘贴/分发前的 payload 安全预检
|
||||
├── render-swarm-prompt.sh # commander/worker/reviewer 提示词渲染
|
||||
├── swarm-dispatch.sh # 渲染并可选下发蜂群提示词
|
||||
@@ -40,6 +41,7 @@ scripts/
|
||||
- 分配建议脚本只读任务和 pane 拓扑,不 claim 任务、不发送 prompt。
|
||||
- 健康检查脚本只读 tmux 与 swarm state,失败项写入报告,不做自动修复。
|
||||
- 录制摘要脚本只读 record 日志,输出默认脱敏,不修改日志源文件。
|
||||
- completion 文件只能定义 shell completion,不执行 tmux 写操作。
|
||||
- 安全预检脚本只能读取文本或文件,不控制 tmux,不写状态目录。
|
||||
- 状态脚本只能写入显式状态目录,不保存密钥、Token、密码或私密项目内容。
|
||||
- 自测脚本必须创建独立临时 tmux session,并在退出时清理。
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
- [`swarm-assign.sh`](./swarm-assign.sh) - 根据 ready tasks 和 worker pane 生成只读分配建议。
|
||||
- [`swarm-health.sh`](./swarm-health.sh) - 汇总 doctor、topology、scan、validate、metrics、board 和 assign。
|
||||
- [`record-summary.sh`](./record-summary.sh) - 汇总 `record start` 产生的 pane 日志,生成复盘摘要。
|
||||
- [`completion.bash`](./completion.bash) - Bash completion,补全 `auto-tmux.sh` 和 `swarm-state.sh` 子命令。
|
||||
- [`safety-check.sh`](./safety-check.sh) - 发送、粘贴或分发前检查危险命令、敏感信息和过大 payload。
|
||||
- [`render-swarm-prompt.sh`](./render-swarm-prompt.sh) - commander、worker、reviewer 提示词渲染。
|
||||
- [`swarm-dispatch.sh`](./swarm-dispatch.sh) - 渲染提示词并可选发送到指定 pane,默认只写文件。
|
||||
@@ -74,6 +75,9 @@ skills/auto-tmux/scripts/swarm-health.sh --session ai-hub --swarm-dir /tmp/ai_sw
|
||||
# 汇总 pane 录制日志
|
||||
skills/auto-tmux/scripts/record-summary.sh --dir /tmp/auto-tmux-records --out /tmp/auto-tmux-record-summary.md
|
||||
|
||||
# 启用当前 shell 的补全
|
||||
source skills/auto-tmux/scripts/completion.bash
|
||||
|
||||
# 初始化蜂群状态并添加任务
|
||||
skills/auto-tmux/scripts/swarm-state.sh init --dir /tmp/ai_swarm
|
||||
skills/auto-tmux/scripts/swarm-state.sh task-add --id task-001 --text "检查 README 链接"
|
||||
|
||||
@@ -13,6 +13,7 @@ SWARM_BOARD="$SCRIPT_DIR/swarm-board.sh"
|
||||
SWARM_ASSIGN="$SCRIPT_DIR/swarm-assign.sh"
|
||||
SWARM_HEALTH="$SCRIPT_DIR/swarm-health.sh"
|
||||
RECORD_SUMMARY="$SCRIPT_DIR/record-summary.sh"
|
||||
COMPLETION="$SCRIPT_DIR/completion.bash"
|
||||
SAFETY_CHECK="$SCRIPT_DIR/safety-check.sh"
|
||||
SWARM_DISPATCH="$SCRIPT_DIR/swarm-dispatch.sh"
|
||||
SESSION="auto-tmux-smoke-$$"
|
||||
@@ -52,6 +53,7 @@ bash -n "$SWARM_BOARD"
|
||||
bash -n "$SWARM_ASSIGN"
|
||||
bash -n "$SWARM_HEALTH"
|
||||
bash -n "$RECORD_SUMMARY"
|
||||
bash -n "$COMPLETION"
|
||||
bash -n "$SAFETY_CHECK"
|
||||
bash -n "$SWARM_DISPATCH"
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# Bash completion for auto-tmux helper scripts.
|
||||
|
||||
_auto_tmux_complete_words() {
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
local prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
local subcommands="help doctor topology inspect capture send paste broadcast rescue scan record snapshot hub cleanup wait"
|
||||
local common_opts="-h --help --session -t --target -n --lines --dir --out --pattern --dry-run --force"
|
||||
|
||||
if [[ "$COMP_CWORD" -eq 1 ]]; then
|
||||
COMPREPLY=($(compgen -W "$subcommands" -- "$cur"))
|
||||
return 0
|
||||
fi
|
||||
|
||||
case "$prev" in
|
||||
-t|--target)
|
||||
if command -v tmux >/dev/null 2>&1; then
|
||||
local targets
|
||||
targets="$(tmux list-panes -a -F '#S:#{window_index}.#{pane_index}' 2>/dev/null || true)"
|
||||
COMPREPLY=($(compgen -W "$targets" -- "$cur"))
|
||||
fi
|
||||
;;
|
||||
--session)
|
||||
if command -v tmux >/dev/null 2>&1; then
|
||||
local sessions
|
||||
sessions="$(tmux list-sessions -F '#S' 2>/dev/null || true)"
|
||||
COMPREPLY=($(compgen -W "$sessions" -- "$cur"))
|
||||
fi
|
||||
;;
|
||||
--dir|--out)
|
||||
COMPREPLY=($(compgen -d -- "$cur"))
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=($(compgen -W "$common_opts" -- "$cur"))
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_swarm_state_complete_words() {
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
local subcommands="init log status task-add task-import task-list task-depend task-ready task-next task-claim task-done task-block task-fail task-reopen lock-acquire lock-release lock-list lock-prune report metrics validate"
|
||||
local common_opts="-h --help --dir --id --text --file --prefix --status --owner --target --message --blocked-by --result --reason --name --force --older-than --dry-run"
|
||||
|
||||
if [[ "$COMP_CWORD" -eq 1 ]]; then
|
||||
COMPREPLY=($(compgen -W "$subcommands" -- "$cur"))
|
||||
return 0
|
||||
fi
|
||||
|
||||
COMPREPLY=($(compgen -W "$common_opts" -- "$cur"))
|
||||
}
|
||||
|
||||
complete -F _auto_tmux_complete_words auto-tmux.sh
|
||||
complete -F _auto_tmux_complete_words ./auto-tmux.sh
|
||||
complete -F _auto_tmux_complete_words skills/auto-tmux/scripts/auto-tmux.sh
|
||||
|
||||
complete -F _swarm_state_complete_words swarm-state.sh
|
||||
complete -F _swarm_state_complete_words ./swarm-state.sh
|
||||
complete -F _swarm_state_complete_words skills/auto-tmux/scripts/swarm-state.sh
|
||||
@@ -97,6 +97,9 @@ for script in "${scripts[@]}"; do
|
||||
run_gate "bash syntax: ${script##*/}" bash -n "$script"
|
||||
done
|
||||
|
||||
[[ -f "$script_dir/completion.bash" ]] && pass "completion file: skills/auto-tmux/scripts/completion.bash" || fail "missing completion.bash"
|
||||
run_gate "bash syntax: completion.bash" bash -n "$script_dir/completion.bash"
|
||||
|
||||
run_gate "auto-tmux help" "$script_dir/auto-tmux.sh" help
|
||||
run_gate "swarm-state help" "$script_dir/swarm-state.sh" help
|
||||
run_gate "swarm-brief help" "$script_dir/swarm-brief.sh" --help
|
||||
@@ -124,6 +127,7 @@ require_contains "$skill_dir/SKILL.md" "scripts/swarm-board.sh"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/swarm-assign.sh"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/swarm-health.sh"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/record-summary.sh"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/completion.bash"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/safety-check.sh"
|
||||
require_contains "$skill_dir/SKILL.md" "scripts/swarm-dispatch.sh"
|
||||
require_contains "$skill_dir/references/index.md" "automation.md"
|
||||
@@ -138,6 +142,7 @@ require_contains "$script_dir/README.md" "swarm-board.sh"
|
||||
require_contains "$script_dir/README.md" "swarm-assign.sh"
|
||||
require_contains "$script_dir/README.md" "swarm-health.sh"
|
||||
require_contains "$script_dir/README.md" "record-summary.sh"
|
||||
require_contains "$script_dir/README.md" "completion.bash"
|
||||
require_contains "$script_dir/README.md" "safety-check.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "validate-auto-tmux.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "swarm-dispatch.sh"
|
||||
@@ -147,6 +152,7 @@ require_contains "$script_dir/AGENTS.md" "swarm-board.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "swarm-assign.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "swarm-health.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "record-summary.sh"
|
||||
require_contains "$script_dir/AGENTS.md" "completion.bash"
|
||||
require_contains "$script_dir/AGENTS.md" "safety-check.sh"
|
||||
|
||||
if [[ -x "$repo_root/skills/auto-skill/scripts/validate-skill.sh" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user