Files
Brian fc6a41c673 feat(toolsmith): default to a single-skill module and start prose from one sentence (#3158)
* feat(toolsmith): make a single-skill module the default for one skill

Registration is settled from the registry and shown in the read-back
instead of asked. A skill joins a module only when the user is working on
that module, named it, or chose its prefix. A bmod-<code> record folder is
never written for one skill.

* fix(toolsmith): ask whether a skill is part of a module

Single-skill module stays the offered guess, but discovery now asks whether
the skill joins a module or more skills are planned. A planned module settles
its code and prefix on the first skill, so nothing is renamed later.

* feat(toolsmith): read any agent's session logs and offer customization in from-logs

The agent finds its own logs and confirms the location instead of assuming
Claude Code. A corrected installed skill can be offered as a bmad-customize
change instead of a new skill.

* refactor(toolsmith): split discover into short sections and cut what a model infers

Registration gets its own section, the five things and other enumerable
items become lists, and the read-back carries the consumer and bar.

* feat(toolsmith): start prose from one sentence and hold one topic to a paragraph

The canon, leanness lens and cut roles now default to the one-sentence
version of a passage and split mixed topics. The pre-pass reports long
paragraphs and sentences.

* refactor(toolsmith): cut prompt files to one topic per paragraph and inline ecosystem into ship

Every route, mode and shape file is split into short paragraphs, bullets
and cases, with what a model would infer removed. ecosystem.md only ever
loaded from ship.md, so its content now lives there.

* feat(toolsmith): let a memory agent add its name to its description at First Breath

* fix(toolsmith): close a Markdown fence only on its own marker in the pre-pass

* fix(toolsmith): let a single-skill module grow into a multi-skill module

* fix(toolsmith): write dependencies to the table the module shape uses

* feat(toolsmith): restore a memory agent's name after an update and skip global installs

* docs(toolsmith): bring the help up to date and route to cut mode

* refactor(toolsmith): call the read-back the Smithy execution plan and add help on sharing and subagents

* docs(toolsmith): write the Toolsmith docs to replace the builder site
2026-10-31 19:01:43 -05:00

6.0 KiB

title, description, sidebar
title description sidebar
Modules and Registration What a BMad module is, what registering a skill gives you, the three ways a skill can register, and when to use configuration or customization.
order
10

A module is a set of skills that belong together, with a record that tells the bmad skill about them. Registering a skill with a module is what lets BMad set it up, recommend it, and check it for updates. This page explains the choices. The exact keys are in Module Files.

What Registering Gives You

With a record Without one
bmad setup <code> asks the skill's questions Setup never sees the skill
The bmad skill recommends it from help Help does not know it exists
Update checks follow its source You update it yourself
Other skills can require it at a minimum version Other skills can require it by name only

A skill with no record still works, and it can still read BMad config and customization.

Three Ways to Register

Smithy asks whether a skill is part of a module and whether more are planned, then puts the answer in the execution plan.

Registration What it is Use it when
Single-skill module One folder is both the skill and its record The default for one skill
Member of a module A small bmod.toml names the record, and the record lists the skill You are building or expanding that module
Plain skill No bmod.toml You want no record, or the project has no _bmad/ folder

A planned module of several skills starts as a single-skill module under its code and prefix, so nothing is renamed later. Smithy moves the record to a bmod-<code> folder when the second skill arrives, either when you package the skills or when you build the second one into the module. Smithy never writes a record folder for one skill.

A plain skill can register later: convert mode adds a record to one skill, and package mode wraps several.

What a Module Holds

A single-skill module keeps everything in the skill's folder. Its bmod.toml has a [bmod] table and an empty [skill] table, and a help/help.md sits beside it. A skill with nothing to ask has no configuration questions.

A multi-skill module has a record folder, bmod-<code>, beside the skills it ships.

In the record Purpose
SKILL.md Tells anyone who opens it to run bmad setup <code>, and does nothing else
bmod.toml Code, version, source, members, dependencies, questions, and install messages
help/help.md What the bmad skill reads to guide users, with optional topic files
roster.toml The module's agents, so bmad and party mode know who is available
retired.toml Skills renamed or removed, so setup can clean up

Each member has its own small bmod.toml that names the record and its source, and lists what that skill alone requires. A skill belongs to one module. A skill it uses from another module is a dependency, not a member.

Name Skills and Modules

Skills carry the module's code as a prefix: acme-release-notes, and agents acme-agent-scout. bmad finds a module by its [bmod] table, and validation requires a multi-skill record folder to be bmod-<code>. The code is the configuration namespace and what users type in bmad setup <code>.

A prefix of your own tells your skills from BMad's, keeps a module's skills together in listings, and lets you group them in traces and usage reports. Reserve bmad- for skills shipped by the bmad-code-org. A custom skill named bmad- reads as official, and it could collide with a future core skill.

Configuration or Customization

Modules offer two ways to change behavior, and they answer different questions.

Configuration Customization
Answers What does this project need to tell the module? How should this skill behave differently here?
Defined in [[bmod.config_questions]] in the record customize.toml in each skill
Set by bmad setup <code> bmad-customize
Read as modules.<code>.<key> with resolve_config.py {workflow.<key>} or {agent.<key>} after resolve_customization.py
Example A shared path every member reads An activation step for one skill

Use a configuration question for a value several skills read the same way. It is asked once, and every member reads the answer. Skip the question when a good default will do, because every question is a cost at setup. See Make a Skill Customizable for the other side.

A scope = "user" question is a personal preference and is not committed. A path the team shares stays team scope.

Write the Help

help/help.md has one reader: the bmad skill, answering a user. Write what each skill gives, when to recommend it, and what to offer next. Leave out what bmad cannot act on, such as install mechanics and manifest keys.

Add a help/<topic>.md for depth, and name it in help.md with when to read it. A topic that help.md does not name is never read.

Depend on Other Skills

Use required_skills for a skill yours invokes, and recommended_skills for one that helps beside it. A plain name is a skill from the same source, and a table names one from elsewhere. Module-wide needs go in the record, and one member's needs go in its own file. Smithy asks during a build, and names anything you need to install.

Add to the BMad Method

Two different things are often called this.

  • Contribute to the method. Open a pull request to the BMAD-METHOD repository. The skill lives under skills/, takes a bmad- name, and its bmod.toml names bmod-method.
  • Extend the method in your project. Make your own module with your own prefix, whose skills require or recommend the method skills they build on. Do not edit the installed method record, because the next update overwrites it.

Build any change to an installed module in its source repository for the same reason.