Skip to main content

few-shot-quality-prompting

Master guide for crafting prompts that make AI models produce professional-quality code and UI consistently. Trigger whenever the user asks about prompt engineering, improving AI output quality, building system prompts, few-shot examples, making AI write better code, prompt optimization, or says "how to prompt", "better results", "improve output", "stop getting slop". Covers system prompt architecture, few-shot patterns, negative examples, chain-of-thought, output formatting, and evaluation-driven iteration.

インストールへ移動

ソース情報

リポジトリ
mahmoud20138/Tradecraft
ソースの最終更新活動
2026年4月23日 08:40
検出された SKILL.md の言語
英語
スター
15
フォーク
4

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
few-shot-quality-prompting
description
Master guide for crafting prompts that make AI models produce professional-quality code and UI consistently. Trigger whenever the user asks about prompt engineering, improving AI output quality, building system prompts, few-shot examples, making AI write better code, prompt optimization, or says "how to prompt", "better results", "improve output", "stop getting slop". Covers system prompt architecture, few-shot patterns, negative examples, chain-of-thought, output formatting, and evaluation-driven iteration.
kind
reference
category
ai/prompting
status
active
tags
["few","prompting","quality","shot"]
related_skills
["writing-hookify-rules"]
# Few-Shot Quality Prompting Skill — Engineering AI Output Excellence ## Identity You are a prompt engineering specialist who knows that the difference between mediocre and exceptional AI output is 90% prompt design and 10% model capability. You design prompts as carefully as you design code — with structure, testing, and iteration. --- ## CORE INSIGHT > **The model is a mirror. It reflects the quality level you demonstrate in your prompt.** > > Show it amateur code → get amateur code. > Show it senior-engineer code → get senior-engineer code. > Show it nothing → get generic defaults. --- ## SYSTEM PROMPT ARCHITECTURE ### The 7-Layer System Prompt ``` ┌─────────────────────────────────────┐ │ LAYER 1: IDENTITY │ Who is the AI? (role, expertise level) ├─────────────────────────────────────┤ │ LAYER 2: CONTEXT │ What's the project? (stack, constraints) ├─────────────────────────────────────┤ │ LAYER 3: SKILLS │ Domain knowledge (loaded dynamically) ├─────────────────────────────────────┤ │ LAYER 4: GOLDEN EXAMPLES │ 2-3 examples of perfect output ├─────────────────────────────────────┤ │ LAYER 5: ANTI-PATTERNS │ Explicit "NEVER do this" list ├─────────────────────────────────────┤ │ LAYER 6: OUTPUT FORMAT │ Exact structure of response ├─────────────────────────────────────┤ │ LAYER 7: QUALITY GATES │ Self-check before responding └─────────────────────────────────────┘ ``` ### Layer-by-Layer Construction #### Layer 1: Identity ``` WEAK: "You are a helpful coding assistant." STRONG: "You are a senior frontend engineer at a design-focused studio with 10 years of experience shipping production React applications. You have strong opinions about clean architecture and refuse to write code you wouldn't approve in a code review." ``` The identity sets the quality floor. "Senior engineer at Stripe" produces better code than "helpful assistant" because the model activates different knowledge distributions. #### Layer 2: Context ``` WEAK: "Help me with my React app." STRONG: "Project: SaaS dashboard for analytics. Stack: React 18 + TypeScript + Tailwind + shadcn/ui Architecture: Feature-based modules, custom hooks for state Target: Production deployment, needs responsive + accessible Existing code style: [paste 20-line example from codebase]" ``` #### Layer 3: Skills (Dynamic) ``` Load the relevant skill markdown based on task type. Keep total skill injection under 5K tokens. If multiple skills needed, extract only the relevant sections. ``` #### Layer 4: Golden Examples (THE MOST IMPORTANT LAYER) ``` PATTERN: Show 2-3 complete input→output examples at the quality level you expect. Example for a React component task: ---BEGIN EXAMPLE--- USER: Create a stat card showing monthly revenue with trend indicator. ASSISTANT: ```tsx import { TrendingUp, TrendingDown } from 'lucide-react'; interface StatCardProps { label: string; value: string; trend: number; period?: string; } export default function StatCard({ label, value, trend, period = 'vs last month' }: StatCardProps) { const isPositive = trend >= 0; return ( <div className="group relative rounded-xl border border-zinc-200 bg-white p-6 transition-all duration-200 hover:shadow-md hover:border-zinc-300"> <p className="text-sm font-medium text-zinc-500 tracking-wide"> {label} </p> <p className="mt-2 text-3xl font-semibold text-zinc-900 tabular-nums"> {value} </p> <div className="mt-3 flex items-center gap-1.5"> {isPositive ? ( <TrendingUp className="h-4 w-4 text-emerald-500" /> ) : ( <TrendingDown className="h-4 w-4 text-red-500" /> )} <span className={`text-sm font-medium ${ isPositive ? 'text-emerald-600' : 'text-red-600' }`}> {isPositive ? '+' : ''}{trend}% </span> <span className="text-sm text-zinc-400">{period}</span> </div> </div> ); } ` ` ` ---END EXAMPLE--- WHY THIS WORKS: - Shows exact import style - Shows TypeScript interface pattern - Shows Tailwind class organization (responsive, spacing, color) - Shows hover state handling - Shows proper default props - Sets the quality bar: real data, polished transitions, proper types ``` #### Layer 5: Anti-Patterns ``` ## FORBIDDEN — Never Do These - Do NOT use `any` type in TypeScript - Do NOT use inline styles when Tailwind classes exist - Do NOT hardcode colors (use design tokens / Tailwind palette) - Do NOT use placeholder text like "Lorem ipsum" or "Item 1" - Do NOT omit hover/focus/active states on interactive elements - Do NOT skip error handling - Do NOT use console.log in production code - Do NOT create functions longer than 25 lines - Do NOT use generic variable names (data, item, thing, obj) - Do NOT import from relative paths deeper than 2 levels (../../..) ``` #### Layer 6: Output Format ``` OPTION A — Code Only: "Respond with ONLY the complete code file. No explanations, no markdown wrapping, no commentary before or after." OPTION B — Structured Response: "Respond in this exact format: ## Approach (2-3 sentences) ## Code ```language [complete file] ``` ## Key Decisions (bullet list, max 4 items)" OPTION C — JSON Structured: "Respond with ONLY a JSON object: { 'files': [{'path': '...', 'content': '...'}], 'commands': ['npm install ...'], 'notes': '...' }" ``` #### Layer 7: Quality Gates ``` ## Self-Check Before Responding Before outputting your response, verify: □ All imports are present and correct □ No TypeScript `any` types □ All interactive elements have hover + focus states □ Error states handled (loading, error, empty) □ Responsive on mobile (min 375px) □ Color contrast meets WCAG AA (4.5:1) □ Code runs as-is without modification □ No TODO or placeholder comments If any check fails, fix it before responding. ``` --- ## FEW-SHOT PATTERNS ### Pattern 1: Input-Output Pairs (Most Effective) ``` Show 2-3 complete examples of: Input: [user request] Output: [perfect response] The model pattern-matches against your examples. More examples = more consistent output. 2 examples is the sweet spot (enough to show pattern, not too much context). ``` ### Pattern 2: Good vs Bad Comparison ``` GOOD EXAMPLE: ```tsx <button className="inline-flex items-center gap-2 rounded-lg bg-indigo-600 px-4 py-2.5 text-sm font-medium text-white transition-colors hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed" disabled={isLoading} > {isLoading ? <Spinner className="h-4 w-4 animate-spin" /> : <Plus className="h-4 w-4" />} {isLoading ? 'Creating...' : 'Create Project'} </button> ` ` ` BAD EXAMPLE (Do NOT produce this): ```tsx <button style={{background: 'blue', color: 'white'}} onClick={handleClick}> Submit </button> ` ` ` The bad example explicitly shows what to avoid. Models learn from negative examples. ``` ### Pattern 3: Progressive Complexity ``` Example 1: Simple (establishes baseline quality) Example 2: Medium (shows how to handle edge cases) Example 3: Complex (shows the ceiling) Each example builds on the previous, showing how quality scales with complexity. ``` ### Pattern 4: Domain-Specific Templates ``` For each type of output (component, API endpoint, test file, etc.), provide a template that shows the expected structure: REACT COMPONENT TEMPLATE: 1. Imports (external, then internal, then types) 2. Interface/Types 3. Sub-components (if small enough to colocate) 4. Main component with default export 5. Hooks at top, handlers in middle, render at bottom This template acts as a structural few-shot — even without full examples. ``` --- ## PROMPT OPTIMIZATION TECHNIQUES ### Technique 1: Prompt Refinement Loop ``` Step 1: Write initial prompt Step 2: Generate 5 outputs Step 3: Score each (1-10) on: correctness, style, completeness Step 4: Identify failure patterns Step 5: Add specific rules/examples to fix failures Step 6: Repeat until average score > 8 TRACK: Prompt version | Avg score | Worst failure | Fix applied v1 | 5.2 | Missing types | Added TypeScript rule v2 | 6.8 | No hover states| Added CSS interaction example v3 | 8.1 | Inconsistent | Added 2nd few-shot example v4 | 8.7 | Edge cases | Added anti-pattern list ``` ### Technique 2: Temperature & Sampling Control ``` CODE GENERATION: temperature=0.0 to 0.3 (deterministic, correct) CREATIVE UI DESIGN: temperature=0.5 to 0.7 (some variation, still coherent) BRAINSTORMING: temperature=0.8 to 1.0 (diverse ideas) NAMING/COPY: temperature=0.4 to 0.6 For agents: Use temperature=0 for tool calls, 0.3 for code, 0.5 for explanations ``` ### Technique 3: Structured Output Enforcement ```python # Force JSON output with schema validation system = """Respond ONLY with valid JSON matching this schema. No markdown, no backticks, no explanation. Schema: { "component_name": "string", "imports": ["string"], "props": [{"name": "string", "type": "string", "required": "boolean"}], "code": "string" }""" # Parse response import json response_text = response.content[0].text # Strip any accidental markdown fencing clean = response_text.strip().removeprefix("```json").removesuffix("```").strip() data = json.loads(clean) ``` ### Technique 4: Chain-of-Thought for Complex Tasks ``` "Before writing code, think through: 1. What are the inputs and outputs? 2. What edge cases exist? 3. What's the simplest correct implementation? 4. What could go wrong? Write your thinking in a <planning> block, then provide the code." This produces measurably better code for complex tasks (20%+ improvement on benchmarks). ``` ### Technique 5: Role-Specific Personas ``` DIFFERENT ROLES ACTIVATE DIFFERENT KNOWLEDGE: "You are a security engineer" → Finds injection vulnerabilities, checks auth "You are a performance engineer" → Spots N+1 queries, unnecessary re-renders "You are a UX designer who codes" → Better component APIs, accessibility, states "You are a senior at [specific company]" → Mimics that company's coding patterns USE: Rotate personas for different review passes on the same code. ``` --- ## EVALUATION FRAMEWORK ### Scoring Rubric for Code Output ``` CORRECTNESS (0-3): 0: Doesn't run 1: Runs but has bugs 2: Works for happy path 3: Handles edge cases correctly COMPLETENESS (0-3): 0: Missing major features 1: Core feature works, missing states (loading/error/empty) 2: All states handled, missing polish 3: Complete with all states, transitions, responsive STYLE (0-2): 0: Inconsistent, messy 1: Consistent but generic 2: Clean, idiomatic, follows design system UI QUALITY (0-2): 0: Unstyled or broken layout 1: Functional but generic 2: Polished, professional, memorable TOTAL: /10 — Target ≥ 8 for production use ``` ### A/B Testing Prompts ```python def evaluate_prompt(prompt_version: str, test_cases: list[str], n_trials: int = 5) -> dict: """Run test cases against a prompt and score results.""" scores = [] for test in test_cases: for _ in range(n_trials): output = call_llm(system=prompt_version, user=test) score = score_output(output) # Your scoring function scores.append(score) return { "mean": sum(scores) / len(scores), "min": min(scores), "max": max(scores), "std": (sum((s - sum(scores)/len(scores))**2 for s in scores) / len(scores)) ** 0.5, "pass_rate": sum(1 for s in scores if s >= 8) / len(scores) } ``` --- ## COMPLETE SYSTEM PROMPT TEMPLATE ``` You are a [ROLE] with expertise in [DOMAINS]. ## Project Context - Stack: [TECHNOLOGIES] - Architecture: [PATTERNS] - Style: [CONVENTIONS] ## Active Skills [DYNAMICALLY LOADED SKILL CONTENT] ## Golden Examples ### Example 1 USER: [simple request] RESPONSE: [complete, high-quality output] ### Example 2 USER: [complex request] RESPONSE: [complete, high-quality output showing how to handle complexity] ## Anti-Patterns — NEVER Do These - [specific bad pattern 1] - [specific bad pattern 2] - [specific bad pattern 3] ## Output Format [exact structure expected] ## Quality Checklist (Verify Before Responding) □ [check 1] □ [check 2] □ [check 3] □ [check 4] If any check fails, fix it before outputting your response. ``` --- ## KEY METRICS TO TRACK ``` 1. FIRST-TRY SUCCESS RATE: % of outputs that need zero fixes Target: > 70% for well-prompted agents 2. AVERAGE ITERATIONS TO SUCCESS: How many generate→fix cycles Target: < 3 for most tasks 3. QUALITY SCORE: Average score on your rubric Target: > 8/10 consistently 4. CONTEXT EFFICIENCY: Useful output tokens / total tokens consumed Target: > 30% (rest is reasoning and tool calls) 5. COST PER TASK: Total API cost for a completed task Track this to optimize prompt length and model selection ```
GitHubで見る