feat: add PR validation workflow and contribution checks

This commit is contained in:
Brian Madison
2025-08-31 20:30:52 -05:00
parent 05736fa069
commit fb70c20067
11 changed files with 154 additions and 16 deletions

View File

@@ -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

55
.github/workflows/pr-validation.yaml vendored Normal file
View File

@@ -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.`
})

View File

@@ -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

View File

@@ -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!

View File

@@ -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!

View File

@@ -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!

View File

@@ -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!

View File

@@ -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!

View File

@@ -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!

View File

@@ -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",

37
tools/setup-hooks.sh Executable file
View File

@@ -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."