by Vistyy
Deterministic prose checks for clearer coding-agent responses
# Add to your Claude Code skills
git clone https://github.com/Vistyy/nopusnopus is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Vistyy. Deterministic prose checks for clearer coding-agent responses. It has 51 GitHub stars.
nopus's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Vistyy/nopus" and add it to your Claude Code skills directory (see the Installation section above).
nopus is primarily written in TypeScript. It is open-source under Vistyy on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh nopus against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.

nopus catches coding-agent answers that disappear into abstract LLM babble. Using deterministic prose checks, it flags responses that cross your chosen complexity threshold and sends them back for one clearer rewrite.

Currently supported: Pi, Claude Code, Codex
To use nopus, install Node.js 22 or newer and make sure the node command is available.
Install nopus from npm:
pi install npm:@syzom/nopus
You can install the GitHub repository instead:
pi install git:github.com/Vistyy/nopus
Start Pi normally after installation. The extension checks each completed response. When it requests a rewrite, it hides the rejected response from the terminal transcript by default. The response remains in the Pi session and model history. Because nopus evaluates completed responses, the response remains visible while it streams and disappears only after nopus requests a rewrite. Use these commands while working:
/nopus status
/nopus check
/nopus on
/nopus off
/nopus extra-simple on
/nopus extra-simple off
/nopus hide-original on
/nopus hide-original off
Add the marketplace from GitHub and install the plugin:
/plugin marketplace add Vistyy/nopus
/plugin install nopus@nopus
The plugin uses a Stop hook to request one clearer response.
The identifier follows the plugin@marketplace format, so this plugin is nopus@nopus.
Add the marketplace from GitHub and install the plugin:
codex plugin marketplace add Vistyy/nopus
codex plugin add nopus@nopus
Start a new Codex session after installation so the plugin and its skills load.
The Codex plugin uses the same bounded Stop hook.
The identifier follows the plugin@marketplace format, so this plugin is nopus@nopus.
nopus examines the prose when a coding agent completes a response. Its measurements are deterministic, so the same prose and sensitivity produce the same decision. It measures these characteristics:
Word rarity comes from packaged conversational and broad-web frequency data. Abstractness comes from human-rated word concreteness, and technical exceptions come from a packaged computing glossary. The style matcher uses only a small allowlist of literal cues rather than trying to classify arbitrary writing habits.
nopus then looks for combinations that make a response materially harder to read. For example, uncommon words become more significant when they appear with sustained abstraction and dense phrase stacks. Several abstract sentences become more significant when loaded phrases recur throughout them.
Necessary technical terms, commands, identifiers, conditions, and qualifications remain part of the requested answer.
InteractiveSessionHost stays InteractiveSessionHost; nopus targets the difficult prose around it.
When nopus requests a rewrite, the host displays this message:
nopus requested a clearer rewrite.
For the response used in the example below, the default rewrite request gives the agent focused guidance and examples from its own response:
Rewrite the response for clarity and directness.
Keep its meaning and necessary detail.
Return only the revised response.
Focus on these areas:
- Replace formulaic framing with plain statements.
Examples from the response:
- "here's where it gets interesting": lecture-hall framing.
- "paradigm shift": tired.
Turning rewrite evidence off removes the Examples from the response block.
The agent still receives the rewrite instructions and focus areas.
Extra-simple rewriting is off by default. When enabled, nopus requests a short initial answer that keeps the main conclusion, immediate action, and conditions or warnings that could change that action. It leaves supporting rationale, examples, alternatives, future considerations, and lower-priority implementation details for follow-up.
Sensitivity controls how often nopus intervenes, and the default is medium.
| Sensitivity | What to expect | Observed rewrite rate | Best fit |
|---|---|---|---|
low |
Uses the strictest thresholds to target clear cases where abstraction, uncommon wording, or dense phrasing accumulates strongly. | 5.3% | You want intervention only for the most difficult responses. |
medium |
Catches difficulty sustained across several sentences or supported by multiple characteristics without treating isolated wording as a problem. | 9.9% | You want a balanced default for regular use. |
high |
Uses lower thresholds so shorter runs of abstraction and borderline combinations can request a rewrite sooner. | 18.6% | You consistently prefer plain language and accept more interventions. |
The observed rates come from 5,337 completed Pi responses and provide only a rough comparison because results vary by agent and task.
nopus-configure changes the settings used by the automatic integrations.
It does not rewrite a response.
| Action | Pi | Claude Code | Codex |
|---|---|---|---|
| Set medium sensitivity | /skill:nopus-configure medium |
/nopus:nopus-configure medium |
$nopus-configure medium |
| Disable rewrite evidence | /skill:nopus-configure evidence off |
/nopus:nopus-configure evidence off |
$nopus-configure evidence off |
| Enable extra-simple rewrites | /skill:nopus-configure extra-simple on |
/nopus:nopus-configure extra-simple on |
$nopus-configure extra-simple on |
| Show rejected Pi responses | /skill:nopus-configure hide-original off |
- | - |
The configuration skill writes $XDG_CONFIG_HOME/nopus/config.json, or the platform user-configuration equivalent.
{
"complexitySensitivity": "medium",
"includeEvidence": true,
"extraSimple": false,
"pi": {
"hideOriginalResponse": true
}
}
Rewrite evidence and Pi response hiding are enabled by default.
Extra-simple rewriting is disabled by default.
NOPUS_COMPLEXITY_SENSITIVITY, NOPUS_INCLUDE_EVIDENCE, NOPUS_EXTRA_SIMPLE, and NOPUS_PI_HIDE_ORIGINAL_RESPONSE override the configuration file for automation.
nopus-simplify is the manual counterpart to the automatic rewrite.
Use it when nopus does not trigger but you still find the preceding response too complex.
Invoking the skill requests a rewrite immediately instead of applying the selected sensitivity threshold.
It uses the same clarity goals as the automatic rewrite and preserves meaning, necessary detail, technical terms, commands, identifiers, conditions, and qualifications.
It does not change nopus configuration.
| Pi | Claude Code | Codex |
|---|---|---|
/skill:nopus-simplify |
/nopus:nopus-simplify |
$nopus-simplify |
Install dependencies and run all checks:
pnpm install
pnpm check
Update the normalized datasets from their checksum-pinned upstream sources:
pnpm import:data
See evaluation/README.md for the private-corpus calibration and regression workflow.
Normal analysis and verification do not download runtime data.
nopus retains normalized JSON rather than the original upstream formats. The SHA-256 values below ide