{"id":"d157f4a0-42d1-43e7-9608-021a4f25ab4d","shortId":"3sTKHN","kind":"skill","title":"prompt-library-curator","tagline":"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', ","description":"# Prompt Library Curator\n\nThis 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.\n\n**Input:**\n- Raw prompts as pasted text, an inline list, or a `.md`/`.txt` file\n\n**Output:**\n- `prompt-library.md` — structured catalog with index table, categorised prompts, and flagged duplicates\n\n---\n\n## Language Detection\n\nDetect the user's language from their message:\n- If Russian (or contains Cyrillic): respond in Russian, use Russian category names in output, and generate the entire catalog in Russian\n- If English (or other Latin-script language): respond in English, use English category names, and generate the entire catalog in English\n- If ambiguous: respond in the language of the trigger phrase used and generate catalog in that language\n\n---\n\n## Instructions\n\n### Step 1: Accept and Validate Input\n\n1. Determine input source:\n   - Pasted text block in chat\n   - Uploaded or referenced `.md` / `.txt` file\n   - Inline numbered or bulleted list\n\n2. Validate input is non-empty\n   - If empty: stop and respond — \"No prompts found. Paste your prompts directly or attach a .md/.txt file.\"\n\n3. Check for unsupported file formats (`.docx`, `.xlsx`, `.pdf`, etc.)\n   - If detected: stop and respond — \"Unsupported format. Please paste your prompts as plain text or upload a .md or .txt file.\"\n\n4. Check if input looks like a conversation log rather than a prompt collection\n   - Heuristic: high ratio of questions and conversational turns with no clear prompt-style structure\n   - 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.\"\n\n---\n\n### Step 2: Split into Individual Prompts\n\n1. Attempt to split the raw input into individual prompts using these separator heuristics (in priority order):\n   - Horizontal rules (`---`)\n   - Numbered list items (`1.`, `2.`, etc.)\n   - Blank-line-separated paragraphs\n   - Double newlines\n\n2. If no separators are detected and input is a wall of text:\n   - Split conservatively at double newlines\n   - Add a note at the top of the output: \"⚠ Separation uncertain — review split points\"\n\n3. Count the total number of prompts identified; store as `N`.\n\n4. If `N = 1`:\n   - Proceed with a single-entry catalog\n   - Add note at the bottom: \"Add more prompts to build a full library\"\n   - Skip the index table (single entry doesn't warrant it)\n\n---\n\n### Step 3: Analyse Each Prompt\n\nFor each prompt, determine:\n\n1. **Category** — assign one from this set (or create a new label if none fits):\n   - Writing, Research, Coding, Analysis, Meeting, Planning, Personal, Learning, Marketing, Other\n\n2. **Tags** — assign 2–4 short keyword tags (e.g., `email`, `summary`, `b2b`, `template`)\n\n3. **One-line summary** — ≤10 words describing what the prompt does (e.g., \"Summarise a long PDF report\")\n\n4. **Complexity** — one of: `Simple` / `Moderate` / `Advanced`\n   - Simple: short, single-step prompt\n   - Moderate: multi-step or context-dependent prompt\n   - Advanced: complex chain-of-thought, multi-role, or system-prompt level\n\n5. **Template flag** — if prompt contains placeholder variables (`{{topic}}`, `[PERSON]`, `<context>`, etc.):\n   - Preserve variables verbatim in the prompt text\n   - Add `template` to the prompt's tag list\n\n---\n\n### Step 4: Detect Duplicates\n\n1. Compare prompts for near-identical intent or wording (semantic similarity heuristic):\n   - Exact duplicates: identical text after whitespace normalisation\n   - Near-duplicates: same core instruction with minor wording differences\n\n2. For each duplicate pair:\n   - Keep both in their respective category sections\n   - List them in the **Duplicates** section with a note\n   - Do not delete either prompt automatically\n\n---\n\n### Step 5: Build Index Table\n\n1. Sort all prompts by: Category (A→Z) → Complexity (Simple → Advanced)\n\n2. Create an index table with columns: `#`, `Category`, `Summary`, `Tags`, `Complexity`\n\n3. If `N > 20`: add a **Quick Find** section above the index with anchor links to each category heading\n\n---\n\n### Step 6: Assemble Output Catalog\n\nBuild `prompt-library.md` using the Output Format structure:\n\n1. Header block (title, date, stats: total prompts, categories, duplicates flagged)\n2. Quick Find section (if N > 20)\n3. Index table\n4. Horizontal rule separator\n5. One `## Category` section per category, sorted A→Z\n   - Under each: named prompt heading, frontmatter line (tags + complexity), original prompt text in a code block\n6. Duplicates section (always present; states \"No duplicates detected.\" if none found)\n\n7. If user has file system access (Cowork mode): save as `prompt-library.md` in workspace folder and confirm path\n8. If no file system access: display full output inline in chat\n\n---\n\n### Step 7: Handle Partially Organised Input\n\nIf the user's input already contains their own headings, categories, or tags:\n- Preserve existing structure and user-defined category names\n- Enhance only missing metadata (add tags/complexity where absent)\n- Do not overwrite or rename user-defined categories\n\n---\n\n## Output Format\n\n`prompt-library.md` structured as follows:\n\n```markdown\n# Prompt Library\n**Last updated:** YYYY-MM-DD\n**Total prompts:** N  |  **Categories:** X  |  **Duplicates flagged:** Y\n\n---\n\n## Quick Find\n[Writing](#writing) · [Research](#research) · [Coding](#coding) · ...\n*(Present only if N > 20)*\n\n---\n\n## Index\n\n| # | Category | Summary | Tags | Complexity |\n|---|----------|---------|------|------------|\n| 1 | Writing | Draft a cold email | email, outreach, b2b | Simple |\n| 2 | Research | Summarise a PDF report | pdf, summary, analysis | Moderate |\n\n---\n\n## Writing\n\n### Draft a cold email\n`tags: email, outreach, b2b | complexity: Simple`\n\n```\nWrite a cold email to [PROSPECT] introducing [PRODUCT].\nFocus on the pain point of [PROBLEM] and propose a 15-min call.\n```\n\n---\n\n## Research\n\n...\n\n---\n\n## Duplicates\n> Prompts flagged as near-duplicates. Review and keep one.\n\n- \"Summarise this document\" ≈ \"Give me a summary of this file\" (similarity: high)\n\n*(If none: \"No duplicates detected.\")*\n```\n\n**Field rules:**\n- Each prompt's original text is preserved verbatim inside a code block — no edits\n- Tags and complexity are on a single inline frontmatter line between the heading and the code block\n- Template variables (`{{}}`, `[]`, `<>`) are kept as-is and the prompt is tagged `template`\n- The Duplicates section is always present in the output\n\n---\n\n## Negative Cases\n\n- **Empty input:** Respond — \"No prompts found. Paste your prompts directly or attach a .md/.txt file.\" Do not generate output.\n- **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.\n- **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.\"","tags":["prompt","library","curator","claude","skills","kit","kirkruglov","agent-skills","agentic-skills","ai-agents","ai-skills","awesome-list"],"capabilities":["skill","source-kirkruglov","skill-prompt-library-curator","topic-agent-skills","topic-agentic-skills","topic-ai-agents","topic-ai-skills","topic-awesome-list","topic-claude","topic-claude-ai","topic-claude-ai-skills","topic-claude-code","topic-claude-cowork","topic-claude-memory","topic-claude-skills"],"categories":["claude-skills-kit"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/KirKruglov/claude-skills-kit/prompt-library-curator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add KirKruglov/claude-skills-kit","source_repo":"https://github.com/KirKruglov/claude-skills-kit","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (7,143 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:38.455Z","embedding":null,"createdAt":"2026-05-18T13:21:16.089Z","updatedAt":"2026-05-18T19:13:38.455Z","lastSeenAt":"2026-05-18T19:13:38.455Z","tsv":"'1':187,192,329,351,407,447,569,631,684,862 '10':490 '15':911 '2':212,324,352,361,472,475,599,642,695,872 '20':656,701,856 '3':236,393,439,485,653,702 '4':267,404,476,503,566,705 '5':539,627,709 '6':673,734 '7':746,777 '8':764 'absent':811 'accept':188 'access':752,769 'accumul':25 'add':379,415,420,557,657,808 'advanc':509,525,641 'alreadi':787 'alway':737,993 'ambigu':169 'analys':440 'analysi':465,880 'anchor':666 'as-i':980 'assembl':674 'assign':66,449,474 'attach':232,1011 'attempt':330 'automat':625 'b2b':483,870,890 'blank':355 'blank-line-separ':354 'block':198,686,733,956,975 'bottom':419 'build':424,628,677 'bullet':210 'call':913 'case':999 'catalog':16,64,106,143,165,181,414,676 'categori':67,135,159,448,609,636,649,670,692,711,714,792,802,820,839,858 'categoris':110 'chain':528 'chain-of-thought':527 'chat':200,303,775,1056 'check':237,268 'clean':81 'clear':291 'code':464,732,850,851,955,974 'cold':866,885,895 'collect':11,55,280,308,1061 'column':648 'compar':570 'complex':71,504,526,639,652,726,861,891,961 'confirm':762 'conserv':375 'contain':128,544,788 'context':522 'context-depend':521 'convers':274,287,1049 'core':593 'count':394 'cowork':753 'creat':455,643 'curat':4,49 'cyril':129 'date':688 'dd':835 'dedupl':32 'defin':801,819 'delet':622 'depend':523 'describ':492 'detect':76,116,117,247,297,366,567,742,942 'determin':193,446 'differ':598 'direct':230,1009 'display':770 'document':928 'docx':242,1022 'doesn':434 'doubl':359,377 'draft':864,883 'duplic':77,114,568,583,591,602,615,693,735,741,841,915,921,941,990 'e.g':480,497 'edit':958 'either':623 'email':481,867,868,886,888,896 'empti':218,220,1000 'english':147,156,158,167 'enhanc':804 'entir':142,164 'entri':413,433 'etc':245,353,549 'exact':582 'exist':796 'field':943 'file':83,102,206,235,240,266,750,767,935,1014,1020,1041 'find':660,697,845 'fit':461 'flag':113,541,694,842,917 'focus':901 'folder':760 'follow':826 'format':241,252,682,822,1021,1027 'found':226,745,1005 'frontmatt':723,967 'full':426,771 'generat':140,162,180,1017,1044 'give':929 'handl':778 'head':671,722,791,971 'header':685 'heurist':281,342,581 'high':282,937 'horizont':346,706 'ident':575,584 'identifi':400 'index':19,108,430,629,645,664,703,857 'individu':327,337 'inlin':96,207,773,966 'input':89,191,194,214,270,335,368,781,786,1001,1046 'insid':953 'instruct':185,594 'intent':576 'introduc':899 'item':350 'keep':604,924 'kept':979 'keyword':478 'label':34,458 'languag':115,121,153,173,184 'last':830 'latin':151 'latin-script':150 'learn':469 'level':538 'librari':3,43,48,427,829 'like':272,301,1054 'line':320,356,488,724,968,1073 'link':667 'list':97,211,349,564,611 'log':275,304,1050,1057 'long':500 'look':271,300,1053 'markdown':15,63,827 'market':470 'md':100,204,263,1038 'md/.txt':234,1013 'meet':466 'messag':124 'metadata':807 'min':912 'minor':596 'miss':806 'mm':834 'mode':754 'moder':508,516,881 'multi':518,532 'multi-rol':531 'multi-step':517 'n':403,406,655,700,838,855 'name':136,160,720,803 'navig':62 'near':574,590,920 'near-dupl':589,919 'near-ident':573 'negat':998 'new':457 'newlin':360,378 'non':217 'non-empti':216 'none':460,744,939 'normalis':588 'note':381,416,619 'number':208,348,397 'one':450,487,505,710,925 'one-lin':486 'order':345 'organ':5,39 'organis':52,316,780,1069 'origin':727,948 'output':79,103,138,387,675,681,772,821,997,1018,1045 'outreach':869,889 'overwrit':814 'pain':904 'pair':603 'paragraph':358 'partial':779 'past':93,196,227,254,309,1006,1029,1062 'path':763 'pdf':244,501,876,878,1024 'per':713 'person':9,54,468,548 'phrase':177 'placehold':545 'plain':258,1033 'plan':467 'pleas':253,1028 'point':392,905 'present':738,852,994 'preserv':550,795,951 'prioriti':344 'problem':907 'proceed':408 'product':900 'prompt':2,10,27,41,42,46,47,58,75,91,111,225,229,256,279,293,307,311,322,328,338,399,422,442,445,495,515,524,537,543,555,561,571,624,634,691,721,728,828,837,916,946,985,1004,1008,1031,1060,1064,1075 'prompt-library-cur':1 'prompt-library.md':82,104,678,757,823 'prompt-styl':292 'propos':909 'prospect':898 'question':285 'quick':659,696,844 'rate':72 'rather':276 'ratio':283 'raw':90,334 'readi':84 'referenc':203 'renam':816 'report':502,877 'research':463,848,849,873,914 'respect':608 'respond':130,154,170,223,250,298,1002,1025,1051 'reus':37,86 'review':390,922 'role':533 'rule':347,707,944 'russian':126,132,134,145 'save':26,57,755 'script':152 'section':610,616,661,698,712,736,991 'semant':579 'separ':341,357,364,388,708 'set':453 'share':88 'short':477,511 'similar':580,936 'simpl':507,510,640,871,892 'singl':412,432,513,965 'single-entri':411 'single-step':512 'skill':51 'skill-prompt-library-curator' 'skip':428 'sort':632,715 'sourc':195 'source-kirkruglov' 'specifi':318,1071 'split':325,332,374,391 'stat':689 'state':739 'step':186,323,438,514,519,565,626,672,776 'stop':221,248 'store':401 'structur':14,31,61,105,295,683,797,824 'style':294 'summari':69,482,489,650,859,879,932 'summaris':498,874,926 'system':536,751,768 'system-prompt':535 'tabl':20,109,431,630,646,704 'tag':7,44,68,473,479,563,651,725,794,860,887,959,987 'tags/complexity':809 'templat':484,540,558,976,988 'text':94,197,259,312,373,556,585,729,949,1034,1065 'thought':530 'titl':687 'top':384 'topic':547 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agents' 'topic-ai-skills' 'topic-awesome-list' 'topic-claude' 'topic-claude-ai' 'topic-claude-ai-skills' 'topic-claude-code' 'topic-claude-cowork' 'topic-claude-memory' 'topic-claude-skills' 'total':396,690,836 'trigger':38,176 'turn':288 'txt':101,205,265,1040 'uncertain':389 'unsupport':239,251,1019,1026 'updat':831 'upload':201,261,1036 'use':21,133,157,178,339,679 'user':119,748,784,800,818 'user-defin':799,817 'valid':190,213 'variabl':546,551,977 'verbatim':552,952 'wall':371 'want':29,314,1067 'warrant':436 'whitespac':587 'word':491,578,597 'workspac':759 'write':462,846,847,863,882,893 'x':840 'xlsx':243,1023 'y':843 'yyyi':833 'yyyy-mm-dd':832 'z':638,717","prices":[{"id":"81bac3ed-fdbb-43c4-8b34-5079aa089271","listingId":"d157f4a0-42d1-43e7-9608-021a4f25ab4d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"KirKruglov","category":"claude-skills-kit","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:16.089Z"}],"sources":[{"listingId":"d157f4a0-42d1-43e7-9608-021a4f25ab4d","source":"github","sourceId":"KirKruglov/claude-skills-kit/prompt-library-curator","sourceUrl":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/prompt-library-curator","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:16.089Z","lastSeenAt":"2026-05-18T19:13:38.455Z"}],"details":{"listingId":"d157f4a0-42d1-43e7-9608-021a4f25ab4d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"KirKruglov","slug":"prompt-library-curator","github":{"repo":"KirKruglov/claude-skills-kit","stars":7,"topics":["agent-skills","agentic-skills","ai","ai-agents","ai-skills","awesome-list","claude","claude-ai","claude-ai-skills","claude-code","claude-cowork","claude-memory","claude-skills","memory-management","productivity","productivity-tools","project-management"],"license":"mit","html_url":"https://github.com/KirKruglov/claude-skills-kit","pushed_at":"2026-05-18T04:27:46Z","description":"40+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation","skill_md_sha":"7db95db1f69ce66f941e45e00df51735f5e98c11","skill_md_path":"skills/prompt-library-curator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/prompt-library-curator"},"layout":"multi","source":"github","category":"claude-skills-kit","frontmatter":{"name":"prompt-library-curator","description":"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', 'организуй мои промпты', 'библиотека промптов', 'структурируй промпты'."},"skills_sh_url":"https://skills.sh/KirKruglov/claude-skills-kit/prompt-library-curator"},"updatedAt":"2026-05-18T19:13:38.455Z"}}