diff --git a/skills/auto-tmux/AGENTS.md b/skills/auto-tmux/AGENTS.md index 9cbf92f..15eb929 100644 --- a/skills/auto-tmux/AGENTS.md +++ b/skills/auto-tmux/AGENTS.md @@ -21,6 +21,7 @@ skills/auto-tmux/ │ ├── swarm-assign.sh │ ├── swarm-health.sh │ ├── record-summary.sh +│ ├── completion.bash │ ├── safety-check.sh │ ├── render-swarm-prompt.sh │ ├── swarm-dispatch.sh @@ -53,6 +54,7 @@ skills/auto-tmux/ - `scripts/swarm-assign.sh` 是分配建议层,将 ready task 轮询映射到 worker pane。 - `scripts/swarm-health.sh` 是健康检查层,汇总 tmux 和 swarm state 的只读报告包。 - `scripts/record-summary.sh` 是复盘摘要层,将 pane 录制日志整理为 Markdown。 +- `scripts/completion.bash` 是本地补全层,补全 `auto-tmux.sh` 与 `swarm-state.sh`。 - `scripts/safety-check.sh` 是安全预检层,检查待发送 payload 的危险命令、敏感信息和大小。 - `scripts/render-swarm-prompt.sh` 是提示词渲染层,生成 commander/worker/reviewer 协议文本。 - `scripts/swarm-dispatch.sh` 是提示词下发层,默认写文件,显式 `--send` 后才发送到 pane。 @@ -65,4 +67,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-assign.sh`、`bash -n skills/auto-tmux/scripts/swarm-health.sh`、`bash -n skills/auto-tmux/scripts/record-summary.sh`、`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-assign.sh`、`bash -n skills/auto-tmux/scripts/swarm-health.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`。 diff --git a/skills/auto-tmux/README.md b/skills/auto-tmux/README.md index 27e6105..9d9acbf 100644 --- a/skills/auto-tmux/README.md +++ b/skills/auto-tmux/README.md @@ -28,6 +28,7 @@ bash -n skills/auto-tmux/scripts/swarm-board.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/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 diff --git a/skills/auto-tmux/SKILL.md b/skills/auto-tmux/SKILL.md index 28c43ba..cd63bf9 100644 --- a/skills/auto-tmux/SKILL.md +++ b/skills/auto-tmux/SKILL.md @@ -42,6 +42,7 @@ bash -n skills/auto-tmux/scripts/swarm-board.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/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 @@ -180,6 +181,7 @@ skills/auto-tmux/scripts/swarm-state.sh report --dir /tmp/ai_swarm **脚本端到端自测** ```bash +source skills/auto-tmux/scripts/completion.bash skills/auto-tmux/scripts/auto-tmux-smoke-test.sh skills/auto-tmux/scripts/validate-auto-tmux.sh ``` @@ -271,6 +273,7 @@ skills/auto-tmux/scripts/swarm-dispatch.sh --role worker --target ::/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 diff --git a/skills/auto-tmux/scripts/validate-auto-tmux.sh b/skills/auto-tmux/scripts/validate-auto-tmux.sh index c9284a4..7c6927d 100755 --- a/skills/auto-tmux/scripts/validate-auto-tmux.sh +++ b/skills/auto-tmux/scripts/validate-auto-tmux.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