Prompt Library Curator
This skill organises a personal collection of saved prompts into a structured, navigable markdown catalog. It assigns categories, tags, summaries, and complexity ratings to each prompt, detects duplicates, and outputs a clean prompt-library.md file ready for reuse and sharing.
Input:
- Raw prompts as pasted text, an inline list, or a
.md/.txt file
Output:
prompt-library.md — structured catalog with index table, categorised prompts, and flagged duplicates
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian, use Russian category names in output, and generate the entire catalog in Russian
- If English (or other Latin-script language): respond in English, use English category names, and generate the entire catalog in English
- If ambiguous: respond in the language of the trigger phrase used and generate catalog in that language
Instructions
Step 1: Accept and Validate Input
Determine input source:
- Pasted text block in chat
- Uploaded or referenced
.md / .txt file
- Inline numbered or bulleted list
Validate input is non-empty
- If empty: stop and respond — "No prompts found. Paste your prompts directly or attach a .md/.txt file."
Check for unsupported file formats (.docx, .xlsx, .pdf, etc.)
- If detected: stop and respond — "Unsupported format. Please paste your prompts as plain text or upload a .md or .txt file."
Check if input looks like a conversation log rather than a prompt collection
- Heuristic: high ratio of questions and conversational turns with no clear prompt-style structure
- If detected: respond — "This looks like a chat log, not a prompt collection. Paste the prompt texts you want to organise, or specify which lines are prompts."
Step 2: Split into Individual Prompts
Attempt to split the raw input into individual prompts using these separator heuristics (in priority order):
- Horizontal rules (
---)
- Numbered list items (
1., 2., etc.)
- Blank-line-separated paragraphs
- Double newlines
If no separators are detected and input is a wall of text:
- Split conservatively at double newlines
- Add a note at the top of the output: "⚠ Separation uncertain — review split points"
Count the total number of prompts identified; store as N.
If N = 1:
- Proceed with a single-entry catalog
- Add note at the bottom: "Add more prompts to build a full library"
- Skip the index table (single entry doesn't warrant it)
Step 3: Analyse Each Prompt
For each prompt, determine:
Category — assign one from this set (or create a new label if none fits):
- Writing, Research, Coding, Analysis, Meeting, Planning, Personal, Learning, Marketing, Other
Tags — assign 2–4 short keyword tags (e.g., email, summary, b2b, template)
One-line summary — ≤10 words describing what the prompt does (e.g., "Summarise a long PDF report")
Complexity — one of: Simple / Moderate / Advanced
- Simple: short, single-step prompt
- Moderate: multi-step or context-dependent prompt
- Advanced: complex chain-of-thought, multi-role, or system-prompt level
Template flag — if prompt contains placeholder variables ({{topic}}, [PERSON], <context>, etc.):
- Preserve variables verbatim in the prompt text
- Add
template to the prompt's tag list
Step 4: Detect Duplicates
Compare prompts for near-identical intent or wording (semantic similarity heuristic):
- Exact duplicates: identical text after whitespace normalisation
- Near-duplicates: same core instruction with minor wording differences
For each duplicate pair:
- Keep both in their respective category sections
- List them in the Duplicates section with a note
- Do not delete either prompt automatically
Step 5: Build Index Table
Sort all prompts by: Category (A→Z) → Complexity (Simple → Advanced)
Create an index table with columns: #, Category, Summary, Tags, Complexity
If N > 20: add a Quick Find section above the index with anchor links to each category heading
Step 6: Assemble Output Catalog
Build prompt-library.md using the Output Format structure:
Header block (title, date, stats: total prompts, categories, duplicates flagged)
Quick Find section (if N > 20)
Index table
Horizontal rule separator
One ## Category section per category, sorted A→Z
- Under each: named prompt heading, frontmatter line (tags + complexity), original prompt text in a code block
Duplicates section (always present; states "No duplicates detected." if none found)
If user has file system access (Cowork mode): save as prompt-library.md in workspace folder and confirm path
If no file system access: display full output inline in chat
Step 7: Handle Partially Organised Input
If the user's input already contains their own headings, categories, or tags:
- Preserve existing structure and user-defined category names
- Enhance only missing metadata (add tags/complexity where absent)
- Do not overwrite or rename user-defined categories
Output Format
prompt-library.md structured as follows:
# Prompt Library
**Last updated:** YYYY-MM-DD
**Total prompts:** N | **Categories:** X | **Duplicates flagged:** Y
---
## Quick Find
[Writing](#writing) · [Research](#research) · [Coding](#coding) · ...
*(Present only if N > 20)*
---
## Index
| # | Category | Summary | Tags | Complexity |
|---|----------|---------|------|------------|
| 1 | Writing | Draft a cold email | email, outreach, b2b | Simple |
| 2 | Research | Summarise a PDF report | pdf, summary, analysis | Moderate |
---
## Writing
### Draft a cold email
`tags: email, outreach, b2b | complexity: Simple`
Write a cold email to [PROSPECT] introducing [PRODUCT].
Focus on the pain point of [PROBLEM] and propose a 15-min call.
---
## Research
...
---
## Duplicates
> Prompts flagged as near-duplicates. Review and keep one.
- "Summarise this document" ≈ "Give me a summary of this file" (similarity: high)
*(If none: "No duplicates detected.")*
Field rules:
- Each prompt's original text is preserved verbatim inside a code block — no edits
- Tags and complexity are on a single inline frontmatter line between the heading and the code block
- Template variables (
{{}}, [], <>) are kept as-is and the prompt is tagged template
- The Duplicates section is always present in the output
Negative Cases
- Empty input: Respond — "No prompts found. Paste your prompts directly or attach a .md/.txt file." Do not generate output.
- Unsupported file format (.docx, .xlsx, .pdf): Respond — "Unsupported format. Please paste your prompts as plain text or upload a .md or .txt file." Do not generate output.
- Input is a conversation log: Respond — "This looks like a chat log, not a prompt collection. Paste the prompt texts you want to organise, or specify which lines are prompts."
1---2name: prompt-library-curator3description: Organize and tag your personal prompt collection into a structured markdown catalog with an index table. Use when you have accumulated saved prompts and want to structure, deduplicate, and label them for reuse. Triggers: 'organize my prompts', 'prompt library', 'tag my prompts', 'structure my prompt collection', 'организуй мои промпты', 'библиотека промптов', 'структурируй промпты'.4---56# Prompt Library Curator78This skill organises a personal collection of saved prompts into a structured, navigable markdown catalog. It assigns categories, tags, summaries, and complexity ratings to each prompt, detects duplicates, and outputs a clean `prompt-library.md` file ready for reuse and sharing.910**Input:**11- Raw prompts as pasted text, an inline list, or a `.md`/`.txt` file1213**Output:**14- `prompt-library.md` — structured catalog with index table, categorised prompts, and flagged duplicates1516---1718## Language Detection1920Detect the user's language from their message:21- If Russian (or contains Cyrillic): respond in Russian, use Russian category names in output, and generate the entire catalog in Russian22- If English (or other Latin-script language): respond in English, use English category names, and generate the entire catalog in English23- If ambiguous: respond in the language of the trigger phrase used and generate catalog in that language2425---2627## Instructions2829### Step 1: Accept and Validate Input30311. Determine input source:32 - Pasted text block in chat33 - Uploaded or referenced `.md` / `.txt` file34 - Inline numbered or bulleted list35362. Validate input is non-empty37 - If empty: stop and respond — "No prompts found. Paste your prompts directly or attach a .md/.txt file."38393. Check for unsupported file formats (`.docx`, `.xlsx`, `.pdf`, etc.)40 - If detected: stop and respond — "Unsupported format. Please paste your prompts as plain text or upload a .md or .txt file."41424. Check if input looks like a conversation log rather than a prompt collection43 - Heuristic: high ratio of questions and conversational turns with no clear prompt-style structure44 - If detected: respond — "This looks like a chat log, not a prompt collection. Paste the prompt texts you want to organise, or specify which lines are prompts."4546---4748### Step 2: Split into Individual Prompts49501. Attempt to split the raw input into individual prompts using these separator heuristics (in priority order):51 - Horizontal rules (`---`)52 - Numbered list items (`1.`, `2.`, etc.)53 - Blank-line-separated paragraphs54 - Double newlines55562. If no separators are detected and input is a wall of text:57 - Split conservatively at double newlines58 - Add a note at the top of the output: "⚠ Separation uncertain — review split points"59603. Count the total number of prompts identified; store as `N`.61624. If `N = 1`:63 - Proceed with a single-entry catalog64 - Add note at the bottom: "Add more prompts to build a full library"65 - Skip the index table (single entry doesn't warrant it)6667---6869### Step 3: Analyse Each Prompt7071For each prompt, determine:72731. **Category** — assign one from this set (or create a new label if none fits):74 - Writing, Research, Coding, Analysis, Meeting, Planning, Personal, Learning, Marketing, Other75762. **Tags** — assign 2–4 short keyword tags (e.g., `email`, `summary`, `b2b`, `template`)77783. **One-line summary** — ≤10 words describing what the prompt does (e.g., "Summarise a long PDF report")79804. **Complexity** — one of: `Simple` / `Moderate` / `Advanced`81 - Simple: short, single-step prompt82 - Moderate: multi-step or context-dependent prompt83 - Advanced: complex chain-of-thought, multi-role, or system-prompt level84855. **Template flag** — if prompt contains placeholder variables (`{{topic}}`, `[PERSON]`, `<context>`, etc.):86 - Preserve variables verbatim in the prompt text87 - Add `template` to the prompt's tag list8889---9091### Step 4: Detect Duplicates92931. Compare prompts for near-identical intent or wording (semantic similarity heuristic):94 - Exact duplicates: identical text after whitespace normalisation95 - Near-duplicates: same core instruction with minor wording differences96972. For each duplicate pair:98 - Keep both in their respective category sections99 - List them in the **Duplicates** section with a note100 - Do not delete either prompt automatically101102---103104### Step 5: Build Index Table1051061. Sort all prompts by: Category (A→Z) → Complexity (Simple → Advanced)1071082. Create an index table with columns: `#`, `Category`, `Summary`, `Tags`, `Complexity`1091103. If `N > 20`: add a **Quick Find** section above the index with anchor links to each category heading111112---113114### Step 6: Assemble Output Catalog115116Build `prompt-library.md` using the Output Format structure:1171181. Header block (title, date, stats: total prompts, categories, duplicates flagged)1192. Quick Find section (if N > 20)1203. Index table1214. Horizontal rule separator1225. One `## Category` section per category, sorted A→Z123 - Under each: named prompt heading, frontmatter line (tags + complexity), original prompt text in a code block1246. Duplicates section (always present; states "No duplicates detected." if none found)1251267. If user has file system access (Cowork mode): save as `prompt-library.md` in workspace folder and confirm path1278. If no file system access: display full output inline in chat128129---130131### Step 7: Handle Partially Organised Input132133If the user's input already contains their own headings, categories, or tags:134- Preserve existing structure and user-defined category names135- Enhance only missing metadata (add tags/complexity where absent)136- Do not overwrite or rename user-defined categories137138---139140## Output Format141142`prompt-library.md` structured as follows:143144```markdown145# Prompt Library146**Last updated:** YYYY-MM-DD147**Total prompts:** N | **Categories:** X | **Duplicates flagged:** Y148149---150151## Quick Find152[Writing](#writing) · [Research](#research) · [Coding](#coding) · ...153*(Present only if N > 20)*154155---156157## Index158159| # | Category | Summary | Tags | Complexity |160|---|----------|---------|------|------------|161| 1 | Writing | Draft a cold email | email, outreach, b2b | Simple |162| 2 | Research | Summarise a PDF report | pdf, summary, analysis | Moderate |163164---165166## Writing167168### Draft a cold email169`tags: email, outreach, b2b | complexity: Simple`170171```172Write a cold email to [PROSPECT] introducing [PRODUCT].173Focus on the pain point of [PROBLEM] and propose a 15-min call.174```175176---177178## Research179180...181182---183184## Duplicates185> Prompts flagged as near-duplicates. Review and keep one.186187- "Summarise this document" ≈ "Give me a summary of this file" (similarity: high)188189*(If none: "No duplicates detected.")*190```191192**Field rules:**193- Each prompt's original text is preserved verbatim inside a code block — no edits194- Tags and complexity are on a single inline frontmatter line between the heading and the code block195- Template variables (`{{}}`, `[]`, `<>`) are kept as-is and the prompt is tagged `template`196- The Duplicates section is always present in the output197198---199200## Negative Cases201202- **Empty input:** Respond — "No prompts found. Paste your prompts directly or attach a .md/.txt file." Do not generate output.203- **Unsupported file format (.docx, .xlsx, .pdf):** Respond — "Unsupported format. Please paste your prompts as plain text or upload a .md or .txt file." Do not generate output.204- **Input is a conversation log:** Respond — "This looks like a chat log, not a prompt collection. Paste the prompt texts you want to organise, or specify which lines are prompts."