一键导入
doey-rd-team
Spawn a Doey R&D product team — Brain, Platform Expert, Claude Expert, Critic. Works on the live codebase so it sees all changes in real time.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Spawn a Doey R&D product team — Brain, Platform Expert, Claude Expert, Critic. Works on the live codebase so it sees all changes in real time.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | doey-rd-team |
| description | Spawn a Doey R&D product team — Brain, Platform Expert, Claude Expert, Critic. Works on the live codebase so it sees all changes in real time. |
cat /tmp/doey/*/session.env 2>/dev/null | head -20 || truetmux list-windows -F '#{window_index} #{window_name}' 2>/dev/null || trueSpawn R&D team on live project directory, on the session's current branch. No confirmation. Modes: default (audit+improve) | audit (read-only).
RD=$(tmux show-environment DOEY_RUNTIME 2>/dev/null | cut -d= -f2-)
source "${RD}/session.env"
echo "Project: $PROJECT_DIR (branch: $(git -C "$PROJECT_DIR" branch --show-current 2>/dev/null))"
tmux new-window -t "$SESSION_NAME" -n "RD" -c "$PROJECT_DIR"; sleep 0.5
NEW_WIN=$(tmux display-message -t "$SESSION_NAME" -p '#{window_index}')
tmux split-window -h -t "$SESSION_NAME:$NEW_WIN.0" -c "$PROJECT_DIR"; sleep 0.1
tmux split-window -v -t "$SESSION_NAME:$NEW_WIN.0" -c "$PROJECT_DIR"; sleep 0.1
tmux split-window -v -t "$SESSION_NAME:$NEW_WIN.1" -c "$PROJECT_DIR"; sleep 0.3
for i in 0:Brain 1:Platform 2:Claude 3:Critic; do
tmux select-pane -t "${SESSION_NAME}:${NEW_WIN}.${i%%:*}" -T "${i#*:}"
done
cat > "${RD}/team_${NEW_WIN}.env.tmp" << TEAM_EOF
SESSION_NAME=${SESSION_NAME}
PROJECT_DIR=${PROJECT_DIR}
PROJECT_NAME=${PROJECT_NAME}
WINDOW_INDEX=${NEW_WIN}
GRID=dynamic
TOTAL_PANES=4
MANAGER_PANE=0
WORKER_PANES=1,2,3
WORKER_COUNT=3
RD_TEAM=true
TEAM_EOF
mv "${RD}/team_${NEW_WIN}.env.tmp" "${RD}/team_${NEW_WIN}.env"
CUR=$(grep '^TEAM_WINDOWS=' "${RD}/session.env" 2>/dev/null | cut -d= -f2 | tr -d '"')
[ -n "$CUR" ] && NW="${CUR},${NEW_WIN}" || NW="${NEW_WIN}"
TMPENV=$(mktemp "${RD}/session.env.tmp_XXXXXX")
if grep -q '^TEAM_WINDOWS=' "${RD}/session.env"; then
sed "s/^TEAM_WINDOWS=.*/TEAM_WINDOWS=${NW}/" "${RD}/session.env" > "$TMPENV"
else
cat "${RD}/session.env" > "$TMPENV"; echo "TEAM_WINDOWS=${NW}" >> "$TMPENV"
fi
mv "$TMPENV" "${RD}/session.env"
cat > "${RD}/rd-worker-prompt.md" << 'RDPROMPT'
# Doey R&D Product Team Member
Working on the **live project directory** — same codebase other teams are editing.
## Rules
1. Coordinate edits — other workers may edit concurrently
2. Check `$RUNTIME_DIR/errors/errors.log` for runtime issues
3. Check `git diff`/`git log` for recent changes
4. No remote push without Brain approval
## Workflow
Read current state → check recent changes → analyze → propose/fix → verify (`bash -n` for .sh)
RDPROMPT
RD_PROMPT="${RD}/rd-worker-prompt.md"
source "$HOME/.local/bin/doey-send.sh" 2>/dev/null || true
doey_send_launch "${SESSION_NAME}:${NEW_WIN}.0" \
"claude --dangerously-skip-permissions --model opus --name \"Brain\" --agent \"doey-product-brain\""; sleep 3
doey_send_launch "${SESSION_NAME}:${NEW_WIN}.1" \
"claude --dangerously-skip-permissions --model opus --name \"Platform\" --agent \"doey-platform-expert\" --append-system-prompt-file \"${RD_PROMPT}\""; sleep 3
doey_send_launch "${SESSION_NAME}:${NEW_WIN}.2" \
"claude --dangerously-skip-permissions --model opus --name \"Claude\" --agent \"doey-claude-expert\" --append-system-prompt-file \"${RD_PROMPT}\""; sleep 3
doey_send_launch "${SESSION_NAME}:${NEW_WIN}.3" \
"claude --dangerously-skip-permissions --model opus --name \"Critic\" --agent \"doey-critic\" --append-system-prompt-file \"${RD_PROMPT}\""
sleep 8; NOT_READY=0; DOWN_PANES=""
for i in 0 1 2 3; do
CHILD_PID=$(pgrep -P "$(tmux display-message -t "${SESSION_NAME}:${NEW_WIN}.${i}" -p '#{pane_pid}')" 2>/dev/null)
OUTPUT=$(tmux capture-pane -t "${SESSION_NAME}:${NEW_WIN}.${i}" -p 2>/dev/null)
if [ -z "$CHILD_PID" ] || ! echo "$OUTPUT" | grep -q "bypass permissions"; then
NOT_READY=$((NOT_READY + 1)); DOWN_PANES="$DOWN_PANES ${NEW_WIN}.$i"
fi
done
[ "$NOT_READY" -eq 0 ] && echo "All panes booted" || echo "WARNING: ${NOT_READY} not ready:${DOWN_PANES}"
Dispatch audit to Brain via load-buffer/paste-buffer:
Run a Doey R&D audit on the live codebase. 3 specialist workers:
- Pane 1 (Platform): shell/*.sh, .claude/hooks/* — tmux races, bash 3.2 violations
- Pane 2 (Claude): hooks, agents/*.md, skills — semantics, exit codes, correctness
- Pane 3 (Critic): bash -n, frontmatter, tests/, docs accuracy
Phase 1: Dispatch in parallel. Check errors.log + `git log --oneline -10`.
Phase 2: Consolidate. Each specialist proposes fixes. Critic reviews.
Phase 3: Implement (one file per specialist). Report to Taskmaster.
Output: window, layout, boot status. Teardown: /doey-kill-window ${NEW_WIN}.
Plan-first task creation — research, breakdown, risk analysis, then create tasks from approved plan. Usage: /doey-planned-task <goal>
Request a respawn of the current worker pane. Use when you need to "respawn me", "restart myself", "fresh context", or "reset my pane". Writes an atomic respawn request that kills the current Claude process and relaunches with a fresh context.
Discover scaffolding patterns in this project — structural fingerprints, accretion files, and refactoring patterns from git history. Returns candidates worth turning into templates.
Spawn the doey-scaffy MCP server so workers can drive the Scaffy template engine via tool calls. Loaded automatically when a task needs scaffy_run / scaffy_validate / scaffy_list / scaffy_audit / scaffy_discover / scaffy_new / scaffy_fmt or any scaffy:// resource.
Create a new scaffy template from existing files (--from-files) or interactively. Outputs to .doey/scaffy/templates/<name>.scaffy.
Manage persistent project tasks — list, add, transition, show, subtasks, decisions, notes. Tasks stored in .doey/tasks/ (survives reboot). Use when you need to "show tasks", "add a task", "mark a task done", "what are we working on", or "create a task".