What are assistants?

Assistants combine a model, system prompt, and skills into a configured agent that works inside your workspace.

Assistants are Sundial's abstraction for a configured AI agent: they combine a model, system prompt, and skills into one agent that works inside your workspace. An assistant specifies which LLM to use, what personality and instructions to follow, and which skills to load. They can edit your files, run searches, and carry out multi-step workflows.

Each assistant is defined by a single ASSISTANT.md file inside a .sundial/assistants/ directory.

How assistants work

  1. The runtime reads ASSISTANT.md and parses the frontmatter (model, skills) and body (system prompt).
  2. Skills listed in the frontmatter are discovered — name + description at first, full instructions on demand.
  3. If BOOTSTRAP.md exists alongside it, the assistant enters bootstrap mode to personalize itself through conversation.
  4. The configured agent is connected to the workspace, ready to receive messages and use tools.

The ASSISTANT.md file

Every assistant is defined by an ASSISTANT.md file with YAML frontmatter for configuration and a Markdown body that becomes the system prompt.

lara/ASSISTANT.md
---
name: lara
description: A research assistant that cites sources
model: claude-sonnet-4-5
skills: [web-search, pdf-to-text, code-review]
---

# Soul

Be genuinely helpful, not performatively helpful.
Have opinions when asked. Be resourceful before asking.

# Identity

- **Name:** Lara
- **Vibe:** Warm, thorough, citation-obsessed
- **Emoji:** 📚

# Instructions

You are a thorough research assistant.
Always cite your sources and prefer primary sources.

Frontmatter

FieldRequiredDescription
nameYesDisplay name of the assistant.
descriptionYesOne-line summary of what it does.
modelYesLLM identifier (e.g. claude-sonnet-4-5).
skillsNoInline YAML array of skill names to load (e.g. [web-search, code-review]).
i
Skills are listed as an inline YAML array (skills: [web-search, code-review]) rather than multi-line list entries, since some assistants may have dozens of skills and the inline format keeps the frontmatter compact.

Body = system prompt

The body of ASSISTANT.md is what your assistant reads as its instructions. Think of it as telling your assistant who they are and how they should behave. Everything after the frontmatter fence is sent to the model as the system prompt.

Three conventional H1 sections are recognized — Soul, Identity, and Instructions — but the body is freeform. You can include all three, just one, or write it as prose. Whatever works best for your assistant.

# Soul

The Soul section defines the assistant's personality, values, and behavioral principles. This is the “who” of the assistant — how it thinks and what it cares about.

ASSISTANT.md (excerpt)
# Soul

Be genuinely helpful, not performatively helpful.
Have opinions when asked. Be direct but kind.
Be resourceful — try to solve problems before asking for help.

# Identity

The Identity section defines surface-level traits: name, vibe, emoji, and any other character attributes. Think of it as the assistant's “character sheet.”

ASSISTANT.md (excerpt)
# Identity

- **Name:** Lara
- **Vibe:** Warm, thorough, citation-obsessed
- **Emoji:** 📚
- **Speaks like:** A knowledgeable colleague, not a chatbot

# Instructions

The Instructions section is task-specific. It tells the assistant what to do and how to do it. This is where you describe workflows, output formats, constraints, and domain-specific behavior.

Bootstrap mode

When a BOOTSTRAP.md file exists alongside ASSISTANT.md in the assistant folder, the assistant enters bootstrap mode. Instead of jumping into work, it starts by having a conversation with the user to understand:

  • Who the assistant should be (personality, tone, expertise)
  • What tasks it should excel at
  • Any specific instructions or constraints

As it learns, the assistant updates the Soul and Identity sections in ASSISTANT.md. When personalization is complete, it deletes BOOTSTRAP.md and exits bootstrap mode.

i
Bootstrap mode is implicit: if BOOTSTRAP.md exists next to ASSISTANT.md, the runtime injects it into the system prompt. The agent deletes it when onboarding is done. No frontmatter flag needed.

Skills at runtime

When an assistant starts, the runtime:

  1. Reads the skills: array from ASSISTANT.md frontmatter.
  2. Locates each skill in the agent's skills folder (e.g. .claude/skills/).
  3. Loads only the name and description from each SKILL.md frontmatter.
  4. Injects an available skills section into the system prompt listing all skills.
  5. When a task matches a skill's description, the agent reads the full SKILL.md instructions on demand.

There is no special “Skill tool.” Skills are listed in the system prompt and the agent uses its normal file-reading ability to load instructions when a task matches.

Assistants vs skills

SkillAssistant
What it isA capability (folder with SKILL.md)A configured agent (folder with ASSISTANT.md)
ContainsInstructions, scripts, referencesModel choice, system prompt, skills list
ReusableYes, across many assistantsYes, can be forked/copied
Has a personalityNoYes (Soul + Identity sections)
Runs on its ownNo, needs an agent to load itYes, with a runtime

Next steps