Cortex Evolve — Save to Vault

SkillDocs & knowledge

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.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Cortex Evolve — Save to Vault skill

What this skill tells your AI

The instructions your AI receives, as published by xbluesky/cortexes in skills/cortex-evolve/SKILL.md and read by ahel’s review.

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:

SignalTypeTarget
Technical knowledge, how-to, concept explanationNotesNotes/<category>/<title>.md
Related to a specific repo's design, decision, or progressProjectsProjects/<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 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>

Signals

GitHub stars
21
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
cortex-evolve
Source
github.com/xbluesky/cortexes