From a96ea2f19a8136668817e4c2d6800607e3337c62 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sun, 18 Jan 2026 17:03:47 -0600 Subject: [PATCH] project licence, contribution and discord noise updates, along with improved simplified issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 32 --- .github/ISSUE_TEMPLATE/config.yaml | 7 +- .github/ISSUE_TEMPLATE/feature_request.md | 22 ++ .github/ISSUE_TEMPLATE/idea_submission.md | 109 -------- .github/ISSUE_TEMPLATE/issue.md | 32 +++ .github/workflows/discord.yaml | 230 +--------------- CONTRIBUTING.md | 313 ++++++++-------------- CONTRIBUTORS.md | 32 +++ LICENSE | 10 +- README.md | 4 +- TRADEMARK.md | 55 ++++ tools/cli/external-official-modules.yaml | 18 +- 12 files changed, 277 insertions(+), 587 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/idea_submission.md create mode 100644 .github/ISSUE_TEMPLATE/issue.md create mode 100644 CONTRIBUTORS.md create mode 100644 TRADEMARK.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 89c86162..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**Steps to Reproduce** -What lead to the bug and can it be reliable recreated - if so with what steps. - -**PR** -If you have an idea to fix and would like to contribute, please indicate here you are working on a fix, or link to a proposed PR to fix the issue. Please review the contribution.md - contributions are always welcome! - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Please be Specific if relevant** -Model(s) Used: -Agentic IDE Used: -WebSite Used: -Project Language: -BMad Method version: - -**Screenshots or Links** -If applicable, add screenshots or links (if web sharable record) to help explain your problem. - -**Additional context** -Add any other context about the problem here. The more information you can provide, the easier it will be to suggest a fix or resolve diff --git a/.github/ISSUE_TEMPLATE/config.yaml b/.github/ISSUE_TEMPLATE/config.yaml index 4c0f247e..b4c92ee6 100644 --- a/.github/ISSUE_TEMPLATE/config.yaml +++ b/.github/ISSUE_TEMPLATE/config.yaml @@ -1,5 +1,8 @@ blank_issues_enabled: false contact_links: - - name: Discord Community Support + - name: πŸ“š Documentation + url: http://docs.bmad-method.org + about: Check the docs first β€” tutorials, guides, and reference + - name: πŸ’¬ Discord Community url: https://discord.gg/gk8jAdXWmj - about: Please join our Discord server for general questions and community discussion before opening an issue. + about: Join for questions, discussion, and help before opening an issue diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..9750c221 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature Request +about: Suggest an idea or new feature +title: '' +labels: '' +assignees: '' +--- + +**Describe your idea** +A clear and concise description of what you'd like to see added or changed. + +**Why is this needed?** +Explain the problem this solves or the benefit it brings to the BMad community. + +**How should it work?** +Describe your proposed solution. If you have ideas on implementation, share them here. + +**PR** +If you'd like to contribute, please indicate you're working on this or link to your PR. Please review [CONTRIBUTING.md](../../CONTRIBUTING.md) β€” contributions are always welcome! + +**Additional context** +Add any other context, screenshots, or links that help explain your idea. diff --git a/.github/ISSUE_TEMPLATE/idea_submission.md b/.github/ISSUE_TEMPLATE/idea_submission.md deleted file mode 100644 index 6ab26d5b..00000000 --- a/.github/ISSUE_TEMPLATE/idea_submission.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -name: V6 Idea Submission -about: Suggest an idea for v6 -title: '' -labels: '' -assignees: '' ---- - -# Idea: [Replace with a clear, actionable title] - -## PASS Framework - -**P**roblem: - -> What's broken or missing? What pain point are we addressing? (1-2 sentences) -> -> [Your answer here] - -**A**udience: - -> Who's affected by this problem and how severely? (1-2 sentences) -> -> [Your answer here] - -**S**olution: - -> What will we build or change? How will we measure success? (1-2 sentences with at least 1 measurable outcome) -> -> [Your answer here] -> -> [Your Acceptance Criteria for measuring success here] - -**S**ize: - -> How much effort do you estimate this will take? -> -> - [ ] **XS** - A few hours -> - [ ] **S** - 1-2 days -> - [ ] **M** - 3-5 days -> - [ ] **L** - 1-2 weeks -> - [ ] **XL** - More than 2 weeks - ---- - -### Metadata - -**Submitted by:** [Your name] -**Date:** [Today's date] -**Priority:** [Leave blank - will be assigned during team review] - ---- - -## Examples - -
-Click to see a GOOD example - -### Idea: Add search functionality to customer dashboard - -**P**roblem: -Customers can't find their past orders quickly. They have to scroll through pages of orders to find what they're looking for, leading to 15+ support tickets per week. - -**A**udience: -All 5,000+ active customers are affected. Support team spends ~10 hours/week helping customers find orders. - -**S**olution: -Add a search bar that filters by order number, date range, and product name. Success = 50% reduction in order-finding support tickets within 2 weeks of launch. - -**S**ize: - -- [x] **M** - 3-5 days - -
- -
-Click to see a POOR example - -### Idea: Make the app better - -**P**roblem: -The app needs improvements and updates. - -**A**udience: -Users - -**S**olution: -Fix issues and add features. - -**S**ize: - -- [ ] Unknown - -_Why this is poor: Too vague, no specific problem identified, no measurable success criteria, unclear scope_ - -
- ---- - -## Tips for Success - -1. **Be specific** - Vague problems lead to vague solutions -2. **Quantify when possible** - Numbers help us prioritize (e.g., "20 customers asked for this" vs "customers want this") -3. **One idea per submission** - If you have multiple ideas, submit multiple templates -4. **Success metrics matter** - How will we know this worked? -5. **Honest sizing** - Better to overestimate than underestimate - -## Questions? - -Reach out to @OverlordBaconPants if you need help completing this template. diff --git a/.github/ISSUE_TEMPLATE/issue.md b/.github/ISSUE_TEMPLATE/issue.md new file mode 100644 index 00000000..aa072772 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue.md @@ -0,0 +1,32 @@ +--- +name: Issue +about: Report a problem or something that's not working +title: '' +labels: '' +assignees: '' +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**Steps to reproduce** +1. What were you doing when the bug occurred? +2. What steps can recreate the issue? + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Environment (if relevant)** +- Model(s) used: +- Agentic IDE used: +- BMad version: +- Project language: + +**Screenshots or links** +If applicable, add screenshots or links to help explain the problem. + +**PR** +If you'd like to contribute a fix, please indicate you're working on it or link to your PR. See [CONTRIBUTING.md](../../CONTRIBUTING.md) β€” contributions are always welcome! + +**Additional context** +Add any other context about the problem here. The more information you provide, the easier it is to help. diff --git a/.github/workflows/discord.yaml b/.github/workflows/discord.yaml index 9d5c44e6..6f90abeb 100644 --- a/.github/workflows/discord.yaml +++ b/.github/workflows/discord.yaml @@ -2,19 +2,9 @@ name: Discord Notification on: pull_request: - types: [opened, closed, reopened, ready_for_review] - release: - types: [published] - create: - delete: - issue_comment: - types: [created] - pull_request_review: - types: [submitted] - pull_request_review_comment: - types: [created] + types: [opened, closed] issues: - types: [opened, closed, reopened] + types: [opened] env: MAX_TITLE: 100 @@ -47,9 +37,7 @@ jobs: if [ "$ACTION" = "opened" ]; then ICON="πŸ”€"; LABEL="New PR" elif [ "$ACTION" = "closed" ] && [ "$MERGED" = "true" ]; then ICON="πŸŽ‰"; LABEL="Merged" - elif [ "$ACTION" = "closed" ]; then ICON="❌"; LABEL="Closed" - elif [ "$ACTION" = "reopened" ]; then ICON="πŸ”„"; LABEL="Reopened" - else ICON="πŸ“‹"; LABEL="Ready"; fi + elif [ "$ACTION" = "closed" ]; then ICON="❌"; LABEL="Closed"; fi TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc) [ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..." @@ -77,22 +65,16 @@ jobs: - name: Notify Discord env: WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - ACTION: ${{ github.event.action }} ISSUE_NUM: ${{ github.event.issue.number }} ISSUE_URL: ${{ github.event.issue.html_url }} ISSUE_TITLE: ${{ github.event.issue.title }} ISSUE_USER: ${{ github.event.issue.user.login }} ISSUE_BODY: ${{ github.event.issue.body }} - ACTOR: ${{ github.actor }} run: | set -o pipefail source .github/scripts/discord-helpers.sh [ -z "$WEBHOOK" ] && exit 0 - if [ "$ACTION" = "opened" ]; then ICON="πŸ›"; LABEL="New Issue"; USER="$ISSUE_USER" - elif [ "$ACTION" = "closed" ]; then ICON="βœ…"; LABEL="Closed"; USER="$ACTOR" - else ICON="πŸ”„"; LABEL="Reopened"; USER="$ACTOR"; fi - TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc) [ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..." BODY=$(printf '%s' "$ISSUE_BODY" | trunc $MAX_BODY) @@ -102,209 +84,7 @@ jobs: BODY=$(printf '%s' "$BODY" | wrap_urls | esc) [ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..." [ -n "$BODY" ] && BODY=" Β· $BODY" - USER=$(printf '%s' "$USER" | esc) + USER=$(printf '%s' "$ISSUE_USER" | esc) - MSG="$ICON **[$LABEL #$ISSUE_NUM: $TITLE](<$ISSUE_URL>)**"$'\n'"by @$USER$BODY" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - issue_comment: - if: github.event_name == 'issue_comment' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.repository.default_branch }} - sparse-checkout: .github/scripts - sparse-checkout-cone-mode: false - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - IS_PR: ${{ github.event.issue.pull_request && 'true' || 'false' }} - ISSUE_NUM: ${{ github.event.issue.number }} - ISSUE_TITLE: ${{ github.event.issue.title }} - COMMENT_URL: ${{ github.event.comment.html_url }} - COMMENT_USER: ${{ github.event.comment.user.login }} - COMMENT_BODY: ${{ github.event.comment.body }} - run: | - set -o pipefail - source .github/scripts/discord-helpers.sh - [ -z "$WEBHOOK" ] && exit 0 - - [ "$IS_PR" = "true" ] && TYPE="PR" || TYPE="Issue" - - TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc) - [ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..." - BODY=$(printf '%s' "$COMMENT_BODY" | trunc $MAX_BODY) - if [ ${#COMMENT_BODY} -gt $MAX_BODY ]; then - BODY=$(printf '%s' "$BODY" | strip_trailing_url) - fi - BODY=$(printf '%s' "$BODY" | wrap_urls | esc) - [ ${#COMMENT_BODY} -gt $MAX_BODY ] && BODY="${BODY}..." - USER=$(printf '%s' "$COMMENT_USER" | esc) - - MSG="πŸ’¬ **[Comment on $TYPE #$ISSUE_NUM: $TITLE](<$COMMENT_URL>)**"$'\n'"@$USER: $BODY" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - pull_request_review: - if: github.event_name == 'pull_request_review' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.repository.default_branch }} - sparse-checkout: .github/scripts - sparse-checkout-cone-mode: false - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - STATE: ${{ github.event.review.state }} - PR_NUM: ${{ github.event.pull_request.number }} - PR_TITLE: ${{ github.event.pull_request.title }} - REVIEW_URL: ${{ github.event.review.html_url }} - REVIEW_USER: ${{ github.event.review.user.login }} - REVIEW_BODY: ${{ github.event.review.body }} - run: | - set -o pipefail - source .github/scripts/discord-helpers.sh - [ -z "$WEBHOOK" ] && exit 0 - - if [ "$STATE" = "approved" ]; then ICON="βœ…"; LABEL="Approved" - elif [ "$STATE" = "changes_requested" ]; then ICON="πŸ”§"; LABEL="Changes Requested" - else ICON="πŸ‘€"; LABEL="Reviewed"; fi - - TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc) - [ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..." - BODY=$(printf '%s' "$REVIEW_BODY" | trunc $MAX_BODY) - if [ -n "$REVIEW_BODY" ] && [ ${#REVIEW_BODY} -gt $MAX_BODY ]; then - BODY=$(printf '%s' "$BODY" | strip_trailing_url) - fi - BODY=$(printf '%s' "$BODY" | wrap_urls | esc) - [ -n "$REVIEW_BODY" ] && [ ${#REVIEW_BODY} -gt $MAX_BODY ] && BODY="${BODY}..." - [ -n "$BODY" ] && BODY=": $BODY" - USER=$(printf '%s' "$REVIEW_USER" | esc) - - MSG="$ICON **[$LABEL PR #$PR_NUM: $TITLE](<$REVIEW_URL>)**"$'\n'"@$USER$BODY" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - pull_request_review_comment: - if: github.event_name == 'pull_request_review_comment' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.repository.default_branch }} - sparse-checkout: .github/scripts - sparse-checkout-cone-mode: false - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - PR_NUM: ${{ github.event.pull_request.number }} - PR_TITLE: ${{ github.event.pull_request.title }} - COMMENT_URL: ${{ github.event.comment.html_url }} - COMMENT_USER: ${{ github.event.comment.user.login }} - COMMENT_BODY: ${{ github.event.comment.body }} - run: | - set -o pipefail - source .github/scripts/discord-helpers.sh - [ -z "$WEBHOOK" ] && exit 0 - - TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc) - [ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..." - BODY=$(printf '%s' "$COMMENT_BODY" | trunc $MAX_BODY) - if [ ${#COMMENT_BODY} -gt $MAX_BODY ]; then - BODY=$(printf '%s' "$BODY" | strip_trailing_url) - fi - BODY=$(printf '%s' "$BODY" | wrap_urls | esc) - [ ${#COMMENT_BODY} -gt $MAX_BODY ] && BODY="${BODY}..." - USER=$(printf '%s' "$COMMENT_USER" | esc) - - MSG="πŸ’­ **[Review Comment PR #$PR_NUM: $TITLE](<$COMMENT_URL>)**"$'\n'"@$USER: $BODY" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - release: - if: github.event_name == 'release' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.repository.default_branch }} - sparse-checkout: .github/scripts - sparse-checkout-cone-mode: false - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - TAG: ${{ github.event.release.tag_name }} - NAME: ${{ github.event.release.name }} - URL: ${{ github.event.release.html_url }} - RELEASE_BODY: ${{ github.event.release.body }} - run: | - set -o pipefail - source .github/scripts/discord-helpers.sh - [ -z "$WEBHOOK" ] && exit 0 - - REL_NAME=$(printf '%s' "$NAME" | trunc $MAX_TITLE | esc) - [ ${#NAME} -gt $MAX_TITLE ] && REL_NAME="${REL_NAME}..." - BODY=$(printf '%s' "$RELEASE_BODY" | trunc $MAX_BODY) - if [ -n "$RELEASE_BODY" ] && [ ${#RELEASE_BODY} -gt $MAX_BODY ]; then - BODY=$(printf '%s' "$BODY" | strip_trailing_url) - fi - BODY=$(printf '%s' "$BODY" | wrap_urls | esc) - [ -n "$RELEASE_BODY" ] && [ ${#RELEASE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..." - [ -n "$BODY" ] && BODY=" Β· $BODY" - TAG_ESC=$(printf '%s' "$TAG" | esc) - - MSG="πŸš€ **[Release $TAG_ESC: $REL_NAME](<$URL>)**"$'\n'"$BODY" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - create: - if: github.event_name == 'create' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.repository.default_branch }} - sparse-checkout: .github/scripts - sparse-checkout-cone-mode: false - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - REF_TYPE: ${{ github.event.ref_type }} - REF: ${{ github.event.ref }} - ACTOR: ${{ github.actor }} - REPO_URL: ${{ github.event.repository.html_url }} - run: | - set -o pipefail - source .github/scripts/discord-helpers.sh - [ -z "$WEBHOOK" ] && exit 0 - - [ "$REF_TYPE" = "branch" ] && ICON="🌿" || ICON="🏷️" - REF_TRUNC=$(printf '%s' "$REF" | trunc $MAX_TITLE) - [ ${#REF} -gt $MAX_TITLE ] && REF_TRUNC="${REF_TRUNC}..." - REF_ESC=$(printf '%s' "$REF_TRUNC" | esc) - REF_URL=$(jq -rn --arg ref "$REF" '$ref | @uri') - ACTOR_ESC=$(printf '%s' "$ACTOR" | esc) - MSG="$ICON **${REF_TYPE^} created: [$REF_ESC](<$REPO_URL/tree/$REF_URL>)** by @$ACTOR_ESC" - jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- - - delete: - if: github.event_name == 'delete' - runs-on: ubuntu-latest - steps: - - name: Notify Discord - env: - WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - REF_TYPE: ${{ github.event.ref_type }} - REF: ${{ github.event.ref }} - ACTOR: ${{ github.actor }} - run: | - set -o pipefail - [ -z "$WEBHOOK" ] && exit 0 - esc() { sed -e 's/[][\*_()~`]/\\&/g' -e 's/@/@ /g'; } - trunc() { tr '\n\r' ' ' | cut -c1-"$1"; } - - REF_TRUNC=$(printf '%s' "$REF" | trunc 100) - [ ${#REF} -gt 100 ] && REF_TRUNC="${REF_TRUNC}..." - REF_ESC=$(printf '%s' "$REF_TRUNC" | esc) - ACTOR_ESC=$(printf '%s' "$ACTOR" | esc) - MSG="πŸ—‘οΈ **${REF_TYPE^} deleted: $REF_ESC** by @$ACTOR_ESC" + MSG="πŸ› **[Issue #$ISSUE_NUM: $TITLE](<$ISSUE_URL>)**"$'\n'"by @$USER$BODY" jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 78798b57..282e13cb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,268 +1,167 @@ # Contributing to BMad -Thank you for considering contributing to the BMad project! We believe in **Human Amplification, Not Replacement** - bringing out the best thinking in both humans and AI through guided collaboration. +Thank you for considering contributing! We believe in **Human Amplification, Not Replacement** β€” bringing out the best thinking in both humans and AI through guided collaboration. -πŸ’¬ **Discord Community**: Join our [Discord server](https://discord.gg/gk8jAdXWmj) for real-time discussions: +πŸ’¬ **Discord**: [Join our community](https://discord.gg/gk8jAdXWmj) for real-time discussions, questions, and collaboration. -- **#bmad-development** - Technical discussions and development questions -- **#suggestions-feedback** - Feature ideas and suggestions -- **#report-bugs-and-issues** - Bug reports and issue discussions +--- ## Our Philosophy -### BMad Coreβ„’: Universal Foundation +BMad strengthens human-AI collaboration through specialized agents and guided workflows. Every contribution should answer: **"Does this make humans and AI better together?"** -BMad Core empowers humans and AI agents working together in true partnership across any domain through our **C.O.R.E. Framework** (Collaboration Optimized Reflection Engine): - -- **Collaboration**: Human-AI partnership where both contribute unique strengths -- **Optimized**: The collaborative process refined for maximum effectiveness -- **Reflection**: Guided thinking that helps discover better solutions and insights -- **Engine**: The powerful framework that orchestrates specialized agents and workflows - -### BMad Methodβ„’: Agile AI-Driven Development - -The BMad Method is the flagship bmad module for agile AI-driven software development. It emphasizes thorough planning and solid architectural foundations to provide detailed context for developer agents, mirroring real-world agile best practices. - -### Core Principles - -**Partnership Over Automation** - AI agents act as expert coaches, mentors, and collaborators who amplify human capability rather than replace it. - -**Bidirectional Guidance** - Agents guide users through structured workflows while users push agents with advanced prompting. Both sides actively work to extract better information from each other. - -**Systems of Workflows** - BMad Core builds comprehensive systems of guided workflows with specialized agent teams for any domain. - -**Tool-Agnostic Foundation** - BMad Core remains tool-agnostic, providing stable, extensible groundwork that adapts to any domain. - -## What Makes a Good Contribution? - -Every contribution should strengthen human-AI collaboration. Ask yourself: **"Does this make humans and AI better together?"** - -**βœ… Contributions that align:** - -- Enhance universal collaboration patterns -- Improve agent personas and workflows -- Strengthen planning and context continuity -- Increase cross-domain accessibility -- Add domain-specific modules leveraging BMad Core - -**❌ What detracts from our mission:** +**βœ… What we welcome:** +- Enhanced collaboration patterns and workflows +- Improved agent personas and prompts +- Domain-specific modules leveraging BMad Core +- Better planning and context continuity +**❌ What doesn't fit:** - Purely automated solutions that sideline humans -- Tools that don't improve the partnership - Complexity that creates barriers to adoption - Features that fragment BMad Core's foundation -## Before You Contribute +--- -### Reporting Bugs +## Reporting Issues -1. **Check existing issues** first to avoid duplicates -2. **Consider discussing in Discord** (#report-bugs-and-issues channel) for quick help -3. **Use the bug report template** when creating a new issue - it guides you through providing: - - Clear bug description - - Steps to reproduce - - Expected vs actual behavior - - Model/IDE/BMad version details - - Screenshots or links if applicable -4. **Indicate if you're working on a fix** to avoid duplicate efforts +**ALL bug reports and feature requests MUST go through GitHub Issues.** -### Suggesting Features or New Modules +### Before Creating an Issue -1. **Discuss first in Discord** (#suggestions-feedback channel) - the feature request template asks if you've done this -2. **Check existing issues and discussions** to avoid duplicates -3. **Use the feature request template** when creating an issue -4. **Be specific** about why this feature would benefit the BMad community and strengthen human-AI collaboration +1. **Search existing issues** β€” Use the GitHub issue search to check if your bug or feature has already been reported +2. **Search closed issues** β€” Your issue may have been fixed or addressed previously +3. **Check discussions** β€” Some conversations happen in [GitHub Discussions](https://github.com/bmad-code-org/BMAD-METHOD/discussions) -### Before Starting Work +### Bug Reports + +After searching, if the bug is unreported, use the [bug report template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=bug_report.md) and include: + +- Clear description of the problem +- Steps to reproduce +- Expected vs actual behavior +- Your environment (model, IDE, BMad version) +- Screenshots or error messages if applicable + +### Feature Requests + +After searching, use the [feature request template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=feature_request.md) and explain: + +- What the feature is +- Why it would benefit the BMad community +- How it strengthens human-AI collaboration + +**For community modules**, review [TRADEMARK.md](TRADEMARK.md) for proper naming conventions (e.g., "My Module (BMad Community Module)"). + +--- + +## Before Starting Work ⚠️ **Required before submitting PRs:** -1. **For bugs**: Check if an issue exists (create one using the bug template if not) -2. **For features**: Discuss in Discord (#suggestions-feedback) AND create a feature request issue -3. **For large changes**: Always open an issue first to discuss alignment +| Work Type | Requirement | +| ------------- | ---------------------------------------------- | +| Bug fix | An open issue (create one if it doesn't exist) | +| Feature | An open feature request issue | +| Large changes | Discussion via issue first | -Please propose small, granular changes! For large or significant changes, discuss in Discord and open an issue first. This prevents wasted effort on PRs that may not align with planned changes. +**Why?** This prevents wasted effort on work that may not align with project direction. + +--- ## Pull Request Guidelines -### Which Branch? +### Target Branch -**Submit PR's to `main` branch** (critical only): +Submit PRs to the `main` branch. -- 🚨 Critical bug fixes that break basic functionality -- πŸ”’ Security patches -- πŸ“š Fixing dangerously incorrect documentation -- πŸ› Bugs preventing installation or basic usage +### PR Size -### PR Size Guidelines +- **Ideal**: 200-400 lines of code changes +- **Maximum**: 800 lines (excluding generated files) +- **One feature/fix per PR** -- **Ideal PR size**: 200-400 lines of code changes -- **Maximum PR size**: 800 lines (excluding generated files) -- **One feature/fix per PR**: Each PR should address a single issue or add one feature -- **If your change is larger**: Break it into multiple smaller PRs that can be reviewed independently -- **Related changes**: Even related changes should be separate PRs if they deliver independent value +If your change exceeds 800 lines, break it into smaller PRs that can be reviewed independently. -### Breaking Down Large PRs +### New to Pull Requests? -If your change exceeds 800 lines, use this checklist to split it: - -- [ ] Can I separate the refactoring from the feature implementation? -- [ ] Can I introduce the new API/interface in one PR and implementation in another? -- [ ] Can I split by file or module? -- [ ] Can I create a base PR with shared utilities first? -- [ ] Can I separate test additions from implementation? -- [ ] Even if changes are related, can they deliver value independently? -- [ ] Can these changes be merged in any order without breaking things? - -Example breakdown: - -1. PR #1: Add utility functions and types (100 lines) -2. PR #2: Refactor existing code to use utilities (200 lines) -3. PR #3: Implement new feature using refactored code (300 lines) -4. PR #4: Add comprehensive tests (200 lines) - -**Note**: PRs #1 and #4 could be submitted simultaneously since they deliver independent value. - -### Pull Request Process - -#### New to Pull Requests? - -If you're new to GitHub or pull requests, here's a quick guide: - -1. **Fork the repository** - Click the "Fork" button on GitHub to create your own copy -2. **Clone your fork** - `git clone https://github.com/YOUR-USERNAME/bmad-method.git` -3. **Create a new branch** - Never work on `main` directly! - ```bash - git checkout -b fix/description - # or - git checkout -b feature/description - ``` -4. **Make your changes** - Edit files, keeping changes small and focused -5. **Commit your changes** - Use clear, descriptive commit messages - ```bash - git add . - git commit -m "fix: correct typo in README" - ``` -6. **Push to your fork** - `git push origin fix/description` -7. **Create the Pull Request** - Go to your fork on GitHub and click "Compare & pull request" +1. **Fork** the repository +2. **Clone** your fork: `git clone https://github.com/YOUR-USERNAME/bmad-method.git` +3. **Create a branch**: `git checkout -b fix/description` or `git checkout -b feature/description` +4. **Make changes** β€” keep them focused +5. **Commit**: `git commit -m "fix: correct typo in README"` +6. **Push**: `git push origin fix/description` +7. **Open PR** from your fork on GitHub ### PR Description Template -Keep your PR description concise and focused. Use this template: - ```markdown ## What - [1-2 sentences describing WHAT changed] ## Why - [1-2 sentences explaining WHY this change is needed] -Fixes #[issue number] (if applicable) +Fixes #[issue number] ## How - -## [2-3 bullets listing HOW you implemented it] - -- +- [2-3 bullets listing HOW you implemented it] - ## Testing - [1-2 sentences on how you tested this] ``` -**Maximum PR description length: 200 words** (excluding code examples if needed) +**Keep it under 200 words.** -### Good vs Bad PR Descriptions +### Commit Messages -❌ **Bad Example:** - -> This revolutionary PR introduces a paradigm-shifting enhancement to the system's architecture by implementing a state-of-the-art solution that leverages cutting-edge methodologies to optimize performance metrics... - -βœ… **Good Example:** - -> **What:** Added validation for agent dependency resolution -> **Why:** Build was failing silently when agents had circular dependencies -> **How:** -> -> - Added cycle detection in dependency-resolver.js -> - Throws clear error with dependency chain -> **Testing:** Tested with circular deps between 3 agents - -### Commit Message Convention - -Use conventional commits format: +Use conventional commits: - `feat:` New feature - `fix:` Bug fix - `docs:` Documentation only -- `refactor:` Code change that neither fixes a bug nor adds a feature -- `test:` Adding missing tests -- `chore:` Changes to build process or auxiliary tools +- `refactor:` Code change (no bug/feature) +- `test:` Adding tests +- `chore:` Build/tools changes -Keep commit messages under 72 characters. - -### Atomic Commits - -Each commit should represent one logical change: - -- **Do:** One bug fix per commit -- **Do:** One feature addition per commit -- **Don't:** Mix refactoring with bug fixes -- **Don't:** Combine unrelated changes - -## What Makes a Good Pull Request? - -βœ… **Good PRs:** - -- Change one thing at a time -- Have clear, descriptive titles -- Explain what and why in the description -- Include only the files that need to change -- Reference related issue numbers - -❌ **Avoid:** - -- Changing formatting of entire files -- Multiple unrelated changes in one PR -- Copying your entire project/repo into the PR -- Changes without explanation -- Working directly on `main` branch - -## Common Mistakes to Avoid - -1. **Don't reformat entire files** - only change what's necessary -2. **Don't include unrelated changes** - stick to one fix/feature per PR -3. **Don't paste code in issues** - create a proper PR instead -4. **Don't submit your whole project** - contribute specific improvements - -## Prompt & Agent Guidelines - -- Keep dev agents lean - they need context for coding, not documentation -- Web/planning agents can be larger with more complex tasks -- Everything is natural language (markdown) - no code in core framework -- Use bmad modules for domain-specific features -- Validate YAML schemas with `npm run validate:schemas` before committing - -## Code of Conduct - -By participating in this project, you agree to abide by our Code of Conduct. We foster a collaborative, respectful environment focused on building better human-AI partnerships. - -## Need Help? - -- πŸ’¬ Join our [Discord Community](https://discord.gg/gk8jAdXWmj): - - **#bmad-development** - Technical questions and discussions - - **#suggestions-feedback** - Feature ideas and suggestions - - **#report-bugs-and-issues** - Get help with bugs before filing issues -- πŸ› Report bugs using the [bug report template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=bug_report.md) -- πŸ’‘ Suggest features using the [feature request template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=feature_request.md) -- πŸ“– Browse the [GitHub Discussions](https://github.com/bmad-code-org/BMAD-METHOD/discussions) +Keep messages under 72 characters. Each commit = one logical change. --- -**Remember**: We're here to help! Don't be afraid to ask questions. Every expert was once a beginner. Together, we're building a future where humans and AI work better together. +## What Makes a Good PR? + +| βœ… Do | ❌ Don't | +| --------------------------- | ---------------------------- | +| Change one thing per PR | Mix unrelated changes | +| Clear title and description | Vague or missing explanation | +| Reference related issues | Reformat entire files | +| Small, focused commits | Copy your whole project | +| Work on a branch | Work directly on `main` | + +--- + +## Prompt & Agent Guidelines + +- Keep dev agents lean β€” focus on coding context, not documentation +- Web/planning agents can be larger with complex tasks +- Everything is natural language (markdown) β€” no code in core framework +- Use BMad modules for domain-specific features +- Validate YAML schemas: `npm run validate:schemas` + +--- + +## Need Help? + +- πŸ’¬ **Discord**: [Join the community](https://discord.gg/gk8jAdXWmj) +- πŸ› **Bugs**: Use the [bug report template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=bug_report.md) +- πŸ’‘ **Features**: Use the [feature request template](https://github.com/bmad-code-org/BMAD-METHOD/issues/new?template=feature_request.md) + +--- + +## Code of Conduct + +By participating, you agree to abide by our [Code of Conduct](.github/CODE_OF_CONDUCT.md). ## License -By contributing to this project, you agree that your contributions will be licensed under the same license as the project. +By contributing, your contributions are licensed under the same MIT License. See [CONTRIBUTORS.md](CONTRIBUTORS.md) for contributor attribution. diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 00000000..f36cc81f --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,32 @@ +# Contributors + +BMad Core, BMad Method and BMad and Community BMad Modules are made possible by contributions from our community. We gratefully acknowledge everyone who has helped improve this project. + +## How We Credit Contributors + +- **Git history** β€” Every contribution is preserved in the project's commit history +- **Contributors badge** β€” See the dynamic contributors list on our [README](README.md) +- **GitHub contributors graph** β€” Visual representation at + +## Becoming a Contributor + +Anyone who submits a pull request that is merged becomes a contributor. Contributions include: + +- Bug fixes +- New features or workflows +- Documentation improvements +- Bug reports and issue triaging +- Code reviews +- Helping others in discussions + +There are no minimum contribution requirements β€” whether it's a one-character typo fix or a major feature, we value all contributions. + +## Copyright + +The BMad Method project is copyrighted by BMad Code, LLC. Individual contributions are licensed under the same MIT License as the project. Contributors retain authorship credit through Git history and the contributors graph. + +--- + +**Thank you to everyone who has helped make BMad Method better!** + +For contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/LICENSE b/LICENSE index d0a0c83d..557212d3 100644 --- a/LICENSE +++ b/LICENSE @@ -2,6 +2,9 @@ MIT License Copyright (c) 2025 BMad Code, LLC +This project incorporates contributions from the open source community. +See [CONTRIBUTORS.md](CONTRIBUTORS.md) for contributor attribution. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -21,6 +24,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. TRADEMARK NOTICE: -BMadβ„’ , BMAD-COREβ„’ and BMAD-METHODβ„’ are trademarks of BMad Code, LLC. The use of these -trademarks in this software does not grant any rights to use the trademarks -for any other purpose. +BMadβ„’, BMad Methodβ„’, and BMad Coreβ„’ are trademarks of BMad Code, LLC, covering all +casings and variations (including BMAD, bmad, BMadMethod, BMAD-METHOD, etc.). The use of +these trademarks in this software does not grant any rights to use the trademarks +for any other purpose. See [TRADEMARK.md](TRADEMARK.md) for detailed guidelines. diff --git a/README.md b/README.md index 72c2de0d..3aed42a2 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ MIT License β€” see [LICENSE](LICENSE) for details. --- -**BMad** and **BMAD-METHOD** are trademarks of BMad Code, LLC. +**BMad** and **BMAD-METHOD** are trademarks of BMad Code, LLC. See [TRADEMARK.md](TRADEMARK.md) for details. [![Contributors](https://contrib.rocks/image?repo=bmad-code-org/BMAD-METHOD)](https://github.com/bmad-code-org/BMAD-METHOD/graphs/contributors) + +See [CONTRIBUTORS.md](CONTRIBUTORS.md) for contributor information. diff --git a/TRADEMARK.md b/TRADEMARK.md new file mode 100644 index 00000000..e6ae5784 --- /dev/null +++ b/TRADEMARK.md @@ -0,0 +1,55 @@ +# Trademark Notice & Guidelines + +## Trademark Ownership + +The following names and logos are trademarks of BMad Code, LLC: + +- **BMad** (word mark, all casings: BMad, bmad, BMAD) +- **BMad Method** (word mark, includes BMadMethod, BMAD-METHOD, and all variations) +- **BMad Core** (word mark, includes BMadCore, BMAD-CORE, and all variations) +- **BMad Code** (word mark) +- BMad Method logo and visual branding +- The "Build More, Architect Dreams" tagline + +**All casings, stylings, and variations** of the above names (with or without hyphens, spaces, or specific capitalization) are covered by these trademarks. + +These trademarks are protected under trademark law and are **not** licensed under the MIT License. The MIT License applies to the software code only, not to the BMad brand identity. + +## What This Means + +You may: + +- Use the BMad software under the terms of the MIT License +- Refer to BMad to accurately describe compatibility or integration (e.g., "Compatible with BMad Method v6") +- Link to +- Fork the software and distribute your own version under a different name + +You may **not**: + +- Use "BMad" or any confusingly similar variation as your product name, service name, company name, or domain name +- Present your product as officially endorsed, approved, or certified by BMad Code, LLC when it is not, without written consent from an authorized representative of BMad Code, LLC +- Use BMad logos or branding in a way that suggests your product is an official or endorsed BMad product +- Register domain names, social media handles, or trademarks that incorporate BMad branding + +## Examples + +| Permitted | Not Permitted | +| ------------------------------------------------------ | -------------------------------------------- | +| "My workflow tool, compatible with BMad Method" | "BMadFlow" or "BMad Studio" | +| "An alternative implementation inspired by BMad" | "BMad Pro" or "BMad Enterprise" | +| "My Awesome Healthcare Module (Bmad Community Module)" | "The Official BMad Core Healthcare Module" | +| Accurately stating you use BMad as a dependency | Implying official endorsement or partnership | + +## Commercial Use + +You may sell products that incorporate or work with BMad software. However: + +- Your product must have its own distinct name and branding +- You must not use BMad trademarks in your marketing, domain names, or product identity +- You may truthfully describe technical compatibility (e.g., "Works with BMad Method") + +## Questions? + +If you have questions about trademark usage or would like to discuss official partnership or endorsement opportunities, please reach out: + +- **Email**: diff --git a/tools/cli/external-official-modules.yaml b/tools/cli/external-official-modules.yaml index ee7abcc7..e50fae5e 100644 --- a/tools/cli/external-official-modules.yaml +++ b/tools/cli/external-official-modules.yaml @@ -20,11 +20,13 @@ modules: defaultSelected: false type: bmad-org - whiteport-design-system: - url: https://github.com/bmad-code-org/bmad-method-wds-expansion - module-definition: src/module.yaml - code: WDS - name: "Whiteport UX Design System" - description: "UX design framework with Figma integration" - defaultSelected: false - type: community +# TODO: Enable once fixes applied: + +# whiteport-design-system: +# url: https://github.com/bmad-code-org/bmad-method-wds-expansion +# module-definition: src/module.yaml +# code: WDS +# name: "Whiteport UX Design System" +# description: "UX design framework with Figma integration" +# defaultSelected: false +# type: community