Agent skill

Fix Prose

by tbhb in tbhb/vale-ai-tells

Clear the vale and cspell findings on a document whose content is already settled.

Apache-2.0Auto-check passedDevelopment

Install Fix Prose

skills CLI
$ npx skills add tbhb/vale-ai-tells --skill fix-prose -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tbhb/vale-ai-tells fix-prose --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tbhb/vale-ai-tells.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/fix-prose .claude/skills/fix-prose && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fix-prose
GitHub stars
115
Token cost
~1.4k tokens
SKILL.md length
749 words
Files
7 (incl. scripts)
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Clear the vale and cspell findings on a document whose content is already settled.

  • Works in 3 steps: fix → check for silenced checkers → review, and loop
  • A draft is written but its prose gates are still red
  • SKILL.md covers Preflight, Arguments, Step 1: fix and Step 2: check for silenced…, plus 2 more sections
  • Runs Shell scripts from its folder; calls bash, mise and git

What it does

Fix Prose is an agent skill from tbhb/vale-ai-tells. Clear the vale and cspell findings on a document whose content is already settled. A forked writer does the rounds and an independent reviewer reads the result, so the finding text never reaches this session. Takes the file plus the lint command that judges it. Use it when a draft is written but its prose gates are still red, or when a lint task has come back with findings more than once.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `scripts/arm-guard.sh`, `scripts/check-suppressions.sh` and `scripts/guard-target.sh`).

It sits in Development, covering Linting and formatting. The repository describes itself as: In today's rapidly evolving landscape, vale-ai-tells is a comprehensive, cutting-edge Vale style package that empowers writers to seamlessly delve into the rich tapestry of AI…. The licence is Apache-2.0.

When your agent uses it

  • A draft is written but its prose gates are still red
  • A lint task has come back with findings more than once

Example prompts

  • “/fix-prose”

Requirements

  • A Bash shell

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. fix
  2. check for silenced checkers
  3. review, and loop

What it can do on your machine

Read from SKILL.md and the folder at commit 4c7abc9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • bash
    • mise
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fix Prose loads about 1.4k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 749 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from tbhb/vale-ai-tells at commit 4c7abc9, republished under its Apache-2.0 licence (© tbhb). 749 words, ~1,441 tokens.

Download SKILL.mdSave it as .claude/skills/fix-prose/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
fix-prose
description
Clear the vale and cspell findings on a document whose content is already settled. A forked writer does the rounds and an independent reviewer reads the result, so the finding text never reaches this session. Takes the file plus the lint command that judges it. Use it when a draft is written but its prose gates are still red, or when a lint task has come back with findings more than once.
license
Apache-2.0

Reword a settled draft until its prose lint passes

Run two forked skills against each other until the document holds up. Findings, retries, and rejected wordings stay in their context rather than this one. That's the whole reason the skill exists. A twenty-line commit message can cost four rounds of vale output, none of it worth the context it occupies here.

Use it once the document says what it should say. The writer changes wording rather than claims, so a draft still arguing with itself needs its author instead.

Preflight

!bash ${CLAUDE_SKILL_DIR}/scripts/preflight.sh $ARGUMENTS

Read the verdict before anything else. BLOCKED there means no agent can help. The file is missing, no rule set covers the path, or the document is already clean. Say which and hand back.

The preflight prints counts and verdicts rather than findings, on purpose. This body loads into your context rather than a fork, so a finding printed here enters the context the skill exists to keep clear.

Arguments

$ARGUMENTS carries the file first, then the command that judges it.

text
COMMIT_AGENTMSG mise run lint-commit-msg
PR_AGENTDESC.md mise run lint-pr-description
docs/design.md mise run lint-draft docs/design.md

The command comes from the caller because nobody else knows which gate applies. A commit draft answers to the commit-msg scope, and a description to its own task. Anything else takes mise run lint-draft, which runs vale and cspell and rumdl together over one file.

Prefer a task that runs every checker at once. mise run lint-prose runs vale alone, so a document clearing it can still fail spelling and structure, and a verdict from that task is narrower than it sounds.

Where the arguments don't name a file, ask which one. That first word is the path the guard protects. A run starting without it leaves the draft unprotected.

Step 1: fix

Invoke write-prose-fix. It runs forked, and its own context block hands it the findings and the document, so it starts working rather than looking.

text
Skill(write-prose-fix, args: "<target> <lint command>")

Pass nothing else in the arguments. The step that builds the writer's context substitutes them into a shell command line as raw text, so a semicolon runs, a parenthesis fails to parse, and an asterisk expands against the working directory. Findings text holds all three.

Where you have findings to hand over, write them to a file first and leave the arguments alone:

bash
printf '%s\n' "<the reviewer's findings, verbatim>" > "$(git rev-parse --absolute-git-dir)/fix-prose.notes"

The writer's context prints that file and works from it. Remove it once the loop ends, so the next run starts clean.

Never edit the target yourself. A guard hook refuses it, because editing it here means reading the findings here.

It returns PROSE: CLEAN, PROSE: PARTIAL with a short unresolved list, or PROSE: BLOCKED.

Show full SKILL.md (320 more words)Show less

Step 2: check for silenced checkers

bash
bash .claude/skills/fix-prose/scripts/check-suppressions.sh --verify

It compares the working tree against a baseline the guard recorded at invocation. Silence means the writer edited nothing but the target. Any output names a file it shouldn't have changed.

This runs here rather than inside the fork because an agent certifying its own work certifies nothing. The writer runs unguarded in there, so a style file or an inline cspell:ignore is within its reach, and both produce a clean lint run over a document nobody fixed. A finding means reverting that edit and taking the original lint finding back as unresolved.

Step 3: review, and loop

Invoke review-prose-fix. It runs forked as an independent agent that saw neither the findings nor the edits, and it reads the before and after against each other.

text
Skill(review-prose-fix, args: "<repository root> <target>")

The review exists because a clean lint run is a weak result on its own. Nothing in the gates scores a claim that moved, a name traded for a vaguer phrase, or a metaphor that arrived while somebody was clearing a rule. A document can pass every checker and come back saying something its author never wrote.

Its verdict drives the loop:

  • VERDICT: PASS ends it. Report what changed and hand back.
  • VERDICT: CHANGES REQUIRED returns to step 1, with the findings verbatim after the --.

Bound it at three rounds. Stop after that and report which findings keep returning, because a fourth pass at the same objection rarely helps.

What to report

The unresolved list and nothing else. Each entry needs a decision that changes what the document claims, which is yours or the operator's rather than another lint round.

A rule misfiring on correct text arrives that way by design. The writer never turns a rule off or adds an exception, and never rewrites a sentence into nonsense to clear one. Overrule one by editing the target yourself. The guard prints its own release command for exactly that.

© tbhb, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts) in .claude/skills/fix-prose of tbhb/vale-ai-tells.

  • SKILL.md
  • scripts/arm-guard.sh
  • scripts/check-suppressions.sh
  • scripts/guard-target.sh
  • scripts/preflight.sh
  • scripts/release-once.sh
  • tokens.json

Open the folder on GitHubat commit 4c7abc9

Compare with similar skills

Fix Prose next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fix Prose compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fix Prose this skilltbhb/vale-ai-tells115—~1.4kAutomated safety check: PassApache-2.0
Summarise Ecosystem Resultsastral-sh/ruff50k1 repos~2.2kAutomated safety check: PassMIT
Template LibraryZJU-REAL/Easel3.2k—~1kAutomated safety check: PassApache-2.0
Post FormatterZJU-REAL/Easel3.2k—~537Automated safety check: PassApache-2.0
Code Layout Evaluation Principleskitchen-engineer42/pdf2skills134—~383Automated safety check: PassNone
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.3k1 repos~2.2kAutomated safety check: PassMIT

Similar skills

  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Template Library

    ZJU-REAL/Easel

    内容模板的保存、复用、管理。把成功的内容结构保存为模板,下次直接套用,支持模板分类和版本管理. An agent skill from ZJU-REAL/Easel.

    3.2k GitHub stars~1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Post Formatter

    ZJU-REAL/Easel

    用 PAS、AIDA、BAB、STAR、SLAY 等经典框架将主题结构化为社媒帖子. An agent skill from ZJU-REAL/Easel.

    3.2k GitHub stars~537 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Code Layout Evaluation Principles

    kitchen-engineer42/pdf2skills

    Evaluate code layout quality based on accuracy, consistency, readability, and maintainability rather than aesthetics.

    134 GitHub stars~383 tokensUpdated 7 mo ago
    DevelopmentAuto-check passed
  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.3k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed

More from tbhb/vale-ai-tells

All 27 skills in this repo
  • Analyze Session

    tbhb/vale-ai-tells

    Query a Claude Code transcript without reading it into context, then write the retrospective to disk so it remains available after the session ends.

    115 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Codex Analyze Session

    tbhb/vale-ai-tells

    Query a Codex transcript without reading it into context, then write the retrospective to disk so it remains available after the session ends.

    115 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Codex Fix PR

    tbhb/vale-ai-tells

    Diagnose failing pull request checks, reproduce them locally, make focused fixes, commit them through codex-commit, and refresh the published description when needed.

    115 GitHub stars~575 tokensUpdated yesterday
    Auto-check passed
  • Codex Merge PR

    tbhb/vale-ai-tells

    Squash merge a pull request. An agent skill from tbhb/vale-ai-tells.

    115 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Codex PR

    tbhb/vale-ai-tells

    Open or update a pull request for the current branch with an independently drafted and reviewed PRAGENTDESC.md.

    115 GitHub stars~846 tokensUpdated yesterday
    Auto-check passed
  • Codex Rebase

    tbhb/vale-ai-tells

    Replay the current branch onto its base and establish that the result is sound.

    115 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Questions about Fix Prose

What does Fix Prose do?

Clear the vale and cspell findings on a document whose content is already settled. Fix Prose is an agent skill from tbhb/vale-ai-tells. Clear the vale and cspell findings on a document whose content is already settled.

When should I use Fix Prose?

Fix Prose fits situations like: A draft is written but its prose gates are still red; A lint task has come back with findings more than once.

How do I install Fix Prose in Claude Code?

Run `npx skills add tbhb/vale-ai-tells --skill fix-prose -a claude-code`. Or copy the skill folder (.claude/skills/fix-prose in tbhb/vale-ai-tells) into .claude/skills/fix-prose in your project. Claude Code loads it when a task matches its description.

How do I install Fix Prose in Codex?

Run `npx skills add tbhb/vale-ai-tells --skill fix-prose -a codex`. Or copy the skill folder (.claude/skills/fix-prose in tbhb/vale-ai-tells) into .agents/skills/fix-prose in your project. Codex loads it when a task matches its description.

Can I use Fix Prose in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tbhb/vale-ai-tells --skill fix-prose -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fix-prose, .gemini/skills/fix-prose, .github/skills/fix-prose and .opencode/skills/fix-prose in your project.

What does Fix Prose need to run?

Going by SKILL.md and its folder, Fix Prose needs a shell for the scripts in its folder and the command-line tools its instructions call (bash, mise and git). Our summary lists: A Bash shell.

Does Fix Prose access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Fix Prose safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Fix Prose use?

Fix Prose is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fix Prose use?

About 1.4k tokens (SKILL.md is roughly 5.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fix Prose?

Skills that share tags, products or a category with Fix Prose: Summarise Ecosystem Results (astral-sh/ruff, 50k stars), Template Library (ZJU-REAL/Easel, 3.2k stars), Post Formatter (ZJU-REAL/Easel, 3.2k stars) and Code Layout Evaluation Principles (kitchen-engineer42/pdf2skills, 134 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fix Prose?

tbhb (a GitHub user) maintains it in tbhb/vale-ai-tells, which has 115 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 2026.

Source: tbhb/vale-ai-tells on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.