# Health

> Gmail Commander health check across all subsystems. TRIGGERS - gmail health, email bot status, gmail diagnostics, gmail bot check.

- Skill: `terrylica/health-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add terrylica/health-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/terrylica/health-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: terrylica (https://skillmd.com/u/terrylica)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/terrylica/health-2

---


# Gmail Commander Health Check

Run diagnostics across all subsystems.

> **Self-Evolving Skill**: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

## Check All Subsystems

```bash
echo "=== 1. Gmail CLI Binary ==="
ls -la "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/gmail-commander/scripts/gmail-cli/gmail" 2>/dev/null && echo "OK" || echo "MISSING — run: cd scripts/gmail-cli && bun install && bun run build"

echo ""
echo "=== 2. Environment Variables ==="
echo "GMAIL_OP_UUID: ${GMAIL_OP_UUID:+SET}"
echo "TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:+SET}"
echo "TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID:-NOT_SET}"
echo "HAIKU_MODEL: ${HAIKU_MODEL:-NOT_SET}"
echo "OP_SERVICE_ACCOUNT_TOKEN: ${OP_SERVICE_ACCOUNT_TOKEN:+SET}"

echo ""
echo "=== 3. 1Password CLI ==="
op account list 2>&1 | head -3

echo ""
echo "=== 4. Bot Process ==="
if [ -f /tmp/gmail-commander-bot.pid ]; then
  PID=$(cat /tmp/gmail-commander-bot.pid)
  if kill -0 "$PID" 2>/dev/null; then
    echo "Running (PID $PID)"
  else
    echo "STALE PID file (process $PID not found)"
  fi
else
  echo "Not running"
fi

echo ""
echo "=== 5. Digest Process ==="
if [ -f /tmp/gmail-digest.pid ]; then
  PID=$(cat /tmp/gmail-digest.pid)
  if kill -0 "$PID" 2>/dev/null; then
    echo "Running (PID $PID)"
  else
    echo "Not running (stale PID)"
  fi
else
  echo "Not running"
fi

echo ""
echo "=== 6. launchd Jobs ==="
launchctl list | grep gmail-commander 2>/dev/null || echo "No launchd jobs registered"

echo ""
echo "=== 7. Circuit Breakers ==="
for f in /tmp/gmail-digest-circuit.json /tmp/gmail-commander-agent-circuit.json; do
  if [ -f "$f" ]; then
    echo "$(basename $f): $(cat $f)"
  else
    echo "$(basename $f): CLOSED (healthy)"
  fi
done

echo ""
echo "=== 8. Recent Audit Logs ==="
AUDIT_DIR="${AUDIT_DIR:-$HOME/own/amonic/logs/audit}"
if [ -d "$AUDIT_DIR" ]; then
  LATEST=$(ls -t "$AUDIT_DIR"/*.ndjson 2>/dev/null | head -1)
  if [ -n "$LATEST" ]; then
    echo "Latest: $(basename $LATEST)"
    tail -5 "$LATEST" | while read -r line; do
      echo "  $line" | cut -c1-120
    done
  else
    echo "No audit logs found"
  fi
else
  echo "Audit directory not found: $AUDIT_DIR"
fi
```


## Post-Execution Reflection

After this skill completes, check before closing:

1. **Did the command succeed?** — If not, fix the instruction or error table that caused the failure.
2. **Did parameters or output change?** — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
3. **Was a workaround needed?** — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

