{"_id":"@ceoepicwise/promptlint","name":"@ceoepicwise/promptlint","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ceoepicwise/promptlint","version":"1.0.0","description":"A linter for LLM prompts. Scores your prompt across 7 dimensions, flags technique gaps for your use case, and generates an improved version. Claude Code plugin.","bin":{"promptlint":"bin/install.mjs"},"keywords":["promptlint","prompt-engineering","prompt-evaluation","prompt-linter","claude-code","claude-code-plugin","rag","multi-source-rag","agentic","llm","best-practices"],"author":{"name":"EpicWise","email":"ankit.verma@epicwise.io","url":"https://github.com/EpicWise"},"homepage":"https://github.com/EpicWise/promptlint","repository":{"type":"git","url":"git+https://github.com/EpicWise/promptlint.git"},"license":"MIT","engines":{"node":">=18"},"gitHead":"e9f8166a7324ef0ce25cae0c7ad02ed1e278ef2d","_id":"@ceoepicwise/promptlint@1.0.0","bugs":{"url":"https://github.com/EpicWise/promptlint/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-lEn6pJXL9FxzkRGckzR66l9bO2/F52F41uSp4HzwZHqH3Jhhlbm8flCfwCZKWYWPk+6igN14ybNcUSBgY4GPrw==","shasum":"e7436ff13c043e1b9b1f3c5fead0c5f71c26a6ab","tarball":"https://registry.npmjs.org/@ceoepicwise/promptlint/-/promptlint-1.0.0.tgz","fileCount":13,"unpackedSize":56124,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHa4zYxAY43BMrrmkAWBPqS0CHp2xeZk3TbqtZDre4OKAiAxH+mvFR4MYVfVhfIkwXviPfKioKZDZMTVQrSoZ8MoZA=="}]},"_npmUser":{"name":"ceoepicwise","email":"ankit.verma@epicwise.io"},"directories":{},"maintainers":[{"name":"ceoepicwise","email":"ankit.verma@epicwise.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/promptlint_1.0.0_1774335478928_0.6462350858868531"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T06:57:58.860Z","1.0.0":"2026-03-24T06:57:59.067Z","modified":"2026-03-24T06:57:59.312Z"},"maintainers":[{"name":"ceoepicwise","email":"ankit.verma@epicwise.io"}],"description":"A linter for LLM prompts. Scores your prompt across 7 dimensions, flags technique gaps for your use case, and generates an improved version. Claude Code plugin.","homepage":"https://github.com/EpicWise/promptlint","keywords":["promptlint","prompt-engineering","prompt-evaluation","prompt-linter","claude-code","claude-code-plugin","rag","multi-source-rag","agentic","llm","best-practices"],"repository":{"type":"git","url":"git+https://github.com/EpicWise/promptlint.git"},"author":{"name":"EpicWise","email":"ankit.verma@epicwise.io","url":"https://github.com/EpicWise"},"bugs":{"url":"https://github.com/EpicWise/promptlint/issues"},"license":"MIT","readme":"# PromptLint\n\nA linter for LLM prompts. Scores your prompt across 7 dimensions, flags technique gaps for your use case, and generates an improved version.\n\nPromptLint is a [Claude Code plugin](https://docs.claude.com) 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.\n\n## What it does\n\nRun `/promptlint` on any LLM prompt and get:\n\n1. **A scored evaluation** across 7 dimensions (1–5 scale each)\n2. **Actionable feedback** with concrete fixes for every weak area\n3. **An improved prompt** that's clean and production-ready — copy it straight into your codebase\n\n### How It Works\n\n```mermaid\nflowchart LR\n    A[\"📄 Original Prompt\\n+ Use Case\"] --> B[\"🔍 Scored Evaluation\\n7 Dimensions · 1–5 Scale\"]\n    B --> C[\"💡 Actionable Feedback\\nConcrete fixes per dimension\"]\n    C --> D[\"✅ Improved Prompt\\nClean · Versioned · Production-ready\"]\n```\n\n### The 7 Evaluation Dimensions\n\n> 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.\n\n#### 1. Clarity & Specificity\n> *Could a \"brilliant new employee\" with zero context follow this perfectly?*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| Fundamentally unclear what the prompt wants | Crystal clear — zero-context colleague could follow it flawlessly |\n\n- Action-oriented instructions (\"Do X\" instead of \"Don't do Y\")\n- Explicit constraints and sequential steps with clear ordering\n\n#### 2. Context & Motivation\n> *Explain the **why**, not just the **what**, to help the model generalize.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No context — just raw, bare instructions | Rich context that enables intelligent generalization |\n\n- Background info on the task's purpose or target audience\n- Motivated constraints so the model handles unstated edge cases intelligently\n\n#### 3. Structure & Organization\n> *Use structural elements like XML tags to prevent model misinterpretation.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No structural organization — a wall of text | Well-structured with clear tags, hierarchy, and separation of concerns |\n\n- XML tags to separate instructions, context, examples, and data\n- Consistent nesting hierarchy and clear section boundaries\n\n#### 4. Examples & Few-Shot Quality\n> *Provide diverse, realistic demonstrations to ground the model's output.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No examples where they would clearly help | 3+ diverse, realistic, well-structured examples covering edge cases |\n\n- 3–5 diverse examples covering typical and edge cases, wrapped in `<example>` tags\n- Balanced across categories/labels — scored N/A when examples aren't needed\n\n#### 5. Output Contract\n> *Define exactly what \"done\" looks like.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No output specification at all | Complete spec — format, fields, tone, length, and fallback behaviors |\n\n- Expected format (JSON, Markdown, prose), length, and tone\n- Edge case handling and fallback behavior specification\n\n#### 6. Technique Fitness\n> *Leverage the right prompting patterns tailored to your specific use case.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No awareness of prompting techniques — bare instruction | Excellent pattern selection precisely matched to the use case |\n\n- Aligns techniques with use cases (Chain-of-Thought for reasoning, ReAct for agents, etc.)\n- Structured output and balanced labels for classification tasks\n\n#### 7. Robustness & Edge Cases\n> *Defend against adversarial inputs, ambiguity, and failure modes.*\n\n| 1/5 | 5/5 |\n|-----|-----|\n| No consideration of robustness or failure modes | Comprehensive defense against adversarial input and uncertainty |\n\n- Separation of instructions from user data (prompt injection defense)\n- Hallucination guardrails and instructions for handling missing information\n\n---\n\n### Use-Case-Aware Evaluation\n\nPromptLint adjusts its rubric based on the **Technique Fitness** required for your project:\n\n| Use Case | What PromptLint Checks |\n|----------|----------------------|\n| **Classification** | Label definitions, structured output, balanced examples |\n| **Agentic** | ReAct pattern, tool definitions, state management, safety rails |\n| **RAG** | Grounding, source attribution, context tagging |\n| **Code Generation** | Schema definitions, language/framework specification |\n| **Reasoning** | Chain-of-thought, step-by-step decomposition |\n\n### Source Fidelity Sub-Rubric\n\n> Activated for **multi-source RAG systems** — code intelligence, Jira + Slack + PDF pipelines, hybrid graph agents, legal citation systems.\n\n| Check | What It Enforces |\n|-------|-----------------|\n| **Per-Type Fidelity** | Code → character-exact; Jira → field IDs preserved; Slack → speaker attribution; Legal → verbatim quotes |\n| **Context Tagging** | Sources wrapped in typed tags (`<source type=\"code\">`, `<source type=\"jira\">`, etc.) |\n| **Conflict Resolution** | Explicit instructions when sources disagree (e.g., Slack says \"broken\" vs Jira says \"resolved\") |\n| **Traceability** | Mandatory citations — file paths, ticket IDs, channel + timestamp, page + section |\n\n## Installation\n\n### One-command install (recommended)\n\n```bash\nnpx promptlint\n```\n\nThis installs the plugin into your Claude Code environment. Restart Claude Code and `/promptlint` is ready to use.\n\nTo uninstall:\n\n```bash\nnpx promptlint --uninstall\n```\n\n### Manual install\n\n```bash\n# Clone the repo\ngit clone https://github.com/EpicWise/promptlint.git\n\n# Run Claude Code with the plugin loaded\nclaude --plugin-dir ./promptlint\n```\n\n## Usage\n\n```\n/promptlint ./prompts/system-prompt.md Customer support chatbot handling refunds\n\n/promptlint ./src/rag-prompt.txt Hybrid code intelligence assistant with Jira and Slack context\n\n/promptlint paste Classification pipeline for routing support tickets\n```\n\n**First argument:** file path to the prompt, or `paste` to paste it inline.\n\n**Remaining arguments:** the use case — what the prompt does, who it's for, and any constraints the linter should know.\n\n## Output\n\nEvery lint run produces two timestamped files:\n\n```\nsystem_prompt.md                              ← your original (untouched)\nsystem_prompt_lint_20260323_143052.md          ← evaluation report\nsystem_prompt_improved_20260323_143052.md      ← improved prompt\n```\n\nRun 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.\n\n## Scoring\n\nScoring 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.\n\n## Project Structure\n\n```\npromptlint/\n├── .claude-plugin/\n│   └── plugin.json          # Plugin metadata\n├── bin/\n│   └── install.mjs          # npx installer\n├── commands/\n│   └── lint.md              # /promptlint slash command\n├── skills/\n│   └── evaluate-prompt/\n│       ├── SKILL.md          # Core evaluation engine\n│       └── references/\n│           └── techniques.md # Technique-to-use-case mapping\n├── evals/\n│   ├── evals.json           # Test cases with expected outcomes\n│   └── test-prompts/        # Sample prompts for testing\n├── package.json             # npm package config\n├── LICENSE                   # MIT\n├── CONTRIBUTING.md\n└── README.md\n```\n\n## Contributing\n\nContributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) for details. Areas where help is especially valuable:\n\n- **New technique references** — know a prompting pattern that should be part of the evaluation? Add it.\n- **New test cases** — prompts from healthcare, legal, finance, devtools, and other domains.\n- **Use-case-specific sub-rubrics** — similar to the Source Fidelity Sub-Rubric, other domains may benefit from specialized checks.\n- **Model-specific guidance** — deep experience with a model's prompting quirks? Add model-aware checks.\n\n## Roadmap\n\n- **v1.0** (current) — Prompt evaluation and improvement\n- **v1.1** — Prompt generation from a use case description (`/promptlint generate`)\n\n## License\n\n[MIT](LICENSE) — Copyright 2026 EpicWise\n","readmeFilename":"README.md","_rev":"1-23dec344c7f0c6d38ef72ffd837353b7"}