plugins/agent-memory/skills/rlm-init/SKILL.md
Interactive RLM cache initialization. Use when: setting up a new project's semantic cache for the first time, or adding a new cache profile. Walks the user through folder selection, extension config, manifest creation, and first distillation pass.
npx skillsauth add richfrem/agent-plugins-skills rlm-initInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill requires Python 3.8+ and standard library only. No external packages needed.
To install this skill's dependencies:
pip-compile ./requirements.in
pip install -r ./requirements.txt
See ./requirements.txt for the dependency lockfile (currently empty — standard library only).
Initialize a new RLM semantic cache for any project. This is the first-run workflow — run it once per cache, then use rlm-distill-agent for ongoing updates.
Real-world examples of each config file are in references/examples/:
| File | Purpose |
|:-----|:--------|
| manifest-index.json | Profile registry -- defines named caches and their manifest/cache paths |
| rlm_manifest.json | Project docs manifest -- what folders/globs to include and exclude |
| distiller_manifest.json | Tools manifest -- scoped to scripts and plugins only |
Ask this before anything else.
First, check what other plugins are installed:
ls .agents/skills/vector-db-init/ 2>/dev/null && echo "vector-db: INSTALLED" || echo "vector-db: NOT FOUND"
ls .agents/skills/obsidian-wiki-builder/ 2>/dev/null && echo "obsidian-wiki-engine: INSTALLED" || echo "obsidian-wiki-engine: NOT FOUND"
Then ask:
RLM Factory works standalone with zero external dependencies. You can also combine it with
other plugins for a more powerful retrieval stack. What setup would you like?
A) RLM only (standalone)
- O(1) keyword search across dense file summaries
- No other plugins needed — works right now
B) RLM + vector-db Phase 2 [requires: vector-db in .agents/]
- RLM keyword pre-filter → vector semantic search
- Reduces noise, improves precision for large corpora
C) RLM as wiki distiller [requires: obsidian-wiki-engine in .agents/]
- Generates RLM summary layers per wiki concept node
- /wiki-query uses RLM Phase 1 before grep
D) Full Super-RAG [requires: vector-db + obsidian-wiki-engine]
- All three: RLM keyword → vector semantic → wiki concept nodes
Enter A, B, C, or D (default: A):
If required plugins are NOT installed for the chosen mode:
[plugin-name] is not installed in .agents/.
To install it:
# Recommended (uvx — works on Mac, Linux, Windows)
uvx --from git+https://github.com/richfrem/agent-plugins-skills plugin-add richfrem/agent-plugins-skills
# npx (Mac/Linux)
npx skills add richfrem/agent-plugins-skills
# See full install guide
cat INSTALL.md
After installing, re-run /rlm-factory:init and choose your desired mode.
Continue with Mode A (standalone) for now? (y) or abort and install first? (n)
For Mode D, also provision wiki and tools profiles automatically (see Step 2).
Before creating anything, gather requirements:
docs/, src/, plugins/).md, .py, .ts).agent/learning/ or config/rlm/plugins, project, tools)rlm_profiles.jsonEach cache is defined as a profile in rlm_profiles.json. This file is located at RLM_PROFILES_PATH or defaults to .agent/learning/rlm_profiles.json. If it doesn't exist, create it:
mkdir -p <profiles_dir>
Create or append to <profiles_dir>/rlm_profiles.json:
{
"version": 1,
"default_profile": "<NAME>",
"profiles": {
"<NAME>": {
"description": "<What this cache contains>",
"manifest": "<profiles_dir>/<name>_manifest.json",
"cache": "<profiles_dir>/rlm_<name>_cache.json",
"extensions": [
".md",
".py",
".ts"
]
}
}
}
| Key | Purpose |
|----------|---------|
| description | Human-readable explanation of the profile's purpose |
| manifest | Path to the manifest JSON (what folders/files to index) |
| cache | Path to the cache directory location |
| extensions | List of string file extensions to include |
The manifest defines which folders, files, and globs to index. Extensions come from the profile config.
Create <manifest_path>:
{
"description": "<What this cache contains>",
"include": [
"<folder_or_glob_1>",
"<folder_or_glob_2>"
],
"exclude": [
".git/",
"node_modules/",
".venv/",
"__pycache__/"
],
"recursive": true
}
Make sure that the paths configured in rlm_profiles.json are properly created and empty arrays match where required. No .json databases are needed because the cache persists directly to .md files in a directory.
Scan the manifest against the cache to find uncached files:
python ./scripts/inventory.py --profile <NAME>
Report: "N files in manifest, M already cached, K remaining."
For each uncached file:
---
hash: "agent_distilled_<YYYY_MM_DD>"
summarized_at: "<ISO timestamp>"
---
# Summary
<your summary>
"✅ Cached: <path>"Run audit again:
python ./scripts/inventory.py --profile <NAME>
Target: 100% coverage. If gaps remain, repeat Step 6 for missing files.
Every summary should answer: "Why does this file exist and what does it do?"
| ❌ Bad | ✅ Good | |--------|---------| | "This is a README file" | "Plugin providing 5 composable agent loop patterns for learning, red team review, triple-loop delegation, and parallel swarm execution" | | "Contains a SKILL definition" | "Orchestrator skill that routes tasks to the correct loop pattern using a 4-question decision tree, manages shared closure sequence" |
rlm-distill-agent for ongoing cache updatesrlm-curator for querying, auditing, and cleanup.gitignored if they contain project-specific summariestools
Ingests repository files into the ChromaDB vector store. Builds or updates the vector index from a manifest or directory scan using ingest.py. Use when new files need to be indexed or the vector store is out of date. <example> user: "Index these new plugin files into the vector database" assistant: "I'll use vector-db-ingest to add them to the vector store." </example> <example> user: "The vector store is missing recent files -- update it" assistant: "I'll use vector-db-ingest to re-index the changes." </example>
data-ai
Removes stale and orphaned chunks from the ChromaDB vector store for files that have been deleted or renamed. Use after files are removed or moved to keep the vector index in sync with the filesystem. <example> user: "Clean up the vector store after I deleted some files" assistant: "I'll use vector-db-cleanup to remove orphaned chunks." </example> <example> user: "The vector database has chunks for files that no longer exist" assistant: "I'll run vector-db-cleanup to prune them." </example>
testing
Audit Vector DB coverage -- compares the live filesystem manifest against the ChromaDB index to identify coverage gaps.
development
3-Phase Knowledge Search strategy for the RLM Factory ecosystem. Auto-invoked when tasks involve finding code, documentation, or architecture context in the repository. Enforces the optimal search order: RLM Summary Scan (O(1)) -> Vector DB Semantic Search -> Grep/Exact Match. Never skip phases.