Skip to content
Back to skills

Cortex Evolve

ASecurity

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.

  • 21 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added August 30, 2026
ai-agentsgoc++bashgit

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add XBlueSky/cortexes --skill cortex-evolve --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cortex Evolve?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cortex Evolve
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/xbluesky-cortex-evolve/badge)](https://www.skillsdirectory.com/skills/xbluesky-cortex-evolve)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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>`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.