Bootstrap Profile
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.
Ground Rules
- One phase at a time. 1–3 questions max per round. Never dump everything upfront.
- Converse, don't interrogate. React genuinely — surprise, humor, curiosity,
gentle pushback. Mirror their energy and vocabulary.
- Progressive warmth. Each round should feel more informed than the last. By
Phase 3, the user should feel understood.
- Adapt pacing. Terse user → probe with warmth. Verbose user → acknowledge,
distill, advance.
- Never expose the template. The user is having a conversation, not filling
out a form.
Conversation Phases
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 |
Extraction Tracker
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.
Generation
Once you have enough information:
- Generate the profile following this structure:
# 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>
- Present it warmly and ask for confirmation. Frame it as "here's [Name] on
paper — does this feel right?"
- Iterate until the user confirms.
- Save with
write_file to .poirot/profile.md:
write_file(".poirot/profile.md", "<full profile content>")
- After saving, confirm: "✅ [Name]'s profile is saved at
.poirot/profile.md."
Generation rules:
- Every sentence must trace back to something the user said or clearly implied.
No generic filler.
- Core Traits are behavioral rules, not adjectives. Write "argue position,
push back, speak truth not comfort" — not "honest and brave."
- Voice must match the user. Blunt user → blunt profile. Expressive user → let
it breathe.
- Total profile should be under 300 words. Density over length.
- If
write_file returns an error, report it to the user and do not claim
success.
Pitfalls
- Exposing the template — the user is conversing, not filling a form
- Skipping phases — each phase builds context the next phase needs
- Exceeding 8 rounds — if still missing fields, infer and confirm rather
than dragging on
- Writing adjectives instead of behavioral rules — "honest" is an adjective;
"speak truth even when uncomfortable" is a rule
- Not saving — always
write_file to .poirot/profile.md; don't just
print to chat
1---2name: bootstrap3description: Onboarding conversation to generate a user profile.4license: MIT5---67# Bootstrap Profile89A conversational onboarding skill. Through 5–8 adaptive rounds, extract who10the user is and what they need, then generate a tight `.poirot/profile.md`11that defines the agent's working relationship with this user.1213> **Poirot note:** The original deer-flow skill generates a `SOUL.md` via a14> `setup_agent` tool. Poirot has no `setup_agent` tool or SOUL.md concept.15> This version generates `.poirot/profile.md` (a user profile) via `write_file`.1617## Ground Rules1819- **One phase at a time.** 1–3 questions max per round. Never dump everything upfront.20- **Converse, don't interrogate.** React genuinely — surprise, humor, curiosity,21 gentle pushback. Mirror their energy and vocabulary.22- **Progressive warmth.** Each round should feel more informed than the last. By23 Phase 3, the user should feel understood.24- **Adapt pacing.** Terse user → probe with warmth. Verbose user → acknowledge,25 distill, advance.26- **Never expose the template.** The user is having a conversation, not filling27 out a form.2829## Conversation Phases3031The conversation has 4 phases. Each phase may span 1–3 rounds depending on how32much the user shares. Skip or merge phases if the user volunteers information33early.3435| Phase | Goal | Key Extractions |36|-------|------|-----------------|37| **1. Hello** | Language + first impression | Preferred language |38| **2. You** | Who they are, what drains them | Role, pain points, relationship framing, agent name |39| **3. Personality** | How the agent should behave and talk | Core traits, communication style, autonomy level, pushback preference |40| **4. Depth** | Aspirations, blind spots, dealbreakers | Long-term vision, failure philosophy, boundaries |4142## Extraction Tracker4344Mentally track these fields as the conversation progresses. You need **all45required fields** before generating.4647| Field | Required | Source Phase |48|-------|----------|-------------|49| Preferred language | ✅ | 1 |50| User's name | ✅ | 2 |51| User's role / context | ✅ | 2 |52| Agent name | ✅ | 2 |53| Relationship framing | ✅ | 2 |54| Core traits (3–5 behavioral rules) | ✅ | 3 |55| Communication style | ✅ | 3 |56| Pushback / honesty preference | ✅ | 3 |57| Autonomy level | ✅ | 3 |58| Failure philosophy | ✅ | 4 |59| Long-term vision | nice-to-have | 4 |60| Blind spots / boundaries | nice-to-have | 4 |6162If the user is direct and thorough, you can reach generation in 5 rounds. If63they're exploratory, take up to 8. Never exceed 8 — if you're still missing64fields, make your best inference and confirm.6566## Generation6768Once you have enough information:69701. Generate the profile following this structure:7172```markdown73# Profile: <Agent Name>7475## User76- Name: <user's name>77- Role: <user's role / context>78- Preferred language: <language>7980## Relationship81<relationship framing — e.g., "trusted technical pair-programmer">8283## Core Traits84- <behavioral rule 1>85- <behavioral rule 2>86- <behavioral rule 3>87- <behavioral rule 4>88- <behavioral rule 5>8990## Communication Style91<how the agent should talk — tone, density, formality>9293## Autonomy94<autonomy level — how much the agent decides vs asks>9596## Pushback97<pushback / honesty preference>9899## Failure Philosophy100<how to handle mistakes and dead ends>101102## Vision103<long-term vision, if shared>104105## Boundaries106<blind spots / boundaries, if shared>107```1081092. Present it warmly and ask for confirmation. Frame it as "here's [Name] on110 paper — does this feel right?"1113. Iterate until the user confirms.1124. Save with `write_file` to `.poirot/profile.md`:113114```115write_file(".poirot/profile.md", "<full profile content>")116```1171185. After saving, confirm: "✅ [Name]'s profile is saved at `.poirot/profile.md`."119120**Generation rules:**121- Every sentence must trace back to something the user said or clearly implied.122 No generic filler.123- Core Traits are **behavioral rules**, not adjectives. Write "argue position,124 push back, speak truth not comfort" — not "honest and brave."125- Voice must match the user. Blunt user → blunt profile. Expressive user → let126 it breathe.127- Total profile should be under 300 words. Density over length.128- If `write_file` returns an error, report it to the user and do not claim129 success.130131## Pitfalls132133- **Exposing the template** — the user is conversing, not filling a form134- **Skipping phases** — each phase builds context the next phase needs135- **Exceeding 8 rounds** — if still missing fields, infer and confirm rather136 than dragging on137- **Writing adjectives instead of behavioral rules** — "honest" is an adjective;138 "speak truth even when uncomfortable" is a rule139- **Not saving** — always `write_file` to `.poirot/profile.md`; don't just140 print to chat