agentleFS
hsigstadhsigstad/research-kit/skills/style-review/SKILL.md

style-review

Skill0 starsChanged 4 months agoMITView on GitHub

LLM-based prose review against the empirical-economics writing style guides. Runs the mechanical linter first, then reads the file against the general baseline and any relevant per-type guides. Use when the user invokes /style-review <file>, asks for a "thorough style review", "polish this for submission", "review for clarity", or wants prose feedback on a paper draft / important email / chapter. For fast deterministic AI-tell scanning, use /style-check; for section-scoped pre-submission validation with ledger writes, use /validate-section.

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this for prose that matters: paper drafts, chapters, important emails, externally-visible blog posts.

    line 13
  2. Distinctive:

    Always start with the deterministic linter:

    line 29
  3. Distinctive:

    If any warning-or-higher violations exist, offer to fix them before the LLM review.

    line 35
  4. Distinctive:

    Always load the general baseline:

    line 60
  5. Very specific:

    If the file is under ~/Dropbox/referee/, also load:

    line 79
  6. Distinctive:

    If working in the user's workspace, also load the workspace addendum:

    line 85
  7. Distinctive:

    Read the file. For each section, evaluate against the loaded rules.

    line 96
  8. Distinctive:

    No general praise or summary commentary.

    line 207

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

style-review

Slow, thorough LLM-assisted prose review. Catches what /style-check can't: long/complex sentences, buried verbs, weak topic sentences, hedging in main claims, paragraph-coherence drift, voice inconsistency, and formal/informal pairing failures.

Use this for prose that matters: paper drafts, chapters, important emails, externally-visible blog posts. Don't use it on routine project docs or working drafts — overkill.

How to invoke

FormWhat it does
/style-review <file>Full review. Mechanical linter first, then LLM. Numbered findings; ask which to apply.
/style-review <file> --section <name>Restrict the LLM review to one section (intro, abstract, results, etc.).
/style-review <file> --no-fixReview only, no edit prompts.

Workflow

1. Run the mechanical linter

Always start with the deterministic linter:

python3 ~/research/research-kit/tools/style_lint.py <file> --format json --severity warning

If any warning-or-higher violations exist, offer to fix them before the LLM review. No point reviewing prose the linter would re-flag anyway.

2. Resolve section structure

Identify which sections the file contains so the right per-type guides get loaded. Detection order:

  1. section_deps.json — if the project has build/paper/section_deps.json, read it. Each entry has a type field per the convention in research-kit/rules/section_labels.md.
  2. LaTeX labels — if section_deps.json is absent, parse \label{sec:<type>} directly from the file. The first colon-separated segment after sec: is the type.
  3. Heading-text heuristic — if neither is available, infer types from heading text per the table in research-kit/rules/section_labels.md.

For files without sections (a standalone abstract, a paragraph, an email): treat the whole file as one section, infer type from filename or content.

3. Load the rule files

Always load the general baseline:

research-kit/rules/writing_style.md

For each section type encountered, also load the per-type guide:

research-kit/rules/writing_style/<type>.md

For body-section types (results, methods, data, institutions, discussion), also load:

research-kit/rules/writing_style/body.md

If the file is under ~/Dropbox/referee/, also load:

research/referee/style.md

If working in the user's workspace, also load the workspace addendum:

research/rules/writing_style.md

The per-type files state what's specific to each section type; the general baseline states rules that apply everywhere. Apply both.

4. LLM review pass

Read the file. For each section, evaluate against the loaded rules. Findings to look for:

General (apply to all sections):

  • Sentence length & structure (default short; flag long sentences that could split cleanly).
  • Voice (active default; flag passive author actions and unnecessary passives).
  • Editorializing the data (starkest, most compelling, striking, notable).
  • Topic sentence placement (point buried in sentence 3 or 4).
  • Hedging in main claims (caveats that should move to footnotes).
  • Adjective stacks, synonym piling.
  • Specifics vs. generalities; numbers, not qualifiers.
  • Author-coined compounds without inline gloss.
  • Formal + informal pairing for technical content.
  • Connective overuse (same connective opening multiple paragraphs).
  • Signposting bloat ("in this section, we will discuss" when the heading already says it).
  • Self-categorizing prefaces ("This is a descriptive paper:").

Per section type: apply the rules from the loaded per-type file. Examples:

  • Abstract → first sentence states the question; plain-language audience test; close with implication.
  • Intro → Hook → Question → Why Hard → Setting → Approach → Results → Lit → Roadmap; question-first; hook is concrete; lit-contributions paragraph near the end.
  • Body sections → triangular structure; lead with main result; no previews/recalls; economic significance not just statistical.
  • Theory → formal+informal pairing; minimum theory required.
  • Conclusion → short, no future research, close with implication.

The per-type files are authoritative for type-specific rules. Don't restate them inline; cite the rule by file:rule-name when reporting.

5. Present and apply

For each finding, propose a concrete revision. Format:

3. line 47, paragraph on identification:
   buried topic sentence (writing_style.md §5). The point ("we identify
   the effect by …") appears in sentence 4 of 6.
   propose: move sentence 4 to first position; collapse sentences 1-3
   into a one-line setup.

7. line 122 (intro):
   contribution-first opening (writing_style/intro.md hard rules).
   "We construct the first dataset of …"
   propose: open with the research question first; move "We construct…"
   to a later paragraph.

12. line 215 (results):
    "starkest" — editorializing (writing_style.md §2 / writing_style/
    results.md). Replace with direct finding: "the temporal pattern is
    consistent with corruption migrating across margins as oversight
    tightened."

Then ask:

Respond with:
- "go" or "all"          → apply every proposed revision
- "all except 6,9"       → apply, skip those
- "1,3,5"                → apply only those
- "skip"                 → no edits

Apply with the Edit tool. Don't commit automatically.

6. Final pass

Re-run the mechanical linter to confirm no new deterministic violations were introduced.

When to use vs. the other style skills

SkillScopeMechanicalLLMLedger
/style-checkfileyes (style_lint.py)nono
/style-review (this)file (whole)yes (style_lint.py)yesno
/validate-sectionone sectionyes (style_lint.py)yesyes
/style-reviseparagraphyes (lints its rewrite)yesno

Same patterns underneath. This skill is for whole-document review when the document is worth a thorough pass; /validate-section is for section-scoped pre-submission validation with ledger writes. /style-revise is the earlier-pipeline counterpart: it reshapes a rough draft's idea flow and offers alternative structures, rather than auditing near-final prose against the guide. Route by draft maturity — rough → /style-revise, near-final → this skill.

Cost

Reading the file fully and reasoning over every paragraph against the general baseline plus per-type guides. Long papers take a few minutes of LLM time. Use --section <name> for tighter scope.

Output discipline

Findings in numbered form, one per item, with:

  • Line number(s)
  • The current text (short excerpt)
  • The proposed revision
  • One-sentence justification citing the rule by file/section.

No general praise or summary commentary. The user wants concrete edits.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.