Skip to content
Back to skills

Mastermind Routine Detail

BSecurity

Mastermind routine-detail — inspect and manage one routine: trigger, variables, concurrency and catch-up policy, run history, webhook rotation, revisions.

  • 21 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added September 10, 2026
ai-agentspythongobashexpressgitapi

Works with

  • api

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned October 1, 2026

npx -y skills add monoes/monomind --skill mastermind-routine-detail --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mastermind Routine Detail?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mastermind Routine Detail
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/monoes-mastermind-routine-detail/badge)](https://www.skillsdirectory.com/skills/monoes-mastermind-routine-detail)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mastermind-routine-detail
description: "Mastermind routine-detail — inspect and manage one routine: trigger, variables, concurrency and catch-up policy, run history, webhook rotation, revisions."
type: domain-skill
default_mode: auto
pick: low
---

# Mastermind Routine Detail

This skill is invoked directly via `/mastermind-routine-detail`.

---

## Inputs

- `brain_context`: BRAIN CONTEXT block (injected by command, or loaded below if standalone)
- `org_name`: org the routine belongs to (required)
- `routine_id`: routine id/slug (required)
- `action`: show | runs | config | variables | rotate-webhook | revisions
- `days`: lookback window for run history (default 14)
- `var_key`: variable key (for variables --set)
- `var_value`: variable value
- `caller`: command | master

---

## Trigger Types

| Kind | Description |
|------|-------------|
| `schedule` | Cron expression — agent fires on schedule |
| `webhook` | HTTP POST to generated endpoint; signed via signing_mode |

## Signing Modes (webhook only)

| Mode | Description |
|------|-------------|
| `none` | No signature verification |
| `bearer` | Authorization: Bearer <token> header |
| `hmac_sha256` | X-Hub-Signature-256 header (HMAC-SHA256 of body) |
| `github_hmac` | GitHub-style HMAC — identical to hmac_sha256 + secret stored in mastermind:secrets |

## Concurrency Policies

| Policy | Behavior |
|--------|----------|
| `coalesce_if_active` | Skip trigger if a run is already active; record as coalesced |
| `always_enqueue` | Always create a new run regardless of active runs |
| `skip_if_active` | Silently discard trigger if a run is active |

## Catchup Policies (schedule only)

| Policy | Behavior |
|--------|----------|
| `skip_missed` | Missed scheduled runs are discarded |
| `enqueue_missed_with_cap` | Enqueue missed runs up to `catchup_cap` (default 3) |

---

## 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 — Load Routine Data

```bash
orgFile=".monomind/orgs/${org_name}.json"
[ ! -f "$orgFile" ] && { echo "ERROR: Org '${org_name}' not found."; exit 1; }

routinesFile=".monomind/orgs/${org_name}-routines.json"
[ ! -f "$routinesFile" ] && { echo "ERROR: No routines file for org '$org_name'. Create routines first via /mastermind:runorg."; exit 1; }

routineDef=$(jq -r --arg id "$routine_id" '(.routines // [])[] | select(.id == $id)' "$routinesFile")
[ -z "$routineDef" ] && { echo "ERROR: Routine '$routine_id' not found in org '$org_name'."; exit 1; }

stateFile=".monomind/orgs/${org_name}-state.json"
days=${days:-14}
cutoff=$(date -u -v-${days}d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d "${days} days ago" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || echo "")
```

---

## Step 2 — Execute Action

### show (default)

```bash
echo "ROUTINE DETAIL — $routine_id @ $org_name"
echo "────────────────────────────────────────────────────────"

echo "$routineDef" | jq -r '
  "  ID:              \(.id)",
  "  Name:            \(.name // "-")",
  "  Assigned agent:  \(.agent_id // "(any)")",
  "  Enabled:         \(.enabled // false)",
  "",
  "TRIGGER",
  "  Kind:            \(.trigger.kind // "schedule")",
  (if (.trigger.kind // "schedule") == "schedule" then
    "  Cron:            \(.trigger.cron // "-")",
    "  Catchup policy:  \(.catchup_policy // "skip_missed")",
    "  Catchup cap:     \(.catchup_cap // 3 | tostring)"
  else
    "  Endpoint:        \(.trigger.endpoint // "(not generated)")",
    "  Signing mode:    \(.trigger.signing_mode // "none")"
  end),
  "",
  "CONCURRENCY",
  "  Policy:          \(.concurrency_policy // "coalesce_if_active")",
  "",
  "VARIABLES",
  "  Count:           \((.variables // {}) | length | tostring)"
'

# Show last run summary from state
lastRun=$([ -f "$stateFile" ] && jq -r --arg id "$routine_id" '.routines[$id].last_run // "-"' "$stateFile" || echo "-")
runCount=$([ -f "$stateFile" ] && jq -r --arg id "$routine_id" '.routines[$id].run_count // 0' "$stateFile" || echo "0")
echo ""
echo "  Last run:   $lastRun"
echo "  Run count:  $runCount"
```

### runs

```bash
echo "RUN HISTORY — $routine_id (last ${days} days)"
echo "────────────────────────────────────────────────────────"
printf "%-26s %-12s %-8s %-14s %s\n" "TIMESTAMP" "STATUS" "TOKENS" "TRIGGER KIND" "COALESCED"
echo "────────────────────────────────────────────────────────"

runsFile=".monomind/orgs/${org_name}-routine-runs.jsonl"
found=0

if [ -f "$runsFile" ]; then
  while IFS= read -r line; do
    rid=$(echo "$line" | jq -r '.routine_id // ""')
    [ "$rid" != "$routine_id" ] && continue
    ts=$(echo "$line" | jq -r '.ts // ""')
    [ -n "$cutoff" ] && [ "$ts" \< "$cutoff" ] && continue
    st=$(echo "$line" | jq -r '.status // "-"')
    tok=$(echo "$line" | jq -r '.tokens // "-"')
    tkind=$(echo "$line" | jq -r '.trigger_kind // "schedule"')
    coal=$(echo "$line" | jq -r 'if .coalesced then "yes" else "-" end')
    printf "%-26s %-12s %-8s %-14s %s\n" "$ts" "$st" "$tok" "$tkind" "$coal"
    found=$((found + 1))
  done < "$runsFile"
fi

[ "$found" -eq 0 ] && echo "  No runs in the last $days days."
```

### config

```bash
echo "FULL CONFIG — $routine_id"
echo "────────────────────────────────────────────────────────"
echo "$routineDef" | jq 'del(.variables)'
echo ""
echo "TRIGGER DETAIL"
echo "$routineDef" | jq '.trigger'
```

### variables

```bash
echo "VARIABLES — $routine_id"
echo "────────────────────────────────────────────────────────"

vars=$(echo "$routineDef" | jq -r '.variables // {} | to_entries[] | "  \(.key) = \(.value)"')
[ -z "$vars" ] && echo "  No variables defined." || echo "$vars"

# Set a variable if var_key provided
if [ -n "$var_key" ]; then
  [ -z "$var_value" ] && { echo "ERROR: --var-value required when setting a variable."; exit 1; }
  tmp="${routinesFile}.tmp"
  jq --arg id "$routine_id" --arg k "$var_key" --arg v "$var_value" \
    '.routines = [(.routines // [])[] | if .id == $id then .variables[$k] = $v else . end]' \
    "$routinesFile" > "$tmp" && mv "$tmp" "$routinesFile"
  echo ""
  echo "Set variable: $var_key = $var_value"
fi
```

### rotate-webhook

```bash
triggerKind=$(echo "$routineDef" | jq -r '.trigger.kind // "schedule"')
[ "$triggerKind" != "webhook" ] && { echo "ERROR: Routine '$routine_id' is not a webhook-triggered routine."; exit 1; }

newToken=$(openssl rand -hex 24 2>/dev/null || python3 -c "import secrets; print(secrets.token_hex(24))")
newEndpoint="/api/webhook/${org_name}/${routine_id}/${newToken}"
ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)

tmp="${routinesFile}.tmp"
jq --arg id "$routine_id" --arg ep "$newEndpoint" --arg ts "$ts" \
  '.routines = [(.routines // [])[] | if .id == $id then
     .trigger.endpoint = $ep | .trigger.rotated_at = $ts
   else . end]' \
  "$routinesFile" > "$tmp" && mv "$tmp" "$routinesFile"

echo "Webhook rotated for '$routine_id'"
echo "  New endpoint: $newEndpoint"
echo "  Rotated at:   $ts"
echo ""
echo "Update your webhook source to use the new endpoint."
signingMode=$(echo "$routineDef" | jq -r '.trigger.signing_mode // "none"')
[ "$signingMode" != "none" ] && echo "  Signing mode '$signingMode' is unchanged — re-generate the signing secret if required."
```

### revisions

```bash
revisionsFile=".monomind/orgs/${org_name}-routine-revisions.jsonl"
echo "REVISIONS — $routine_id"
echo "────────────────────────────────────────────────────────"

if [ ! -f "$revisionsFile" ]; then
  echo "  No revision history found."
else
  found=0
  while IFS= read -r line; do
    rid=$(echo "$line" | jq -r '.routine_id // ""')
    [ "$rid" != "$routine_id" ] && continue
    ts=$(echo "$line" | jq -r '.ts // ""')
    who=$(echo "$line" | jq -r '.changed_by // "system"')
    what=$(echo "$line" | jq -r '.change_summary // "-"')
    printf "  [%s] by %-16s  %s\n" "$ts" "$who" "$what"
    found=$((found + 1))
  done < "$revisionsFile"
  [ "$found" -eq 0 ] && echo "  No revisions found for '$routine_id'."
fi
```

---

## Step 3 — Return Output

```yaml
domain: ops
status: complete
action: <action>
org: <org_name>
routine_id: <routine_id>
trigger_kind: <schedule|webhook>
```

---

## Step 4 — Brain Write (standalone only)

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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.