Claude Skill

cortex-evolve

Save knowledge to the cortex vault. Use when the user says "存到 cortex", "記一下", "save to cortex", "記到筆記", "cortex evolve", or when the session-suggest hook recommends saving content. Handles Notes and Projects.

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

Full trust report

Download XBlueSky-cortexes-skills_cortex-evolve-ff2eaeb.zip · 1 KB
Part of xbluesky/cortexes — 6 skills

Install

skills CLI npx skills add https://github.com/XBlueSky/cortexes/tree/plugin/skills/cortex-evolve
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install xbluesky-cortexes@llmmart
Git git clone https://github.com/XBlueSky/cortexes.git

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

Skill manifest

Cortex Evolve — Save to Vault

Save content to the cortex Obsidian vault.

Resolve Vault Path

Read ~/.cortex/config.json to get vault_path. If the file doesn't exist, tell the user to run /cortexes:genesis first. All file paths below are relative to the vault root.

Determine Content Type

Ask the user if unclear. Use these heuristics:

Signal Type Target
Technical knowledge, how-to, concept explanation Notes Notes/<category>/<title>.md
Related to a specific repo's design, decision, or progress Projects Projects/<repo-name>/<title>.md

Writing to Notes

  1. Determine category from content (C++, Linux, Nginx, Web, or create new)
  2. Create file at Notes/<category>/<title>.md
  3. Use this template:
---
title: <title>
tags:
  - <relevant-tags>
created: <YYYY-MM-DD>
source: cortex
---

# <title>

<content>

<optional: related wikilinks like [[nginx-cert-renew]] or [[other-note]]>
  1. Use Obsidian wikilinks [[note-name]] for vault-internal references
  2. Use standard markdown links [text](url) for external URLs only

Writing to Projects

  1. Determine repo name (from current session context or ask user)
  2. If Projects/<repo-name>/_index.md doesn't exist, create it:
---
title: <repo-name>
repo: <git-remote-url>
tags:
  - project
---

# <repo-name>

<brief description>
  1. Create topic file at Projects/<repo-name>/<topic>.md

Update _index.md

After writing the file:

  1. Read <vault_path>/_index.md

  2. Append a row under the matching ### sub-section, creating the sub-section (with its table header) if it does not exist yet:

    • Notes → ### <topic> under ## Notes: | [[title]] | tags | one-line summary |
    • Projects → ### <repo-name> under ## Projects: | [[topic-title]] | tags | summary |

    Rows are per-page, not per-repo: a new repo means a new ### sub-section, not a single row standing for the whole repo.

  3. Bump the updated date in frontmatter. There is no entries: count to maintain — the field was removed by design (see /cortexes:genesis).

Append Log Entry

Compose this entry with all placeholders substituted (today's date/time in YYYY-MM-DD HH:MM format, the vault-relative path of the saved file, the repo name or (none)):

## [YYYY-MM-DD HH:MM] evolve | user-initiated
- outcome: new
- target: <vault-relative path of saved file>
- repo: <repo name or "(none)">

Append to <vault>/log.md using either the Edit tool (preferred — preserves file integrity) or bash:

printf '\n%s\n' "$ENTRY" >> "<vault>/log.md"

Where $ENTRY is the fully-substituted markdown entry.

Preserve exactly one blank line between entries (achieved by the leading \n in the printf above, or by ensuring the Edit tool's appended content starts with a blank line).

The dedup_top1 field is omitted for evolve entries (evolve does not perform a dedup check in Phase 1; the user explicitly chose to save).

Commit

In the vault repo:

git add <file> _index.md log.md
git commit -m "cortex: <type> <brief>"

If git.commit_trailer in config is a non-empty string, pass it as a second -m so it becomes the last line of the message body: git commit -m "cortex: <type> <brief>" -m "<commit_trailer>".

If auto_push is true in config: git push

Confirm to the user what was saved and where.

Update Vector Store

After committing the new file to the vault:

  1. Run: cortex-vec upsert <relative-path-from-vault>
Files (cortexes)
  • SKILL.md 3.7 KB
    ---
    name: cortex-evolve
    description: >
      Save knowledge to the cortex vault. Use when the user says "存到 cortex",
      "記一下", "save to cortex", "記到筆記", "cortex evolve", or when the
      session-suggest hook recommends saving content. Handles Notes and Projects.
    ---
    
    # Cortex Evolve — Save to Vault
    
    Save content to the cortex Obsidian vault.
    
    ## Resolve Vault Path
    
    Read `~/.cortex/config.json` to get `vault_path`.
    If the file doesn't exist, tell the user to run `/cortexes:genesis` first.
    All file paths below are relative to the vault root.
    
    ## Determine Content Type
    
    Ask the user if unclear. Use these heuristics:
    
    | Signal | Type | Target |
    |--------|------|--------|
    | Technical knowledge, how-to, concept explanation | Notes | `Notes/<category>/<title>.md` |
    | Related to a specific repo's design, decision, or progress | Projects | `Projects/<repo-name>/<title>.md` |
    
    ## Writing to Notes
    
    1. Determine category from content (C++, Linux, Nginx, Web, or create new)
    2. Create file at `Notes/<category>/<title>.md`
    3. Use this template:
    
    ```markdown
    ---
    title: <title>
    tags:
      - <relevant-tags>
    created: <YYYY-MM-DD>
    source: cortex
    ---
    
    # <title>
    
    <content>
    
    <optional: related wikilinks like [[nginx-cert-renew]] or [[other-note]]>
    ```
    
    4. Use Obsidian wikilinks `[[note-name]]` for vault-internal references
    5. Use standard markdown links `[text](url)` for external URLs only
    
    ## Writing to Projects
    
    1. Determine repo name (from current session context or ask user)
    2. If `Projects/<repo-name>/_index.md` doesn't exist, create it:
    
    ```markdown
    ---
    title: <repo-name>
    repo: <git-remote-url>
    tags:
      - project
    ---
    
    # <repo-name>
    
    <brief description>
    ```
    
    3. Create topic file at `Projects/<repo-name>/<topic>.md`
    
    ## Update _index.md
    
    After writing the file:
    
    1. Read `<vault_path>/_index.md`
    2. Append a row under the matching `###` sub-section, creating the sub-section
       (with its table header) if it does not exist yet:
       - Notes → `### <topic>` under `## Notes`: `| [[title]] | tags | one-line summary |`
       - Projects → `### <repo-name>` under `## Projects`: `| [[topic-title]] | tags | summary |`
    
       Rows are per-page, not per-repo: a new repo means a new `###` sub-section,
       not a single row standing for the whole repo.
    3. Bump the `updated` date in frontmatter. There is no `entries:` count to
       maintain — the field was removed by design (see `/cortexes:genesis`).
    
    ## Append Log Entry
    
    Compose this entry with all placeholders substituted (today's date/time in `YYYY-MM-DD HH:MM` format, the vault-relative path of the saved file, the repo name or `(none)`):
    
    ````markdown
    ## [YYYY-MM-DD HH:MM] evolve | user-initiated
    - outcome: new
    - target: <vault-relative path of saved file>
    - repo: <repo name or "(none)">
    ````
    
    Append to `<vault>/log.md` using either the Edit tool (preferred — preserves file integrity) or bash:
    
    ````bash
    printf '\n%s\n' "$ENTRY" >> "<vault>/log.md"
    ````
    
    Where `$ENTRY` is the fully-substituted markdown entry.
    
    Preserve exactly one blank line between entries (achieved by the leading `\n` in the printf above, or by ensuring the Edit tool's appended content starts with a blank line).
    
    The `dedup_top1` field is omitted for evolve entries (evolve does not perform a dedup check in Phase 1; the user explicitly chose to save).
    
    ## Commit
    
    In the vault repo:
    ```
    git add <file> _index.md log.md
    git commit -m "cortex: <type> <brief>"
    ```
    
    If `git.commit_trailer` in config is a non-empty string, pass it as a second
    `-m` so it becomes the last line of the message body:
    `git commit -m "cortex: <type> <brief>" -m "<commit_trailer>"`.
    
    If `auto_push` is true in config: `git push`
    
    Confirm to the user what was saved and where.
    
    ## Update Vector Store
    
    After committing the new file to the vault:
    
    1. Run: `cortex-vec upsert <relative-path-from-vault>`
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related