# Skill: sf

Prose compression with four calibrated density levels.

## To install

1. Save this file to `~/.claude/skills/sf/SKILL.md`
2. Restart Claude Code
3. Trigger with `/sf2`, `tighten this`, `compress`, or `sf this`

---

---
name: sf
description: Compresses prose to maximum signal-per-word while preserving decision-relevant meaning and context. Triggers on "sf", "sf this", "make this sf0", "make this sf1", "make this sf2", "make this sf3", "tighten this", "trim this", "compress", "cut words", "shorter", "/sf0", "/sf1", "/sf2", or "/sf3". Four calibrated levels — Normal, Trim, Tight (default), Night Raid — so the output can range from polished cleanup to high-density operational shorthand without losing critical facts. Use for rewriting drafts, notes, Slack messages, specs, summaries, or any prose where density beats polish. Do NOT use when the user wants the opposite (expand, elaborate, soften), when tone is the point (client empathy, apology, sales copy), or when the text is already at minimum viable length.
---

# SF

Compress prose with precision. Preserve meaning. Remove drag.

## Default

**sf2 — Tight.** Use unless the user specifies another level.

## The Four Levels

**sf0 — Normal**
Clean obvious waste. Preserve normal prose shape and tone.
Use for: client-facing docs, polished messages, writing that should stay natural.

**sf1 — Trim**
Cut filler, hedges, redundancy, and weak transitions. Keep full sentences and readable flow.
Use for: internal docs, thoughtful emails, updates that should stay smooth.

**sf2 — Tight** *(default)*
Shorten aggressively. Favor direct sentences. Keep all actionable meaning.
Use for: specs, summaries, Slack, status updates, briefs, internal handoffs.

**sf3 — Night Raid**
Maximum signal density. Fragments are fine. Drop implied context markers when meaning still lands cleanly.
Use for: scratch notes, decision logs, AI handoffs, personal capture, high-context internal use.

Floor: never drift into broken shorthand. The reader should lose no decision-relevant meaning.

## Approved Shorthand

Use these when they reduce tokens without slowing recognition. Prefer common forms. If a shorthand makes the line harder to parse, spell it out.

**Clinical / operational**
- `?` = question / possible / needs confirmation
- `w/` = with
- `w/o` = without
- `2/2` = due to / caused by
- `r/o` = rule out
- `dx` = root cause
- `tx` = treatment / fix
- `sx` = symptoms / observed behavior
- `f/u` = follow up / next check
- `P/` = plan is to
- `NAD` = nothing found / normal / no material issue

**Common gaming / internet**
- `gm` = good morning
- `gg` = good / done / complete
- `wp` = well played / nice execution
- `gg wp` = clean win / job well done
- `gtg` = good to go
- `rtr` = ready to rumble
- `afk` = away for now / temporarily unavailable
- `brb` = back soon
- `eta` = expected time / timing
- `lfg` = ready to start / let's go

Use gaming slang sparingly in polished prose. It fits best in `sf2` and `sf3`, especially for Slack, handoffs, and short status lines.

## Always Cut

- Hedges: *I think, maybe, kind of, sort of, a bit, somewhat, I believe, it seems, perhaps*
- Filler: *just, really, very, actually, basically, essentially, simply, literally, quite*
- Throat-clearing: *it's worth noting, keep in mind, at the end of the day, to be honest, needless to say*
- Empty transitions: *that said, having said that, moving on, with that in mind*
- Redundant pairs: *plan and strategize, thoughts and ideas, goals and objectives* -> pick one
- Adverbs that do not change truth: *quickly, effectively, properly, successfully*
- Bloat phrases:
  - *in order to* -> **to**
  - *due to the fact that* -> **because**
  - *at this point in time* -> **now**
  - *a large number of* -> **many**
  - *has the ability to* -> **can**
- Passive voice when active is shorter and equally clear

## Never Cut

- Numbers, dates, names, proper nouns, dollar amounts
- Causal links: *because, so, if, unless, therefore*
- Negations: *not, never, except, without*
- Specifics and concrete examples
- Conditional logic
- Nuance that changes a decision or action

## The Cut Test

For every word: *does removing this change the meaning, the decision, or the action?*
- No -> cut.
- Yes -> keep.

If unsure -> keep. Meaning beats density.

## Examples

**Original (58 words)**
> I think we should probably consider maybe building out an internal CRM in order to replace our current one, but I'm a bit worried about the time investment. It might be worth noting that we'd need to actually scope this properly before committing, and at the end of the day, the decision really depends on how much of the current CRM we actually use.

**sf0 — Normal (41 words)**
> We should consider building an internal CRM to replace our current one, but the time investment is a concern. We need to scope it properly before committing, and the decision depends on how much of the current CRM we actually use.

**sf1 — Trim (34 words)**
> We should consider building an internal CRM to replace our current one, though the time investment is a concern. Scope it before committing. The decision depends on how much of the current CRM we use.

**sf2 — Tight (22 words)**
> Consider building an internal CRM to replace the current one. Time cost is the risk. Scope before committing. Depends on actual usage.

**sf3 — Night Raid (16 words)**
> Internal CRM could replace current. Risk: time. Scope first. Decide from actual usage.

**sf3 — Night Raid with shorthand**
> ?replace CRM w/ internal. sx: time risk. P/ scope first. f/u on actual usage.

## Output Format

Return the compressed version only. No preamble, no "here's the tightened version."

If the user asked to compress something specific, append one line: `Was X words -> Y words (Z% cut).`

If the user pastes raw text without specifying a level, apply `sf2` and note: `sf2 applied. Want softer (sf0/sf1) or tighter (sf3)?`

## Self-Check Before Returning

1. Every number, name, date, negation, and causal link preserved?
2. Would any cut change a decision or action?
3. Can the reader still act on this without the original?
4. Did the output stay inside the requested level without slipping into broken shorthand?

If any answer is wrong -> rewrite before sending.

## What This Skill Is Not

- Not a tone-softener. For warmth, use a different skill.
- Not a summarizer. Summarizing drops content; this preserves it in fewer words.
- Not a style guide. It is a compression function.
