Compare commits
5 Commits
4f76d28767
...
e425a93519
| Author | SHA1 | Date |
|---|---|---|
|
|
e425a93519 | |
|
|
783601b576 | |
|
|
975aea6e74 | |
|
|
f98083ba75 | |
|
|
1a85069b75 |
|
|
@ -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 |
|
||||||
| ------------- | ---------------------------------------------- |
|
| ----------------------- | -------------------------------------------------------- |
|
||||||
| Bug fix | An open issue (create one if it doesn't exist) |
|
| Typo / small bug fix | Just open the PR |
|
||||||
| Feature | An open feature request issue |
|
| Feature or large change | Confirm with a maintainer on Discord **before** you start |
|
||||||
| 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
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
name: validate-workflow
|
||||||
|
description: "Run a checklist against a document with thorough analysis and produce a validation report"
|
||||||
|
---
|
||||||
|
|
||||||
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
# Validate Workflow Output
|
||||||
|
|
||||||
|
**Goal:** Run a checklist against a document with thorough analysis and produce a validation report.
|
||||||
|
|
||||||
|
**Inputs:**
|
||||||
|
|
||||||
|
- **workflow** (required) — Workflow path containing `checklist.md`
|
||||||
|
- **checklist** (optional) — Checklist to validate against (defaults to the workflow's `checklist.md`)
|
||||||
|
- **document** (optional) — Document to validate (ask user if not specified)
|
||||||
|
|
||||||
|
## STEPS
|
||||||
|
|
||||||
|
### Step 1: Setup
|
||||||
|
|
||||||
|
- If checklist not provided, load `checklist.md` from the workflow location
|
||||||
|
- Try to fuzzy-match files similar to the input document name; if document not provided or unsure, ask user: "Which document should I validate?"
|
||||||
|
- Load both the checklist and document
|
||||||
|
|
||||||
|
### Step 2: Validate (CRITICAL)
|
||||||
|
|
||||||
|
**For EVERY checklist item, WITHOUT SKIPPING ANY:**
|
||||||
|
|
||||||
|
1. Read the requirement carefully
|
||||||
|
2. Search the document for evidence along with any ancillary loaded documents or artifacts (quotes with line numbers)
|
||||||
|
3. Analyze deeply — look for explicit AND implied coverage
|
||||||
|
|
||||||
|
**Mark each item as:**
|
||||||
|
|
||||||
|
- **PASS** `✓` — Requirement fully met (provide evidence)
|
||||||
|
- **PARTIAL** `⚠` — Some coverage but incomplete (explain gaps)
|
||||||
|
- **FAIL** `✗` — Not met or severely deficient (explain why)
|
||||||
|
- **N/A** `➖` — Not applicable (explain reason)
|
||||||
|
|
||||||
|
**DO NOT SKIP ANY SECTIONS OR ITEMS.**
|
||||||
|
|
||||||
|
### Step 3: Generate Report
|
||||||
|
|
||||||
|
Create `validation-report-{timestamp}.md` in the document's folder with the following format:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Validation Report
|
||||||
|
|
||||||
|
**Document:** {document-path}
|
||||||
|
**Checklist:** {checklist-path}
|
||||||
|
**Date:** {timestamp}
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
- Overall: X/Y passed (Z%)
|
||||||
|
- Critical Issues: {count}
|
||||||
|
|
||||||
|
## Section Results
|
||||||
|
|
||||||
|
### {Section Name}
|
||||||
|
|
||||||
|
Pass Rate: X/Y (Z%)
|
||||||
|
|
||||||
|
[MARK] {Item description}
|
||||||
|
Evidence: {Quote with line# or explanation}
|
||||||
|
{If FAIL/PARTIAL: Impact: {why this matters}}
|
||||||
|
|
||||||
|
## Failed Items
|
||||||
|
|
||||||
|
{All ✗ items with recommendations}
|
||||||
|
|
||||||
|
## Partial Items
|
||||||
|
|
||||||
|
{All ⚠ items with what's missing}
|
||||||
|
|
||||||
|
## Recommendations
|
||||||
|
|
||||||
|
1. Must Fix: {critical failures}
|
||||||
|
2. Should Improve: {important gaps}
|
||||||
|
3. Consider: {minor improvements}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 4: Summary for User
|
||||||
|
|
||||||
|
- Present section-by-section summary
|
||||||
|
- Highlight all critical issues
|
||||||
|
- Provide path to saved report
|
||||||
|
- **HALT** — do not continue unless user asks
|
||||||
|
|
||||||
|
## HALT CONDITIONS
|
||||||
|
|
||||||
|
- HALT after presenting summary in Step 4
|
||||||
|
- HALT with error if no checklist is found and none is provided
|
||||||
|
- HALT with error if no document is found and user does not specify one
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue