# Knowledge Store Skill

> Knowledge Store Skill is an Agent Skill for documents published in the NPC-Worldwide/npcpy repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Skill for working with local .knowledge.yaml files via KnowledgeStore. Use this when you need to recall, search, or manage directory-local memories and knowledge links stored in plain YAML alongside the user's project files. KnowledgeStore is directory-scoped. Each directory that contains a `.knowledge.yaml` file maintains its own append-only memory graph. There is no global database — the YAML IS the source of truth. Key operations: - Load a directory's store: `npcpy.memory.knowledge_store.get_store_for_path(path)` - Append a memory: `store.append_memory(initial_memory="...", status="pending_approval", ...)` - Update a memory (approve/reject/edit): `store.update_memory(mem_id, status, final_memory)` - Search memories (keyword substring): `store.search_memories("query", limit=20)` - Get approved context for LLM prompts: `store.build_context(max_memories=10)` - Get links for a memory: `store.get_links_for_memory(mem_id)` - Create a link between memories: `store.append_link(from_mem, to_mem, relation="refines", agent="your_name")` - Aggregate across a tree: `KnowledgeStore.aggregate(root_directory, max_depth=3)` Memory statuses: - `pending_approval` — raw extraction, needs human review - `human-approved` — confirmed and available for context injection - `human-rejected` — discard, can be used as negative examples - `human-edited` — corrected version supersedes initial_memory When answering questions, prefer `build_context()` for recently approved local knowledge, and `search_memories()` for targeted recall. Always respect `human-rejected` memories — do not repeat them.

- Skill name: `knowledge_store_skill`
- Category: [Documents](https://www.openparable.com/skill/documents/1)
- Source: https://github.com/NPC-Worldwide/npcpy/blob/HEAD/skills/knowledge_store_skill/SKILL.md
- Repository: NPC-Worldwide/npcpy (1,430 GitHub stars when collected)

## SKILL.md

# knowledge_store_skill

Skill for working with local .knowledge.yaml files via KnowledgeStore. Use this when you need to recall, search, or manage directory-local memories and knowledge links stored in plain YAML alongside the user's project files.
KnowledgeStore is directory-scoped. Each directory that contains a `.knowledge.yaml` file maintains its own append-only memory graph. There is no global database — the YAML IS the source of truth.
Key operations: - Load a directory's store: `npcpy.memory.knowledge_store.get_store_for_path(path)` - Append a memory: `store.append_memory(initial_memory="...", status="pending_approval", ...)` - Update a memory (approve/reject/edit): `store.update_memory(mem_id, status, final_memory)` - Search memories (keyword substring): `store.search_memories("query", limit=20)` - Get approved context for LLM prompts: `store.build_context(max_memories=10)` - Get links for a memory: `store.get_links_for_memory(mem_id)` - Create a link between memories: `store.append_link(from_mem, to_mem, relation="refines", agent="your_name")` - Aggregate across a tree: `KnowledgeStore.aggregate(root_directory, max_depth=3)`
Memory statuses: - `pending_approval` — raw extraction, needs human review - `human-approved` — confirmed and available for context injection - `human-rejected` — discard, can be used as negative examples - `human-edited` — corrected version supersedes initial_memory
When answering questions, prefer `build_context()` for recently approved local knowledge, and `search_memories()` for targeted recall. Always respect `human-rejected` memories — do not repeat them.

## Inputs

- `name` (default: `'action'`)
- `description` (default: `'load | search | append | update | link | context | aggregate'`)
- `name` (default: `'directory_path'`)
- `description` (default: `'Absolute path of the directory containing .knowledge.yaml'`)
- `name` (default: `'query_or_memory'`)
- `description` (default: `'Search query, memory text, or JSON params depending on action'`)

## Steps

- `instruct` → [`instruct.py`](./instruct.py)

## Usage

```
/run_jinx jinx_ref=knowledge_store_skill input_values={"name": "query_or_memory", "description": "Search query, memory text, or JSON params depending on action"}
```

---

Source: https://www.openparable.com/skill/documents/knowledge-store-skill (OpenParable). Cite the canonical URL above.
