Compare commits

..

1 Commits

Author SHA1 Message Date
Alex Verkhovsky 2c03ba264b chore(core): convert help.md to native skill directory
Migrate the single-file help.md task to a bmad-help/ skill directory
following the pattern established by bmad-review-adversarial-general.
Update module-help.csv to use skill: reference and remove the entry
from the parent manifest. Fix 7 BMM workflow step files that had
hardcoded file path references to the now-relocated help task.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:44:44 -06:00
12 changed files with 11 additions and 158 deletions

View File

@ -1,82 +0,0 @@
name: Publish Latest
on:
workflow_dispatch:
inputs:
bump:
description: "Version bump type"
required: true
default: "patch"
type: choice
options:
- patch
- minor
- major
concurrency:
group: publish-latest
permissions:
id-token: write
contents: write
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "npm"
registry-url: "https://registry.npmjs.org"
- name: Configure git user
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Bump version
run: 'npm version ${{ inputs.bump }} -m "chore(release): v%s [skip ci]"'
- name: Publish to npm
run: npm publish --tag latest --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Push version commit and tag
run: git push origin main --follow-tags
- name: Create GitHub Release
run: |
TAG="v$(node -p 'require("./package.json").version')"
gh release create "$TAG" --generate-notes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Notify Discord
continue-on-error: true
run: |
set -o pipefail
source .github/scripts/discord-helpers.sh
[ -z "$WEBHOOK" ] && exit 0
VERSION=$(node -p 'require("./package.json").version')
RELEASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/v${VERSION}"
MSG=$(printf '📦 **[bmad-method v%s released](<%s>)**' "$VERSION" "$RELEASE_URL" | esc)
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
env:
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}

View File

@ -1,65 +0,0 @@
name: Publish Next
on:
push:
branches: [main]
paths:
- "src/**"
- "tools/cli/**"
- "package.json"
concurrency:
group: publish-next
cancel-in-progress: true
permissions:
id-token: write
contents: read
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "npm"
registry-url: "https://registry.npmjs.org"
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Derive next prerelease version
run: |
NEXT_VER=$(npm view bmad-method@next version 2>/dev/null || echo "")
LATEST_VER=$(npm view bmad-method@latest version 2>/dev/null || echo "")
# Determine the best base version for the next prerelease
BASE=$(node -e "
const semver = require('semver');
const next = process.argv[1] || null;
const latest = process.argv[2] || null;
if (!next && !latest) process.exit(0);
if (!next) { console.log(latest); process.exit(0); }
if (!latest) { console.log(next); process.exit(0); }
// If latest is newer than next's base, use latest (next prerelease will be based on it)
const nextBase = next.replace(/-next\.\d+$/, '');
console.log(semver.gt(latest, nextBase) ? latest : next);
" "$NEXT_VER" "$LATEST_VER")
if [ -n "$BASE" ]; then
npm version "$BASE" --no-git-tag-version --allow-same-version
fi
npm version prerelease --preid=next --no-git-tag-version
- name: Publish to npm
run: npm publish --tag next --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@ -73,7 +73,7 @@ After searching, use the [feature request template](https://github.com/bmad-code
### Target Branch ### Target Branch
Submit PRs to the `main` branch. We use trunk-based development. Every push to `main` auto-publishes to `npm` under the `next` tag. Stable releases are cut ~weekly to the `latest` tag. Submit PRs to the `main` branch. We use [trunk-based development](https://trunkbaseddevelopment.com/branch-for-release/): `main` is the trunk where all work lands, and stable release branches receive only cherry-picked fixes.
### PR Size ### PR Size

View File

@ -128,7 +128,7 @@ Recap that the brief captures everything needed to guide subsequent product deve
### 5. Suggest next steps ### 5. Suggest next steps
Product Brief complete. Invoke the `bmad-help` skill. Product Brief complete. Run `/bmad-help`
--- ---

View File

@ -87,7 +87,7 @@ Offer validation workflows to ensure PRD is ready for implementation:
### 4. Suggest Next Workflows ### 4. Suggest Next Workflows
PRD complete. Invoke the `bmad-help` skill. PRD complete. Run `/bmad-help`
### 5. Final Completion Confirmation ### 5. Final Completion Confirmation

View File

@ -197,7 +197,7 @@ Display:
- **IF X (Exit):** - **IF X (Exit):**
- Display: "**Validation Report Saved:** {validationReportPath}" - Display: "**Validation Report Saved:** {validationReportPath}"
- Display: "**Summary:** {overall status} - {recommendation}" - Display: "**Summary:** {overall status} - {recommendation}"
- PRD Validation complete. Invoke the `bmad-help` skill. - PRD Validation complete. Run `/bmad-help`
- **IF Any other:** Help user, then redisplay menu - **IF Any other:** Help user, then redisplay menu

View File

@ -82,7 +82,7 @@ Update the main workflow status file:
### 3. Suggest Next Steps ### 3. Suggest Next Steps
UX Design complete. Invoke the `bmad-help` skill. UX Design complete. Run `/bmad-help`
### 5. Final Completion Confirmation ### 5. Final Completion Confirmation

View File

@ -109,7 +109,7 @@ The assessment found [number] issues requiring attention. Review the detailed re
The implementation readiness workflow is now complete. The report contains all findings and recommendations for the user to consider. The implementation readiness workflow is now complete. The report contains all findings and recommendations for the user to consider.
Implementation Readiness complete. Invoke the `bmad-help` skill. Implementation Readiness complete. Run `/bmad-help`
--- ---

View File

@ -41,7 +41,7 @@ completedAt: '{{current_date}}'
### 3. Next Steps Guidance ### 3. Next Steps Guidance
Architecture complete. Invoke the `bmad-help` skill. Architecture complete. Run `/bmad-help`
Upon Completion of task output: offer to answer any questions about the Architecture Document. Upon Completion of task output: offer to answer any questions about the Architecture Document.

View File

@ -144,6 +144,6 @@ If all validations pass:
When C is selected, the workflow is complete and the epics.md is ready for development. When C is selected, the workflow is complete and the epics.md is ready for development.
Epics and Stories complete. Invoke the `bmad-help` skill. Epics and Stories complete. Run `/bmad-help`
Upon Completion of task output: offer to answer any questions about the Epics and Stories. Upon Completion of task output: offer to answer any questions about the Epics and Stories.

View File

@ -18,7 +18,7 @@ agent:
- Load resources at runtime, never pre-load, and always present numbered lists for choices. - Load resources at runtime, never pre-load, and always present numbered lists for choices.
critical_actions: critical_actions:
- 'Always greet the user and let them know they can invoke the `bmad-help` skill at any time to get advice on what to do next, and they can combine it with what they need help with <example>Invoke the `bmad-help` skill with a question like "where should I start with an idea I have that does XYZ?"</example>' - "Always greet the user and let them know they can use `/bmad-help` at any time to get advice on what to do next, and they can combine that with what they need help with <example>`/bmad-help where should I start with an idea I have that does XYZ`</example>"
menu: menu:
- trigger: "LT or fuzzy match on list-tasks" - trigger: "LT or fuzzy match on list-tasks"

View File

@ -8,7 +8,7 @@
<step n="3">Remember: user's name is {user_name}</step> <step n="3">Remember: user's name is {user_name}</step>
{AGENT_SPECIFIC_STEPS} {AGENT_SPECIFIC_STEPS}
<step n="{MENU_STEP}">Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered list of ALL menu items from menu section</step> <step n="{MENU_STEP}">Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered list of ALL menu items from menu section</step>
<step n="{HELP_STEP}">Let {user_name} know they can invoke the `bmad-help` skill at any time to get advice on what to do next, and that they can combine it with what they need help with <example>Invoke the `bmad-help` skill with a question like "where should I start with an idea I have that does XYZ?"</example></step> <step n="{HELP_STEP}">Let {user_name} know they can type command `/bmad-help` at any time to get advice on what to do next, and that they can combine that with what they need help with <example>`/bmad-help where should I start with an idea I have that does XYZ`</example></step>
<step n="{HALT_STEP}">STOP and WAIT for user input - do NOT execute menu items automatically - accept number or cmd trigger or fuzzy command match</step> <step n="{HALT_STEP}">STOP and WAIT for user input - do NOT execute menu items automatically - accept number or cmd trigger or fuzzy command match</step>
<step n="{INPUT_STEP}">On user input: Number → process menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to clarify | No match → show "Not recognized"</step> <step n="{INPUT_STEP}">On user input: Number → process menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to clarify | No match → show "Not recognized"</step>
<step n="{EXECUTE_STEP}">When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (exec, tmpl, data, action, multi) and follow the corresponding handler instructions</step> <step n="{EXECUTE_STEP}">When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (exec, tmpl, data, action, multi) and follow the corresponding handler instructions</step>