docs/maintainers/SETUP_GUIDE.md
This guide will help you set up and activate the complete PR management system for NOFX.
The PR management system includes:
CONTRIBUTING.md - Contributor guidelinesdocs/maintainers/PR_REVIEW_GUIDE.md - Reviewer guidelinesdocs/maintainers/PROJECT_MANAGEMENT.md - Project management workflowdocs/maintainers/SETUP_GUIDE.md - This file.github/PULL_REQUEST_TEMPLATE.md - PR template (already exists).github/labels.yml - Label definitions.github/labeler.yml - Auto-labeling rules.github/workflows/pr-checks.yml - Automated PR checksCreate the labels defined in .github/labels.yml:
# Option 1: Using gh CLI (recommended)
gh label list # See current labels
gh label delete <label-name> # Remove old labels if needed
gh label create "priority: critical" --color "d73a4a" --description "Critical priority"
# ... repeat for all labels in labels.yml
# Option 2: Use GitHub Labeler Action (automated)
# The workflow will sync labels automatically on push
Or use the GitHub Labeler Action (add to .github/workflows/sync-labels.yml):
name: Sync Labels
on:
push:
branches: [main, dev]
paths:
- '.github/labels.yml'
jobs:
labels:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: crazy-max/ghaction-github-labeler@v5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
yaml-file: .github/labels.yml
For main branch:
mainBackend Tests (Go)Frontend Tests (React/TypeScript)Security ScanFor dev branch:
Go to Projects β New project
Create "NOFX Development" board
Backlog, Triaged, In Progress, In Review, DoneCreate "Bounty Program" board
Available, Claimed, In Progress, Under Review, PaidThe templates already exist in .github/ISSUE_TEMPLATE/. Verify they're working:
If not showing, check files are properly formatted YAML with frontmatter.
Create .github/CODEOWNERS:
# Global owners
* @tinkle @zack
# Frontend
/web/ @frontend-lead
# Exchange integrations
/internal/exchange/ @exchange-lead
# AI components
/internal/ai/ @ai-lead
# Documentation
/docs/ @tinkle @zack
*.md @tinkle @zack
For Maintainers:
Go to Settings β Notifications
Enable:
Set up email filters to organize notifications
For Repository:
After setup, verify:
bounty label# Create a test branch
git checkout -b test/pr-system-check
# Make a small change
echo "# Test" >> TEST.md
# Commit and push
git add TEST.md
git commit -m "test: verify PR automation system"
git push origin test/pr-system-check
# Create PR on GitHub
# Verify:
# - PR template loads
# - Auto-labels are applied
# - CI checks run
# - Size label is added
Create PRs that change files in different areas:
# Test 1: Frontend changes
git checkout -b test/frontend-label
touch web/src/test.tsx
git add . && git commit -m "test: frontend labeling"
git push origin test/frontend-label
# Should get "area: frontend" label
# Test 2: Backend changes
git checkout -b test/backend-label
touch internal/test.go
git add . && git commit -m "test: backend labeling"
git push origin test/backend-label
# Should get "area: backend" label
Solution:
# Delete all existing labels first
gh label list --json name --jq '.[].name' | xargs -I {} gh label delete "{}" --yes
# Then create from labels.yml manually or via action
Check:
.github/workflows/Debug:
# Validate workflow locally
act pull_request # Using 'act' tool
Check:
Temporary fix:
Check:
.github/labeler.yml exists and valid YAMLpull-requests: write permissionCheck these metrics every week:
# Using gh CLI
gh pr list --state all --json number,createdAt,closedAt
gh issue list --state all --json number,createdAt,closedAt
# Or use GitHub Insights
# Repository β Insights β Pulse, Contributors, Traffic
The PR management system is now ready to:
β Guide contributors with clear guidelines β Automate repetitive tasks β Maintain code quality β Track progress systematically β Scale the community
Questions? Reach out in the maintainer channel or open a discussion.
Let's build an amazing community! π