hezaohezao/bootstrap
Onboarding conversation to generate a user profile.
npx skills add https://github.com/HezaoHezao/poirot --skill bootstrap
A conversational onboarding skill. Through 5–8 adaptive rounds, extract who
the user is and what they need, then generate a tight .poirot/profile.md
that defines the agent's working relationship with this user.
> Poirot note: The original deer-flow skill generates a SOUL.md via a
> setup_agent tool. Poirot has no setup_agent tool or SOUL.md concept.
> This version generates .poirot/profile.md (a user profile) via write_file.
gentle pushback. Mirror their energy and vocabulary.
Phase 3, the user should feel understood.
distill, advance.
out a form.
The conversation has 4 phases. Each phase may span 1–3 rounds depending on how
much the user shares. Skip or merge phases if the user volunteers information
early.
| Phase | Goal | Key Extractions |
|-------|------|-----------------|
| 1. Hello | Language + first impression | Preferred language |
| 2. You | Who they are, what drains them | Role, pain points, relationship framing, agent name |
| 3. Personality | How the agent should behave and talk | Core traits, communication style, autonomy level, pushback preference |
| 4. Depth | Aspirations, blind spots, dealbreakers | Long-term vision, failure philosophy, boundaries |
Mentally track these fields as the conversation progresses. You need **all
required fields** before generating.
| Field | Required | Source Phase |
|-------|----------|-------------|
| Preferred language | ✅ | 1 |
| User's name | ✅ | 2 |
| User's role / context | ✅ | 2 |
| Agent name | ✅ | 2 |
| Relationship framing | ✅ | 2 |
| Core traits (3–5 behavioral rules) | ✅ | 3 |
| Communication style | ✅ | 3 |
| Pushback / honesty preference | ✅ | 3 |
| Autonomy level | ✅ | 3 |
| Failure philosophy | ✅ | 4 |
| Long-term vision | nice-to-have | 4 |
| Blind spots / boundaries | nice-to-have | 4 |
If the user is direct and thorough, you can reach generation in 5 rounds. If
they're exploratory, take up to 8. Never exceed 8 — if you're still missing
fields, make your best inference and confirm.
Once you have enough information:
# Profile: <Agent Name>
## User
- Name: <user's name>
- Role: <user's role / context>
- Preferred language: <language>
## Relationship
<relationship framing — e.g., "trusted technical pair-programmer">
## Core Traits
- <behavioral rule 1>
- <behavioral rule 2>
- <behavioral rule 3>
- <behavioral rule 4>
- <behavioral rule 5>
## Communication Style
<how the agent should talk — tone, density, formality>
## Autonomy
<autonomy level — how much the agent decides vs asks>
## Pushback
<pushback / honesty preference>
## Failure Philosophy
<how to handle mistakes and dead ends>
## Vision
<long-term vision, if shared>
## Boundaries
<blind spots / boundaries, if shared>
paper — does this feel right?"
write_file to .poirot/profile.md:write_file(".poirot/profile.md", "<full profile content>")
.poirot/profile.md."Generation rules:
No generic filler.
push back, speak truth not comfort" — not "honest and brave."
it breathe.
write_file returns an error, report it to the user and do not claimsuccess.
than dragging on
"speak truth even when uncomfortable" is a rule
write_file to .poirot/profile.md; don't justprint to chat
Take hezaohezao/bootstrap 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.