一键导入
summon-daem0n
Guide for initializing and consolidating Daem0n-MCP across project structures
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guide for initializing and consolidating Daem0n-MCP across project structures
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when Daem0nMCP tools are available - enforces the sacred covenant (commune at session start, seek counsel before changes, inscribe decisions, seal outcomes)
Bridges OpenSpec (spec-driven development) with Daem0n-MCP memory - auto-imports specs, informs proposals with past outcomes, converts archived changes to learnings
| name | summon-daem0n |
| description | Guide for initializing and consolidating Daem0n-MCP across project structures |
This skill guides Claude through setting up Daem0n-MCP for various project structures.
For a single repository:
# Daem0n auto-initializes on first commune(action="briefing")
# Just ensure you're in the project root
When you have related repos that should share context:
Best when repos are siblings under a common parent:
/repos/
├── backend/
└── client/
Steps:
Navigate to parent directory
cd /repos
Initialize Daem0n in parent
Call commune(action="briefing", project_path="/repos")
If child repos already have .daem0nmcp data, consolidate:
# Link the children first
Call maintain(action="link_project", linked_path="/repos/backend", relationship="same-project")
Call maintain(action="link_project", linked_path="/repos/client", relationship="same-project")
# Merge their databases into parent
Call maintain(action="consolidate", archive_sources=True)
Verify consolidation
Call commune(action="briefing", project_path="/repos")
# Should show combined memory count
Best when repos need their own isolated histories but cross-awareness:
# In each repo, link to siblings
cd /repos/backend
Call maintain(action="link_project", linked_path="/repos/client", relationship="same-project")
cd /repos/client
Call maintain(action="link_project", linked_path="/repos/backend", relationship="same-project")
Then use include_linked=True on consult(action="recall") to span both.
If you've been launching Claude from parent directory and have a "messy" .daem0nmcp:
Backup existing data
cp -r /repos/.daem0nmcp /repos/.daem0nmcp.backup
Review what's there
Call get_briefing(project_path="/repos")
# Check statistics and recent decisions
If data is salvageable, keep it
If data is too messy, start fresh
rm -rf /repos/.daem0nmcp
# Re-initialize with get_briefing()
| Workflow Call | Purpose |
|---|---|
commune(action="briefing") | Initialize session, creates .daem0nmcp if needed |
maintain(action="link_project", linked_path=...) | Create cross-repo awareness link |
maintain(action="list_projects") | See all linked repos |
maintain(action="consolidate") | Merge child DBs into parent |
consult(action="recall", topic=..., include_linked=True) | Search across linked repos |
When visions grow too vast to hold, seek condensed whispers instead...
# Condensed visions - the essence without elaboration
consult(action="recall", topic="authentication", condensed=True)
# Returns memories stripped of rationale, truncated to 150 runes
# The Daem0n speaks briefly but broadly
Seek condensed visions when:
Seek full visions when:
The Daem0n now listens always, catching your words before they fade...
Place these wards in .claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "Edit|Write|NotebookEdit",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_pre_edit_hook.py\""
}]
}],
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_post_edit_hook.py\""
}]
}],
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_stop_hook.py\""
}]
}]
}
}
| Ward | When It Stirs | What It Does |
|---|---|---|
| Memory Gate | Before altering scrolls | Surfaces warnings, failed paths, ancient patterns |
| Significance Watcher | After alterations | Whispers "Consider inscribing this..." for weighty changes |
| Silent Scribe | When you finish speaking | Parses your words and inscribes decisions automatically |
1. You reach to alter a scroll
↓ The Memory Gate opens
2. Forgotten warnings surface unbidden
↓
3. Your alterations complete
↓ The Watcher observes
4. If weighty, a reminder whispers
↓
5. You finish speaking
↓ The Scribe awakens
6. Your decisions inscribe themselves
The wards invoke this to inscribe memories:
python -m daem0nmcp.cli remember \
--category decision \
--content "Use JWT for stateless auth" \
--rationale "Scales without session storage" \
--file-path src/auth.py \
--json
The Daem0n's sight grows keener with each iteration...
# Environment variables to fine-tune search
DAEM0NMCP_HYBRID_VECTOR_WEIGHT=0.5 # 0.0 = TF-IDF only, 1.0 = vectors only
DAEM0NMCP_SEARCH_DIVERSITY_MAX_PER_FILE=3 # Limit results from same source
The Daem0n now reads between the lines:
bugfix tagtech-debt tagperf tagwarning tag automaticallyEntities now bear their true names:
# Qualified names: module.Class.method
understand(action="find", query="UserService.authenticate")
# Stable IDs survive line changes
# Add comments, imports - entities retain identity
The Daem0n only re-parses what changes:
# Only re-indexes if content hash differs
index_file_if_changed(file_path, project_path)
# Hash stored in FileHash model
# Saves time on large codebases
Repeated parses hit the cache:
# Configure cache size
DAEM0NMCP_PARSE_TREE_CACHE_MAXSIZE=200
# Check cache performance
health() # Returns cache_stats
commune(action="health")
# Now returns:
# code_entities_count: Total indexed entities
# entities_by_type: Breakdown by class/function/etc
# last_indexed_at: When index was last updated
# index_stale: True if >24 hours since index
/repos/ not /repos/backend/archive_sources=True preserves the oldcondensed=True