jev-prose — Claude Code skill: check prose for AI patterns
The skill runs your draft through the jev-prose CLI, gets a report on narrow AI-writing patterns, and revises from that feedback. Useful while drafting paragraphs.
npx skills add pchalasani/claude-code-tools --skill jev_prose -a claude-codeWhat jev-prose does
The skill drives the jev-prose CLI, which returns independent probabilistic editorial feedback. It flags patterns, not authorship. You keep the editorial decisions.
The loop is bounded. Save the exact draft to a UTF-8 file, then run jev-prose check draft.txt --profile general > report.json. Read the report even when the command exits 1 — that means findings, not a failed call. You need ran: true, ok: true and answered matching the expected count. Exit 2, missing output or malformed JSON stops the loop as an error. At most three revisions and four checks are allowed, and the last revision always gets checked.
Authentication defaults to CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN, or an existing sysone account with a Wrangler login. Text and optional context go to the hosted Jev backend, so keep secrets out of the draft. An auth or billing failure stops the loop. There is a 24,000-character input limit and silent truncation is not allowed. No automatic hook is installed; the workflow runs when invoked.
What it helps with
- strip template AI phrasing from a finished paragraph
- run a draft through an outside check and get a report
- revise from feedback without losing facts or quotations
- tell real findings apart from false positives
- check the final revision instead of leaving it unchecked
Example prompts for the agent
- check this paragraph with jev-prose and suggest revisions
- run the section draft through jev-prose check and show me the report
- set up a check-and-revise loop for this text, three revisions max
How to install jev-prose
1Skills CLI (Vercel)
npx skills add pchalasani/claude-code-tools --skill jev_prose -a claude-code2Manually: put the files in place
~/.claude/skills/jev_prose/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/jev_prose/
1Skills CLI (Vercel)
npx skills add pchalasani/claude-code-tools --skill jev_prose -a codex2Manually: put the files in place
.agents/skills/jev_prose/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add pchalasani/claude-code-tools --skill jev_prose -a cursor2Manually: put the files in place
.cursor/skills/jev_prose/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install pchalasani/claude-code-tools jev_prose2Manually: put the files in place
.github/skills/jev_prose/SKILL.md1Skills CLI (Vercel)
npx skills add pchalasani/claude-code-tools --skill jev_prose -a gemini-cli2Platform CLI
gemini skills install https://github.com/pchalasani/claude-code-tools --path packages/jev-prose/src/jev_proseManually: put the files in place
.devin/skills/jev_prose/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add pchalasani/claude-code-tools --skill jev_prose -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about jev-prose
How do I install jev-prose in Claude?
Run npx skills add pchalasani/claude-code-tools --skill jev_prose -a claude-code. The skill then lives at ~/.claude/skills/jev_prose/SKILL.md.
What does jev-prose do?
It checks a draft with the jev-prose CLI for narrow AI-writing patterns and returns a report with flagged questions and guidance. You decide which findings to act on and which to dismiss.
What does jev-prose need to run?
An installed jev-prose CLI plus backend access: CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN, or a configured sysone account with a Wrangler login. Without that the loop will not start.
Source text
SKILL.md · MIT
--- name: jev-prose description: >- Check prose with Jev for narrow AI-writing patterns and revise from its feedback. Use when asked for Jev prose checks, AI-pattern cleanup, or an ongoing check-and-rewrite loop while writing sentences or paragraphs. --- # Jev prose check and revision Use the `jev-prose` CLI to get independent, probabilistic editorial feedback. It checks patterns, not authorship. The writer makes the editorial decisions. ## Setup Run `jev-prose --help` to check availability. From a claude-code-tools checkout, install with `uv tool install ./packages/jev-prose`. The package carries the persistent question bank; no global skill source paths are needed at runtime. If no checkout or installed CLI is available, report that prerequisite rather than substituting self-review for a Jev result. Default authentication is `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN`, or an existing sysone account configuration and Wrangler login. The backend is hosted Jev; the text and optional context are sent there. A configured alternative can be selected with `--backend typesafe` or `--url` and `--model`. Do not print secrets. An authentication or billing failure stops the loop. ## Bounded loop For each requested sentence, paragraph, or short section: 1. Save the exact draft in a temporary UTF-8 file. Keep the original and track the revision count (initial draft is attempt 0). Preserve the user's intended facts, names, numbers, citations, caveats, voice, and literal quotations. 2. Run `jev-prose check draft.txt --profile general > report.json`. For papers, specifications, and formal technical prose use `--profile formal`. Use `strict` only when requested; it adds personal editorial preferences. Optional `--audience`, `--voice`, and `--context context.txt` help avoid false positives. Keep these settings and the threshold fixed throughout the loop. 3. Read the report even when the command exits 1: that means findings, not a failed call. Require `ran: true`, `ok: true`, and `answered == expected`. Exit 2, missing output, malformed JSON, or an incomplete check stops the loop as an error; never label the draft clean in those cases. 4. If `status` is `clean`, stop. Otherwise inspect the flagged questions and guidance against the actual draft. A high probability is not a command to edit: dismiss an inapplicable flag with a brief reason. Jev provides no evidence spans; locate the passage yourself without pretending it supplied an exact quote. Combine overlapping findings into one targeted revision. 5. If no useful revision follows, stop and disclose the unresolved or dismissed flags. Otherwise revise only the affected prose, increment the attempt count, and return to step 2. Allow at most **three revisions and four checks total**. Stop earlier if text repeats or feedback cycles without useful improvement. Always check the last revision; never end on an unchecked rewrite. Preserve substantive claims as well as individual facts. If addressing a finding would weaken, strengthen, remove, or otherwise change a conclusion, leave the claim intact and report the finding unresolved unless the user has authorized factual or argument changes. An unsupported claim is not permission to silently replace the author's intended claim with a different one. Do not change thresholds to obtain a clean result. Do not add invented examples, anecdotes, feelings, measurements, sources, or stronger claims. Do not remove necessary qualifications or factual content to lower the number of flags. Check meaning against the original after each revision; undo any harmful edit. A sentence check cannot establish document-level structure. If asked to use this while writing a document, check each completed paragraph and then the finished short section for repetition. Respect the 24,000-character input limit; do not silently truncate. This workflow runs when invoked; it installs no automatic hook. Return the revised prose in the requested form. Briefly report the number of revisions, check outcome, and any unresolved/dismissed findings. If every finding was dismissed, say that explicitly instead of reporting a model-clean result. Keep detector reports out of published prose unless requested.
© pchalasani · MIT · pchalasani/claude-code-tools