Ops Speedup logo

Ops Speedup

Organization
Lifecycle-Innovations-Limited
ops-speedup

OPS on-demand: This skill should be used when the user asks to "speed up this mac", "clean disk", or…

Overview

PublisherLifecycle-Innovations-Limited
Repositoryclaude-ops
Skill nameops-speedup
Stars
543
Forks
64
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by Lifecycle-Innovations-Limited on GitHub. Read the source before you install it.

Installation

Install the Ops Speedup AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-speedup
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git /tmp/claude-ops
mkdir -p .claude/skills
cp -r /tmp/claude-ops/claude-ops/skills/ops-speedup .claude/skills/ops-speedup
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Ops Speedup in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Ops Speedup on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Ops Speedup is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Heartbeat-triggered runs

When asked to run a newly configured session heartbeat, read its saved prompt from the active Hermes database's state_meta entry heartbeat:<session_id>. Slash-command setup may not appear in conversation history, config.yaml, or cron/jobs.json. Execute that prompt in the current turn; do not invent a hermes heartbeat CLI command or mark a scheduler fire that did not occur.

Validate scan warnings with short live samples before changing the machine. Existing swap use alone is not active memory pressure; a transient blocked process or CPU spike does not justify cache purges or killing useful workers.

When host memory is available but swapping and stalls persist, inspect memory.high, memory.events, and memory.pressure at EVERY cgroup ancestor, not only the process's leaf. An inherited soft limit can force disk reclaim despite free host RAM. Establish the limit's original purpose before changing it; preserve service headroom, back up persistent settings, and verify that new high-limit events stop. Disk recovery can lag after the limit is corrected; do not call the whole host recovered from a configuration readback alone.

When a memory-limit fix reverts after daemon-reload, inspect all systemd drop-ins, including system.control and ordinary unit overrides. Align the stale conflicting source after backing it up; test a daemon-reload and read the live cgroup limit. A successful set-property alone does not prove reload persistence. Keep separate worker hard limits intact; diagnose worker heap settings against those limits rather than raising them indiscriminately.

Runtime Context

Before scanning, load:

  1. Preferences: cat ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json — read timezone for timestamps

OPS > SPEEDUP — System Optimizer

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).

Architecture

The bin/ops-speedup binary is the single source of truth for probes AND actions. This skill's job is to:

  1. Call the binary with the right flags based on user intent
  2. Parse the JSON
  3. Present a health score + cleanup report
  4. Confirm destructive actions per plugin Rule 5
  5. Invoke the binary's clean/deep/aggressive modes to execute

CLI Reference — bin/ops-speedup

CommandPurposeSide effects
ops-speedupVisual banner + hardware summaryNone
ops-speedup --jsonQuick JSON diagnostics (disk/mem/net only)None
ops-speedup --scanFull parallel probe: disk + mem + CPU hogs + power hogs + GPU/ANE + startupNone
ops-speedup --cleanSafe cleanup: caches, tmp, logs, demote daemons, DNS flush, kernel tuneNon-destructive
ops-speedup --deep--clean + Trash, DerivedData, simulators, animation cuts, launch-agent killRemoves files
ops-speedup --aggressive--deep + unload launch agents, docker --volumes, stale node_modules (>14d), TCP BBRPotentially breaking — confirm first

All modes:

  • Auto-detect OS (macOS / Linux / WSL / Windows) and dispatch OS-specific ops
  • Idempotent — skip DerivedData/Metro/journal if last run was <1h ago
  • Write telemetry to ~/.ops-speedup/history.jsonl
  • Only raise kernel tuning parameters, never lower
  • Protected processes list blocks killing of shells, IDEs, daemons

OS-specific capabilities

CapabilitymacOSLinuxWSLWindows
Disk reclaimable scan✓✓✓limited
Memory + swap✓✓✓limited
CPU hog kill✓✓✓—
Power/Energy Impact✓ (top -stats power)✓ (powertop)——
GPU/Neural Engine✓ (ioreg, no sudo; powermetrics fallback detail when available)✓ (nvidia-smi)——
Launch agent offenders✓———
systemd unit masking—✓✓—
E-core demotion✓ (taskpolicy -b)✓ (renice+ionice)✓—
UI animation cuts✓———
Kernel tune (vnodes/somaxconn)✓✓✓—
TCP BBR—✓ (aggressive)✓ (aggressive)—
DNS flush✓ (dscacheutil)✓ (resolved)✓ (via Windows)—
Memory purge✓ (purge)✓ (drop_caches, aggressive)✓ (aggressive)—
Stale build dir prune (>14d)✓✓✓—

Phase 1 — Visual header

${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup 2>/dev/null || echo "SCAN_FAILED"

Phase 2 — Full diagnostic scan (parallel, all probes)

${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --scan 2>/dev/null || echo '{}'

The binary already runs all probes in parallel. Do NOT add additional serial probe calls from this skill — they will duplicate work that's already in the JSON output.

Phase 3 — Health score + cleanup report

Parse the JSON and render:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SYSTEM SPEEDUP — [os] [os_version] [chip]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 HEALTH SCORE: [health.score] / 100  [runtime-first: health.model]

 RUNTIME
 ────────────────────────────────────────────────────
 CPU idle:     [runtime.cpu_idle_pct]%  user/sys: [runtime.cpu_user_pct]/[runtime.cpu_sys_pct]%
 Load:         [runtime.load1] / [runtime.load5] / [runtime.load15]
 Processes:    [runtime.processes] total, [runtime.running] running, [runtime.stuck] uninterruptible, [runtime.zombies] zombies

 GPU
 ────────────────────────────────────────────────────
 Device:       [gpu.device_util_pct]%   Renderer: [gpu.renderer_util_pct]%   Tiler: [gpu.tiler_util_pct]%
 GPU memory:   [gpu.mem_in_use_mb] MB in use / [gpu.mem_allocated_mb] MB allocated

 PID AUDIT
 ────────────────────────────────────────────────────
 Current CPU hogs:       [len(cpu_hogs)] (two samples >30%, not one spike)
 Power hogs:             [len(power_hogs)]
 Long-lived heavy PIDs:  [runtime.long_lived_hogs] actionable / [runtime.long_lived_hogs_total] total (>=3h and high average/current CPU)
 Health factors:         [health.factors or none]

 MEMORY
 ────────────────────────────────────────────────────
 Pressure:    [memory.pressure_pct]% free    Swap: [memory.swap_mb] MB    Free: [memory.free_mb] MB

 NETWORK / TCP
 ────────────────────────────────────────────────────
 Interface:   [network.iface]      DNS: [network.dns_ms]ms
 TCP states:  CLOSE_WAIT [runtime.tcp_close_wait]      TIME_WAIT [runtime.tcp_time_wait]

 DISK (secondary signal; cache size alone does not lower health)
 ────────────────────────────────────────────────────
 brew cache          [N] MB              ✓ safe
 npm cache           [N] MB              ✓ safe
 pnpm cache          [N] MB              ✓ safe
 Xcode DerivedData   [N] MB              ✓ safe
 Xcode DeviceSupport [N] MB              ✓ safe
 Docker reclaimable  [N] MB              ⚠ only prune after checking live containers
 Metal shader cache  [N] MB              ✓ safe
 Trash               [N] MB              ✓ safe
 Logs                [N] MB              ✓ safe
 Downloads           [N] MB              ⚠ review
 Caches (general)    [N] MB              ⚠ review
 /tmp                [N] MB              ✓ safe
 apt/journal         [N] MB              ✓ safe (linux)
 ────────────────────────────────────────────────────
 TOTAL RECLAIMABLE:  [N] GB

 STARTUP (informational)
 ────────────────────────────────────────────────────
 Login items:   [N]              (macOS)
 Launch agents: [N]              (macOS; raw count is not a health penalty)
 Failed units:  [N]              (Linux)
 Enabled units: [N]              (Linux)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Health score contract:

Use health.score from the binary. Do not recalculate it in the skill and do not lower health merely because caches, Trash, Downloads, or launch-agent counts are large. The runtime-first model penalizes only evidence of current pressure or actual risk:

  • sustained low CPU idle / high runnable or uninterruptible process pressure
  • memory pressure below 40%, swap over 1 GB, or zombie accumulation
  • GPU utilization above 75/90%
  • DNS over 100/500 ms, CLOSE_WAIT floods, or high TIME_WAIT accumulation
  • long-lived heavy PIDs (alive at least 3h and high average/current CPU)
  • disk only when it is genuinely scarce (90/97% used), never because cleanup is possible
  • failed startup units, not the mere number of intentional launch agents

Phase 4 — Present cleanup choice (max 4 options per AskUserQuestion)

AskUserQuestion call 1 — Cleanup scope:

  [Quick — caches, tmp, logs, DNS flush (~[N] GB)]
  [Deep — + Trash, DerivedData, simulators, animation cuts (~[N] GB)]
  [Aggressive — + launch-agent unload, stale node_modules, docker volumes (~[N] GB)]
  [More options...]

AskUserQuestion call 2 (only if "More options..."):

  [Custom — pick categories]
  [Memory — kill top RAM hogs]
  [Startup / Network / Skip...]

AskUserQuestion call 3 (only if "Startup / Network / Skip..."):

  [Startup — review & disable launch agents / systemd units]
  [Network — flush DNS, tune TCP, BBR (aggressive)]
  [Skip — just show the report]

Phase 5 — Confirm destructive actions per Rule 5

Per plugin Rule 5, destructive actions require explicit per-action confirmation. Before running --aggressive:

About to run AGGRESSIVE cleanup. Each item is destructive:

  • Unload launch agents: [list]
  • Docker volume prune (may delete unmounted volumes): [N] MB
  • Stale node_modules (>14 days): [list of paths]
  • TCP congestion control → BBR (Linux only)

  [Proceed with all]  [Pick categories]  [Cancel]

If "Pick categories", batch per Rule 1 (max 4 options per AskUserQuestion).

Phase 6 — Execute

Invoke the binary directly — it handles OS detection and dispatch:

bash
# Quick clean
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --clean

# Deep clean
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --deep

# Aggressive (after confirmation)
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --aggressive

Memory hog killing (option 5 from Phase 4):

Top processes are already in the scan JSON (cpu_hogs / power_hogs). Present them in paginated AskUserQuestion calls (max 3 processes + [More...] per page, final page has [Kill selected] + [Skip]).

NEVER kill: kernel_task, launchd, WindowServer, loginwindow, Finder, Dock, systemd, init, shells (bash/zsh/fish), tmux, IDE processes (Cursor/Comet/Code), Claude, node, python, Xcode. The binary's PROTECTED_RE regex blocks these automatically.

Phase 7 — Results

After cleanup, re-scan and diff:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > CLEANUP COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Reclaimed:  [N] GB
 Disk free:  [before] GB → [after] GB
 RAM free:   [before] MB → [after] MB
 Swap:       [before] MB → [after] MB
 Health:     [before]/100 → [after]/100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

History: ~/.ops-speedup/history.jsonl

If user came from /ops:dash, offer b) Back to dashboard.

Mode shortcuts

If $ARGUMENTS is:

  • scan or empty — Phase 1-3 only (report, no cleanup)
  • clean — run ops-speedup --clean automatically (safe)
  • deep — run ops-speedup --deep automatically (after 1 confirmation)
  • auto — run ops-speedup --clean automatically, print results
  • aggressive — run ops-speedup --aggressive after per-item confirmations

Trend analysis

~/.ops-speedup/history.jsonl is append-only. For trend questions ("is my disk filling up?", "is swap growing over time?"), read + graph:

bash
tail -30 ~/.ops-speedup/history.jsonl | jq -r '[.ts, .ram_free_mb, .swap_mb, .disk_pct] | @tsv'

Frequently asked questions

What does the Ops Speedup AI skill do?

OPS on-demand: This skill should be used when the user asks to "speed up this mac", "clean disk", or…

Why use Ops Speedup on TypingMind?

Because you install it once and use it with any model. Ops Speedup is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Ops Speedup in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-speedup. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Ops Speedup?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Ops Speedup?

As many as you like. As long as a model supports skills, you can use Ops Speedup with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Ops Speedup AI skill free?

Yes. It is published on GitHub by Lifecycle-Innovations-Limited under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇