Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Turns marketing prompts into tested, versioned production assets: A/B prompt evaluation against structured test cases, immutable prompt version history with diffs, ready-to-use marketing prompt templates (ad copy, email campaigns, social posts, landing pages, SEO meta), and an LLM-governance playbook for marketing teams (claim discipline, disclosure rules, human-review gates). Use when a marketing team relies on AI-generated content and needs prompt quality to be measurable and safe — or when th
.claude/skills/alirezarezvani-prompt-engineer-toolkit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 482% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -49% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 58% | 0% |
Use this skill to move prompts from ad-hoc drafts to production assets with repeatable testing, versioning, and regression safety. It emphasizes measurable quality over intuition. Apply it when launching a new LLM feature that needs reliable outputs, when prompt quality degrades after model or instruction changes, when multiple team members edit prompts and need history/diffs, when you need evidence-based prompt choice for production rollout, or when you want consistent prompt governance across environments.
Prepare JSON test cases and run:
bashpython3 scripts/prompt_tester.py \ --prompt-a-file prompts/a.txt \ --prompt-b-file prompts/b.txt \ --cases-file testcases.json \ --runner-cmd 'my-llm-cli --prompt {prompt} --input {input}' \ --format text
Input can also come from stdin/--input JSON payload.
The tester scores outputs per case and aggregates:
Use the higher-scoring prompt as candidate baseline, then run regression suite.
bash# Add version python3 scripts/prompt_versioner.py add \ --name support_classifier \ --prompt-file prompts/support_v3.txt \ --author alice # Diff versions python3 scripts/prompt_versioner.py diff --name support_classifier --from-version 2 --to-version 3 # Changelog python3 scripts/prompt_versioner.py changelog --name support_classifier
python3 scripts/prompt_tester.py --help--inputpython3 scripts/prompt_versioner.py --helpadd, list, diff, changelog)Avoid these mistakes:
must_not_contain (forbidden-content) checks in evaluation criteria.Before promoting any prompt, confirm:
prompt_tester.pyEach test case should define:
input: realistic production-like inputexpected_contains: required markers/contentforbidden_contains: disallowed phrases or unsafe contentexpected_regex: required structural patternsThis enables deterministic grading across prompt variants.
support_classifier, ad_copy_shortform).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→pass | 5,134 | 23,004 | +348% | 1 | 1 | 0% | 900 | 5,239 | +482% | 0 | 0 | — |
case-01 | fail→pass | 22,302 | 5,177 | -77% | 1 | 1 | 0% | 4,698 | 2,401 | -49% | 0 | 0 | — |
case-02 | fail→fail | 4,559 | 4,987 | +9% | 1 | 1 | 0% | 403 | 1,519 | +277% | 0 | 0 | — |
case-04 | fail→pass | 21,530 | 4,647 | -78% | 1 | 1 | 0% | 1,374 | 2,154 | +57% | 0 | 0 | — |
case-05 | pass→pass | 11,177 | 6,571 | -41% | 1 | 1 | 0% | 1,872 | 2,387 | +28% | 0 | 0 | — |
case-06 | fail→fail | 10,800 | 6,202 | -43% | 1 | 1 | 0% | 1,691 | 2,215 | +31% | 0 | 0 | — |
case-07 | pass→pass | 8,860 | 9,234 | +4% | 1 | 1 | 0% | 1,618 | 2,807 | +73% | 0 | 0 | — |
case-08 | fail→pass | 12,039 | 5,209 | -57% | 1 | 1 | 0% | 2,224 | 2,120 | -5% | 0 | 0 | — |
case-09 | pass→pass | 9,204 | 3,380 | -63% | 1 | 1 | 0% | 1,581 | 1,762 | +11% | 0 | 0 | — |
case-10 | fail→pass | 8,790 | 5,887 | -33% | 1 | 1 | 0% | 1,467 | 2,315 | +58% | 0 | 0 | — |
case-11 | pass→pass | 9,970 | 8,197 | -18% | 1 | 1 | 0% | 1,776 | 2,756 | +55% | 0 | 0 | — |
case-12 | fail→pass | 9,054 | 6,993 | -23% | 1 | 1 | 0% | 1,586 | 2,459 | +55% | 0 | 0 | — |
case-13 | pass→pass | 11,508 | 4,171 | -64% | 1 | 1 | 0% | 2,069 | 1,980 | -4% | 0 | 0 | — |
case-14 | pass→pass | 12,217 | 9,211 | -25% | 1 | 1 | 0% | 2,252 | 3,002 | +33% | 0 | 0 | — |
case-15 | fail→pass | 8,930 | 2,895 | -68% | 1 | 1 | 0% | 1,767 | 1,741 | -1% | 0 | 0 | — |
case-16 | pass→pass | 10,630 | 6,438 | -39% | 1 | 1 | 0% | 2,224 | 2,393 | +8% | 0 | 0 | — |
case-17 | fail→pass | 7,296 | 3,141 | -57% | 1 | 1 | 0% | 1,333 | 1,757 | +32% | 0 | 0 | — |
case-18 | fail→pass | 14,221 | 4,854 | -66% | 1 | 1 | 0% | 2,348 | 2,146 | -9% | 0 | 0 | — |
case-19 | fail→pass | 8,261 | 2,186 | -74% | 1 | 1 | 0% | 1,441 | 1,550 | +8% | 0 | 0 | — |
case-20 | pass→pass | 13,904 | 12,361 | -11% | 1 | 1 | 0% | 2,767 | 3,622 | +31% | 0 | 0 | — |
case-21 | pass→pass | 13,372 | 11,751 | -12% | 1 | 1 | 0% | 2,484 | 3,087 | +24% | 0 | 0 | — |
case-22 | pass→pass | 6,709 | 6,108 | -9% | 1 | 1 | 0% | 1,538 | 2,605 | +69% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.