{"id":"458c7076-7d14-4664-8452-9e334b009913","shortId":"fa2eUa","kind":"skill","title":"inbox-triage","tagline":"Route raw Obsidian inbox captures into keep/promote/project/archive/deep-read. Load when user asks to triage inbox, sort captures, or process fleeting notes. Do NOT use for relationship analysis, synthesis, health diagnosis, or note creation.","description":"# inbox-triage\n\n## Constraints\n\n- NEVER scan whole vault; scope = `Inbox/` or user-specified path only\n- NEVER write back without explicit user confirmation\n- NEVER produce synthesis or thesis; output is routing decisions only\n- NEVER deep-read all items; deep-read only when routing is genuinely uncertain\n- MAX 20 items per batch; split and report remainder if more\n\n## Trigger Boundary\n\n**Use when:** triage inbox, sort captures, route raw notes, process fleeting notes, decide what to promote/archive.\n\n**Do NOT use for:**\n- Cross-note relationship analysis → `connection-review`\n- Week-level meaning extraction → `weekly-synthesis`\n- Stable note creation → `note-promotion`\n- Vault health diagnosis → `vault-health-feedback`\n\n## Boundaries\n\n- **Owns:** inbox routing, capture classification, shallow-read decisions\n- **Delegates to:** `connection-review` (items needing links), `note-promotion` (items marked promote)\n- **Never absorbs:** synthesis, health diagnosis, context maintenance, relationship analysis\n\n## Continuations\n\n| Condition | Next skill |\n|-----------|-----------|\n| Promoted items with link potential > 2 | `connection-review` |\n| Item marked promote-to-note, user confirms | `note-promotion` |\n| Inbox path not found or empty | `vault-health-feedback` |\n| Ambiguous items > 60% of batch | 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\n## Procedure\n\n### Phase 1: Discover\n1. `obsidian_list_notes path:\"Inbox/\"` → candidate list\n2. Count items; if >20, process first 20 and report remainder\n\n### Phase 2: Shallow Read\n1. For each: `obsidian_get_note format:\"document-map\"` → structure\n2. Short notes (<500 words): read as `format:\"content\"`\n3. Flag genuinely uncertain items → mark `needs-deep-read`\n\n### Phase 3: Classify\n\nWhen classifying, read `references/examples.md` for decision calibration.\n\n| Decision | Use when |\n|----------|----------|\n| keep-in-inbox | Too raw, still incubating |\n| promote-to-note | Stable, reusable, independent |\n| promote-to-idea | Personal observation worth preserving |\n| move-to-project | Mainly useful inside active project |\n| archive-or-ignore | Low-density, redundant, stale |\n| needs-deep-read | Shallow evidence insufficient, potential value high |\n\nDimensions: reusability, current relevance, cognitive density, connection potential.\n\n### Phase 4: Report\n\nWhen formatting output, read `references/templates.md` for the exact output format.\n\nOutput batch summary per contract. Wait for user confirmation before any write-back.\n\n<details>\n<summary>Edge Cases (expand only when needed)</summary>\n\n- **Empty inbox:** report empty, suggest checking path config\n- **All items ambiguous:** escalate to user, ask for 2-3 example decisions to calibrate\n- **Mixed languages:** classify by content quality, not language\n- **Broken frontmatter:** flag but still classify content\n- **Oversized inbox (50+):** process first 20, report \"X items remaining, continue?\"\n- **Items with no content (title only):** classify as needs-deep-read or archive\n\n</details>\n\n## Gotchas\n\n### Gotcha 1: Triage becomes mini-synthesis\n**What happens:** Agent writes multi-paragraph analysis for each item\n**Why it's wrong:** Triage is routing, not content production; wastes tokens and crosses into weekly-synthesis territory\n**Correct approach:** One sentence reason + one decision per item\n\n### Gotcha 2: Over-promotion\n**What happens:** Agent marks most items as promote-to-note\n**Why it's wrong:** Promotes unstable fragments, creates hollow vault growth\n**Correct approach:** Promote only when stable + reusable + independent; default to keep-in-inbox when uncertain\n\n### Gotcha 3: Full-reading everything\n**What happens:** Agent reads every note in full before classifying\n**Why it's wrong:** Wastes token budget; most routing decisions need only document-map\n**Correct approach:** Document-map first; deep-read only genuinely uncertain items\n\n## Validators (CI only, not runtime)\n\n- `validators/pre-check.sh`: Confirms inbox path accessible and not empty\n- `validators/post-check.sh`: Verifies output contains no synthesis markers\n\n## Exit Criteria\n\n- Every candidate has exactly one routing decision or needs-deep-read\n- Triage has not turned into synthesis\n- Batch size ≤20 respected\n- Any write-back passed obsidian-mcp readback verification","tags":["inbox","triage","opencode","obsidian","knowledge","workflow","r007b34r","agent-skills","ai-agents","ai-tools","claude-code-skills","digital-garden"],"capabilities":["skill","source-r007b34r","skill-inbox-triage","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/inbox-triage","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 (4,422 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.249Z","embedding":null,"createdAt":"2026-05-18T13:22:59.249Z","updatedAt":"2026-05-18T13:22:59.249Z","lastSeenAt":"2026-05-18T13:22:59.249Z","tsv":"'-3':422 '1':245,247,270,469 '2':188,255,267,281,421,515 '20':85,259,262,447,643 '3':290,301,558 '4':373 '50':444 '500':284 '60':215 'absorb':171 'access':610 'activ':343 'agent':477,521,565 'ambigu':213,415 'analysi':29,121,178,482 'append':235 'approach':506,542,589 'archiv':346,466 'archive-or-ignor':345 'ask':14,419 'back':54,398,648 'batch':88,217,386,641 'becom':471 'boundari':96,146 'broken':435 'budget':579 'calibr':309,426 'candid':253,624 'captur':8,19,102,150 'case':400 'check':410 'ci':602 'classif':151 'classifi':302,304,429,440,459,572 'cognit':368 'companion':221 'condit':180 'config':412 'confirm':58,199,393,607 'connect':123,159,190,370 'connection-review':122,158,189 'constraint':39 'contain':617 'content':289,431,441,456,494 'context':175 'continu':179,452 'contract':389 'correct':505,541,588 'count':256 'creat':537 'creation':35,135 'criteria':622 'cross':118,499 'cross-not':117 'current':366 'decid':109 'decis':67,155,308,310,424,511,582,629 'deep':71,76,298,356,463,595,633 'deep-read':70,75,594 'default':549 'deleg':156 'densiti':351,369 'diagnosi':32,141,174 'dimens':364 'discov':246 'document':278,586,591 'document-map':277,585,590 'edg':399 'empti':208,405,408,613 'escal':218,416 'everi':239,567,623 'everyth':562 'evid':359 'exact':382,626 'exampl':423 'exit':621 'expand':401 'explicit':56 'extract':129 'feedback':145,212 'first':261,446,593 'flag':291,437 'fleet':22,107 'follow':226 'forbidden':230 'format':276,288,376,384 'found':206 'fragment':536 'frontmatt':436 'full':560,570 'full-read':559 'genuin':82,292,598 'get':274 'gotcha':467,468,514,557 'growth':540 'happen':476,520,564 'health':31,140,144,173,211 'high':363 'hollow':538 'human':220 'idea':331 'ignor':348 'inbox':2,7,17,37,45,100,148,203,252,316,406,443,554,608 'inbox-triag':1,36 'incub':320 'independ':327,548 'insid':342 'insuffici':360 'item':74,86,161,167,184,192,214,257,294,414,450,453,485,513,524,600 'keep':314,552 'keep-in-inbox':313,551 'keep/promote/project/archive/deep-read':10 'languag':428,434 'level':127 'link':163,186 'list':249,254 'load':11 'low':350 'low-dens':349 'main':340 'mainten':176 'map':279,587,592 'mark':168,193,295,522 'marker':620 'max':84 'mcp':229,652 'mean':128 'mini':473 'mini-synthesi':472 'mix':427 'move':337 'move-to-project':336 'multi':480 'multi-paragraph':479 'need':162,297,355,404,462,583,632 'needs-deep-read':296,354,461,631 'never':40,52,59,69,170 'next':181 'note':23,34,105,108,119,134,137,165,197,201,233,237,250,275,283,324,529,568 'note-promot':136,164,200 'observ':333 'obsidian':6,228,231,234,248,273,651 'obsidian-mcp':227,650 'one':507,510,627 'oper':225 'output':64,377,383,385,616 'over-promot':516 'overs':442 'own':147 'paragraph':481 'pass':649 'patch':232 'path':50,204,251,411,609 'per':87,388,512 'person':332 'phase':244,266,300,372 'potenti':187,361,371 'preserv':335 'procedur':243 'process':21,106,260,445 'produc':60 'product':495 'project':339,344 'promot':138,166,169,183,195,202,322,329,518,527,534,543 'promote-to-idea':328 'promote-to-not':194,321,526 'promote/archive':112 'qualiti':432 'raw':5,104,318 'read':72,77,154,269,286,299,305,357,378,464,561,566,596,634 'readback':242,653 'reason':509 'redund':352 'references/examples.md':306 'references/templates.md':379 'relationship':28,120,177 'relev':367 'remain':451 'remaind':92,265 'report':91,264,374,407,448 'respect':644 'reusabl':326,365,547 'review':124,160,191 'rout':4,66,80,103,149,492,581,628 'runtim':605 'scan':41 'scope':44 'sentenc':508 'shallow':153,268,358 'shallow-read':152 'short':282 'size':642 'skill':182,222 'skill-inbox-triage' 'sort':18,101 'source-r007b34r' 'specifi':49 'split':89 'stabl':133,325,546 'stale':353 'still':319,439 'structur':280 'suggest':409 'summari':387 'synthesi':30,61,132,172,474,503,619,640 'territori':504 'thesi':63 'titl':457 'token':497,578 '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' 'triag':3,16,38,99,470,490,635 'trigger':95 'turn':638 'uncertain':83,293,556,599 'unstabl':535 'use':26,97,115,311,341 'user':13,48,57,198,392,418 'user-specifi':47 'valid':601 'validators/post-check.sh':614 'validators/pre-check.sh':606 'valu':362 'vault':43,139,143,210,224,539 'vault-health-feedback':142,209 'verif':654 'verifi':238,615 'wait':390 'wast':496,577 'week':126,131,502 'week-level':125 'weekly-synthesi':130,501 'whole':42 'without':55 'word':285 'worth':334 'write':53,240,397,478,647 'write-back':396,646 'wrong':489,533,576 'x':449","prices":[{"id":"c9b04d06-ca2b-4b8d-9215-045a939bae1e","listingId":"458c7076-7d14-4664-8452-9e334b009913","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.249Z"}],"sources":[{"listingId":"458c7076-7d14-4664-8452-9e334b009913","source":"github","sourceId":"r007b34r/opencode-obsidian-knowledge-workflow/inbox-triage","sourceUrl":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/inbox-triage","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:59.249Z","lastSeenAt":"2026-05-18T13:22:59.249Z"}],"details":{"listingId":"458c7076-7d14-4664-8452-9e334b009913","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"r007b34r","slug":"inbox-triage","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":"151239d07b01d038c16d1f3ceb852c2ce5b16281","skill_md_path":"skills/inbox-triage/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/r007b34r/opencode-obsidian-knowledge-workflow/tree/master/skills/inbox-triage"},"layout":"multi","source":"github","category":"opencode-obsidian-knowledge-workflow","frontmatter":{"name":"inbox-triage","license":"Apache-2.0","description":"Route raw Obsidian inbox captures into keep/promote/project/archive/deep-read. Load when user asks to triage inbox, sort captures, or process fleeting notes. Do NOT use for relationship analysis, synthesis, health diagnosis, or note creation.","compatibility":"opencode; requires obsidian-mcp"},"skills_sh_url":"https://skills.sh/r007b34r/opencode-obsidian-knowledge-workflow/inbox-triage"},"updatedAt":"2026-05-18T13:22:59.249Z"}}