
Migrate
FreeStreamline your LifeOS content migration process.
Free Β· Opens the source repo
What Migrate does
Migrate is a tool designed to facilitate the intake and classification of external content into the LifeOS framework. It allows users to import various types of content, including markdown and text files, as well as data from other LifeOS installations and popular note-taking applications like Obsidian, Notion, and Apple Notes. The tool processes this content by breaking it down into manageable chunks and classifying each against the LifeOS taxonomy, ensuring that everything is organized correctly and attributed properly. This is particularly beneficial for users transitioning to LifeOS who have accumulated extensive notes and documents over the years, which can be a daunting task to sort manually.
The classification process is driven by a confidence scoring system. High-confidence chunks are automatically approved for migration, while those with medium confidence require user confirmation, and low-confidence chunks are flagged for a more detailed review. This structured approach not only saves time but also minimizes the risk of misclassification, allowing users to focus on the content rather than the tedious sorting process.
Migrate is particularly useful in scenarios where users need to consolidate their notes and rules from various sources into a cohesive system. By automating the classification and approval process, it alleviates the burden of manual entry and organization, making it easier for users to get their old content into LifeOS and utilize it effectively. Whether you are bringing in old notes, importing rules from CLAUDE.md or Cursor, or bulk importing from other applications, Migrate streamlines the workflow significantly.
In summary, Migrate is an essential tool for anyone looking to transition their existing notes and content into the LifeOS environment efficiently. It offers a clear and structured method for classification and approval, ensuring that all content is accurately categorized and attributed, which is vital for maintaining the integrity of the LifeOS system.
When to use it
Use Migrate when you have multiple sources of content to import into LifeOS and want to automate the classification process.
When not to use it
Avoid using Migrate for single-file edits or when conducting conversational interviews, as it is not designed for those tasks.
What you can build with it
Bulk Import from Notion
Easily import your entire Notion workspace into LifeOS, classifying each note into the appropriate sections.
Transitioning from Obsidian
Migrate your Obsidian vault into LifeOS, ensuring all your knowledge is properly categorized and attributed.
Integrating CLAUDE.md Rules
Import operational rules from CLAUDE.md into LifeOS, streamlining your AI collaboration setup.
How to install Migrate
View source1. Install with the skills CLI
npx skills add danielmiessler/lifeos/Migrate --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by danielmiesslerMigrate β external-content intake and classification
π¨ MANDATORY: Voice Notification
curl -s -X POST http://localhost:31337/notify \
-H "Content-Type: application/json" \
-d '{"message": "Starting the migration. Scanning source and classifying chunks."}' \
> /dev/null 2>&1 &
What It Does
Migrate intakes external content, classifies each chunk against the LifeOS taxonomy, and commits it to the right destination with provenance. Sources include .md/.txt files, stdin, other LifeOS installs, agent-harness rule files (CLAUDE.md, Cursor rules, OpenAI Custom Instructions), and Obsidian/Notion/Apple Notes exports. Classification confidence drives the flow: high-confidence chunks auto-approve, medium ones ask for confirmation, low ones get a walk-through.
The Problem
When you adopt LifeOS you usually arrive with years of accumulated notes β a CLAUDE.md, a vault of markdown, journal dumps, rules from another tool β and none of it maps cleanly onto LifeOS's structure. Sorting hundreds of chunks into TELOS sections, knowledge notes, and operational rules by hand is the kind of tedious work that never gets done, so the old material just sits there unused. Migrate does the sorting: it reads the content you already have, proposes a destination for every chunk with a confidence score, and lets you approve in bulk or review the uncertain ones, attaching provenance so nothing lands in TELOS without attribution.
How It Works
Migrates content into the LifeOS structure from external sources. Unlike /interview (which asks the user questions to fill gaps), /migrate already has the content β it just needs to classify each chunk and route it to the right LifeOS destination. MigrateScan classifies into a routing table; MigrateApprove commits per the user's chosen path.
Sources supported in V1
- Files:
.md,.markdown,.txt(single file or directory recursion) - Stdin: piped content or pasted directly
- Other LifeOS installs: point at their
USER/TELOS/orMEMORY/KNOWLEDGE/directories - Agent-harness rule files:
CLAUDE.md,.cursorrules, OpenAI Custom Instructions export - Exports: Obsidian vaults (markdown), Notion exports (markdown), Apple Notes exports (.txt), raw journal dumps
What it classifies chunks into
| Category | Destinations |
|---|---|
| Foundational TELOS | MISSION, GOALS, PROBLEMS, STRATEGIES, CHALLENGES, BELIEFS, WISDOM, MODELS, FRAMES, NARRATIVES, SPARKS |
| IDEAL_STATE dimensions | HEALTH, MONEY, FREEDOM, RELATIONSHIPS, CREATIVE, RHYTHMS |
| Preference files | BOOKS, AUTHORS, MOVIES, BANDS, RESTAURANTS, FOOD_PREFERENCES, LEARNING, MEETUPS, CIVIC |
| Identity | USER/PRINCIPAL/PRINCIPAL_IDENTITY.md |
| Knowledge | MEMORY/KNOWLEDGE/{Ideas,People,Companies,Research} |
| AI collaboration rules | Walk-through to a constitutional surface β CLAUDE.md operational rules, a hook, settings.json, or the relevant skill's Gotchas ("always do X" / "never Y" patterns are system patches, never harness memory/feedback_*.md memos) |
| Unclear | Flagged for the user's manual routing |
Workflow Routing
No Workflows/ directory β the single migration procedure runs inline through Phases 1β6 below, backed by two tools in LIFEOS/TOOLS/.
| Trigger | Workflow | File |
|---|---|---|
| /migrate, migrate content, bulk import, import from other LifeOS, import CLAUDE.md / Cursor rules / Obsidian / Notion / Apple Notes export, bring in old notes | Inline Phases 1β6 (identify β scan β route β approve β UNCLEAR β summary) | LIFEOS/TOOLS/MigrateScan.ts + LIFEOS/TOOLS/MigrateApprove.ts |
Workflow
Phase 1 β Identify the source
Ask the user what he wants to migrate:
- "Paste the content here and I'll work from stdin"
- "Point me at a file path"
- "Point me at a directory and I'll scan everything inside"
- "I have a Cursor rules file at ~/Projects/X/.cursorrules"
- "My old LifeOS install has TELOS at ~/old-claude/TELOS/"
Collect the source path. If content is pasted, write it to a temp file first.
Phase 2 β Scan
Run the scanner:
bun ~/.claude/LIFEOS/TOOLS/MigrateScan.ts --source <path>
# or
echo "$CONTENT" | bun ~/.claude/LIFEOS/TOOLS/MigrateScan.ts --stdin
Scanner output includes:
- Total chunks found
- Proposed routing table (how many chunks per target)
- Average classification confidence
- Count of UNCLEAR chunks
- Count of low-confidence (<40%) chunks
Phase 3 β Present routing summary
Show the user the routing proposal in a scannable format:
Found 47 chunks from 3 files. Proposed routing:
π TELOS/GOALS.md 12 chunks (78% avg confidence)
π TELOS/WISDOM.md 8 chunks (65% avg confidence)
π TELOS/BELIEFS.md 6 chunks (71% avg confidence)
π MEMORY/KNOWLEDGE/Ideas 15 chunks (52% avg confidence)
π§ AI collaboration rules 4 chunks (walk-through: CLAUDE.md / hook / skill)
β UNCLEAR 2 chunks (needs your call)
Options:
- Approve everything trusted (confidence β₯60%)?
- Walk through the low-confidence and UNCLEAR chunks one by one?
- Review specific categories?
- Review everything?
Phase 4 β Approval loop
Based on the user's preference:
Fast path (he says "approve all trusted"):
bun ~/.claude/LIFEOS/TOOLS/MigrateApprove.ts --approve-all
Commits everything non-UNCLEAR. Then walk through UNCLEAR chunks conversationally.
Category path (he says "approve goals and wisdom, skip knowledge"):
bun ~/.claude/LIFEOS/TOOLS/MigrateApprove.ts --approve-target TELOS/GOALS.md
bun ~/.claude/LIFEOS/TOOLS/MigrateApprove.ts --approve-target TELOS/WISDOM.md
Walk-through path (he wants careful review):
bun ~/.claude/LIFEOS/TOOLS/MigrateApprove.ts --review
Show each pending chunk. For each:
- Show preview + proposed target + confidence + alternatives
- Ask: approve / modify target / reject
- Commit decision
Phase 5 β Handle UNCLEAR chunks
UNCLEAR chunks are ones where no classification rule matched strongly. For each:
- Display full content (not just preview)
- Ask the user: "This one's unclear β what is it? Could be X, Y, Z, or maybe Knowledge/Ideas as a catch-all?"
- the user chooses β commit via
--modify <id> --target <chosen>
Phase 6 β Completion summary
After approval pass:
- Report total chunks committed, per-target count
- Flag any remaining UNCLEAR
- Recommend next step: run
/interviewto interview around anything the migration left sparse
Rules
- Every commit carries provenance. The committed content includes an HTML comment noting source file + section + timestamp. Nothing gets dropped into TELOS without attribution.
- Never bulk-approve UNCLEAR. Those require the user's explicit routing.
- Confidence thresholds: β₯70% = trusted (auto-approve eligible). 40-70% = medium (show for confirmation). <40% = low (walk-through required).
- Ask before touching identity. PRINCIPAL_IDENTITY.md commits always prompt β that file is load-bearing.
- Don't duplicate. If the same content already exists in the target (substring match), flag it and ask before appending.
- Respect private paths. Never migrate content into IDEAL_STATE/ without the user's per-dimension call (Decision #3: IDEAL_STATE is fully private and curated).
- Rules never go to harness memory. AI collaboration rule chunks are always walked through one by one and routed to a constitutional surface: an operational rule in CLAUDE.md, a hook, a
settings.jsonpermission, or the relevant skill's Gotchas. Writing them to the harnessmemory/feedback_*.mddirectory is forbidden β every feedback memo is a missed system patch (see the system prompt's "Override of harness auto-memory"). - Knowledge gets new files too. Each
MEMORY/KNOWLEDGE/*chunk becomes a new typed note with source metadata.
Examples
User: /migrate ~/old-claude/TELOS/
the DA scans the old TELOS directory, classifies every chunk, presents the routing summary, offers fast-path vs. walk-through approval.
User: /migrate (then pastes CLAUDE.md content)
the DA reads from stdin, classifies most chunks as AI collaboration rules (walked through to CLAUDE.md / hooks / skill Gotchas) plus maybe PRINCIPAL_IDENTITY (if identity lines are mixed in), walks through approval.
User: "migrate my Cursor rules at ~/.cursor/rules"
the DA scans the rules dir, surfaces likely rule classifications, walks each through to its constitutional destination with extra care (Cursor rules often have tool-specific stuff that doesn't translate to LifeOS).
User: "import the stuff I dumped in /tmp/journal.md"
the DA scans the journal, expects a lot of UNCLEAR + WISDOM, walks through each section.
Related
/interviewβ fills gaps by asking questions (not by intaking existing content)/TelosUpdate workflow β edit a single TELOS file directly/Knowledgeβ manage the Knowledge Archive- an identity-profile skill β manage PRINCIPAL_IDENTITY
Gotchas
- Low average confidence (<40%): the source is probably genre-mismatched (e.g., code comments, logs, raw data). Consider pre-filtering to remove non-prose chunks before scanning.
- Everything goes to UNCLEAR: the source probably has no recognizable LifeOS-taxonomy patterns. Either add the content manually via
/Telosor write it as general Knowledge notes. - Duplicate content warnings: the scanner doesn't dedupe against existing files yet. Run
--dry-runfirst to preview before committing.
Frequently asked questions about Migrate
Similar skills
Agent-Browser Core
Efficient browser automation for AI agents.
Setup My IQ
Effortlessly create and update your personal context portfolio.
CRM Maintenance
Automate HubSpot updates from your calendar and emails.
Zoom MCP
Streamline access to Zoom meeting assets and recordings.
Slack Automation
Automate tasks and extract data from Slack easily.
SMB Onboard
Guides small business owners through initial tool setup.
