<!-- BSV — Brief Skill View | поиск: BSV
Скил : raw-to-wiki
TL;DR : Заметки из raw/ → структурированная wiki автоматически
Вызов : Автоматически при Stop; `raw note:`
НЕ для : Уже структурированные документы
-->
Installs into .claude/skills of the current project.
Are you the author of Raw To Wiki?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sergeeey-raw-to-wiki)
<!-- BSV — Brief Skill View | поиск: BSV
Скил : raw-to-wiki
TL;DR : Заметки из raw/ → структурированная wiki автоматически
Вызов : Автоматически при Stop; `raw note:`
НЕ для : Уже структурированные документы
-->
---
name: raw-to-wiki
description: >
USE when capturing learnings, retrospectives, or quick notes for persistence.
ALWAYS drop .md files into ~/.claude/memory/raw/ — auto-converts to wiki entries.
Triggers: raw note, capture, inbox, quick note, wiki, raw to wiki.
[STATUS: review] [CONFIDENCE: high] [REVIEWED: 2026-04-09]
effort: minimal
tokens: ~200
---
# Raw → Wiki Pipeline
## Concept
**Raw folder** = capture inbox. Low friction. Dump thoughts, links, snippets — no structure required.
**Wiki folder** = structured knowledge base. Auto-generated from raw notes at session end.
**session_save.py** = conveyor belt. Runs automatically on `Stop` hook.
## How to Use
### Capture (during session)
Create any `.md` file in `~/.claude/memory/raw/`:
```bash
# Quick note
echo "# Idea: add retry logic to MCP calls\n\nSee circuit breaker pattern. #architecture #mcp" \
> ~/.claude/memory/raw/mcp-retry-idea.md
# Or ask Claude to write it
# "save this to raw notes: ..."
```
Tags `#tag` in the file become wiki metadata. Tag `#raw` is stripped automatically.
### Processing (automatic)
At session end (`Stop` event), `session_save.py` runs:
1. Finds all `.md` files in `~/.claude/memory/raw/`
2. Converts each → structured wiki entry in `~/.claude/memory/wiki/`
3. Moves original to `~/.claude/memory/raw/processed/` (audit trail)
4. Prints: `[session-save] Raw→Wiki: N note(s) processed`
### Wiki entry format
```markdown
# Idea: add retry logic to MCP calls
**Date:** 2026-04-09
**Source:** [[raw/mcp-retry-idea.md]]
**Tags:** architecture, mcp
**Related patterns:** [[patterns.md#circuit-breaker-half-open]] (if applicable)
---
See circuit breaker pattern. #architecture #mcp
```
### Backlinks — bidirectional
Wiki entries link back to their `raw/` source AND forward to any related
`patterns.md` entries. This is Zettelkasten principle: every link is
two-way so you can navigate `raw/` → `wiki/` → `patterns.md` and back.
When wiki entry is created, session_save.py:
1. Writes `**Source:** [[raw/<filename>]]` in the wiki entry
2. Scans the wiki entry text for keywords matching existing patterns.md
entry slugs — adds `**Related patterns:** [[patterns.md#<slug>]]`
3. If error-to-lesson skill later promotes this wiki entry into a pattern,
the pattern carries `*Сырой источник: [[raw/<file>]]*` backlink
WHY: without backlinks, after 3 months it's impossible to answer "where
did this rule come from?". One click to the original lesson = preserved
context.
## Directory Structure
```
~/.claude/memory/
├── raw/ ← drop notes here
│ ├── my-note.md
│ └── processed/ ← auto-moved after processing
│ └── my-note.md
└── wiki/ ← structured output
└── 2026-04-09_my_note.md
```
## Manual Trigger
To process raw notes immediately (without waiting for session end):
```python
cd <project>
python -c "
from pathlib import Path
from hooks.session_save import process_raw_to_wiki
n = process_raw_to_wiki(
Path.home() / '.claude/memory/raw',
Path.home() / '.claude/memory/wiki'
)
print(f'{n} notes processed')
"
```
## Gotchas
- Files without `#raw` tag are still processed — location in `raw/` is enough signal
- Existing wiki file on same day → gets `_2`, `_3` suffix (no overwrites)
- Processed originals kept in `raw/processed/` forever — delete manually if needed
- Hook runs fail-open: one bad file doesn't stop others