Next-gen documentation made delightful for humans and efficient for agents.
These themes can easily be created with Brief but exist only to demonstrate Brief's versatility. All design credit goes to the awesome designers at these companies.
We encourage you to create your own original themes!
When I imagine the documentation framework everyone will be using in five years, it excels in four core areas:
Delightful — It has a pleasant interface that developers actively want to read (more like Linear, less like Jira).
Optimized for consuming machines — It's always at the bleeding edge of ever-evolving AIO & SEO, and maximizes token efficiency & correctness for agents.
Boosts writer agent productivity — It's easy for an agent to work with and steers agents towards good practices like SEO-friendly content structure and hierarchy (think Rust's compiler errors).
Open source — It's yours, end to end.
Efficient & DiscoverableFor agents & crawlers
ProductiveFor agents
DelightfulFor humans
Brief
I don't believe any existing framework meets more than two of these at the same time.
Their UIs were good when they were first released but are now subpar and sluggish — there's a reason Mintlify's tagline is no longer "Beautiful out of the box".
Companies focused on developer experience have made the best-looking docs:
Cloudflare scores well on Mintlify's agent score, and their UI looks good, but the UX, particularly the cross-tab navigation, leaves a lot to be desired.
Their docs are open and they have some good practices in place for agent contributors like broken link validation and redirect integrity, though these could be optimized (you'll see how).
Linear has the best UI/UX across the board, but its documentation experience is still not as good as its main app. They could also improve their interface for agents.
Brief is built atop a compiler and CLI that maximize agent productivity and eliminate entire categories of problems.
~/docs $ pnpm brief check
WARNredirects-out-of-sync: 21 routing changes have not been synchronized
help: run brief redirects sync before publishing
Linting System
Scan your docs for broken links, improper header hierarchy, missing translations and more.
~/docs $
1Connect your docs source with [setup](/docs/start) and2follow the [guide](/docs/guide) to prepare your first3draft, keeping each example focused on a clear task4and giving your teammates the context to review your5changes before publishing the finished pages online.67Before you publish, use [tools](/docs/flags) to check8for broken links and missing translations, then see9[theme](/docs/theme) for colors and typography that10fit your project while keeping each page consistent11and making the documentation comfortable to browse.
Automatic Rewrites
Automatically manage your redirects and replace inwards links during page movements.
bstack is a bundle of skills for driving your documentation on auto-pilot and ensuring agents know how to tastefully improve your docs.
Brief Usage Guide
/brief
# Brief Usage GuideBrief is a documentation framework. It builds a documentation site from page files andconfiguration that describes how those pages are organized. It supports navigation, multipleversions and languages, search, and text outputs that agents can read. The included starteruses Next.js and CoMark Markdown.## Repair diagnosticsWhen asked to repair a problem, make the repair and verify it before finishing; diagnosis or aproposed next step is not completion. Start with `brief check`. Choose `--json` instead of thetext report when you need structured codes or fix proposals; do not run both without a reason.Read the reported file and help before exploring unrelated commands or configuration.Prefer an offered `brief check --fix` correction to a manual rewrite. Use `--dangerous` onlyafter confirming that the proposed destination or ordering matches the request. Preview with`--dry-run` if the scope is uncertain. The fix command revalidates the result and reports remainingdiagnostics: read that report before running another check or changing the repaired value again.If a fix is unavailable or skipped, correct the source directly using the diagnostic's guidance.Invalid directory names are excluded from the index, so structural CLI commands cannot addressthem. Rename the directory on disk, preserve its contents, and update any parent order entry andlinks that refer to it. This source repair is an exception to using the CLI for structural changes.For manual edits, verify with `brief check` once afterward. Check that the requested diagnosticis absent and that every requested property is satisfied, not just that the command exits zero.Warnings and tips do not fail the command. Preserve explicit configuration requirements insteadof relying on a default that happens to produce the same output today. Stop when the repair iscomplete; report unrelated findings without broadening the task.An invalid `order` declaration can block structural commands. Correct its metadata directly oruse the offered fix. Ordering commands position an entry and write a resolved list; they are notneeded to repair repeated entries or rest markers and can remove an intentionally retained `...`.Broken-link and anchor suggestions require checking the intended destination; preserve the label,query string, and fragment. Match heading depth to the actual hierarchy without adding empty sections.Use `brief tree` when paths or navigation are unclear, not before every content repair. For anunfamiliar format or configuration contract, consult the supplied docs or the installed publictypes before guessing through repeated edits. When searching Markdown in a shell, single-quoteliteral patterns containing backticks or `$()` so the shell does not execute the examples.## Content and authoringA site contains tabs, such as guides and API reference. Each tab contains versions, and eachversion contains pages and groups of pages. Groups can contain other groups.Each page has its own folder. In a CoMark project, it contains one Markdown file per language,such as `en.md` and `pt-PT.md`. The YAML block at the top of each file, calledfrontmatter, contains its title, description, and optional URL slug:```md---title: Create a pagedescription: Add a documentation page with the Brief CLI.---## Add the pageRun `brief page add docs/v1/getting-started` to create a page in the docs tab's v1 version.```The standard Brief UI displays the title as the page's H1 heading. Start headings in the bodyat H2 (`##`) to avoid repeating it. Follow the project's examples and schemas when adding otherfrontmatter fields.Settings shared by all translations belong in `page.meta.toml`. These include `draft`,`redirectFrom`, and `routeKey`. The route key is a stable identifier that lets Brief recognizethe same page after it moves. Keep it when moving a page. Site, tab, version, and group settingsbelong in their respective `*.meta.toml` files; their `order` fields control navigation order.Link to the URL a reader would visit, including its language, tab, version, and heading fragmentwhere needed. Do not link to the Markdown file on disk. Brief checks whether the destinationexists; it does not guess which version or translation you intended.CoMark adds components to Markdown through directives. Use the components and propertiesconfigured by the project. For example, the standard UI includes this callout:```md:::Callout{color="yellow" icon="warning" title="Before you start"}Create the tab and version before adding a page inside them.:::```## Prefer the CLI for structureUse the CLI to add, move, and remove documentation. These commands update the files that describethe site's structure and can fix links when URLs change. Edit page prose directly. Use settingscommands for metadata when the page format supports them.Inspect a target with `brief page inspect docs/v1/getting-started --locale en --json`.The result includes authored values, effective values, source files, and published routes.Use `page update`, `group update`, `tab update`, `version update`, or `site update` to changesettings. Structural paths are relative to the documentation root; site commands need no path.```shpnpmexec brief page update docs/v1/getting-started --locale en --title "Getting started"pnpmexec brief page update docs/v1/getting-started --hidden true --dry-runpnpmexec brief page update docs/v1/getting-started --unset hidden```Boolean flags take `true` or `false`. `--set key=JSON` accepts typed values such as arrays;`--unset key` removes a declaration. `--input file.json` (or `--input -` for stdin) accepts`{"set":{},"unset":[],"custom":{"set":{},"unset":[]}}`. Custom metadata uses the explicit`custom` object and cannot overwrite built-in fields. Locale-specific structural edits writethe locale override file. Page-wide settings remain in `page.meta.toml`.Changes are reloaded and validated before writing. Slug updates migrate supported links;use `--no-update-links` to leave them unchanged and synchronize redirects before publication.Settings commands can repair missing required metadata and route collisions from retained source.Unrelated existing errors remain reported; new validation errors reject the edit. Malformed YAMLor TOML still needs a direct syntax correction. A repaired route collision must produce anunambiguous index; link migration is unavailable when the original routes were ambiguous.Run the installed CLI from the documentation app, for example with `pnpm exec brief`.Page and group paths are relative to the documentation folder (`brief/case/` by default).Use `brief tree` when you need to discover paths or inspect navigation. A page must belong to anexisting version. When the task already identifies the target, use the matching command directly;inspect its help if you need an option. `page move` moves one page, while `group move` moves a groupand its descendants. Do not remove an emptied parent group unless that is part of the request.```shpnpmexec brief page add docs/v1/getting-started --title "Getting started" --description "Create your first Brief page."pnpmexec brief page move docs/v1/old-name docs/v1/new-name --dry-runpnpmexec brief page move docs/v1/old-name docs/v1/new-namepnpmexec brief page remove docs/v1/obsolete --redirect-to docs/v1/replacementpnpmexec brief group add docs/v1/guides --title "Guides"pnpmexec brief version add v2 --tab docs --from v1pnpmexec brief locale add pt-PT --name "Portuguese (PT)"```### Command referenceUse `page order <path> --before <sibling-path>` or `--after <sibling-path>` to position an entry.`--first` and `--last` are also available; no placement means last. Groups, tabs, and versionshave the same `order` command. Paths identify siblings under the same parent. The command writestheir current resolved sequence with the requested placement; future unlisted children stillappear at the bottom alphabetically. Use `--locale` for a localized order and `--dry-run` to preview.Choose the command for the entry being positioned, not the metadata file that stores its order:`group order` positions a group within its parent; `version order` positions a version within a tab.Prefix each command with `brief`. Use `brief <command> --help` for its full options.| Command | Purpose || --------------------------------- | ------------------------------------------------------------------------------------------ || `init [dir]` | Create a Next.js documentation site with CoMark, search, and agent skills. || `tree [path]` | Show the documentation structure; add `--all-versions` to include older versions. || `check` | Check pages, settings, and links. || `page add <path>` | Add a page; set its `--title` and `--description`. || `page move <from> <to>` | Move a page and update supported links. Alias: `mv`. || `page remove <path>` | Remove a page; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `group add <path>` | Add a group; set its `--title`. || `group move <from> <to>` | Move a group and its pages. Alias: `mv`. || `group remove <path>` | Remove a group and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab list` | List the site's tabs. || `tab add <tab>` | Add a tab with `--title <text>` and an optional initial `--version <name>`. || `tab rename <tab> <name>` | Rename a tab. || `tab remove <tab>` | Remove a tab and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab set-default <tab>` | Choose the default tab. || `version list` | List versions in a tab. || `version add <version>` | Copy a version with `--from <version>`, or start with `--empty`. || `version rename <version> <name>` | Rename a version. || `version remove <version>` | Delete a version and its pages; requires `--force`. || `version set-default <version>` | Choose the default version for a tab. || `locale list` | List the site's languages. || `locale add <tag>` | Register a language; provide its display name with `--name <text>`. || `locale remove <tag>` | Remove a language from the site configuration; keep its content files. || `locale set-default <tag>` | Choose the default language. || `updates sync [path]` | Record changed body hashes and update times; defaults to all pages, including drafts. || `redirects sync` | Record current page URLs and update redirects from older URLs. || `skills install` | Install the Brief skills; use `--agent`, `--dir`, or `--dry-run` as needed. || `help [command]` | Show command help. |When a site has several tabs, version commands need `--tab`. `page add` creates files for everylanguage enabled for that version; complete them according to the project's translation policy.Use `page add --extension` if the project supports several writable page formats. `locale add`only registers the language, so translations still need to be written.## Moving pages and keeping old links workingMoving a page creates two separate problems. Links in your documentation may still point to itsold URL, and readers may have bookmarked that URL or found it on another website.`page move` addresses the first problem by updating links in your page files. Use `--dry-run`to see the proposed changes before applying them. Link updates depend on the page format'sediting support, so read any notices about links left unchanged and run `brief check` afterward.Use `--no-update-links` when you intend to leave links unchanged.A redirect addresses the second problem: it sends a reader from an old URL to the page's currentURL. Brief records page URLs in `brief.history.json`. The sync command compares that record withthe current pages, creates the necessary redirects, and records the new URLs for next time:```shpnpmexec brief redirects sync --dry-runpnpmexec brief redirects sync```Review the preview and run sync when the URL changes are ready for release, before publishing.Include the resulting history and page metadata in the same commit when committing is part ofthe task. Sync covers the documentation folder, so check for unrelated pending URL changes beforeapplying it. Let the command maintain the history file.When removing a page, `--redirect-to <page>` records where to send its readers during the nextsync. Use `--allow-404` only when the old URL should return "page not found." Do not choose itmerely to bypass the redirect decision.## Recording page update timesAfter body edits and link rewrites, preview `pnpm exec brief updates sync --dry-run` and synchronizewhen the content is ready to publish. With no path, this updates all changed pages, includingdrafts. Pass a page path and optional `--locale` to limit the operation to the intended content.Use `--date YYYY-MM-DD` for midnight UTC or `--time` with an ISO timestamp and timezone when aspecific update time is required. Otherwise the command uses the current time.The command maintains `updatedAt` and `contentHash` together in localized frontmatter. Do notcalculate or edit hashes manually. Frontmatter-only edits do not require synchronization.`updated-at-out-of-sync` warnings identify missing checkpoints and body edits awaiting sync.Commit the resulting metadata with the content when committing is part of the task.## Checking your changesRun `brief check` after other edits too. Add `--drafts` to include draft pages. Errors fail the command.Use `brief check --fix --dry-run` to preview mechanical corrections and `brief check --fix` toapply them. Add `--dangerous` to permit suggested broken-link and anchor replacements, removalof stale order entries, and selection of the first repeated `...` marker. Review these changes:they infer author intent. Fixes preserve code examples and only edit syntax supported by the format.The report includes applied or skipped corrections and diagnostics remaining after validation.JSON diagnostics carry concrete proposals in `fix`, including their safety and persistence effects.Terminal diagnostics advertise proposals with a colored `fixable` command. A format may still lackthe editing capability needed to apply a proposal; the fix report explains skipped changes.Overlapping corrections are recomputed against the updated source before writing.`--fail-on warning` makes warnings fail too. Follow the project's CI settings. Quality tips aresuggestions and do not cause failure; `--no-tips` hides them.For agent-facing changes, read the page's `.md` URL as well as its HTML page. If a custom componentadds information through attributes or generated content, give it a Markdown export so the textversion includes that information. `brief check` warns about empty portable Markdown and unclosedcode fences.Fix problems caused by your changes and report existing problems separately. Use the app'sdevelopment or build command when you need to check how a page renders. Edit the source pagesand configuration; Brief recreates files such as `brief/generated.ts` and search indexes.
Thermonuclear SEO Review
/thermonuclear-docs-seo-review
# Thermonuclear SEO ReviewReview how well the documentation helps readers find an answer, understand it, and completetheir task. Be demanding about accuracy and page purpose. Explain each problem with evidencefrom the pages, and propose specific improvements.This skill covers documentation content and its organization. Analytics, advertising, backlinks,and changes to the application or hosting setup require a separate request.## Choose what to reviewUse the pages or folders the user names. The following selectors are also supported; they areinstructions to the agent, not CLI commands.| Selector | What to review || ---------------------- | ------------------------------------------------------------------------------------- || One or more page paths | Those pages. || One or more folders | Pages in those folders and their subfolders. || `all` | All documentation in the configured Brief site. || `changed` | Documentation changed on the branch, including staged, unstaged, and untracked files. || `changed base=<ref>` | Changed documentation compared with the specified Git reference. || `staged` | Documentation prepared for the next commit, read from the Git index. |If the user does not specify a scope, use `changed`. Use their chosen base branch, the currentPR's target branch, or the repository's default branch, in that order. Compare from the lastcommit shared by that branch and the current branch, and report the branch and commit used.The upstream tracking branch is not necessarily the PR target. If you cannot establish thebase, review the local changes you can identify and explain what is missing. Ask for the basewhen it is needed to complete the requested review.For `changed`, read each changed page in full but focus on the changed material. For `staged`,read the staged version, not the working copy, and use staged versions of related files whereneeded. A deleted or renamed page can leave gaps in coverage and break incoming links; includethose effects in the review. If no documentation matches, report that instead of reviewingthe whole site.Use the Brief configuration to identify the documentation folder and supported page formats.Not every Markdown file in the repository is a documentation page. Read neighboring pages whenneeded to understand prerequisites, repeated explanations, or links, and label suggestions thatwould affect pages outside the selected scope. For a large review, list the pages and workthrough related groups. State which pages you could not review.## Understand the intended readerRead the project's writing conventions, glossary, version policy, and translation policy.For each page, identify the reader's question, the knowledge it assumes, and the result itpromises. Judge the page against its purpose: a short API reference may be complete, while atutorial needs enough steps for a reader to reach the promised result.Check technical claims against available implementation, tests, or product documentation.Distinguish a demonstrated error from an editorial judgment or a claim that still needsverification. Do not invent product behavior, limits, performance results, or example output.Do not run examples with unknown side effects just to review them.Use the installed `brief check` command to find problems with metadata and links, and`brief tree --all-versions` to see how pages are organized. Run them from the documentation app,using its configured paths and package manager. For `staged`, these commands inspect theworking copy unless run against a separate copy of the staged files; do not present theirresults as validation of staged content. Explain checks you could not run.## Review the content and organizationLook for the following problems and explain how each affects the reader:- Missing prerequisites, incomplete steps, unclear expected results, or omitted limits and failure recovery. Check whether a reader can actually finish the task.- Examples with unexplained inputs, missing output, or assumptions that do not hold for the documented version. Label examples whose behavior you could not verify.- Overlapping pages that leave readers unsure which explanation to follow. Cite the repeated passages before recommending that pages be combined, split, or reordered.- Related pages that are difficult to discover. Suggest an overview page and supporting pages when that would help readers navigate a topic; distinguish existing pages from proposed ones.- Claims separated from their conditions, ambiguous pronouns, missing units, or unstated versions. Keep enough context in each passage for it to make sense when quoted on its own.- Inconsistent terminology or unexplained acronyms. Preserve distinctions that matter between products, versions, and languages.- Instructions contradicted by current behavior. Age alone does not make documentation stale.For a proposed link, give the source passage, destination page and heading, suggested link text,and reason the reader needs it. Verify the destination exists in the appropriate version andlanguage. Link to the published page URL, not its Markdown file, and do not invent heading anchors.Suggest concrete replacements for weak titles, descriptions, headings, and introductions.Recommend a table or diagram when it would explain a comparison or relationship more clearly,and describe what it should show.Do not impose keyword density, link quotas, word counts, mandatory FAQs, or duplicate pagescreated only to target search terms. Passing Brief's checks does not guarantee search rankingor citations by agents. Text exports make documentation accessible to agents; they do not provethat a search engine has indexed it.## Present findings and make requested editsA review produces findings and proposed changes. Apply edits when the user has requested them,including authorization already given in the conversation.Order findings by their effect on readers and your confidence in the evidence. Separate`high priority` findings from `nit picky` suggestions. Each finding should name the page andsection, show the evidence, explain the reader impact, and provide replacement prose, anoutline, or a specific link proposal. State any unresolved factual question and how to check it.Group repeated symptoms that share a cause; do not invent findings to meet a quota.If you propose moving or combining pages, identify the affected URLs, headings, and incominglinks. Moving a page may require updates to links in the documentation. Readers arriving throughbookmarks or external links also need redirects from the old URLs to the new ones.When editing, use Brief's CLI for structural changes and preserve each page's `routeKey` so Briefcan recognize it after a move. Preview `brief redirects sync --dry-run` and apply sync when theURL changes are ready for release. It compares saved URLs with current pages, updates redirects,and records the current URLs for the next comparison. Review the complete preview before applyingit, since other page moves may be pending. For more authoring details, read `../brief/SKILL.md`.Preserve technical meaning and code examples unless correcting them is part of the task.Run the relevant documentation checks after edits and verify new links and headings. Reportcompiler problems separately from content findings. Finish with the pages reviewed, any editsmade, checks and their results, and unresolved questions.
Update documentation
/update-docs
# Update documentationDecide which Brief documentation needs to change by identifying the consequences for its readers.Follow the project's `AGENTS.md` for local conventions and the [Brief skill](../brief/SKILL.md),when available, for authoring mechanics, structural edits, and validation.## Establish the change and audienceIdentify the requested scope: a code comparison, working changes, a release, or a described productchange. Use the available repository or review tools without assuming a hosting platform, targetbranch, or that the latest commit contains the whole change. Preserve existing local edits andinclude uncommitted product changes only when they are in scope. Ask for the comparison if itcannot be established from the request and repository context.Read the relevant implementation and tests alongside the change description. Confirm whichbehavior and product versions they describe before using them to update examples. If evidenceis missing or contradictory, identify the uncertainty rather than inventing a supported behavior.Identify who uses the affected documentation and what they are trying to accomplish. Implementationdetails may matter in a contributor guide while adding nothing useful to an end-user tutorial.## Decide what readers need to knowFor each change, determine whether it affects what readers can do, must do, or can rely on.Look for changes to public APIs, commands, configuration, defaults, prerequisites, limitations,error recovery, and supported workflows. Check whether existing explanations, examples, orworkarounds become inaccurate.If the documentation remains accurate and sufficient, leave it unchanged. Internal refactors andprivate instrumentation usually need no user documentation. Do not infer performance benefits ornew guarantees from implementation changes without supporting evidence. A bug fix may need noedit when it restores documented behavior, but may make a documented workaround obsolete.Find all affected explanations, including repeated facts in guides, reference pages, examples,and troubleshooting advice. Search for concepts as well as changed identifiers: the same defaultmay appear as a number in a table and as prose elsewhere. Update only the versions to which thechange applies, and follow the project's translation policy.## Choose the editorial change- Edit an existing page when the reader's task stays the same but its instructions or explanation change. Add a section when a new aspect belongs within that task.- Add a page when a distinct reader task or concept needs its own coherent explanation and a discoverable place in the documentation. A new API symbol alone does not require a new page.- Combine or move pages when the change makes their existing organization confusing or forces readers to assemble one workflow from overlapping explanations. Preserve useful content and consider how readers will find it afterward.- Remove a section or page when its guidance is obsolete and no longer serves a supported audience. Check whether older versions or migrating users still need it before removing it.Keep introductory workflows focused. An optional advanced feature can belong in a guide orreference without complicating the quickstart. Explain current behavior directly; add old-to-newinstructions where users actually need to migrate. Preserve supported compatibility paths, andfollow the project's release policy for changelog entries.## Make complete, focused editsUpdate every affected statement while preserving unrelated explanations, examples, qualifications,and structure. Keep edits within the requested scope; avoid opportunistic rewriting or a broadreorganization. Match the surrounding style and explain consequences in terms readers can act on.Documentation should help them use the product, not narrate how its implementation was changed.Check signatures, option names, defaults, and sample output against the relevant implementationor tests. Retain useful prerequisites and limitations. Remove obsolete workarounds withoutdiscarding advice that still applies. Use the Brief skill and project instructions to carry outany structural changes and preserve navigation and link continuity.## Verify and reportReview the resulting pages for factual accuracy, contradictory guidance, missing affected examples,and unsupported claims. Check that the reader can still complete the task and that unrelatedinformation survived. Run the relevant project and Brief validation, and test changed executableexamples when possible. A successful build does not establish editorial correctness.Summarize the reader-facing changes covered, the checks performed, and any unresolved evidence,translation, or release work. If no edits were needed, explain why the existing documentationalready covers the behavior. Distinguish pre-existing problems from problems introduced by the edit.
Brief visual customization
/styling
Migration guide from different docs
/migrate
3D diagram usage
/plate
Brief Usage Guide
# Brief Usage GuideBrief is a documentation framework. It builds a documentation site from page files andconfiguration that describes how those pages are organized. It supports navigation, multipleversions and languages, search, and text outputs that agents can read. The included starteruses Next.js and CoMark Markdown.## Repair diagnosticsWhen asked to repair a problem, make the repair and verify it before finishing; diagnosis or aproposed next step is not completion. Start with `brief check`. Choose `--json` instead of thetext report when you need structured codes or fix proposals; do not run both without a reason.Read the reported file and help before exploring unrelated commands or configuration.Prefer an offered `brief check --fix` correction to a manual rewrite. Use `--dangerous` onlyafter confirming that the proposed destination or ordering matches the request. Preview with`--dry-run` if the scope is uncertain. The fix command revalidates the result and reports remainingdiagnostics: read that report before running another check or changing the repaired value again.If a fix is unavailable or skipped, correct the source directly using the diagnostic's guidance.Invalid directory names are excluded from the index, so structural CLI commands cannot addressthem. Rename the directory on disk, preserve its contents, and update any parent order entry andlinks that refer to it. This source repair is an exception to using the CLI for structural changes.For manual edits, verify with `brief check` once afterward. Check that the requested diagnosticis absent and that every requested property is satisfied, not just that the command exits zero.Warnings and tips do not fail the command. Preserve explicit configuration requirements insteadof relying on a default that happens to produce the same output today. Stop when the repair iscomplete; report unrelated findings without broadening the task.An invalid `order` declaration can block structural commands. Correct its metadata directly oruse the offered fix. Ordering commands position an entry and write a resolved list; they are notneeded to repair repeated entries or rest markers and can remove an intentionally retained `...`.Broken-link and anchor suggestions require checking the intended destination; preserve the label,query string, and fragment. Match heading depth to the actual hierarchy without adding empty sections.Use `brief tree` when paths or navigation are unclear, not before every content repair. For anunfamiliar format or configuration contract, consult the supplied docs or the installed publictypes before guessing through repeated edits. When searching Markdown in a shell, single-quoteliteral patterns containing backticks or `$()` so the shell does not execute the examples.## Content and authoringA site contains tabs, such as guides and API reference. Each tab contains versions, and eachversion contains pages and groups of pages. Groups can contain other groups.Each page has its own folder. In a CoMark project, it contains one Markdown file per language,such as `en.md` and `pt-PT.md`. The YAML block at the top of each file, calledfrontmatter, contains its title, description, and optional URL slug:```md---title: Create a pagedescription: Add a documentation page with the Brief CLI.---## Add the pageRun `brief page add docs/v1/getting-started` to create a page in the docs tab's v1 version.```The standard Brief UI displays the title as the page's H1 heading. Start headings in the bodyat H2 (`##`) to avoid repeating it. Follow the project's examples and schemas when adding otherfrontmatter fields.Settings shared by all translations belong in `page.meta.toml`. These include `draft`,`redirectFrom`, and `routeKey`. The route key is a stable identifier that lets Brief recognizethe same page after it moves. Keep it when moving a page. Site, tab, version, and group settingsbelong in their respective `*.meta.toml` files; their `order` fields control navigation order.Link to the URL a reader would visit, including its language, tab, version, and heading fragmentwhere needed. Do not link to the Markdown file on disk. Brief checks whether the destinationexists; it does not guess which version or translation you intended.CoMark adds components to Markdown through directives. Use the components and propertiesconfigured by the project. For example, the standard UI includes this callout:```md:::Callout{color="yellow" icon="warning" title="Before you start"}Create the tab and version before adding a page inside them.:::```## Prefer the CLI for structureUse the CLI to add, move, and remove documentation. These commands update the files that describethe site's structure and can fix links when URLs change. Edit page prose directly. Use settingscommands for metadata when the page format supports them.Inspect a target with `brief page inspect docs/v1/getting-started --locale en --json`.The result includes authored values, effective values, source files, and published routes.Use `page update`, `group update`, `tab update`, `version update`, or `site update` to changesettings. Structural paths are relative to the documentation root; site commands need no path.```shpnpmexec brief page update docs/v1/getting-started --locale en --title "Getting started"pnpmexec brief page update docs/v1/getting-started --hidden true --dry-runpnpmexec brief page update docs/v1/getting-started --unset hidden```Boolean flags take `true` or `false`. `--set key=JSON` accepts typed values such as arrays;`--unset key` removes a declaration. `--input file.json` (or `--input -` for stdin) accepts`{"set":{},"unset":[],"custom":{"set":{},"unset":[]}}`. Custom metadata uses the explicit`custom` object and cannot overwrite built-in fields. Locale-specific structural edits writethe locale override file. Page-wide settings remain in `page.meta.toml`.Changes are reloaded and validated before writing. Slug updates migrate supported links;use `--no-update-links` to leave them unchanged and synchronize redirects before publication.Settings commands can repair missing required metadata and route collisions from retained source.Unrelated existing errors remain reported; new validation errors reject the edit. Malformed YAMLor TOML still needs a direct syntax correction. A repaired route collision must produce anunambiguous index; link migration is unavailable when the original routes were ambiguous.Run the installed CLI from the documentation app, for example with `pnpm exec brief`.Page and group paths are relative to the documentation folder (`brief/case/` by default).Use `brief tree` when you need to discover paths or inspect navigation. A page must belong to anexisting version. When the task already identifies the target, use the matching command directly;inspect its help if you need an option. `page move` moves one page, while `group move` moves a groupand its descendants. Do not remove an emptied parent group unless that is part of the request.```shpnpmexec brief page add docs/v1/getting-started --title "Getting started" --description "Create your first Brief page."pnpmexec brief page move docs/v1/old-name docs/v1/new-name --dry-runpnpmexec brief page move docs/v1/old-name docs/v1/new-namepnpmexec brief page remove docs/v1/obsolete --redirect-to docs/v1/replacementpnpmexec brief group add docs/v1/guides --title "Guides"pnpmexec brief version add v2 --tab docs --from v1pnpmexec brief locale add pt-PT --name "Portuguese (PT)"```### Command referenceUse `page order <path> --before <sibling-path>` or `--after <sibling-path>` to position an entry.`--first` and `--last` are also available; no placement means last. Groups, tabs, and versionshave the same `order` command. Paths identify siblings under the same parent. The command writestheir current resolved sequence with the requested placement; future unlisted children stillappear at the bottom alphabetically. Use `--locale` for a localized order and `--dry-run` to preview.Choose the command for the entry being positioned, not the metadata file that stores its order:`group order` positions a group within its parent; `version order` positions a version within a tab.Prefix each command with `brief`. Use `brief <command> --help` for its full options.| Command | Purpose || --------------------------------- | ------------------------------------------------------------------------------------------ || `init [dir]` | Create a Next.js documentation site with CoMark, search, and agent skills. || `tree [path]` | Show the documentation structure; add `--all-versions` to include older versions. || `check` | Check pages, settings, and links. || `page add <path>` | Add a page; set its `--title` and `--description`. || `page move <from> <to>` | Move a page and update supported links. Alias: `mv`. || `page remove <path>` | Remove a page; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `group add <path>` | Add a group; set its `--title`. || `group move <from> <to>` | Move a group and its pages. Alias: `mv`. || `group remove <path>` | Remove a group and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab list` | List the site's tabs. || `tab add <tab>` | Add a tab with `--title <text>` and an optional initial `--version <name>`. || `tab rename <tab> <name>` | Rename a tab. || `tab remove <tab>` | Remove a tab and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab set-default <tab>` | Choose the default tab. || `version list` | List versions in a tab. || `version add <version>` | Copy a version with `--from <version>`, or start with `--empty`. || `version rename <version> <name>` | Rename a version. || `version remove <version>` | Delete a version and its pages; requires `--force`. || `version set-default <version>` | Choose the default version for a tab. || `locale list` | List the site's languages. || `locale add <tag>` | Register a language; provide its display name with `--name <text>`. || `locale remove <tag>` | Remove a language from the site configuration; keep its content files. || `locale set-default <tag>` | Choose the default language. || `updates sync [path]` | Record changed body hashes and update times; defaults to all pages, including drafts. || `redirects sync` | Record current page URLs and update redirects from older URLs. || `skills install` | Install the Brief skills; use `--agent`, `--dir`, or `--dry-run` as needed. || `help [command]` | Show command help. |When a site has several tabs, version commands need `--tab`. `page add` creates files for everylanguage enabled for that version; complete them according to the project's translation policy.Use `page add --extension` if the project supports several writable page formats. `locale add`only registers the language, so translations still need to be written.## Moving pages and keeping old links workingMoving a page creates two separate problems. Links in your documentation may still point to itsold URL, and readers may have bookmarked that URL or found it on another website.`page move` addresses the first problem by updating links in your page files. Use `--dry-run`to see the proposed changes before applying them. Link updates depend on the page format'sediting support, so read any notices about links left unchanged and run `brief check` afterward.Use `--no-update-links` when you intend to leave links unchanged.A redirect addresses the second problem: it sends a reader from an old URL to the page's currentURL. Brief records page URLs in `brief.history.json`. The sync command compares that record withthe current pages, creates the necessary redirects, and records the new URLs for next time:```shpnpmexec brief redirects sync --dry-runpnpmexec brief redirects sync```Review the preview and run sync when the URL changes are ready for release, before publishing.Include the resulting history and page metadata in the same commit when committing is part ofthe task. Sync covers the documentation folder, so check for unrelated pending URL changes beforeapplying it. Let the command maintain the history file.When removing a page, `--redirect-to <page>` records where to send its readers during the nextsync. Use `--allow-404` only when the old URL should return "page not found." Do not choose itmerely to bypass the redirect decision.## Recording page update timesAfter body edits and link rewrites, preview `pnpm exec brief updates sync --dry-run` and synchronizewhen the content is ready to publish. With no path, this updates all changed pages, includingdrafts. Pass a page path and optional `--locale` to limit the operation to the intended content.Use `--date YYYY-MM-DD` for midnight UTC or `--time` with an ISO timestamp and timezone when aspecific update time is required. Otherwise the command uses the current time.The command maintains `updatedAt` and `contentHash` together in localized frontmatter. Do notcalculate or edit hashes manually. Frontmatter-only edits do not require synchronization.`updated-at-out-of-sync` warnings identify missing checkpoints and body edits awaiting sync.Commit the resulting metadata with the content when committing is part of the task.## Checking your changesRun `brief check` after other edits too. Add `--drafts` to include draft pages. Errors fail the command.Use `brief check --fix --dry-run` to preview mechanical corrections and `brief check --fix` toapply them. Add `--dangerous` to permit suggested broken-link and anchor replacements, removalof stale order entries, and selection of the first repeated `...` marker. Review these changes:they infer author intent. Fixes preserve code examples and only edit syntax supported by the format.The report includes applied or skipped corrections and diagnostics remaining after validation.JSON diagnostics carry concrete proposals in `fix`, including their safety and persistence effects.Terminal diagnostics advertise proposals with a colored `fixable` command. A format may still lackthe editing capability needed to apply a proposal; the fix report explains skipped changes.Overlapping corrections are recomputed against the updated source before writing.`--fail-on warning` makes warnings fail too. Follow the project's CI settings. Quality tips aresuggestions and do not cause failure; `--no-tips` hides them.For agent-facing changes, read the page's `.md` URL as well as its HTML page. If a custom componentadds information through attributes or generated content, give it a Markdown export so the textversion includes that information. `brief check` warns about empty portable Markdown and unclosedcode fences.Fix problems caused by your changes and report existing problems separately. Use the app'sdevelopment or build command when you need to check how a page renders. Edit the source pagesand configuration; Brief recreates files such as `brief/generated.ts` and search indexes.
Thermonuclear SEO Review
# Thermonuclear SEO ReviewReview how well the documentation helps readers find an answer, understand it, and completetheir task. Be demanding about accuracy and page purpose. Explain each problem with evidencefrom the pages, and propose specific improvements.This skill covers documentation content and its organization. Analytics, advertising, backlinks,and changes to the application or hosting setup require a separate request.## Choose what to reviewUse the pages or folders the user names. The following selectors are also supported; they areinstructions to the agent, not CLI commands.| Selector | What to review || ---------------------- | ------------------------------------------------------------------------------------- || One or more page paths | Those pages. || One or more folders | Pages in those folders and their subfolders. || `all` | All documentation in the configured Brief site. || `changed` | Documentation changed on the branch, including staged, unstaged, and untracked files. || `changed base=<ref>` | Changed documentation compared with the specified Git reference. || `staged` | Documentation prepared for the next commit, read from the Git index. |If the user does not specify a scope, use `changed`. Use their chosen base branch, the currentPR's target branch, or the repository's default branch, in that order. Compare from the lastcommit shared by that branch and the current branch, and report the branch and commit used.The upstream tracking branch is not necessarily the PR target. If you cannot establish thebase, review the local changes you can identify and explain what is missing. Ask for the basewhen it is needed to complete the requested review.For `changed`, read each changed page in full but focus on the changed material. For `staged`,read the staged version, not the working copy, and use staged versions of related files whereneeded. A deleted or renamed page can leave gaps in coverage and break incoming links; includethose effects in the review. If no documentation matches, report that instead of reviewingthe whole site.Use the Brief configuration to identify the documentation folder and supported page formats.Not every Markdown file in the repository is a documentation page. Read neighboring pages whenneeded to understand prerequisites, repeated explanations, or links, and label suggestions thatwould affect pages outside the selected scope. For a large review, list the pages and workthrough related groups. State which pages you could not review.## Understand the intended readerRead the project's writing conventions, glossary, version policy, and translation policy.For each page, identify the reader's question, the knowledge it assumes, and the result itpromises. Judge the page against its purpose: a short API reference may be complete, while atutorial needs enough steps for a reader to reach the promised result.Check technical claims against available implementation, tests, or product documentation.Distinguish a demonstrated error from an editorial judgment or a claim that still needsverification. Do not invent product behavior, limits, performance results, or example output.Do not run examples with unknown side effects just to review them.Use the installed `brief check` command to find problems with metadata and links, and`brief tree --all-versions` to see how pages are organized. Run them from the documentation app,using its configured paths and package manager. For `staged`, these commands inspect theworking copy unless run against a separate copy of the staged files; do not present theirresults as validation of staged content. Explain checks you could not run.## Review the content and organizationLook for the following problems and explain how each affects the reader:- Missing prerequisites, incomplete steps, unclear expected results, or omitted limits and failure recovery. Check whether a reader can actually finish the task.- Examples with unexplained inputs, missing output, or assumptions that do not hold for the documented version. Label examples whose behavior you could not verify.- Overlapping pages that leave readers unsure which explanation to follow. Cite the repeated passages before recommending that pages be combined, split, or reordered.- Related pages that are difficult to discover. Suggest an overview page and supporting pages when that would help readers navigate a topic; distinguish existing pages from proposed ones.- Claims separated from their conditions, ambiguous pronouns, missing units, or unstated versions. Keep enough context in each passage for it to make sense when quoted on its own.- Inconsistent terminology or unexplained acronyms. Preserve distinctions that matter between products, versions, and languages.- Instructions contradicted by current behavior. Age alone does not make documentation stale.For a proposed link, give the source passage, destination page and heading, suggested link text,and reason the reader needs it. Verify the destination exists in the appropriate version andlanguage. Link to the published page URL, not its Markdown file, and do not invent heading anchors.Suggest concrete replacements for weak titles, descriptions, headings, and introductions.Recommend a table or diagram when it would explain a comparison or relationship more clearly,and describe what it should show.Do not impose keyword density, link quotas, word counts, mandatory FAQs, or duplicate pagescreated only to target search terms. Passing Brief's checks does not guarantee search rankingor citations by agents. Text exports make documentation accessible to agents; they do not provethat a search engine has indexed it.## Present findings and make requested editsA review produces findings and proposed changes. Apply edits when the user has requested them,including authorization already given in the conversation.Order findings by their effect on readers and your confidence in the evidence. Separate`high priority` findings from `nit picky` suggestions. Each finding should name the page andsection, show the evidence, explain the reader impact, and provide replacement prose, anoutline, or a specific link proposal. State any unresolved factual question and how to check it.Group repeated symptoms that share a cause; do not invent findings to meet a quota.If you propose moving or combining pages, identify the affected URLs, headings, and incominglinks. Moving a page may require updates to links in the documentation. Readers arriving throughbookmarks or external links also need redirects from the old URLs to the new ones.When editing, use Brief's CLI for structural changes and preserve each page's `routeKey` so Briefcan recognize it after a move. Preview `brief redirects sync --dry-run` and apply sync when theURL changes are ready for release. It compares saved URLs with current pages, updates redirects,and records the current URLs for the next comparison. Review the complete preview before applyingit, since other page moves may be pending. For more authoring details, read `../brief/SKILL.md`.Preserve technical meaning and code examples unless correcting them is part of the task.Run the relevant documentation checks after edits and verify new links and headings. Reportcompiler problems separately from content findings. Finish with the pages reviewed, any editsmade, checks and their results, and unresolved questions.
Update documentation
# Update documentationDecide which Brief documentation needs to change by identifying the consequences for its readers.Follow the project's `AGENTS.md` for local conventions and the [Brief skill](../brief/SKILL.md),when available, for authoring mechanics, structural edits, and validation.## Establish the change and audienceIdentify the requested scope: a code comparison, working changes, a release, or a described productchange. Use the available repository or review tools without assuming a hosting platform, targetbranch, or that the latest commit contains the whole change. Preserve existing local edits andinclude uncommitted product changes only when they are in scope. Ask for the comparison if itcannot be established from the request and repository context.Read the relevant implementation and tests alongside the change description. Confirm whichbehavior and product versions they describe before using them to update examples. If evidenceis missing or contradictory, identify the uncertainty rather than inventing a supported behavior.Identify who uses the affected documentation and what they are trying to accomplish. Implementationdetails may matter in a contributor guide while adding nothing useful to an end-user tutorial.## Decide what readers need to knowFor each change, determine whether it affects what readers can do, must do, or can rely on.Look for changes to public APIs, commands, configuration, defaults, prerequisites, limitations,error recovery, and supported workflows. Check whether existing explanations, examples, orworkarounds become inaccurate.If the documentation remains accurate and sufficient, leave it unchanged. Internal refactors andprivate instrumentation usually need no user documentation. Do not infer performance benefits ornew guarantees from implementation changes without supporting evidence. A bug fix may need noedit when it restores documented behavior, but may make a documented workaround obsolete.Find all affected explanations, including repeated facts in guides, reference pages, examples,and troubleshooting advice. Search for concepts as well as changed identifiers: the same defaultmay appear as a number in a table and as prose elsewhere. Update only the versions to which thechange applies, and follow the project's translation policy.## Choose the editorial change- Edit an existing page when the reader's task stays the same but its instructions or explanation change. Add a section when a new aspect belongs within that task.- Add a page when a distinct reader task or concept needs its own coherent explanation and a discoverable place in the documentation. A new API symbol alone does not require a new page.- Combine or move pages when the change makes their existing organization confusing or forces readers to assemble one workflow from overlapping explanations. Preserve useful content and consider how readers will find it afterward.- Remove a section or page when its guidance is obsolete and no longer serves a supported audience. Check whether older versions or migrating users still need it before removing it.Keep introductory workflows focused. An optional advanced feature can belong in a guide orreference without complicating the quickstart. Explain current behavior directly; add old-to-newinstructions where users actually need to migrate. Preserve supported compatibility paths, andfollow the project's release policy for changelog entries.## Make complete, focused editsUpdate every affected statement while preserving unrelated explanations, examples, qualifications,and structure. Keep edits within the requested scope; avoid opportunistic rewriting or a broadreorganization. Match the surrounding style and explain consequences in terms readers can act on.Documentation should help them use the product, not narrate how its implementation was changed.Check signatures, option names, defaults, and sample output against the relevant implementationor tests. Retain useful prerequisites and limitations. Remove obsolete workarounds withoutdiscarding advice that still applies. Use the Brief skill and project instructions to carry outany structural changes and preserve navigation and link continuity.## Verify and reportReview the resulting pages for factual accuracy, contradictory guidance, missing affected examples,and unsupported claims. Check that the reader can still complete the task and that unrelatedinformation survived. Run the relevant project and Brief validation, and test changed executableexamples when possible. A successful build does not establish editorial correctness.Summarize the reader-facing changes covered, the checks performed, and any unresolved evidence,translation, or release work. If no edits were needed, explain why the existing documentationalready covers the behavior. Distinguish pre-existing problems from problems introduced by the edit.
Brief visual customization
Migration guide from different docs
3D diagram usage
Brief Usage Guide
# Brief Usage GuideBrief is a documentation framework. It builds a documentation site from page files andconfiguration that describes how those pages are organized. It supports navigation, multipleversions and languages, search, and text outputs that agents can read. The included starteruses Next.js and CoMark Markdown.## Repair diagnosticsWhen asked to repair a problem, make the repair and verify it before finishing; diagnosis or aproposed next step is not completion. Start with `brief check`. Choose `--json` instead of thetext report when you need structured codes or fix proposals; do not run both without a reason.Read the reported file and help before exploring unrelated commands or configuration.Prefer an offered `brief check --fix` correction to a manual rewrite. Use `--dangerous` onlyafter confirming that the proposed destination or ordering matches the request. Preview with`--dry-run` if the scope is uncertain. The fix command revalidates the result and reports remainingdiagnostics: read that report before running another check or changing the repaired value again.If a fix is unavailable or skipped, correct the source directly using the diagnostic's guidance.Invalid directory names are excluded from the index, so structural CLI commands cannot addressthem. Rename the directory on disk, preserve its contents, and update any parent order entry andlinks that refer to it. This source repair is an exception to using the CLI for structural changes.For manual edits, verify with `brief check` once afterward. Check that the requested diagnosticis absent and that every requested property is satisfied, not just that the command exits zero.Warnings and tips do not fail the command. Preserve explicit configuration requirements insteadof relying on a default that happens to produce the same output today. Stop when the repair iscomplete; report unrelated findings without broadening the task.An invalid `order` declaration can block structural commands. Correct its metadata directly oruse the offered fix. Ordering commands position an entry and write a resolved list; they are notneeded to repair repeated entries or rest markers and can remove an intentionally retained `...`.Broken-link and anchor suggestions require checking the intended destination; preserve the label,query string, and fragment. Match heading depth to the actual hierarchy without adding empty sections.Use `brief tree` when paths or navigation are unclear, not before every content repair. For anunfamiliar format or configuration contract, consult the supplied docs or the installed publictypes before guessing through repeated edits. When searching Markdown in a shell, single-quoteliteral patterns containing backticks or `$()` so the shell does not execute the examples.## Content and authoringA site contains tabs, such as guides and API reference. Each tab contains versions, and eachversion contains pages and groups of pages. Groups can contain other groups.Each page has its own folder. In a CoMark project, it contains one Markdown file per language,such as `en.md` and `pt-PT.md`. The YAML block at the top of each file, calledfrontmatter, contains its title, description, and optional URL slug:```md---title: Create a pagedescription: Add a documentation page with the Brief CLI.---## Add the pageRun `brief page add docs/v1/getting-started` to create a page in the docs tab's v1 version.```The standard Brief UI displays the title as the page's H1 heading. Start headings in the bodyat H2 (`##`) to avoid repeating it. Follow the project's examples and schemas when adding otherfrontmatter fields.Settings shared by all translations belong in `page.meta.toml`. These include `draft`,`redirectFrom`, and `routeKey`. The route key is a stable identifier that lets Brief recognizethe same page after it moves. Keep it when moving a page. Site, tab, version, and group settingsbelong in their respective `*.meta.toml` files; their `order` fields control navigation order.Link to the URL a reader would visit, including its language, tab, version, and heading fragmentwhere needed. Do not link to the Markdown file on disk. Brief checks whether the destinationexists; it does not guess which version or translation you intended.CoMark adds components to Markdown through directives. Use the components and propertiesconfigured by the project. For example, the standard UI includes this callout:```md:::Callout{color="yellow" icon="warning" title="Before you start"}Create the tab and version before adding a page inside them.:::```## Prefer the CLI for structureUse the CLI to add, move, and remove documentation. These commands update the files that describethe site's structure and can fix links when URLs change. Edit page prose directly. Use settingscommands for metadata when the page format supports them.Inspect a target with `brief page inspect docs/v1/getting-started --locale en --json`.The result includes authored values, effective values, source files, and published routes.Use `page update`, `group update`, `tab update`, `version update`, or `site update` to changesettings. Structural paths are relative to the documentation root; site commands need no path.```shpnpmexec brief page update docs/v1/getting-started --locale en --title "Getting started"pnpmexec brief page update docs/v1/getting-started --hidden true --dry-runpnpmexec brief page update docs/v1/getting-started --unset hidden```Boolean flags take `true` or `false`. `--set key=JSON` accepts typed values such as arrays;`--unset key` removes a declaration. `--input file.json` (or `--input -` for stdin) accepts`{"set":{},"unset":[],"custom":{"set":{},"unset":[]}}`. Custom metadata uses the explicit`custom` object and cannot overwrite built-in fields. Locale-specific structural edits writethe locale override file. Page-wide settings remain in `page.meta.toml`.Changes are reloaded and validated before writing. Slug updates migrate supported links;use `--no-update-links` to leave them unchanged and synchronize redirects before publication.Settings commands can repair missing required metadata and route collisions from retained source.Unrelated existing errors remain reported; new validation errors reject the edit. Malformed YAMLor TOML still needs a direct syntax correction. A repaired route collision must produce anunambiguous index; link migration is unavailable when the original routes were ambiguous.Run the installed CLI from the documentation app, for example with `pnpm exec brief`.Page and group paths are relative to the documentation folder (`brief/case/` by default).Use `brief tree` when you need to discover paths or inspect navigation. A page must belong to anexisting version. When the task already identifies the target, use the matching command directly;inspect its help if you need an option. `page move` moves one page, while `group move` moves a groupand its descendants. Do not remove an emptied parent group unless that is part of the request.```shpnpmexec brief page add docs/v1/getting-started --title "Getting started" --description "Create your first Brief page."pnpmexec brief page move docs/v1/old-name docs/v1/new-name --dry-runpnpmexec brief page move docs/v1/old-name docs/v1/new-namepnpmexec brief page remove docs/v1/obsolete --redirect-to docs/v1/replacementpnpmexec brief group add docs/v1/guides --title "Guides"pnpmexec brief version add v2 --tab docs --from v1pnpmexec brief locale add pt-PT --name "Portuguese (PT)"```### Command referenceUse `page order <path> --before <sibling-path>` or `--after <sibling-path>` to position an entry.`--first` and `--last` are also available; no placement means last. Groups, tabs, and versionshave the same `order` command. Paths identify siblings under the same parent. The command writestheir current resolved sequence with the requested placement; future unlisted children stillappear at the bottom alphabetically. Use `--locale` for a localized order and `--dry-run` to preview.Choose the command for the entry being positioned, not the metadata file that stores its order:`group order` positions a group within its parent; `version order` positions a version within a tab.Prefix each command with `brief`. Use `brief <command> --help` for its full options.| Command | Purpose || --------------------------------- | ------------------------------------------------------------------------------------------ || `init [dir]` | Create a Next.js documentation site with CoMark, search, and agent skills. || `tree [path]` | Show the documentation structure; add `--all-versions` to include older versions. || `check` | Check pages, settings, and links. || `page add <path>` | Add a page; set its `--title` and `--description`. || `page move <from> <to>` | Move a page and update supported links. Alias: `mv`. || `page remove <path>` | Remove a page; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `group add <path>` | Add a group; set its `--title`. || `group move <from> <to>` | Move a group and its pages. Alias: `mv`. || `group remove <path>` | Remove a group and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab list` | List the site's tabs. || `tab add <tab>` | Add a tab with `--title <text>` and an optional initial `--version <name>`. || `tab rename <tab> <name>` | Rename a tab. || `tab remove <tab>` | Remove a tab and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab set-default <tab>` | Choose the default tab. || `version list` | List versions in a tab. || `version add <version>` | Copy a version with `--from <version>`, or start with `--empty`. || `version rename <version> <name>` | Rename a version. || `version remove <version>` | Delete a version and its pages; requires `--force`. || `version set-default <version>` | Choose the default version for a tab. || `locale list` | List the site's languages. || `locale add <tag>` | Register a language; provide its display name with `--name <text>`. || `locale remove <tag>` | Remove a language from the site configuration; keep its content files. || `locale set-default <tag>` | Choose the default language. || `updates sync [path]` | Record changed body hashes and update times; defaults to all pages, including drafts. || `redirects sync` | Record current page URLs and update redirects from older URLs. || `skills install` | Install the Brief skills; use `--agent`, `--dir`, or `--dry-run` as needed. || `help [command]` | Show command help. |When a site has several tabs, version commands need `--tab`. `page add` creates files for everylanguage enabled for that version; complete them according to the project's translation policy.Use `page add --extension` if the project supports several writable page formats. `locale add`only registers the language, so translations still need to be written.## Moving pages and keeping old links workingMoving a page creates two separate problems. Links in your documentation may still point to itsold URL, and readers may have bookmarked that URL or found it on another website.`page move` addresses the first problem by updating links in your page files. Use `--dry-run`to see the proposed changes before applying them. Link updates depend on the page format'sediting support, so read any notices about links left unchanged and run `brief check` afterward.Use `--no-update-links` when you intend to leave links unchanged.A redirect addresses the second problem: it sends a reader from an old URL to the page's currentURL. Brief records page URLs in `brief.history.json`. The sync command compares that record withthe current pages, creates the necessary redirects, and records the new URLs for next time:```shpnpmexec brief redirects sync --dry-runpnpmexec brief redirects sync```Review the preview and run sync when the URL changes are ready for release, before publishing.Include the resulting history and page metadata in the same commit when committing is part ofthe task. Sync covers the documentation folder, so check for unrelated pending URL changes beforeapplying it. Let the command maintain the history file.When removing a page, `--redirect-to <page>` records where to send its readers during the nextsync. Use `--allow-404` only when the old URL should return "page not found." Do not choose itmerely to bypass the redirect decision.## Recording page update timesAfter body edits and link rewrites, preview `pnpm exec brief updates sync --dry-run` and synchronizewhen the content is ready to publish. With no path, this updates all changed pages, includingdrafts. Pass a page path and optional `--locale` to limit the operation to the intended content.Use `--date YYYY-MM-DD` for midnight UTC or `--time` with an ISO timestamp and timezone when aspecific update time is required. Otherwise the command uses the current time.The command maintains `updatedAt` and `contentHash` together in localized frontmatter. Do notcalculate or edit hashes manually. Frontmatter-only edits do not require synchronization.`updated-at-out-of-sync` warnings identify missing checkpoints and body edits awaiting sync.Commit the resulting metadata with the content when committing is part of the task.## Checking your changesRun `brief check` after other edits too. Add `--drafts` to include draft pages. Errors fail the command.Use `brief check --fix --dry-run` to preview mechanical corrections and `brief check --fix` toapply them. Add `--dangerous` to permit suggested broken-link and anchor replacements, removalof stale order entries, and selection of the first repeated `...` marker. Review these changes:they infer author intent. Fixes preserve code examples and only edit syntax supported by the format.The report includes applied or skipped corrections and diagnostics remaining after validation.JSON diagnostics carry concrete proposals in `fix`, including their safety and persistence effects.Terminal diagnostics advertise proposals with a colored `fixable` command. A format may still lackthe editing capability needed to apply a proposal; the fix report explains skipped changes.Overlapping corrections are recomputed against the updated source before writing.`--fail-on warning` makes warnings fail too. Follow the project's CI settings. Quality tips aresuggestions and do not cause failure; `--no-tips` hides them.For agent-facing changes, read the page's `.md` URL as well as its HTML page. If a custom componentadds information through attributes or generated content, give it a Markdown export so the textversion includes that information. `brief check` warns about empty portable Markdown and unclosedcode fences.Fix problems caused by your changes and report existing problems separately. Use the app'sdevelopment or build command when you need to check how a page renders. Edit the source pagesand configuration; Brief recreates files such as `brief/generated.ts` and search indexes.
Thermonuclear SEO Review
# Thermonuclear SEO ReviewReview how well the documentation helps readers find an answer, understand it, and completetheir task. Be demanding about accuracy and page purpose. Explain each problem with evidencefrom the pages, and propose specific improvements.This skill covers documentation content and its organization. Analytics, advertising, backlinks,and changes to the application or hosting setup require a separate request.## Choose what to reviewUse the pages or folders the user names. The following selectors are also supported; they areinstructions to the agent, not CLI commands.| Selector | What to review || ---------------------- | ------------------------------------------------------------------------------------- || One or more page paths | Those pages. || One or more folders | Pages in those folders and their subfolders. || `all` | All documentation in the configured Brief site. || `changed` | Documentation changed on the branch, including staged, unstaged, and untracked files. || `changed base=<ref>` | Changed documentation compared with the specified Git reference. || `staged` | Documentation prepared for the next commit, read from the Git index. |If the user does not specify a scope, use `changed`. Use their chosen base branch, the currentPR's target branch, or the repository's default branch, in that order. Compare from the lastcommit shared by that branch and the current branch, and report the branch and commit used.The upstream tracking branch is not necessarily the PR target. If you cannot establish thebase, review the local changes you can identify and explain what is missing. Ask for the basewhen it is needed to complete the requested review.For `changed`, read each changed page in full but focus on the changed material. For `staged`,read the staged version, not the working copy, and use staged versions of related files whereneeded. A deleted or renamed page can leave gaps in coverage and break incoming links; includethose effects in the review. If no documentation matches, report that instead of reviewingthe whole site.Use the Brief configuration to identify the documentation folder and supported page formats.Not every Markdown file in the repository is a documentation page. Read neighboring pages whenneeded to understand prerequisites, repeated explanations, or links, and label suggestions thatwould affect pages outside the selected scope. For a large review, list the pages and workthrough related groups. State which pages you could not review.## Understand the intended readerRead the project's writing conventions, glossary, version policy, and translation policy.For each page, identify the reader's question, the knowledge it assumes, and the result itpromises. Judge the page against its purpose: a short API reference may be complete, while atutorial needs enough steps for a reader to reach the promised result.Check technical claims against available implementation, tests, or product documentation.Distinguish a demonstrated error from an editorial judgment or a claim that still needsverification. Do not invent product behavior, limits, performance results, or example output.Do not run examples with unknown side effects just to review them.Use the installed `brief check` command to find problems with metadata and links, and`brief tree --all-versions` to see how pages are organized. Run them from the documentation app,using its configured paths and package manager. For `staged`, these commands inspect theworking copy unless run against a separate copy of the staged files; do not present theirresults as validation of staged content. Explain checks you could not run.## Review the content and organizationLook for the following problems and explain how each affects the reader:- Missing prerequisites, incomplete steps, unclear expected results, or omitted limits and failure recovery. Check whether a reader can actually finish the task.- Examples with unexplained inputs, missing output, or assumptions that do not hold for the documented version. Label examples whose behavior you could not verify.- Overlapping pages that leave readers unsure which explanation to follow. Cite the repeated passages before recommending that pages be combined, split, or reordered.- Related pages that are difficult to discover. Suggest an overview page and supporting pages when that would help readers navigate a topic; distinguish existing pages from proposed ones.- Claims separated from their conditions, ambiguous pronouns, missing units, or unstated versions. Keep enough context in each passage for it to make sense when quoted on its own.- Inconsistent terminology or unexplained acronyms. Preserve distinctions that matter between products, versions, and languages.- Instructions contradicted by current behavior. Age alone does not make documentation stale.For a proposed link, give the source passage, destination page and heading, suggested link text,and reason the reader needs it. Verify the destination exists in the appropriate version andlanguage. Link to the published page URL, not its Markdown file, and do not invent heading anchors.Suggest concrete replacements for weak titles, descriptions, headings, and introductions.Recommend a table or diagram when it would explain a comparison or relationship more clearly,and describe what it should show.Do not impose keyword density, link quotas, word counts, mandatory FAQs, or duplicate pagescreated only to target search terms. Passing Brief's checks does not guarantee search rankingor citations by agents. Text exports make documentation accessible to agents; they do not provethat a search engine has indexed it.## Present findings and make requested editsA review produces findings and proposed changes. Apply edits when the user has requested them,including authorization already given in the conversation.Order findings by their effect on readers and your confidence in the evidence. Separate`high priority` findings from `nit picky` suggestions. Each finding should name the page andsection, show the evidence, explain the reader impact, and provide replacement prose, anoutline, or a specific link proposal. State any unresolved factual question and how to check it.Group repeated symptoms that share a cause; do not invent findings to meet a quota.If you propose moving or combining pages, identify the affected URLs, headings, and incominglinks. Moving a page may require updates to links in the documentation. Readers arriving throughbookmarks or external links also need redirects from the old URLs to the new ones.When editing, use Brief's CLI for structural changes and preserve each page's `routeKey` so Briefcan recognize it after a move. Preview `brief redirects sync --dry-run` and apply sync when theURL changes are ready for release. It compares saved URLs with current pages, updates redirects,and records the current URLs for the next comparison. Review the complete preview before applyingit, since other page moves may be pending. For more authoring details, read `../brief/SKILL.md`.Preserve technical meaning and code examples unless correcting them is part of the task.Run the relevant documentation checks after edits and verify new links and headings. Reportcompiler problems separately from content findings. Finish with the pages reviewed, any editsmade, checks and their results, and unresolved questions.
Update documentation
# Update documentationDecide which Brief documentation needs to change by identifying the consequences for its readers.Follow the project's `AGENTS.md` for local conventions and the [Brief skill](../brief/SKILL.md),when available, for authoring mechanics, structural edits, and validation.## Establish the change and audienceIdentify the requested scope: a code comparison, working changes, a release, or a described productchange. Use the available repository or review tools without assuming a hosting platform, targetbranch, or that the latest commit contains the whole change. Preserve existing local edits andinclude uncommitted product changes only when they are in scope. Ask for the comparison if itcannot be established from the request and repository context.Read the relevant implementation and tests alongside the change description. Confirm whichbehavior and product versions they describe before using them to update examples. If evidenceis missing or contradictory, identify the uncertainty rather than inventing a supported behavior.Identify who uses the affected documentation and what they are trying to accomplish. Implementationdetails may matter in a contributor guide while adding nothing useful to an end-user tutorial.## Decide what readers need to knowFor each change, determine whether it affects what readers can do, must do, or can rely on.Look for changes to public APIs, commands, configuration, defaults, prerequisites, limitations,error recovery, and supported workflows. Check whether existing explanations, examples, orworkarounds become inaccurate.If the documentation remains accurate and sufficient, leave it unchanged. Internal refactors andprivate instrumentation usually need no user documentation. Do not infer performance benefits ornew guarantees from implementation changes without supporting evidence. A bug fix may need noedit when it restores documented behavior, but may make a documented workaround obsolete.Find all affected explanations, including repeated facts in guides, reference pages, examples,and troubleshooting advice. Search for concepts as well as changed identifiers: the same defaultmay appear as a number in a table and as prose elsewhere. Update only the versions to which thechange applies, and follow the project's translation policy.## Choose the editorial change- Edit an existing page when the reader's task stays the same but its instructions or explanation change. Add a section when a new aspect belongs within that task.- Add a page when a distinct reader task or concept needs its own coherent explanation and a discoverable place in the documentation. A new API symbol alone does not require a new page.- Combine or move pages when the change makes their existing organization confusing or forces readers to assemble one workflow from overlapping explanations. Preserve useful content and consider how readers will find it afterward.- Remove a section or page when its guidance is obsolete and no longer serves a supported audience. Check whether older versions or migrating users still need it before removing it.Keep introductory workflows focused. An optional advanced feature can belong in a guide orreference without complicating the quickstart. Explain current behavior directly; add old-to-newinstructions where users actually need to migrate. Preserve supported compatibility paths, andfollow the project's release policy for changelog entries.## Make complete, focused editsUpdate every affected statement while preserving unrelated explanations, examples, qualifications,and structure. Keep edits within the requested scope; avoid opportunistic rewriting or a broadreorganization. Match the surrounding style and explain consequences in terms readers can act on.Documentation should help them use the product, not narrate how its implementation was changed.Check signatures, option names, defaults, and sample output against the relevant implementationor tests. Retain useful prerequisites and limitations. Remove obsolete workarounds withoutdiscarding advice that still applies. Use the Brief skill and project instructions to carry outany structural changes and preserve navigation and link continuity.## Verify and reportReview the resulting pages for factual accuracy, contradictory guidance, missing affected examples,and unsupported claims. Check that the reader can still complete the task and that unrelatedinformation survived. Run the relevant project and Brief validation, and test changed executableexamples when possible. A successful build does not establish editorial correctness.Summarize the reader-facing changes covered, the checks performed, and any unresolved evidence,translation, or release work. If no edits were needed, explain why the existing documentationalready covers the behavior. Distinguish pre-existing problems from problems introduced by the edit.
Brief visual customization
Migration guide from different docs
3D diagram usage
Brief Usage Guide
# Brief Usage GuideBrief is a documentation framework. It builds a documentation site from page files andconfiguration that describes how those pages are organized. It supports navigation, multipleversions and languages, search, and text outputs that agents can read. The included starteruses Next.js and CoMark Markdown.## Repair diagnosticsWhen asked to repair a problem, make the repair and verify it before finishing; diagnosis or aproposed next step is not completion. Start with `brief check`. Choose `--json` instead of thetext report when you need structured codes or fix proposals; do not run both without a reason.Read the reported file and help before exploring unrelated commands or configuration.Prefer an offered `brief check --fix` correction to a manual rewrite. Use `--dangerous` onlyafter confirming that the proposed destination or ordering matches the request. Preview with`--dry-run` if the scope is uncertain. The fix command revalidates the result and reports remainingdiagnostics: read that report before running another check or changing the repaired value again.If a fix is unavailable or skipped, correct the source directly using the diagnostic's guidance.Invalid directory names are excluded from the index, so structural CLI commands cannot addressthem. Rename the directory on disk, preserve its contents, and update any parent order entry andlinks that refer to it. This source repair is an exception to using the CLI for structural changes.For manual edits, verify with `brief check` once afterward. Check that the requested diagnosticis absent and that every requested property is satisfied, not just that the command exits zero.Warnings and tips do not fail the command. Preserve explicit configuration requirements insteadof relying on a default that happens to produce the same output today. Stop when the repair iscomplete; report unrelated findings without broadening the task.An invalid `order` declaration can block structural commands. Correct its metadata directly oruse the offered fix. Ordering commands position an entry and write a resolved list; they are notneeded to repair repeated entries or rest markers and can remove an intentionally retained `...`.Broken-link and anchor suggestions require checking the intended destination; preserve the label,query string, and fragment. Match heading depth to the actual hierarchy without adding empty sections.Use `brief tree` when paths or navigation are unclear, not before every content repair. For anunfamiliar format or configuration contract, consult the supplied docs or the installed publictypes before guessing through repeated edits. When searching Markdown in a shell, single-quoteliteral patterns containing backticks or `$()` so the shell does not execute the examples.## Content and authoringA site contains tabs, such as guides and API reference. Each tab contains versions, and eachversion contains pages and groups of pages. Groups can contain other groups.Each page has its own folder. In a CoMark project, it contains one Markdown file per language,such as `en.md` and `pt-PT.md`. The YAML block at the top of each file, calledfrontmatter, contains its title, description, and optional URL slug:```md---title: Create a pagedescription: Add a documentation page with the Brief CLI.---## Add the pageRun `brief page add docs/v1/getting-started` to create a page in the docs tab's v1 version.```The standard Brief UI displays the title as the page's H1 heading. Start headings in the bodyat H2 (`##`) to avoid repeating it. Follow the project's examples and schemas when adding otherfrontmatter fields.Settings shared by all translations belong in `page.meta.toml`. These include `draft`,`redirectFrom`, and `routeKey`. The route key is a stable identifier that lets Brief recognizethe same page after it moves. Keep it when moving a page. Site, tab, version, and group settingsbelong in their respective `*.meta.toml` files; their `order` fields control navigation order.Link to the URL a reader would visit, including its language, tab, version, and heading fragmentwhere needed. Do not link to the Markdown file on disk. Brief checks whether the destinationexists; it does not guess which version or translation you intended.CoMark adds components to Markdown through directives. Use the components and propertiesconfigured by the project. For example, the standard UI includes this callout:```md:::Callout{color="yellow" icon="warning" title="Before you start"}Create the tab and version before adding a page inside them.:::```## Prefer the CLI for structureUse the CLI to add, move, and remove documentation. These commands update the files that describethe site's structure and can fix links when URLs change. Edit page prose directly. Use settingscommands for metadata when the page format supports them.Inspect a target with `brief page inspect docs/v1/getting-started --locale en --json`.The result includes authored values, effective values, source files, and published routes.Use `page update`, `group update`, `tab update`, `version update`, or `site update` to changesettings. Structural paths are relative to the documentation root; site commands need no path.```shpnpmexec brief page update docs/v1/getting-started --locale en --title "Getting started"pnpmexec brief page update docs/v1/getting-started --hidden true --dry-runpnpmexec brief page update docs/v1/getting-started --unset hidden```Boolean flags take `true` or `false`. `--set key=JSON` accepts typed values such as arrays;`--unset key` removes a declaration. `--input file.json` (or `--input -` for stdin) accepts`{"set":{},"unset":[],"custom":{"set":{},"unset":[]}}`. Custom metadata uses the explicit`custom` object and cannot overwrite built-in fields. Locale-specific structural edits writethe locale override file. Page-wide settings remain in `page.meta.toml`.Changes are reloaded and validated before writing. Slug updates migrate supported links;use `--no-update-links` to leave them unchanged and synchronize redirects before publication.Settings commands can repair missing required metadata and route collisions from retained source.Unrelated existing errors remain reported; new validation errors reject the edit. Malformed YAMLor TOML still needs a direct syntax correction. A repaired route collision must produce anunambiguous index; link migration is unavailable when the original routes were ambiguous.Run the installed CLI from the documentation app, for example with `pnpm exec brief`.Page and group paths are relative to the documentation folder (`brief/case/` by default).Use `brief tree` when you need to discover paths or inspect navigation. A page must belong to anexisting version. When the task already identifies the target, use the matching command directly;inspect its help if you need an option. `page move` moves one page, while `group move` moves a groupand its descendants. Do not remove an emptied parent group unless that is part of the request.```shpnpmexec brief page add docs/v1/getting-started --title "Getting started" --description "Create your first Brief page."pnpmexec brief page move docs/v1/old-name docs/v1/new-name --dry-runpnpmexec brief page move docs/v1/old-name docs/v1/new-namepnpmexec brief page remove docs/v1/obsolete --redirect-to docs/v1/replacementpnpmexec brief group add docs/v1/guides --title "Guides"pnpmexec brief version add v2 --tab docs --from v1pnpmexec brief locale add pt-PT --name "Portuguese (PT)"```### Command referenceUse `page order <path> --before <sibling-path>` or `--after <sibling-path>` to position an entry.`--first` and `--last` are also available; no placement means last. Groups, tabs, and versionshave the same `order` command. Paths identify siblings under the same parent. The command writestheir current resolved sequence with the requested placement; future unlisted children stillappear at the bottom alphabetically. Use `--locale` for a localized order and `--dry-run` to preview.Choose the command for the entry being positioned, not the metadata file that stores its order:`group order` positions a group within its parent; `version order` positions a version within a tab.Prefix each command with `brief`. Use `brief <command> --help` for its full options.| Command | Purpose || --------------------------------- | ------------------------------------------------------------------------------------------ || `init [dir]` | Create a Next.js documentation site with CoMark, search, and agent skills. || `tree [path]` | Show the documentation structure; add `--all-versions` to include older versions. || `check` | Check pages, settings, and links. || `page add <path>` | Add a page; set its `--title` and `--description`. || `page move <from> <to>` | Move a page and update supported links. Alias: `mv`. || `page remove <path>` | Remove a page; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `group add <path>` | Add a group; set its `--title`. || `group move <from> <to>` | Move a group and its pages. Alias: `mv`. || `group remove <path>` | Remove a group and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab list` | List the site's tabs. || `tab add <tab>` | Add a tab with `--title <text>` and an optional initial `--version <name>`. || `tab rename <tab> <name>` | Rename a tab. || `tab remove <tab>` | Remove a tab and its pages; choose `--redirect-to <page>` or `--allow-404`. Alias: `rm`. || `tab set-default <tab>` | Choose the default tab. || `version list` | List versions in a tab. || `version add <version>` | Copy a version with `--from <version>`, or start with `--empty`. || `version rename <version> <name>` | Rename a version. || `version remove <version>` | Delete a version and its pages; requires `--force`. || `version set-default <version>` | Choose the default version for a tab. || `locale list` | List the site's languages. || `locale add <tag>` | Register a language; provide its display name with `--name <text>`. || `locale remove <tag>` | Remove a language from the site configuration; keep its content files. || `locale set-default <tag>` | Choose the default language. || `updates sync [path]` | Record changed body hashes and update times; defaults to all pages, including drafts. || `redirects sync` | Record current page URLs and update redirects from older URLs. || `skills install` | Install the Brief skills; use `--agent`, `--dir`, or `--dry-run` as needed. || `help [command]` | Show command help. |When a site has several tabs, version commands need `--tab`. `page add` creates files for everylanguage enabled for that version; complete them according to the project's translation policy.Use `page add --extension` if the project supports several writable page formats. `locale add`only registers the language, so translations still need to be written.## Moving pages and keeping old links workingMoving a page creates two separate problems. Links in your documentation may still point to itsold URL, and readers may have bookmarked that URL or found it on another website.`page move` addresses the first problem by updating links in your page files. Use `--dry-run`to see the proposed changes before applying them. Link updates depend on the page format'sediting support, so read any notices about links left unchanged and run `brief check` afterward.Use `--no-update-links` when you intend to leave links unchanged.A redirect addresses the second problem: it sends a reader from an old URL to the page's currentURL. Brief records page URLs in `brief.history.json`. The sync command compares that record withthe current pages, creates the necessary redirects, and records the new URLs for next time:```shpnpmexec brief redirects sync --dry-runpnpmexec brief redirects sync```Review the preview and run sync when the URL changes are ready for release, before publishing.Include the resulting history and page metadata in the same commit when committing is part ofthe task. Sync covers the documentation folder, so check for unrelated pending URL changes beforeapplying it. Let the command maintain the history file.When removing a page, `--redirect-to <page>` records where to send its readers during the nextsync. Use `--allow-404` only when the old URL should return "page not found." Do not choose itmerely to bypass the redirect decision.## Recording page update timesAfter body edits and link rewrites, preview `pnpm exec brief updates sync --dry-run` and synchronizewhen the content is ready to publish. With no path, this updates all changed pages, includingdrafts. Pass a page path and optional `--locale` to limit the operation to the intended content.Use `--date YYYY-MM-DD` for midnight UTC or `--time` with an ISO timestamp and timezone when aspecific update time is required. Otherwise the command uses the current time.The command maintains `updatedAt` and `contentHash` together in localized frontmatter. Do notcalculate or edit hashes manually. Frontmatter-only edits do not require synchronization.`updated-at-out-of-sync` warnings identify missing checkpoints and body edits awaiting sync.Commit the resulting metadata with the content when committing is part of the task.## Checking your changesRun `brief check` after other edits too. Add `--drafts` to include draft pages. Errors fail the command.Use `brief check --fix --dry-run` to preview mechanical corrections and `brief check --fix` toapply them. Add `--dangerous` to permit suggested broken-link and anchor replacements, removalof stale order entries, and selection of the first repeated `...` marker. Review these changes:they infer author intent. Fixes preserve code examples and only edit syntax supported by the format.The report includes applied or skipped corrections and diagnostics remaining after validation.JSON diagnostics carry concrete proposals in `fix`, including their safety and persistence effects.Terminal diagnostics advertise proposals with a colored `fixable` command. A format may still lackthe editing capability needed to apply a proposal; the fix report explains skipped changes.Overlapping corrections are recomputed against the updated source before writing.`--fail-on warning` makes warnings fail too. Follow the project's CI settings. Quality tips aresuggestions and do not cause failure; `--no-tips` hides them.For agent-facing changes, read the page's `.md` URL as well as its HTML page. If a custom componentadds information through attributes or generated content, give it a Markdown export so the textversion includes that information. `brief check` warns about empty portable Markdown and unclosedcode fences.Fix problems caused by your changes and report existing problems separately. Use the app'sdevelopment or build command when you need to check how a page renders. Edit the source pagesand configuration; Brief recreates files such as `brief/generated.ts` and search indexes.
Thermonuclear SEO Review
# Thermonuclear SEO ReviewReview how well the documentation helps readers find an answer, understand it, and completetheir task. Be demanding about accuracy and page purpose. Explain each problem with evidencefrom the pages, and propose specific improvements.This skill covers documentation content and its organization. Analytics, advertising, backlinks,and changes to the application or hosting setup require a separate request.## Choose what to reviewUse the pages or folders the user names. The following selectors are also supported; they areinstructions to the agent, not CLI commands.| Selector | What to review || ---------------------- | ------------------------------------------------------------------------------------- || One or more page paths | Those pages. || One or more folders | Pages in those folders and their subfolders. || `all` | All documentation in the configured Brief site. || `changed` | Documentation changed on the branch, including staged, unstaged, and untracked files. || `changed base=<ref>` | Changed documentation compared with the specified Git reference. || `staged` | Documentation prepared for the next commit, read from the Git index. |If the user does not specify a scope, use `changed`. Use their chosen base branch, the currentPR's target branch, or the repository's default branch, in that order. Compare from the lastcommit shared by that branch and the current branch, and report the branch and commit used.The upstream tracking branch is not necessarily the PR target. If you cannot establish thebase, review the local changes you can identify and explain what is missing. Ask for the basewhen it is needed to complete the requested review.For `changed`, read each changed page in full but focus on the changed material. For `staged`,read the staged version, not the working copy, and use staged versions of related files whereneeded. A deleted or renamed page can leave gaps in coverage and break incoming links; includethose effects in the review. If no documentation matches, report that instead of reviewingthe whole site.Use the Brief configuration to identify the documentation folder and supported page formats.Not every Markdown file in the repository is a documentation page. Read neighboring pages whenneeded to understand prerequisites, repeated explanations, or links, and label suggestions thatwould affect pages outside the selected scope. For a large review, list the pages and workthrough related groups. State which pages you could not review.## Understand the intended readerRead the project's writing conventions, glossary, version policy, and translation policy.For each page, identify the reader's question, the knowledge it assumes, and the result itpromises. Judge the page against its purpose: a short API reference may be complete, while atutorial needs enough steps for a reader to reach the promised result.Check technical claims against available implementation, tests, or product documentation.Distinguish a demonstrated error from an editorial judgment or a claim that still needsverification. Do not invent product behavior, limits, performance results, or example output.Do not run examples with unknown side effects just to review them.Use the installed `brief check` command to find problems with metadata and links, and`brief tree --all-versions` to see how pages are organized. Run them from the documentation app,using its configured paths and package manager. For `staged`, these commands inspect theworking copy unless run against a separate copy of the staged files; do not present theirresults as validation of staged content. Explain checks you could not run.## Review the content and organizationLook for the following problems and explain how each affects the reader:- Missing prerequisites, incomplete steps, unclear expected results, or omitted limits and failure recovery. Check whether a reader can actually finish the task.- Examples with unexplained inputs, missing output, or assumptions that do not hold for the documented version. Label examples whose behavior you could not verify.- Overlapping pages that leave readers unsure which explanation to follow. Cite the repeated passages before recommending that pages be combined, split, or reordered.- Related pages that are difficult to discover. Suggest an overview page and supporting pages when that would help readers navigate a topic; distinguish existing pages from proposed ones.- Claims separated from their conditions, ambiguous pronouns, missing units, or unstated versions. Keep enough context in each passage for it to make sense when quoted on its own.- Inconsistent terminology or unexplained acronyms. Preserve distinctions that matter between products, versions, and languages.- Instructions contradicted by current behavior. Age alone does not make documentation stale.For a proposed link, give the source passage, destination page and heading, suggested link text,and reason the reader needs it. Verify the destination exists in the appropriate version andlanguage. Link to the published page URL, not its Markdown file, and do not invent heading anchors.Suggest concrete replacements for weak titles, descriptions, headings, and introductions.Recommend a table or diagram when it would explain a comparison or relationship more clearly,and describe what it should show.Do not impose keyword density, link quotas, word counts, mandatory FAQs, or duplicate pagescreated only to target search terms. Passing Brief's checks does not guarantee search rankingor citations by agents. Text exports make documentation accessible to agents; they do not provethat a search engine has indexed it.## Present findings and make requested editsA review produces findings and proposed changes. Apply edits when the user has requested them,including authorization already given in the conversation.Order findings by their effect on readers and your confidence in the evidence. Separate`high priority` findings from `nit picky` suggestions. Each finding should name the page andsection, show the evidence, explain the reader impact, and provide replacement prose, anoutline, or a specific link proposal. State any unresolved factual question and how to check it.Group repeated symptoms that share a cause; do not invent findings to meet a quota.If you propose moving or combining pages, identify the affected URLs, headings, and incominglinks. Moving a page may require updates to links in the documentation. Readers arriving throughbookmarks or external links also need redirects from the old URLs to the new ones.When editing, use Brief's CLI for structural changes and preserve each page's `routeKey` so Briefcan recognize it after a move. Preview `brief redirects sync --dry-run` and apply sync when theURL changes are ready for release. It compares saved URLs with current pages, updates redirects,and records the current URLs for the next comparison. Review the complete preview before applyingit, since other page moves may be pending. For more authoring details, read `../brief/SKILL.md`.Preserve technical meaning and code examples unless correcting them is part of the task.Run the relevant documentation checks after edits and verify new links and headings. Reportcompiler problems separately from content findings. Finish with the pages reviewed, any editsmade, checks and their results, and unresolved questions.
Update documentation
# Update documentationDecide which Brief documentation needs to change by identifying the consequences for its readers.Follow the project's `AGENTS.md` for local conventions and the [Brief skill](../brief/SKILL.md),when available, for authoring mechanics, structural edits, and validation.## Establish the change and audienceIdentify the requested scope: a code comparison, working changes, a release, or a described productchange. Use the available repository or review tools without assuming a hosting platform, targetbranch, or that the latest commit contains the whole change. Preserve existing local edits andinclude uncommitted product changes only when they are in scope. Ask for the comparison if itcannot be established from the request and repository context.Read the relevant implementation and tests alongside the change description. Confirm whichbehavior and product versions they describe before using them to update examples. If evidenceis missing or contradictory, identify the uncertainty rather than inventing a supported behavior.Identify who uses the affected documentation and what they are trying to accomplish. Implementationdetails may matter in a contributor guide while adding nothing useful to an end-user tutorial.## Decide what readers need to knowFor each change, determine whether it affects what readers can do, must do, or can rely on.Look for changes to public APIs, commands, configuration, defaults, prerequisites, limitations,error recovery, and supported workflows. Check whether existing explanations, examples, orworkarounds become inaccurate.If the documentation remains accurate and sufficient, leave it unchanged. Internal refactors andprivate instrumentation usually need no user documentation. Do not infer performance benefits ornew guarantees from implementation changes without supporting evidence. A bug fix may need noedit when it restores documented behavior, but may make a documented workaround obsolete.Find all affected explanations, including repeated facts in guides, reference pages, examples,and troubleshooting advice. Search for concepts as well as changed identifiers: the same defaultmay appear as a number in a table and as prose elsewhere. Update only the versions to which thechange applies, and follow the project's translation policy.## Choose the editorial change- Edit an existing page when the reader's task stays the same but its instructions or explanation change. Add a section when a new aspect belongs within that task.- Add a page when a distinct reader task or concept needs its own coherent explanation and a discoverable place in the documentation. A new API symbol alone does not require a new page.- Combine or move pages when the change makes their existing organization confusing or forces readers to assemble one workflow from overlapping explanations. Preserve useful content and consider how readers will find it afterward.- Remove a section or page when its guidance is obsolete and no longer serves a supported audience. Check whether older versions or migrating users still need it before removing it.Keep introductory workflows focused. An optional advanced feature can belong in a guide orreference without complicating the quickstart. Explain current behavior directly; add old-to-newinstructions where users actually need to migrate. Preserve supported compatibility paths, andfollow the project's release policy for changelog entries.## Make complete, focused editsUpdate every affected statement while preserving unrelated explanations, examples, qualifications,and structure. Keep edits within the requested scope; avoid opportunistic rewriting or a broadreorganization. Match the surrounding style and explain consequences in terms readers can act on.Documentation should help them use the product, not narrate how its implementation was changed.Check signatures, option names, defaults, and sample output against the relevant implementationor tests. Retain useful prerequisites and limitations. Remove obsolete workarounds withoutdiscarding advice that still applies. Use the Brief skill and project instructions to carry outany structural changes and preserve navigation and link continuity.## Verify and reportReview the resulting pages for factual accuracy, contradictory guidance, missing affected examples,and unsupported claims. Check that the reader can still complete the task and that unrelatedinformation survived. Run the relevant project and Brief validation, and test changed executableexamples when possible. A successful build does not establish editorial correctness.Summarize the reader-facing changes covered, the checks performed, and any unresolved evidence,translation, or release work. If no edits were needed, explain why the existing documentationalready covers the behavior. Distinguish pre-existing problems from problems introduced by the edit.