Migrate logo

Migrate

CommunityPopular
danielmiessler
Migrate

Intakes external content, classifies chunks against LifeOS taxonomy, commits with provenance. Sources: .md/.txt, stdin, LifeOS dirs, CLAUDE.md/Cursor/OpenAI Custom Instructions, Obsidian/Notion/Apple Notes exports. MigrateScan classifies → routing table. MigrateApprove with --approve-all/--approve-target/--review/--dry-run. Confidence ≥70% auto, 40-70% confirm, <40% walk-through. USE WHEN /migrate, migrate content, import from other LifeOS, bring in old notes, import Cursor rules, import CLAUDE.md, bulk import, Obsidian/Notion/Apple Notes import. NOT FOR single-file edits, conversational interviews, identity edits.

Overview

Publisherdanielmiessler
RepositoryLifeOS
Skill nameMigrate
Stars
19K
Forks
2.5K
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by danielmiessler on GitHub. Read the source before you install it.

Installation

Install the Migrate AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/danielmiessler/LifeOS.git /tmp/LifeOS
mkdir -p .claude/skills
cp -r /tmp/LifeOS/LifeOS/install/skills/Migrate .claude/skills/Migrate
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Migrate in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Migrate on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Migrate is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Migrate — external-content intake and classification

🚨 MANDATORY: Voice Notification

bash
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/ or MEMORY/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

CategoryDestinations
Foundational TELOSMISSION, GOALS, PROBLEMS, STRATEGIES, CHALLENGES, BELIEFS, WISDOM, MODELS, FRAMES, NARRATIVES, SPARKS
IDEAL_STATE dimensionsHEALTH, MONEY, FREEDOM, RELATIONSHIPS, CREATIVE, RHYTHMS
Preference filesBOOKS, AUTHORS, MOVIES, BANDS, RESTAURANTS, FOOD_PREFERENCES, LEARNING, MEETUPS, CIVIC
IdentityUSER/PRINCIPAL/PRINCIPAL_IDENTITY.md
KnowledgeMEMORY/KNOWLEDGE/{Ideas,People,Companies,Research}
AI collaboration rulesWalk-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)
UnclearFlagged 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/.

TriggerWorkflowFile
/migrate, migrate content, bulk import, import from other LifeOS, import CLAUDE.md / Cursor rules / Obsidian / Notion / Apple Notes export, bring in old notesInline 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:

bash
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"):

bash
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"):

bash
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):

bash
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 /interview to 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.json permission, or the relevant skill's Gotchas. Writing them to the harness memory/feedback_*.md directory 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)
  • /Telos Update 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 /Telos or write it as general Knowledge notes.
  • Duplicate content warnings: the scanner doesn't dedupe against existing files yet. Run --dry-run first to preview before committing.

Frequently asked questions

What does the Migrate AI skill do?

Intakes external content, classifies chunks against LifeOS taxonomy, commits with provenance. Sources: .md/.txt, stdin, LifeOS dirs, CLAUDE.md/Cursor/OpenAI Custom Instructions, Obsidian/Notion/Apple Notes exports. MigrateScan classifies → routing table. MigrateApprove with --approve-all/--approve-target/--review/--dry-run. Confidence ≥70% auto, 40-70% confirm, <40% walk-through. USE WHEN /migrate, migrate content, import from other LifeOS, bring in old notes, import Cursor rules, import CLAUDE.md, bulk import, Obsidian/Notion/Apple Notes import. NOT FOR single-file edits, conversational in...

Why use Migrate on TypingMind?

Because you install it once and use it with any model. Migrate is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Migrate in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/danielmiessler/LifeOS/tree/main/LifeOS/install/skills/Migrate. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Migrate?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Migrate?

As many as you like. As long as a model supports skills, you can use Migrate with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Migrate AI skill free?

Yes. It is published on GitHub by danielmiessler under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇