Prompt contract
The prompt that eunha sends to the LLM is intentionally immutable. Consistent output shape is a core product feature — every description has the same fields, enabling reliable search, filtering, and display.
The prompt
Section titled “The prompt”Given this GitHub repo:- Name: {full_name}- GitHub description: {description}- Language: {language}- Topics: {topics}- README excerpt: {readme_first_500_chars}
Respond ONLY with valid JSON:{ "what": "...", // max 80 chars — what the project IS "why": "...", // max 80 chars — what problem it solves "use_case": "...", // max 80 chars — a concrete scenario for using it "category": "CLI Tool | Library | Framework | Service | Learning Resource | Template | Other", "tags": ["tag1"] // 2–4 items, each max 20 chars}If the README is unavailable, the placeholder [not available] is used.
Output fields
Section titled “Output fields”| Field | Max length | Purpose |
|---|---|---|
what | 80 chars | Primary row label in the library list |
why | 80 chars | Shown in the detail panel |
use_case | 80 chars | Shown in the detail panel |
category | fixed enum | Used for sidebar filter |
tags | 2–4 items × 20 chars | Used for filter chips and search index |
Versioning
Section titled “Versioning”The prompt is tracked with CURRENT_PROMPT_VERSION in the source code. Each described repo stores the prompt_version at the time of description.
If the prompt ever changes (bumping the version), repos described with an older version are considered stale and will be re-described during the next shift-A batch run.
Do not edit the prompt fields or their names without bumping the version and handling the migration — existing data will break display and search.