buildwright 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/.buildwright/agents/README.md +53 -0
- package/templates/.buildwright/agents/architect.md +143 -0
- package/templates/.buildwright/agents/security-engineer.md +193 -0
- package/templates/.buildwright/agents/staff-engineer.md +134 -0
- package/templates/.buildwright/claws/README.md +89 -0
- package/templates/.buildwright/claws/TEMPLATE.md +71 -0
- package/templates/.buildwright/claws/backend.md +114 -0
- package/templates/.buildwright/claws/database.md +120 -0
- package/templates/.buildwright/claws/devops.md +175 -0
- package/templates/.buildwright/claws/frontend.md +111 -0
- package/templates/.buildwright/commands/bw-analyse.md +86 -0
- package/templates/.buildwright/commands/bw-claw.md +332 -0
- package/templates/.buildwright/commands/bw-help.md +85 -0
- package/templates/.buildwright/commands/bw-new-feature.md +504 -0
- package/templates/.buildwright/commands/bw-quick.md +323 -0
- package/templates/.buildwright/commands/bw-ship.md +288 -0
- package/templates/.buildwright/commands/bw-verify.md +108 -0
- package/templates/.buildwright/steering/naming-conventions.md +40 -0
- package/templates/.buildwright/steering/product.md +16 -0
- package/templates/.buildwright/steering/quality-gates.md +35 -0
- package/templates/.buildwright/steering/tech.md +27 -0
- package/templates/.buildwright/tasks/TEMPLATE.md +79 -0
- package/templates/.env.example +11 -1
- package/templates/.github/workflows/quality-gates.yml +150 -0
- package/templates/BUILDWRIGHT.md +99 -1
- package/templates/CLAUDE.md +150 -1
- package/templates/Makefile +86 -1
- package/templates/docs/requirements/TEMPLATE.md +33 -0
- package/templates/scripts/bump-version.sh +33 -0
- package/templates/scripts/hooks/post-checkout +24 -0
- package/templates/scripts/hooks/post-merge +14 -0
- package/templates/scripts/hooks/pre-commit +14 -0
- package/templates/scripts/install-hooks.sh +35 -0
- package/templates/scripts/release.sh +38 -0
- package/templates/scripts/sync-agents.sh +294 -0
- package/templates/scripts/validate-skill.sh +156 -0
- package/templates/.buildwright +0 -1
- package/templates/.github +0 -1
- package/templates/docs +0 -1
- package/templates/scripts +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bw-verify
|
|
3
|
+
description: Run quick quality checks (typecheck, lint, test, build). For full checks including security and AI review, use /bw-ship.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Running quick verification...
|
|
7
|
+
|
|
8
|
+
## 1. Discover Project Commands
|
|
9
|
+
|
|
10
|
+
Follow the Tech Discovery Protocol (see Command Discovery in CLAUDE.md):
|
|
11
|
+
|
|
12
|
+
1. Read `.buildwright/steering/tech.md` — if "Project Commands" has real commands, use them.
|
|
13
|
+
2. Otherwise auto-detect from project files: `package.json`, `Cargo.toml`, `go.mod`, `pyproject.toml`, `Makefile`, etc.
|
|
14
|
+
3. Derive typecheck, lint, test, build commands. Mark as SKIP if a stack has no equivalent.
|
|
15
|
+
4. Write discovered commands to `tech.md` for future runs.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Type Check
|
|
20
|
+
|
|
21
|
+
Run DISCOVERED_TYPECHECK.
|
|
22
|
+
|
|
23
|
+
Examples by runtime (use only what was discovered — do not hardcode):
|
|
24
|
+
- Node/TypeScript: `npx tsc --noEmit` or the project's typecheck script
|
|
25
|
+
- Rust: `cargo check`
|
|
26
|
+
- Go: `go build ./...`
|
|
27
|
+
- Python: `mypy .` or `pyright`
|
|
28
|
+
- Other: SKIP if no type checker exists for this stack
|
|
29
|
+
|
|
30
|
+
**Result:** PASS / FAIL / SKIP
|
|
31
|
+
**Details:** [error count and locations if failed]
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3. Lint
|
|
36
|
+
|
|
37
|
+
Run DISCOVERED_LINT.
|
|
38
|
+
|
|
39
|
+
Examples by runtime (use only what was discovered):
|
|
40
|
+
- Node/TypeScript: project lint script or `npx eslint .`
|
|
41
|
+
- Rust: `cargo clippy -- -D warnings`
|
|
42
|
+
- Go: `golangci-lint run`
|
|
43
|
+
- Python: `ruff check .` or `flake8`
|
|
44
|
+
- Other: SKIP if no linter configured
|
|
45
|
+
|
|
46
|
+
**Result:** PASS / FAIL / SKIP
|
|
47
|
+
**Details:** [warning/error count]
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 4. Tests
|
|
52
|
+
|
|
53
|
+
Run DISCOVERED_TEST.
|
|
54
|
+
|
|
55
|
+
Examples by runtime (use only what was discovered):
|
|
56
|
+
- Node/TypeScript: project test script or `npx jest`
|
|
57
|
+
- Rust: `cargo test`
|
|
58
|
+
- Go: `go test ./...`
|
|
59
|
+
- Python: `pytest`
|
|
60
|
+
- Other: consult Makefile or CI workflow
|
|
61
|
+
|
|
62
|
+
**Result:** PASS / FAIL
|
|
63
|
+
**Details:** [test count, coverage % if available]
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 5. Build
|
|
68
|
+
|
|
69
|
+
Run DISCOVERED_BUILD.
|
|
70
|
+
|
|
71
|
+
Examples by runtime (use only what was discovered):
|
|
72
|
+
- Node/TypeScript: project build script
|
|
73
|
+
- Rust: `cargo build --release`
|
|
74
|
+
- Go: `go build ./...`
|
|
75
|
+
- Python: SKIP — no build step for interpreted scripts
|
|
76
|
+
- Other: SKIP if this stack has no build step
|
|
77
|
+
|
|
78
|
+
**Result:** PASS / FAIL / SKIP
|
|
79
|
+
**Details:** [any warnings]
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Summary
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
╔═══════════════════════════════════════════════════════════════╗
|
|
87
|
+
║ QUICK VERIFICATION ║
|
|
88
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
89
|
+
║ Stack detected: [runtime] ║
|
|
90
|
+
║ Commands used: [list of commands actually run] ║
|
|
91
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
92
|
+
║ Type Check: ✅ PASS / ❌ FAIL / ⏭ SKIP ║
|
|
93
|
+
║ Lint: ✅ PASS / ❌ FAIL / ⏭ SKIP ([N] warnings) ║
|
|
94
|
+
║ Tests: ✅ PASS / ❌ FAIL ([N] tests, [X]% coverage) ║
|
|
95
|
+
║ Build: ✅ PASS / ❌ FAIL / ⏭ SKIP ║
|
|
96
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
97
|
+
║ Status: PASS / BLOCKED ║
|
|
98
|
+
╚═══════════════════════════════════════════════════════════════╝
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
If BLOCKED: List specific failures with file:line references.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Next Steps
|
|
106
|
+
|
|
107
|
+
- If PASS: Run `/bw-ship` for full quality pipeline (security + review + release)
|
|
108
|
+
- If BLOCKED: Fix issues and re-run `/bw-verify`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Naming Conventions
|
|
2
|
+
|
|
3
|
+
Shared vocabulary across all agents and claws. When any agent adds a new field, endpoint, or concept, it MUST be registered here so all other agents derive their naming from this registry.
|
|
4
|
+
|
|
5
|
+
## Layer-Specific Naming Rules
|
|
6
|
+
|
|
7
|
+
| Layer | Convention | Example |
|
|
8
|
+
|-------|-----------|---------|
|
|
9
|
+
| Database columns | `snake_case` | `photo_url`, `created_at` |
|
|
10
|
+
| API (JSON keys) | `camelCase` | `photoUrl`, `createdAt` |
|
|
11
|
+
| UI (JavaScript) | `camelCase` | `photoUrl`, `createdAt` |
|
|
12
|
+
| CSS classes | `kebab-case` | `photo-upload`, `member-card` |
|
|
13
|
+
| URL paths | `kebab-case` | `/api/team-members/:id/photo` |
|
|
14
|
+
| Environment vars | `SCREAMING_SNAKE` | `BUILDWRIGHT_AUTO_APPROVE` |
|
|
15
|
+
| File names | `kebab-case` | `photo-upload.tsx`, `team-members.ts` |
|
|
16
|
+
|
|
17
|
+
## Canonical Field Registry
|
|
18
|
+
|
|
19
|
+
Register new fields here when they cross domain boundaries.
|
|
20
|
+
|
|
21
|
+
| Concept | Database | API (JSON) | UI (JS) | Notes |
|
|
22
|
+
|---------|----------|------------|---------|-------|
|
|
23
|
+
| — | `snake_case` | `camelCase` | `camelCase` | Convention |
|
|
24
|
+
<!-- Add new fields below this line -->
|
|
25
|
+
|
|
26
|
+
## Canonical Endpoint Registry
|
|
27
|
+
|
|
28
|
+
Register new endpoints here when they're defined by the Architect.
|
|
29
|
+
|
|
30
|
+
| Purpose | Method | Path | Request Body | Response Body |
|
|
31
|
+
|---------|--------|------|-------------|--------------|
|
|
32
|
+
<!-- Add new endpoints below this line -->
|
|
33
|
+
|
|
34
|
+
## Rules
|
|
35
|
+
|
|
36
|
+
1. **Architect registers first** — Before spawning claws, the Architect adds new fields/endpoints to this file
|
|
37
|
+
2. **Claws derive, never invent** — Each claw looks up naming from this registry, never creates its own
|
|
38
|
+
3. **One source of truth** — If a name isn't here, ask the Architect before proceeding
|
|
39
|
+
4. **No abbreviations** — Use `photo_url` not `pic_url`, `description` not `desc`
|
|
40
|
+
5. **Consistent pluralization** — Collections are plural (`members`), single items are singular (`member`)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Product Context
|
|
2
|
+
|
|
3
|
+
## What We're Building
|
|
4
|
+
[Describe your product/project here]
|
|
5
|
+
|
|
6
|
+
## Key Features
|
|
7
|
+
[List main features]
|
|
8
|
+
|
|
9
|
+
## User Personas
|
|
10
|
+
[Describe target users]
|
|
11
|
+
|
|
12
|
+
## Business Constraints
|
|
13
|
+
[Timeline, compliance, integrations]
|
|
14
|
+
|
|
15
|
+
## Current Focus
|
|
16
|
+
[What's being worked on now]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Quality Gates
|
|
2
|
+
|
|
3
|
+
These automated gates replace human code review. ALL must pass for merge.
|
|
4
|
+
|
|
5
|
+
## Gate 1: Static Analysis
|
|
6
|
+
- [ ] Type check passes (zero errors)
|
|
7
|
+
- [ ] Lint passes (zero errors, warnings acceptable)
|
|
8
|
+
- [ ] No new lint warnings introduced
|
|
9
|
+
|
|
10
|
+
## Gate 2: Tests
|
|
11
|
+
- [ ] All existing tests pass
|
|
12
|
+
- [ ] New code has tests
|
|
13
|
+
- [ ] Coverage does not decrease
|
|
14
|
+
- [ ] Critical paths have >80% coverage
|
|
15
|
+
|
|
16
|
+
## Gate 3: Security
|
|
17
|
+
- [ ] No high/critical vulnerabilities in dependencies
|
|
18
|
+
- [ ] No secrets in code
|
|
19
|
+
- [ ] SAST scan passes (if configured)
|
|
20
|
+
|
|
21
|
+
## Gate 4: Build
|
|
22
|
+
- [ ] Production build succeeds
|
|
23
|
+
- [ ] No build warnings
|
|
24
|
+
|
|
25
|
+
## Gate 5: AI Review (Optional)
|
|
26
|
+
- [ ] No blocking issues from AI reviewer
|
|
27
|
+
|
|
28
|
+
## Financial/Trading Code (Additional)
|
|
29
|
+
- [ ] No floating-point for currency
|
|
30
|
+
- [ ] All inputs validated
|
|
31
|
+
- [ ] Rate limiting on sensitive endpoints
|
|
32
|
+
- [ ] Audit logging for transactions
|
|
33
|
+
|
|
34
|
+
## Auto-Merge Criteria
|
|
35
|
+
When ALL gates pass → PR auto-merges → Deploy triggers
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Technical Context
|
|
2
|
+
|
|
3
|
+
## Stack
|
|
4
|
+
[List your tech stack]
|
|
5
|
+
|
|
6
|
+
## Project Commands
|
|
7
|
+
|
|
8
|
+
Fill in these slots with your project's actual commands. If left empty, Buildwright
|
|
9
|
+
auto-detects from project files (package.json, Cargo.toml, go.mod, pyproject.toml,
|
|
10
|
+
Makefile) and populates this section on the first run.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
typecheck: [command] # Examples: npx tsc --noEmit | cargo check | go build ./... | mypy .
|
|
14
|
+
lint: [command] # Examples: npx eslint . | cargo clippy | golangci-lint run | ruff check .
|
|
15
|
+
test: [command] # Examples: npm test | cargo test | go test ./... | pytest
|
|
16
|
+
build: [command] # Examples: npm run build | cargo build --release | go build ./...
|
|
17
|
+
dev: [command] # Examples: npm run dev | cargo run | go run ./... | uvicorn app:main
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Architecture
|
|
21
|
+
[High-level architecture notes]
|
|
22
|
+
|
|
23
|
+
## Code Patterns
|
|
24
|
+
[Patterns used in this codebase]
|
|
25
|
+
|
|
26
|
+
## Dependencies
|
|
27
|
+
[Key dependencies and why]
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Task: [Feature Name]
|
|
2
|
+
|
|
3
|
+
## Quick Reference
|
|
4
|
+
- **Status**: DRAFTING | SPEC_REVIEW | IMPLEMENTING | CODE_REVIEW | COMPLETE | BLOCKED
|
|
5
|
+
- **Branch**: feature/[name]
|
|
6
|
+
- **Spec**: docs/specs/[name]/spec.md
|
|
7
|
+
- **Current Owner**: [agent-role or "unassigned"]
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Status: DRAFTING
|
|
12
|
+
|
|
13
|
+
## Branch: feature/[name]
|
|
14
|
+
|
|
15
|
+
## Current Owner: unassigned
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Phases
|
|
20
|
+
|
|
21
|
+
### Phase 1: Specification
|
|
22
|
+
| Field | Value |
|
|
23
|
+
|-------|-------|
|
|
24
|
+
| Owner | architect-agent |
|
|
25
|
+
| Status | ⏳ PENDING |
|
|
26
|
+
| Output | docs/specs/[name]/spec.md |
|
|
27
|
+
| Started | - |
|
|
28
|
+
| Completed | - |
|
|
29
|
+
|
|
30
|
+
### Phase 2: Implementation
|
|
31
|
+
| Field | Value |
|
|
32
|
+
|-------|-------|
|
|
33
|
+
| Owner | implementer-agent |
|
|
34
|
+
| Status | ⏳ WAITING |
|
|
35
|
+
| Branch | feature/[name] |
|
|
36
|
+
| Started | - |
|
|
37
|
+
| Completed | - |
|
|
38
|
+
|
|
39
|
+
**Milestones**:
|
|
40
|
+
- [ ] Milestone 1: [description]
|
|
41
|
+
- [ ] Milestone 2: [description]
|
|
42
|
+
- [ ] Milestone 3: [description]
|
|
43
|
+
|
|
44
|
+
### Phase 3: Review & Ship
|
|
45
|
+
| Field | Value |
|
|
46
|
+
|-------|-------|
|
|
47
|
+
| Owner | reviewer-agent |
|
|
48
|
+
| Status | ⏳ WAITING |
|
|
49
|
+
| PR | - |
|
|
50
|
+
| Started | - |
|
|
51
|
+
| Completed | - |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Context for Next Agent
|
|
56
|
+
|
|
57
|
+
### Decisions Made
|
|
58
|
+
-
|
|
59
|
+
|
|
60
|
+
### Key Files Modified
|
|
61
|
+
-
|
|
62
|
+
|
|
63
|
+
### Known Issues / TODOs
|
|
64
|
+
-
|
|
65
|
+
|
|
66
|
+
### Test Commands
|
|
67
|
+
```bash
|
|
68
|
+
npm run test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Blockers
|
|
74
|
+
None currently.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Communication Log
|
|
79
|
+
- [timestamp] [agent]: Starting work
|
package/templates/.env.example
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
# Buildwright Environment Variables
|
|
2
|
+
# Copy to .env or export in your shell: source .env.example
|
|
3
|
+
|
|
4
|
+
# Autonomous mode — skip human approval, fail gracefully on errors
|
|
5
|
+
# true (default): Pipeline runs fully autonomous. Failures commit + push + create failed PR + exit(1).
|
|
6
|
+
# false: Pipeline stops on failure and waits for human input.
|
|
7
|
+
BUILDWRIGHT_AUTO_APPROVE=true
|
|
8
|
+
|
|
9
|
+
# Number of verify retries (typecheck, lint, test, build) before giving up
|
|
10
|
+
# Default: 2
|
|
11
|
+
BUILDWRIGHT_AGENT_RETRIES=2
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
name: Quality Gates
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
push:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
quality:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
# Verify sync script runs without errors (catches broken scripts or missing deps)
|
|
16
|
+
- name: Verify sync script
|
|
17
|
+
run: make sync
|
|
18
|
+
|
|
19
|
+
# Detect package manager and project type
|
|
20
|
+
- name: Detect project type
|
|
21
|
+
id: detect
|
|
22
|
+
run: |
|
|
23
|
+
if [ -f "package.json" ]; then
|
|
24
|
+
echo "type=node" >> $GITHUB_OUTPUT
|
|
25
|
+
if [ -f "pnpm-lock.yaml" ]; then
|
|
26
|
+
echo "pm=pnpm" >> $GITHUB_OUTPUT
|
|
27
|
+
elif [ -f "yarn.lock" ]; then
|
|
28
|
+
echo "pm=yarn" >> $GITHUB_OUTPUT
|
|
29
|
+
elif [ -f "bun.lockb" ]; then
|
|
30
|
+
echo "pm=bun" >> $GITHUB_OUTPUT
|
|
31
|
+
else
|
|
32
|
+
echo "pm=npm" >> $GITHUB_OUTPUT
|
|
33
|
+
fi
|
|
34
|
+
elif [ -f "Cargo.toml" ]; then
|
|
35
|
+
echo "type=rust" >> $GITHUB_OUTPUT
|
|
36
|
+
elif [ -f "go.mod" ]; then
|
|
37
|
+
echo "type=go" >> $GITHUB_OUTPUT
|
|
38
|
+
elif [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
|
|
39
|
+
echo "type=python" >> $GITHUB_OUTPUT
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Node.js setup
|
|
43
|
+
- name: Setup Node.js
|
|
44
|
+
if: steps.detect.outputs.type == 'node'
|
|
45
|
+
uses: actions/setup-node@v4
|
|
46
|
+
with:
|
|
47
|
+
node-version: '20'
|
|
48
|
+
|
|
49
|
+
- name: Setup pnpm
|
|
50
|
+
if: steps.detect.outputs.pm == 'pnpm'
|
|
51
|
+
uses: pnpm/action-setup@v2
|
|
52
|
+
with:
|
|
53
|
+
version: 8
|
|
54
|
+
|
|
55
|
+
- name: Install dependencies (Node)
|
|
56
|
+
if: steps.detect.outputs.type == 'node'
|
|
57
|
+
run: |
|
|
58
|
+
case "${{ steps.detect.outputs.pm }}" in
|
|
59
|
+
pnpm) pnpm install --frozen-lockfile ;;
|
|
60
|
+
yarn) yarn install --frozen-lockfile ;;
|
|
61
|
+
bun) bun install ;;
|
|
62
|
+
*) npm ci ;;
|
|
63
|
+
esac
|
|
64
|
+
|
|
65
|
+
# Rust setup
|
|
66
|
+
- name: Setup Rust
|
|
67
|
+
if: steps.detect.outputs.type == 'rust'
|
|
68
|
+
uses: dtolnay/rust-toolchain@stable
|
|
69
|
+
with:
|
|
70
|
+
components: clippy
|
|
71
|
+
|
|
72
|
+
# Go setup
|
|
73
|
+
- name: Setup Go
|
|
74
|
+
if: steps.detect.outputs.type == 'go'
|
|
75
|
+
uses: actions/setup-go@v5
|
|
76
|
+
with:
|
|
77
|
+
go-version: '1.21'
|
|
78
|
+
|
|
79
|
+
# Python setup
|
|
80
|
+
- name: Setup Python
|
|
81
|
+
if: steps.detect.outputs.type == 'python'
|
|
82
|
+
uses: actions/setup-python@v5
|
|
83
|
+
with:
|
|
84
|
+
python-version: '3.11'
|
|
85
|
+
|
|
86
|
+
- name: Install dependencies (Python)
|
|
87
|
+
if: steps.detect.outputs.type == 'python'
|
|
88
|
+
run: |
|
|
89
|
+
pip install -e ".[dev]" || pip install -r requirements.txt
|
|
90
|
+
|
|
91
|
+
# Quality checks
|
|
92
|
+
- name: Type Check
|
|
93
|
+
run: |
|
|
94
|
+
case "${{ steps.detect.outputs.type }}" in
|
|
95
|
+
node) ${{ steps.detect.outputs.pm }} run typecheck || npx tsc --noEmit ;;
|
|
96
|
+
rust) cargo check ;;
|
|
97
|
+
go) go build ./... ;;
|
|
98
|
+
python) mypy . || pyright || echo "No type checker configured" ;;
|
|
99
|
+
esac
|
|
100
|
+
|
|
101
|
+
- name: Lint
|
|
102
|
+
run: |
|
|
103
|
+
case "${{ steps.detect.outputs.type }}" in
|
|
104
|
+
node) ${{ steps.detect.outputs.pm }} run lint || npx eslint . ;;
|
|
105
|
+
rust) cargo clippy -- -D warnings ;;
|
|
106
|
+
go) golangci-lint run || echo "golangci-lint not installed" ;;
|
|
107
|
+
python) ruff check . || flake8 ;;
|
|
108
|
+
esac
|
|
109
|
+
|
|
110
|
+
- name: Test
|
|
111
|
+
run: |
|
|
112
|
+
case "${{ steps.detect.outputs.type }}" in
|
|
113
|
+
node) ${{ steps.detect.outputs.pm }} test ;;
|
|
114
|
+
rust) cargo test ;;
|
|
115
|
+
go) go test ./... ;;
|
|
116
|
+
python) pytest ;;
|
|
117
|
+
esac
|
|
118
|
+
|
|
119
|
+
- name: Build
|
|
120
|
+
run: |
|
|
121
|
+
case "${{ steps.detect.outputs.type }}" in
|
|
122
|
+
node) ${{ steps.detect.outputs.pm }} run build ;;
|
|
123
|
+
rust) cargo build --release ;;
|
|
124
|
+
go) go build ./... ;;
|
|
125
|
+
python) echo "No build step" ;;
|
|
126
|
+
esac
|
|
127
|
+
|
|
128
|
+
- name: Security Audit
|
|
129
|
+
run: |
|
|
130
|
+
case "${{ steps.detect.outputs.type }}" in
|
|
131
|
+
node) ${{ steps.detect.outputs.pm }} audit --audit-level=high || true ;;
|
|
132
|
+
rust) cargo audit || echo "cargo-audit not installed" ;;
|
|
133
|
+
go) govulncheck ./... || echo "govulncheck not installed" ;;
|
|
134
|
+
python) pip-audit || safety check || echo "No Python audit tool" ;;
|
|
135
|
+
esac
|
|
136
|
+
|
|
137
|
+
auto-merge:
|
|
138
|
+
needs: quality
|
|
139
|
+
runs-on: ubuntu-latest
|
|
140
|
+
if: github.event_name == 'pull_request'
|
|
141
|
+
permissions:
|
|
142
|
+
contents: write
|
|
143
|
+
pull-requests: write
|
|
144
|
+
steps:
|
|
145
|
+
- name: Auto-merge on quality pass
|
|
146
|
+
uses: pascalgn/automerge-action@v0.15.6
|
|
147
|
+
env:
|
|
148
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
149
|
+
MERGE_METHOD: squash
|
|
150
|
+
MERGE_LABELS: ""
|
package/templates/BUILDWRIGHT.md
CHANGED
|
@@ -1 +1,99 @@
|
|
|
1
|
-
|
|
1
|
+
# Buildwright Development Workflow
|
|
2
|
+
|
|
3
|
+
This project uses agent-first autonomous development. See [README.md](README.md) for full setup, concepts, and workflow details.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# After cloning, generate tool-specific configs from .buildwright/
|
|
9
|
+
make sync
|
|
10
|
+
|
|
11
|
+
# Install git hooks to auto-sync on .buildwright/ changes
|
|
12
|
+
make install-hooks
|
|
13
|
+
|
|
14
|
+
# Start your agent tool
|
|
15
|
+
claude
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
| Command | Purpose |
|
|
21
|
+
|---------|---------|
|
|
22
|
+
| `/bw-new-feature` | Full pipeline: research → spec → approve → build → ship |
|
|
23
|
+
| `/bw-quick` | Fast path for bug fixes, small tasks |
|
|
24
|
+
| `/bw-claw` | Cross-domain features: Architect decomposes → claws execute per domain → integrate → ship |
|
|
25
|
+
| `/bw-ship` | Quality gates + release: verify → security → review → push → PR |
|
|
26
|
+
| `/bw-verify` | Quick checks: typecheck, lint, test, build |
|
|
27
|
+
| `/bw-analyse` | Analyse existing codebase → write structured docs to `.buildwright/codebase/` → update tech.md |
|
|
28
|
+
| `/bw-help` | Show available commands |
|
|
29
|
+
|
|
30
|
+
## Environment Variables
|
|
31
|
+
|
|
32
|
+
| Variable | Default | Required | Purpose |
|
|
33
|
+
|----------|---------|----------|---------|
|
|
34
|
+
| `GITHUB_TOKEN` | — | Yes | Push branches and open PRs via `gh`. Needs `repo` scope. |
|
|
35
|
+
| `BUILDWRIGHT_AUTO_APPROVE` | `true` | No | Autonomous mode — skip human approval, fail gracefully on errors |
|
|
36
|
+
| `BUILDWRIGHT_AGENT_RETRIES` | `2` | No | Number of verify retries before giving up |
|
|
37
|
+
|
|
38
|
+
## Failure Behavior
|
|
39
|
+
|
|
40
|
+
| Mode | Any Failure | Behavior |
|
|
41
|
+
|------|-------------|----------|
|
|
42
|
+
| Autonomous (`BUILDWRIGHT_AUTO_APPROVE=true`, default) | Commit + push + failed PR + exit(1) | CI/CD fails, PR shows failure details |
|
|
43
|
+
| Interactive (`BUILDWRIGHT_AUTO_APPROVE=false`) | STOP, show error | Human fixes in-session |
|
|
44
|
+
|
|
45
|
+
**Autonomous failure path** (verify retries exhausted / critical security / review blocked):
|
|
46
|
+
1. Commit all completed work to feature branch
|
|
47
|
+
2. Push branch
|
|
48
|
+
3. Create PR with failure summary (see template below)
|
|
49
|
+
4. Exit with error code (pipeline fails in CI/CD)
|
|
50
|
+
|
|
51
|
+
**Interactive failure path**: STOP and report blocker.
|
|
52
|
+
|
|
53
|
+
### PR Failure Summary Template
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## BUILDWRIGHT: Pipeline Failed
|
|
57
|
+
|
|
58
|
+
**Feature:** [name]
|
|
59
|
+
**Mode:** Autonomous
|
|
60
|
+
**Failed at:** [Verify / Security / Review]
|
|
61
|
+
**Reason:** [Retries exhausted / Critical vulnerability / Changes requested]
|
|
62
|
+
|
|
63
|
+
### Pipeline Status
|
|
64
|
+
| Step | Status | Details |
|
|
65
|
+
|------|--------|---------|
|
|
66
|
+
| Verify | [pass/fail] | [details] |
|
|
67
|
+
| Security | [pass/fail/skipped] | [details] |
|
|
68
|
+
| Review | [pass/fail/skipped] | [details] |
|
|
69
|
+
|
|
70
|
+
### Completed Work
|
|
71
|
+
- [list of completed milestones/steps]
|
|
72
|
+
|
|
73
|
+
### Failure Details
|
|
74
|
+
- [error summary, specific findings, or review feedback]
|
|
75
|
+
|
|
76
|
+
### Skipped
|
|
77
|
+
- [steps that were blocked by the failure]
|
|
78
|
+
|
|
79
|
+
### To Resume
|
|
80
|
+
Fix the issue on this branch, then re-run the relevant command.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Severity Triage
|
|
84
|
+
|
|
85
|
+
| Severity | Action | Example |
|
|
86
|
+
|----------|--------|---------|
|
|
87
|
+
| **Critical / High** | Block — must fix before merge | SQL injection, exposed secrets, auth bypass |
|
|
88
|
+
| **Medium** | Fix in this PR if feasible, otherwise track | Missing rate limiting, verbose error messages |
|
|
89
|
+
| **Low / Info** | Advisory — log and move on | Minor header hardening, informational findings |
|
|
90
|
+
|
|
91
|
+
Only Critical/High findings block the pipeline. Medium and Low findings are reported but don't prevent shipping.
|
|
92
|
+
|
|
93
|
+
## Agent Personas
|
|
94
|
+
|
|
95
|
+
| Agent | File | Purpose |
|
|
96
|
+
|-------|------|---------|
|
|
97
|
+
| Staff Engineer | `.buildwright/agents/staff-engineer.md` | Spec & code review, confidence scoring (≥80) |
|
|
98
|
+
| Security Engineer | `.buildwright/agents/security-engineer.md` | Security review, exploit scenarios, hard exclusions |
|
|
99
|
+
| Architect | `.buildwright/agents/architect.md` | Claw Architecture — decomposes cross-domain features |
|