Team format
How a team is made.
A Brainwrite team is one Markdown file plus the library entry the app reads. The quickest start is the template repository: it holds one complete, working example team, the same layout as the library, and the library’s own validator.
Repository layout
catalog.json the listing for your team packages/<team-id>.md the team itself (Brainwrite Markdown v1) teams/<team-id>/ team.brainwriteteam.json members and room, for the app's library README.md a short human description skills/<playbook-key>/SKILL.md one file per playbook FORMAT.md the Markdown format, in full schema/team.schema.json JSON schema for team.brainwriteteam.json scripts/validate.mjs the library's validator LICENSE the license your team is shared under
<team-id> is your team’s id: lower-case letters, digits and hyphens, for example weekly-sales-review. It must be the same everywhere: the file name in packages/, the folder name in teams/, id in the package, and slug in catalog.json. It must not already be used by a team in the library.
packages/<team-id>.md: the team
This is the file Brainwrite installs, and the one people read. It is a Markdown file with YAML frontmatter:
- Frontmatter: it starts with
brainwrite: 1, then the team’sid,release(semver, e.g.1.0.0),name,tagline,summary,category,author,license,outcomes,setupMinutes,requirements(the apps it uses),agents,chiefOfStaff,rooms,routinesandplaybooks. - Body: it must have these seven sections, as
##headings: Activation, Mission, Outcomes, Connections, Team, Chief of Staff and Completion rule. - Agents: each has a
key,name,title,descriptionand anappearancewith acolor. The colors are green, blue, red, orange, purple, cyan, pink, yellow, teal, coral, white and gray. - Routines: always install paused, so set
enabledAfterInstall: false. - Requirements: name the apps a team connects to. A team never contains credentials; people connect their own accounts in Brainwrite.
teams/<team-id>/: the app’s library entry
These files describe the same team for the app’s library, and they must agree with the package:
team.brainwriteteam.json: the same members, in the same order, with the samekey,name,titleandcolor; and oneroom, with the same name as the package’s first room. Its JSON schema is published at /schema/team.schema.json.skills/<playbook-key>/SKILL.md: one per playbook in the package, with the folder named after the playbook’skey.README.md: a short description of the team, its members and its skills.
The validator reports any difference between these files and the package.
catalog.json: the listing
It has one entry for your team: slug, name, summary (up to 300 characters), category, outcome, setupMinutes, package, manifest, readme, members (the number of agents), skills (the paths of the SKILL.md files) and requires.apps. The library decides which teams are featured, so leave featured out.
Validate
npm install npm run validate
It prints Validated 1 catalog teams when everything is in order. Submitting runs the same checks on your repository, plus text files only within the size limits, no passwords, API keys, tokens or hidden content in any file, and a license file.
The Markdown format
Brainwrite Markdown v1
The format is intentionally one normal Markdown file.
---
brainwrite: 1
id: example-team
release: 1.0.0
name: Example Team
tagline: The outcome in one sentence.
# listing, roles, rooms, playbooks, connections, and paused routines
---
# Example Team
> Give this file to your Chief of Staff.
## Activation
...
## Team
...
The frontmatter is required for a playbook published on Brainwrite because it powers the listing and optional one-click imports. General-purpose agent products can ignore it completely. The Markdown body is authoritative for people and Chief-of-Staff agents, and must stand on its own when pasted into an agent conversation.
The proof block (optional)
A playbook whose approach has a public money claim behind it may carry a proof block. The figure is always the creator's own claim, and it must link a public source — Brainwrite verifies that the post exists, never the revenue.
proof:
amount: "$4,200" # dollar figure as claimed, e.g. "$4,200" or "$12K"
period: monthly # monthly | weekly | daily | total
source:
url: https://x.com/handle/status/1234567890
author: "@handle"
date: 2026-07-14 # optional, YYYY-MM-DD
quote: "exact sentence from the post containing the claim" # optional
credibility: claimed # claimed | receipts (screenshots/proof shown in the source)
Never publish a proof block without a working public source, and never restate someone's claim as a bigger or rounder number than they used.
Required body sections are Activation, Mission, Outcomes, Connections, Team, Chief of Staff, and Completion rule. Add shared rooms, routines, playbooks, and examples only when the team needs them.
Products that cannot create sub-agents should perform each role sequentially and keep the work clearly separated. Products must never treat a connector name as authorization, and routines must stay paused until the user explicitly enables them.
Ready to share yours?
Start from the template, validate it, then submit the repository.