diff --git a/.github/FORK_GUIDE.md b/.github/FORK_GUIDE.md index 073d9c29..d7ed2bd4 100644 --- a/.github/FORK_GUIDE.md +++ b/.github/FORK_GUIDE.md @@ -60,6 +60,7 @@ npm run build ### Pull Request CI When you open a Pull Request to the main repository: + - All CI/CD workflows automatically run - You get full validation of your changes - No configuration needed @@ -67,6 +68,7 @@ When you open a Pull Request to the main repository: ### GitHub Codespaces Use GitHub Codespaces for a full development environment: + - All tools pre-configured - Same environment as CI/CD - No local setup required @@ -101,4 +103,4 @@ Use GitHub Codespaces for a full development environment: --- -> πŸ’‘ **Pro Tip**: This fork-friendly approach is particularly valuable for projects using AI/LLM tools that create many experimental commits, as it prevents unnecessary CI runs while maintaining code quality standards. \ No newline at end of file +> πŸ’‘ **Pro Tip**: This fork-friendly approach is particularly valuable for projects using AI/LLM tools that create many experimental commits, as it prevents unnecessary CI runs while maintaining code quality standards. diff --git a/.github/workflows/pr-validation.yaml b/.github/workflows/pr-validation.yaml new file mode 100644 index 00000000..5bacb4f0 --- /dev/null +++ b/.github/workflows/pr-validation.yaml @@ -0,0 +1,55 @@ +name: PR Validation + +on: + pull_request: + branches: [main] + types: [opened, synchronize, reopened] + +jobs: + validate: + runs-on: ubuntu-latest + if: github.event.repository.fork != true || vars.ENABLE_CI_IN_FORK == 'true' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Run validation + run: npm run validate + + - name: Check formatting + run: npm run format:check + + - name: Run linter + run: npm run lint + + - name: Run tests (if available) + run: npm test --if-present + + - name: Comment on PR if checks fail + if: failure() + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `❌ **PR Validation Failed** + + This PR has validation errors that must be fixed before merging: + - Run \`npm run validate\` to check agent/team configs + - Run \`npm run format:check\` to check formatting (fix with \`npm run format\`) + - Run \`npm run lint\` to check linting issues (fix with \`npm run lint:fix\`) + + Please fix these issues and push the changes.` + }) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fe988154..2ad976dc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,47 @@ Also note, we use the discussions feature in GitHub to have a community to discu By participating in this project, you agree to abide by our Code of Conduct. Please read it before participating. +## Before Submitting a PR + +**IMPORTANT**: All PRs must pass validation checks before they can be merged. + +### Required Checks + +Before submitting your PR, run these commands locally: + +```bash +# Run all validation checks +npm run pre-release + +# Or run them individually: +npm run validate # Validate agent/team configs +npm run format:check # Check code formatting +npm run lint # Check for linting issues +``` + +### Fixing Issues + +If any checks fail, use these commands to fix them: + +```bash +# Fix all issues automatically +npm run fix + +# Or fix individually: +npm run format # Fix formatting issues +npm run lint:fix # Fix linting issues +``` + +### Setup Git Hooks (Optional but Recommended) + +To catch issues before committing: + +```bash +# Run this once after cloning +chmod +x tools/setup-hooks.sh +./tools/setup-hooks.sh +``` + ## How to Contribute ### Reporting Bugs diff --git a/README.md b/README.md index c22292f6..135a2937 100644 --- a/README.md +++ b/README.md @@ -243,19 +243,3 @@ BMADβ„’ and BMAD-METHODβ„’ are trademarks of BMad Code, LLC. All rights reserved [![Contributors](https://contrib.rocks/image?repo=bmadcode/bmad-method)](https://github.com/bmadcode/bmad-method/graphs/contributors) Built with ❀️ for the AI-assisted development community - -#### Codex (CLI & Web) - -- Two modes are supported: - - Codex (local only): `npx bmad-method install -f -i codex -d .` β€” keeps `.bmad-core/` ignored via `.gitignore` for local development. - - Codex Web Enabled: `npx bmad-method install -f -i codex-web -d .` β€” ensures `.bmad-core/` is tracked (not ignored) so it can be committed for Codex Web. -- For Codex Web, commit both `.bmad-core/` and `AGENTS.md` to the repository. -- Codex CLI: run `codex` at your project root; reference agents naturally, e.g., β€œAs dev, implement …”. -- Codex Web: open your repo in Codex and prompt the same way β€” it reads `AGENTS.md` automatically. -- Refresh after changes: rerun the appropriate install command (`codex` or `codex-web`) to regenerate the BMAD section inside `AGENTS.md`. - -If a `package.json` exists in your project, the installer will add helpful scripts: - -- `bmad:refresh` β†’ `bmad-method install -f -i codex` -- `bmad:list` β†’ `bmad-method list:agents` -- `bmad:validate` β†’ `bmad-method validate` diff --git a/bmad-core/workflows/brownfield-fullstack.yaml b/bmad-core/workflows/brownfield-fullstack.yaml index 6a7d7d87..a696b0a8 100644 --- a/bmad-core/workflows/brownfield-fullstack.yaml +++ b/bmad-core/workflows/brownfield-fullstack.yaml @@ -160,7 +160,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -177,7 +177,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/bmad-core/workflows/brownfield-service.yaml b/bmad-core/workflows/brownfield-service.yaml index e2af23de..6c8148cd 100644 --- a/bmad-core/workflows/brownfield-service.yaml +++ b/bmad-core/workflows/brownfield-service.yaml @@ -106,7 +106,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -123,7 +123,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/bmad-core/workflows/brownfield-ui.yaml b/bmad-core/workflows/brownfield-ui.yaml index 4a9ffd76..9e249f4e 100644 --- a/bmad-core/workflows/brownfield-ui.yaml +++ b/bmad-core/workflows/brownfield-ui.yaml @@ -113,7 +113,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -130,7 +130,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/bmad-core/workflows/greenfield-fullstack.yaml b/bmad-core/workflows/greenfield-fullstack.yaml index 1425d9f2..1fa8a6a8 100644 --- a/bmad-core/workflows/greenfield-fullstack.yaml +++ b/bmad-core/workflows/greenfield-fullstack.yaml @@ -65,12 +65,12 @@ workflow: condition: po_checklist_issues notes: "If PO finds issues, return to relevant agent to fix and re-export updated documents to docs/ folder." - - project_setup_guidance: + - step: project_setup_guidance action: guide_project_structure condition: user_has_generated_ui notes: "If user generated UI with v0/Lovable: For polyrepo setup, place downloaded project in separate frontend repo alongside backend repo. For monorepo, place in apps/web or packages/frontend directory. Review architecture document for specific guidance." - - development_order_guidance: + - step: development_order_guidance action: guide_development_sequence notes: "Based on PRD stories: If stories are frontend-heavy, start with frontend project/directory first. If backend-heavy or API-first, start with backend. For tightly coupled features, follow story sequence in monorepo setup. Reference sharded PRD epics for development order." @@ -138,7 +138,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -155,7 +155,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/bmad-core/workflows/greenfield-service.yaml b/bmad-core/workflows/greenfield-service.yaml index c30c0132..c8339678 100644 --- a/bmad-core/workflows/greenfield-service.yaml +++ b/bmad-core/workflows/greenfield-service.yaml @@ -114,7 +114,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -131,7 +131,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/bmad-core/workflows/greenfield-ui.yaml b/bmad-core/workflows/greenfield-ui.yaml index 2b3e5f46..14678458 100644 --- a/bmad-core/workflows/greenfield-ui.yaml +++ b/bmad-core/workflows/greenfield-ui.yaml @@ -64,7 +64,7 @@ workflow: condition: po_checklist_issues notes: "If PO finds issues, return to relevant agent to fix and re-export updated documents to docs/ folder." - - project_setup_guidance: + - step: project_setup_guidance action: guide_project_structure condition: user_has_generated_ui notes: "If user generated UI with v0/Lovable: For polyrepo setup, place downloaded project in separate frontend repo. For monorepo, place in apps/web or frontend/ directory. Review architecture document for specific guidance." @@ -133,7 +133,7 @@ workflow: - Dev Agent (New Chat): Address remaining items - Return to QA for final approval - - repeat_development_cycle: + - step: repeat_development_cycle action: continue_for_all_stories notes: | Repeat story cycle (SM β†’ Dev β†’ QA) for all epic stories @@ -150,7 +150,7 @@ workflow: - Validate epic was completed correctly - Document learnings and improvements - - workflow_end: + - step: workflow_end action: project_complete notes: | All stories implemented and reviewed! diff --git a/docs/expansion-packs.md b/docs/expansion-packs.md index 69b94b4e..9a7897c3 100644 --- a/docs/expansion-packs.md +++ b/docs/expansion-packs.md @@ -18,7 +18,7 @@ Each expansion pack provides deep, specialized knowledge without bloating the co Anyone can create and share expansion packs, fostering a ecosystem of AI-powered solutions across all industries and interests. -## Technical Expansion Packs +## Technical Expansion Packs (Examples of possible expansions to come) ### Game Development Pack @@ -191,90 +191,10 @@ Research acceleration tools: ## Creating Your Own Expansion Pack -### Step 1: Define Your Domain - -What expertise are you capturing? What problems will it solve? - -### Step 2: Design Your Agents - -Each agent should have: - -- Clear expertise area -- Specific personality traits -- Defined capabilities -- Knowledge boundaries - -### Step 3: Create Tasks - -Tasks should be: - -- Step-by-step procedures -- Reusable across scenarios -- Clear and actionable -- Domain-specific - -### Step 4: Build Templates - -Templates need: - -- Structured output format -- Embedded LLM instructions -- Placeholders for customization -- Professional formatting - -### Step 5: Test & Iterate - -- Use with real scenarios -- Gather user feedback -- Refine agent responses -- Improve task clarity - -### Step 6: Package & Share - -- Create clear documentation -- Include usage examples -- Add to expansion-packs directory -- Share with community - -## The Future of Expansion Packs - -### Marketplace Potential - -Imagine a future where: - -- Professional expansion packs are sold -- Certified packs for regulated industries -- Community ratings and reviews -- Automatic updates and improvements - -### AI Agent Ecosystems - -Expansion packs could enable: - -- Cross-pack agent collaboration -- Industry-standard agent protocols -- Interoperable AI workflows -- Universal agent languages - -### Democratizing Expertise - -Every expansion pack: - -- Makes expert knowledge accessible -- Reduces barriers to entry -- Enables solo entrepreneurs -- Empowers small teams - -## Getting Started - -1. **Browse existing packs**: Check `expansion-packs/` directory -2. **Install what you need**: Use the installer's expansion pack option -3. **Create your own**: Use the expansion-creator pack -4. **Share with others**: Submit PRs with new packs -5. **Build the future**: Help shape AI-assisted work +The next major release will include a new agent and expansion pack builder and a new expansion format. ## Remember -The BMad Method is more than a development framework - it's a platform for structuring human expertise into AI-accessible formats. Every expansion pack you create makes specialized knowledge more accessible to everyone. +The BMad Method is more than a Software Development Agile Framework! Every expansion pack makes specialized knowledge and workflows more accessible to everyone. **What expertise will you share with the world?** diff --git a/package-lock.json b/package-lock.json index cc948733..0c8df958 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bmad-method", - "version": "4.40.1", + "version": "4.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bmad-method", - "version": "4.40.1", + "version": "4.42.1", "license": "MIT", "dependencies": { "@kayvan/markdown-tree-parser": "^1.6.1", diff --git a/package.json b/package.json index 3bbd7627..16fd5ec2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "bmad-method", - "version": "4.40.1", + "version": "4.42.1", "description": "Breakthrough Method of Agile AI-driven Development", "keywords": [ "agile", @@ -27,6 +27,7 @@ "build": "node tools/cli.js build", "build:agents": "node tools/cli.js build --agents-only", "build:teams": "node tools/cli.js build --teams-only", + "fix": "npm run format && npm run lint:fix", "flatten": "node tools/flattener/main.js", "format": "prettier --write \"**/*.{js,cjs,mjs,json,md,yaml}\"", "format:check": "prettier --check \"**/*.{js,cjs,mjs,json,md,yaml}\"", @@ -34,12 +35,14 @@ "lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0", "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix", "list:agents": "node tools/cli.js list:agents", + "pre-release": "npm run validate && npm run format:check && npm run lint", "prepare": "husky", "preview:release": "node tools/preview-release-notes.js", "release:major": "gh workflow run \"Manual Release\" -f version_bump=major", "release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor", "release:patch": "gh workflow run \"Manual Release\" -f version_bump=patch", "release:watch": "gh run watch", + "setup:hooks": "chmod +x tools/setup-hooks.sh && ./tools/setup-hooks.sh", "validate": "node tools/cli.js validate", "version:all": "node tools/bump-all-versions.js", "version:all:major": "node tools/bump-all-versions.js major", diff --git a/test.md b/test.md new file mode 100644 index 00000000..8ae05696 --- /dev/null +++ b/test.md @@ -0,0 +1 @@ +# Test diff --git a/tools/installer/package-lock.json b/tools/installer/package-lock.json index 0c18278e..f4fb6a02 100644 --- a/tools/installer/package-lock.json +++ b/tools/installer/package-lock.json @@ -1,12 +1,12 @@ { "name": "bmad-method", - "version": "4.37.0-beta.4", + "version": "4.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bmad-method", - "version": "4.37.0-beta.4", + "version": "4.42.1", "license": "MIT", "dependencies": { "chalk": "^4.1.2", diff --git a/tools/installer/package.json b/tools/installer/package.json index fd5da503..50d85ac0 100644 --- a/tools/installer/package.json +++ b/tools/installer/package.json @@ -1,6 +1,6 @@ { "name": "bmad-method", - "version": "4.39.1", + "version": "4.42.1", "description": "BMad Method installer - AI-powered Agile development framework", "keywords": [ "bmad", diff --git a/tools/setup-hooks.sh b/tools/setup-hooks.sh new file mode 100755 index 00000000..f8838508 --- /dev/null +++ b/tools/setup-hooks.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Setup script for git hooks +echo "Setting up git hooks..." + +# Install husky +npm install --save-dev husky + +# Initialize husky +npx husky init + +# Create pre-commit hook +cat > .husky/pre-commit << 'EOF' +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +# Run validation checks before commit +echo "Running pre-commit checks..." + +npm run validate +npm run format:check +npm run lint + +if [ $? -ne 0 ]; then + echo "❌ Pre-commit checks failed. Please fix the issues before committing." + echo " Run 'npm run format' to fix formatting issues" + echo " Run 'npm run lint:fix' to fix some lint issues" + exit 1 +fi + +echo "βœ… Pre-commit checks passed!" +EOF + +chmod +x .husky/pre-commit + +echo "βœ… Git hooks setup complete!" +echo "Now commits will be validated before they're created." \ No newline at end of file