# Sf Prune

> Find deployed StrategyFactory bots whose underlying strategy's edge is decaying, and optionally pause them. Use when the user asks "kill the dead bots / prune my portfolio / pause the losers / which of my bots are dying / clean up the bot roster". Writes state via PATCH only when --apply is passed.

- Skill: `daviddme/sf-prune` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add daviddme/sf-prune`
- Raw SKILL.md: https://api.skillmd.com/api/skills/daviddme/sf-prune/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: daviddme (https://skillmd.com/u/daviddme)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/daviddme/sf-prune

---


# sf-prune

Audit-and-clean for your deployed roster. For every ACTIVE bot, pulls the
underlying strategy and runs the same edge-decay heuristic as
[`sf-edge-watch`](../sf-edge-watch/SKILL.md). Bots whose strategies are
`decaying` or `dead` are listed; with `--apply` they get paused via
`PATCH /bots/:id`.

## When to use

- "Prune the bot roster"
- "Pause anything that's dying"
- "Show me which of my bots have lost their edge"

## How to run

```
# Dry run — lists candidates, never PATCHes
python sf-prune/prune.py [--include soft|decaying|dead] [--json]

# Actually pause flagged bots
python sf-prune/prune.py --apply [--include soft|decaying|dead]
```

Defaults: `--include decaying,dead` (soft = watch but don't touch).

## Output

Table sorted worst-first: bot name, strategy, status, flags. With
`--apply`, also prints PATCH result per bot.

## Safety

- Without `--apply`, this is fully read-only.
- `--apply` PATCHes one bot per call. The shared client respects the
  server-side 10-second per-bot cooldown automatically.
- Only ACTIVE bots are considered. PAUSED/DRAFT/DISABLED are skipped.
- This skill does not delete bots — it only pauses them. To re-activate
  later, use `PATCH /bots/:id` with `action: "reactivate"`.

