一键导入
wait-for-agent
// Wait for another agent to enter WAITING state, then execute follow-up instructions
// Wait for another agent to enter WAITING state, then execute follow-up instructions
End-to-end dev workflow for the minds app stack -- first-time bring-up, every-startup vendor/mngr sync, and the iteration loop against a running Docker agent. Use this when starting or restarting the dev Electron app, or after changing any minds component (mngr, the system interface, the FCT template).
Create a new PRIVATE GitHub repo that is a full-history copy of imbue-ai/forever-claude-template's current main branch, clone it to <parent-dir>/<repo-name> (default $HOME/project), and push. Use when the user asks to "spin up a new forever-claude clone", "fork the forever-claude template as a private repo", "make me a new private copy of forever-claude-template", or similar.
Cut a new "production" release of the minds app. Pushes a release branch in the mngr clone at ~/project/minds_prod, syncs vendor/mngr in ~/project/forever-claude-template to match, pushes the same-named branch there, and merges the release branch into FCT main. Use when the user asks to "release a new version of minds", "cut a minds release", "update the vendored mngr in forever-claude-template to track <branch>", or anything of that shape.
Resolve an agent name or description to an exact mngr agent name. Used by other skills that target agents.
Send a message to another mngr agent. Use when you need to communicate with a peer agent.
Match tutorial script blocks to e2e pytest functions and add missing tests
| name | wait-for-agent |
| description | Wait for another agent to enter WAITING state, then execute follow-up instructions |
The user's message contains an agent name and optional follow-up instructions. Extract the agent name (the first word) and treat everything after it as follow-up instructions.
Use the /find-agent skill with the first word of the user's input to resolve it to an exact agent name.
Run the following bash command (with a 600000ms timeout), substituting AGENT_NAME with the resolved agent name. The loop returns immediately if the agent is already in a ready state:
while true; do
OUTPUT=$(uv run mngr list --include 'name == "AGENT_NAME"' --format '{state}|{plugin.claude.waiting_reason}' 2>/dev/null | head -1)
STATE="${OUTPUT%%|*}"
REASON="${OUTPUT#*|}"
echo "[$(date '+%H:%M:%S')] Agent 'AGENT_NAME' state: ${STATE:-NOT_FOUND} (reason: ${REASON:-none})"
case "$STATE" in
DONE|STOPPED) echo "Agent 'AGENT_NAME' is ready (state: $STATE)"; break ;;
WAITING)
if [ "$REASON" = "PERMISSIONS" ]; then
echo "Agent 'AGENT_NAME' waiting on permissions, continuing to poll..."
sleep 60
else
echo "Agent 'AGENT_NAME' is ready (state: $STATE)"; break
fi ;;
"") echo "Agent 'AGENT_NAME' not found, stopping"; break ;;
*) sleep 60 ;;
esac
done
If this command times out (after 10 minutes), check on the agent by running tmux capture-pane -t mngr-AGENT_NAME -p -S -30 to see its recent output. The tmux session name format is mngr-AGENT_NAME. If it looks like the agent is still actively working, re-run the polling loop. If it looks stuck or dead, inform the user.
Once the agent is in WAITING (without a permissions reason), DONE, or STOPPED state, carry out the user's follow-up instructions. If no follow-up instructions were provided, inform the user that the agent is ready.