Skip to content

Prompt Packs

Prompt packs are versioned, community-extensible benchmark collections. Each pack contains a set of prompts targeting a specific technology or workflow.

pack.json
name: react-native
version: 1.0.0
category: coding
description: React Native debugging and refactoring challenges
prompts:
- prompts/debug-navigation.md
- prompts/refactor-component.md
- prompts/state-management.md
FieldRequiredDescription
nameYesUnique pack identifier (kebab-case)
versionYesSemver (e.g., 1.0.0)
categoryYescoding, reasoning, math, instruction, debugging, agentic
descriptionNoOne-line summary
promptsYesArray of relative paths to prompt files

{
"id": "debug-navigation-1",
"prompt": "Fix the navigation bug in this React Native app:...",
"category": "debugging",
"expected_keywords": ["useNavigation", "reset"],
"constraints": {
"json_only": false,
"no_markdown": false,
"max_length": 2000
},
"expected_answer": null,
"difficulty": "medium"
}
FieldDescription
idUnique identifier within the pack
promptThe full prompt text (may include markdown, code blocks)
categorycode, frontend, reasoning, math, instruction
expected_keywordsKey concepts the response should include
constraintsjson_only, no_markdown, max_length, bullet_count
expected_answerFor math prompts: the numerical answer (±tolerance)
difficultyeasy, medium, hard

Model Lens ships with 4 prompt packs:

PackCategoryPrompt countFocus
ReactCoding4Hooks, state, components, animations
NestJSCoding4DI, services, gateways, auth
DebuggingDebugging5Type errors, race conditions, DI bugs, Prisma, stale closures
NestJS AgenticAgentic5Kafka, pipes, Prisma, cache, auth (tool-use format)

Model Lens can generate prompt variants automatically to reduce overfitting:

from prompt_generator import PromptGenerator
pg = PromptGenerator()
prompts = pg.generate_default_batch(
total_prompts=20,
categories=["code", "frontend", "reasoning", "math", "instruction"],
)
for p in prompts:
print(f"[{p.category.value}] {p.prompt[:80]}...")
  • Paraphrasing — Reword while preserving intent
  • Variable substitution — Replace function names, types, identifiers
  • Contextual mutation — Change context (e.g., swap React for Vue)
  • Word-boundary protection — Uses re.sub() with \b to prevent framework token corruption
  1. Create a directory in packages/prompt_packs/
  2. Add pack.json with metadata
  3. Create prompts/ subdirectory with JSON prompt files
  4. Reference in benchmark config: "prompt_sets": ["my-custom-pack"]
  • Prompts should reflect real developer workflows — not synthetic puzzles
  • Include expected_keywords for automated scoring
  • Add constraints for instruction-following evaluation
  • Keep packs focused on a single technology or problem domain