OPS on-demand: This skill should be used when the user asks to "recap daemon", "tmux marquee", or…

MITAuto-check: notes

Install Ops Recap

skills CLI
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-recap -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-recap --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude-ops/skills/ops-recap .claude/skills/ops-recap && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ops-recap
GitHub stars
542
Token cost
~2.7k tokens
SKILL.md length
470 words
Files
1
Skills in repo
67
Repo updated
First seen
Licence
MIT

At a glance

OPS on-demand: This skill should be used when the user asks to "recap daemon", "tmux marquee", or…

  • Works in 4 steps: Check tmux availability — if missing,… → Check current ~/.tmux.conf → If existing is non-empty, AskUserQuestion → …
  • Asks to recap daemon
  • SKILL.md covers Subcommand: status (default), Subcommand: tail, Subcommand: configure and Subcommand: restart, plus 2 more sections
  • Calls jq and claude

What it does

Ops Recap is an agent skill from Lifecycle-Innovations-Limited/claude-ops. OPS on-demand: This skill should be used when the user asks to "recap daemon", "tmux marquee", or…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with tmux. The repository describes itself as: Business operating system for Claude Code — 57 skills, 21 agents, smart daemon. Unified inbox (WhatsApp/Email/Slack/Telegram), autonomous PR merge, full-AWS monitoring, revenue… The licence is MIT.

When your agent uses it

  • Asks to recap daemon

Example prompts

  • “recap daemon”
  • “tmux marquee”
  • “/ops-recap”

Requirements

  • Pre-approved tools (allowed-tools): Bash, Read, Write, Edit, AskUserQuestion

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Check tmux availability — if missing, jump to the statusLine fallback flow below
  2. Check current ~/.tmux.conf
  3. If existing is non-empty, AskUserQuestion
  4. On append: insert the marquee snippet ahead of the existing setting so both render. On replace: comment out the old line and add the new…

What it can do on your machine

Read from SKILL.md and the folder at commit ee9c784. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • Edit
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq
    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ops Recap loads about 2.7k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 470 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~27
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, Edit, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Lifecycle-Innovations-Limited/claude-ops at commit ee9c784, republished under its MIT licence (© Lifecycle-Innovations-Limited). 470 words, ~2,745 tokens.

Download SKILL.mdSave it as .claude/skills/ops-recap/SKILL.md (or your agent's skills folder).
name
ops-recap
description
OPS on-demand: This skill should be used when the user asks to "recap daemon", "tmux marquee", or…
allowed-tools
Bash, Read, Write, Edit, AskUserQuestion
argument-hint
[status|tail|configure|restart]
effort
low
maxTurns
12

OPS ► RECAP

Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).

The recap marquee is a launchd-managed daemon that aggregates per-session Claude transcripts (via the recap-capture Stop hook) and per-tool activity (via the recap-tool-activity PostToolUse hook) into a single rolling headline at /tmp/claude-recap-digest. Tmux reads that file every refresh interval via scripts/recap/marquee.sh and scrolls it across status-right.

Files:

PathRole
${CLAUDE_PLUGIN_ROOT}/scripts/recap/daemon.shBackground loop — polls inputs, calls digest.sh when stale
${CLAUDE_PLUGIN_ROOT}/scripts/recap/digest.shSynthesizes one-line digest via claude -p (session default model; OPS_RECAP_MODEL overrides)
${CLAUDE_PLUGIN_ROOT}/scripts/recap/marquee.shTmux-side scroller (called from status-right)
${CLAUDE_PLUGIN_ROOT}/hooks/recap-capture.shStop hook → writes /tmp/claude-recap-<sid>
${CLAUDE_PLUGIN_ROOT}/hooks/recap-tool-activity.shPostToolUse hook → live activity per session
~/Library/LaunchAgents/com.claude-ops.recap-daemon.plistLaunchd agent (macOS)
/tmp/claude-recap-digestRolling one-liner (read by tmux + marquee.sh)
/tmp/claude-recap-daemon.logDaemon log (rotated at 500KB)
/tmp/claude-recap-digest.logLast 50 generated digests, chronological

Subcommand: status (default)

Print a compact health panel:

bash
PLIST=~/Library/LaunchAgents/com.claude-ops.recap-daemon.plist
LABEL=com.claude-ops.recap-daemon
DIGEST=/tmp/claude-recap-digest
DAEMON_LOG=/tmp/claude-recap-daemon.log

# Plist installed?
if [ -f "$PLIST" ]; then echo "✓ plist installed: $PLIST"; else echo "✗ plist missing"; fi

# Launchd loaded?
launchctl print "gui/$(id -u)/${LABEL}" >/dev/null 2>&1 \
  && echo "✓ launchd loaded ($LABEL)" \
  || echo "✗ launchd not loaded — run /ops:recap restart"

# Daemon process alive?
if [ -f /tmp/claude-recap-daemon.pid ]; then
  pid=$(cat /tmp/claude-recap-daemon.pid)
  kill -0 "$pid" 2>/dev/null && echo "✓ daemon alive (pid $pid)" || echo "✗ stale pid file"
else
  echo "✗ no pid file"
fi

# Digest freshness
if [ -f "$DIGEST" ]; then
  age=$(($(date +%s) - $(stat -f %m "$DIGEST" 2>/dev/null || stat -c %Y "$DIGEST" 2>/dev/null || echo 0)))
  echo "✓ digest age: ${age}s"
  echo "  preview: $(head -c 120 "$DIGEST")..."
else
  echo "✗ digest file missing — daemon may not have produced one yet"
fi

# Log size
if [ -f "$DAEMON_LOG" ]; then
  bytes=$(stat -f %z "$DAEMON_LOG" 2>/dev/null || stat -c %s "$DAEMON_LOG" 2>/dev/null)
  echo "  log: $DAEMON_LOG (${bytes} bytes)"
fi

# tmux integration?
# Display surfaces — tmux status-right + Claude Code statusLine can coexist
tmux_wired=0
statusline_wired=0

if command -v tmux >/dev/null 2>&1; then
  if grep -q claude-recap "$HOME/.tmux.conf" 2>/dev/null; then
    echo "✓ tmux status-right wired"
    tmux_wired=1
  else
    echo "○ tmux installed but status-right not wired — run /ops:recap configure"
  fi
else
  echo "○ tmux not installed"
fi

SETTINGS="$HOME/.claude/settings.json"
statusline_check_skipped=0
if ! command -v jq >/dev/null 2>&1; then
  echo "○ Claude Code statusLine — cannot check (jq not installed; install via 'brew install jq' or your distro's package manager)"
  statusline_check_skipped=1
elif [ ! -f "$SETTINGS" ]; then
  echo "○ Claude Code statusLine — no ~/.claude/settings.json found (run Claude Code at least once, or run /ops:recap configure to create one)"
  statusline_check_skipped=1
else
  sl_cmd=$(jq -r '.statusLine.command // empty' "$SETTINGS" 2>/dev/null)
  if echo "$sl_cmd" | grep -q claude-recap-digest; then
    echo "✓ Claude Code statusLine wired"
    statusline_wired=1
  else
    echo "○ Claude Code statusLine not wired — run /ops:recap configure"
  fi
fi

# Only warn "no display surface active" when we actually verified both surfaces.
# If statusline check was skipped due to missing prerequisites, statusline_wired
# being 0 is uninformative — surface that explicitly instead of misleading text.
if [ "$tmux_wired" -eq 0 ] && [ "$statusline_wired" -eq 0 ]; then
  if [ "$statusline_check_skipped" -eq 1 ]; then
    echo "  → tmux not wired; statusLine status unknown (prerequisite missing — see above). Daemon still produces /tmp/claude-recap-digest (useful for /ops:recap tail)."
  else
    echo "  → no display surface active. Daemon still produces /tmp/claude-recap-digest (useful for /ops:recap tail)."
  fi
fi

Subcommand: tail

Stream the rolling digest log:

bash
echo "─── Last 20 generated digests ───"
tail -n 20 /tmp/claude-recap-digest.log 2>/dev/null || echo "(no digest log yet)"
echo
echo "─── Daemon log (tail 30) ───"
tail -n 30 /tmp/claude-recap-daemon.log 2>/dev/null || echo "(no daemon log yet)"

Subcommand: configure

Walk the user through display-surface integration. Two surfaces are supported and they can coexist: tmux status-right and Claude Code statusLine (~/.claude/settings.json). Detect existing config first to avoid clobbering.

  1. Check tmux availability — if missing, jump to the statusLine fallback flow below:

    bash
    if ! command -v tmux >/dev/null 2>&1; then
      echo "tmux not installed — offering Claude Code statusLine fallback."
      # → see "statusLine fallback" section below
    fi
  2. Check current ~/.tmux.conf:

    bash
    TMUX_CONF="$HOME/.tmux.conf"
    tmux_already_wired=0
    if grep -q claude-recap "$TMUX_CONF" 2>/dev/null; then
      echo "✓ tmux status-right already configured."
      tmux_already_wired=1
    fi
    existing=$(grep -E '^\s*set\s+-g\s+status-right' "$TMUX_CONF" 2>/dev/null | head -1)

    Steps 3–5 only apply when tmux is not already wired (tmux_already_wired=0):

  3. If existing is non-empty, AskUserQuestion:

    • Question: "Existing tmux status-right detected: $existing. Append recap marquee?"
    • Options: [Append (keep existing)] [Replace with recap-only] [Skip]
  4. On append: insert the marquee snippet ahead of the existing setting so both render. On replace: comment out the old line and add the new one.

    Snippet to append — expand the plugin path when writing ~/.tmux.conf (tmux #() does not expand env vars):

    bash
    PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(ls -d "$HOME/.claude/plugins/cache/ops-marketplace/ops"/*/ 2>/dev/null | sort -V | tail -1)}"
    cat >> "$TMUX_CONF" <<TMUX

claude-ops recap marquee

set -g status-right '#('"${PLUGIN_ROOT}"'/scripts/recap/marquee.sh) #[fg=#a6e3a1]%H:%M ' set -g status-interval 2 TMUX

  1. Reload if tmux is running:
bash
tmux info >/dev/null 2>&1 && tmux source-file "$TMUX_CONF" 2>/dev/null
Show full SKILL.md (273 more words)Show less
configure — statusLine fallback (no tmux, or in addition to tmux)

When tmux is missing — or the user wants a second surface — wire the recap into Claude Code's own status bar via ~/.claude/settings.json.

  1. AskUserQuestion (Rule 1 — exactly 4 options):

    Wire recap into Claude Code statusLine (~/.claude/settings.json)?
      [Add to Claude Code statusLine]  [Show me the JSON, I'll add manually]  [Skip]  [Help]
  2. On Add to Claude Code statusLine, detect existing entry:

    bash
    SETTINGS="$HOME/.claude/settings.json"
    mkdir -p "$(dirname "$SETTINGS")"
    [ -f "$SETTINGS" ] || echo '{}' > "$SETTINGS"
    existing=$(jq -r '.statusLine // empty' "$SETTINGS")
  3. If existing is non-empty, ask (Rule 1 — 3 options):

    Existing statusLine detected. How to handle?
      [Replace with recap]  [Append after current (chain commands)]  [Skip]
  4. Merge with jq so other settings are preserved:

    bash
    TMP=$(mktemp)
    jq '.statusLine = {
      "type": "command",
      "command": "cat /tmp/claude-recap-digest 2>/dev/null | head -c 80",
      "refreshInterval": 30
    }' "$SETTINGS" > "$TMP" && mv "$TMP" "$SETTINGS"

    For the append branch, chain commands so both render side-by-side:

    bash
    prev_cmd=$(jq -r '.statusLine.command // ""' "$SETTINGS")
    if [ -n "$prev_cmd" ]; then
      new_cmd="${prev_cmd}; cat /tmp/claude-recap-digest 2>/dev/null | head -c 80"
    else
      new_cmd="cat /tmp/claude-recap-digest 2>/dev/null | head -c 80"
    fi
    TMP=$(mktemp)
    jq --arg cmd "$new_cmd" '.statusLine.command = $cmd' "$SETTINGS" > "$TMP" && mv "$TMP" "$SETTINGS"
  5. Print: ✓ Claude Code statusLine wired — restart Claude Code (or open a new session) to activate.

The JSON snippet (for the manual / Show me the JSON path):

json
{
  "statusLine": {
    "type": "command",
    "command": "cat /tmp/claude-recap-digest 2>/dev/null | head -c 80",
    "refreshInterval": 30
  }
}

Subcommand: restart

Reload the launchd agent without reconfiguring:

bash
LABEL=com.claude-ops.recap-daemon
PLIST=~/Library/LaunchAgents/com.claude-ops.recap-daemon.plist
launchctl bootout "gui/$(id -u)/${LABEL}" 2>/dev/null || true
rm -rf /tmp/claude-recap-daemon.lock /tmp/claude-recap-daemon.pid
launchctl bootstrap "gui/$(id -u)" "$PLIST" && echo "✓ daemon restarted"

Linux / systemd alternative

The launchd plist is macOS-only. Linux users can wrap scripts/recap/daemon.sh in a systemd --user unit. Minimal example (~/.config/systemd/user/claude-recap-daemon.service):

ini
[Unit]
Description=Claude Ops Recap Daemon
After=default.target

[Service]
Type=simple
ExecStart=/bin/sh %h/.claude/plugins/cache/ops-marketplace/ops/CURRENT/scripts/recap/daemon.sh
Restart=always
RestartSec=30

[Install]
WantedBy=default.target

Then systemctl --user daemon-reload && systemctl --user enable --now claude-recap-daemon. The CLI subcommands above (status / tail / restart) won't auto-detect systemd — use systemctl --user status claude-recap-daemon directly.

Invocation

/ops:recap (alias: shows status). Subcommand parsing:

bash
sub="${1:-status}"
case "$sub" in
  status|tail|configure|restart) ;;
  *) echo "Unknown subcommand: $sub. Try: status | tail | configure | restart"; exit 1 ;;
esac

© Lifecycle-Innovations-Limited, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in claude-ops/skills/ops-recap of Lifecycle-Innovations-Limited/claude-ops.

Open the folder on GitHubat commit ee9c784

Compare with similar skills

Ops Recap next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ops Recap compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ops Recap this skillLifecycle-Innovations-Limited/claude-ops542—~2.7kAutomated safety check: NotesMIT
1passwordtrpc-group/trpc-agent-go1.9k14 repos~656Automated safety check: PassApache-2.0
CodeGraph Agent Evalcolbymchenry/codegraph74k—~950Automated safety check: PassMIT
Tmuxtrpc-group/trpc-agent-go1.9k23 repos~868Automated safety check: PassApache-2.0
CodexBar Live QAsteipete/CodexBar22k—~1.2kAutomated safety check: PassMIT
Tmuxopenclaw/openclaw392k1 repos~640Automated safety check: PassMIT

Similar skills

  • 1password

    trpc-group/trpc-agent-go

    Set up and use 1Password CLI (op). An agent skill from trpc-group/trpc-agent-go.

    1.9k GitHub starsUsed in 14 repos~656 tokens
    AI & LLM EngineeringAuto-check passed
  • CodeGraph Agent Eval

    colbymchenry/codegraph

    Benchmarks how much CodeGraph helps a coding agent on a real repository, comparing runs with and without it for a chosen local or published version.

    74k GitHub stars~950 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Tmux

    trpc-group/trpc-agent-go

    Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.

    1.9k GitHub starsUsed in 23 repos~868 tokens
    Data & AnalyticsAuto-check passed
  • CodexBar Live QA

    steipete/CodexBar

    Runs live QA for the CodexBar app: provider usage matrix checks through its packaged CLI, config validation and menu checks, with 1Password-backed credentials handled safely.

    22k GitHub stars~1.2k tokensUpdated today
    Testing & QAAuto-check passed
  • Tmux

    openclaw/openclaw

    Control tmux sessions/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.

    392k GitHub starsUsed in 1 repo~640 tokens
    Auto-check passed
  • Reproduces a feature from Codex or Claude Code in Qwen Code by running the reference agent under capture, reading the traces, then implementing matching behavior.

    28k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed

More from Lifecycle-Innovations-Limited/claude-ops

All 67 skills in this repo
  • Ops Dash

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "ops dashboard", "pixel HQ", or…

    542 GitHub stars~4.7k tokensUpdated yesterday
    Auto-check: notes
  • Ops Gtm

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "go to market", "GTM plan", or…

    542 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check: notes
  • Ops Marketing

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…

    542 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Ops Socials

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "tweet", "post to linkedin", or…

    542 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check: notes
  • Ops Yolo

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "yolo mode", "run the business today"…

    542 GitHub stars~4k tokensUpdated yesterday
    Auto-check: notes
  • Ops Monitor

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "datadog", "APM alerts", or…

    542 GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check: notes

Works with

Questions about Ops Recap

What does Ops Recap do?

OPS on-demand: This skill should be used when the user asks to "recap daemon", "tmux marquee", or…. Ops Recap is an agent skill from Lifecycle-Innovations-Limited/claude-ops.

When should I use Ops Recap?

Ops Recap fits situations like: asks to recap daemon.

How do I install Ops Recap in Claude Code?

Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-recap -a claude-code`. Or copy the skill folder (claude-ops/skills/ops-recap in Lifecycle-Innovations-Limited/claude-ops) into .claude/skills/ops-recap in your project. Claude Code loads it when a task matches its description.

How do I install Ops Recap in Codex?

Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-recap -a codex`. Or copy the skill folder (claude-ops/skills/ops-recap in Lifecycle-Innovations-Limited/claude-ops) into .agents/skills/ops-recap in your project. Codex loads it when a task matches its description.

Can I use Ops Recap in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-recap -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops-recap, .gemini/skills/ops-recap, .github/skills/ops-recap and .opencode/skills/ops-recap in your project.

What does Ops Recap need to run?

Going by SKILL.md and its folder, Ops Recap needs the command-line tools its instructions call (jq and claude). Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, AskUserQuestion.

Does Ops Recap access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ops Recap safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Ops Recap use?

Ops Recap is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ops Recap use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ops Recap?

Skills that share tags, products or a category with Ops Recap: 1password (trpc-group/trpc-agent-go, 1.9k stars), CodeGraph Agent Eval (colbymchenry/codegraph, 74k stars), Tmux (trpc-group/trpc-agent-go, 1.9k stars) and CodexBar Live QA (steipete/CodexBar, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ops Recap?

Lifecycle-Innovations-Limited (a GitHub organization) maintains it in Lifecycle-Innovations-Limited/claude-ops, which has 542 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 10, 2026.

Source: Lifecycle-Innovations-Limited/claude-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.