Reslop
Generative sibling of /techne:deslop. Where /techne:deslop deletes low-value prose, /techne:reslop rewrites it — grounded in the code, not in marketing instincts. On a path-scoped /techne:deslop <path> run, deslop auto-routes claim-bearing docstrings here; on a bare whole-repo sweep it lists them for you to run this directly.
Repo context
cat .claude/skill-context.md 2>/dev/null || echo "(no .claude/skill-context.md — rewrites will use conservative defaults for grounding numeric claims)"
The injected ## slop_ground_truth section (if present) names the files or docs that ground quantitative claims for this repo. Never introduce a numeric claim that can't trace to one of those sources.
Hard rules
- Never invent behavior. If the code doesn't show it, don't claim it. No "thread-safe" unless the code actually synchronizes. No "idempotent" unless it demonstrably is. No "future-proof" ever.
- Never invent performance claims. Rewrites must not introduce numeric speedups, throughput figures, latency bounds, or scale claims unless they are cited in the repo's
slop_ground_truth (per injected context). If the original prose said "10× faster" and you can't find a measurement that supports it, strike the claim — don't rephrase it. The "Unsupported quantitative / comparative claims" section of ${CLAUDE_PLUGIN_ROOT}/_shared/hate-words.md is the pattern list.
- No hate-words. See
${CLAUDE_PLUGIN_ROOT}/_shared/hate-words.md — the rewrite must not reintroduce slop you came to fix.
- Don't restate the signature. Type annotations already tell the reader the types. Docstring prose is for purpose and non-obvious constraints.
- Prefer shorter. One sentence beats three. If nothing needs saying, say nothing — hand the target back to
/techne:deslop to delete outright.
- Match surrounding style. If the module's other docstrings are one-liners, yours is too. If they use Google-style
Args: / Returns:, match that — only if the arguments genuinely need explanation beyond their types.
Workflow
Scope. Default to the file(s) the user named, or pending-change files if they said "rewrite the docstrings in my changes". Never touch files outside scope.
For each target (function, class, module docstring):
Read the implementation in full.
Grep for call sites inside the repo to see how it's actually used.
- Check the adjacent test file for invariants the tests enforce.
- Draft a docstring grounded in those three sources — no extra sources.
Fan out only when scope is large. If the target list spans >5 files, dispatch parallel Explore subagents — one per file. Brief each with the hard rules, the hate-words glossary, and the three read sources. Each subagent returns proposed rewrites as old→new diffs. Main agent consolidates.
Present. Group diffs by file, ask apply all / apply selected / skip?. On --apply or clearly "just do it", write directly with Edit.
What triggers a rewrite
- Docstrings that trip the hate-word glossary.
- Docstrings that only restate the signature or repeat type annotations.
- Comments narrating WHAT a line does when the name already says.
- Module docstrings talking about "phases", "best practices", or AI-assistant audiences.
- Anything the user points at explicitly.
What to leave alone
- Accurate docstrings under ~2 lines that don't use hate-words.
- Load-bearing WHY comments (same Keep list as
/techne:deslop).
- Generated/stub files (
*.pyi, protobuf output).
- Tests — their names are the documentation; don't over-describe.
- License headers, SPDX identifiers, shebangs.
Output format
<package>/simulation_runner.py:120 _load_strategy
old: """Comprehensive strategy loader that elegantly handles all edge cases
and seamlessly integrates with the federated simulation pipeline.
Under the hood it imports the strategy module and instantiates it."""
new: """Import a simulation strategy by name; raise ValueError if unknown."""
why: original used marketing prose ("comprehensive", "elegantly", "seamlessly") and restated mechanism the function body already shows.
Include the why: line only when the edit is borderline — skip it for obvious cuts.
When to hand off to /techne:deslop
If the "fix" is just deleting the docstring entirely (because nothing about the function needs explaining and the name is clear), say so and let /techne:deslop handle it. Don't invent a rewrite to fill the slot.
Why this skill is quiet
Output is the diffs. Don't narrate "I read the code and realized…" — show old → new, one why: line when borderline, nothing else.
1---2name: reslop3description: Rewrite docstrings and comments by reading the actual implementation, call sites, and tests — produce grounded, factual prose instead of deleting slop. Sibling of /techne:deslop. Use when the user wants to replace overhyped or hallucinated documentation with accurate one- or two-line descriptions derived from what the code actually does.4---56# Reslop78Generative sibling of `/techne:deslop`. Where `/techne:deslop` deletes low-value prose, `/techne:reslop` *rewrites* it — grounded in the code, not in marketing instincts. On a path-scoped `/techne:deslop <path>` run, deslop auto-routes claim-bearing docstrings here; on a bare whole-repo sweep it lists them for you to run this directly.910## Repo context1112```!13cat .claude/skill-context.md 2>/dev/null || echo "(no .claude/skill-context.md — rewrites will use conservative defaults for grounding numeric claims)"14```1516The injected `## slop_ground_truth` section (if present) names the files or docs that ground quantitative claims for this repo. Never introduce a numeric claim that can't trace to one of those sources.1718## Hard rules19201. **Never invent behavior.** If the code doesn't show it, don't claim it. No "thread-safe" unless the code actually synchronizes. No "idempotent" unless it demonstrably is. No "future-proof" ever.212. **Never invent performance claims.** Rewrites must not introduce numeric speedups, throughput figures, latency bounds, or scale claims unless they are cited in the repo's `slop_ground_truth` (per injected context). If the original prose said "10× faster" and you can't find a measurement that supports it, strike the claim — don't rephrase it. The "Unsupported quantitative / comparative claims" section of `${CLAUDE_PLUGIN_ROOT}/_shared/hate-words.md` is the pattern list.223. **No hate-words.** See `${CLAUDE_PLUGIN_ROOT}/_shared/hate-words.md` — the rewrite must not reintroduce slop you came to fix.234. **Don't restate the signature.** Type annotations already tell the reader the types. Docstring prose is for purpose and non-obvious constraints.245. **Prefer shorter.** One sentence beats three. If nothing needs saying, say nothing — hand the target back to `/techne:deslop` to delete outright.256. **Match surrounding style.** If the module's other docstrings are one-liners, yours is too. If they use Google-style `Args:` / `Returns:`, match that — only if the arguments genuinely need explanation beyond their types.2627## Workflow28291. **Scope.** Default to the file(s) the user named, or pending-change files if they said "rewrite the docstrings in my changes". Never touch files outside scope.30312. **For each target (function, class, module docstring):**32 - `Read` the implementation in full.33 - `Grep` for call sites inside the repo to see how it's actually used.34 - Check the adjacent test file for invariants the tests enforce.35 - Draft a docstring grounded in those three sources — no extra sources.36373. **Fan out only when scope is large.** If the target list spans >5 files, dispatch parallel `Explore` subagents — one per file. Brief each with the hard rules, the hate-words glossary, and the three read sources. Each subagent returns proposed rewrites as old→new diffs. Main agent consolidates.38394. **Present.** Group diffs by file, ask `apply all / apply selected / skip?`. On `--apply` or clearly "just do it", write directly with `Edit`.4041## What triggers a rewrite4243- Docstrings that trip the hate-word glossary.44- Docstrings that only restate the signature or repeat type annotations.45- Comments narrating WHAT a line does when the name already says.46- Module docstrings talking about "phases", "best practices", or AI-assistant audiences.47- Anything the user points at explicitly.4849## What to leave alone5051- Accurate docstrings under ~2 lines that don't use hate-words.52- Load-bearing WHY comments (same Keep list as `/techne:deslop`).53- Generated/stub files (`*.pyi`, protobuf output).54- Tests — their names are the documentation; don't over-describe.55- License headers, SPDX identifiers, shebangs.5657## Output format5859```60<package>/simulation_runner.py:120 _load_strategy61 old: """Comprehensive strategy loader that elegantly handles all edge cases62 and seamlessly integrates with the federated simulation pipeline.63 Under the hood it imports the strategy module and instantiates it."""64 new: """Import a simulation strategy by name; raise ValueError if unknown."""65 why: original used marketing prose ("comprehensive", "elegantly", "seamlessly") and restated mechanism the function body already shows.66```6768Include the `why:` line only when the edit is borderline — skip it for obvious cuts.6970## When to hand off to /techne:deslop7172If the "fix" is just deleting the docstring entirely (because nothing about the function needs explaining and the name is clear), say so and let `/techne:deslop` handle it. Don't invent a rewrite to fill the slot.7374## Why this skill is quiet7576Output is the diffs. Don't narrate "I read the code and realized…" — show old → new, one `why:` line when borderline, nothing else.