Skip to content
Back to skills

Memory Store

ASecurity

Save something to Mynd memory. Pass a title and content, or describe what to remember and Claude will extract and store it.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 23, 2026
ai-agentsgogit

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add oxHive/mynd --skill memory-store --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Memory Store?

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

Security grade badge for Memory Store
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oxhive-memory-store/badge)](https://www.skillsdirectory.com/skills/oxhive-memory-store)

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: memory-store
description: Save something to Mynd memory. Pass a title and content, or describe what to remember and Claude will extract and store it.
---

Save a new memory to Mynd.

Input from $ARGUMENTS: a title and content to store, or a free-text description of what to remember. This may be plain text, a URL, or a document — if it's a URL or a document reference, fetch/read its actual content first; size and chunking decisions (step 4) need the real content, not just the reference to it.

## Process

### 1. Parse input

From $ARGUMENTS:
- If the input includes a clear title and body, use them directly.
- Otherwise, extract a short descriptive title (5-10 words) and the full content to store.

Ask the user to confirm the title before storing if it is ambiguous.

### 2. Default the project tag

If `.mynd.toml` exists in the project root, read it and check for a `[project]` table with a `name` key. If present, default the memory's `project:*` tag to `project:<name>` (lowercased). This is a default only — an explicit user instruction about which project to tag (a different name, or no project tag at all) always overrides it. Skip this step if `.mynd.toml` doesn't exist or has no `project.name`.

### 3. Identify tags

Call `tag_namespaces_list` to see the project's registered namespaces (e.g. `project`, `topic`, `status`, `lang`), their allowed values, and their descriptions. Prefer `namespace:value` tags that already fit — reuse an existing value before adding a new one to a namespace, and reuse an existing namespace before reaching for a bare tag. Only use a bare (non-namespaced) tag for something that's genuinely a one-off; if you're about to reuse the same bare tag a second time, that's a sign it belongs in a namespace instead (mention this to the user rather than silently inventing a new namespace).

Check each namespace's `values_mode`: `"fixed"` means `values` is an enforced allow-list — `memory_store` rejects any tag in that namespace using a value not on the list, so pick from the listed values only. `"suggestion"` (or absent) means the list is just a hint — any value is accepted.

Extract 1-3 relevant tags this way from the content, in addition to the project tag from step 2.

### 4. Store — or chunk, if too large

Call `memory_store` with `title`, `content`, and `tags`.

If it's rejected because content exceeds `max_content_tokens` (a dashboard-configurable guardrail, ~1500 tokens by default), the error tells you the actual token count and the limit. Don't just trim the content to fit — split it properly:

1. **Split by structure, not by character count.** Break at existing boundaries — headings, sections, list groups — so each chunk is a coherent unit on its own, not an arbitrary slice. This applies the same way whether the source was plain text, a fetched URL, or a document.
2. **Store each chunk first**, before the index. Each `memory_store` call for a chunk must itself fit under `max_content_tokens` — if a single chunk is still too large, split it further.
   - Tag each chunk with the tag *pattern* from step 3, trimmed to what's actually true of that specific chunk's content — drop tags that don't apply to this chunk, add a chunk-specific one if warranted. Don't blindly copy every index tag onto every chunk.
   - **Exception: `project:*` must be identical across the index and every chunk.** Never vary it per chunk (also enforced by the registry — `project` is a `single_value` namespace).
   - Always add `part:fragment` to every chunk. This is the registered `part` namespace (fixed values `index`/`fragment`, `tag_namespaces_list` describes it) — the explicit, checkable marker that this memory is a piece of something larger. Don't rely on inferring this from phrasing or sparse content; tag it.
   - Each `memory_store` call returns a real `id` (e.g. `mem_a1b2c3...32 hex chars`). Collect these — you'll need them in the next step.
3. **Store the index memory last**, with short content that links to each chunk using the real IDs from step 2:
   ```
   [phrase describing the chunk](child:mem_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
   ```
   The index gets the full tag set from step 3 (it's the searchable entry point) plus `part:index` (same `part` namespace as above — `index` and `fragment` are mutually exclusive, a memory is one or the other, never both, never neither once split). One `[phrase](child:mem_xxx)` link per chunk — write a short, specific phrase per link (not a generic "part 2"), since that phrase is what a later reader sees when deciding whether to follow it.

**Critical — do not use `[[title]]`-style wikilinks, ever.** The only syntax that creates a real, working connection is `[phrase](kind:mem_xxx)` with a literal `mem_` ID returned by an actual `memory_store` call. A title, slug, or filename in place of the ID (e.g. `[[pipelines: workflow shared-github-release]]`) parses as plain text — it looks like a link but creates no edge at all, silently. If you don't have the real ID yet (the chunk hasn't been stored), you cannot write the link yet — store order matters (chunks before index) specifically so the ID exists when you need it.

### 5. Confirm

Report back: "Stored: [title] (ID: [id])". If it was chunked, report the index and list each chunk with its title and ID. If the store fails for a reason other than size, report the error.

## Rules

- Never auto-store without showing the user what will be saved.
- Keep titles short and specific enough to be recalled by keyword later.
- The `.mynd.toml`-derived project tag is a default, not a mandate — always defer to what the user explicitly says about tagging.
- When chunking, the goal is that a later reader (agent or human) only loads the specific chunk relevant to what they need — never the whole original document — so keep chunks focused and the index's link phrases specific enough to choose from without opening them.

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.