/create-bot
Use when building a BOT — one place to open a session and work across several Areas or projects at once, with their criteria already loaded, instead of answering questions about them. Scaffolds bots/proyectos/<slug>/ with an always-loaded canon/, its project Lore, and (in
$ npx -y skills add andresanemic/lore-plugin --skill create-bot --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/create-bot
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when building a BOT — one place to open a session and work across several Areas or projects at once, with their criteria already loaded, instead of answering questions about them. Scaffolds bots/proyectos/<slug>/ with an always-loaded canon/, its project Lore, and (in
SKILL.md
create-bot.SKILL.mdname: create-bot
description: Use when building a BOT — one place to open a session and work across several Areas or projects at once, with their criteria already loaded, instead of answering questions about them. Scaffolds bots/proyectos/<slug>/ with an always-loaded canon/, its project Lore, and (in `federar` mode) a routing table into Lore scattered across other Areas. Two modes — `nuevo` (canon from a brainstorm plus source docs) and `federar` (canon plus federated routing) — plus an audit pass for a bot that already exists, to fix its scope, README or sources. Scope comes from the registry of the institution the bot serves, never from the builder's folder tree. Sources with NO Lore go through create-area and transmute-lore first, never absorbed into the bot. Packaging as a shareable plugin, encryption and Telegram are optional and off by default. Trigger on "create a bot for X", "a bot that works on <projects>", "federate these areas", "audit my bot", "fix my bot's scope".
create-bot — Build a bot: an installable place to work
Creates a **bot**: a folder that is at once a Claude Code **plugin**, a Lore **project**, and the **place a work session is opened in**. A bot does not answer questions about the projects — it **works in them**. The instruction goes in, the bot executes it against real files, the result comes back.
> **The north, and the only test that matters:** *a short instruction is enough.* If the project > had to be explained to the bot to get the result, criteria were missing from the load.
What a bot is, and what it is not
`create-bot` is a sibling of `create-project`, not of `create-area`. **The standard path is `bots/proyectos/{slug}/`** — `bots` is the area that hosts bots, the way a `web` area hosts websites. If that area does not exist yet, `create-area` makes it first, exactly as for any other project. Another area can host a bot when the user says so; do not assume it.
| | Area | Project | **Bot** | |---|---|---|---| | Holds | projects | one piece of work | **a work session** | | Its Lore governs | the domain's method | that work | **how the agent behaves** | | Opened to | see the registry | advance that work | **work on any of several projects** |
A bot is the only artifact in this kit that **routes outward**. Areas and projects are places; a bot is a lens you carry into them.
> **A bot is not automatically a plugin.** By default it is a folder with its canon and its > `CLAUDE.md`: open a session there and the criteria is already loaded, with nothing installed. > Wrapping it in a skill with `.claude-plugin/` and its own repository is an **optional seal** (§10) > that serves one purpose — handing it to a team. For one person working alone it is scaffolding > that still has to be maintained.
> **Why it must not be an area.** An area is a container of projects and owns the criteria of its > domain. A bot owns none of the criteria it routes to — it borrows it. Building it as an area > creates a parent that accumulates criteria it never paid for, and the first consequence shows up > fast: when a criterion generalizes, it gets promoted to the bot instead of to the area that > earned it.
Two modes
| Mode | When | What it produces | |---|---|---| | **`nuevo`** | From zero. There is no prior Lore to gather. | Canon born from a brainstorm + source documents. | | **`federar`** | The criteria already exists, dissolved across several areas. | Canon **plus** a synchronized copy and a routing table over those Lore bodies. |
Both produce the same artifact. `federar` adds `scripts/ecosistema.json`, `scripts/sync.js`, and two generated files: `lore/enrutamiento.md` (the routing table) and `.claude/settings.local.json` (the access to the live trees). It copies nothing unless the copy is turned on (§7).
When the bot already exists
Both modes above build from zero, and that is **not** the only way this skill gets invoked. It also gets pointed at a bot already in the tree — to fix its scope, rewrite its README, add a source. Run the audit below **instead of** the creation procedure, then rejoin at §7 (sync), §10 (packaging) and §11 (verify).
| Check | How | Fails when | |---|---|---| | **Scope** | Contrast every entry of the manifest against the institution's registry | A source is routed that the registry does not list | | **Borders** | Read the canon's out-of-scope declaration | A borderline project is missing, or is listed with no reason for the confusion | | **Orphans** | `ls` the sync destination against the manifest — only if the copy is on | A folder survives whose source is no longer in the manifest | | **Copy** | Ask who uses the bot and whether they have the tree | `lore-ecosistema/` is on for people who all share the folder tree — it is duplication with no reader | | **README** | Read it as the audience, not as the author | It argues the method, or its examples are about projects the bot no longer serves | | **Install** | Run the commands, do not read them | They were written from memory or copied from a public bot | | **Gate** | `node scripts/validar.js`, if the bot is packaged | Anything but exit 0 |
The audit is not a lighter procedure. It finds what a fresh build cannot: **the drift between what the bot was built to serve and what it serves now**, which is exactly what nobody re-derives on their own.
When a source has no Lore yet
The common starting point is **not** a tidy set of Lore bodies. It is raw material: folders of documents, a codebase, a database, a Notion workspace — none of it distilled. That material cannot be federated, and the fix is a chain, **not** a shortcut:
raw source (no Lore)
└─ create-area → the work area that will OWN this criteria
└─ transmute-lore (add) → recover the criteria already scattered inside it
└─ create-bot (federar) → the bot routes to it> **The law: the bot never distills into itself.** A source without Lore gets its Lore **in the area > that own
Read more
name: create-bot description: Use when building a BOT — one place to open a session and work across several Areas or projects at once, with their criteria already loaded, instead of answering questions about them. Scaffolds bots/proyectos/<slug>/ with an always-loaded canon/, its project Lore, and (in `federar` mode) a routing table into Lore scattered across other Areas. Two modes — `nuevo` (canon from a brainstorm plus source docs) and `federar` (canon plus federated routing) — plus an audit pass for a bot that already exists, to fix its scope, README or sources. Scope comes from the registry of the institution the bot serves, never from the builder's folder tree. Sources with NO Lore go through create-area and transmute-lore first, never absorbed into the bot. Packaging as a shareable plugin, encryption and Telegram are optional and off by default. Trigger on "create a bot for X", "a bot that works on <projects>", "federate these areas", "audit my bot", "fix my bot's scope".
create-bot — Build a bot: an installable place to work
Creates a **bot**: a folder that is at once a Claude Code **plugin**, a Lore **project**, and the **place a work session is opened in**. A bot does not answer questions about the projects — it **works in them**. The instruction goes in, the bot executes it against real files, the result comes back.
> **The north, and the only test that matters:** *a short instruction is enough.* If the project > had to be explained to the bot to get the result, criteria were missing from the load.
What a bot is, and what it is not
`create-bot` is a sibling of `create-project`, not of `create-area`. **The standard path is `bots/proyectos/{slug}/`** — `bots` is the area that hosts bots, the way a `web` area hosts websites. If that area does not exist yet, `create-area` makes it first, exactly as for any other project. Another area can host a bot when the user says so; do not assume it.
| | Area | Project | **Bot** | |---|---|---|---| | Holds | projects | one piece of work | **a work session** | | Its Lore governs | the domain's method | that work | **how the agent behaves** | | Opened to | see the registry | advance that work | **work on any of several projects** |
A bot is the only artifact in this kit that **routes outward**. Areas and projects are places; a bot is a lens you carry into them.
> **A bot is not automatically a plugin.** By default it is a folder with its canon and its > `CLAUDE.md`: open a session there and the criteria is already loaded, with nothing installed. > Wrapping it in a skill with `.claude-plugin/` and its own repository is an **optional seal** (§10) > that serves one purpose — handing it to a team. For one person working alone it is scaffolding > that still has to be maintained.
> **Why it must not be an area.** An area is a container of projects and owns the criteria of its > domain. A bot owns none of the criteria it routes to — it borrows it. Building it as an area > creates a parent that accumulates criteria it never paid for, and the first consequence shows up > fast: when a criterion generalizes, it gets promoted to the bot instead of to the area that > earned it.
Two modes
| Mode | When | What it produces | |---|---|---| | **`nuevo`** | From zero. There is no prior Lore to gather. | Canon born from a brainstorm + source documents. | | **`federar`** | The criteria already exists, dissolved across several areas. | Canon **plus** a synchronized copy and a routing table over those Lore bodies. |
Both produce the same artifact. `federar` adds `scripts/ecosistema.json`, `scripts/sync.js`, and two generated files: `lore/enrutamiento.md` (the routing table) and `.claude/settings.local.json` (the access to the live trees). It copies nothing unless the copy is turned on (§7).
When the bot already exists
Both modes above build from zero, and that is **not** the only way this skill gets invoked. It also gets pointed at a bot already in the tree — to fix its scope, rewrite its README, add a source. Run the audit below **instead of** the creation procedure, then rejoin at §7 (sync), §10 (packaging) and §11 (verify).
| Check | How | Fails when | |---|---|---| | **Scope** | Contrast every entry of the manifest against the institution's registry | A source is routed that the registry does not list | | **Borders** | Read the canon's out-of-scope declaration | A borderline project is missing, or is listed with no reason for the confusion | | **Orphans** | `ls` the sync destination against the manifest — only if the copy is on | A folder survives whose source is no longer in the manifest | | **Copy** | Ask who uses the bot and whether they have the tree | `lore-ecosistema/` is on for people who all share the folder tree — it is duplication with no reader | | **README** | Read it as the audience, not as the author | It argues the method, or its examples are about projects the bot no longer serves | | **Install** | Run the commands, do not read them | They were written from memory or copied from a public bot | | **Gate** | `node scripts/validar.js`, if the bot is packaged | Anything but exit 0 |
The audit is not a lighter procedure. It finds what a fresh build cannot: **the drift between what the bot was built to serve and what it serves now**, which is exactly what nobody re-derives on their own.
When a source has no Lore yet
The common starting point is **not** a tidy set of Lore bodies. It is raw material: folders of documents, a codebase, a database, a Notion workspace — none of it distilled. That material cannot be federated, and the fix is a chain, **not** a shortcut:
raw source (no Lore)
└─ create-area → the work area that will OWN this criteria
└─ transmute-lore (add) → recover the criteria already scattered inside it
└─ create-bot (federar) → the bot routes to it> **The law: the bot never distills into itself.** A source without Lore gets its Lore **in the area > that own
Turn hard-earned experience into reusable judgment for AI-assisted development.
Repo: andresanemic/lore-plugin
Other skills on lore.
- /create-area
Use when starting a brand-new WORK AREA that groups several projects of the same kind (web, research, blog, video, apps…). Scaffolds an area folder with its own Lore (identidad/principios + index + optional thematic modules), a CLAUDE.md contract, a FASES.md project registry and
Open skill - /create-project
Use when starting a brand-new PROJECT inside an existing WORK AREA (created with create-area). Scaffolds AREA/proyectos/<slug>/ inheriting the area's Lore — the project keeps its own identidad.md + principios.md (leading with project-specific content, pointing to the area for
Open skill - /obsidian-lore
Use when Obsidian notes and Lore share one folder tree — the vault is the mother folder of the Areas — to capture free notes outside any lore/ and, above all, to MINE that inbox for criteria worth distilling. Trigger on «revisa mis notas de Obsidian y checa si algo se puede
Open skill - /save-to-lore
Use when saving a lesson to the Lore or right after solving a problem worth keeping, AND when distilling Lore from an external body of criteria (a skill, a style guide, a third-party playbook). Two modes — CAPTURE (default — distill lived friction into an invariant clue) and
Open skill - /transmute-lore
Migrate a project with scattered criteria (bloated CLAUDE.md, kilometric READMEs, stale or absent lore/, criteria buried in code comments) up to the six-artifact Lore standard (ADD mode), clean a project's redundant per-project thematic modules back down to what its area already
Open skill - /using-lore
Read this first to understand the Lore system — what Lore is, the six-artifact standard, the area↔project model, and which of the Lore skills (create-area, create-project, create-bot, save-to-lore, transmute-lore, obsidian-lore) to invoke when. Use when the user mentions "lore",
Open skill

