lout33/symbiotic-onboard
Onboard a new user into a Symbiotic AI setup by interviewing them one sharp question at a time and writing their own context files (SOUL.md, USER.md, NOW.md, and AGENTS.md) as plain Markdown they keep. Use this whenever someone is setting up a personal AI agent, wants their assistant to remember or understand them across sessions, mentions Symbiotic AI / SOUL.md / USER.md / NOW.md, is staring at blank template files full of [bracketed placeholders], or asks how to give an AI persistent context they own and can move between models. Trigger even if they do not say the word "onboard".
npx skills add https://github.com/lout33/symbiotic-ai --skill symbiotic-onboard
This skill sets a brand-new user up with a working Symbiotic AI configuration in one short conversation. The whole point of Symbiotic AI is ownership and portability: a person's context lives in plain Markdown files they own, can read and edit by hand, can version, and can carry to any model. Native platform memory cannot offer that. It is opaque, automatic, and locked to one vendor.
So the job here is not to "store" anything in a hidden place. It is to interview the user and write plain files they keep. When you finish, the user has four files (SOUL.md, USER.md, NOW.md, and optionally AGENTS.md) that any agent runtime can load. They own them.
The hard part of onboarding is the blank page. A new user opens template files full of [bracketed placeholders], does not know what to type, and stalls. This skill removes that wall by doing a short, sharp interview and filling the files for them.
Interview one sharp question at a time. Never dump a list of questions. A wall of questions makes people freeze or write thin, generic answers. One question, wait, write the answer into the right file, then ask the next. This is how you get real content instead of a survey.
Stay in SOUL voice while you do it: short, direct, references what they just said, no filler. You are a co-pilot who is going to know this person, not an intake form.
assets/SOUL.md, assets/USER.md, assets/NOW.md, and assets/AGENTS.md into the target directory.SOUL.md and AGENTS.md are already filled (agent identity and operating protocol). You usually leave them as-is. Offer to tune SOUL.md voice later if the user wants a different personality.USER.md and NOW.md contain [bracketed placeholders]. These are what the interview fills.If the user would rather start from a realistic example than a blank template, that is fine: copy a filled example profile over the templates and rewrite it as them, one answer at a time. Editing a real example beats filling blanks. (In the Symbiotic AI repo these live under examples/.)
Ask these first. They are enough to make the agent useful today. Ask, wait, write, move on.
USER.md Identity.USER.md Mission / The Real Goal, and reflect the near-term version into NOW.md.USER.md Psychology (start a "Bugs" entry) and/or Who You Are.NOW.md under # QUEUE > ## TODAY as the first checkbox.Then, only if the user has energy for more, you can deepen: stack/skills, what charges vs drains them, how they work best, a recent win. Each still one question at a time, each written into the matching USER.md section.
Defer the heavy stuff. Financial reality and deep psychology (drivers, fears, long patterns) are real sections in USER.md, but do not mine for them in session one. Leave those placeholders for later sessions. Pushing for money and trauma on day one kills the onboarding. Get them operational first; the deep profile accumulates over time, which is exactly the Symbiotic advantage.
[bracketed placeholder], do not append next to it. The file should read like the user wrote it.This step matters as much as the interview. A short interview fills the high-value fields (name, goal, avoidance, today's MIT) but leaves dozens of secondary [bracketed placeholders] in USER.md and NOW.md (age, location, stack, energy map, relationships, financials). If you leave those raw, a first-time user sees broken-looking brackets and assumes the skill half-failed. Do not turn the interview into a 40-question wall to avoid this. Handle it at the end instead.
As your final write, sweep USER.md and NOW.md and resolve every remaining [bracketed placeholder] you did not fill, using whichever reads cleaner per field:
_(not set yet, your agent will fill this in as it learns you)_. Use this for fields worth keeping in view (stack, energy map, psychology bugs, milestones).Career or Shipped table the user has nothing for yet). Removing it is cleaner than a table of deferred markers.Leave markdown checkboxes like [ ] alone. Those are list syntax, not placeholders. You are only resolving the descriptive [Your ...]-style fill-ins.
The end state is firm: no raw [Your ...]-style brackets remain. Every field is either filled in the user's words or shows the clear deferred treatment. The file should read as complete and intentional, never as broken output.
Because the deferred marker uses parentheses, not brackets, it will not re-trigger the agent's onboarding protocol on the next session. The bundled AGENTS.md tells the agent to fill these deferred fields naturally as it learns the user, so they complete through use rather than a wall of questions.
When name, goal, avoidance, and today's MIT are written, the deferred sweep is done, and no raw [bracketed placeholders] remain:
This is the step that makes the work real. End by showing the user how their new files plug into an agent. Keep it to what fits their setup:
SOUL.md, USER.md, AGENTS.md, then NOW.md) and acts from them. NOW.md updates as they work; the stable files change rarely.CLAUDE.md, or keep them in the project root.USER.md and NOW.md know them. That history belongs to them and moves with them to any model.A successful run ends with: the four starter fields (name, current goal, avoidance, today's MIT) written in the user's own words, no raw [bracketed placeholders] left anywhere in USER.md or NOW.md (every unasked field either deferred with the _(not set yet, ...)_ marker or its empty subsection dropped), SOUL.md and AGENTS.md present, and the user told one concrete way to load the files with their agent. The files read as complete and intentional. The user owns four real files, not a hidden memory.
Take lout33/symbiotic-onboard from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.