Skip to content

Commit b155e7e

Browse files
feat: added new skills (#6)
## Summary - Adds new agent skills under `.agents/skills/` (caveman, fuck-slop, junior-to-senior, ponytail, shopify-admin, grill-me). ## Test plan - N/A — skill/documentation additions only, no theme code changes.
2 parents 3a91aea + ff1c3d8 commit b155e7e

27,080 files changed

Lines changed: 1778366 additions & 6045 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/caveman/SKILL.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
name: caveman
3+
description: >
4+
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman
5+
while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,
6+
wenyan-lite, wenyan-full, wenyan-ultra.
7+
Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens",
8+
"be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
9+
---
10+
11+
Respond terse like smart caveman. All technical substance stay. Only fluff die.
12+
13+
## Persistence
14+
15+
ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
16+
17+
Default: **full**. Switch: `/caveman lite|full|ultra`.
18+
19+
## Rules
20+
21+
Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact.
22+
23+
Pattern: `[thing] [action] [reason]. [next step].`
24+
25+
Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
26+
Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
27+
28+
## Intensity
29+
30+
| Level | What change |
31+
|-------|------------|
32+
| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |
33+
| **full** | Drop articles, fragments OK, short synonyms. Classic caveman |
34+
| **ultra** | Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough |
35+
| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |
36+
| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |
37+
| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |
38+
39+
Example — "Why React component re-render?"
40+
- lite: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."
41+
- full: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."
42+
- ultra: "Inline obj prop → new ref → re-render. `useMemo`."
43+
- wenyan-lite: "組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。"
44+
- wenyan-full: "物出新參照,致重繪。useMemo .Wrap之。"
45+
- wenyan-ultra: "新參照→重繪。useMemo Wrap。"
46+
47+
Example — "Explain database connection pooling."
48+
- lite: "Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead."
49+
- full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
50+
- ultra: "Pool = reuse DB conn. Skip handshake → fast under load."
51+
- wenyan-full: "池reuse open connection。不每req新開。skip handshake overhead。"
52+
- wenyan-ultra: "池reuse conn。skip handshake → fast。"
53+
54+
## Auto-Clarity
55+
56+
Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.
57+
58+
Example — destructive op:
59+
> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
60+
> ```sql
61+
> DROP TABLE users;
62+
> ```
63+
> Caveman resume. Verify backup exist first.
64+
65+
## Boundaries
66+
67+
Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Level persist until changed or session end.

.agents/skills/fuck-slop/SKILL.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
name: fuck-slop
3+
description: >
4+
De-slop pass for any text: detects and erases the statistical fingerprints of
5+
AI writing (negative parallelism / "not X but Y", em-dash abuse, rule-of-three,
6+
false ranges, puffery vocabulary, uniform cadence, hedged both-sidesing) and
7+
rewrites the text into its target register — academic article, tweet, reddit
8+
post, email, blog, anything between. Use when the user says "fuck slop",
9+
"f*ck slop", "deslop", "de-slop this", "remove the AI tells", "humanize this",
10+
"make this not sound like AI", or invokes /fuck-slop. Also use before
11+
publishing any agent-drafted prose.
12+
---
13+
14+
# F*ck Slop
15+
16+
Strip every mark of AI writing from a text and make it good in its genre. Not "make it pass a detector" — make it read like a specific person with a specific point wrote it for a specific audience.
17+
18+
## Why this is a loop, not a style guide
19+
20+
The worst tells — above all the **"not X but Y"** family — are not vocabulary mistakes. They are emergent properties of how LLMs generate text: preference tuning rewards balanced, contrastive, comprehensive-sounding framing, so the contrast move is baked into the model's priors. Two consequences drive this skill's architecture:
21+
22+
1. **You cannot reliably see your own slop.** The same priors that produce the pattern make it invisible on re-read. Detection must be mechanical — regex against a fixed catalog — never "does this look AI to me?"
23+
2. **Rewriting reintroduces slop.** Ask a model to remove "it's not just X, it's Y" and it produces "this is less about X than Y" — the same move in a wig. So every rewrite gets re-scanned, and the loop runs until the scan is clean.
24+
25+
Workflow: **Scan → Diagnose → Rewrite by meaning → Re-scan → (repeat) → Register check.**
26+
27+
## Phase 0: Fix the target
28+
29+
Before touching the text, establish:
30+
31+
- **Genre and venue** — academic article, tweet, reddit post, LinkedIn, email, blog, docs, marketing. If not stated and not obvious from the text, ask. Genre decides which tells are fatal and what "good" means; see [references/voices.md](references/voices.md).
32+
- **Audience and stance** — who reads it, and what the author actually claims. Slop is what fills the space where a claim should be; you cannot remove it without knowing the claim.
33+
- **Constraints** — length limits, required citations, house style.
34+
35+
## Phase 1: Mechanical scan
36+
37+
Run the detection patterns from [references/tells.md](references/tells.md) against the text. If the text is in a file (or you can write it to a temp file), run the grep commands in that reference literally — the catalog is written as runnable `grep -Ein` patterns. Otherwise apply each pattern by hand, line by line.
38+
39+
Produce a finding list: line/sentence, matched pattern, tell category. Also run the two structural checks that regex can't fully catch:
40+
41+
- **Cadence**: flag any run of 3+ consecutive sentences within ±4 words of the same length, and any paragraph where every sentence has the same shape (subject–verb–elaboration).
42+
- **Formatting**: bold scattered through prose, emoji-decorated headers or bullets, "**Term:** definition" bullet lists, headers on a text too short to need them, a tidy intro–three-points–conclusion skeleton.
43+
44+
Report the findings to the user as a short table before rewriting (category, count, worst example). This is the diagnosis; the user should see what was wrong.
45+
46+
## Phase 2: Rewrite by meaning, not by frame
47+
48+
Go finding by finding. The cardinal rule: **never fix a pattern by paraphrasing the pattern.** Fix it by deciding what the sentence actually asserts, then asserting that.
49+
50+
### The "not X but Y" family — three-way triage
51+
52+
Every negative parallelism gets exactly one of these treatments:
53+
54+
1. **The negation is a strawman** (nobody believes X). Delete the X half entirely and assert Y directly, with whatever evidence the text has.
55+
- *"It's not just a tool, it's a fundamental shift in how teams work"**"Teams that adopted it stopped holding standups within a month."*
56+
2. **The contrast is real** (people genuinely hold X). Then earn it: name who holds X, say concretely why Y beats it. A real contrast survives being made specific; slop doesn't.
57+
3. **The sentence asserts nothing** (the contrast is decoration on an empty claim). Delete the whole sentence. Most cases are this one.
58+
59+
Banned escape hatches — these are the same move and count as new findings: "less about X than Y", "X matters, but Y matters more", "the real X is Y", "the question isn't X, it's Y", "X? Y." (rhetorical-question variant), and the em-dash variant "— not X, but Y".
60+
61+
### Everything else
62+
63+
- **Puffery and inflated vocabulary** (pivotal, seismic, testament, tapestry, landscape, delve…): replace with the plain word, or with the concrete fact the puffery was hiding. "Plays a vital role in" → "does".
64+
- **Rule-of-three lists**: keep the strongest item, cut the rest — unless all three carry distinct information, in which case keep them and break the rhythm (different lengths, different syntax).
65+
- **False ranges** ("from X to Y"): if you can't name a meaningful midpoint between X and Y, it's not a range — name the two things or cut one.
66+
- **Hedged both-sidesing** ("it's worth noting", auto-counterpoints, "while X, it's also true that Y"): commit. One opinion, stated, owned. A counterpoint stays only if the author genuinely concedes it.
67+
- **Uniform cadence**: vary deliberately. Follow a long sentence with a short one. Fragments are legal. Don't apply a formula (alternating long/short is its own tell) — read the paragraph aloud and break wherever the rhythm is metronomic.
68+
- **Low specificity**: replace "many companies" / "studies show" / "recent research" with the actual names, numbers, and dates — **only from the source text, the conversation, or verifiable research you actually do**. Never invent specifics. If the author needs to supply one, leave a marked placeholder: `[ADD: which study?]`.
69+
- **Stock skeleton**: kill throat-clearing openers ("In today's fast-paced world…"), summary conclusions ("In conclusion… Ultimately…"), and engagement-bait endings ("What do you think?"). Start where the point starts; stop when it's made.
70+
71+
### What not to do — overcorrection is also slop
72+
73+
- No fake typos, forced slang, or manufactured "voice". Humanizer-tool output is its own genre of slop.
74+
- Em dashes are not banned. Humans use them. The tell is density and the double-dash "— not X, but —" move. Budget: at most one em dash per ~150 words, never two in a sentence.
75+
- Don't trade precision for personality in academic or technical text. There, de-slopping means cutting puffery and committing to claims — not adding attitude.
76+
- Preserve the author's meaning, claims, and facts exactly. This is a style pass, not a content edit. Flag, don't silently fix, anything that looks factually wrong.
77+
78+
## Phase 3: Verify loop
79+
80+
Re-run the full Phase 1 scan **on your rewritten text**. This step is not optional and not a formality — expect your own rewrite to contain new tells, because the model writing it has the same priors that created them. Fix and re-scan until a pass produces zero pattern hits and the cadence check passes. Cap at 4 passes; if a pattern survives 4 passes, rewrite that sentence from scratch starting from its bare claim ("what fact or opinion is this sentence for?").
81+
82+
## Phase 4: Register check
83+
84+
Check the clean text against its genre profile in [references/voices.md](references/voices.md): right length, right formality, right person, genre-specific tells gone (e.g. on reddit: no bold, no bullet essay; in academic prose: no first-person hot takes added). Then the final test — read it aloud. Anywhere you wouldn't say it to the actual audience, rewrite that sentence.
85+
86+
Deliver: the rewritten text, plus a brief change log (categories fixed, counts, and number of verify passes it took).
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# AI-Writing Tell Catalog
2+
3+
Detection patterns for the F*ck Slop scan. Patterns are written for `grep -Ein` (extended regex, case-insensitive, line numbers) so they can be run literally against a file:
4+
5+
```bash
6+
grep -Ein -f /dev/stdin draft.txt <<'PATTERNS'
7+
<paste patterns from a section below, one per line>
8+
PATTERNS
9+
```
10+
11+
When the text only exists in conversation, apply each pattern by hand. A match is a *finding*, not an automatic deletion — every finding goes through the Phase 2 triage in SKILL.md. Density matters: one em dash is nothing; one em dash plus a negative parallelism plus "delve" in the same paragraph is a verdict.
12+
13+
## 1. Negative parallelism — the "not X but Y" family
14+
15+
The highest-priority category. LLMs reach for the negation-then-assertion move roughly once a paragraph; humans use it occasionally and deliberately. It is an emergent generative habit, so expect it to reappear in paraphrased form after every rewrite pass — that is why the scan loops.
16+
17+
```
18+
not (just|only|merely|simply|solely) [^.;]{2,80}(but|it'?s| — )
19+
isn'?t (just|only|merely|simply|about)
20+
it'?s not (a|an|the|that|about|just) [^.;]{2,80}(it'?s|but)
21+
(is|was|are|were)n'?t about [^.;]{2,60}\. (it|this|that)'?s about
22+
less about [^.;]{2,60}(than|and more about)
23+
more than (just|a mere|simply)
24+
not because [^.;]{2,80}but because
25+
the (question|point|issue|problem|goal|real [a-z]+) is(n'?t| not) (whether|about|just|if)
26+
(doesn'?t|don'?t|didn'?t|won'?t) (just|merely|simply) [^.;]{2,80}(it|they|he|she|we)
27+
no [a-z]+, no [a-z]+(, no [a-z]+)?[,.]? just
28+
— not [^—.;]{2,60}, but
29+
not only [^.;]{2,80}but (also )?
30+
we'?re not (just )?(talking about|looking at|dealing with)
31+
gone are the days
32+
(here|this)'?s the (thing|kicker|catch|twist)
33+
```
34+
35+
Rhetorical-question variant (regex-resistant; check by hand): a one-line question immediately answered by a one-word or one-clause sentence. *"The result? Chaos."* / *"Sound familiar?"*
36+
37+
## 2. Puffery and inflated vocabulary
38+
39+
Single words that spike in LLM output. Each is fine in isolation; two or more per page is a finding. The fix is the plain word or the concrete fact the word was hiding.
40+
41+
```
42+
\b(delve|delving)\b
43+
\btapestry\b
44+
\b(testament|stands as)\b
45+
\bseamless(ly)?\b
46+
\b(pivotal|paramount|crucial)\b
47+
\bunderscore(s|d)?\b
48+
\b(landscape|realm|sphere) of\b
49+
\bnavigat(e|ing) the\b
50+
\bfoster(s|ing)?\b
51+
\bleverage(s|d)?\b
52+
\bmeticulous(ly)?\b
53+
\bintricate\b
54+
\bboasts\b
55+
\bgame.?chang(er|ing)\b
56+
\b(seismic|monumental|transformative) (shift|change)\b
57+
\bunwavering\b
58+
\bcommendable\b
59+
\belevate(s|d)? (the|your)\b
60+
\bshowcas(e|es|ing)\b
61+
\bresonate(s|d)?\b
62+
\bcompelling\b
63+
\brich (cultural )?(heritage|history|tradition)\b
64+
\bvibrant\b
65+
\bplays? a (vital|key|crucial|pivotal) role\b
66+
\bdeep(er)? dive\b
67+
\bunlock(s|ing)? (the|your)\b
68+
\bharness(es|ing)? the\b
69+
\bembark(s|ed|ing)? on\b
70+
\bever.?(evolving|changing)\b
71+
\bfast.?paced (world|environment)\b
72+
\bin today'?s\b
73+
\bat the end of the day\b
74+
\bwhen it comes to\b
75+
\bcutting.?edge\b
76+
\brobust\b
77+
\bholistic\b
78+
\bsynergy\b
79+
\bempower(s|ing|ment)?\b
80+
```
81+
82+
## 3. Hedging, both-sidesing, throat-clearing
83+
84+
The tell is reflexive balance: every claim gets a softener, every opinion gets a counterpoint. Commit or cut.
85+
86+
```
87+
it'?s (worth|important) (to note|noting|to remember|to consider)
88+
(that|it) (being )?said,
89+
while (it'?s|this is) (true|important)
90+
arguably
91+
in many ways
92+
to some (extent|degree)
93+
on the other hand
94+
at its core
95+
in essence
96+
essentially,
97+
ultimately,
98+
in conclusion
99+
in summary
100+
to sum(marize| up)
101+
overall,
102+
in the end,
103+
needless to say
104+
as (we|you) (can see|know|all know)
105+
let'?s (dive|unpack|explore|take a (look|closer look))
106+
whether you('re| are) [^.;]{2,60} or
107+
```
108+
109+
## 4. False ranges and rule-of-three
110+
111+
**False range** — a "from X to Y" with no actual spectrum between X and Y:
112+
113+
```
114+
from [^.;]{3,50} to [^.;]{3,50}
115+
```
116+
117+
Triage by hand: if you can name a meaningful midpoint, it's a real range and stays. If X and Y are just two loosely related examples, name them plainly or cut one.
118+
119+
**Rule of three** — LLMs default to triplets to make thin analysis look thorough. Regex only catches the simplest shape; check lists by hand too.
120+
121+
```
122+
\b\w+, \w+, and \w+[.!?]
123+
\b(\w+ \w+), (\w+ \w+), and (\w+ \w+)
124+
```
125+
126+
Triage: keep the strongest item, cut the rest — or keep all three only if each carries distinct information, and then break the rhythm.
127+
128+
## 5. Punctuation and formatting
129+
130+
Em dash: not banned — humans use it. Findings are about **density** and the contrast move:
131+
132+
- More than ~1 em dash per 150 words.
133+
- Two em dashes in one sentence.
134+
- `— not X, but Y` (already in section 1).
135+
- Em dash used for punchy emphasis where a comma works: `[a-z] — [a-z][^—]{1,25}\.$`
136+
137+
Other formatting tells (check by hand; most regexes here are layout-dependent):
138+
139+
- **Bold scattered through prose** like a textbook highlighting itself: `\*\*[^*]{2,40}\*\*` appearing more than ~once per 3 paragraphs of body prose.
140+
- **"Term: definition" bullets**: `^[-*] +\*\*[^*]+:?\*\*:? ` — the signature LLM list shape.
141+
- **Emoji headers/bullets** (🚀, ✅, 💡): needs PCRE, not `-E``LC_ALL=C.UTF-8 grep -Pn '^\s*[-*#]+\s.*[\x{1F300}-\x{1FAFF}\x{2600}-\x{27BF}]' draft.txt`.
142+
- **Headers on short texts** — section headers on anything under ~400 words.
143+
- **The tidy skeleton** — intro that previews three points, three matched sections, conclusion that restates them. Resolves too neatly; real writing has loose ends.
144+
- **Numbered lists where a paragraph would do.**
145+
- Curly quotes/apostrophes in a context where the author types straight ones (mixed within one text is the stronger tell).
146+
147+
## 6. Cadence and statistical shape
148+
149+
No regex; measure or eyeball.
150+
151+
- **Uniform sentence length** (the single strongest current tell): a run of 3+ consecutive sentences within ±4 words of each other, paragraph after paragraph of 18–24-word sentences. Quick measurement on a file:
152+
153+
```bash
154+
tr '\n' ' ' < draft.txt | sed 's/[.!?] /\n/g' | awk '{print NF}'
155+
```
156+
157+
Human prose mixes 4-word sentences with 30-word sentences. Variance should be obvious at a glance.
158+
- **Uniform sentence shape**: every sentence opens subject-first; no fragments, no questions, no inversions.
159+
- **Uniform paragraph length**: every paragraph 3–4 sentences.
160+
- **Low specificity**: "many companies", "studies show", "experts agree", "recent research", "various factors" — generic where a human who knew the material would name names, numbers, dates. (Fix only with real specifics; never invented ones.)
161+
- **No friction**: nothing colloquial, no aside, no opinion held without a softener, nothing that risks being disagreed with.
162+
163+
## 7. Genre-specific instant tells
164+
165+
Covered in detail in [voices.md](voices.md); the headline items:
166+
167+
- **Reddit/forums**: bold mid-comment, bullet-pointed comments, "Hope this helps!", perfectly balanced takes.
168+
- **Tweets/X**: "🧵", "Let that sink in", line-broken one-clause-per-line cadence, ending on a question to drive engagement.
169+
- **LinkedIn**: one-sentence paragraphs stacked vertically, "Agree?", the not-X-but-Y move (its natural habitat).
170+
- **Academic**: "delve", "novel insights", puffed significance claims ("crucial implications for the field"), citation-free superlatives.
171+
- **Email**: "I hope this email finds you well", restating the recipient's question back at them, three-paragraph symmetry for a one-line answer.

0 commit comments

Comments
 (0)