Note promotion
Skill r007b34r/opencode-obsidian-knowledge-workflow/skills/note-promotion
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.
npx -y skills add r007b34r/opencode-obsidian-knowledge-workflow --skill note-promotionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.4 KB, as published. Nobody here has run it
note-promotion
Constraints
- NEVER promote everything; require stability + reuse + independence
- NEVER polish before deciding; score first, format only if promoting
- NEVER create notes without integration targets (minimum 2 links)
- NEVER write without user confirmation
- NEVER overwrite source voice; preserve strong original phrasing
Trigger Boundary
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."
Do NOT use for:
- First-pass inbox routing ->
inbox-triage - Note relationship discovery ->
connection-review - Week-level meaning extraction ->
weekly-synthesis - Vault system health diagnosis ->
vault-health-feedback
Boundaries
- Owns: promotion decision, note type selection, integration planning, write execution
- Delegates to:
connection-review(new note needs integration links),inbox-triage(material too raw) - Never absorbs: inbox routing, relationship analysis, synthesis, health diagnosis
Continuations
| Condition | Next skill |
|---|---|
| New promoted note needs integration links | connection-review |
| Material fails promotion test, return to inbox | inbox-triage |
| Promotion decision is ambiguous after scoring | Escalate to human |
Companion Skill
All vault operations follow obsidian-mcp. Forbidden: obsidian_patch_note, obsidian_append_to_note. Verify every write through readback.
Procedure
Phase 1: Score
When scoring, read references/examples.md for promotion calibration.
Apply promotion test (>=3/5 to promote):
| Criterion | Score | Evidence required |
|---|---|---|
| Stable (not transient fragment) | 0/1 | Has persisted or been referenced again |
| Reusable (future value) | 0/1 | Applicable beyond original context |
| Independent (standalone) | 0/1 | Understandable without source capture |
| Connectable (links exist) | 0/1 | Can link to existing theme/project/question |
| Compression benefit | 0/1 | Clearer or more retrievable than source |
Score < 3: recommend wait / keep raw / archive. Score >= 3: proceed to Phase 2.
Phase 2: Type Selection
| Type | Use when |
|---|---|
| reference-note | Stable external knowledge or method |
| idea-note | Personal framing, observation, or judgment |
| project-note | Mainly useful inside active work |
| topic-note | Multiple notes need a conceptual home |
| synthesis-note | Cross-note understanding worth preserving |
| contradiction-note | Important tension deserves explicit framing |
| question-note | The question itself is worth returning to |
Phase 3: Plan
Define: title, tags, links (integration targets), write strategy (create new or merge into existing).
Phase 4: Execute (after user confirmation only)
When writing promoted notes, read references/templates.md for note structure.
obsidian_write_note overwrite:falsefor new notesobsidian_replace_in_notefor merging into existing- Read back and verify frontmatter, content, links
- Material scores 3/5 but all points are weak: default to "wait" -- borderline cases benefit from time
- Material is excellent but has zero link targets: cannot promote yet; suggest creating a topic-note first
- Source is a synthesis output: check if synthesis-note type is appropriate or if the thesis deserves idea-note treatment
- Multiple candidates from same source: promote the strongest one; note others as "watch" items
- Material overlaps with existing note: merge strategy preferred over creating near-duplicates
Gotchas
Gotcha 1: Promoting every good idea
What happens: Agent marks most material as worth promoting Why it is wrong: Creates hollow vault growth; promoted notes without stability become noise Correct approach: Apply scoring strictly; default to "wait" when uncertain
Gotcha 2: Promotion as polishing
What happens: Agent rewrites and beautifies content without deciding if promotion is warranted Why it is wrong: Polishing is not promotion; a well-written fragment is still a fragment Correct approach: Score first, decide promote/wait, THEN format if promoting
Gotcha 3: Island notes without links
What happens: Agent creates a promoted note with no links to existing knowledge Why it is wrong: Unlinked notes are undiscoverable; defeats the purpose of promotion Correct approach: Require at least 2 integration targets before writing
Validators (CI only, not runtime)
validators/pre-check.sh: Confirms source material exists and is readablevalidators/post-check.sh: Verifies promoted note has frontmatter, >=2 links, and correct type tag
Exit Criteria
- Promotion decision is explicit with score and per-criterion evidence
- Weak material has not been polished into fake clarity
- Integration targets are named (>=2 links)
- If written: note exists, frontmatter correct, content reads back correctly