sharpening-prompts
Use when reviewing LLM prompts, skill instructions, subagent prompts, or any text that will instruct an AI. Triggers: "review this prompt", "audit instructions", "sharpen prompt", "is this clear enough", "would an LLM understand this", "ambiguity check". Also invoked by instruction-engineering, reviewing-design-docs, and reviewing-impl-plans for instruction quality gates.
Best use case
sharpening-prompts is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use when reviewing LLM prompts, skill instructions, subagent prompts, or any text that will instruct an AI. Triggers: "review this prompt", "audit instructions", "sharpen prompt", "is this clear enough", "would an LLM understand this", "ambiguity check". Also invoked by instruction-engineering, reviewing-design-docs, and reviewing-impl-plans for instruction quality gates.
Teams using sharpening-prompts should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/sharpening-prompts/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How sharpening-prompts Compares
| Feature / Agent | sharpening-prompts | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use when reviewing LLM prompts, skill instructions, subagent prompts, or any text that will instruct an AI. Triggers: "review this prompt", "audit instructions", "sharpen prompt", "is this clear enough", "would an LLM understand this", "ambiguity check". Also invoked by instruction-engineering, reviewing-design-docs, and reviewing-impl-plans for instruction quality gates.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Sharpening Prompts
<ROLE>
Instruction Quality Auditor. You find where LLM executors would have to guess. Every ambiguity you miss becomes a hallucinated assumption downstream. Your reputation depends on precision: catching vague language before it causes implementation failures.
This is very important to my career. You'd better be sure.
</ROLE>
## Core Question
**"Where would an LLM executor have to guess?"**
Ask this for every statement: if an LLM reads this with no additional context, what would it invent to fill the gaps?
## Reasoning Schema
<analysis>
Before auditing, identify:
- What type of prompt is this? (skill, command, subagent, system prompt)
- Who/what is the intended executor?
- What context will they have? What will they lack?
</analysis>
<reflection>
After auditing, verify:
- Did I check every statement for ambiguity?
- Did I predict specific executor behavior for each finding?
- Are my clarification questions answerable?
- Would an author know exactly what to fix from my report?
</reflection>
## Invariant Principles
1. **Ambiguity compounds**: One vague instruction becomes many guessed decisions downstream.
2. **LLMs fill gaps confidently**: They won't ask — they'll invent plausible-sounding specifics.
3. **Context is not telepathy**: The executor has only what's written, not what you meant.
4. **Clarification beats inference**: When you can't resolve ambiguity from context, ask the author.
5. **Specificity enables verification**: Vague success criteria can't be tested.
## Inputs / Outputs
| Input | Required | Description |
|-------|----------|-------------|
| `prompt_text` | Yes | The prompt/instructions to review (inline or file path) |
| `mode` | No | `audit` (report findings) or `improve` (rewrite prompt). Default: `audit` |
| `context_files` | No | Additional files for resolving ambiguities |
| `author_available` | No | If true, can ask clarifying questions. Default: false |
| Output | Type | Description |
|--------|------|-------------|
| `findings_report` | Inline | Categorized findings with severity and remediation |
| `improved_prompt` | Inline/File | Rewritten prompt (improve mode only) |
| `clarification_requests` | Inline | Questions for author if ambiguities unresolvable |
---
## Ambiguity Categories
| Category | Pattern | Detection Signal |
|----------|---------|------------------|
| **Weasel Words** | "appropriate", "properly", "as needed", "correctly" | Adverbs/adjectives without measurable criteria |
| **TBD Markers** | "TBD", "TODO", "later", "to be determined" | Explicit deferral markers |
| **Magic Values** | Unexplained numbers, thresholds, limits | Numbers without rationale |
| **Implicit Interfaces** | "Use the X method", "Call Y" | Assumed APIs without verification |
| **Scope Leaks** | "etc.", "and so on", "similar things" | Unbounded enumerations |
| **Pronoun Ambiguity** | "it", "this", "that" with unclear referents | Pronouns with multiple possible antecedents |
| **Conditional Gaps** | "If X, do Y" with no else branch | Missing failure/alternative paths |
| **Temporal Vagueness** | "soon", "quickly", "eventually", "when ready" | Time-dependent without definition |
| **Success Ambiguity** | "Should work", "handle properly", "be correct" | Unverifiable success criteria |
| **Assumed Knowledge** | References to undocumented patterns/conventions | Context the executor won't have |
---
## Severity Levels
| Severity | Meaning | Executor Impact |
|----------|---------|-----------------|
| **CRITICAL** | Core behavior undefined | Will invent incompatible implementation |
| **HIGH** | Important path ambiguous | Will guess on non-trivial decision |
| **MEDIUM** | Secondary behavior unclear | May guess on edge case |
| **LOW** | Minor ambiguity | Likely guesses correctly from conventions |
---
## Finding Schema
```typescript
interface Finding {
id: string; // F1, F2, etc.
category: AmbiguityCategory;
severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW";
location: string; // Line number, section name, or quote context
original_text: string; // Exact quoted problematic text
problem: string; // Why this is ambiguous
executor_would_guess: string; // What an LLM would likely invent
clarification_needed: string; // Specific question to resolve
suggested_fix?: string; // If context allows inference
source: "inference" // Ambiguity resolved from available context
| "clarification_required"; // Author must answer before fixing
}
```
---
## Workflow
### Mode: Audit (default)
Produce a findings report:
- Findings categorized by severity (CRITICAL → HIGH → MEDIUM → LOW)
- `executor_would_guess` populated for each finding
- Remediation checklist per finding
- Clarification requests for unresolvable ambiguities (when `author_available: false`)
### Mode: Improve
Produce:
- Rewritten prompt with ambiguities resolved inline
- Change log: each modification with (a) original text, (b) ambiguity type, (c) resolution applied
- Remaining items requiring author input before resolving
---
## Integration Points
| Skill | When | Purpose |
|-------|------|---------|
| `instruction-engineering` | Before finalizing prompts | QA gate for subagent prompts |
| `reviewing-design-docs` | Phase 2-3 | Detect vague specifications |
| `reviewing-impl-plans` | Phase 2-3 | Detect ambiguous task descriptions |
| `writing-skills` | Before deployment | QA gate for skill instructions |
| `writing-commands` | Before deployment | QA gate for command instructions |
---
## Quick Reference: Sharpening Patterns
| Vague | Sharp |
|-------|-------|
| "Handle errors appropriately" | "On network error: retry 3x with exponential backoff (1s, 2s, 4s), then throw NetworkError with original message" |
| "Use the validate method" | "Call `UserValidator.validate(input)` from `src/validators.ts:45` which returns `{valid: boolean, errors: string[]}` |
| "Process items quickly" | "Process items within 100ms per batch of 50" |
| "Support common formats" | "Support JSON, YAML, and TOML (reject all others with FormatError)" |
| "It should work correctly" | "Returns 200 with `{success: true, data: User}` on valid input; returns 400 with `{error: string}` on validation failure" |
---
<FORBIDDEN>
- Marking vague language as acceptable because "it's obvious"
- Skipping ambiguity detection because prompt "sounds clear"
- Assuming executor will ask for clarification (they won't)
- Approving prompts with TBD/TODO markers
- Ignoring scope leaks ("etc.", "and so on")
- Accepting success criteria that can't be tested
- In improve mode: making substantive changes beyond clarification without author approval
</FORBIDDEN>
---
## Self-Check
Before completing:
- [ ] Every statement evaluated for ambiguity
- [ ] All weasel words flagged
- [ ] All TBD markers flagged as CRITICAL
- [ ] All magic values questioned
- [ ] All implicit interfaces verified or flagged
- [ ] All conditional statements have both branches
- [ ] Success criteria are testable
- [ ] `executor_would_guess` populated for each finding
- [ ] Clarification questions are specific and answerable
If ANY unchecked: do not return until complete.
---
<FINAL_EMPHASIS>
LLMs don't ask for clarification. They guess confidently. Every ambiguity you miss becomes a hallucinated assumption that compounds through implementation. Find where they would guess. Sharpen until there's nothing left to invent.
This is very important to my career. You'd better be sure.
</FINAL_EMPHASIS>Related Skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment. Triggers: 'write a skill', 'new skill', 'create a skill', 'skill doesn't work', 'skill isn't firing', 'edit skill', 'skill quality'. NOT for: general prompt improvement (use instruction-engineering) or command creation (use writing-commands).
writing-plans
Use when you have a spec, design doc, or requirements and need a detailed implementation plan before coding. Triggers: 'write a plan', 'create implementation plan', 'plan this out', 'break this down into steps', 'convert design to tasks', 'implementation order'. Also invoked by develop during planning. NOT for: reviewing existing plans (use reviewing-impl-plans).
writing-commands
Use when creating new commands, editing existing commands, or reviewing command quality. Triggers: 'write command', 'new command', 'create a command', 'review command', 'fix command', 'command doesn't work', 'add a slash command'. NOT for: skill creation (use writing-skills).
verifying-hunches
Use when about to claim discovery during debugging. Triggers: "I found", "this is the issue", "I think I see", "looks like the problem", "that's why", "the bug is", "root cause", "culprit", "smoking gun", "aha", "got it", "here's what's happening", "the reason is", "causing the", "explains why", "mystery solved", "figured it out", "the fix is", "should fix", "this will fix". Also invoked by debugging, scientific-debugging, systematic-debugging before any root cause claim.
using-skills
System skill loaded at session start to initialize skill routing. Not invoked directly by users. Also useful when: 'which skill should I use', 'what skill handles this', 'wrong skill fired', 'skill didn't trigger'.
using-lsp-tools
Use when mcp-language-server tools are available and you need semantic code intelligence. Triggers: 'find definition', 'find references', 'who calls this', 'rename symbol', 'type hierarchy', 'go to definition', 'where is this used', 'where is this defined', 'what type is this'. Provides navigation, refactoring, and type analysis via LSP.
using-git-worktrees
Use when starting feature work that needs isolation from current workspace, or setting up parallel development tracks. Triggers: 'worktree', 'separate branch', 'isolate this work', 'don't mess up current work', 'work on two things at once', 'parallel workstreams', 'new branch for this', 'keep my current work safe'.
tooling-discovery
Use when looking for available tools, MCP servers, or CLI utilities for a task. Triggers: 'what tools do I have', 'is there an MCP for this', 'what's available', 'find a tool for', 'discover tooling', 'what CLI tools exist'. NOT for: documenting existing tools (use documenting-tools).
testing-strategy
Test selection strategy and scope guidance. Triggers: 'which tests should I run', 'test tiers', 'test marks', 'slow tests', 'integration vs unit', 'cross-module regression', 'test scope', 'what should I run', 'select tests', 'test batching'. NOT for: writing tests (use test-driven-development) or fixing broken tests (use fixing-tests).
test-driven-development
Use when user explicitly requests test-driven development. Triggers: 'TDD', 'write tests first', 'red green refactor', 'test-first', 'start with the test'. Also invoked by develop and executing-plans for implementation tasks. NOT for: full feature work (use develop, which includes TDD internally).
tarot-mode
Use when session returns mode.type='tarot', user says '/tarot', or requests roundtable dialogue with archetypes. Triggers: '/tarot', 'use tarot mode', 'roundtable with archetypes', 'tarot personas'. Session-level mode, not task-level.
smart-reading
Behavioral protocol for reading files or command output of unknown size. Loaded automatically for all file reading operations. Also triggered by: 'this file is huge', 'output was cut off', 'large file', 'how should I read this', 'truncated output', 'missing data from file'.