A linter for LLM prompts. Scores your prompt across 7 dimensions, flags technique gaps for your use case, and generates an improved version.
PromptLint is a Claude Code plugin that evaluates prompts the way a code linter evaluates code β against a rubric of best practices, tuned to what actually matters for your use case.
Run /promptlint on any LLM prompt and get:
- A scored evaluation across 7 dimensions (1β5 scale each)
- Actionable feedback with concrete fixes for every weak area
- An improved prompt that's clean and production-ready β copy it straight into your codebase
flowchart LR
A["π Original Prompt\n+ Use Case"] --> B["π Scored Evaluation\n7 Dimensions Β· 1β5 Scale"]
B --> C["π‘ Actionable Feedback\nConcrete fixes per dimension"]
C --> D["β
Improved Prompt\nClean Β· Versioned Β· Production-ready"]
Each dimension is scored on a 1β5 scale. A 5 means genuinely excellent β most production prompts score 2β4, and the value is in the specific, actionable feedback.
Could a "brilliant new employee" with zero context follow this perfectly?
| 1/5 | 5/5 |
|---|---|
| Fundamentally unclear what the prompt wants | Crystal clear β zero-context colleague could follow it flawlessly |
- Action-oriented instructions ("Do X" instead of "Don't do Y")
- Explicit constraints and sequential steps with clear ordering
Explain the why, not just the what, to help the model generalize.
| 1/5 | 5/5 |
|---|---|
| No context β just raw, bare instructions | Rich context that enables intelligent generalization |
- Background info on the task's purpose or target audience
- Motivated constraints so the model handles unstated edge cases intelligently
Use structural elements like XML tags to prevent model misinterpretation.
| 1/5 | 5/5 |
|---|---|
| No structural organization β a wall of text | Well-structured with clear tags, hierarchy, and separation of concerns |
- XML tags to separate instructions, context, examples, and data
- Consistent nesting hierarchy and clear section boundaries
Provide diverse, realistic demonstrations to ground the model's output.
| 1/5 | 5/5 |
|---|---|
| No examples where they would clearly help | 3+ diverse, realistic, well-structured examples covering edge cases |
- 3β5 diverse examples covering typical and edge cases, wrapped in
<example>tags - Balanced across categories/labels β scored N/A when examples aren't needed
Define exactly what "done" looks like.
| 1/5 | 5/5 |
|---|---|
| No output specification at all | Complete spec β format, fields, tone, length, and fallback behaviors |
- Expected format (JSON, Markdown, prose), length, and tone
- Edge case handling and fallback behavior specification
Leverage the right prompting patterns tailored to your specific use case.
| 1/5 | 5/5 |
|---|---|
| No awareness of prompting techniques β bare instruction | Excellent pattern selection precisely matched to the use case |
- Aligns techniques with use cases (Chain-of-Thought for reasoning, ReAct for agents, etc.)
- Structured output and balanced labels for classification tasks
Defend against adversarial inputs, ambiguity, and failure modes.
| 1/5 | 5/5 |
|---|---|
| No consideration of robustness or failure modes | Comprehensive defense against adversarial input and uncertainty |
- Separation of instructions from user data (prompt injection defense)
- Hallucination guardrails and instructions for handling missing information
PromptLint adjusts its rubric based on the Technique Fitness required for your project:
| Use Case | What PromptLint Checks |
|---|---|
| Classification | Label definitions, structured output, balanced examples |
| Agentic | ReAct pattern, tool definitions, state management, safety rails |
| RAG | Grounding, source attribution, context tagging |
| Code Generation | Schema definitions, language/framework specification |
| Reasoning | Chain-of-thought, step-by-step decomposition |
Activated for multi-source RAG systems β code intelligence, Jira + Slack + PDF pipelines, hybrid graph agents, legal citation systems.
| Check | What It Enforces |
|---|---|
| Per-Type Fidelity | Code β character-exact; Jira β field IDs preserved; Slack β speaker attribution; Legal β verbatim quotes |
| Context Tagging | Sources wrapped in typed tags (<source type="code">, <source type="jira">, etc.) |
| Conflict Resolution | Explicit instructions when sources disagree (e.g., Slack says "broken" vs Jira says "resolved") |
| Traceability | Mandatory citations β file paths, ticket IDs, channel + timestamp, page + section |
npx @ceoepicwise/promptlintThis installs the plugin into your Claude Code environment. Restart Claude Code and /promptlint is ready to use.
To uninstall:
npx @ceoepicwise/promptlint --uninstall# Clone the repo
git clone https://github.com/EpicWise/promptlint.git
# Run Claude Code with the plugin loaded
claude --plugin-dir ./promptlint/promptlint ./prompts/system-prompt.md Customer support chatbot handling refunds
/promptlint ./src/rag-prompt.txt Hybrid code intelligence assistant with Jira and Slack context
/promptlint paste Classification pipeline for routing support tickets
First argument: file path to the prompt, or paste to paste it inline.
Remaining arguments: the use case β what the prompt does, who it's for, and any constraints the linter should know.
Every lint run produces two timestamped files:
system_prompt.md β your original (untouched)
system_prompt_lint_20260323_143052.md β evaluation report
system_prompt_improved_20260323_143052.md β improved prompt
Run the linter again after making changes and the previous results are preserved β making it easy to diff across iterations and track how your prompt evolved.
Scoring is strict by design. A 5/5 means genuinely excellent. Most production prompts score 2β4 on most dimensions, and that's normal β the value is in the specific, actionable feedback.
promptlint/
βββ .claude-plugin/
β βββ plugin.json # Plugin metadata
βββ bin/
β βββ install.mjs # npx installer
βββ commands/
β βββ lint.md # /promptlint slash command
βββ skills/
β βββ evaluate-prompt/
β βββ SKILL.md # Core evaluation engine
β βββ references/
β βββ techniques.md # Technique-to-use-case mapping
βββ evals/
β βββ evals.json # Test cases with expected outcomes
β βββ test-prompts/ # Sample prompts for testing
βββ package.json # npm package config
βββ LICENSE # MIT
βββ CONTRIBUTING.md
βββ README.md
Contributions are welcome β see CONTRIBUTING.md for details. Areas where help is especially valuable:
- New technique references β know a prompting pattern that should be part of the evaluation? Add it.
- New test cases β prompts from healthcare, legal, finance, devtools, and other domains.
- Use-case-specific sub-rubrics β similar to the Source Fidelity Sub-Rubric, other domains may benefit from specialized checks.
- Model-specific guidance β deep experience with a model's prompting quirks? Add model-aware checks.
- v1.0 (current) β Prompt evaluation and improvement
- v1.1 β Prompt generation from a use case description (
/promptlint generate)
MIT β Copyright 2026 EpicWise