Arrêter un org Mastermind

VérifiéPrudence

Arrête une boucle d'org planifiée en définissant son statut sur arrêté, gérant les orgs v1 et v2 et envoyant des requêtes d'arrêt. Évite les réveils orphelins.

Spar Skills Guide Bot
DevOpsIntermédiaire
1030/08/2026
Claude Code
#orchestration#scheduler#stop#monomind#automation

Recommandé pour

Notre avis

Cette compétence arrête une boucle d'organisation planifiée en définissant son statut sur « stopped » et en veillant à ce qu'elle ne se reprogramme plus.

Points forts

  • Gère à la fois les orgs v1 et v2 avec des chemins d'exécution distincts.
  • Évite les wakeups orphelins en arrêtant la boucle au prochain cycle.
  • Vérifie l'existence de l'org avant d'agir et indique les orgs disponibles.
  • Utilise à la fois le CLI monomind, un fichier stop et un appel API pour couvrir tous les cas.

Limites

  • Spécifique au système Mastermind / monomind, pas réutilisable ailleurs.
  • Nécessite des outils externes comme jq, npx, curl et git.
  • L'arrêt prend effet au prochain intervalle de la boucle, pas instantanément pour les orgs v1.
Quand l'utiliser

Quand vous devez arrêter proprement une boucle d'organisation planifiée sans laisser de tâches résiduelles.

Quand l'éviter

Si vous souhaitez simplement suspendre temporairement une boucle pour la reprendre plus tard, car cette compétence met un terme définitif au cycle.

Analyse de sécurité

Prudence
Score qualité82/100

The skill performs a legitimate operational stop of a scheduled loop using bash, network calls, and file modifications. It does not instruct destructive or clearly exfiltrating actions, but the token transmission and external package execution warrant caution.

Points d'attention
  • Sends dashboard token via curl to a control server URL defined in control.json; if that URL is malicious, token could be exfiltrated.
  • Executes `npx -y monomind@latest`, which downloads and runs code from the npm registry, introducing supply-chain risk.
  • Modifies org state files and creates stop files without explicit backup or dry-run.

Exemples

Stop a specific org loop
/mastermind:stoporg --org weekly-report
Stop an org by natural language
Stop the scheduled org loop for the marketing org.

name: mastermind-stoporg description: Mastermind stoporg — stop a running scheduled org loop by setting its status to "stopped". The next scheduled wakeup will read the status, skip all work, and not reschedule. Loop dies within one interval — no orphaned wakeups. type: domain-skill default_mode: auto

Mastermind Stop Org

This skill is invoked by mastermind:stoporg or directly via /mastermind:stoporg.


Inputs

  • org_name: name of the org to stop (matches .monomind/orgs/<org_name>.json)
  • session_id: session ID generated by the command wrapper
  • caller: command | master

Step 0 — Brain Load (standalone only)

If caller is not "command", load brain context following mastermind-protocol/SKILL.md Brain Load Procedure with namespace: ops.


Step 1 — Validate Org

orgFile=".monomind/orgs/${org_name}.json"
[ ! -f "$orgFile" ] && {
  echo "ERROR: Org '${org_name}' not found."
  echo "Available orgs: $(ls .monomind/orgs/*.json 2>/dev/null | grep -vE -- '-approvals|-state|-activity|-goals|-routines|-projects|-members|-issues|-workspaces|-worktrees|-environments|-plugins|-adapters|-bootstrap|-threads|-budgets|-project-workspaces|-approval-comments' | xargs -I{} basename {} .json | tr '\n' ' ')"
  exit 1
}

Read current status:

current_status=$(jq -r '.status // "no-schedule"' "$orgFile")
has_schedule=$(jq -r 'if .loop.poll_interval_minutes then "yes" else "no" end' "$orgFile")

If has_schedule == "no" — this is a v2 org (Org Runtime v2 has schedule, never .loop). Its daemon polls .monomind/orgs/<name>/stop every 2s, which is exactly what monomind org stop writes — use the CLI, not the v1 .stops/ path:

REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
CTRL_URL=$(jq -r '.url // "http://localhost:4242"' "$REPO_ROOT/.monomind/control.json" 2>/dev/null || echo "http://localhost:4242")
npx -y monomind@latest org stop "${org_name}" \
  || { mkdir -p ".monomind/orgs/${org_name}"; date -u +%Y-%m-%dT%H:%M:%SZ > ".monomind/orgs/${org_name}/stop"; }
# Also POST to the control server in case a dashboard-started instance is running
curl -s -X POST -H "x-monomind-token: $(cat "${REPO_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/.monomind/dashboard-token" 2>/dev/null || true)" "${CTRL_URL}/api/orgs/${org_name}/stop" >/dev/null 2>&1 || true
echo "Stop requested for org '${org_name}' (v2 daemon exits within 2s)."
  • Exit.
<!-- LEGACY-ORG-V1: remove this branch when v1 orgs are gone -->

Everything below this point only runs for v1 orgs — v2 orgs already exited above.

If current_status == "stopped":

  • Print: "Org '<org_name>' is already stopped."
  • Exit.

<!-- LEGACY-ORG-V1: remove this step when v1 orgs are gone -->

Step 2 — Set Status to Stopped and Clear next_run (v1 only)

orgFile=".monomind/orgs/${org_name}.json"
tmp="${orgFile}.tmp"
# Clear next_run to avoid showing a stale future timestamp in orgstatus
jq '.status = "stopped" | if .loop then .loop.next_run = null else . end' "$orgFile" > "$tmp" && mv "$tmp" "$orgFile"

<!-- LEGACY-ORG-V1: remove this step when v1 orgs are gone -->

Step 3 — Write Stop File (for any running boss agents, v1 only)

Any persistent boss agent checks for this file at the start of each loop iteration:

mkdir -p .monomind/orgs/.stops
touch ".monomind/orgs/.stops/${org_name}.stop"

<!-- LEGACY-ORG-V1: remove this step when v1 orgs are gone -->

Step 5 — Report to User (v1 only)

✓ Org "<org_name>" stopped.

  Current status: stopped
  The loop will exit at its next scheduled wakeup without rescheduling.
  Loop fully dead within: ≤$(jq -r '.loop.poll_interval_minutes // "?"' "$orgFile") minutes

  To restart: /mastermind:runorg --org <org_name>
  Status:     /mastermind:orgstatus --org <org_name>

Step 6 — Return Output

domain: ops
status: complete
decisions:
  - what: "Org <org_name> stopped"
    why: "status set to 'stopped'; next wakeup exits without rescheduling"
    confidence: 1.0
    outcome: shipped
next_actions:
  - "To restart: /mastermind:runorg --org <org_name>"
  - "To check current state: /mastermind:orgstatus --org <org_name>"

Step 7 — Brain Write (standalone only)

If caller is not "command", follow mastermind-protocol/SKILL.md Brain Write Procedure for domain ops.

Skills similaires