Compare commits

...

6 Commits

Author SHA1 Message Date
gabadi 5aedab3aea
Merge d80d05ad30 into 783601b576 2026-04-04 20:00:27 -07:00
Brian 783601b576
fix: move BMB announcement to custom Banner component (#2210)
Starlight banner config doesn't render with custom Header. Added
announcement row to Banner.astro and removed unused config.
2026-04-04 16:10:37 -05:00
Brian 975aea6e74
docs: add BMad Builder announcement banner to docs site (#2209) 2026-04-04 16:02:26 -05:00
Alex Verkhovsky f98083ba75
docs: add contribution guardrails for unsolicited PRs (#2207)
Add Discord-first callout banner and AI-generated code curation policy.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 12:13:06 -05:00
2-gabadi d80d05ad30
fix: remove redundant editorial clause from self-review instruction
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:47:46 -03:00
2-gabadi 398860fb07
fix: quick-dev self-review verifies AC coverage against parent artifact requirements
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:40:57 -03:00
4 changed files with 41 additions and 18 deletions

View File

@ -6,6 +6,12 @@ Thank you for considering contributing! We believe in **Human Amplification, Not
--- ---
> **Before you write code: talk to us on [Discord](https://discord.gg/gk8jAdXWmj).**
>
> If your change adds features, restructures code, or touches more than a couple of files, **confirm with a maintainer that it fits**. A large PR out of the blue has a high chance of being closed — regardless of effort invested. A five-minute conversation can save you hours.
---
## Our Philosophy ## Our Philosophy
BMad strengthens human-AI collaboration through specialized agents and guided workflows. Every contribution should answer: **"Does this make humans and AI better together?"** BMad strengthens human-AI collaboration through specialized agents and guided workflows. Every contribution should answer: **"Does this make humans and AI better together?"**
@ -57,15 +63,10 @@ After searching, use the [feature request template](https://github.com/bmad-code
## Before Starting Work ## Before Starting Work
⚠️ **Required before submitting PRs:** | Work Type | Requirement |
| ----------------------- | -------------------------------------------------------- |
| Work Type | Requirement | | Typo / small bug fix | Just open the PR |
| ------------- | ---------------------------------------------- | | Feature or large change | Confirm with a maintainer on Discord **before** you start |
| Bug fix | An open issue (create one if it doesn't exist) |
| Feature | An open feature request issue |
| Large changes | Discussion via issue first |
**Why?** This prevents wasted effort on work that may not align with project direction.
--- ---
@ -83,6 +84,12 @@ Submit PRs to the `main` branch. We use trunk-based development. Every push to `
If your change exceeds 800 lines, break it into smaller PRs that can be reviewed independently. If your change exceeds 800 lines, break it into smaller PRs that can be reviewed independently.
### AI-Generated Code
Given the nature of this project, we expect most contributions involve AI assistance — that's fine. What we require is **heavy human curation**. You must understand every line you're submitting, have made deliberate choices about what to include, and be able to explain your reasoning.
We will reject PRs that read like raw LLM output: bulk refactors nobody asked for, unsolicited "improvements" across many files, or changes where the submitter clearly hasn't read the existing code. Using AI to write code is normal here; using AI as a substitute for thinking is not.
### New to Pull Requests? ### New to Pull Requests?
1. **Fork** the repository 1. **Fork** the repository

View File

@ -54,7 +54,8 @@ context: [] # optional: `{project-root}/`-prefixed paths to project-wide standar
<!-- Tasks: backtick-quoted file path -- action -- rationale. Prefer one task per file; group tightly-coupled changes when splitting would be artificial. --> <!-- Tasks: backtick-quoted file path -- action -- rationale. Prefer one task per file; group tightly-coupled changes when splitting would be artificial. -->
<!-- If an I/O Matrix is present, include a task to unit-test its edge cases. --> <!-- If an I/O Matrix is present, include a task to unit-test its edge cases. -->
<!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here. --> <!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here.
If requirements were assigned from a parent artifact, every assigned requirement must have an AC here. -->
**Execution:** **Execution:**
- [ ] `FILE` -- ACTION -- RATIONALE - [ ] `FILE` -- ACTION -- RATIONALE

View File

@ -14,7 +14,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
1. Investigate codebase. _Isolate deep exploration in sub-agents/tasks where available. To prevent context snowballing, instruct subagents to give you distilled summaries only._ 1. Investigate codebase. _Isolate deep exploration in sub-agents/tasks where available. To prevent context snowballing, instruct subagents to give you distilled summaries only._
2. Read `./spec-template.md` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`. 2. Read `./spec-template.md` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`.
3. Self-review against READY FOR DEVELOPMENT standard. 3. Self-review against READY FOR DEVELOPMENT standard. If the intent derives from a parent artifact (epic plan, PRD, story brief), verify that every requirement assigned to this scope has a corresponding AC.
4. If intent gaps exist, do not fantasize, do not leave open questions, HALT and ask the human. 4. If intent gaps exist, do not fantasize, do not leave open questions, HALT and ask the human.
5. Token count check (see SCOPE STANDARD). If spec exceeds 1600 tokens: 5. Token count check (see SCOPE STANDARD). If spec exceeds 1600 tokens:
- Show user the token count. - Show user the token count.

View File

@ -7,9 +7,13 @@ const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
<div class="ai-banner" role="note" aria-label="AI documentation notice"> <div class="ai-banner" role="note" aria-label="AI documentation notice">
<span>🤖 Consolidated, AI-optimized BMAD docs: <a href={llmsFullUrl}>llms-full.txt</a>. Fetch this plain text file for complete context.</span> <span>🤖 Consolidated, AI-optimized BMAD docs: <a href={llmsFullUrl}>llms-full.txt</a>. Fetch this plain text file for complete context.</span>
</div> </div>
<div class="announce-banner" role="note" aria-label="BMad Builder announcement">
<span>🚀 Build your own BMad modules and share them with the community! <a href="https://bmad-builder-docs.bmad-method.org/tutorials/build-your-first-module/">Get started</a> or <a href="https://bmad-builder-docs.bmad-method.org/how-to/distribute-your-module/">submit to the marketplace</a>.</span>
</div>
<style> <style>
.ai-banner { .ai-banner,
.announce-banner {
width: 100%; width: 100%;
height: var(--ai-banner-height, 2.75rem); height: var(--ai-banner-height, 2.75rem);
background: #1a1a1a; background: #1a1a1a;
@ -25,37 +29,48 @@ const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
} }
/* Truncate text on narrow screens */ /* Truncate text on narrow screens */
.ai-banner span { .ai-banner span,
.announce-banner span {
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
max-width: 100%; max-width: 100%;
} }
.ai-banner a { .ai-banner a,
.announce-banner a {
color: #3b82f6; color: #3b82f6;
text-decoration: none; text-decoration: none;
font-weight: 600; font-weight: 600;
} }
.ai-banner a:hover { .ai-banner a:hover,
.announce-banner a:hover {
color: #fafafa; color: #fafafa;
text-decoration: underline; text-decoration: underline;
} }
.ai-banner a:focus-visible { .ai-banner a:focus-visible,
.announce-banner a:focus-visible {
outline: 2px solid #3b82f6; outline: 2px solid #3b82f6;
outline-offset: 2px; outline-offset: 2px;
border-radius: 2px; border-radius: 2px;
} }
.announce-banner {
background: #1a2332;
border-bottom: 1px solid #1e3a5f;
}
/* Match navbar padding at breakpoints */ /* Match navbar padding at breakpoints */
@media (min-width: 50rem) { @media (min-width: 50rem) {
.ai-banner { .ai-banner,
.announce-banner {
padding-left: 2.5rem; padding-left: 2.5rem;
padding-right: 2.5rem; padding-right: 2.5rem;
} }
} }
@media (min-width: 72rem) { @media (min-width: 72rem) {
.ai-banner { .ai-banner,
.announce-banner {
padding-left: 3rem; padding-left: 3rem;
padding-right: 3rem; padding-right: 3rem;
} }