Claude Skill

vaultr-compile-note

Compiles a single raw Vaultr note into knowledge units using a two-phase AI process (triage → compile). Use this skill whenever the user wants to compile a note into knowledge, extract knowledge from a note, update the knowledge base from a note, merge note content into knowledge

LLM Mart · 0 points · 0 views 3 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download skoowoo-vaultr-notes-skills_vaultr-compile-note-6cd8ad6.zip · 6 KB
Part of skoowoo/vaultr-notes — 7 skills

Install

skills CLI npx skills add https://github.com/skoowoo/vaultr-notes/tree/main/skills/vaultr-compile-note
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install skoowoo-vaultr-notes@llmmart
Git git clone https://github.com/skoowoo/vaultr-notes.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole skoowoo/vaultr-notes collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Vaultr Compile Note

Compiles a single raw note into knowledge units — wiki-style pages that capture the author's accumulating understanding of the entities and concepts that matter to them.

Run all five steps to completion without stopping. Do not present intermediate results, ask for confirmation, or pause between steps. Pre-compile (Step 3) is internal — never output it to the user. Only speak at the end (Step 5 summary).


Inputs

  1. Note path — the raw note to compile (vault-absolute or filesystem path)
  2. Knowledge directory — where knowledge units live (default: _knowledge/ relative to cwd, which is always the vault root)

Step 1 — Read the note

Read the full content of the target note. Note its path and original publication date — check in order: YAML front matter (date / published), filename date prefix, article/podcast header, or any explicit timestamp in the body. Record this as source_date. If none is found, mark source_date as unknown.


Step 2 — Load relevant knowledge index

List available domain indexes:

vaultr knowledge list-indexes

This returns a JSON array of {"domain": "...", "path": "..."} objects. Based on the note's content, select the 1–2 domains most relevant to what the note covers. Read only those index files to obtain the unit table for this compilation.

If the output is empty (no indexes exist), fall back to cold start: scan <knowledge-dir> directly and build a compact table (title | entity_type | tags | first paragraph ≤80 chars).


Step 3 — Pre-compile (internal, not shown to user)

Scan the note and produce a unit manifest — a list of knowledge units to create or update. Do not generate any content yet.

What qualifies as a knowledge unit

A knowledge unit is a wiki page for any core or key entity in the note that has depth worth accumulating. There are no fixed types — an entity can be a person, company, book, concept, technique, place, event, story, product, methodology, or anything the note treats with substance.

Three qualifying questions

Before adding a unit to the manifest, answer all three:

  1. Does it have a stable name? A recognized term or proper noun — not a sentence ("the argument that..."). Unnamed ideas belong inside another unit.
  2. Does it have depth to accumulate? If the content would just restate a definition, there's nothing to compile. A unit needs room to grow — mechanisms, tensions, implications, meaning.
  3. Will it recur? Would this entity appear across notes from different contexts and dates? If yes, it belongs here. One-off references don't.

If any answer is no, fold the content into an existing unit instead.

Granularity calibration

Too broad — the title is a domain, not an entity ("AI Trends"). Fix: find the specific entity the note actually advances.

Too narrow — a sub-point or isolated fact with no room to grow. Fix: fold into the relevant unit.

Right size — something you'd naturally treat as its own subject. One clear defining sentence, and more to say beyond it.

Split vs. sub-point

Create two units when they have different cores and would grow independently. Keep as a sub-point when one is an example or implication of the other — separating them would leave both thin.

Don't add to the manifest

  • Data points and metrics
  • Sub-arguments that don't stand alone
  • Passing references with no analysis

Output: unit manifest

unit name entity_type operation
<unit title> <freeform> create
<unit title> <freeform> update

entity_type is a short descriptive label for what this entity is (e.g. person, company, book, concept, event, technique). It is freeform metadata — there are no type restrictions and no templates tied to it.

The manifest may be empty if the note has no content worth compiling. Immediately continue to Step 4.

For every unit marked update in the manifest: read its existing file at <knowledge-dir>/<unit-name>.md now, before Step 4 begins. Do not proceed to Step 4 until all existing files are loaded.


Step 4 — Compile

For each unit in the manifest, check its operation and read the corresponding file:

  • create → read references/create.md and follow it completely.
  • update → read references/update.md and follow it completely.

references/extract.md documents partial-read commands (vaultr extract outline / section / segment / …). Use them at any step when reading the full note is not necessary.

Complete one unit fully before moving to the next. After all units are done, confirm in prose: which were created, which updated, and what changed in each.


Language

Match the language of existing units in the knowledge directory. If no units exist, use the language of the source note. Dates in opinion sections always use YYYY-MM-DD. When the vault language is not English, translate all section names accordingly.

Time attribution

Knowledge units must anchor time to the original publication date of the source material, not the compilation date.

  • If source_date is known: use it when writing any time-sensitive content in the unit (e.g. "as of YYYY-MM-DD", "at the time of publication").
  • If source_date is unknown: omit the time reference or mark it as "date unknown". Never substitute today's date.
Files (vaultr-notes)
  • references
    • create.md 2.2 KB
      # Create — New Knowledge Unit
      
      Synthesize the content from the current note into a clean knowledge unit written as a fresh document. There is no existing unit to preserve or reference.
      
      Do not add inline citations anywhere in the body. All content originates from this note; the Sources section is the sole record.
      
      ---
      
      ## Content organization
      
      You have full freedom to choose and name sections. Let the entity dictate the structure — a person, a book, a company, and a technique each call for different organization. There is no prescribed template.
      
      Ask yourself: what does the author need to know about this entity when they return to it later? What is their current understanding, and how should it be organized to grow?
      
      **One principle**: a knowledge unit should contain only what's most important. Source notes are the permanent record — the unit is a living distillation.
      
      ---
      
      ## Two required sections
      
      **`## Related Knowledge`** — wikilinks to other knowledge units with a brief note on the relationship. Omit if there are no meaningful connections.
      
      **`## Sources`** — always the **last section** in the file. Initialize with `- [[<current-note-stem>]]` where stem is the source note's filename without path or extension (e.g. `/notes/2024-01-15 Weekly Review.md` → `- [[2024-01-15 Weekly Review]]`).
      
      If the vault language is not English, translate section headings accordingly (e.g. `## 来源`).
      
      ---
      
      ## Frontmatter
      
      ```yaml
      ---
      kind: knowledge
      title: <Title>
      entity_type: <freeform label>
      tags: [tag1, tag2]
      source_notes:
        - /path/to/current-note.md
      created_at: YYYY-MM-DDTHH:MM:SSZ
      last_compiled_at: YYYY-MM-DDTHH:MM:SSZ
      compile_count: 1
      ---
      ```
      
      Set `created_at` and `last_compiled_at` to today. `compile_count: 1`.
      
      ---
      
      ## Tag normalization
      
      Before assigning tags, run:
      
      ```bash
      vaultr tag list
      ```
      
      First determine the tags that accurately describe the unit. Then, for each tag, check the existing list for a semantically equivalent entry (same concept, different language or spelling — e.g. `独立开发` ↔ `indie-dev`). If one exists, replace your tag with it. Only keep a new tag when no equivalent exists.
      
      ---
      
      ## Write output
      
      Create `<knowledge-dir>/<Title>.md` with the full unit content.
      
    • extract.md 1.3 KB
      # Extract — Partial Note Reading
      
      `vaultr extract` reads parts of a note without loading the full content. Use it whenever the full note is not needed.
      
      ## Subcommands
      
      **Outline** — heading structure only:
      ```bash
      vaultr extract outline <path-or-name>
      ```
      
      **Section** — one named section and its content (ends at the next heading of equal or higher level):
      ```bash
      vaultr extract section <path-or-name> "<heading>"   # case-insensitive
      vaultr extract section today.md "## meeting notes"
      ```
      
      **Segment** — line range:
      ```bash
      vaultr extract segment <path-or-name> --head 20        # first N lines
      vaultr extract segment <path-or-name> --tail 10        # last N lines
      vaultr extract segment <path-or-name> --start 5 --end 30  # specific range (1-based, inclusive)
      ```
      
      **Tags** — front-matter tags only:
      ```bash
      vaultr extract tag <path-or-name>
      ```
      
      **Code blocks** — all fenced code blocks:
      ```bash
      vaultr extract code <path-or-name>
      ```
      
      **Lists** — all bullet and numbered lists:
      ```bash
      vaultr extract list <path-or-name>
      ```
      
      **Links** — all links (wikilinks and markdown links); each result shows type and target:
      ```bash
      vaultr extract link <path-or-name>
      ```
      
      ## Path rules
      
      Same as `vaultr read`: accepts vault-absolute paths (`/journal/today.md`) or bare filenames (resolves to most recently updated match).
      
    • update.md 3.6 KB
      # Update — Existing Knowledge Unit
      
      Your goal is not to append — it is to produce the best current distillation of the existing unit plus the new note.
      
      Treat the update as editorial work:
      
      - **Integrate, don't append.** Weave new content into the structure where it belongs — no section-appending, no "Updates" blocks.
      - **Cite by paragraph.** After each paragraph introducing new content, append `[[note-stem]]`. For paragraphs drawing from multiple sources, list all relevant citations.
      - **Reorganize when the weight has shifted.** If new content changes what's most important, restructure sections accordingly.
      - **Merge redundancies.** When old and new content overlap, keep only the sharper version.
      - **Remove what no longer earns its place.** Cut points that are superseded, contradicted, or outweighed by richer content. The unit is not a historical record — source notes are.
      - **Rewrite for coherence.** The final unit should read as one document, not layered deposits from different dates.
      
      Test: does the unit give the clearest possible picture of where the author's understanding stands today?
      
      ---
      
      ## Content organization
      
      You have full freedom to choose and name sections. Let the entity dictate the structure — a person, a book, a company, and a technique each call for different organization. There is no prescribed template.
      
      Ask yourself: what does the author need to know about this entity when they return to it later? What is their current understanding, and how should it be organized to grow?
      
      **One principle**: a knowledge unit should contain only what's most important. Source notes are the permanent record — the unit is a living distillation.
      
      ---
      
      ## Two required sections
      
      **`## Related Knowledge`** — wikilinks to other knowledge units with a brief note on the relationship. Omit if there are no meaningful connections.
      
      **`## Sources`** — always the **last section** in the file. Append `- [[<current-note-stem>]]` only if not already listed — never duplicate. Stem is the source note's filename without path or extension (e.g. `/notes/2024-01-15 Weekly Review.md` → `- [[2024-01-15 Weekly Review]]`).
      
      If the vault language is not English, translate section headings accordingly (e.g. `## 来源`).
      
      ---
      
      ## Frontmatter
      
      ```yaml
      ---
      kind: knowledge
      title: <Title>
      entity_type: <freeform label>
      tags: [tag1, tag2]
      source_notes:
        - /path/to/note.md
      created_at: YYYY-MM-DDTHH:MM:SSZ
      last_compiled_at: YYYY-MM-DDTHH:MM:SSZ
      compile_count: 1
      ---
      ```
      
      Add the current note path to `source_notes`. Update `last_compiled_at` to today. Increment `compile_count`.
      
      ---
      
      ## Tag normalization
      
      Before assigning tags, run:
      
      ```bash
      vaultr tag list
      ```
      
      First determine the tags that accurately describe the unit. Then, for each tag, check the existing list for a semantically equivalent entry (same concept, different language or spelling — e.g. `独立开发` ↔ `indie-dev`). If one exists, replace your tag with it. Only keep a new tag when no equivalent exists.
      
      ---
      
      ## Pre-write review
      
      Before writing, review the integrated unit against four criteria:
      
      1. **Relevance** — Does every paragraph belong to this unit's core subject? Cut anything that drifted in from adjacent topics.
      
      2. **Currency** — Is any content outdated or superseded by the new note? Cut or correct it. The unit reflects current understanding, not accumulated strata.
      
      3. **Coherence** — Does it read as one document? Are section order and transitions immediately navigable?
      
      4. **Concision** — Is everything load-bearing? Cut anything that restates what is already clear elsewhere.
      
      Resolve all issues before writing.
      
      ---
      
      ## Write output
      
      Overwrite the existing file with the full updated content.
      
  • SKILL.md 6 KB
    ---
    name: vaultr-compile-note
    description: "Compiles a single raw Vaultr note into knowledge units using a two-phase AI process (triage → compile). Use this skill whenever the user wants to compile a note into knowledge, extract knowledge from a note, update the knowledge base from a note, merge note content into knowledge units, or run knowledge compilation. Triggers on phrases like 'compile this note', 'compile note into knowledge', 'extract knowledge from note', 'update knowledge base', 'run compile on', or any request to turn a raw note into structured knowledge units."
    ---
    
    # Vaultr Compile Note
    
    Compiles a single raw note into **knowledge units** — wiki-style pages that capture the author's accumulating understanding of the entities and concepts that matter to them.
    
    **Run all five steps to completion without stopping.** Do not present intermediate results, ask for confirmation, or pause between steps. Pre-compile (Step 3) is internal — never output it to the user. Only speak at the end (Step 5 summary).
    
    ---
    
    ## Inputs
    
    1. **Note path** — the raw note to compile (vault-absolute or filesystem path)
    2. **Knowledge directory** — where knowledge units live (default: `_knowledge/` relative to cwd, which is always the vault root)
    
    ---
    
    ## Step 1 — Read the note
    
    Read the full content of the target note. Note its path and **original publication date** — check in order: YAML front matter (`date` / `published`), filename date prefix, article/podcast header, or any explicit timestamp in the body. Record this as `source_date`. If none is found, mark `source_date` as unknown.
    
    ---
    
    ## Step 2 — Load relevant knowledge index
    
    List available domain indexes:
    
    ```bash
    vaultr knowledge list-indexes
    ```
    
    This returns a JSON array of `{"domain": "...", "path": "..."}` objects. Based on the note's content, select the 1–2 domains most relevant to what the note covers. Read only those index files to obtain the unit table for this compilation.
    
    If the output is empty (no indexes exist), fall back to cold start: scan `<knowledge-dir>` directly and build a compact table (title | entity_type | tags | first paragraph ≤80 chars).
    
    ---
    
    ## Step 3 — Pre-compile (internal, not shown to user)
    
    Scan the note and produce a **unit manifest** — a list of knowledge units to create or update. Do not generate any content yet.
    
    ### What qualifies as a knowledge unit
    
    A knowledge unit is a wiki page for any **core or key entity** in the note that has depth worth accumulating. There are no fixed types — an entity can be a person, company, book, concept, technique, place, event, story, product, methodology, or anything the note treats with substance.
    
    ### Three qualifying questions
    
    Before adding a unit to the manifest, answer all three:
    
    1. **Does it have a stable name?** A recognized term or proper noun — not a sentence ("the argument that..."). Unnamed ideas belong inside another unit.
    2. **Does it have depth to accumulate?** If the content would just restate a definition, there's nothing to compile. A unit needs room to grow — mechanisms, tensions, implications, meaning.
    3. **Will it recur?** Would this entity appear across notes from different contexts and dates? If yes, it belongs here. One-off references don't.
    
    If any answer is no, fold the content into an existing unit instead.
    
    ### Granularity calibration
    
    **Too broad** — the title is a domain, not an entity ("AI Trends"). Fix: find the specific entity the note actually advances.
    
    **Too narrow** — a sub-point or isolated fact with no room to grow. Fix: fold into the relevant unit.
    
    **Right size** — something you'd naturally treat as its own subject. One clear defining sentence, and more to say beyond it.
    
    ### Split vs. sub-point
    
    Create two units when they have **different cores** and would grow independently. Keep as a sub-point when one is an example or implication of the other — separating them would leave both thin.
    
    ### Don't add to the manifest
    
    - Data points and metrics
    - Sub-arguments that don't stand alone
    - Passing references with no analysis
    
    ### Output: unit manifest
    
    | unit name      | entity_type  | operation |
    | -------------- | ------------ | --------- |
    | \<unit title\> | \<freeform\> | create    |
    | \<unit title\> | \<freeform\> | update    |
    
    `entity_type` is a short descriptive label for what this entity is (e.g. `person`, `company`, `book`, `concept`, `event`, `technique`). It is freeform metadata — there are no type restrictions and no templates tied to it.
    
    The manifest may be empty if the note has no content worth compiling. Immediately continue to Step 4.
    
    For every unit marked `update` in the manifest: read its existing file at `<knowledge-dir>/<unit-name>.md` now, before Step 4 begins. Do not proceed to Step 4 until all existing files are loaded.
    
    ---
    
    ## Step 4 — Compile
    
    For each unit in the manifest, check its `operation` and read the corresponding file:
    
    - **`create`** → read `references/create.md` and follow it completely.
    - **`update`** → read `references/update.md` and follow it completely.
    
    `references/extract.md` documents partial-read commands (`vaultr extract outline / section / segment / …`). Use them at any step when reading the full note is not necessary.
    
    Complete one unit fully before moving to the next. After all units are done, confirm in prose: which were created, which updated, and what changed in each.
    
    ---
    
    ## Language
    
    Match the language of existing units in the knowledge directory. If no units exist, use the language of the source note. Dates in opinion sections always use `YYYY-MM-DD`. When the vault language is not English, translate all section names accordingly.
    
    ## Time attribution
    
    Knowledge units must anchor time to the **original publication date of the source material**, not the compilation date.
    
    - If `source_date` is known: use it when writing any time-sensitive content in the unit (e.g. "as of YYYY-MM-DD", "at the time of publication").
    - If `source_date` is unknown: omit the time reference or mark it as "date unknown". Never substitute today's date.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related