basic BMAD setup
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: {name}
|
||||
description: '{description}'
|
||||
---
|
||||
Run the following command exactly once without changing the current working directory.
|
||||
|
||||
Replace `{project-root}` with the nearest folder containing `_bmad/`, from the working directory upward.
|
||||
Replace `{skill-root}` with the absolute path to this skill's directory.
|
||||
|
||||
```bash
|
||||
uv run --no-cache "{project-root}/_bmad/scripts/render_skill.py" --project-root "{project-root}" --skill "{skill-root}"
|
||||
```
|
||||
|
||||
- When the invocation names a {selector} ({the allowed values, and the words that mean each}), append `--set workflow.{selector}=<value>` to the command.
|
||||
- The command should print one line to stdout. `read and follow <rendered workflow.md>`: read that file and follow it. `HALT: <reason>`: report the reason and stop.
|
||||
- If the script does not exist, BMad is not set up in this project yet. Offer to set it up using `bmad` skill, then run the command again. If you do not have the `bmad` skill, offer to install it first.
|
||||
- On any other output or failure, including `uv` being unavailable, report the command output and stop. Do not run any workflow source directly.
|
||||
@@ -0,0 +1,30 @@
|
||||
# DO NOT EDIT -- overwritten on every update.
|
||||
#
|
||||
# Default customization values for {name}.
|
||||
# Override in {project-root}/_bmad/custom/{name}.toml (team) or
|
||||
# {project-root}/_bmad/custom/{name}.user.toml (personal). A single run
|
||||
# overrides with `--set workflow.<key>=<value>`.
|
||||
#
|
||||
# Merge rules: strings replace, lists append, tables merge key by key,
|
||||
# arrays of tables merge by `id`.
|
||||
|
||||
[workflow]
|
||||
|
||||
# Instructions run before the user is greeted.
|
||||
activation_steps_prepend = []
|
||||
|
||||
# Instructions run after the greeting and before step 01.
|
||||
activation_steps_append = []
|
||||
|
||||
# Facts kept in context for the whole run: literal text, or `file:` paths and
|
||||
# globs under {project-root}, loaded on activation.
|
||||
persistent_facts = []
|
||||
|
||||
# {What the selector chooses between.} One of: "{value_a}", "{value_b}".
|
||||
# Any other value halts the render.
|
||||
{selector} = "{value_a}"
|
||||
|
||||
# {What the block instructs.} Replace the whole text to change the rule.
|
||||
{block} = """
|
||||
{default instruction, as many lines as it needs}
|
||||
"""
|
||||
@@ -0,0 +1,29 @@
|
||||
# Step {NN}: {title}
|
||||
|
||||
{purpose: what this step produces and for whom, in one or two lines.}
|
||||
|
||||
## {body}
|
||||
|
||||
{Instructions as outcomes with their reason. Branch on the selector only where the branches differ:}
|
||||
|
||||
{% if workflow.{selector} == "{value}" %}
|
||||
{instructions for this value}
|
||||
{% else %}
|
||||
{instructions for the other values}
|
||||
{% endif %}
|
||||
|
||||
{An instruction a team may replace whole is a customization value, inserted where it runs:}
|
||||
|
||||
{{ workflow.{block} }}
|
||||
|
||||
{An agent-facing double-brace placeholder is kept out of the renderer:}
|
||||
|
||||
{% raw %}{{placeholder}}{% endraw %}
|
||||
|
||||
## Next
|
||||
|
||||
{The last line is one of these two.}
|
||||
|
||||
Read fully and follow `{{ rendered("{next_step}") }}`.
|
||||
|
||||
Workflow complete.
|
||||
@@ -0,0 +1,27 @@
|
||||
{% if workflow.{selector} not in ({allowed_values}) %}{{ halt("workflow.{selector} must be one of {allowed_values}, not " ~ workflow.{selector}) }}{% endif %}
|
||||
# {title}
|
||||
|
||||
{purpose: one paragraph. What the workflow produces, for whom, and what must be true of it for them to act. Said once.}
|
||||
|
||||
## Conventions
|
||||
|
||||
- When a step directs you to another file, read it fully and follow it. Load one step at a time, when it is reached.
|
||||
- A step that shows a menu halts there and waits for the user.
|
||||
|
||||
## On activation
|
||||
|
||||
Run each of these in order before step 1 (`_None._` means skip):
|
||||
|
||||
{{ workflow.activation_steps_prepend }}
|
||||
|
||||
Hold every entry below as fact for the whole run. Entries prefixed `file:` are paths or globs under `{project-root}` to read; the rest are facts verbatim (`_None._` means none):
|
||||
|
||||
{{ workflow.persistent_facts }}
|
||||
|
||||
Then run each of these in order (`_None._` means skip):
|
||||
|
||||
{{ workflow.activation_steps_append }}
|
||||
|
||||
## First step
|
||||
|
||||
Read fully and follow `{{ rendered("step-01-{first_step}.md") }}`.
|
||||
Reference in New Issue
Block a user