{"id":"9c90f60d-0c71-4617-8844-dce3646adb82","shortId":"hTqpQA","kind":"skill","title":"note-promotion","tagline":"Decide whether material should become a stable, reusable, linkable Obsidian note. Load when user asks to upgrade, promote, or stabilize material into a formal note. Do NOT use for inbox triage, link discovery, or weekly synthesis.","description":"# note-promotion\n\n## Constraints\n\n- NEVER promote everything; require stability + reuse + independence\n- NEVER polish before deciding; score first, format only if promoting\n- NEVER create notes without integration targets (minimum 2 links)\n- NEVER write without user confirmation\n- NEVER overwrite source voice; preserve strong original phrasing\n\n## Trigger Boundary\n\n**Use when:** upgrade material into formal note, decide if finding is worth preserving, turn synthesis output into stable note, create linkable knowledge unit, user says \"promote\" or \"stabilize.\"\n\n**Do NOT use for:**\n- First-pass inbox routing -> `inbox-triage`\n- Note relationship discovery -> `connection-review`\n- Week-level meaning extraction -> `weekly-synthesis`\n- Vault system health diagnosis -> `vault-health-feedback`\n\n## Boundaries\n\n- **Owns:** promotion decision, note type selection, integration planning, write execution\n- **Delegates to:** `connection-review` (new note needs integration links), `inbox-triage` (material too raw)\n- **Never absorbs:** inbox routing, relationship analysis, synthesis, health diagnosis\n\n## Continuations\n\n| Condition | Next skill |\n|-----------|-----------|\n| New promoted note needs integration links | `connection-review` |\n| Material fails promotion test, return to inbox | `inbox-triage` |\n| Promotion decision is ambiguous after scoring | Escalate to human |\n\n## Companion Skill\n\nAll vault operations follow `obsidian-mcp`. Forbidden: `obsidian_patch_note`, `obsidian_append_to_note`. Verify every write through readback.\n## Procedure\n\n### Phase 1: Score\n\nWhen scoring, read `references/examples.md` for promotion calibration.\n\nApply promotion test (>=3/5 to promote):\n\n| Criterion | Score | Evidence required |\n|-----------|-------|-------------------|\n| Stable (not transient fragment) | 0/1 | Has persisted or been referenced again |\n| Reusable (future value) | 0/1 | Applicable beyond original context |\n| Independent (standalone) | 0/1 | Understandable without source capture |\n| Connectable (links exist) | 0/1 | Can link to existing theme/project/question |\n| Compression benefit | 0/1 | Clearer or more retrievable than source |\n\nScore < 3: recommend wait / keep raw / archive.\nScore >= 3: proceed to Phase 2.\n\n### Phase 2: Type Selection\n\n| Type | Use when |\n|------|----------|\n| reference-note | Stable external knowledge or method |\n| idea-note | Personal framing, observation, or judgment |\n| project-note | Mainly useful inside active work |\n| topic-note | Multiple notes need a conceptual home |\n| synthesis-note | Cross-note understanding worth preserving |\n| contradiction-note | Important tension deserves explicit framing |\n| question-note | The question itself is worth returning to |\n\n### Phase 3: Plan\n\nDefine: title, tags, links (integration targets), write strategy (create new or merge into existing).\n\n### Phase 4: Execute (after user confirmation only)\n\nWhen writing promoted notes, read `references/templates.md` for note structure.\n\n1. `obsidian_write_note overwrite:false` for new notes\n2. `obsidian_replace_in_note` for merging into existing\n3. Read back and verify frontmatter, content, links\n<details>\n<summary>Edge Cases (expand when decision is unclear)</summary>\n\n- Material scores 3/5 but all points are weak: default to \"wait\" -- borderline cases benefit from time\n- Material is excellent but has zero link targets: cannot promote yet; suggest creating a topic-note first\n- Source is a synthesis output: check if synthesis-note type is appropriate or if the thesis deserves idea-note treatment\n- Multiple candidates from same source: promote the strongest one; note others as \"watch\" items\n- Material overlaps with existing note: merge strategy preferred over creating near-duplicates\n\n</details>\n\n## Gotchas\n\n### Gotcha 1: Promoting every good idea\n**What happens:** Agent marks most material as worth promoting\n**Why it is wrong:** Creates hollow vault growth; promoted notes without stability become noise\n**Correct approach:** Apply scoring strictly; default to \"wait\" when uncertain\n\n### Gotcha 2: Promotion as polishing\n**What happens:** Agent rewrites and beautifies content without deciding if promotion is warranted\n**Why it is wrong:** Polishing is not promotion; a well-written fragment is still a fragment\n**Correct approach:** Score first, decide promote/wait, THEN format if promoting\n\n### Gotcha 3: Island notes without links\n**What happens:** Agent creates a promoted note with no links to existing knowledge\n**Why it is wrong:** Unlinked notes are undiscoverable; defeats the purpose of promotion\n**Correct approach:** Require at least 2 integration targets before writing\n\n## Validators (CI only, not runtime)\n\n- `validators/pre-check.sh`: Confirms source material exists and is readable\n- `validators/post-check.sh`: Verifies promoted note has frontmatter, >=2 links, and correct type tag\n\n## Exit Criteria\n\n- Promotion decision is explicit with score and per-criterion evidence\n- Weak material has not been polished into fake clarity\n- Integration targets are named (>=2 links)\n- If written: note exists, frontmatter correct, content reads back correctly","tags":["note","promotion","opencode","obsidian","knowledge","workflow","r007b34r","agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden"],"capabilities":["skill","source-r007b34r","skill-note-promotion","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-claude-code-skills","topic-digital-garden","topic-knowledge-base","topic-knowledge-management","topic-knowledge-workflow","topic-llm","topic-mcp","topic-mcp-server","topic-model-context-protocol"],"categories":["opencode-obsidian-knowledge-workflow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/note-promotion","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add r007b34r/opencode-obsidian-knowledge-workflow","source_repo":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (5,131 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-18T13:22:59.350Z","embedding":null,"createdAt":"2026-05-18T13:22:59.350Z","updatedAt":"2026-05-18T13:22:59.350Z","lastSeenAt":"2026-05-18T13:22:59.350Z","tsv":"'0/1':262,272,279,287,295 '1':239,415,533 '2':68,314,316,424,572,653,677,709 '3':303,310,383,433,617 '3/5':251,450 '4':400 'absorb':175 'activ':344 'agent':540,578,624 'ambigu':209 'analysi':179 'append':229 'appli':248,563 'applic':273 'approach':562,607,649 'appropri':494 'archiv':308 'ask':18 'back':435,719 'beautifi':581 'becom':8,559 'benefit':294,461 'beyond':274 'borderlin':459 'boundari':84,147 'calibr':247 'candid':505 'cannot':472 'captur':283 'case':442,460 'check':487 'ci':659 'clariti':704 'clearer':296 'companion':215 'compress':293 'conceptu':353 'condit':184 'confirm':74,404,664 'connect':129,161,194,284 'connection-review':128,160,193 'constraint':43 'content':439,582,717 'context':276 'continu':183 'contradict':365 'contradiction-not':364 'correct':561,606,648,680,716,720 'creat':62,104,393,476,527,551,625 'criteria':684 'criterion':254,694 'cross':359 'cross-not':358 'decid':4,54,92,584,610 'decis':150,207,445,686 'default':456,566 'defeat':643 'defin':385 'deleg':158 'deserv':369,499 'diagnosi':142,182 'discoveri':36,127 'duplic':530 'edg':441 'escal':212 'everi':233,535 'everyth':46 'evid':256,695 'excel':466 'execut':157,401 'exist':286,291,398,432,521,633,667,714 'exit':683 'expand':443 'explicit':370,688 'extern':326 'extract':135 'fail':197 'fake':703 'fals':420 'feedback':146 'find':94 'first':56,118,481,609 'first-pass':117 'follow':220 'forbidden':224 'formal':27,90 'format':57,613 'fragment':261,601,605 'frame':334,371 'frontmatt':438,676,715 'futur':270 'good':536 'gotcha':531,532,571,616 'growth':554 'happen':539,577,623 'health':141,145,181 'hollow':552 'home':354 'human':214 'idea':331,501,537 'idea-not':330,500 'import':367 'inbox':33,120,123,169,176,202,204 'inbox-triag':122,168,203 'independ':50,277 'insid':343 'integr':65,154,166,191,389,654,705 'island':618 'item':517 'judgment':337 'keep':306 'knowledg':106,327,634 'least':652 'level':133 'link':35,69,167,192,285,289,388,440,470,621,631,678,710 'linkabl':12,105 'load':15 'main':341 'mark':541 'materi':6,24,88,171,196,448,464,518,543,666,697 'mcp':223 'mean':134 'merg':396,430,523 'method':329 'minimum':67 'multipl':349,504 'name':708 'near':529 'near-dupl':528 'need':165,190,351 'never':44,51,61,70,75,174 'new':163,187,394,422 'next':185 'nois':560 'note':2,14,28,41,63,91,103,125,151,164,189,227,231,324,332,340,348,350,357,360,366,374,409,413,418,423,428,480,491,502,513,522,556,619,628,640,674,713 'note-promot':1,40 'observ':335 'obsidian':13,222,225,228,416,425 'obsidian-mcp':221 'one':512 'oper':219 'origin':81,275 'other':514 'output':100,486 'overlap':519 'overwrit':76,419 'own':148 'pass':119 'patch':226 'per':693 'per-criterion':692 'persist':264 'person':333 'phase':238,313,315,382,399 'phrase':82 'plan':155,384 'point':453 'polish':52,575,593,701 'prefer':525 'preserv':79,97,363 'procedur':237 'proceed':311 'project':339 'project-not':338 'promot':3,21,42,45,60,110,149,188,198,206,246,249,253,408,473,509,534,546,555,573,586,596,615,627,647,673,685 'promote/wait':611 'purpos':645 'question':373,376 'question-not':372 'raw':173,307 'read':243,410,434,718 'readabl':670 'readback':236 'recommend':304 'refer':323 'referenc':267 'reference-not':322 'references/examples.md':244 'references/templates.md':411 'relationship':126,178 'replac':426 'requir':47,257,650 'retriev':299 'return':200,380 'reus':49 'reusabl':11,269 'review':130,162,195 'rewrit':579 'rout':121,177 'runtim':662 'say':109 'score':55,211,240,242,255,302,309,449,564,608,690 'select':153,318 'skill':186,216 'skill-note-promotion' 'sourc':77,282,301,482,508,665 'source-r007b34r' 'stabil':23,48,112,558 'stabl':10,102,258,325 'standalon':278 'still':603 'strategi':392,524 'strict':565 'strong':80 'strongest':511 'structur':414 'suggest':475 'synthesi':39,99,138,180,356,485,490 'synthesis-not':355,489 'system':140 'tag':387,682 'target':66,390,471,655,706 'tension':368 'test':199,250 'theme/project/question':292 'thesi':498 'time':463 'titl':386 'topic':347,479 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-claude-code-skills' 'topic-digital-garden' 'topic-knowledge-base' 'topic-knowledge-management' 'topic-knowledge-workflow' 'topic-llm' 'topic-mcp' 'topic-mcp-server' 'topic-model-context-protocol' 'topic-not':346,478 'transient':260 'treatment':503 'triag':34,124,170,205 'trigger':83 'turn':98 'type':152,317,319,492,681 'uncertain':570 'unclear':447 'understand':280,361 'undiscover':642 'unit':107 'unlink':639 'upgrad':20,87 'use':31,85,115,320,342 'user':17,73,108,403 'valid':658 'validators/post-check.sh':671 'validators/pre-check.sh':663 'valu':271 'vault':139,144,218,553 'vault-health-feedback':143 'verifi':232,437,672 'voic':78 'wait':305,458,568 'warrant':588 'watch':516 'weak':455,696 'week':38,132,137 'week-level':131 'weekly-synthesi':136 'well':599 'well-written':598 'whether':5 'without':64,72,281,557,583,620 'work':345 'worth':96,362,379,545 'write':71,156,234,391,407,417,657 'written':600,712 'wrong':550,592,638 'yet':474 'zero':469","prices":[{"id":"a1061116-38b3-429d-82dc-cec485f1c116","listingId":"9c90f60d-0c71-4617-8844-dce3646adb82","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"r007b34r","category":"opencode-obsidian-knowledge-workflow","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:59.350Z"}],"sources":[{"listingId":"9c90f60d-0c71-4617-8844-dce3646adb82","source":"github","sourceId":"r007b34r/opencode-obsidian-knowledge-workflow/note-promotion","sourceUrl":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/note-promotion","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:59.350Z","lastSeenAt":"2026-05-18T13:22:59.350Z"}],"details":{"listingId":"9c90f60d-0c71-4617-8844-dce3646adb82","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"r007b34r","slug":"note-promotion","github":{"repo":"r007b34r/opencode-obsidian-knowledge-workflow","stars":6,"topics":["agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden","knowledge-base","knowledge-management","knowledge-workflow","llm","mcp","mcp-server","model-context-protocol","note-taking","obsidian","obsidian-mcp","opencode","opencode-skills","pkm","second-brain","zettelkasten"],"license":"apache-2.0","html_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow","pushed_at":"2026-05-14T11:39:07Z","description":"7 AKU-architected skills for OpenCode + Obsidian MCP: obsidian-mcp, inbox-triage, connection-review, weekly-synthesis, context-maintenance, vault-health-feedback, note-promotion. Knowledge Activation v4 with validators, EDD evals, and CI. Built on obsidian-mcp-server. Works with OpenCode and Claude Code.","skill_md_sha":"3f464d5aea51163d85beb368b56cdf961b408c98","skill_md_path":"skills/note-promotion/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/note-promotion"},"layout":"multi","source":"github","category":"opencode-obsidian-knowledge-workflow","frontmatter":{"name":"note-promotion","license":"Apache-2.0","description":"Decide whether material should become a stable, reusable, linkable Obsidian note. Load when user asks to upgrade, promote, or stabilize material into a formal note. Do NOT use for inbox triage, link discovery, or weekly synthesis.","compatibility":"opencode; requires obsidian-mcp"},"skills_sh_url":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/note-promotion"},"updatedAt":"2026-05-18T13:22:59.350Z"}}