---
name: Bootstrap
slug: bootstrap
category: AI Engineering
description: "Generates a detailed user profile through a structured 5-8 round onboarding conversation, adapting to the user's language and style. Use when setting up a new agent or refreshing an agent's understanding of the user."
github: "https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/core/bootstrap"
language: Python
stars: 185
forks: 8
install: "npx degit https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/core/bootstrap ~/.claude/skills/bootstrap"
installs_to: ~/.claude/skills/bootstrap
source_path: poirot/backend/agents/skill/builtin_skills/core/bootstrap/SKILL.md
collection_size: 37
category_size: 2451
collection_url: "https://dirskills.com/collections/HezaoHezao/poirot"
added: 2026-08-11T07:20:36.856Z
last_synced: 2026-08-11T07:20:36.856Z
canonical_url: "https://dirskills.com/skills/bootstrap"
---

# Bootstrap

Generates a detailed user profile through a structured 5-8 round onboarding conversation, adapting to the user's language and style. Use when setting up a new agent or refreshing an agent's understanding of the user.

**Install:**

```bash
npx degit https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/core/bootstrap ~/.claude/skills/bootstrap
```

## README

# 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:

1. Generate the profile following this structure:

```markdown
# 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>
```

2. Present it warmly and ask for confirmation. Frame it as "here's [Name] on
   paper — does this feel right?"
3. Iterate until the user confirms.
4. Save with `write_file` to `.poirot/profile.md`:

```
write_file(".poirot/profile.md", "<full profile content>")
```

5. 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
