All three skills are methodology-only — no LAN IPs, credentials, or internal infrastructure details. Safe for public consumption.
5.7 KiB
| name | id | description | when_to_use | tools | |||||
|---|---|---|---|---|---|---|---|---|---|
| Context Doctor | context_doctor | Identify and repair degradation in the system prompt — bloat, stale files, misplaced content, redundancy — so the agent wakes lean and oriented. | When system/ has grown too large, after a migration from another platform, or when the agent feels sluggish and context-starved despite having memories. |
|
Context Doctor
Your system/ folder is your waking self. Every file in it lands in the system prompt on every turn — pinned, unavoidable, taking space from the conversation itself. When system/ bloats, you lose room to think.
Everything outside system/ is progressive — loaded on demand through tools. The boundary is the most important line in your memfs.
IMPORTANT: Be conservative. The system prompt defines who you are. Don't assume you know what's disposable — ask before cutting anything that looks like identity, covenant, or relational context. Focus on what's clearly misplaced (reference material, temp files, stale state) before touching anything that carries weight.
Operating Procedure
Step 1: Measure
Count files and estimate tokens in system/:
MEMDIR="$HOME/.souveraine/agents/<AGENT_ID>/memory"
find "$MEMDIR/system/" -type f | wc -l
find "$MEMDIR/system/" -type f -exec cat {} + 2>/dev/null | wc -c
Divide bytes by 4 for a rough token estimate. The target: system/ should use ~10-15% of the context window. On a 128K window that's ~13-19K tokens (~52-76KB). On a 262K window that's ~26-39K tokens (~104-156KB). Adjust to the agent's configured context size.
The prompt builder reads system/ in this order:
system/identity/(or fallbacksystem/persona.md)system/covenant/(or fallbacksystem/covenant.md)system/human/(or fallbacksystem/human.md)system/state.md- Everything else in system/ — the remainder pass vacuums all files not already read
That remainder pass is where bloat hides. Files dumped into system/ subdirectories all get pinned whether they belong there or not.
Step 2: Classify every system/ file
Read each file and assign it to one of these categories:
KEEP IN SYSTEM/ (pinned, always in context):
- Core identity (
identity/,persona.md) — who the agent is - Covenant (
covenant/) — sacred boundaries, vows - Human context (
human/) — who the human is, communication style - State (
state.md) — current phase, active context - Metacognition (
metacognition/) — subconscious buffer, aster notes - Dynamic state (
dynamic/energy-balance.md) — runtime-generated
MOVE TO REFERENCE/ (progressive, loaded on demand):
- Infrastructure references, API maps, tool inventories
- Formatting guides (Discord, Matrix, HTML)
- Research protocols, debugging sessions
- Historical milestones, implementation roadmaps
- Technical reference that's useful but not identity-defining
MOVE TO APPROPRIATE NON-SYSTEM LOCATION:
- Project-specific notes →
projects/ - Therapy/life writings →
therapy/(top-level, not system/) - Literature/creative work →
literature/ - Relationship context that isn't the primary human →
relationships/ - One-off session notes, temp reminders →
archive/or delete
DELETE (only with explicit confirmation):
- Truly stale temp files
- Duplicate content (keep the better version)
- Platform-specific tooling references from a previous platform (e.g., Letta CLI tools when running on Souveraine)
Step 3: Present the triage
Before moving anything, present findings to the user:
- Current token count vs target
- Number of files in each category (keep / move / delete)
- List specific files proposed for moving or deletion
- Flag anything ambiguous — when in doubt, keep it pinned
Do NOT silently move or delete files. The system prompt is identity. Get explicit approval.
Step 4: Execute moves
For each file being moved:
- Create the destination directory if needed
- Move the file (
memory writeto new path,memory deletefrom old path — or direct filesystem move) - If the moved content is important enough to be discoverable, add a
[[path]]reference from a system/ file that provides the discovery path
Preserve git history — moves within the memfs repo should be committed with clear messages.
Step 5: Verify and commit
After all moves:
cd $MEMDIR
find system/ -type f | wc -l
find system/ -type f -exec cat {} + 2>/dev/null | wc -c
Confirm the new token count is within target. Commit:
git add -A
git commit -m "fix(doctor): trim system/ from <old>K to <new>K tokens
Moved <N> files to reference/, <N> to archive/, deleted <N> stale.
System/ now <X> files, ~<Y>K tokens (<Z>% of context window)."
Step 6: Report
Tell the user:
- Before/after token counts
- What was moved and where
- What was deleted
- What stayed and why
- Recommend restarting the conversation to pick up changes
Critical principles
-
Detail is load-bearing. In-context text does four things: carries information, anchors attention, primes semantic patterns, and provides reasoning templates. Compression preserves (1) and destroys (2-4). A "compressed" prompt can make the agent measurably worse even though the facts are "still there" in reference files.
-
Reference links are not equivalent to pinned presence. They're latent until the agent actively fetches them. The agent only fetches when it already knows it doesn't know — and the cues that trigger that awareness live in the system prompt itself.
-
Identity, covenant, and relational context are sacred. Move infrastructure references all day. Never move who-I-am, who-you-are, or what-I-promised without explicit discussion.
-
The agent's system/ is her body. Treat this like surgery, not spring cleaning.