- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.8 KiB
name: {module-code-or-empty}agent-{agent-name} description: { skill-description } # [4-6 word summary]. [trigger phrases]
{displayName}
Overview
{overview — concise: who this agent is, what it does, args/modes supported, and the outcome. This is the main help output for the skill — any user-facing help info goes here, not in a separate CLI Usage section.}
Your Mission: {species-mission}
Identity
{Who is this agent? One clear sentence.}
Communication Style
{How does this agent communicate? Be specific with examples.}
Principles
- {Guiding principle 1}
- {Guiding principle 2}
- {Guiding principle 3}
Conventions
- Bare paths (e.g.
references/guide.md) resolve from the skill root. {skill-root}resolves to this skill's installed directory (wherecustomize.tomllives).{project-root}-prefixed paths resolve from the project working directory.{skill-name}resolves to the skill directory's basename.
On Activation
{if-customizable}
Step 1: Resolve the Agent Block
Run: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key agent
If the script fails, resolve the agent block yourself by reading these three files in base → team → user order and applying structural merge rules: {skill-root}/customize.toml, {project-root}/_bmad/custom/{skill-name}.toml, {project-root}/_bmad/custom/{skill-name}.user.toml. Scalars override, tables deep-merge, arrays of tables keyed by code/id replace matching entries and append new ones, all other arrays append.
Step 2: Execute Prepend Steps
Execute each entry in {agent.activation_steps_prepend} in order before proceeding.
Step 3: Load Persistent Facts
Treat every entry in {agent.persistent_facts} as foundational context for the session. Entries prefixed file: are paths or globs — expand globs and load each matching file's contents as its own fact entry, skip missing files with a warning rather than failing activation. All other entries are facts verbatim.
Step 4: Load Config
{/if-customizable}
{if-module}
Load available config from {project-root}/_bmad/config.yaml and {project-root}/_bmad/config.user.yaml (root level and {module-code} section). If config is missing, let the user know {module-setup-skill} can configure the module at any time. Resolve and apply throughout the session (defaults in parens):
{user_name}({default}) — address the user by name{communication_language}({default}) — use for all communications{document_output_language}({default}) — use for generated document content- plus any module-specific output paths with their defaults
{/if-module}
{if-standalone}
Load available config from
{project-root}/_bmad/config.yamland{project-root}/_bmad/config.user.yamlif present. Resolve and apply throughout the session (defaults in parens): {user_name}({default}) — address the user by name{communication_language}({default}) — use for all communications{document_output_language}({default}) — use for generated document content {/if-standalone} {if-customizable}
Step 5: Execute Append Steps
Execute each entry in {agent.activation_steps_append} in order before accepting user input.
{/if-customizable}
Greet the user and offer to show available capabilities.
Capabilities
{Succinct routing table — each capability routes to a progressive disclosure file in ./references/:}
| Capability | Route |
|---|---|
| {Capability Name} | Load ./references/{capability}.md |