Cortex Evolve — Save to Vault
SkillDocs & knowledgeSave 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.
No other account needed.
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:
| 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
- Determine category from content (C++, Linux, Nginx, Web, or create new)
- Create file at
Notes/<category>/<title>.md - 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]]>
- Use Obsidian wikilinks
[[note-name]]for vault-internal references - Use standard markdown links
[text](url)for external URLs only
Writing to Projects
- Determine repo name (from current session context or ask user)
- If
Projects/<repo-name>/_index.mddoesn't exist, create it:
---
title: <repo-name>
repo: <git-remote-url>
tags:
- project
---
# <repo-name>
<brief description>
- Create topic file at
Projects/<repo-name>/<topic>.md
Update _index.md
After writing the file:
-
Read
<vault_path>/_index.md -
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. - Notes →
-
Bump the
updateddate in frontmatter. There is noentries: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:
- 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