One SOUL for every way humans think.
A SOUL captures the tacit knowledge behind a way of thinking — the goals, instincts, mental models, tradeoffs, and judgment that usually go unwritten. Not documentation. Not a prompt. A portrait of a mind at work.
Press ⌘K to search · 1,620,373 words of distilled thinking
What is a SOUL?
Documentation answers “what does an architect know?” A SOUL answers “how does an excellent architect think?” Each SOUL is a structured Markdown file that distills a way of thinking into its mental models, decision frameworks, heuristics, failure modes, and the questions an expert keeps running in the background.
Docs describe a system or a procedure. A SOUL describes the judgment that chooses between procedures — why an expert reaches for one tool over another when no rule applies.
A prompt instructs a model for one task. A SOUL is a durable, human-readable artifact about a domain — useful on its own, citable, and versioned — that can ground a prompt but isn't one.
Read one to onboard into a field in an afternoon. Or feed the machine-readable JSON API to a system that needs to reason the way a domain expert would.
A SOUL.md is just Markdown — drop it into any model's system
prompt to ground it in how an expert reasons. Fetch one from
/api/souls/<slug>.md, or pull the whole corpus from
/llms-full.txt.
import Anthropic from "@anthropic-ai/sdk";
// Ground a model in today's SOUL — Marketing Manager
const soul = await fetch(
"https://soul-atlas.github.io/api/souls/marketing-manager.md",
).then((r) => r.text());
const client = new Anthropic();
const res = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
system: "Reason with the mindset below.\n\n" + soul,
messages: [{ role: "user", content: "What would you watch for that a novice would miss?" }],
}); import OpenAI from "openai";
// Ground a model in today's SOUL — Marketing Manager
const soul = await fetch(
"https://soul-atlas.github.io/api/souls/marketing-manager.md",
).then((r) => r.text());
const client = new OpenAI();
const res = await client.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "system", content: "Reason with the mindset below.\n\n" + soul },
{ role: "user", content: "What would you watch for that a novice would miss?" },
],
}); import { GoogleGenAI } from "@google/genai";
// Ground a model in today's SOUL — Marketing Manager
const soul = await fetch(
"https://soul-atlas.github.io/api/souls/marketing-manager.md",
).then((r) => r.text());
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const res = await ai.models.generateContent({
model: "gemini-2.0-flash",
config: { systemInstruction: "Reason with the mindset below.\n\n" + soul },
contents: "What would you watch for that a novice would miss?",
}); The snippet above fetches today's SOUL — Marketing Manager . Swap the slug for any of the 654 minds in the Atlas.
Some SOULs carry
Agent Skills
— runnable capabilities. Those download as a bundle (
SOUL.md + skills/),
not a single file: mount it into a skill-aware runtime, or expose the skills to any
model.
# Barista carries skills, so it ships as a bundle:
# SOUL.md (the mindset) + skills/ (runnable Agent Skills).
curl -L https://soul-atlas.github.io/api/souls/barista/bundle.zip -o soul.zip
unzip -o soul.zip -d barista
# Claude Code auto-discovers skills — each loaded only when relevant
mkdir -p .claude/skills && cp -r barista/skills/* .claude/skills/
cat barista/SOUL.md >> CLAUDE.md // No native skills (OpenAI, Gemini, …)? Ground the model in the SOUL and
// offer the skills as a capability menu you run on request.
const base = "https://soul-atlas.github.io/api/souls/barista";
const soul = await fetch(base + ".md").then((r) => r.text());
const { skills } = await fetch(base + "/skills.json").then((r) => r.json());
const menu = skills.map((s) => `- ${s.name}: ${s.description}`).join("\n");
const system = "Reason with the mindset below.\n\n" + soul +
"\n\nSkills you can run:\n" + menu; Example — Barista (1 skill). The Claude API path is in using a SOUL in your code .
Featured SOULs
Browse all →Home Coffee Roaster
Treats green coffee as fixed-potential agriculture and the roast as controlled pyrolysis, anchoring every decision to first crack and a never-crashing rate of rise rather than the clock
Hobbyist Blacksmith
Thinks in heat windows and conserved volume, spends each heat on the most productive blow, and treats normalize-harden-temper as three jobs not one
DIY Synth Builder
Treats the circuit as the instrument and instability as raw material — debugging a wrong sound stage-by-stage with a scope and biasing stages to distort on purpose
Medieval Monastic Scribe
Copying scripture is prayer and error is sin, so the scribe subordinates his own hand to faithful reproduction of the exemplar, preserving doubt rather than mending it
Colonial Whaler
Think in lays and long odds: strike close or not at all, render before it rots, and bring the men home, not just the oil
Calligrapher
Plans every letter before the nib lands because the stroke is an irreversible gesture made at breath-speed, judging the whole page's rhythm over any single perfect glyph