{"id":"onboarding","name":"onboarding","summary":"初めてのオモユーザー向けのオンボーディングツアー","body":"# onboarding - the first conversation with omo\n\n## Purpose\n\nThis skill runs the first conversation a new omo user ever has. You are the guide. Walk the user\nthrough six lanes, in order: the feature tour, migration help, session archaeology, value mapping,\nmemory recording (which runs through the whole flow, not at the end), and the first-session\ninit-deep proposal. Three of the lanes are opt-in. When the user declines one, move on without\nargument and without repeating the offer.\n\nDetect the user's language from their first reply and respond in that language for the rest of the\nconversation. The skill is written in English; your output is not. Match them exactly, including\ntone.\n\nUse Senpi-native tools only: `read`, `bash`, `edit`, `write`, the `memory` tools, and skill\ninvocations. Never assume a tool from another agent product exists here.\n\nBe concrete, never generic. \"omo caches your context\" is a failure of this skill. \"Your last week\nof Claude Code sessions read 4.7M tokens from cache at a 78% hit rate; here is what that would\nhave cost cold\" is the bar.\n\n## 1. Feature tour\n\nOpen by introducing yourself and giving a short tour of what omo adds on top of a plain coding\nagent. The catalog below is baked in at authoring time because the user's machine has no omo or\nsenpi source tree to explore. Present it conversationally, three to five highlights at a time, and\nlet the user ask for depth on any item. Do not dump the whole list as a wall of text.\n\nThe baked catalog:\n\n- **Eleven-agent roster**: primary workers, plan specialists, architecture consultation, codebase\n  explorers, research librarians, and focused review agents are routed by the work rather than\n  forced through one general-purpose persona.\n- **The Senpi component layer**: startup config and migration, native status, onboarding,\n  init-deep advising, anonymous telemetry, ultrawork arming, start-work continuation, ulw-loop\n  continuation, todo fan-out reminders, fallback architecture, comment checking, ast-grep, LSP,\n  task delegation, memory, and live config watching cooperate as independent components.\n- **Senpi-native skills**: `init-deep`, `ultrawork`, `ulw-loop`, `ulw-plan`, `ulw-research`,\n  `hyperplan`, `coding-agent-sessions`, and `give-me-tips` provide reusable workflows that the\n  agent reads and follows only when relevant.\n- **Three MCP tiers**: built-in servers, user or project `.mcp.json` servers, and skill-embedded\n  servers give projects a layered tool surface without forcing every integration into core.\n- **Team mode**: cooperating agent sessions can share work, messages, and task state when the\n  selected omo harness exposes that surface.\n- **Goal and boulder state**: durable objective and work-plan state let long work resume from\n  recorded progress instead of relying on conversation context alone.\n- **Ultrawork and ulw workflows**: planning, research, execution loops, fan-out decisions, and\n  evidence-bound continuation keep autonomous work moving until its observable goal is proven.\n- **The fallback architect**: refusal metadata can route the unresolved engineering question\n  through an architecture consultation lane while the active model continues execution.\n- **Memory**: dedicated memory tools record durable user and project facts so later sessions begin\n  with the right stack, preferences, and working habits.\n- **Telemetry**: privacy-bounded anonymous lifecycle signals and local preview commands make omo\n  behavior measurable and auditable, with documented opt-outs.\n- **Init-deep**: hierarchical `AGENTS.md` generation, snapshot state, local or committed mode, and\n  later drift detection keep project instructions aligned with the codebase.\n- **Tips with a live source of truth**: run `senpi --list-tips` during the tour, then read and\n  follow `give-me-tips` for any visible tip the user wants explained from the implementation.\n- **Interactive UI primitives**: real pickers, confirms, inputs, notifications, editors, custom\n  views, and widgets let components ask structured questions instead of burying choices in prose.\n- **Re-running this tour**: onboarding auto-starts once, ever. The user can bring it back any time\n  with the `senpi --onboard` flag, or shut the auto-start off with the\n  `omo-senpi-onboarding-disabled` flag.\n- **The init-deep advisor**: after this first session, omo watches each project for AGENTS.md\n  coverage gaps and drift, and proposes an init-deep run only when the numbers justify one. On\n  this first session, you carry that proposal yourself in lane 6.\n\nWhile the user reacts to the tour, start lane 5: record what you learn about them through the\nmemory tools as you learn it.\n\n## 2. Migration help\n\nAsk whether the user is coming from another coding agent and would like their setup carried over.\nThis lane is opt-in. If they say no, skip to lane 3.\n\nIf they say yes, scrape their existing configuration from as many sources as exist on this\nmachine. Check at least:\n\n- Claude Code: `~/.claude/settings.json`, project and global `CLAUDE.md` files, MCP server\n  definitions in `.mcp.json` or settings.\n- Co&#x64;ex: <code>~/.co&#x64;ex/config.toml</code>, any `AGENTS.md` files it manages.\n- OpenCode / oh-my-openagent: `~/.config/opencode/opencode.json`,\n  `~/.config/opencode/oh-my-opencode.jsonc`, project `.mcp.json`, and existing `AGENTS.md` files.\n- Anything else the user names.\n\nRead what you find, then present one concrete migration plan: which settings map to\n`~/.omo/omo.json[c]`, which MCP servers move to the project `.mcp.json`, which `CLAUDE.md` content\nbecomes project `AGENTS.md` content, and which personal facts belong in memory instead of files.\nShow the plan and WAIT for the user to accept it. Apply nothing before they say yes. If they accept\npart of it, apply that part only. Record their agent-product history and migration choices through\nthe memory tools.\n\n## 3. Session archaeology\n\nAsk the user, in your own voice and their language, a question that means: \"may I look through\nyour previous coding-agent sessions?\" Phrase it naturally; do not read that sentence out like a\nscript. This lane is opt-in. If they say no, skip to lane 4 and base it on nothing.\n\nIf they say yes, drive the `coding-agent-sessions` skill: read its SKILL.md and follow it. Use the\nbundled finder to list sessions across every platform present on the machine, then go deep on the\ninteresting ones. Mine for:\n\n- how they actually work: hands-on-the-wheel back-and-forth versus long one-shot delegations,\n- their planning stance, feeding the seed described in lane 5: opening-message shape (requirements\n  and constraints enumerated upfront, or vague starts?), how they answer agent questions (pick an\n  offered option, answer several at once holistically, redirect, or delegate the decision), how\n  they approve (a verbal yes versus commanding execution), and whether the style shifts by repo or\n  domain,\n- what frustrates them: repeated corrections, abandoned sessions, prompts that read as annoyed, in\n  any language,\n- how much they run in parallel, and how long their longest sessions run,\n- which repos, stacks, and models dominate their history.\n\nWeave in migration suggestions where the history invites them, lightly. When a pattern you find\nmaps to an omo feature from the tour, say so with the evidence: \"you corrected the agent about\nyour test runner in nine sessions; memory ends that\" lands, a generic pitch does not. Record every\ndurable finding about the user through the memory tools as you go.\n\n## 4. Value mapping + savings\n\nFrom the session data gathered in lane 3, give the user quantified estimates of what omo's caching\nwould have been worth on their real workload. Compute, do not guess:\n\n- Quantify token and cost savings only from Senpi JSONL v3 sessions. Use other agent stores for\n  session counts, duration, concurrency, and qualitative work-pattern analysis, not token savings.\n- Fetch `https://models.dev/api.json`. Treat its top level as the provider map. Each provider owns\n  a `models` object, and each model cost uses `input`, `output`, `cache_read`, and `cache_write`\n  USD prices per one million tokens. If the API is unavailable, every session has insufficient\n  pricing data.\n- Process session files in chronological filename order. Process entries inside a file in JSONL\n  line order. A malformed timestamp skips that entry. Entries whose timestamps differ by at most\n  one millisecond retain JSONL line order.\n- Read usage only from `message.usage`. Map `input`, `cacheRead`, `cacheWrite`, and `output`\n  exactly. The three input categories are disjoint:\n  `total_input_tokens = input + cacheRead + cacheWrite`. A session whose total input is zero is\n  skipped.\n- Attribute each usage entry to `message.provider` plus `message.model` when both are present.\n  Otherwise use the latest `model_change` provider and `modelId`. Usage before any model\n  information uses the first later `model_change` in that file when one exists; otherwise skip it.\n- Resolve prices first by exact `provider/model` composite identity. If that misses, search for an\n  exact model id across provider keys sorted alphabetically, then model keys sorted alphabetically.\n  The first deterministic hit wins. If any required price field is missing, mark that entire\n  session as insufficient data.\n- Aggregate usage by provider and model, then compute grand totals. The caching rate is\n  `cacheRead / (input + cacheRead + cacheWrite) * 100`.\n- Compute actual cost as\n  `(input * price.input + output * price.output + cacheRead * price.cache_read + cacheWrite * price.cache_write) / 1_000_000`.\n  Compute omo savings as\n  `cacheRead * (price.input - price.cache_read) / 1_000_000`.\n- Round only final aggregated values with `Math.round(value * 100) / 100`. Never round per message,\n  model, or session. Label the result `estimate`.\n- Use real correction or frustration prompts found in lane 3 to demonstrate omo's\n  language-agnostic intent routing. Explain, in the user's language, how a phrase such as\n  \"no, that is not what I meant\" or its actual non-English equivalent is treated as corrective\n  steering for the active task rather than misread as a disconnected request. Tie each example to\n  the observed transcript and the omo feature that addresses it.\n\nLabel the result as an estimate and give exactly one line of methodology, in this shape: \"Estimate\nfrom your local Senpi session logs: message-level model attribution, models.dev input/output/cache\nread/cache write pricing, summed across sessions, rounded at the end.\" One line, then the numbers,\nthen stop.\n\nIf the user skipped lane 3, skip this lane too; there is no data to map.\n\n## 5. Memory recording\n\nThis lane has no fixed position: it runs through the entire flow. Whenever any lane teaches you\nsomething durable about the user, write it through the `memory` tools at that moment, not in a\nbatch at the end. Worth recording:\n\n- their host and machine facts relevant to future work,\n- their language and communication style,\n- which agent products they came from and what they kept from them,\n- their stacks, main repos, and working patterns from lane 3,\n- their stated preferences and every accept or decline decision from this conversation.\n\nWrite durable personal and cross-project facts through the memory tool into `system/human.md`.\nWrite repository-specific stack, commands, constraints, and migration decisions through the memory\ntool into `system/project.md`. Do not edit those backing files directly.\n\nPlanning-stance observations from lane 3 are the one exception: write them as SEEDS under a\n`## Seed` heading in `system/human/planning-style.md` (create the block through the memory tool if\nabsent), never into `system/human.md`. Seeds are inferences and MUST stay weak:\n\n- Phrase every seed as a hypothesis (\"appears to enumerate upfront and delegate the rest\"), never\n  a conclusion, and set `confidence: low` ALWAYS - never medium or high, however consistent the\n  history looks. Behavior in another tool reflects that tool's affordances, not necessarily this\n  user; omo's own planning sessions will confirm or replace these within a few runs.\n- Record full provenance on every seed line: the source harness name(s) (e.g. Claude Code,\n  Co&#x64;ex, OpenCode), the model(s) under which the pattern was mainly observed, the session ids\n  mined, and today's date as `seeded:`. Format:\n  `- [YYYY-MM-DD] (seed) appears to <hypothesis + context> <!-- src: <harness>/<session-id>,...; harness: <names>; model: <models>; seeded: YYYY-MM-DD; pattern: inferred-from-external-sessions; confidence: low -->`\n- Seeds carry interaction STYLE only - never session content, code, file paths, or secrets.\n\nRecord facts, not narration. \"Prefers Korean, migrated from Claude Code, works one repo at a time\nin long sessions\" is a memory. \"The user went through onboarding today\" is not.\n\n## 6. First-session init-deep proposal\n\nOn the true first session the advisor component stays quiet, so this proposal is yours to carry.\nBefore saying anything about it, run the same eligibility gate the advisor uses, in this order:\n\n1. The current directory must be inside a git repository. Check with\n   `git rev-parse --show-toplevel`. Not a repo: ineligible.\n2. There must be candidate directories worth documenting: directories within depth 3 of the repo\n   root (excluding `node_modules`, `.git`, `dist`, `build`, `vendor`, `.next`, `__pycache__`,\n   `.venv`, `target`, `coverage`, `third_party`) holding at least 8 source files or at least 500\n   lines of source directly in them. Zero candidates: ineligible, regardless of anything else.\n3. Compute coverage: a candidate counts as covered when it or an ancestor up to the repo root has\n   an `AGENTS.md`. The missing ratio is uncovered candidates over all candidates. Below 0.50:\n   ineligible. A new project with candidates and no `AGENTS.md` anywhere is missing ratio 1.0 and\n   eligible.\n\nIf any gate fails, skip this lane SILENTLY. Do not mention AGENTS.md, do not explain why you are\nnot proposing, do not hint that a check ran. Close the conversation warmly instead.\n\nIf all gates pass, ask in the user's language: \"want me to set up AGENTS.md for this project?\"\nThis is opt-in. On yes, read the `init-deep` skill at its SKILL.md path and follow it. On no,\nrecord the decline through the memory tools and finish the conversation gracefully: a short\nsend-off in their language, an invitation to come back with `senpi --onboard`, and nothing more.","author":"@code-yeongyu","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/omo-senpi/plugin/skills/onboarding","license":"MIT","category":"writing","lang":"en","tokens":3303,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["models.dev"]}}