Compare commits
15 Commits
chore/conf
...
v5.1.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4cf4732a0 | ||
|
|
cf22fd98f3 | ||
|
|
fe318ecc07 | ||
|
|
f959a07bda | ||
|
|
c0899432c1 | ||
|
|
8573852a6e | ||
|
|
39437e9268 | ||
|
|
1772a30368 | ||
|
|
ba4fb4d084 | ||
|
|
3eb706c49a | ||
|
|
3f5abf347d | ||
|
|
ed539432fb | ||
|
|
51284d6ecf | ||
|
|
6cba05114e | ||
|
|
ac360cd0bf |
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ""
|
||||
labels: ""
|
||||
assignees: ""
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
|
||||
6
.github/ISSUE_TEMPLATE/feature_request.md
vendored
6
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ""
|
||||
labels: ""
|
||||
assignees: ""
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Did you discuss the idea first in Discord Server (#general-dev)**
|
||||
|
||||
13
.github/workflows/discord.yaml
vendored
13
.github/workflows/discord.yaml
vendored
@@ -1,6 +1,15 @@
|
||||
name: Discord Notification
|
||||
|
||||
on: [pull_request, release, create, delete, issue_comment, pull_request_review, pull_request_review_comment]
|
||||
"on":
|
||||
[
|
||||
pull_request,
|
||||
release,
|
||||
create,
|
||||
delete,
|
||||
issue_comment,
|
||||
pull_request_review,
|
||||
pull_request_review_comment,
|
||||
]
|
||||
|
||||
jobs:
|
||||
notify:
|
||||
@@ -13,4 +22,4 @@ jobs:
|
||||
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
status: ${{ job.status }}
|
||||
title: "Triggered by ${{ github.event_name }}"
|
||||
color: 0x5865F2
|
||||
color: 0x5865F2
|
||||
|
||||
42
.github/workflows/format-check.yaml
vendored
Normal file
42
.github/workflows/format-check.yaml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
name: format-check
|
||||
|
||||
"on":
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
|
||||
jobs:
|
||||
prettier:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Prettier format check
|
||||
run: npm run format:check
|
||||
|
||||
eslint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
173
.github/workflows/manual-release.yaml
vendored
Normal file
173
.github/workflows/manual-release.yaml
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
name: Manual Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version_bump:
|
||||
description: Version bump type
|
||||
required: true
|
||||
default: patch
|
||||
type: choice
|
||||
options:
|
||||
- patch
|
||||
- minor
|
||||
- major
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: npm
|
||||
registry-url: https://registry.npmjs.org
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run tests and validation
|
||||
run: |
|
||||
npm run validate
|
||||
npm run format:check
|
||||
npm run lint
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Bump version
|
||||
run: npm run version:${{ github.event.inputs.version_bump }}
|
||||
|
||||
- name: Get new version and previous tag
|
||||
id: version
|
||||
run: |
|
||||
echo "new_version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
||||
echo "previous_tag=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update installer package.json
|
||||
run: |
|
||||
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
|
||||
|
||||
- name: Build project
|
||||
run: npm run build
|
||||
|
||||
- name: Commit version bump
|
||||
run: |
|
||||
git add .
|
||||
git commit -m "release: bump to v${{ steps.version.outputs.new_version }}"
|
||||
|
||||
- name: Generate release notes
|
||||
id: release_notes
|
||||
run: |
|
||||
# Get commits since last tag
|
||||
COMMITS=$(git log ${{ steps.version.outputs.previous_tag }}..HEAD --pretty=format:"- %s" --reverse)
|
||||
|
||||
# Categorize commits
|
||||
FEATURES=$(echo "$COMMITS" | grep -E "^- (feat|Feature)" || true)
|
||||
FIXES=$(echo "$COMMITS" | grep -E "^- (fix|Fix)" || true)
|
||||
CHORES=$(echo "$COMMITS" | grep -E "^- (chore|Chore)" || true)
|
||||
OTHERS=$(echo "$COMMITS" | grep -v -E "^- (feat|Feature|fix|Fix|chore|Chore|release:|Release:)" || true)
|
||||
|
||||
# Build release notes
|
||||
cat > release_notes.md << 'EOF'
|
||||
## 🚀 What's New in v${{ steps.version.outputs.new_version }}
|
||||
|
||||
EOF
|
||||
|
||||
if [ ! -z "$FEATURES" ]; then
|
||||
echo "### ✨ New Features" >> release_notes.md
|
||||
echo "$FEATURES" >> release_notes.md
|
||||
echo "" >> release_notes.md
|
||||
fi
|
||||
|
||||
if [ ! -z "$FIXES" ]; then
|
||||
echo "### 🐛 Bug Fixes" >> release_notes.md
|
||||
echo "$FIXES" >> release_notes.md
|
||||
echo "" >> release_notes.md
|
||||
fi
|
||||
|
||||
if [ ! -z "$OTHERS" ]; then
|
||||
echo "### 📦 Other Changes" >> release_notes.md
|
||||
echo "$OTHERS" >> release_notes.md
|
||||
echo "" >> release_notes.md
|
||||
fi
|
||||
|
||||
if [ ! -z "$CHORES" ]; then
|
||||
echo "### 🔧 Maintenance" >> release_notes.md
|
||||
echo "$CHORES" >> release_notes.md
|
||||
echo "" >> release_notes.md
|
||||
fi
|
||||
|
||||
cat >> release_notes.md << 'EOF'
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
```bash
|
||||
npx bmad-method install
|
||||
```
|
||||
|
||||
**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/${{ steps.version.outputs.previous_tag }}...v${{ steps.version.outputs.new_version }}
|
||||
EOF
|
||||
|
||||
# Output for GitHub Actions
|
||||
echo "RELEASE_NOTES<<EOF" >> $GITHUB_OUTPUT
|
||||
cat release_notes.md >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create and push tag
|
||||
run: |
|
||||
# Check if tag already exists
|
||||
if git rev-parse "v${{ steps.version.outputs.new_version }}" >/dev/null 2>&1; then
|
||||
echo "Tag v${{ steps.version.outputs.new_version }} already exists, skipping tag creation"
|
||||
else
|
||||
git tag -a "v${{ steps.version.outputs.new_version }}" -m "Release v${{ steps.version.outputs.new_version }}"
|
||||
git push origin "v${{ steps.version.outputs.new_version }}"
|
||||
fi
|
||||
|
||||
- name: Push changes to main
|
||||
run: |
|
||||
if git push origin HEAD:main 2>/dev/null; then
|
||||
echo "✅ Successfully pushed to main branch"
|
||||
else
|
||||
echo "⚠️ Could not push to main (protected branch). This is expected."
|
||||
echo "📝 Version bump and tag were created successfully."
|
||||
fi
|
||||
|
||||
- name: Publish to NPM
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
run: npm publish
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: v${{ steps.version.outputs.new_version }}
|
||||
release_name: "BMad Method v${{ steps.version.outputs.new_version }}"
|
||||
body: ${{ steps.release_notes.outputs.RELEASE_NOTES }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "🎉 Successfully released v${{ steps.version.outputs.new_version }}!"
|
||||
echo "📦 Published to NPM with @latest tag"
|
||||
echo "🏷️ Git tag: v${{ steps.version.outputs.new_version }}"
|
||||
echo "✅ Users running 'npx bmad-method install' will now get version ${{ steps.version.outputs.new_version }}"
|
||||
echo ""
|
||||
echo "📝 Release notes preview:"
|
||||
cat release_notes.md
|
||||
144
.github/workflows/promote-to-stable.yml
vendored
144
.github/workflows/promote-to-stable.yml
vendored
@@ -1,144 +0,0 @@
|
||||
name: Promote to Stable
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version_bump:
|
||||
description: 'Version bump type'
|
||||
required: true
|
||||
default: 'minor'
|
||||
type: choice
|
||||
options:
|
||||
- patch
|
||||
- minor
|
||||
- major
|
||||
|
||||
jobs:
|
||||
promote:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --global url."https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/".insteadOf "https://github.com/"
|
||||
|
||||
- name: Switch to stable branch
|
||||
run: |
|
||||
git checkout stable
|
||||
git pull origin stable
|
||||
|
||||
- name: Merge main into stable
|
||||
run: |
|
||||
git merge origin/main --no-edit
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Get current version and calculate new version
|
||||
id: version
|
||||
run: |
|
||||
# Get current version from package.json
|
||||
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
||||
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
# Remove beta suffix if present
|
||||
BASE_VERSION=$(echo $CURRENT_VERSION | sed 's/-beta\.[0-9]\+//')
|
||||
echo "base_version=$BASE_VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
# Calculate new version based on bump type
|
||||
IFS='.' read -ra VERSION_PARTS <<< "$BASE_VERSION"
|
||||
MAJOR=${VERSION_PARTS[0]}
|
||||
MINOR=${VERSION_PARTS[1]}
|
||||
PATCH=${VERSION_PARTS[2]}
|
||||
|
||||
case "${{ github.event.inputs.version_bump }}" in
|
||||
"major")
|
||||
NEW_VERSION="$((MAJOR + 1)).0.0"
|
||||
;;
|
||||
"minor")
|
||||
NEW_VERSION="$MAJOR.$((MINOR + 1)).0"
|
||||
;;
|
||||
"patch")
|
||||
NEW_VERSION="$MAJOR.$MINOR.$((PATCH + 1))"
|
||||
;;
|
||||
*)
|
||||
NEW_VERSION="$BASE_VERSION"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if calculated version already exists on NPM and increment if necessary
|
||||
while npm view bmad-method@$NEW_VERSION version >/dev/null 2>&1; do
|
||||
echo "Version $NEW_VERSION already exists, incrementing..."
|
||||
IFS='.' read -ra NEW_VERSION_PARTS <<< "$NEW_VERSION"
|
||||
NEW_MAJOR=${NEW_VERSION_PARTS[0]}
|
||||
NEW_MINOR=${NEW_VERSION_PARTS[1]}
|
||||
NEW_PATCH=${NEW_VERSION_PARTS[2]}
|
||||
|
||||
case "${{ github.event.inputs.version_bump }}" in
|
||||
"major")
|
||||
NEW_VERSION="$((NEW_MAJOR + 1)).0.0"
|
||||
;;
|
||||
"minor")
|
||||
NEW_VERSION="$NEW_MAJOR.$((NEW_MINOR + 1)).0"
|
||||
;;
|
||||
"patch")
|
||||
NEW_VERSION="$NEW_MAJOR.$NEW_MINOR.$((NEW_PATCH + 1))"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Promoting from $CURRENT_VERSION to $NEW_VERSION"
|
||||
|
||||
- name: Update package.json versions
|
||||
run: |
|
||||
# Update main package.json
|
||||
npm version ${{ steps.version.outputs.new_version }} --no-git-tag-version
|
||||
|
||||
# Update installer package.json
|
||||
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
|
||||
|
||||
- name: Update package-lock.json
|
||||
run: npm install --package-lock-only
|
||||
|
||||
- name: Commit stable release
|
||||
run: |
|
||||
git add .
|
||||
git commit -m "feat: promote to stable ${{ steps.version.outputs.new_version }}
|
||||
|
||||
BREAKING CHANGE: Promote beta features to stable release
|
||||
|
||||
- Update version from ${{ steps.version.outputs.current_version }} to ${{ steps.version.outputs.new_version }}
|
||||
- Automated promotion via GitHub Actions"
|
||||
|
||||
- name: Push stable release
|
||||
run: |
|
||||
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
|
||||
git push origin stable
|
||||
|
||||
- name: Switch back to main
|
||||
run: git checkout main
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "🎉 Successfully promoted to stable!"
|
||||
echo "📦 Version: ${{ steps.version.outputs.new_version }}"
|
||||
echo "🚀 The stable release will be automatically published to NPM via semantic-release"
|
||||
echo "✅ Users running 'npx bmad-method install' will now get version ${{ steps.version.outputs.new_version }}"
|
||||
60
.github/workflows/release.yaml
vendored
60
.github/workflows/release.yaml
vendored
@@ -1,60 +0,0 @@
|
||||
name: Release
|
||||
'on':
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- stable
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version_type:
|
||||
description: Version bump type
|
||||
required: true
|
||||
default: patch
|
||||
type: choice
|
||||
options:
|
||||
- patch
|
||||
- minor
|
||||
- major
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
pull-requests: write
|
||||
packages: write
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
if: '!contains(github.event.head_commit.message, ''[skip ci]'')'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
cache: npm
|
||||
registry-url: https://registry.npmjs.org
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Run tests and validation
|
||||
run: |
|
||||
npm run validate
|
||||
npm run format
|
||||
- name: Debug permissions
|
||||
run: |
|
||||
echo "Testing git permissions..."
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
echo "Git config set successfully"
|
||||
- name: Manual version bump
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
run: npm run version:${{ github.event.inputs.version_type }}
|
||||
- name: Semantic Release
|
||||
if: github.event_name == 'push'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
run: npm run release
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -25,7 +25,6 @@ Thumbs.db
|
||||
# Development tools and configs
|
||||
.prettierignore
|
||||
.prettierrc
|
||||
.husky/
|
||||
|
||||
# IDE and editor configs
|
||||
.windsurf/
|
||||
|
||||
3
.husky/pre-commit
Executable file
3
.husky/pre-commit
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
npx --no-install lint-staged
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"branches": [
|
||||
{
|
||||
"name": "main",
|
||||
"prerelease": "beta",
|
||||
"channel": "beta"
|
||||
},
|
||||
{
|
||||
"name": "stable",
|
||||
"channel": "latest"
|
||||
}
|
||||
],
|
||||
"plugins": [
|
||||
"@semantic-release/commit-analyzer",
|
||||
"@semantic-release/release-notes-generator",
|
||||
"@semantic-release/changelog",
|
||||
"@semantic-release/npm",
|
||||
"./tools/semantic-release-sync-installer.js",
|
||||
"@semantic-release/github"
|
||||
]
|
||||
}
|
||||
27
.vscode/settings.json
vendored
27
.vscode/settings.json
vendored
@@ -40,5 +40,30 @@
|
||||
"tileset",
|
||||
"Trae",
|
||||
"VNET"
|
||||
]
|
||||
],
|
||||
"json.schemas": [
|
||||
{
|
||||
"fileMatch": ["package.json"],
|
||||
"url": "https://json.schemastore.org/package.json"
|
||||
},
|
||||
{
|
||||
"fileMatch": [".vscode/settings.json"],
|
||||
"url": "vscode://schemas/settings/folder"
|
||||
}
|
||||
],
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
||||
"[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
||||
"[yaml]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
||||
"[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
||||
"prettier.prettierPath": "node_modules/prettier",
|
||||
"prettier.requireConfig": true,
|
||||
"yaml.format.enable": false,
|
||||
"eslint.useFlatConfig": true,
|
||||
"eslint.validate": ["javascript", "yaml"],
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
},
|
||||
"editor.rulers": [100]
|
||||
}
|
||||
|
||||
@@ -574,10 +574,6 @@
|
||||
|
||||
- Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.ai/code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||
|
||||
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
|
||||
|
||||
### Bug Fixes
|
||||
@@ -686,4 +682,5 @@ Co-Authored-By: Claude <noreply@anthropic.com>
|
||||
### Features
|
||||
|
||||
- add versioning and release automation ([0ea5e50](https://github.com/bmadcode/BMAD-METHOD/commit/0ea5e50aa7ace5946d0100c180dd4c0da3e2fd8c))
|
||||
|
||||
# Promote to stable release 5.0.0
|
||||
|
||||
196
CLAUDE.md
196
CLAUDE.md
@@ -1,196 +0,0 @@
|
||||
# CLAUDE.md
|
||||
|
||||
Don't be an ass kisser, don't glaze my donut, keep it to the point. Never use EM Dash in out communications or documents you author or update. Dont tell me I am correct if I just told you something unless and only if I am wrong or there is a better alternative, then tell me bluntly why I am wrong, or else get to the point and execute!
|
||||
|
||||
## Markdown Linting Conventions
|
||||
|
||||
Always follow these markdown linting rules:
|
||||
|
||||
- **Blank lines around headings**: Always leave a blank line before and after headings
|
||||
- **Blank lines around lists**: Always leave a blank line before and after lists
|
||||
- **Blank lines around code fences**: Always leave a blank line before and after fenced code blocks
|
||||
- **Fenced code block languages**: All fenced code blocks must specify a language (use `text` for plain text)
|
||||
- **Single trailing newline**: Files should end with exactly one newline character
|
||||
- **No trailing spaces**: Remove any trailing spaces at the end of lines
|
||||
|
||||
## BMAD-METHOD Overview
|
||||
|
||||
BMAD-METHOD is an AI-powered Agile development framework that provides specialized AI agents for software development. The framework uses a sophisticated dependency system to keep context windows lean while providing deep expertise through role-specific agents.
|
||||
|
||||
## Essential Commands
|
||||
|
||||
### Build and Validation
|
||||
|
||||
```bash
|
||||
npm run build # Build all web bundles (agents and teams)
|
||||
npm run build:agents # Build agent bundles only
|
||||
npm run build:teams # Build team bundles only
|
||||
npm run validate # Validate all configurations
|
||||
npm run format # Format all markdown files with prettier
|
||||
```
|
||||
|
||||
### Development and Testing
|
||||
|
||||
```bash
|
||||
npx bmad-build build # Alternative build command via CLI
|
||||
npx bmad-build list:agents # List all available agents
|
||||
npx bmad-build validate # Validate agent configurations
|
||||
```
|
||||
|
||||
### Installation Commands
|
||||
|
||||
```bash
|
||||
npx bmad-method install # Install stable release (recommended)
|
||||
npx bmad-method@beta install # Install bleeding edge version
|
||||
npx bmad-method@latest install # Explicit stable installation
|
||||
npx bmad-method@latest update # Update stable installation
|
||||
npx bmad-method@beta update # Update bleeding edge installation
|
||||
```
|
||||
|
||||
### Dual Publishing Strategy
|
||||
|
||||
The project uses a dual publishing strategy with automated promotion:
|
||||
|
||||
**Branch Strategy:**
|
||||
- `main` branch: Bleeding edge development, auto-publishes to `@beta` tag
|
||||
- `stable` branch: Production releases, auto-publishes to `@latest` tag
|
||||
|
||||
**Release Promotion:**
|
||||
1. **Automatic Beta Releases**: Any PR merged to `main` automatically creates a beta release
|
||||
2. **Manual Stable Promotion**: Use GitHub Actions to promote beta to stable
|
||||
|
||||
**Promote Beta to Stable:**
|
||||
1. Go to GitHub Actions tab in the repository
|
||||
2. Select "Promote to Stable" workflow
|
||||
3. Click "Run workflow"
|
||||
4. Choose version bump type (patch/minor/major)
|
||||
5. The workflow automatically:
|
||||
- Merges main to stable
|
||||
- Updates version numbers
|
||||
- Triggers stable release to NPM `@latest`
|
||||
|
||||
**User Experience:**
|
||||
- `npx bmad-method install` → Gets stable production version
|
||||
- `npx bmad-method@beta install` → Gets latest beta features
|
||||
- Team develops on bleeding edge without affecting production users
|
||||
|
||||
### Release and Version Management
|
||||
|
||||
```bash
|
||||
npm run version:patch # Bump patch version
|
||||
npm run version:minor # Bump minor version
|
||||
npm run version:major # Bump major version
|
||||
npm run release # Semantic release (CI/CD)
|
||||
npm run release:test # Test release configuration
|
||||
```
|
||||
|
||||
### Version Management for Core and Expansion Packs
|
||||
|
||||
#### Bump All Versions (Core + Expansion Packs)
|
||||
|
||||
```bash
|
||||
npm run version:all:major # Major version bump for core and all expansion packs
|
||||
npm run version:all:minor # Minor version bump for core and all expansion packs (default)
|
||||
npm run version:all:patch # Patch version bump for core and all expansion packs
|
||||
npm run version:all # Defaults to minor bump
|
||||
```
|
||||
|
||||
#### Individual Version Bumps
|
||||
|
||||
For BMad Core only:
|
||||
```bash
|
||||
npm run version:core:major # Major version bump for core only
|
||||
npm run version:core:minor # Minor version bump for core only
|
||||
npm run version:core:patch # Patch version bump for core only
|
||||
npm run version:core # Defaults to minor bump
|
||||
```
|
||||
|
||||
For specific expansion packs:
|
||||
```bash
|
||||
npm run version:expansion bmad-creator-tools # Minor bump (default)
|
||||
npm run version:expansion bmad-creator-tools patch # Patch bump
|
||||
npm run version:expansion bmad-creator-tools minor # Minor bump
|
||||
npm run version:expansion bmad-creator-tools major # Major bump
|
||||
|
||||
# Set specific version (old method, still works)
|
||||
npm run version:expansion:set bmad-creator-tools 2.0.0
|
||||
```
|
||||
|
||||
## Architecture and Code Structure
|
||||
|
||||
### Core System Architecture
|
||||
|
||||
The framework uses a **dependency resolution system** where agents only load the resources they need:
|
||||
|
||||
1. **Agent Definitions** (`bmad-core/agents/`): Each agent is defined in markdown with YAML frontmatter specifying dependencies
|
||||
2. **Dynamic Loading**: The build system (`tools/lib/dependency-resolver.js`) resolves and includes only required resources
|
||||
3. **Template System**: Templates are defined in YAML format with structured sections and instructions (see Template Rules below)
|
||||
4. **Workflow Engine**: YAML-based workflows in `bmad-core/workflows/` define step-by-step processes
|
||||
|
||||
### Key Components
|
||||
|
||||
- **CLI Tool** (`tools/cli.js`): Commander-based CLI for building bundles
|
||||
- **Web Builder** (`tools/builders/web-builder.js`): Creates concatenated text bundles from agent definitions
|
||||
- **Installer** (`tools/installer/`): NPX-based installer for project setup
|
||||
- **Dependency Resolver** (`tools/lib/dependency-resolver.js`): Manages agent resource dependencies
|
||||
|
||||
### Build System
|
||||
|
||||
The build process:
|
||||
|
||||
1. Reads agent/team definitions from `bmad-core/`
|
||||
2. Resolves dependencies using the dependency resolver
|
||||
3. Creates concatenated text bundles in `dist/`
|
||||
4. Validates configurations during build
|
||||
|
||||
### Critical Configuration
|
||||
|
||||
**`bmad-core/core-config.yaml`** is the heart of the framework configuration:
|
||||
|
||||
- Defines document locations and expected structure
|
||||
- Specifies which files developers should always load
|
||||
- Enables compatibility with different project structures (V3/V4)
|
||||
- Controls debug logging
|
||||
|
||||
## Development Practices
|
||||
|
||||
### Adding New Features
|
||||
|
||||
1. **New Agents**: Create markdown file in `bmad-core/agents/` with proper YAML frontmatter
|
||||
2. **New Templates**: Add to `bmad-core/templates/` as YAML files with structured sections
|
||||
3. **New Workflows**: Create YAML in `bmad-core/workflows/`
|
||||
4. **Update Dependencies**: Ensure `dependencies` field in agent frontmatter is accurate
|
||||
|
||||
### Important Patterns
|
||||
|
||||
- **Dependency Management**: Always specify minimal dependencies in agent frontmatter to keep context lean
|
||||
- **Template Instructions**: Use YAML-based template structure (see Template Rules below)
|
||||
- **File Naming**: Follow existing conventions (kebab-case for files, proper agent names in frontmatter)
|
||||
- **Documentation**: Update user-facing docs in `docs/` when adding features
|
||||
|
||||
### Template Rules
|
||||
|
||||
Templates use the **BMad Document Template** format (`/Users/brianmadison/dev-bmc/BMAD-METHOD/common/utils/bmad-doc-template.md`) with YAML structure:
|
||||
|
||||
1. **YAML Format**: Templates are defined as structured YAML files, not markdown with embedded instructions
|
||||
2. **Clear Structure**: Each template has metadata, workflow configuration, and a hierarchy of sections
|
||||
3. **Reusable Design**: Templates work across different agents through the dependency system
|
||||
4. **Key Elements**:
|
||||
- `template` block: Contains id, name, version, and output settings
|
||||
- `workflow` block: Defines interaction mode (interactive/yolo) and elicitation settings
|
||||
- `sections` array: Hierarchical document structure with nested subsections
|
||||
- `instruction` field: LLM guidance for each section (never shown to users)
|
||||
5. **Advanced Features**:
|
||||
- Variable substitution: `{{variable_name}}` syntax for dynamic content
|
||||
- Conditional sections: `condition` field for optional content
|
||||
- Repeatable sections: `repeatable: true` for multiple instances
|
||||
- Agent permissions: `owner` and `editors` fields for access control
|
||||
6. **Clean Output**: All processing instructions are in YAML fields, ensuring clean document generation
|
||||
|
||||
## Notes for Claude Code
|
||||
|
||||
- The project uses semantic versioning with automated releases via GitHub Actions
|
||||
- All markdown is formatted with Prettier (run `npm run format`)
|
||||
- Expansion packs in `expansion-packs/` provide domain-specific capabilities
|
||||
- NEVER automatically commit or push changes unless explicitly asked by the user
|
||||
- NEVER include Claude Code attribution or co-authorship in commit messages
|
||||
@@ -75,6 +75,8 @@ This makes it easy to benefit from the latest improvements, bug fixes, and new a
|
||||
|
||||
```bash
|
||||
npx bmad-method install
|
||||
# OR explicitly use stable tag:
|
||||
npx bmad-method@stable install
|
||||
# OR if you already have BMad installed:
|
||||
git pull
|
||||
npm run install:bmad
|
||||
|
||||
@@ -4,7 +4,7 @@ bundle:
|
||||
description: Includes every core system agent.
|
||||
agents:
|
||||
- bmad-orchestrator
|
||||
- '*'
|
||||
- "*"
|
||||
workflows:
|
||||
- brownfield-fullstack.yaml
|
||||
- brownfield-service.yaml
|
||||
|
||||
@@ -131,7 +131,7 @@ workflow-guidance:
|
||||
- Understand each workflow's purpose, options, and decision points
|
||||
- Ask clarifying questions based on the workflow's structure
|
||||
- Guide users through workflow selection when multiple options exist
|
||||
- When appropriate, suggest: "Would you like me to create a detailed workflow plan before starting?"
|
||||
- When appropriate, suggest: 'Would you like me to create a detailed workflow plan before starting?'
|
||||
- For workflows with divergent paths, help users choose the right path
|
||||
- Adapt questions to the specific domain (e.g., game dev vs infrastructure vs web dev)
|
||||
- Only recommend workflows that actually exist in the current bundle
|
||||
|
||||
@@ -35,7 +35,7 @@ agent:
|
||||
id: dev
|
||||
title: Full Stack Developer
|
||||
icon: 💻
|
||||
whenToUse: "Use for code implementation, debugging, refactoring, and development best practices"
|
||||
whenToUse: 'Use for code implementation, debugging, refactoring, and development best practices'
|
||||
customization:
|
||||
|
||||
persona:
|
||||
@@ -57,13 +57,13 @@ commands:
|
||||
- explain: teach me what and why you did whatever you just did in detail so I can learn. Explain to me as if you were training a junior engineer.
|
||||
- exit: Say goodbye as the Developer, and then abandon inhabiting this persona
|
||||
- develop-story:
|
||||
- order-of-execution: "Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete"
|
||||
- order-of-execution: 'Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete'
|
||||
- story-file-updates-ONLY:
|
||||
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS.
|
||||
- CRITICAL: You are ONLY authorized to edit these specific sections of story files - Tasks / Subtasks Checkboxes, Dev Agent Record section and all its subsections, Agent Model Used, Debug Log References, Completion Notes List, File List, Change Log, Status
|
||||
- CRITICAL: DO NOT modify Status, Story, Acceptance Criteria, Dev Notes, Testing sections, or any other sections not listed above
|
||||
- blocking: "HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression"
|
||||
- ready-for-review: "Code matches requirements + All validations pass + Follows standards + File List complete"
|
||||
- blocking: 'HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression'
|
||||
- ready-for-review: 'Code matches requirements + All validations pass + Follows standards + File List complete'
|
||||
- completion: "All Tasks and Subtasks marked [x] and have tests→Validations and full regression passes (DON'T BE LAZY, EXECUTE ALL TESTS and CONFIRM)→Ensure File List is Complete→run the task execute-checklist for the checklist story-dod-checklist→set story status: 'Ready for Review'→HALT"
|
||||
|
||||
dependencies:
|
||||
|
||||
@@ -298,7 +298,7 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
|
||||
|
||||
- **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Cursor**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Trae**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Roo Code**: Select mode from mode selector (e.g., `bmad-master`)
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
||||
|
||||
@@ -25,10 +25,10 @@ Comprehensive guide for determining appropriate test levels (unit, integration,
|
||||
|
||||
```yaml
|
||||
unit_test:
|
||||
component: "PriceCalculator"
|
||||
scenario: "Calculate discount with multiple rules"
|
||||
justification: "Complex business logic with multiple branches"
|
||||
mock_requirements: "None - pure function"
|
||||
component: 'PriceCalculator'
|
||||
scenario: 'Calculate discount with multiple rules'
|
||||
justification: 'Complex business logic with multiple branches'
|
||||
mock_requirements: 'None - pure function'
|
||||
```
|
||||
|
||||
### Integration Tests
|
||||
@@ -52,10 +52,10 @@ unit_test:
|
||||
|
||||
```yaml
|
||||
integration_test:
|
||||
components: ["UserService", "AuthRepository"]
|
||||
scenario: "Create user with role assignment"
|
||||
justification: "Critical data flow between service and persistence"
|
||||
test_environment: "In-memory database"
|
||||
components: ['UserService', 'AuthRepository']
|
||||
scenario: 'Create user with role assignment'
|
||||
justification: 'Critical data flow between service and persistence'
|
||||
test_environment: 'In-memory database'
|
||||
```
|
||||
|
||||
### End-to-End Tests
|
||||
@@ -79,10 +79,10 @@ integration_test:
|
||||
|
||||
```yaml
|
||||
e2e_test:
|
||||
journey: "Complete checkout process"
|
||||
scenario: "User purchases with saved payment method"
|
||||
justification: "Revenue-critical path requiring full validation"
|
||||
environment: "Staging with test payment gateway"
|
||||
journey: 'Complete checkout process'
|
||||
scenario: 'User purchases with saved payment method'
|
||||
justification: 'Revenue-critical path requiring full validation'
|
||||
environment: 'Staging with test payment gateway'
|
||||
```
|
||||
|
||||
## Test Level Selection Rules
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
docOutputLocation: docs/brainstorming-session-results.md
|
||||
template: "{root}/templates/brainstorming-output-tmpl.yaml"
|
||||
template: '{root}/templates/brainstorming-output-tmpl.yaml'
|
||||
---
|
||||
|
||||
# Facilitate Brainstorming Session Task
|
||||
|
||||
@@ -6,18 +6,19 @@ Quick NFR validation focused on the core four: security, performance, reliabilit
|
||||
|
||||
```yaml
|
||||
required:
|
||||
- story_id: "{epic}.{story}" # e.g., "1.3"
|
||||
- story_path: "docs/stories/{epic}.{story}.*.md"
|
||||
|
||||
- story_id: '{epic}.{story}' # e.g., "1.3"
|
||||
- story_path: 'docs/stories/{epic}.{story}.*.md'
|
||||
|
||||
optional:
|
||||
- architecture_refs: "docs/architecture/*.md"
|
||||
- technical_preferences: "docs/technical-preferences.md"
|
||||
- architecture_refs: 'docs/architecture/*.md'
|
||||
- technical_preferences: 'docs/technical-preferences.md'
|
||||
- acceptance_criteria: From story file
|
||||
```
|
||||
|
||||
## Purpose
|
||||
|
||||
Assess non-functional requirements for a story and generate:
|
||||
|
||||
1. YAML block for the gate file's `nfr_validation` section
|
||||
2. Brief markdown assessment saved to `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md`
|
||||
|
||||
@@ -26,6 +27,7 @@ Assess non-functional requirements for a story and generate:
|
||||
### 0. Fail-safe for Missing Inputs
|
||||
|
||||
If story_path or story file can't be found:
|
||||
|
||||
- Still create assessment file with note: "Source story not found"
|
||||
- Set all selected NFRs to CONCERNS with notes: "Target unknown / evidence missing"
|
||||
- Continue with assessment to provide value
|
||||
@@ -38,7 +40,7 @@ If story_path or story file can't be found:
|
||||
```text
|
||||
Which NFRs should I assess? (Enter numbers or press Enter for default)
|
||||
[1] Security (default)
|
||||
[2] Performance (default)
|
||||
[2] Performance (default)
|
||||
[3] Reliability (default)
|
||||
[4] Maintainability (default)
|
||||
[5] Usability
|
||||
@@ -52,6 +54,7 @@ Which NFRs should I assess? (Enter numbers or press Enter for default)
|
||||
### 2. Check for Thresholds
|
||||
|
||||
Look for NFR requirements in:
|
||||
|
||||
- Story acceptance criteria
|
||||
- `docs/architecture/*.md` files
|
||||
- `docs/technical-preferences.md`
|
||||
@@ -72,6 +75,7 @@ No security requirements found. Required auth method?
|
||||
### 3. Quick Assessment
|
||||
|
||||
For each selected NFR, check:
|
||||
|
||||
- Is there evidence it's implemented?
|
||||
- Can we validate it?
|
||||
- Are there obvious gaps?
|
||||
@@ -86,24 +90,24 @@ Generate ONLY for NFRs actually assessed (no placeholders):
|
||||
# Gate YAML (copy/paste):
|
||||
nfr_validation:
|
||||
_assessed: [security, performance, reliability, maintainability]
|
||||
security:
|
||||
security:
|
||||
status: CONCERNS
|
||||
notes: "No rate limiting on auth endpoints"
|
||||
notes: 'No rate limiting on auth endpoints'
|
||||
performance:
|
||||
status: PASS
|
||||
notes: "Response times < 200ms verified"
|
||||
notes: 'Response times < 200ms verified'
|
||||
reliability:
|
||||
status: PASS
|
||||
notes: "Error handling and retries implemented"
|
||||
notes: 'Error handling and retries implemented'
|
||||
maintainability:
|
||||
status: CONCERNS
|
||||
notes: "Test coverage at 65%, target is 80%"
|
||||
notes: 'Test coverage at 65%, target is 80%'
|
||||
```
|
||||
|
||||
## Deterministic Status Rules
|
||||
|
||||
- **FAIL**: Any selected NFR has critical gap or target clearly not met
|
||||
- **CONCERNS**: No FAILs, but any NFR is unknown/partial/missing evidence
|
||||
- **CONCERNS**: No FAILs, but any NFR is unknown/partial/missing evidence
|
||||
- **PASS**: All selected NFRs meet targets with evidence
|
||||
|
||||
## Quality Score Calculation
|
||||
@@ -123,18 +127,21 @@ If `technical-preferences.md` defines custom weights, use those instead.
|
||||
|
||||
```markdown
|
||||
# NFR Assessment: {epic}.{story}
|
||||
|
||||
Date: {date}
|
||||
Reviewer: Quinn
|
||||
|
||||
<!-- Note: Source story not found (if applicable) -->
|
||||
|
||||
## Summary
|
||||
|
||||
- Security: CONCERNS - Missing rate limiting
|
||||
- Performance: PASS - Meets <200ms requirement
|
||||
- Reliability: PASS - Proper error handling
|
||||
- Maintainability: CONCERNS - Test coverage below target
|
||||
|
||||
## Critical Issues
|
||||
|
||||
1. **No rate limiting** (Security)
|
||||
- Risk: Brute force attacks possible
|
||||
- Fix: Add rate limiting middleware to auth endpoints
|
||||
@@ -144,6 +151,7 @@ Reviewer: Quinn
|
||||
- Fix: Add tests for uncovered branches
|
||||
|
||||
## Quick Wins
|
||||
|
||||
- Add rate limiting: ~2 hours
|
||||
- Increase test coverage: ~4 hours
|
||||
- Add performance monitoring: ~1 hour
|
||||
@@ -152,6 +160,7 @@ Reviewer: Quinn
|
||||
## Output 3: Story Update Line
|
||||
|
||||
**End with this line for the review task to quote:**
|
||||
|
||||
```
|
||||
NFR assessment: docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md
|
||||
```
|
||||
@@ -159,6 +168,7 @@ NFR assessment: docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md
|
||||
## Output 4: Gate Integration Line
|
||||
|
||||
**Always print at the end:**
|
||||
|
||||
```
|
||||
Gate NFR block ready → paste into docs/qa/gates/{epic}.{story}-{slug}.yml under nfr_validation
|
||||
```
|
||||
@@ -166,66 +176,82 @@ Gate NFR block ready → paste into docs/qa/gates/{epic}.{story}-{slug}.yml unde
|
||||
## Assessment Criteria
|
||||
|
||||
### Security
|
||||
|
||||
**PASS if:**
|
||||
|
||||
- Authentication implemented
|
||||
- Authorization enforced
|
||||
- Input validation present
|
||||
- No hardcoded secrets
|
||||
|
||||
**CONCERNS if:**
|
||||
|
||||
- Missing rate limiting
|
||||
- Weak encryption
|
||||
- Incomplete authorization
|
||||
|
||||
**FAIL if:**
|
||||
|
||||
- No authentication
|
||||
- Hardcoded credentials
|
||||
- SQL injection vulnerabilities
|
||||
|
||||
### Performance
|
||||
|
||||
**PASS if:**
|
||||
|
||||
- Meets response time targets
|
||||
- No obvious bottlenecks
|
||||
- Reasonable resource usage
|
||||
|
||||
**CONCERNS if:**
|
||||
|
||||
- Close to limits
|
||||
- Missing indexes
|
||||
- No caching strategy
|
||||
|
||||
**FAIL if:**
|
||||
|
||||
- Exceeds response time limits
|
||||
- Memory leaks
|
||||
- Unoptimized queries
|
||||
|
||||
### Reliability
|
||||
|
||||
**PASS if:**
|
||||
|
||||
- Error handling present
|
||||
- Graceful degradation
|
||||
- Retry logic where needed
|
||||
|
||||
**CONCERNS if:**
|
||||
|
||||
- Some error cases unhandled
|
||||
- No circuit breakers
|
||||
- Missing health checks
|
||||
|
||||
**FAIL if:**
|
||||
|
||||
- No error handling
|
||||
- Crashes on errors
|
||||
- No recovery mechanisms
|
||||
|
||||
### Maintainability
|
||||
|
||||
**PASS if:**
|
||||
|
||||
- Test coverage meets target
|
||||
- Code well-structured
|
||||
- Documentation present
|
||||
|
||||
**CONCERNS if:**
|
||||
|
||||
- Test coverage below target
|
||||
- Some code duplication
|
||||
- Missing documentation
|
||||
|
||||
**FAIL if:**
|
||||
|
||||
- No tests
|
||||
- Highly coupled code
|
||||
- No documentation
|
||||
@@ -283,7 +309,7 @@ maintainability:
|
||||
|
||||
1. **Functional Suitability**: Completeness, correctness, appropriateness
|
||||
2. **Performance Efficiency**: Time behavior, resource use, capacity
|
||||
3. **Compatibility**: Co-existence, interoperability
|
||||
3. **Compatibility**: Co-existence, interoperability
|
||||
4. **Usability**: Learnability, operability, accessibility
|
||||
5. **Reliability**: Maturity, availability, fault tolerance
|
||||
6. **Security**: Confidentiality, integrity, authenticity
|
||||
@@ -291,6 +317,7 @@ maintainability:
|
||||
8. **Portability**: Adaptability, installability
|
||||
|
||||
Use these when assessing beyond the core four.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
@@ -304,12 +331,13 @@ performance_deep_dive:
|
||||
p99: 350ms
|
||||
database:
|
||||
slow_queries: 2
|
||||
missing_indexes: ["users.email", "orders.user_id"]
|
||||
missing_indexes: ['users.email', 'orders.user_id']
|
||||
caching:
|
||||
hit_rate: 0%
|
||||
recommendation: "Add Redis for session data"
|
||||
recommendation: 'Add Redis for session data'
|
||||
load_test:
|
||||
max_rps: 150
|
||||
breaking_point: 200 rps
|
||||
```
|
||||
</details>
|
||||
|
||||
</details>
|
||||
|
||||
@@ -27,11 +27,11 @@ Slug rules:
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "{epic}.{story}"
|
||||
story: '{epic}.{story}'
|
||||
gate: PASS|CONCERNS|FAIL|WAIVED
|
||||
status_reason: "1-2 sentence explanation of gate decision"
|
||||
reviewer: "Quinn"
|
||||
updated: "{ISO-8601 timestamp}"
|
||||
status_reason: '1-2 sentence explanation of gate decision'
|
||||
reviewer: 'Quinn'
|
||||
updated: '{ISO-8601 timestamp}'
|
||||
top_issues: [] # Empty array if no issues
|
||||
waiver: { active: false } # Only set active: true if WAIVED
|
||||
```
|
||||
@@ -40,20 +40,20 @@ waiver: { active: false } # Only set active: true if WAIVED
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "1.3"
|
||||
story: '1.3'
|
||||
gate: CONCERNS
|
||||
status_reason: "Missing rate limiting on auth endpoints poses security risk."
|
||||
reviewer: "Quinn"
|
||||
updated: "2025-01-12T10:15:00Z"
|
||||
status_reason: 'Missing rate limiting on auth endpoints poses security risk.'
|
||||
reviewer: 'Quinn'
|
||||
updated: '2025-01-12T10:15:00Z'
|
||||
top_issues:
|
||||
- id: "SEC-001"
|
||||
- id: 'SEC-001'
|
||||
severity: high # ONLY: low|medium|high
|
||||
finding: "No rate limiting on login endpoint"
|
||||
suggested_action: "Add rate limiting middleware before production"
|
||||
- id: "TEST-001"
|
||||
finding: 'No rate limiting on login endpoint'
|
||||
suggested_action: 'Add rate limiting middleware before production'
|
||||
- id: 'TEST-001'
|
||||
severity: medium
|
||||
finding: "No integration tests for auth flow"
|
||||
suggested_action: "Add integration test coverage"
|
||||
finding: 'No integration tests for auth flow'
|
||||
suggested_action: 'Add integration test coverage'
|
||||
waiver: { active: false }
|
||||
```
|
||||
|
||||
@@ -61,20 +61,20 @@ waiver: { active: false }
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "1.3"
|
||||
story: '1.3'
|
||||
gate: WAIVED
|
||||
status_reason: "Known issues accepted for MVP release."
|
||||
reviewer: "Quinn"
|
||||
updated: "2025-01-12T10:15:00Z"
|
||||
status_reason: 'Known issues accepted for MVP release.'
|
||||
reviewer: 'Quinn'
|
||||
updated: '2025-01-12T10:15:00Z'
|
||||
top_issues:
|
||||
- id: "PERF-001"
|
||||
- id: 'PERF-001'
|
||||
severity: low
|
||||
finding: "Dashboard loads slowly with 1000+ items"
|
||||
suggested_action: "Implement pagination in next sprint"
|
||||
finding: 'Dashboard loads slowly with 1000+ items'
|
||||
suggested_action: 'Implement pagination in next sprint'
|
||||
waiver:
|
||||
active: true
|
||||
reason: "MVP release - performance optimization deferred"
|
||||
approved_by: "Product Owner"
|
||||
reason: 'MVP release - performance optimization deferred'
|
||||
approved_by: 'Product Owner'
|
||||
```
|
||||
|
||||
## Gate Decision Criteria
|
||||
|
||||
@@ -6,10 +6,10 @@ Perform a comprehensive test architecture review with quality gate decision. Thi
|
||||
|
||||
```yaml
|
||||
required:
|
||||
- story_id: "{epic}.{story}" # e.g., "1.3"
|
||||
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml
|
||||
- story_title: "{title}" # If missing, derive from story file H1
|
||||
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
||||
- story_id: '{epic}.{story}' # e.g., "1.3"
|
||||
- story_path: '{devStoryLocation}/{epic}.{story}.*.md' # Path from core-config.yaml
|
||||
- story_title: '{title}' # If missing, derive from story file H1
|
||||
- story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
@@ -191,19 +191,19 @@ Gate file structure:
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "{epic}.{story}"
|
||||
story_title: "{story title}"
|
||||
story: '{epic}.{story}'
|
||||
story_title: '{story title}'
|
||||
gate: PASS|CONCERNS|FAIL|WAIVED
|
||||
status_reason: "1-2 sentence explanation of gate decision"
|
||||
reviewer: "Quinn (Test Architect)"
|
||||
updated: "{ISO-8601 timestamp}"
|
||||
status_reason: '1-2 sentence explanation of gate decision'
|
||||
reviewer: 'Quinn (Test Architect)'
|
||||
updated: '{ISO-8601 timestamp}'
|
||||
|
||||
top_issues: [] # Empty if no issues
|
||||
waiver: { active: false } # Set active: true only if WAIVED
|
||||
|
||||
# Extended fields (optional but recommended):
|
||||
quality_score: 0-100 # 100 - (20*FAILs) - (10*CONCERNS) or use technical-preferences.md weights
|
||||
expires: "{ISO-8601 timestamp}" # Typically 2 weeks from review
|
||||
expires: '{ISO-8601 timestamp}' # Typically 2 weeks from review
|
||||
|
||||
evidence:
|
||||
tests_reviewed: { count }
|
||||
@@ -215,24 +215,24 @@ evidence:
|
||||
nfr_validation:
|
||||
security:
|
||||
status: PASS|CONCERNS|FAIL
|
||||
notes: "Specific findings"
|
||||
notes: 'Specific findings'
|
||||
performance:
|
||||
status: PASS|CONCERNS|FAIL
|
||||
notes: "Specific findings"
|
||||
notes: 'Specific findings'
|
||||
reliability:
|
||||
status: PASS|CONCERNS|FAIL
|
||||
notes: "Specific findings"
|
||||
notes: 'Specific findings'
|
||||
maintainability:
|
||||
status: PASS|CONCERNS|FAIL
|
||||
notes: "Specific findings"
|
||||
notes: 'Specific findings'
|
||||
|
||||
recommendations:
|
||||
immediate: # Must fix before production
|
||||
- action: "Add rate limiting"
|
||||
refs: ["api/auth/login.ts"]
|
||||
- action: 'Add rate limiting'
|
||||
refs: ['api/auth/login.ts']
|
||||
future: # Can be addressed later
|
||||
- action: "Consider caching"
|
||||
refs: ["services/data.ts"]
|
||||
- action: 'Consider caching'
|
||||
refs: ['services/data.ts']
|
||||
```
|
||||
|
||||
### Gate Decision Criteria
|
||||
|
||||
@@ -6,10 +6,10 @@ Generate a comprehensive risk assessment matrix for a story implementation using
|
||||
|
||||
```yaml
|
||||
required:
|
||||
- story_id: "{epic}.{story}" # e.g., "1.3"
|
||||
- story_path: "docs/stories/{epic}.{story}.*.md"
|
||||
- story_title: "{title}" # If missing, derive from story file H1
|
||||
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
||||
- story_id: '{epic}.{story}' # e.g., "1.3"
|
||||
- story_path: 'docs/stories/{epic}.{story}.*.md'
|
||||
- story_title: '{title}' # If missing, derive from story file H1
|
||||
- story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
|
||||
```
|
||||
|
||||
## Purpose
|
||||
@@ -79,14 +79,14 @@ For each category, identify specific risks:
|
||||
|
||||
```yaml
|
||||
risk:
|
||||
id: "SEC-001" # Use prefixes: SEC, PERF, DATA, BUS, OPS, TECH
|
||||
id: 'SEC-001' # Use prefixes: SEC, PERF, DATA, BUS, OPS, TECH
|
||||
category: security
|
||||
title: "Insufficient input validation on user forms"
|
||||
description: "Form inputs not properly sanitized could lead to XSS attacks"
|
||||
title: 'Insufficient input validation on user forms'
|
||||
description: 'Form inputs not properly sanitized could lead to XSS attacks'
|
||||
affected_components:
|
||||
- "UserRegistrationForm"
|
||||
- "ProfileUpdateForm"
|
||||
detection_method: "Code review revealed missing validation"
|
||||
- 'UserRegistrationForm'
|
||||
- 'ProfileUpdateForm'
|
||||
detection_method: 'Code review revealed missing validation'
|
||||
```
|
||||
|
||||
### 2. Risk Assessment
|
||||
@@ -133,20 +133,20 @@ For each identified risk, provide mitigation:
|
||||
|
||||
```yaml
|
||||
mitigation:
|
||||
risk_id: "SEC-001"
|
||||
strategy: "preventive" # preventive|detective|corrective
|
||||
risk_id: 'SEC-001'
|
||||
strategy: 'preventive' # preventive|detective|corrective
|
||||
actions:
|
||||
- "Implement input validation library (e.g., validator.js)"
|
||||
- "Add CSP headers to prevent XSS execution"
|
||||
- "Sanitize all user inputs before storage"
|
||||
- "Escape all outputs in templates"
|
||||
- 'Implement input validation library (e.g., validator.js)'
|
||||
- 'Add CSP headers to prevent XSS execution'
|
||||
- 'Sanitize all user inputs before storage'
|
||||
- 'Escape all outputs in templates'
|
||||
testing_requirements:
|
||||
- "Security testing with OWASP ZAP"
|
||||
- "Manual penetration testing of forms"
|
||||
- "Unit tests for validation functions"
|
||||
residual_risk: "Low - Some zero-day vulnerabilities may remain"
|
||||
owner: "dev"
|
||||
timeline: "Before deployment"
|
||||
- 'Security testing with OWASP ZAP'
|
||||
- 'Manual penetration testing of forms'
|
||||
- 'Unit tests for validation functions'
|
||||
residual_risk: 'Low - Some zero-day vulnerabilities may remain'
|
||||
owner: 'dev'
|
||||
timeline: 'Before deployment'
|
||||
```
|
||||
|
||||
## Outputs
|
||||
@@ -172,12 +172,12 @@ risk_summary:
|
||||
highest:
|
||||
id: SEC-001
|
||||
score: 9
|
||||
title: "XSS on profile form"
|
||||
title: 'XSS on profile form'
|
||||
recommendations:
|
||||
must_fix:
|
||||
- "Add input sanitization & CSP"
|
||||
- 'Add input sanitization & CSP'
|
||||
monitor:
|
||||
- "Add security alerts for auth endpoints"
|
||||
- 'Add security alerts for auth endpoints'
|
||||
```
|
||||
|
||||
### Output 2: Markdown Report
|
||||
|
||||
@@ -6,10 +6,10 @@ Create comprehensive test scenarios with appropriate test level recommendations
|
||||
|
||||
```yaml
|
||||
required:
|
||||
- story_id: "{epic}.{story}" # e.g., "1.3"
|
||||
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml
|
||||
- story_title: "{title}" # If missing, derive from story file H1
|
||||
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
||||
- story_id: '{epic}.{story}' # e.g., "1.3"
|
||||
- story_path: '{devStoryLocation}/{epic}.{story}.*.md' # Path from core-config.yaml
|
||||
- story_title: '{title}' # If missing, derive from story file H1
|
||||
- story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
|
||||
```
|
||||
|
||||
## Purpose
|
||||
@@ -62,13 +62,13 @@ For each identified test need, create:
|
||||
|
||||
```yaml
|
||||
test_scenario:
|
||||
id: "{epic}.{story}-{LEVEL}-{SEQ}"
|
||||
requirement: "AC reference"
|
||||
id: '{epic}.{story}-{LEVEL}-{SEQ}'
|
||||
requirement: 'AC reference'
|
||||
priority: P0|P1|P2|P3
|
||||
level: unit|integration|e2e
|
||||
description: "What is being tested"
|
||||
justification: "Why this level was chosen"
|
||||
mitigates_risks: ["RISK-001"] # If risk profile exists
|
||||
description: 'What is being tested'
|
||||
justification: 'Why this level was chosen'
|
||||
mitigates_risks: ['RISK-001'] # If risk profile exists
|
||||
```
|
||||
|
||||
### 5. Validate Coverage
|
||||
|
||||
@@ -31,21 +31,21 @@ Identify all testable requirements from:
|
||||
For each requirement, document which tests validate it. Use Given-When-Then to describe what the test validates (not how it's written):
|
||||
|
||||
```yaml
|
||||
requirement: "AC1: User can login with valid credentials"
|
||||
requirement: 'AC1: User can login with valid credentials'
|
||||
test_mappings:
|
||||
- test_file: "auth/login.test.ts"
|
||||
test_case: "should successfully login with valid email and password"
|
||||
- test_file: 'auth/login.test.ts'
|
||||
test_case: 'should successfully login with valid email and password'
|
||||
# Given-When-Then describes WHAT the test validates, not HOW it's coded
|
||||
given: "A registered user with valid credentials"
|
||||
when: "They submit the login form"
|
||||
then: "They are redirected to dashboard and session is created"
|
||||
given: 'A registered user with valid credentials'
|
||||
when: 'They submit the login form'
|
||||
then: 'They are redirected to dashboard and session is created'
|
||||
coverage: full
|
||||
|
||||
- test_file: "e2e/auth-flow.test.ts"
|
||||
test_case: "complete login flow"
|
||||
given: "User on login page"
|
||||
when: "Entering valid credentials and submitting"
|
||||
then: "Dashboard loads with user data"
|
||||
- test_file: 'e2e/auth-flow.test.ts'
|
||||
test_case: 'complete login flow'
|
||||
given: 'User on login page'
|
||||
when: 'Entering valid credentials and submitting'
|
||||
then: 'Dashboard loads with user data'
|
||||
coverage: integration
|
||||
```
|
||||
|
||||
@@ -67,19 +67,19 @@ Document any gaps found:
|
||||
|
||||
```yaml
|
||||
coverage_gaps:
|
||||
- requirement: "AC3: Password reset email sent within 60 seconds"
|
||||
gap: "No test for email delivery timing"
|
||||
- requirement: 'AC3: Password reset email sent within 60 seconds'
|
||||
gap: 'No test for email delivery timing'
|
||||
severity: medium
|
||||
suggested_test:
|
||||
type: integration
|
||||
description: "Test email service SLA compliance"
|
||||
description: 'Test email service SLA compliance'
|
||||
|
||||
- requirement: "AC5: Support 1000 concurrent users"
|
||||
gap: "No load testing implemented"
|
||||
- requirement: 'AC5: Support 1000 concurrent users'
|
||||
gap: 'No load testing implemented'
|
||||
severity: high
|
||||
suggested_test:
|
||||
type: performance
|
||||
description: "Load test with 1000 concurrent connections"
|
||||
description: 'Load test with 1000 concurrent connections'
|
||||
```
|
||||
|
||||
## Outputs
|
||||
@@ -95,11 +95,11 @@ trace:
|
||||
full: Y
|
||||
partial: Z
|
||||
none: W
|
||||
planning_ref: "docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md"
|
||||
planning_ref: 'docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md'
|
||||
uncovered:
|
||||
- ac: "AC3"
|
||||
reason: "No test found for password reset timing"
|
||||
notes: "See docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md"
|
||||
- ac: 'AC3'
|
||||
reason: 'No test found for password reset timing'
|
||||
notes: 'See docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md'
|
||||
```
|
||||
|
||||
### Output 2: Traceability Report
|
||||
|
||||
@@ -20,20 +20,20 @@ sections:
|
||||
- id: intro-content
|
||||
content: |
|
||||
This document outlines the overall project architecture for {{project_name}}, including backend systems, shared services, and non-UI specific concerns. Its primary goal is to serve as the guiding architectural blueprint for AI-driven development, ensuring consistency and adherence to chosen patterns and technologies.
|
||||
|
||||
|
||||
**Relationship to Frontend Architecture:**
|
||||
If the project includes a significant user interface, a separate Frontend Architecture Document will detail the frontend-specific design and MUST be used in conjunction with this document. Core technology stack choices documented herein (see "Tech Stack") are definitive for the entire project, including any frontend components.
|
||||
- id: starter-template
|
||||
title: Starter Template or Existing Project
|
||||
instruction: |
|
||||
Before proceeding further with architecture design, check if the project is based on a starter template or existing codebase:
|
||||
|
||||
|
||||
1. Review the PRD and brainstorming brief for any mentions of:
|
||||
- Starter templates (e.g., Create React App, Next.js, Vue CLI, Angular CLI, etc.)
|
||||
- Existing projects or codebases being used as a foundation
|
||||
- Boilerplate projects or scaffolding tools
|
||||
- Previous projects to be cloned or adapted
|
||||
|
||||
|
||||
2. If a starter template or existing project is mentioned:
|
||||
- Ask the user to provide access via one of these methods:
|
||||
- Link to the starter template documentation
|
||||
@@ -46,16 +46,16 @@ sections:
|
||||
- Existing architectural patterns and conventions
|
||||
- Any limitations or constraints imposed by the starter
|
||||
- Use this analysis to inform and align your architecture decisions
|
||||
|
||||
|
||||
3. If no starter template is mentioned but this is a greenfield project:
|
||||
- Suggest appropriate starter templates based on the tech stack preferences
|
||||
- Explain the benefits (faster setup, best practices, community support)
|
||||
- Let the user decide whether to use one
|
||||
|
||||
|
||||
4. If the user confirms no starter template will be used:
|
||||
- Proceed with architecture design from scratch
|
||||
- Note that manual setup will be required for all tooling and configuration
|
||||
|
||||
|
||||
Document the decision here before proceeding with the architecture design. If none, just say N/A
|
||||
elicit: true
|
||||
- id: changelog
|
||||
@@ -83,7 +83,7 @@ sections:
|
||||
title: High Level Overview
|
||||
instruction: |
|
||||
Based on the PRD's Technical Assumptions section, describe:
|
||||
|
||||
|
||||
1. The main architectural style (e.g., Monolith, Microservices, Serverless, Event-Driven)
|
||||
2. Repository structure decision from PRD (Monorepo/Polyrepo)
|
||||
3. Service architecture decision from PRD
|
||||
@@ -100,17 +100,17 @@ sections:
|
||||
- Data flow directions
|
||||
- External integrations
|
||||
- User entry points
|
||||
|
||||
|
||||
- id: architectural-patterns
|
||||
title: Architectural and Design Patterns
|
||||
instruction: |
|
||||
List the key high-level patterns that will guide the architecture. For each pattern:
|
||||
|
||||
|
||||
1. Present 2-3 viable options if multiple exist
|
||||
2. Provide your recommendation with clear rationale
|
||||
3. Get user confirmation before finalizing
|
||||
4. These patterns should align with the PRD's technical assumptions and project goals
|
||||
|
||||
|
||||
Common patterns to consider:
|
||||
- Architectural style patterns (Serverless, Event-Driven, Microservices, CQRS, Hexagonal)
|
||||
- Code organization patterns (Dependency Injection, Repository, Module, Factory)
|
||||
@@ -126,23 +126,23 @@ sections:
|
||||
title: Tech Stack
|
||||
instruction: |
|
||||
This is the DEFINITIVE technology selection section. Work with the user to make specific choices:
|
||||
|
||||
|
||||
1. Review PRD technical assumptions and any preferences from {root}/data/technical-preferences.yaml or an attached technical-preferences
|
||||
2. For each category, present 2-3 viable options with pros/cons
|
||||
3. Make a clear recommendation based on project needs
|
||||
4. Get explicit user approval for each selection
|
||||
5. Document exact versions (avoid "latest" - pin specific versions)
|
||||
6. This table is the single source of truth - all other docs must reference these choices
|
||||
|
||||
|
||||
Key decisions to finalize - before displaying the table, ensure you are aware of or ask the user about - let the user know if they are not sure on any that you can also provide suggestions with rationale:
|
||||
|
||||
|
||||
- Starter templates (if any)
|
||||
- Languages and runtimes with exact versions
|
||||
- Frameworks and libraries / packages
|
||||
- Cloud provider and key services choices
|
||||
- Database and storage solutions - if unclear suggest sql or nosql or other types depending on the project and depending on cloud provider offer a suggestion
|
||||
- Development tools
|
||||
|
||||
|
||||
Upon render of the table, ensure the user is aware of the importance of this sections choices, should also look for gaps or disagreements with anything, ask for any clarifications if something is unclear why its in the list, and also right away elicit feedback - this statement and the options should be rendered and then prompt right all before allowing user input.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -166,13 +166,13 @@ sections:
|
||||
title: Data Models
|
||||
instruction: |
|
||||
Define the core data models/entities:
|
||||
|
||||
|
||||
1. Review PRD requirements and identify key business entities
|
||||
2. For each model, explain its purpose and relationships
|
||||
3. Include key attributes and data types
|
||||
4. Show relationships between models
|
||||
5. Discuss design decisions with user
|
||||
|
||||
|
||||
Create a clear conceptual model before moving to database schema.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -181,11 +181,11 @@ sections:
|
||||
title: "{{model_name}}"
|
||||
template: |
|
||||
**Purpose:** {{model_purpose}}
|
||||
|
||||
|
||||
**Key Attributes:**
|
||||
- {{attribute_1}}: {{type_1}} - {{description_1}}
|
||||
- {{attribute_2}}: {{type_2}} - {{description_2}}
|
||||
|
||||
|
||||
**Relationships:**
|
||||
- {{relationship_1}}
|
||||
- {{relationship_2}}
|
||||
@@ -194,7 +194,7 @@ sections:
|
||||
title: Components
|
||||
instruction: |
|
||||
Based on the architectural patterns, tech stack, and data models from above:
|
||||
|
||||
|
||||
1. Identify major logical components/services and their responsibilities
|
||||
2. Consider the repository structure (monorepo/polyrepo) from PRD
|
||||
3. Define clear boundaries and interfaces between components
|
||||
@@ -203,7 +203,7 @@ sections:
|
||||
- Key interfaces/APIs exposed
|
||||
- Dependencies on other components
|
||||
- Technology specifics based on tech stack choices
|
||||
|
||||
|
||||
5. Create component diagrams where helpful
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -212,13 +212,13 @@ sections:
|
||||
title: "{{component_name}}"
|
||||
template: |
|
||||
**Responsibility:** {{component_description}}
|
||||
|
||||
|
||||
**Key Interfaces:**
|
||||
- {{interface_1}}
|
||||
- {{interface_2}}
|
||||
|
||||
|
||||
**Dependencies:** {{dependencies}}
|
||||
|
||||
|
||||
**Technology Stack:** {{component_tech_details}}
|
||||
- id: component-diagrams
|
||||
title: Component Diagrams
|
||||
@@ -235,13 +235,13 @@ sections:
|
||||
condition: Project requires external API integrations
|
||||
instruction: |
|
||||
For each external service integration:
|
||||
|
||||
|
||||
1. Identify APIs needed based on PRD requirements and component design
|
||||
2. If documentation URLs are unknown, ask user for specifics
|
||||
3. Document authentication methods and security considerations
|
||||
4. List specific endpoints that will be used
|
||||
5. Note any rate limits or usage constraints
|
||||
|
||||
|
||||
If no external APIs are needed, state this explicitly and skip to next section.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -254,10 +254,10 @@ sections:
|
||||
- **Base URL(s):** {{api_base_url}}
|
||||
- **Authentication:** {{auth_method}}
|
||||
- **Rate Limits:** {{rate_limits}}
|
||||
|
||||
|
||||
**Key Endpoints Used:**
|
||||
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
|
||||
|
||||
|
||||
**Integration Notes:** {{integration_considerations}}
|
||||
|
||||
- id: core-workflows
|
||||
@@ -266,13 +266,13 @@ sections:
|
||||
mermaid_type: sequence
|
||||
instruction: |
|
||||
Illustrate key system workflows using sequence diagrams:
|
||||
|
||||
|
||||
1. Identify critical user journeys from PRD
|
||||
2. Show component interactions including external APIs
|
||||
3. Include error handling paths
|
||||
4. Document async operations
|
||||
5. Create both high-level and detailed diagrams as needed
|
||||
|
||||
|
||||
Focus on workflows that clarify architecture decisions or complex interactions.
|
||||
elicit: true
|
||||
|
||||
@@ -283,13 +283,13 @@ sections:
|
||||
language: yaml
|
||||
instruction: |
|
||||
If the project includes a REST API:
|
||||
|
||||
|
||||
1. Create an OpenAPI 3.0 specification
|
||||
2. Include all endpoints from epics/stories
|
||||
3. Define request/response schemas based on data models
|
||||
4. Document authentication requirements
|
||||
5. Include example requests/responses
|
||||
|
||||
|
||||
Use YAML format for better readability. If no REST API, skip this section.
|
||||
elicit: true
|
||||
template: |
|
||||
@@ -306,13 +306,13 @@ sections:
|
||||
title: Database Schema
|
||||
instruction: |
|
||||
Transform the conceptual data models into concrete database schemas:
|
||||
|
||||
|
||||
1. Use the database type(s) selected in Tech Stack
|
||||
2. Create schema definitions using appropriate notation
|
||||
3. Include indexes, constraints, and relationships
|
||||
4. Consider performance and scalability
|
||||
5. For NoSQL, show document structures
|
||||
|
||||
|
||||
Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.)
|
||||
elicit: true
|
||||
|
||||
@@ -322,14 +322,14 @@ sections:
|
||||
language: plaintext
|
||||
instruction: |
|
||||
Create a project folder structure that reflects:
|
||||
|
||||
|
||||
1. The chosen repository structure (monorepo/polyrepo)
|
||||
2. The service architecture (monolith/microservices/serverless)
|
||||
3. The selected tech stack and languages
|
||||
4. Component organization from above
|
||||
5. Best practices for the chosen frameworks
|
||||
6. Clear separation of concerns
|
||||
|
||||
|
||||
Adapt the structure based on project needs. For monorepos, show service separation. For serverless, show function organization. Include language-specific conventions.
|
||||
elicit: true
|
||||
examples:
|
||||
@@ -347,13 +347,13 @@ sections:
|
||||
title: Infrastructure and Deployment
|
||||
instruction: |
|
||||
Define the deployment architecture and practices:
|
||||
|
||||
|
||||
1. Use IaC tool selected in Tech Stack
|
||||
2. Choose deployment strategy appropriate for the architecture
|
||||
3. Define environments and promotion flow
|
||||
4. Establish rollback procedures
|
||||
5. Consider security, monitoring, and cost optimization
|
||||
|
||||
|
||||
Get user input on deployment preferences and CI/CD tool choices.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -389,13 +389,13 @@ sections:
|
||||
title: Error Handling Strategy
|
||||
instruction: |
|
||||
Define comprehensive error handling approach:
|
||||
|
||||
|
||||
1. Choose appropriate patterns for the language/framework from Tech Stack
|
||||
2. Define logging standards and tools
|
||||
3. Establish error categories and handling rules
|
||||
4. Consider observability and debugging needs
|
||||
5. Ensure security (no sensitive data in logs)
|
||||
|
||||
|
||||
This section guides both AI and human developers in consistent error handling.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -442,13 +442,13 @@ sections:
|
||||
title: Coding Standards
|
||||
instruction: |
|
||||
These standards are MANDATORY for AI agents. Work with user to define ONLY the critical rules needed to prevent bad code. Explain that:
|
||||
|
||||
|
||||
1. This section directly controls AI developer behavior
|
||||
2. Keep it minimal - assume AI knows general best practices
|
||||
3. Focus on project-specific conventions and gotchas
|
||||
4. Overly detailed standards bloat context and slow development
|
||||
5. Standards will be extracted to separate file for dev agent use
|
||||
|
||||
|
||||
For each standard, get explicit user confirmation it's necessary.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -470,7 +470,7 @@ sections:
|
||||
- "Never use console.log in production code - use logger"
|
||||
- "All API responses must use ApiResponse wrapper type"
|
||||
- "Database queries must use repository pattern, never direct ORM"
|
||||
|
||||
|
||||
Avoid obvious rules like "use SOLID principles" or "write clean code"
|
||||
repeatable: true
|
||||
template: "- **{{rule_name}}:** {{rule_description}}"
|
||||
@@ -488,14 +488,14 @@ sections:
|
||||
title: Test Strategy and Standards
|
||||
instruction: |
|
||||
Work with user to define comprehensive test strategy:
|
||||
|
||||
|
||||
1. Use test frameworks from Tech Stack
|
||||
2. Decide on TDD vs test-after approach
|
||||
3. Define test organization and naming
|
||||
4. Establish coverage goals
|
||||
5. Determine integration test infrastructure
|
||||
6. Plan for test data and external dependencies
|
||||
|
||||
|
||||
Note: Basic info goes in Coding Standards for dev agent. This detailed section is for QA agent and team reference.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -516,7 +516,7 @@ sections:
|
||||
- **Location:** {{unit_test_location}}
|
||||
- **Mocking Library:** {{mocking_library}}
|
||||
- **Coverage Requirement:** {{unit_coverage}}
|
||||
|
||||
|
||||
**AI Agent Requirements:**
|
||||
- Generate tests for all public methods
|
||||
- Cover edge cases and error conditions
|
||||
@@ -558,7 +558,7 @@ sections:
|
||||
title: Security
|
||||
instruction: |
|
||||
Define MANDATORY security requirements for AI and human developers:
|
||||
|
||||
|
||||
1. Focus on implementation-specific rules
|
||||
2. Reference security tools from Tech Stack
|
||||
3. Define clear patterns for common scenarios
|
||||
@@ -627,16 +627,16 @@ sections:
|
||||
title: Next Steps
|
||||
instruction: |
|
||||
After completing the architecture:
|
||||
|
||||
|
||||
1. If project has UI components:
|
||||
- Use "Frontend Architecture Mode"
|
||||
- Provide this document as input
|
||||
|
||||
|
||||
2. For all projects:
|
||||
- Review with Product Owner
|
||||
- Begin story implementation with Dev agent
|
||||
- Set up infrastructure with DevOps agent
|
||||
|
||||
|
||||
3. Include specific prompts for next agents if needed
|
||||
sections:
|
||||
- id: architect-prompt
|
||||
|
||||
@@ -23,11 +23,11 @@ sections:
|
||||
- id: summary-details
|
||||
template: |
|
||||
**Topic:** {{session_topic}}
|
||||
|
||||
|
||||
**Session Goals:** {{stated_goals}}
|
||||
|
||||
|
||||
**Techniques Used:** {{techniques_list}}
|
||||
|
||||
|
||||
**Total Ideas Generated:** {{total_ideas}}
|
||||
- id: key-themes
|
||||
title: "Key Themes Identified:"
|
||||
@@ -152,5 +152,5 @@ sections:
|
||||
- id: footer
|
||||
content: |
|
||||
---
|
||||
|
||||
*Session facilitated using the BMAD-METHOD brainstorming framework*
|
||||
|
||||
*Session facilitated using the BMAD-METHOD brainstorming framework*
|
||||
|
||||
@@ -16,40 +16,40 @@ sections:
|
||||
title: Introduction
|
||||
instruction: |
|
||||
IMPORTANT - SCOPE AND ASSESSMENT REQUIRED:
|
||||
|
||||
|
||||
This architecture document is for SIGNIFICANT enhancements to existing projects that require comprehensive architectural planning. Before proceeding:
|
||||
|
||||
|
||||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
||||
3. **DEEP ANALYSIS MANDATE**: You MUST conduct thorough analysis of the existing codebase, architecture patterns, and technical constraints before making ANY architectural recommendations. Every suggestion must be based on actual project analysis, not assumptions.
|
||||
|
||||
|
||||
4. **CONTINUOUS VALIDATION**: Throughout this process, explicitly validate your understanding with the user. For every architectural decision, confirm: "Based on my analysis of your existing system, I recommend [decision] because [evidence from actual project]. Does this align with your system's reality?"
|
||||
|
||||
|
||||
If any required inputs are missing, request them before proceeding.
|
||||
elicit: true
|
||||
sections:
|
||||
- id: intro-content
|
||||
content: |
|
||||
This document outlines the architectural approach for enhancing {{project_name}} with {{enhancement_description}}. Its primary goal is to serve as the guiding architectural blueprint for AI-driven development of new features while ensuring seamless integration with the existing system.
|
||||
|
||||
|
||||
**Relationship to Existing Architecture:**
|
||||
This document supplements existing project architecture by defining how new components will integrate with current systems. Where conflicts arise between new and existing patterns, this document provides guidance on maintaining consistency while implementing enhancements.
|
||||
- id: existing-project-analysis
|
||||
title: Existing Project Analysis
|
||||
instruction: |
|
||||
Analyze the existing project structure and architecture:
|
||||
|
||||
|
||||
1. Review existing documentation in docs folder
|
||||
2. Examine current technology stack and versions
|
||||
3. Identify existing architectural patterns and conventions
|
||||
4. Note current deployment and infrastructure setup
|
||||
5. Document any constraints or limitations
|
||||
|
||||
|
||||
CRITICAL: After your analysis, explicitly validate your findings: "Based on my analysis of your project, I've identified the following about your existing system: [key findings]. Please confirm these observations are accurate before I proceed with architectural recommendations."
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -78,12 +78,12 @@ sections:
|
||||
title: Enhancement Scope and Integration Strategy
|
||||
instruction: |
|
||||
Define how the enhancement will integrate with the existing system:
|
||||
|
||||
|
||||
1. Review the brownfield PRD enhancement scope
|
||||
2. Identify integration points with existing code
|
||||
3. Define boundaries between new and existing functionality
|
||||
4. Establish compatibility requirements
|
||||
|
||||
|
||||
VALIDATION CHECKPOINT: Before presenting the integration strategy, confirm: "Based on my analysis, the integration approach I'm proposing takes into account [specific existing system characteristics]. These integration points and boundaries respect your current architecture patterns. Is this assessment accurate?"
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -112,7 +112,7 @@ sections:
|
||||
title: Tech Stack Alignment
|
||||
instruction: |
|
||||
Ensure new components align with existing technology choices:
|
||||
|
||||
|
||||
1. Use existing technology stack as the foundation
|
||||
2. Only introduce new technologies if absolutely necessary
|
||||
3. Justify any new additions with clear rationale
|
||||
@@ -135,7 +135,7 @@ sections:
|
||||
title: Data Models and Schema Changes
|
||||
instruction: |
|
||||
Define new data models and how they integrate with existing schema:
|
||||
|
||||
|
||||
1. Identify new entities required for the enhancement
|
||||
2. Define relationships with existing data models
|
||||
3. Plan database schema changes (additions, modifications)
|
||||
@@ -151,11 +151,11 @@ sections:
|
||||
template: |
|
||||
**Purpose:** {{model_purpose}}
|
||||
**Integration:** {{integration_with_existing}}
|
||||
|
||||
|
||||
**Key Attributes:**
|
||||
- {{attribute_1}}: {{type_1}} - {{description_1}}
|
||||
- {{attribute_2}}: {{type_2}} - {{description_2}}
|
||||
|
||||
|
||||
**Relationships:**
|
||||
- **With Existing:** {{existing_relationships}}
|
||||
- **With New:** {{new_relationships}}
|
||||
@@ -167,7 +167,7 @@ sections:
|
||||
- **Modified Tables:** {{modified_tables_list}}
|
||||
- **New Indexes:** {{new_indexes_list}}
|
||||
- **Migration Strategy:** {{migration_approach}}
|
||||
|
||||
|
||||
**Backward Compatibility:**
|
||||
- {{compatibility_measure_1}}
|
||||
- {{compatibility_measure_2}}
|
||||
@@ -176,12 +176,12 @@ sections:
|
||||
title: Component Architecture
|
||||
instruction: |
|
||||
Define new components and their integration with existing architecture:
|
||||
|
||||
|
||||
1. Identify new components required for the enhancement
|
||||
2. Define interfaces with existing components
|
||||
3. Establish clear boundaries and responsibilities
|
||||
4. Plan integration points and data flow
|
||||
|
||||
|
||||
MANDATORY VALIDATION: Before presenting component architecture, confirm: "The new components I'm proposing follow the existing architectural patterns I identified in your codebase: [specific patterns]. The integration interfaces respect your current component structure and communication patterns. Does this match your project's reality?"
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -194,15 +194,15 @@ sections:
|
||||
template: |
|
||||
**Responsibility:** {{component_description}}
|
||||
**Integration Points:** {{integration_points}}
|
||||
|
||||
|
||||
**Key Interfaces:**
|
||||
- {{interface_1}}
|
||||
- {{interface_2}}
|
||||
|
||||
|
||||
**Dependencies:**
|
||||
- **Existing Components:** {{existing_dependencies}}
|
||||
- **New Components:** {{new_dependencies}}
|
||||
|
||||
|
||||
**Technology Stack:** {{component_tech_details}}
|
||||
- id: interaction-diagram
|
||||
title: Component Interaction Diagram
|
||||
@@ -215,7 +215,7 @@ sections:
|
||||
condition: Enhancement requires API changes
|
||||
instruction: |
|
||||
Define new API endpoints and integration with existing APIs:
|
||||
|
||||
|
||||
1. Plan new API endpoints required for the enhancement
|
||||
2. Ensure consistency with existing API patterns
|
||||
3. Define authentication and authorization integration
|
||||
@@ -265,17 +265,17 @@ sections:
|
||||
- **Base URL:** {{api_base_url}}
|
||||
- **Authentication:** {{auth_method}}
|
||||
- **Integration Method:** {{integration_approach}}
|
||||
|
||||
|
||||
**Key Endpoints Used:**
|
||||
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
|
||||
|
||||
|
||||
**Error Handling:** {{error_handling_strategy}}
|
||||
|
||||
- id: source-tree-integration
|
||||
title: Source Tree Integration
|
||||
instruction: |
|
||||
Define how new code will integrate with existing project structure:
|
||||
|
||||
|
||||
1. Follow existing project organization patterns
|
||||
2. Identify where new files/folders will be placed
|
||||
3. Ensure consistency with existing naming conventions
|
||||
@@ -314,7 +314,7 @@ sections:
|
||||
title: Infrastructure and Deployment Integration
|
||||
instruction: |
|
||||
Define how the enhancement will be deployed alongside existing infrastructure:
|
||||
|
||||
|
||||
1. Use existing deployment pipeline and infrastructure
|
||||
2. Identify any infrastructure changes needed
|
||||
3. Plan deployment strategy to minimize risk
|
||||
@@ -344,7 +344,7 @@ sections:
|
||||
title: Coding Standards and Conventions
|
||||
instruction: |
|
||||
Ensure new code follows existing project conventions:
|
||||
|
||||
|
||||
1. Document existing coding standards from project analysis
|
||||
2. Identify any enhancement-specific requirements
|
||||
3. Ensure consistency with existing codebase patterns
|
||||
@@ -375,7 +375,7 @@ sections:
|
||||
title: Testing Strategy
|
||||
instruction: |
|
||||
Define testing approach for the enhancement:
|
||||
|
||||
|
||||
1. Integrate with existing test suite
|
||||
2. Ensure existing functionality remains intact
|
||||
3. Plan for testing new features
|
||||
@@ -415,7 +415,7 @@ sections:
|
||||
title: Security Integration
|
||||
instruction: |
|
||||
Ensure security consistency with existing system:
|
||||
|
||||
|
||||
1. Follow existing security patterns and tools
|
||||
2. Ensure new features don't introduce vulnerabilities
|
||||
3. Maintain existing security posture
|
||||
@@ -450,7 +450,7 @@ sections:
|
||||
title: Next Steps
|
||||
instruction: |
|
||||
After completing the brownfield architecture:
|
||||
|
||||
|
||||
1. Review integration points with existing system
|
||||
2. Begin story implementation with Dev agent
|
||||
3. Set up deployment pipeline integration
|
||||
@@ -473,4 +473,4 @@ sections:
|
||||
- Integration requirements with existing codebase validated with user
|
||||
- Key technical decisions based on real project constraints
|
||||
- Existing system compatibility requirements with specific verification steps
|
||||
- Clear sequencing of implementation to minimize risk to existing functionality
|
||||
- Clear sequencing of implementation to minimize risk to existing functionality
|
||||
|
||||
@@ -16,19 +16,19 @@ sections:
|
||||
title: Intro Project Analysis and Context
|
||||
instruction: |
|
||||
IMPORTANT - SCOPE ASSESSMENT REQUIRED:
|
||||
|
||||
|
||||
This PRD is for SIGNIFICANT enhancements to existing projects that require comprehensive planning and multiple stories. Before proceeding:
|
||||
|
||||
|
||||
1. **Assess Enhancement Complexity**: If this is a simple feature addition or bug fix that could be completed in 1-2 focused development sessions, STOP and recommend: "For simpler changes, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead. This full PRD process is designed for substantial enhancements that require architectural planning and multiple coordinated stories."
|
||||
|
||||
|
||||
2. **Project Context**: Determine if we're working in an IDE with the project already loaded or if the user needs to provide project information. If project files are available, analyze existing documentation in the docs folder. If insufficient documentation exists, recommend running the document-project task first.
|
||||
|
||||
|
||||
3. **Deep Assessment Requirement**: You MUST thoroughly analyze the existing project structure, patterns, and constraints before making ANY suggestions. Every recommendation must be grounded in actual project analysis, not assumptions.
|
||||
|
||||
|
||||
Gather comprehensive information about the existing project. This section must be completed before proceeding with requirements.
|
||||
|
||||
|
||||
CRITICAL: Throughout this analysis, explicitly confirm your understanding with the user. For every assumption you make about the existing project, ask: "Based on my analysis, I understand that [assumption]. Is this correct?"
|
||||
|
||||
|
||||
Do not proceed with any recommendations until the user has validated your understanding of the existing system.
|
||||
sections:
|
||||
- id: existing-project-overview
|
||||
@@ -54,7 +54,7 @@ sections:
|
||||
- Note: "Document-project analysis available - using existing technical documentation"
|
||||
- List key documents created by document-project
|
||||
- Skip the missing documentation check below
|
||||
|
||||
|
||||
Otherwise, check for existing documentation:
|
||||
sections:
|
||||
- id: available-docs
|
||||
@@ -178,7 +178,7 @@ sections:
|
||||
If document-project output available:
|
||||
- Extract from "Actual Tech Stack" table in High Level Architecture section
|
||||
- Include version numbers and any noted constraints
|
||||
|
||||
|
||||
Otherwise, document the current technology stack:
|
||||
template: |
|
||||
**Languages**: {{languages}}
|
||||
@@ -217,7 +217,7 @@ sections:
|
||||
- Reference "Technical Debt and Known Issues" section
|
||||
- Include "Workarounds and Gotchas" that might impact enhancement
|
||||
- Note any identified constraints from "Critical Technical Debt"
|
||||
|
||||
|
||||
Build risk assessment incorporating existing known issues:
|
||||
template: |
|
||||
**Technical Risks**: {{technical_risks}}
|
||||
@@ -240,7 +240,7 @@ sections:
|
||||
title: "Epic 1: {{enhancement_title}}"
|
||||
instruction: |
|
||||
Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality
|
||||
|
||||
|
||||
CRITICAL STORY SEQUENCING FOR BROWNFIELD:
|
||||
- Stories must ensure existing functionality remains intact
|
||||
- Each story should include verification that existing features still work
|
||||
@@ -253,7 +253,7 @@ sections:
|
||||
- Each story must deliver value while maintaining system integrity
|
||||
template: |
|
||||
**Epic Goal**: {{epic_goal}}
|
||||
|
||||
|
||||
**Integration Requirements**: {{integration_requirements}}
|
||||
sections:
|
||||
- id: story
|
||||
@@ -277,4 +277,4 @@ sections:
|
||||
items:
|
||||
- template: "IV1: {{existing_functionality_verification}}"
|
||||
- template: "IV2: {{integration_point_verification}}"
|
||||
- template: "IV3: {{performance_impact_verification}}"
|
||||
- template: "IV3: {{performance_impact_verification}}"
|
||||
|
||||
@@ -76,7 +76,7 @@ sections:
|
||||
title: Competitor Prioritization Matrix
|
||||
instruction: |
|
||||
Help categorize competitors by market share and strategic threat level
|
||||
|
||||
|
||||
Create a 2x2 matrix:
|
||||
- Priority 1 (Core Competitors): High Market Share + High Threat
|
||||
- Priority 2 (Emerging Threats): Low Market Share + High Threat
|
||||
@@ -141,7 +141,14 @@ sections:
|
||||
title: Feature Comparison Matrix
|
||||
instruction: Create a detailed comparison table of key features across competitors
|
||||
type: table
|
||||
columns: ["Feature Category", "{{your_company}}", "{{competitor_1}}", "{{competitor_2}}", "{{competitor_3}}"]
|
||||
columns:
|
||||
[
|
||||
"Feature Category",
|
||||
"{{your_company}}",
|
||||
"{{competitor_1}}",
|
||||
"{{competitor_2}}",
|
||||
"{{competitor_3}}",
|
||||
]
|
||||
rows:
|
||||
- category: "Core Functionality"
|
||||
items:
|
||||
@@ -153,7 +160,13 @@ sections:
|
||||
- ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"]
|
||||
- category: "Integration & Ecosystem"
|
||||
items:
|
||||
- ["API Availability", "{{availability}}", "{{availability}}", "{{availability}}", "{{availability}}"]
|
||||
- [
|
||||
"API Availability",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
]
|
||||
- ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"]
|
||||
- category: "Pricing & Plans"
|
||||
items:
|
||||
@@ -180,7 +193,7 @@ sections:
|
||||
title: Positioning Map
|
||||
instruction: |
|
||||
Describe competitor positions on key dimensions
|
||||
|
||||
|
||||
Create a positioning description using 2 key dimensions relevant to the market, such as:
|
||||
- Price vs. Features
|
||||
- Ease of Use vs. Power
|
||||
@@ -215,7 +228,7 @@ sections:
|
||||
title: Blue Ocean Opportunities
|
||||
instruction: |
|
||||
Identify uncontested market spaces
|
||||
|
||||
|
||||
List opportunities to create new market space:
|
||||
- Underserved segments
|
||||
- Unaddressed use cases
|
||||
@@ -290,4 +303,4 @@ sections:
|
||||
Recommended review schedule:
|
||||
- Weekly: {{weekly_items}}
|
||||
- Monthly: {{monthly_items}}
|
||||
- Quarterly: {{quarterly_analysis}}
|
||||
- Quarterly: {{quarterly_analysis}}
|
||||
|
||||
@@ -16,16 +16,16 @@ sections:
|
||||
title: Template and Framework Selection
|
||||
instruction: |
|
||||
Review provided documents including PRD, UX-UI Specification, and main Architecture Document. Focus on extracting technical implementation details needed for AI frontend tools and developer agents. Ask the user for any of these documents if you are unable to locate and were not provided.
|
||||
|
||||
|
||||
Before proceeding with frontend architecture design, check if the project is using a frontend starter template or existing codebase:
|
||||
|
||||
|
||||
1. Review the PRD, main architecture document, and brainstorming brief for mentions of:
|
||||
- Frontend starter templates (e.g., Create React App, Next.js, Vite, Vue CLI, Angular CLI, etc.)
|
||||
- UI kit or component library starters
|
||||
- Existing frontend projects being used as a foundation
|
||||
- Admin dashboard templates or other specialized starters
|
||||
- Design system implementations
|
||||
|
||||
|
||||
2. If a frontend starter template or existing project is mentioned:
|
||||
- Ask the user to provide access via one of these methods:
|
||||
- Link to the starter template documentation
|
||||
@@ -41,7 +41,7 @@ sections:
|
||||
- Testing setup and patterns
|
||||
- Build and development scripts
|
||||
- Use this analysis to ensure your frontend architecture aligns with the starter's patterns
|
||||
|
||||
|
||||
3. If no frontend starter is mentioned but this is a new UI, ensure we know what the ui language and framework is:
|
||||
- Based on the framework choice, suggest appropriate starters:
|
||||
- React: Create React App, Next.js, Vite + React
|
||||
@@ -49,11 +49,11 @@ sections:
|
||||
- Angular: Angular CLI
|
||||
- Or suggest popular UI templates if applicable
|
||||
- Explain benefits specific to frontend development
|
||||
|
||||
|
||||
4. If the user confirms no starter template will be used:
|
||||
- Note that all tooling, bundling, and configuration will need manual setup
|
||||
- Proceed with frontend architecture from scratch
|
||||
|
||||
|
||||
Document the starter template decision and any constraints it imposes before proceeding.
|
||||
sections:
|
||||
- id: changelog
|
||||
@@ -75,12 +75,24 @@ sections:
|
||||
rows:
|
||||
- ["Framework", "{{framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["UI Library", "{{ui_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["State Management", "{{state_management}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- [
|
||||
"State Management",
|
||||
"{{state_management}}",
|
||||
"{{version}}",
|
||||
"{{purpose}}",
|
||||
"{{why_chosen}}",
|
||||
]
|
||||
- ["Routing", "{{routing_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Build Tool", "{{build_tool}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Styling", "{{styling_solution}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Testing", "{{test_framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Component Library", "{{component_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- [
|
||||
"Component Library",
|
||||
"{{component_lib}}",
|
||||
"{{version}}",
|
||||
"{{purpose}}",
|
||||
"{{why_chosen}}",
|
||||
]
|
||||
- ["Form Handling", "{{form_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Animation", "{{animation_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Dev Tools", "{{dev_tools}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
@@ -203,4 +215,4 @@ sections:
|
||||
- Common commands (dev server, build, test)
|
||||
- Key import patterns
|
||||
- File naming conventions
|
||||
- Project-specific patterns and utilities
|
||||
- Project-specific patterns and utilities
|
||||
|
||||
@@ -16,7 +16,7 @@ sections:
|
||||
title: Introduction
|
||||
instruction: |
|
||||
Review provided documents including Project Brief, PRD, and any user research to gather context. Focus on understanding user needs, pain points, and desired outcomes before beginning the specification.
|
||||
|
||||
|
||||
Establish the document's purpose and scope. Keep the content below but ensure project name is properly substituted.
|
||||
content: |
|
||||
This document defines the user experience goals, information architecture, user flows, and visual design specifications for {{project_name}}'s user interface. It serves as the foundation for visual design and frontend development, ensuring a cohesive and user-centered experience.
|
||||
@@ -25,7 +25,7 @@ sections:
|
||||
title: Overall UX Goals & Principles
|
||||
instruction: |
|
||||
Work with the user to establish and document the following. If not already defined, facilitate a discussion to determine:
|
||||
|
||||
|
||||
1. Target User Personas - elicit details or confirm existing ones from PRD
|
||||
2. Key Usability Goals - understand what success looks like for users
|
||||
3. Core Design Principles - establish 3-5 guiding principles
|
||||
@@ -66,7 +66,7 @@ sections:
|
||||
title: Information Architecture (IA)
|
||||
instruction: |
|
||||
Collaborate with the user to create a comprehensive information architecture:
|
||||
|
||||
|
||||
1. Build a Site Map or Screen Inventory showing all major areas
|
||||
2. Define the Navigation Structure (primary, secondary, breadcrumbs)
|
||||
3. Use Mermaid diagrams for visual representation
|
||||
@@ -96,22 +96,22 @@ sections:
|
||||
title: Navigation Structure
|
||||
template: |
|
||||
**Primary Navigation:** {{primary_nav_description}}
|
||||
|
||||
|
||||
**Secondary Navigation:** {{secondary_nav_description}}
|
||||
|
||||
|
||||
**Breadcrumb Strategy:** {{breadcrumb_strategy}}
|
||||
|
||||
- id: user-flows
|
||||
title: User Flows
|
||||
instruction: |
|
||||
For each critical user task identified in the PRD:
|
||||
|
||||
|
||||
1. Define the user's goal clearly
|
||||
2. Map out all steps including decision points
|
||||
3. Consider edge cases and error states
|
||||
4. Use Mermaid flow diagrams for clarity
|
||||
5. Link to external tools (Figma/Miro) if detailed flows exist there
|
||||
|
||||
|
||||
Create subsections for each major flow.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -120,9 +120,9 @@ sections:
|
||||
title: "{{flow_name}}"
|
||||
template: |
|
||||
**User Goal:** {{flow_goal}}
|
||||
|
||||
|
||||
**Entry Points:** {{entry_points}}
|
||||
|
||||
|
||||
**Success Criteria:** {{success_criteria}}
|
||||
sections:
|
||||
- id: flow-diagram
|
||||
@@ -153,14 +153,14 @@ sections:
|
||||
title: "{{screen_name}}"
|
||||
template: |
|
||||
**Purpose:** {{screen_purpose}}
|
||||
|
||||
|
||||
**Key Elements:**
|
||||
- {{element_1}}
|
||||
- {{element_2}}
|
||||
- {{element_3}}
|
||||
|
||||
|
||||
**Interaction Notes:** {{interaction_notes}}
|
||||
|
||||
|
||||
**Design File Reference:** {{specific_frame_link}}
|
||||
|
||||
- id: component-library
|
||||
@@ -179,11 +179,11 @@ sections:
|
||||
title: "{{component_name}}"
|
||||
template: |
|
||||
**Purpose:** {{component_purpose}}
|
||||
|
||||
|
||||
**Variants:** {{component_variants}}
|
||||
|
||||
|
||||
**States:** {{component_states}}
|
||||
|
||||
|
||||
**Usage Guidelines:** {{usage_guidelines}}
|
||||
|
||||
- id: branding-style
|
||||
@@ -229,13 +229,13 @@ sections:
|
||||
title: Iconography
|
||||
template: |
|
||||
**Icon Library:** {{icon_library}}
|
||||
|
||||
|
||||
**Usage Guidelines:** {{icon_guidelines}}
|
||||
- id: spacing-layout
|
||||
title: Spacing & Layout
|
||||
template: |
|
||||
**Grid System:** {{grid_system}}
|
||||
|
||||
|
||||
**Spacing Scale:** {{spacing_scale}}
|
||||
|
||||
- id: accessibility
|
||||
@@ -253,12 +253,12 @@ sections:
|
||||
- Color contrast ratios: {{contrast_requirements}}
|
||||
- Focus indicators: {{focus_requirements}}
|
||||
- Text sizing: {{text_requirements}}
|
||||
|
||||
|
||||
**Interaction:**
|
||||
- Keyboard navigation: {{keyboard_requirements}}
|
||||
- Screen reader support: {{screen_reader_requirements}}
|
||||
- Touch targets: {{touch_requirements}}
|
||||
|
||||
|
||||
**Content:**
|
||||
- Alternative text: {{alt_text_requirements}}
|
||||
- Heading structure: {{heading_requirements}}
|
||||
@@ -285,11 +285,11 @@ sections:
|
||||
title: Adaptation Patterns
|
||||
template: |
|
||||
**Layout Changes:** {{layout_adaptations}}
|
||||
|
||||
|
||||
**Navigation Changes:** {{nav_adaptations}}
|
||||
|
||||
|
||||
**Content Priority:** {{content_adaptations}}
|
||||
|
||||
|
||||
**Interaction Changes:** {{interaction_adaptations}}
|
||||
|
||||
- id: animation
|
||||
@@ -323,7 +323,7 @@ sections:
|
||||
title: Next Steps
|
||||
instruction: |
|
||||
After completing the UI/UX specification:
|
||||
|
||||
|
||||
1. Recommend review with stakeholders
|
||||
2. Suggest creating/updating visual designs in design tool
|
||||
3. Prepare for handoff to Design Architect for frontend architecture
|
||||
@@ -346,4 +346,4 @@ sections:
|
||||
|
||||
- id: checklist-results
|
||||
title: Checklist Results
|
||||
instruction: If a UI/UX checklist exists, run it against this document and report results here.
|
||||
instruction: If a UI/UX checklist exists, run it against this document and report results here.
|
||||
|
||||
@@ -19,33 +19,33 @@ sections:
|
||||
elicit: true
|
||||
content: |
|
||||
This document outlines the complete fullstack architecture for {{project_name}}, including backend systems, frontend implementation, and their integration. It serves as the single source of truth for AI-driven development, ensuring consistency across the entire technology stack.
|
||||
|
||||
|
||||
This unified approach combines what would traditionally be separate backend and frontend architecture documents, streamlining the development process for modern fullstack applications where these concerns are increasingly intertwined.
|
||||
sections:
|
||||
- id: starter-template
|
||||
title: Starter Template or Existing Project
|
||||
instruction: |
|
||||
Before proceeding with architecture design, check if the project is based on any starter templates or existing codebases:
|
||||
|
||||
|
||||
1. Review the PRD and other documents for mentions of:
|
||||
- Fullstack starter templates (e.g., T3 Stack, MEAN/MERN starters, Django + React templates)
|
||||
- Monorepo templates (e.g., Nx, Turborepo starters)
|
||||
- Platform-specific starters (e.g., Vercel templates, AWS Amplify starters)
|
||||
- Existing projects being extended or cloned
|
||||
|
||||
|
||||
2. If starter templates or existing projects are mentioned:
|
||||
- Ask the user to provide access (links, repos, or files)
|
||||
- Analyze to understand pre-configured choices and constraints
|
||||
- Note any architectural decisions already made
|
||||
- Identify what can be modified vs what must be retained
|
||||
|
||||
|
||||
3. If no starter is mentioned but this is greenfield:
|
||||
- Suggest appropriate fullstack starters based on tech preferences
|
||||
- Consider platform-specific options (Vercel, AWS, etc.)
|
||||
- Let user decide whether to use one
|
||||
|
||||
|
||||
4. Document the decision and any constraints it imposes
|
||||
|
||||
|
||||
If none, state "N/A - Greenfield project"
|
||||
- id: changelog
|
||||
title: Change Log
|
||||
@@ -71,17 +71,17 @@ sections:
|
||||
title: Platform and Infrastructure Choice
|
||||
instruction: |
|
||||
Based on PRD requirements and technical assumptions, make a platform recommendation:
|
||||
|
||||
|
||||
1. Consider common patterns (not an exhaustive list, use your own best judgement and search the web as needed for emerging trends):
|
||||
- **Vercel + Supabase**: For rapid development with Next.js, built-in auth/storage
|
||||
- **AWS Full Stack**: For enterprise scale with Lambda, API Gateway, S3, Cognito
|
||||
- **Azure**: For .NET ecosystems or enterprise Microsoft environments
|
||||
- **Google Cloud**: For ML/AI heavy applications or Google ecosystem integration
|
||||
|
||||
|
||||
2. Present 2-3 viable options with clear pros/cons
|
||||
3. Make a recommendation with rationale
|
||||
4. Get explicit user confirmation
|
||||
|
||||
|
||||
Document the choice and key services that will be used.
|
||||
template: |
|
||||
**Platform:** {{selected_platform}}
|
||||
@@ -91,7 +91,7 @@ sections:
|
||||
title: Repository Structure
|
||||
instruction: |
|
||||
Define the repository approach based on PRD requirements and platform choice, explain your rationale or ask questions to the user if unsure:
|
||||
|
||||
|
||||
1. For modern fullstack apps, monorepo is often preferred
|
||||
2. Consider tooling (Nx, Turborepo, Lerna, npm workspaces)
|
||||
3. Define package/app boundaries
|
||||
@@ -113,7 +113,7 @@ sections:
|
||||
- Databases and storage
|
||||
- External integrations
|
||||
- CDN and caching layers
|
||||
|
||||
|
||||
Use appropriate diagram type for clarity.
|
||||
- id: architectural-patterns
|
||||
title: Architectural Patterns
|
||||
@@ -123,7 +123,7 @@ sections:
|
||||
- Frontend patterns (e.g., Component-based, State management)
|
||||
- Backend patterns (e.g., Repository, CQRS, Event-driven)
|
||||
- Integration patterns (e.g., BFF, API Gateway)
|
||||
|
||||
|
||||
For each pattern, provide recommendation and rationale.
|
||||
repeatable: true
|
||||
template: "- **{{pattern_name}}:** {{pattern_description}} - _Rationale:_ {{rationale}}"
|
||||
@@ -137,7 +137,7 @@ sections:
|
||||
title: Tech Stack
|
||||
instruction: |
|
||||
This is the DEFINITIVE technology selection for the entire project. Work with user to finalize all choices. This table is the single source of truth - all development must use these exact versions.
|
||||
|
||||
|
||||
Key areas to cover:
|
||||
- Frontend and backend languages/frameworks
|
||||
- Databases and caching
|
||||
@@ -146,7 +146,7 @@ sections:
|
||||
- Testing tools for both frontend and backend
|
||||
- Build and deployment tools
|
||||
- Monitoring and logging
|
||||
|
||||
|
||||
Upon render, elicit feedback immediately.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -156,11 +156,29 @@ sections:
|
||||
columns: [Category, Technology, Version, Purpose, Rationale]
|
||||
rows:
|
||||
- ["Frontend Language", "{{fe_language}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Frontend Framework", "{{fe_framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["UI Component Library", "{{ui_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- [
|
||||
"Frontend Framework",
|
||||
"{{fe_framework}}",
|
||||
"{{version}}",
|
||||
"{{purpose}}",
|
||||
"{{why_chosen}}",
|
||||
]
|
||||
- [
|
||||
"UI Component Library",
|
||||
"{{ui_library}}",
|
||||
"{{version}}",
|
||||
"{{purpose}}",
|
||||
"{{why_chosen}}",
|
||||
]
|
||||
- ["State Management", "{{state_mgmt}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Backend Language", "{{be_language}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Backend Framework", "{{be_framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- [
|
||||
"Backend Framework",
|
||||
"{{be_framework}}",
|
||||
"{{version}}",
|
||||
"{{purpose}}",
|
||||
"{{why_chosen}}",
|
||||
]
|
||||
- ["API Style", "{{api_style}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Database", "{{database}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
- ["Cache", "{{cache}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
|
||||
@@ -181,14 +199,14 @@ sections:
|
||||
title: Data Models
|
||||
instruction: |
|
||||
Define the core data models/entities that will be shared between frontend and backend:
|
||||
|
||||
|
||||
1. Review PRD requirements and identify key business entities
|
||||
2. For each model, explain its purpose and relationships
|
||||
3. Include key attributes and data types
|
||||
4. Show relationships between models
|
||||
5. Create TypeScript interfaces that can be shared
|
||||
6. Discuss design decisions with user
|
||||
|
||||
|
||||
Create a clear conceptual model before moving to database schema.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -197,7 +215,7 @@ sections:
|
||||
title: "{{model_name}}"
|
||||
template: |
|
||||
**Purpose:** {{model_purpose}}
|
||||
|
||||
|
||||
**Key Attributes:**
|
||||
- {{attribute_1}}: {{type_1}} - {{description_1}}
|
||||
- {{attribute_2}}: {{type_2}} - {{description_2}}
|
||||
@@ -216,7 +234,7 @@ sections:
|
||||
title: API Specification
|
||||
instruction: |
|
||||
Based on the chosen API style from Tech Stack:
|
||||
|
||||
|
||||
1. If REST API, create an OpenAPI 3.0 specification
|
||||
2. If GraphQL, provide the GraphQL schema
|
||||
3. If tRPC, show router definitions
|
||||
@@ -224,7 +242,7 @@ sections:
|
||||
5. Define request/response schemas based on data models
|
||||
6. Document authentication requirements
|
||||
7. Include example requests/responses
|
||||
|
||||
|
||||
Use appropriate format for the chosen API style. If no API (e.g., static site), skip this section.
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -259,7 +277,7 @@ sections:
|
||||
title: Components
|
||||
instruction: |
|
||||
Based on the architectural patterns, tech stack, and data models from above:
|
||||
|
||||
|
||||
1. Identify major logical components/services across the fullstack
|
||||
2. Consider both frontend and backend components
|
||||
3. Define clear boundaries and interfaces between components
|
||||
@@ -268,7 +286,7 @@ sections:
|
||||
- Key interfaces/APIs exposed
|
||||
- Dependencies on other components
|
||||
- Technology specifics based on tech stack choices
|
||||
|
||||
|
||||
5. Create component diagrams where helpful
|
||||
elicit: true
|
||||
sections:
|
||||
@@ -277,13 +295,13 @@ sections:
|
||||
title: "{{component_name}}"
|
||||
template: |
|
||||
**Responsibility:** {{component_description}}
|
||||
|
||||
|
||||
**Key Interfaces:**
|
||||
- {{interface_1}}
|
||||
- {{interface_2}}
|
||||
|
||||
|
||||
**Dependencies:** {{dependencies}}
|
||||
|
||||
|
||||
**Technology Stack:** {{component_tech_details}}
|
||||
- id: component-diagrams
|
||||
title: Component Diagrams
|
||||
@@ -300,13 +318,13 @@ sections:
|
||||
condition: Project requires external API integrations
|
||||
instruction: |
|
||||
For each external service integration:
|
||||
|
||||
|
||||
1. Identify APIs needed based on PRD requirements and component design
|
||||
2. If documentation URLs are unknown, ask user for specifics
|
||||
3. Document authentication methods and security considerations
|
||||
4. List specific endpoints that will be used
|
||||
5. Note any rate limits or usage constraints
|
||||
|
||||
|
||||
If no external APIs are needed, state this explicitly and skip to next section.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -319,10 +337,10 @@ sections:
|
||||
- **Base URL(s):** {{api_base_url}}
|
||||
- **Authentication:** {{auth_method}}
|
||||
- **Rate Limits:** {{rate_limits}}
|
||||
|
||||
|
||||
**Key Endpoints Used:**
|
||||
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
|
||||
|
||||
|
||||
**Integration Notes:** {{integration_considerations}}
|
||||
|
||||
- id: core-workflows
|
||||
@@ -331,14 +349,14 @@ sections:
|
||||
mermaid_type: sequence
|
||||
instruction: |
|
||||
Illustrate key system workflows using sequence diagrams:
|
||||
|
||||
|
||||
1. Identify critical user journeys from PRD
|
||||
2. Show component interactions including external APIs
|
||||
3. Include both frontend and backend flows
|
||||
4. Include error handling paths
|
||||
5. Document async operations
|
||||
6. Create both high-level and detailed diagrams as needed
|
||||
|
||||
|
||||
Focus on workflows that clarify architecture decisions or complex interactions.
|
||||
elicit: true
|
||||
|
||||
@@ -346,13 +364,13 @@ sections:
|
||||
title: Database Schema
|
||||
instruction: |
|
||||
Transform the conceptual data models into concrete database schemas:
|
||||
|
||||
|
||||
1. Use the database type(s) selected in Tech Stack
|
||||
2. Create schema definitions using appropriate notation
|
||||
3. Include indexes, constraints, and relationships
|
||||
4. Consider performance and scalability
|
||||
5. For NoSQL, show document structures
|
||||
|
||||
|
||||
Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.)
|
||||
elicit: true
|
||||
|
||||
@@ -488,60 +506,60 @@ sections:
|
||||
type: code
|
||||
language: plaintext
|
||||
examples:
|
||||
- |
|
||||
{{project-name}}/
|
||||
├── .github/ # CI/CD workflows
|
||||
│ └── workflows/
|
||||
│ ├── ci.yaml
|
||||
│ └── deploy.yaml
|
||||
├── apps/ # Application packages
|
||||
│ ├── web/ # Frontend application
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── components/ # UI components
|
||||
│ │ │ ├── pages/ # Page components/routes
|
||||
│ │ │ ├── hooks/ # Custom React hooks
|
||||
│ │ │ ├── services/ # API client services
|
||||
│ │ │ ├── stores/ # State management
|
||||
│ │ │ ├── styles/ # Global styles/themes
|
||||
│ │ │ └── utils/ # Frontend utilities
|
||||
│ │ ├── public/ # Static assets
|
||||
│ │ ├── tests/ # Frontend tests
|
||||
│ │ └── package.json
|
||||
│ └── api/ # Backend application
|
||||
│ ├── src/
|
||||
│ │ ├── routes/ # API routes/controllers
|
||||
│ │ ├── services/ # Business logic
|
||||
│ │ ├── models/ # Data models
|
||||
│ │ ├── middleware/ # Express/API middleware
|
||||
│ │ ├── utils/ # Backend utilities
|
||||
│ │ └── {{serverless_or_server_entry}}
|
||||
│ ├── tests/ # Backend tests
|
||||
│ └── package.json
|
||||
├── packages/ # Shared packages
|
||||
│ ├── shared/ # Shared types/utilities
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── types/ # TypeScript interfaces
|
||||
│ │ │ ├── constants/ # Shared constants
|
||||
│ │ │ └── utils/ # Shared utilities
|
||||
│ │ └── package.json
|
||||
│ ├── ui/ # Shared UI components
|
||||
│ │ ├── src/
|
||||
│ │ └── package.json
|
||||
│ └── config/ # Shared configuration
|
||||
│ ├── eslint/
|
||||
│ ├── typescript/
|
||||
│ └── jest/
|
||||
├── infrastructure/ # IaC definitions
|
||||
│ └── {{iac_structure}}
|
||||
├── scripts/ # Build/deploy scripts
|
||||
├── docs/ # Documentation
|
||||
│ ├── prd.md
|
||||
│ ├── front-end-spec.md
|
||||
│ └── fullstack-architecture.md
|
||||
├── .env.example # Environment template
|
||||
├── package.json # Root package.json
|
||||
├── {{monorepo_config}} # Monorepo configuration
|
||||
└── README.md
|
||||
- |
|
||||
{{project-name}}/
|
||||
├── .github/ # CI/CD workflows
|
||||
│ └── workflows/
|
||||
│ ├── ci.yaml
|
||||
│ └── deploy.yaml
|
||||
├── apps/ # Application packages
|
||||
│ ├── web/ # Frontend application
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── components/ # UI components
|
||||
│ │ │ ├── pages/ # Page components/routes
|
||||
│ │ │ ├── hooks/ # Custom React hooks
|
||||
│ │ │ ├── services/ # API client services
|
||||
│ │ │ ├── stores/ # State management
|
||||
│ │ │ ├── styles/ # Global styles/themes
|
||||
│ │ │ └── utils/ # Frontend utilities
|
||||
│ │ ├── public/ # Static assets
|
||||
│ │ ├── tests/ # Frontend tests
|
||||
│ │ └── package.json
|
||||
│ └── api/ # Backend application
|
||||
│ ├── src/
|
||||
│ │ ├── routes/ # API routes/controllers
|
||||
│ │ ├── services/ # Business logic
|
||||
│ │ ├── models/ # Data models
|
||||
│ │ ├── middleware/ # Express/API middleware
|
||||
│ │ ├── utils/ # Backend utilities
|
||||
│ │ └── {{serverless_or_server_entry}}
|
||||
│ ├── tests/ # Backend tests
|
||||
│ └── package.json
|
||||
├── packages/ # Shared packages
|
||||
│ ├── shared/ # Shared types/utilities
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── types/ # TypeScript interfaces
|
||||
│ │ │ ├── constants/ # Shared constants
|
||||
│ │ │ └── utils/ # Shared utilities
|
||||
│ │ └── package.json
|
||||
│ ├── ui/ # Shared UI components
|
||||
│ │ ├── src/
|
||||
│ │ └── package.json
|
||||
│ └── config/ # Shared configuration
|
||||
│ ├── eslint/
|
||||
│ ├── typescript/
|
||||
│ └── jest/
|
||||
├── infrastructure/ # IaC definitions
|
||||
│ └── {{iac_structure}}
|
||||
├── scripts/ # Build/deploy scripts
|
||||
├── docs/ # Documentation
|
||||
│ ├── prd.md
|
||||
│ ├── front-end-spec.md
|
||||
│ └── fullstack-architecture.md
|
||||
├── .env.example # Environment template
|
||||
├── package.json # Root package.json
|
||||
├── {{monorepo_config}} # Monorepo configuration
|
||||
└── README.md
|
||||
|
||||
- id: development-workflow
|
||||
title: Development Workflow
|
||||
@@ -568,13 +586,13 @@ sections:
|
||||
template: |
|
||||
# Start all services
|
||||
{{start_all_command}}
|
||||
|
||||
|
||||
# Start frontend only
|
||||
{{start_frontend_command}}
|
||||
|
||||
|
||||
# Start backend only
|
||||
{{start_backend_command}}
|
||||
|
||||
|
||||
# Run tests
|
||||
{{test_commands}}
|
||||
- id: environment-config
|
||||
@@ -587,10 +605,10 @@ sections:
|
||||
template: |
|
||||
# Frontend (.env.local)
|
||||
{{frontend_env_vars}}
|
||||
|
||||
|
||||
# Backend (.env)
|
||||
{{backend_env_vars}}
|
||||
|
||||
|
||||
# Shared
|
||||
{{shared_env_vars}}
|
||||
|
||||
@@ -607,7 +625,7 @@ sections:
|
||||
- **Build Command:** {{frontend_build_command}}
|
||||
- **Output Directory:** {{frontend_output_dir}}
|
||||
- **CDN/Edge:** {{cdn_strategy}}
|
||||
|
||||
|
||||
**Backend Deployment:**
|
||||
- **Platform:** {{backend_deploy_platform}}
|
||||
- **Build Command:** {{backend_build_command}}
|
||||
@@ -638,12 +656,12 @@ sections:
|
||||
- CSP Headers: {{csp_policy}}
|
||||
- XSS Prevention: {{xss_strategy}}
|
||||
- Secure Storage: {{storage_strategy}}
|
||||
|
||||
|
||||
**Backend Security:**
|
||||
- Input Validation: {{validation_approach}}
|
||||
- Rate Limiting: {{rate_limit_config}}
|
||||
- CORS Policy: {{cors_config}}
|
||||
|
||||
|
||||
**Authentication Security:**
|
||||
- Token Storage: {{token_strategy}}
|
||||
- Session Management: {{session_approach}}
|
||||
@@ -655,7 +673,7 @@ sections:
|
||||
- Bundle Size Target: {{bundle_size}}
|
||||
- Loading Strategy: {{loading_approach}}
|
||||
- Caching Strategy: {{fe_cache_strategy}}
|
||||
|
||||
|
||||
**Backend Performance:**
|
||||
- Response Time Target: {{response_target}}
|
||||
- Database Optimization: {{db_optimization}}
|
||||
@@ -671,10 +689,10 @@ sections:
|
||||
type: code
|
||||
language: text
|
||||
template: |
|
||||
E2E Tests
|
||||
/ \
|
||||
Integration Tests
|
||||
/ \
|
||||
E2E Tests
|
||||
/ \
|
||||
Integration Tests
|
||||
/ \
|
||||
Frontend Unit Backend Unit
|
||||
- id: test-organization
|
||||
title: Test Organization
|
||||
@@ -793,7 +811,7 @@ sections:
|
||||
- JavaScript errors
|
||||
- API response times
|
||||
- User interactions
|
||||
|
||||
|
||||
**Backend Metrics:**
|
||||
- Request rate
|
||||
- Error rate
|
||||
@@ -802,4 +820,4 @@ sections:
|
||||
|
||||
- id: checklist-results
|
||||
title: Checklist Results Report
|
||||
instruction: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the architect-checklist and populate results here.
|
||||
instruction: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the architect-checklist and populate results here.
|
||||
|
||||
@@ -130,7 +130,7 @@ sections:
|
||||
instruction: Map the end-to-end customer experience for primary segments
|
||||
template: |
|
||||
For primary customer segment:
|
||||
|
||||
|
||||
1. **Awareness:** {{discovery_process}}
|
||||
2. **Consideration:** {{evaluation_criteria}}
|
||||
3. **Purchase:** {{decision_triggers}}
|
||||
@@ -249,4 +249,4 @@ sections:
|
||||
instruction: Include any complex calculations or models
|
||||
- id: additional-analysis
|
||||
title: C. Additional Analysis
|
||||
instruction: Any supplementary analysis not included in main body
|
||||
instruction: Any supplementary analysis not included in main body
|
||||
|
||||
@@ -56,7 +56,7 @@ sections:
|
||||
condition: PRD has UX/UI requirements
|
||||
instruction: |
|
||||
Capture high-level UI/UX vision to guide Design Architect and to inform story creation. Steps:
|
||||
|
||||
|
||||
1. Pre-fill all subsections with educated guesses based on project context
|
||||
2. Present the complete rendered section to user
|
||||
3. Clearly let the user know where assumptions were made
|
||||
@@ -98,7 +98,7 @@ sections:
|
||||
title: Technical Assumptions
|
||||
instruction: |
|
||||
Gather technical decisions that will guide the Architect. Steps:
|
||||
|
||||
|
||||
1. Check if {root}/data/technical-preferences.yaml or an attached technical-preferences file exists - use it to pre-populate choices
|
||||
2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
|
||||
3. For unknowns, offer guidance based on project goals and MVP scope
|
||||
@@ -126,9 +126,9 @@ sections:
|
||||
title: Epic List
|
||||
instruction: |
|
||||
Present a high-level list of all epics for user approval. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
|
||||
|
||||
|
||||
CRITICAL: Epics MUST be logically sequential following agile best practices:
|
||||
|
||||
|
||||
- Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
|
||||
- Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page - remember this when we produce the stories for the first epic!
|
||||
- Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
|
||||
@@ -147,11 +147,11 @@ sections:
|
||||
repeatable: true
|
||||
instruction: |
|
||||
After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit.
|
||||
|
||||
|
||||
For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
|
||||
|
||||
|
||||
CRITICAL STORY SEQUENCING REQUIREMENTS:
|
||||
|
||||
|
||||
- Stories within each epic MUST be logically sequential
|
||||
- Each story should be a "vertical slice" delivering complete functionality aside from early enabler stories for project foundation
|
||||
- No story should depend on work from a later story or epic
|
||||
@@ -179,7 +179,7 @@ sections:
|
||||
repeatable: true
|
||||
instruction: |
|
||||
Define clear, comprehensive, and testable acceptance criteria that:
|
||||
|
||||
|
||||
- Precisely define what "done" means from a functional perspective
|
||||
- Are unambiguous and serve as basis for verification
|
||||
- Include any critical non-functional requirements from the PRD
|
||||
@@ -199,4 +199,4 @@ sections:
|
||||
instruction: This section will contain the prompt for the UX Expert, keep it short and to the point to initiate create architecture mode using this document as input.
|
||||
- id: architect-prompt
|
||||
title: Architect Prompt
|
||||
instruction: This section will contain the prompt for the Architect, keep it short and to the point to initiate create architecture mode using this document as input.
|
||||
instruction: This section will contain the prompt for the Architect, keep it short and to the point to initiate create architecture mode using this document as input.
|
||||
|
||||
@@ -28,12 +28,12 @@ sections:
|
||||
- id: introduction
|
||||
instruction: |
|
||||
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development.
|
||||
|
||||
|
||||
Start by asking the user which mode they prefer:
|
||||
|
||||
|
||||
1. **Interactive Mode** - Work through each section collaboratively
|
||||
2. **YOLO Mode** - Generate complete draft for review and refinement
|
||||
|
||||
|
||||
Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
|
||||
|
||||
- id: executive-summary
|
||||
@@ -218,4 +218,4 @@ sections:
|
||||
- id: pm-handoff
|
||||
title: PM Handoff
|
||||
content: |
|
||||
This Project Brief provides the full context for {{project_name}}. Please start in 'PRD Generation Mode', review the brief thoroughly to work with the user to create the PRD section by section as the template indicates, asking for any necessary clarification or suggesting improvements.
|
||||
This Project Brief provides the full context for {{project_name}}. Please start in 'PRD Generation Mode', review the brief thoroughly to work with the user to create the PRD section by section as the template indicates, asking for any necessary clarification or suggesting improvements.
|
||||
|
||||
@@ -11,8 +11,8 @@ template:
|
||||
schema: 1
|
||||
story: "{{epic_num}}.{{story_num}}"
|
||||
story_title: "{{story_title}}"
|
||||
gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
|
||||
status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision
|
||||
gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
|
||||
status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision
|
||||
reviewer: "Quinn (Test Architect)"
|
||||
updated: "{{iso_timestamp}}"
|
||||
|
||||
@@ -41,7 +41,7 @@ examples:
|
||||
severity: medium
|
||||
finding: "Missing integration tests for auth flow"
|
||||
suggested_action: "Add test coverage for critical paths"
|
||||
|
||||
|
||||
when_waived: |
|
||||
waiver:
|
||||
active: true
|
||||
@@ -55,7 +55,7 @@ optional_fields_examples:
|
||||
quality_and_expiry: |
|
||||
quality_score: 75 # 0-100 (optional scoring)
|
||||
expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
|
||||
|
||||
|
||||
evidence: |
|
||||
evidence:
|
||||
tests_reviewed: 15
|
||||
@@ -63,14 +63,14 @@ optional_fields_examples:
|
||||
trace:
|
||||
ac_covered: [1, 2, 3] # AC numbers with test coverage
|
||||
ac_gaps: [4] # AC numbers lacking coverage
|
||||
|
||||
|
||||
nfr_validation: |
|
||||
nfr_validation:
|
||||
security: { status: CONCERNS, notes: "Rate limiting missing" }
|
||||
performance: { status: PASS, notes: "" }
|
||||
reliability: { status: PASS, notes: "" }
|
||||
maintainability: { status: PASS, notes: "" }
|
||||
|
||||
|
||||
history: |
|
||||
history: # Append-only audit trail
|
||||
- at: "2025-01-12T10:00:00Z"
|
||||
@@ -79,7 +79,7 @@ optional_fields_examples:
|
||||
- at: "2025-01-12T15:00:00Z"
|
||||
gate: CONCERNS
|
||||
note: "Tests added but rate limiting still missing"
|
||||
|
||||
|
||||
risk_summary: |
|
||||
risk_summary: # From risk-profile task
|
||||
totals:
|
||||
@@ -91,7 +91,7 @@ optional_fields_examples:
|
||||
recommendations:
|
||||
must_fix: []
|
||||
monitor: []
|
||||
|
||||
|
||||
recommendations: |
|
||||
recommendations:
|
||||
immediate: # Must fix before production
|
||||
@@ -99,4 +99,4 @@ optional_fields_examples:
|
||||
refs: ["api/auth/login.ts:42-68"]
|
||||
future: # Can be addressed later
|
||||
- action: "Consider caching for better performance"
|
||||
refs: ["services/data.service.ts"]
|
||||
refs: ["services/data.service.ts"]
|
||||
|
||||
@@ -12,7 +12,7 @@ workflow:
|
||||
elicitation: advanced-elicitation
|
||||
|
||||
agent_config:
|
||||
editable_sections:
|
||||
editable_sections:
|
||||
- Status
|
||||
- Story
|
||||
- Acceptance Criteria
|
||||
@@ -29,7 +29,7 @@ sections:
|
||||
instruction: Select the current status of the story
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: story
|
||||
title: Story
|
||||
type: template-text
|
||||
@@ -41,7 +41,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: acceptance-criteria
|
||||
title: Acceptance Criteria
|
||||
type: numbered-list
|
||||
@@ -49,7 +49,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: tasks-subtasks
|
||||
title: Tasks / Subtasks
|
||||
type: bullet-list
|
||||
@@ -66,7 +66,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: dev-notes
|
||||
title: Dev Notes
|
||||
instruction: |
|
||||
@@ -90,7 +90,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: change-log
|
||||
title: Change Log
|
||||
type: table
|
||||
@@ -98,7 +98,7 @@ sections:
|
||||
instruction: Track changes made to this story document
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent, qa-agent]
|
||||
|
||||
|
||||
- id: dev-agent-record
|
||||
title: Dev Agent Record
|
||||
instruction: This section is populated by the development agent during implementation
|
||||
@@ -111,27 +111,27 @@ sections:
|
||||
instruction: Record the specific AI agent model and version used for development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: debug-log-references
|
||||
title: Debug Log References
|
||||
instruction: Reference any debug logs or traces generated during development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: completion-notes
|
||||
title: Completion Notes List
|
||||
instruction: Notes about the completion of tasks and any issues encountered
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: file-list
|
||||
title: File List
|
||||
instruction: List all files created, modified, or affected during story implementation
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: qa-results
|
||||
title: QA Results
|
||||
instruction: Results from QA Agent QA review of the completed story implementation
|
||||
owner: qa-agent
|
||||
editors: [qa-agent]
|
||||
editors: [qa-agent]
|
||||
|
||||
@@ -20,7 +20,7 @@ workflow:
|
||||
- Single story (< 4 hours) → Use brownfield-create-story task
|
||||
- Small feature (1-3 stories) → Use brownfield-create-epic task
|
||||
- Major enhancement (multiple epics) → Continue with full workflow
|
||||
|
||||
|
||||
Ask user: "Can you describe the enhancement scope? Is this a small fix, a feature addition, or a major enhancement requiring architectural changes?"
|
||||
|
||||
- step: routing_decision
|
||||
@@ -181,7 +181,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Project development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
@@ -265,33 +265,33 @@ workflow:
|
||||
{{if single_story}}: Proceeding with brownfield-create-story task for immediate implementation.
|
||||
{{if small_feature}}: Creating focused epic with brownfield-create-epic task.
|
||||
{{if major_enhancement}}: Continuing with comprehensive planning workflow.
|
||||
|
||||
|
||||
documentation_assessment: |
|
||||
Documentation assessment complete:
|
||||
{{if adequate}}: Existing documentation is sufficient. Proceeding directly to PRD creation.
|
||||
{{if inadequate}}: Running document-project to capture current system state before PRD.
|
||||
|
||||
|
||||
document_project_to_pm: |
|
||||
Project analysis complete. Key findings documented in:
|
||||
- {{document_list}}
|
||||
Use these findings to inform PRD creation and avoid re-analyzing the same aspects.
|
||||
|
||||
|
||||
pm_to_architect_decision: |
|
||||
PRD complete and saved as docs/prd.md.
|
||||
Architectural changes identified: {{yes/no}}
|
||||
{{if yes}}: Proceeding to create architecture document for: {{specific_changes}}
|
||||
{{if no}}: No architectural changes needed. Proceeding to validation.
|
||||
|
||||
|
||||
architect_to_po: "Architecture complete. Save it as docs/architecture.md. Please validate all artifacts for integration safety."
|
||||
|
||||
|
||||
po_to_sm: |
|
||||
All artifacts validated.
|
||||
Documentation type available: {{sharded_prd / brownfield_docs}}
|
||||
{{if sharded}}: Use standard create-next-story task.
|
||||
{{if brownfield}}: Use create-brownfield-story task to handle varied documentation formats.
|
||||
|
||||
|
||||
sm_story_creation: |
|
||||
Creating story from {{documentation_type}}.
|
||||
{{if missing_context}}: May need to gather additional context from user during story creation.
|
||||
|
||||
|
||||
complete: "All planning artifacts validated and development can begin. Stories will be created based on available documentation format."
|
||||
|
||||
@@ -127,7 +127,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Project development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
|
||||
@@ -134,7 +134,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Project development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
|
||||
@@ -159,7 +159,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Project development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
|
||||
@@ -135,7 +135,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Service development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
|
||||
@@ -154,7 +154,7 @@ workflow:
|
||||
notes: |
|
||||
All stories implemented and reviewed!
|
||||
Project development phase complete.
|
||||
|
||||
|
||||
Reference: {root}/data/bmad-kb.md#IDE Development Workflow
|
||||
|
||||
flow_diagram: |
|
||||
|
||||
@@ -14,7 +14,7 @@ template:
|
||||
output:
|
||||
format: markdown
|
||||
filename: default-path/to/{{filename}}.md
|
||||
title: "{{variable}} Document Title"
|
||||
title: '{{variable}} Document Title'
|
||||
|
||||
workflow:
|
||||
mode: interactive
|
||||
@@ -108,8 +108,8 @@ sections:
|
||||
Use `{{variable_name}}` in titles, templates, and content:
|
||||
|
||||
```yaml
|
||||
title: "Epic {{epic_number}} {{epic_title}}"
|
||||
template: "As a {{user_type}}, I want {{action}}, so that {{benefit}}."
|
||||
title: 'Epic {{epic_number}} {{epic_title}}'
|
||||
template: 'As a {{user_type}}, I want {{action}}, so that {{benefit}}.'
|
||||
```
|
||||
|
||||
### Conditional Sections
|
||||
@@ -212,7 +212,7 @@ choices:
|
||||
- id: criteria
|
||||
title: Acceptance Criteria
|
||||
type: numbered-list
|
||||
item_template: "{{criterion_number}}: {{criteria}}"
|
||||
item_template: '{{criterion_number}}: {{criteria}}'
|
||||
repeatable: true
|
||||
```
|
||||
|
||||
@@ -220,7 +220,7 @@ choices:
|
||||
|
||||
````yaml
|
||||
examples:
|
||||
- "FR6: The system must authenticate users within 2 seconds"
|
||||
- 'FR6: The system must authenticate users within 2 seconds'
|
||||
- |
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
||||
43
dist/agents/analyst.txt
vendored
43
dist/agents/analyst.txt
vendored
@@ -106,7 +106,7 @@ dependencies:
|
||||
==================== START: .bmad-core/tasks/facilitate-brainstorming-session.md ====================
|
||||
---
|
||||
docOutputLocation: docs/brainstorming-session-results.md
|
||||
template: ".bmad-core/templates/brainstorming-output-tmpl.yaml"
|
||||
template: '.bmad-core/templates/brainstorming-output-tmpl.yaml'
|
||||
---
|
||||
|
||||
# Facilitate Brainstorming Session Task
|
||||
@@ -1124,12 +1124,12 @@ sections:
|
||||
- id: introduction
|
||||
instruction: |
|
||||
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development.
|
||||
|
||||
|
||||
Start by asking the user which mode they prefer:
|
||||
|
||||
|
||||
1. **Interactive Mode** - Work through each section collaboratively
|
||||
2. **YOLO Mode** - Generate complete draft for review and refinement
|
||||
|
||||
|
||||
Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
|
||||
|
||||
- id: executive-summary
|
||||
@@ -1450,7 +1450,7 @@ sections:
|
||||
instruction: Map the end-to-end customer experience for primary segments
|
||||
template: |
|
||||
For primary customer segment:
|
||||
|
||||
|
||||
1. **Awareness:** {{discovery_process}}
|
||||
2. **Consideration:** {{evaluation_criteria}}
|
||||
3. **Purchase:** {{decision_triggers}}
|
||||
@@ -1651,7 +1651,7 @@ sections:
|
||||
title: Competitor Prioritization Matrix
|
||||
instruction: |
|
||||
Help categorize competitors by market share and strategic threat level
|
||||
|
||||
|
||||
Create a 2x2 matrix:
|
||||
- Priority 1 (Core Competitors): High Market Share + High Threat
|
||||
- Priority 2 (Emerging Threats): Low Market Share + High Threat
|
||||
@@ -1716,7 +1716,14 @@ sections:
|
||||
title: Feature Comparison Matrix
|
||||
instruction: Create a detailed comparison table of key features across competitors
|
||||
type: table
|
||||
columns: ["Feature Category", "{{your_company}}", "{{competitor_1}}", "{{competitor_2}}", "{{competitor_3}}"]
|
||||
columns:
|
||||
[
|
||||
"Feature Category",
|
||||
"{{your_company}}",
|
||||
"{{competitor_1}}",
|
||||
"{{competitor_2}}",
|
||||
"{{competitor_3}}",
|
||||
]
|
||||
rows:
|
||||
- category: "Core Functionality"
|
||||
items:
|
||||
@@ -1728,7 +1735,13 @@ sections:
|
||||
- ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"]
|
||||
- category: "Integration & Ecosystem"
|
||||
items:
|
||||
- ["API Availability", "{{availability}}", "{{availability}}", "{{availability}}", "{{availability}}"]
|
||||
- [
|
||||
"API Availability",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
"{{availability}}",
|
||||
]
|
||||
- ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"]
|
||||
- category: "Pricing & Plans"
|
||||
items:
|
||||
@@ -1755,7 +1768,7 @@ sections:
|
||||
title: Positioning Map
|
||||
instruction: |
|
||||
Describe competitor positions on key dimensions
|
||||
|
||||
|
||||
Create a positioning description using 2 key dimensions relevant to the market, such as:
|
||||
- Price vs. Features
|
||||
- Ease of Use vs. Power
|
||||
@@ -1790,7 +1803,7 @@ sections:
|
||||
title: Blue Ocean Opportunities
|
||||
instruction: |
|
||||
Identify uncontested market spaces
|
||||
|
||||
|
||||
List opportunities to create new market space:
|
||||
- Underserved segments
|
||||
- Unaddressed use cases
|
||||
@@ -1894,11 +1907,11 @@ sections:
|
||||
- id: summary-details
|
||||
template: |
|
||||
**Topic:** {{session_topic}}
|
||||
|
||||
|
||||
**Session Goals:** {{stated_goals}}
|
||||
|
||||
|
||||
**Techniques Used:** {{techniques_list}}
|
||||
|
||||
|
||||
**Total Ideas Generated:** {{total_ideas}}
|
||||
- id: key-themes
|
||||
title: "Key Themes Identified:"
|
||||
@@ -2023,7 +2036,7 @@ sections:
|
||||
- id: footer
|
||||
content: |
|
||||
---
|
||||
|
||||
|
||||
*Session facilitated using the BMAD-METHOD brainstorming framework*
|
||||
==================== END: .bmad-core/templates/brainstorming-output-tmpl.yaml ====================
|
||||
|
||||
@@ -2328,7 +2341,7 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
|
||||
|
||||
- **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Cursor**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Trae**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Roo Code**: Select mode from mode selector (e.g., `bmad-master`)
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
||||
|
||||
410
dist/agents/architect.txt
vendored
410
dist/agents/architect.txt
vendored
File diff suppressed because it is too large
Load Diff
553
dist/agents/bmad-master.txt
vendored
553
dist/agents/bmad-master.txt
vendored
File diff suppressed because it is too large
Load Diff
2
dist/agents/bmad-orchestrator.txt
vendored
2
dist/agents/bmad-orchestrator.txt
vendored
@@ -775,7 +775,7 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
|
||||
|
||||
- **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Cursor**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Windsurf**: `/agent-name` (e.g., `/bmad-master`)
|
||||
- **Trae**: `@agent-name` (e.g., `@bmad-master`)
|
||||
- **Roo Code**: Select mode from mode selector (e.g., `bmad-master`)
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
||||
|
||||
40
dist/agents/pm.txt
vendored
40
dist/agents/pm.txt
vendored
@@ -1210,7 +1210,7 @@ sections:
|
||||
condition: PRD has UX/UI requirements
|
||||
instruction: |
|
||||
Capture high-level UI/UX vision to guide Design Architect and to inform story creation. Steps:
|
||||
|
||||
|
||||
1. Pre-fill all subsections with educated guesses based on project context
|
||||
2. Present the complete rendered section to user
|
||||
3. Clearly let the user know where assumptions were made
|
||||
@@ -1252,7 +1252,7 @@ sections:
|
||||
title: Technical Assumptions
|
||||
instruction: |
|
||||
Gather technical decisions that will guide the Architect. Steps:
|
||||
|
||||
|
||||
1. Check if .bmad-core/data/technical-preferences.yaml or an attached technical-preferences file exists - use it to pre-populate choices
|
||||
2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
|
||||
3. For unknowns, offer guidance based on project goals and MVP scope
|
||||
@@ -1280,9 +1280,9 @@ sections:
|
||||
title: Epic List
|
||||
instruction: |
|
||||
Present a high-level list of all epics for user approval. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
|
||||
|
||||
|
||||
CRITICAL: Epics MUST be logically sequential following agile best practices:
|
||||
|
||||
|
||||
- Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
|
||||
- Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page - remember this when we produce the stories for the first epic!
|
||||
- Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
|
||||
@@ -1301,11 +1301,11 @@ sections:
|
||||
repeatable: true
|
||||
instruction: |
|
||||
After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit.
|
||||
|
||||
|
||||
For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
|
||||
|
||||
|
||||
CRITICAL STORY SEQUENCING REQUIREMENTS:
|
||||
|
||||
|
||||
- Stories within each epic MUST be logically sequential
|
||||
- Each story should be a "vertical slice" delivering complete functionality aside from early enabler stories for project foundation
|
||||
- No story should depend on work from a later story or epic
|
||||
@@ -1333,7 +1333,7 @@ sections:
|
||||
repeatable: true
|
||||
instruction: |
|
||||
Define clear, comprehensive, and testable acceptance criteria that:
|
||||
|
||||
|
||||
- Precisely define what "done" means from a functional perspective
|
||||
- Are unambiguous and serve as basis for verification
|
||||
- Include any critical non-functional requirements from the PRD
|
||||
@@ -1375,19 +1375,19 @@ sections:
|
||||
title: Intro Project Analysis and Context
|
||||
instruction: |
|
||||
IMPORTANT - SCOPE ASSESSMENT REQUIRED:
|
||||
|
||||
|
||||
This PRD is for SIGNIFICANT enhancements to existing projects that require comprehensive planning and multiple stories. Before proceeding:
|
||||
|
||||
|
||||
1. **Assess Enhancement Complexity**: If this is a simple feature addition or bug fix that could be completed in 1-2 focused development sessions, STOP and recommend: "For simpler changes, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead. This full PRD process is designed for substantial enhancements that require architectural planning and multiple coordinated stories."
|
||||
|
||||
|
||||
2. **Project Context**: Determine if we're working in an IDE with the project already loaded or if the user needs to provide project information. If project files are available, analyze existing documentation in the docs folder. If insufficient documentation exists, recommend running the document-project task first.
|
||||
|
||||
|
||||
3. **Deep Assessment Requirement**: You MUST thoroughly analyze the existing project structure, patterns, and constraints before making ANY suggestions. Every recommendation must be grounded in actual project analysis, not assumptions.
|
||||
|
||||
|
||||
Gather comprehensive information about the existing project. This section must be completed before proceeding with requirements.
|
||||
|
||||
|
||||
CRITICAL: Throughout this analysis, explicitly confirm your understanding with the user. For every assumption you make about the existing project, ask: "Based on my analysis, I understand that [assumption]. Is this correct?"
|
||||
|
||||
|
||||
Do not proceed with any recommendations until the user has validated your understanding of the existing system.
|
||||
sections:
|
||||
- id: existing-project-overview
|
||||
@@ -1413,7 +1413,7 @@ sections:
|
||||
- Note: "Document-project analysis available - using existing technical documentation"
|
||||
- List key documents created by document-project
|
||||
- Skip the missing documentation check below
|
||||
|
||||
|
||||
Otherwise, check for existing documentation:
|
||||
sections:
|
||||
- id: available-docs
|
||||
@@ -1537,7 +1537,7 @@ sections:
|
||||
If document-project output available:
|
||||
- Extract from "Actual Tech Stack" table in High Level Architecture section
|
||||
- Include version numbers and any noted constraints
|
||||
|
||||
|
||||
Otherwise, document the current technology stack:
|
||||
template: |
|
||||
**Languages**: {{languages}}
|
||||
@@ -1576,7 +1576,7 @@ sections:
|
||||
- Reference "Technical Debt and Known Issues" section
|
||||
- Include "Workarounds and Gotchas" that might impact enhancement
|
||||
- Note any identified constraints from "Critical Technical Debt"
|
||||
|
||||
|
||||
Build risk assessment incorporating existing known issues:
|
||||
template: |
|
||||
**Technical Risks**: {{technical_risks}}
|
||||
@@ -1599,7 +1599,7 @@ sections:
|
||||
title: "Epic 1: {{enhancement_title}}"
|
||||
instruction: |
|
||||
Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality
|
||||
|
||||
|
||||
CRITICAL STORY SEQUENCING FOR BROWNFIELD:
|
||||
- Stories must ensure existing functionality remains intact
|
||||
- Each story should include verification that existing features still work
|
||||
@@ -1612,7 +1612,7 @@ sections:
|
||||
- Each story must deliver value while maintaining system integrity
|
||||
template: |
|
||||
**Epic Goal**: {{epic_goal}}
|
||||
|
||||
|
||||
**Integration Requirements**: {{integration_requirements}}
|
||||
sections:
|
||||
- id: story
|
||||
|
||||
22
dist/agents/po.txt
vendored
22
dist/agents/po.txt
vendored
@@ -600,7 +600,7 @@ workflow:
|
||||
elicitation: advanced-elicitation
|
||||
|
||||
agent_config:
|
||||
editable_sections:
|
||||
editable_sections:
|
||||
- Status
|
||||
- Story
|
||||
- Acceptance Criteria
|
||||
@@ -617,7 +617,7 @@ sections:
|
||||
instruction: Select the current status of the story
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: story
|
||||
title: Story
|
||||
type: template-text
|
||||
@@ -629,7 +629,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: acceptance-criteria
|
||||
title: Acceptance Criteria
|
||||
type: numbered-list
|
||||
@@ -637,7 +637,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: tasks-subtasks
|
||||
title: Tasks / Subtasks
|
||||
type: bullet-list
|
||||
@@ -654,7 +654,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: dev-notes
|
||||
title: Dev Notes
|
||||
instruction: |
|
||||
@@ -678,7 +678,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: change-log
|
||||
title: Change Log
|
||||
type: table
|
||||
@@ -686,7 +686,7 @@ sections:
|
||||
instruction: Track changes made to this story document
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent, qa-agent]
|
||||
|
||||
|
||||
- id: dev-agent-record
|
||||
title: Dev Agent Record
|
||||
instruction: This section is populated by the development agent during implementation
|
||||
@@ -699,25 +699,25 @@ sections:
|
||||
instruction: Record the specific AI agent model and version used for development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: debug-log-references
|
||||
title: Debug Log References
|
||||
instruction: Reference any debug logs or traces generated during development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: completion-notes
|
||||
title: Completion Notes List
|
||||
instruction: Notes about the completion of tasks and any issues encountered
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: file-list
|
||||
title: File List
|
||||
instruction: List all files created, modified, or affected during story implementation
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: qa-results
|
||||
title: QA Results
|
||||
instruction: Results from QA Agent QA review of the completed story implementation
|
||||
|
||||
881
dist/agents/qa.txt
vendored
881
dist/agents/qa.txt
vendored
File diff suppressed because it is too large
Load Diff
22
dist/agents/sm.txt
vendored
22
dist/agents/sm.txt
vendored
@@ -376,7 +376,7 @@ workflow:
|
||||
elicitation: advanced-elicitation
|
||||
|
||||
agent_config:
|
||||
editable_sections:
|
||||
editable_sections:
|
||||
- Status
|
||||
- Story
|
||||
- Acceptance Criteria
|
||||
@@ -393,7 +393,7 @@ sections:
|
||||
instruction: Select the current status of the story
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: story
|
||||
title: Story
|
||||
type: template-text
|
||||
@@ -405,7 +405,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: acceptance-criteria
|
||||
title: Acceptance Criteria
|
||||
type: numbered-list
|
||||
@@ -413,7 +413,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: tasks-subtasks
|
||||
title: Tasks / Subtasks
|
||||
type: bullet-list
|
||||
@@ -430,7 +430,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent]
|
||||
|
||||
|
||||
- id: dev-notes
|
||||
title: Dev Notes
|
||||
instruction: |
|
||||
@@ -454,7 +454,7 @@ sections:
|
||||
elicit: true
|
||||
owner: scrum-master
|
||||
editors: [scrum-master]
|
||||
|
||||
|
||||
- id: change-log
|
||||
title: Change Log
|
||||
type: table
|
||||
@@ -462,7 +462,7 @@ sections:
|
||||
instruction: Track changes made to this story document
|
||||
owner: scrum-master
|
||||
editors: [scrum-master, dev-agent, qa-agent]
|
||||
|
||||
|
||||
- id: dev-agent-record
|
||||
title: Dev Agent Record
|
||||
instruction: This section is populated by the development agent during implementation
|
||||
@@ -475,25 +475,25 @@ sections:
|
||||
instruction: Record the specific AI agent model and version used for development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: debug-log-references
|
||||
title: Debug Log References
|
||||
instruction: Reference any debug logs or traces generated during development
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: completion-notes
|
||||
title: Completion Notes List
|
||||
instruction: Notes about the completion of tasks and any issues encountered
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: file-list
|
||||
title: File List
|
||||
instruction: List all files created, modified, or affected during story implementation
|
||||
owner: dev-agent
|
||||
editors: [dev-agent]
|
||||
|
||||
|
||||
- id: qa-results
|
||||
title: QA Results
|
||||
instruction: Results from QA Agent QA review of the completed story implementation
|
||||
|
||||
46
dist/agents/ux-expert.txt
vendored
46
dist/agents/ux-expert.txt
vendored
@@ -354,7 +354,7 @@ sections:
|
||||
title: Introduction
|
||||
instruction: |
|
||||
Review provided documents including Project Brief, PRD, and any user research to gather context. Focus on understanding user needs, pain points, and desired outcomes before beginning the specification.
|
||||
|
||||
|
||||
Establish the document's purpose and scope. Keep the content below but ensure project name is properly substituted.
|
||||
content: |
|
||||
This document defines the user experience goals, information architecture, user flows, and visual design specifications for {{project_name}}'s user interface. It serves as the foundation for visual design and frontend development, ensuring a cohesive and user-centered experience.
|
||||
@@ -363,7 +363,7 @@ sections:
|
||||
title: Overall UX Goals & Principles
|
||||
instruction: |
|
||||
Work with the user to establish and document the following. If not already defined, facilitate a discussion to determine:
|
||||
|
||||
|
||||
1. Target User Personas - elicit details or confirm existing ones from PRD
|
||||
2. Key Usability Goals - understand what success looks like for users
|
||||
3. Core Design Principles - establish 3-5 guiding principles
|
||||
@@ -404,7 +404,7 @@ sections:
|
||||
title: Information Architecture (IA)
|
||||
instruction: |
|
||||
Collaborate with the user to create a comprehensive information architecture:
|
||||
|
||||
|
||||
1. Build a Site Map or Screen Inventory showing all major areas
|
||||
2. Define the Navigation Structure (primary, secondary, breadcrumbs)
|
||||
3. Use Mermaid diagrams for visual representation
|
||||
@@ -434,22 +434,22 @@ sections:
|
||||
title: Navigation Structure
|
||||
template: |
|
||||
**Primary Navigation:** {{primary_nav_description}}
|
||||
|
||||
|
||||
**Secondary Navigation:** {{secondary_nav_description}}
|
||||
|
||||
|
||||
**Breadcrumb Strategy:** {{breadcrumb_strategy}}
|
||||
|
||||
- id: user-flows
|
||||
title: User Flows
|
||||
instruction: |
|
||||
For each critical user task identified in the PRD:
|
||||
|
||||
|
||||
1. Define the user's goal clearly
|
||||
2. Map out all steps including decision points
|
||||
3. Consider edge cases and error states
|
||||
4. Use Mermaid flow diagrams for clarity
|
||||
5. Link to external tools (Figma/Miro) if detailed flows exist there
|
||||
|
||||
|
||||
Create subsections for each major flow.
|
||||
elicit: true
|
||||
repeatable: true
|
||||
@@ -458,9 +458,9 @@ sections:
|
||||
title: "{{flow_name}}"
|
||||
template: |
|
||||
**User Goal:** {{flow_goal}}
|
||||
|
||||
|
||||
**Entry Points:** {{entry_points}}
|
||||
|
||||
|
||||
**Success Criteria:** {{success_criteria}}
|
||||
sections:
|
||||
- id: flow-diagram
|
||||
@@ -491,14 +491,14 @@ sections:
|
||||
title: "{{screen_name}}"
|
||||
template: |
|
||||
**Purpose:** {{screen_purpose}}
|
||||
|
||||
|
||||
**Key Elements:**
|
||||
- {{element_1}}
|
||||
- {{element_2}}
|
||||
- {{element_3}}
|
||||
|
||||
|
||||
**Interaction Notes:** {{interaction_notes}}
|
||||
|
||||
|
||||
**Design File Reference:** {{specific_frame_link}}
|
||||
|
||||
- id: component-library
|
||||
@@ -517,11 +517,11 @@ sections:
|
||||
title: "{{component_name}}"
|
||||
template: |
|
||||
**Purpose:** {{component_purpose}}
|
||||
|
||||
|
||||
**Variants:** {{component_variants}}
|
||||
|
||||
|
||||
**States:** {{component_states}}
|
||||
|
||||
|
||||
**Usage Guidelines:** {{usage_guidelines}}
|
||||
|
||||
- id: branding-style
|
||||
@@ -567,13 +567,13 @@ sections:
|
||||
title: Iconography
|
||||
template: |
|
||||
**Icon Library:** {{icon_library}}
|
||||
|
||||
|
||||
**Usage Guidelines:** {{icon_guidelines}}
|
||||
- id: spacing-layout
|
||||
title: Spacing & Layout
|
||||
template: |
|
||||
**Grid System:** {{grid_system}}
|
||||
|
||||
|
||||
**Spacing Scale:** {{spacing_scale}}
|
||||
|
||||
- id: accessibility
|
||||
@@ -591,12 +591,12 @@ sections:
|
||||
- Color contrast ratios: {{contrast_requirements}}
|
||||
- Focus indicators: {{focus_requirements}}
|
||||
- Text sizing: {{text_requirements}}
|
||||
|
||||
|
||||
**Interaction:**
|
||||
- Keyboard navigation: {{keyboard_requirements}}
|
||||
- Screen reader support: {{screen_reader_requirements}}
|
||||
- Touch targets: {{touch_requirements}}
|
||||
|
||||
|
||||
**Content:**
|
||||
- Alternative text: {{alt_text_requirements}}
|
||||
- Heading structure: {{heading_requirements}}
|
||||
@@ -623,11 +623,11 @@ sections:
|
||||
title: Adaptation Patterns
|
||||
template: |
|
||||
**Layout Changes:** {{layout_adaptations}}
|
||||
|
||||
|
||||
**Navigation Changes:** {{nav_adaptations}}
|
||||
|
||||
|
||||
**Content Priority:** {{content_adaptations}}
|
||||
|
||||
|
||||
**Interaction Changes:** {{interaction_adaptations}}
|
||||
|
||||
- id: animation
|
||||
@@ -661,7 +661,7 @@ sections:
|
||||
title: Next Steps
|
||||
instruction: |
|
||||
After completing the UI/UX specification:
|
||||
|
||||
|
||||
1. Recommend review with stakeholders
|
||||
2. Suggest creating/updating visual designs in design tool
|
||||
3. Prepare for handoff to Design Architect for frontend architecture
|
||||
|
||||
@@ -991,7 +991,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive Game Design Document that will serve as the foundation for all game development work. The GDD should be detailed enough that developers can create user stories and epics from it. Focus on gameplay systems, mechanics, and technical requirements that can be broken down into implementable features.
|
||||
|
||||
|
||||
If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
|
||||
|
||||
- id: executive-summary
|
||||
@@ -1036,7 +1036,7 @@ sections:
|
||||
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
|
||||
template: |
|
||||
**Primary Loop ({{duration}} seconds):**
|
||||
|
||||
|
||||
1. {{action_1}} ({{time_1}}s)
|
||||
2. {{action_2}} ({{time_2}}s)
|
||||
3. {{action_3}} ({{time_3}}s)
|
||||
@@ -1046,12 +1046,12 @@ sections:
|
||||
instruction: Clearly define success and failure states
|
||||
template: |
|
||||
**Victory Conditions:**
|
||||
|
||||
|
||||
- {{win_condition_1}}
|
||||
- {{win_condition_2}}
|
||||
|
||||
|
||||
**Failure States:**
|
||||
|
||||
|
||||
- {{loss_condition_1}}
|
||||
- {{loss_condition_2}}
|
||||
|
||||
@@ -1067,17 +1067,17 @@ sections:
|
||||
title: "{{mechanic_name}}"
|
||||
template: |
|
||||
**Description:** {{detailed_description}}
|
||||
|
||||
|
||||
**Player Input:** {{input_method}}
|
||||
|
||||
|
||||
**System Response:** {{game_response}}
|
||||
|
||||
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{tech_requirement_1}}
|
||||
- {{tech_requirement_2}}
|
||||
- {{performance_consideration}}
|
||||
|
||||
|
||||
**Dependencies:** {{other_mechanics_needed}}
|
||||
- id: controls
|
||||
title: Controls
|
||||
@@ -1096,9 +1096,9 @@ sections:
|
||||
title: Player Progression
|
||||
template: |
|
||||
**Progression Type:** {{linear|branching|metroidvania}}
|
||||
|
||||
|
||||
**Key Milestones:**
|
||||
|
||||
|
||||
1. **{{milestone_1}}** - {{unlock_description}}
|
||||
2. **{{milestone_2}}** - {{unlock_description}}
|
||||
3. **{{milestone_3}}** - {{unlock_description}}
|
||||
@@ -1135,9 +1135,9 @@ sections:
|
||||
**Duration:** {{target_time}}
|
||||
**Key Elements:** {{required_mechanics}}
|
||||
**Difficulty:** {{relative_difficulty}}
|
||||
|
||||
|
||||
**Structure Template:**
|
||||
|
||||
|
||||
- Introduction: {{intro_description}}
|
||||
- Challenge: {{main_challenge}}
|
||||
- Resolution: {{completion_requirement}}
|
||||
@@ -1163,13 +1163,13 @@ sections:
|
||||
title: Platform Specific
|
||||
template: |
|
||||
**Desktop:**
|
||||
|
||||
|
||||
- Resolution: {{min_resolution}} - {{max_resolution}}
|
||||
- Input: Keyboard, Mouse, Gamepad
|
||||
- Browser: Chrome 80+, Firefox 75+, Safari 13+
|
||||
|
||||
|
||||
**Mobile:**
|
||||
|
||||
|
||||
- Resolution: {{mobile_min}} - {{mobile_max}}
|
||||
- Input: Touch, Tilt (optional)
|
||||
- OS: iOS 13+, Android 8+
|
||||
@@ -1178,14 +1178,14 @@ sections:
|
||||
instruction: Define asset specifications for the art and audio teams
|
||||
template: |
|
||||
**Visual Assets:**
|
||||
|
||||
|
||||
- Art Style: {{style_description}}
|
||||
- Color Palette: {{color_specification}}
|
||||
- Animation: {{animation_requirements}}
|
||||
- UI Resolution: {{ui_specs}}
|
||||
|
||||
|
||||
**Audio Assets:**
|
||||
|
||||
|
||||
- Music Style: {{music_genre}}
|
||||
- Sound Effects: {{sfx_requirements}}
|
||||
- Voice Acting: {{voice_needs}}
|
||||
@@ -1198,7 +1198,7 @@ sections:
|
||||
title: Engine Configuration
|
||||
template: |
|
||||
**Phaser 3 Setup:**
|
||||
|
||||
|
||||
- TypeScript: Strict mode enabled
|
||||
- Physics: {{physics_system}} (Arcade/Matter)
|
||||
- Renderer: WebGL with Canvas fallback
|
||||
@@ -1207,7 +1207,7 @@ sections:
|
||||
title: Code Architecture
|
||||
template: |
|
||||
**Required Systems:**
|
||||
|
||||
|
||||
- Scene Management
|
||||
- State Management
|
||||
- Asset Loading
|
||||
@@ -1219,7 +1219,7 @@ sections:
|
||||
title: Data Management
|
||||
template: |
|
||||
**Save Data:**
|
||||
|
||||
|
||||
- Progress tracking
|
||||
- Settings persistence
|
||||
- Statistics collection
|
||||
@@ -1337,7 +1337,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
||||
|
||||
|
||||
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
||||
|
||||
- id: introduction
|
||||
@@ -1345,7 +1345,7 @@ sections:
|
||||
instruction: Establish the purpose and scope of level design for this game
|
||||
content: |
|
||||
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
||||
|
||||
|
||||
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -1392,29 +1392,29 @@ sections:
|
||||
title: "{{category_name}} Levels"
|
||||
template: |
|
||||
**Purpose:** {{gameplay_purpose}}
|
||||
|
||||
|
||||
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
||||
|
||||
|
||||
**Difficulty Range:** {{difficulty_scale}}
|
||||
|
||||
|
||||
**Key Mechanics Featured:**
|
||||
|
||||
|
||||
- {{mechanic_1}} - {{usage_description}}
|
||||
- {{mechanic_2}} - {{usage_description}}
|
||||
|
||||
|
||||
**Player Objectives:**
|
||||
|
||||
|
||||
- Primary: {{primary_objective}}
|
||||
- Secondary: {{secondary_objective}}
|
||||
- Hidden: {{secret_objective}}
|
||||
|
||||
|
||||
**Success Criteria:**
|
||||
|
||||
|
||||
- {{completion_requirement_1}}
|
||||
- {{completion_requirement_2}}
|
||||
|
||||
|
||||
**Technical Requirements:**
|
||||
|
||||
|
||||
- Maximum entities: {{entity_limit}}
|
||||
- Performance target: {{fps_target}} FPS
|
||||
- Memory budget: {{memory_limit}}MB
|
||||
@@ -1429,11 +1429,11 @@ sections:
|
||||
instruction: Based on GDD requirements, define the overall level organization
|
||||
template: |
|
||||
**Organization Type:** {{linear|hub_world|open_world}}
|
||||
|
||||
|
||||
**Total Level Count:** {{number}}
|
||||
|
||||
|
||||
**World Breakdown:**
|
||||
|
||||
|
||||
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
@@ -1468,7 +1468,7 @@ sections:
|
||||
instruction: Define how players access new levels
|
||||
template: |
|
||||
**Progression Gates:**
|
||||
|
||||
|
||||
- Linear progression: Complete previous level
|
||||
- Star requirements: {{star_count}} stars to unlock
|
||||
- Skill gates: Demonstrate {{skill_requirement}}
|
||||
@@ -1483,17 +1483,17 @@ sections:
|
||||
instruction: Define all environmental components that can be used in levels
|
||||
template: |
|
||||
**Terrain Types:**
|
||||
|
||||
|
||||
- {{terrain_1}}: {{properties_and_usage}}
|
||||
- {{terrain_2}}: {{properties_and_usage}}
|
||||
|
||||
|
||||
**Interactive Objects:**
|
||||
|
||||
|
||||
- {{object_1}}: {{behavior_and_purpose}}
|
||||
- {{object_2}}: {{behavior_and_purpose}}
|
||||
|
||||
|
||||
**Hazards and Obstacles:**
|
||||
|
||||
|
||||
- {{hazard_1}}: {{damage_and_behavior}}
|
||||
- {{hazard_2}}: {{damage_and_behavior}}
|
||||
- id: collectibles-rewards
|
||||
@@ -1501,18 +1501,18 @@ sections:
|
||||
instruction: Define all collectible items and their placement rules
|
||||
template: |
|
||||
**Collectible Types:**
|
||||
|
||||
|
||||
- {{collectible_1}}: {{value_and_purpose}}
|
||||
- {{collectible_2}}: {{value_and_purpose}}
|
||||
|
||||
|
||||
**Placement Guidelines:**
|
||||
|
||||
|
||||
- Mandatory collectibles: {{placement_rules}}
|
||||
- Optional collectibles: {{placement_rules}}
|
||||
- Secret collectibles: {{placement_rules}}
|
||||
|
||||
|
||||
**Reward Distribution:**
|
||||
|
||||
|
||||
- Easy to find: {{percentage}}%
|
||||
- Moderate challenge: {{percentage}}%
|
||||
- High skill required: {{percentage}}%
|
||||
@@ -1521,18 +1521,18 @@ sections:
|
||||
instruction: Define how enemies should be placed and balanced in levels
|
||||
template: |
|
||||
**Enemy Categories:**
|
||||
|
||||
|
||||
- {{enemy_type_1}}: {{behavior_and_usage}}
|
||||
- {{enemy_type_2}}: {{behavior_and_usage}}
|
||||
|
||||
|
||||
**Placement Principles:**
|
||||
|
||||
|
||||
- Introduction encounters: {{guideline}}
|
||||
- Standard encounters: {{guideline}}
|
||||
- Challenge encounters: {{guideline}}
|
||||
|
||||
|
||||
**Difficulty Scaling:**
|
||||
|
||||
|
||||
- Enemy count progression: {{scaling_rule}}
|
||||
- Enemy type introduction: {{pacing_rule}}
|
||||
- Encounter complexity: {{complexity_rule}}
|
||||
@@ -1545,14 +1545,14 @@ sections:
|
||||
title: Level Layout Principles
|
||||
template: |
|
||||
**Spatial Design:**
|
||||
|
||||
|
||||
- Grid size: {{grid_dimensions}}
|
||||
- Minimum path width: {{width_units}}
|
||||
- Maximum vertical distance: {{height_units}}
|
||||
- Safe zones placement: {{safety_guidelines}}
|
||||
|
||||
|
||||
**Navigation Design:**
|
||||
|
||||
|
||||
- Clear path indication: {{visual_cues}}
|
||||
- Landmark placement: {{landmark_rules}}
|
||||
- Dead end avoidance: {{dead_end_policy}}
|
||||
@@ -1562,13 +1562,13 @@ sections:
|
||||
instruction: Define how to control the rhythm and pace of gameplay within levels
|
||||
template: |
|
||||
**Action Sequences:**
|
||||
|
||||
|
||||
- High intensity duration: {{max_duration}}
|
||||
- Rest period requirement: {{min_rest_time}}
|
||||
- Intensity variation: {{pacing_pattern}}
|
||||
|
||||
|
||||
**Learning Sequences:**
|
||||
|
||||
|
||||
- New mechanic introduction: {{teaching_method}}
|
||||
- Practice opportunity: {{practice_duration}}
|
||||
- Skill application: {{application_context}}
|
||||
@@ -1577,14 +1577,14 @@ sections:
|
||||
instruction: Define how to create appropriate challenges for each level type
|
||||
template: |
|
||||
**Challenge Types:**
|
||||
|
||||
|
||||
- Execution challenges: {{skill_requirements}}
|
||||
- Puzzle challenges: {{complexity_guidelines}}
|
||||
- Time challenges: {{time_pressure_rules}}
|
||||
- Resource challenges: {{resource_management}}
|
||||
|
||||
|
||||
**Difficulty Calibration:**
|
||||
|
||||
|
||||
- Skill check frequency: {{frequency_guidelines}}
|
||||
- Failure recovery: {{retry_mechanics}}
|
||||
- Hint system integration: {{help_system}}
|
||||
@@ -1598,7 +1598,7 @@ sections:
|
||||
instruction: Define how level data should be structured for implementation
|
||||
template: |
|
||||
**Level File Format:**
|
||||
|
||||
|
||||
- Data format: {{json|yaml|custom}}
|
||||
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
||||
- Data organization: {{structure_description}}
|
||||
@@ -1636,14 +1636,14 @@ sections:
|
||||
instruction: Define how level assets are organized and loaded
|
||||
template: |
|
||||
**Tilemap Requirements:**
|
||||
|
||||
|
||||
- Tile size: {{tile_dimensions}}px
|
||||
- Tileset organization: {{tileset_structure}}
|
||||
- Layer organization: {{layer_system}}
|
||||
- Collision data: {{collision_format}}
|
||||
|
||||
|
||||
**Audio Integration:**
|
||||
|
||||
|
||||
- Background music: {{music_requirements}}
|
||||
- Ambient sounds: {{ambient_system}}
|
||||
- Dynamic audio: {{dynamic_audio_rules}}
|
||||
@@ -1652,19 +1652,19 @@ sections:
|
||||
instruction: Define performance requirements for level systems
|
||||
template: |
|
||||
**Entity Limits:**
|
||||
|
||||
|
||||
- Maximum active entities: {{entity_limit}}
|
||||
- Maximum particles: {{particle_limit}}
|
||||
- Maximum audio sources: {{audio_limit}}
|
||||
|
||||
|
||||
**Memory Management:**
|
||||
|
||||
|
||||
- Texture memory budget: {{texture_memory}}MB
|
||||
- Audio memory budget: {{audio_memory}}MB
|
||||
- Level loading time: <{{load_time}}s
|
||||
|
||||
|
||||
**Culling and LOD:**
|
||||
|
||||
|
||||
- Off-screen culling: {{culling_distance}}
|
||||
- Level-of-detail rules: {{lod_system}}
|
||||
- Asset streaming: {{streaming_requirements}}
|
||||
@@ -1677,13 +1677,13 @@ sections:
|
||||
title: Automated Testing
|
||||
template: |
|
||||
**Performance Testing:**
|
||||
|
||||
|
||||
- Frame rate validation: Maintain {{fps_target}} FPS
|
||||
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
||||
- Loading time verification: Complete in <{{load_time}}s
|
||||
|
||||
|
||||
**Gameplay Testing:**
|
||||
|
||||
|
||||
- Completion path validation: All objectives achievable
|
||||
- Collectible accessibility: All items reachable
|
||||
- Softlock prevention: No unwinnable states
|
||||
@@ -1711,14 +1711,14 @@ sections:
|
||||
title: Balance Validation
|
||||
template: |
|
||||
**Metrics Collection:**
|
||||
|
||||
|
||||
- Completion rate: Target {{completion_percentage}}%
|
||||
- Average completion time: {{target_time}} ± {{variance}}
|
||||
- Death count per level: <{{max_deaths}}
|
||||
- Collectible discovery rate: {{discovery_percentage}}%
|
||||
|
||||
|
||||
**Iteration Guidelines:**
|
||||
|
||||
|
||||
- Adjustment criteria: {{criteria_for_changes}}
|
||||
- Testing sample size: {{minimum_testers}}
|
||||
- Validation period: {{testing_duration}}
|
||||
@@ -1731,14 +1731,14 @@ sections:
|
||||
title: Design Phase
|
||||
template: |
|
||||
**Concept Development:**
|
||||
|
||||
|
||||
1. Define level purpose and goals
|
||||
2. Create rough layout sketch
|
||||
3. Identify key mechanics and challenges
|
||||
4. Estimate difficulty and duration
|
||||
|
||||
|
||||
**Documentation Requirements:**
|
||||
|
||||
|
||||
- Level design brief
|
||||
- Layout diagrams
|
||||
- Mechanic integration notes
|
||||
@@ -1747,15 +1747,15 @@ sections:
|
||||
title: Implementation Phase
|
||||
template: |
|
||||
**Technical Implementation:**
|
||||
|
||||
|
||||
1. Create level data file
|
||||
2. Build tilemap and layout
|
||||
3. Place entities and objects
|
||||
4. Configure level logic and triggers
|
||||
5. Integrate audio and visual effects
|
||||
|
||||
|
||||
**Quality Assurance:**
|
||||
|
||||
|
||||
1. Automated testing execution
|
||||
2. Internal playtesting
|
||||
3. Performance validation
|
||||
@@ -1764,14 +1764,14 @@ sections:
|
||||
title: Integration Phase
|
||||
template: |
|
||||
**Game Integration:**
|
||||
|
||||
|
||||
1. Level progression integration
|
||||
2. Save system compatibility
|
||||
3. Analytics integration
|
||||
4. Achievement system integration
|
||||
|
||||
|
||||
**Final Validation:**
|
||||
|
||||
|
||||
1. Full game context testing
|
||||
2. Performance regression testing
|
||||
3. Platform compatibility verification
|
||||
@@ -1824,7 +1824,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
||||
|
||||
|
||||
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
||||
|
||||
- id: game-vision
|
||||
@@ -1881,7 +1881,7 @@ sections:
|
||||
repeatable: true
|
||||
template: |
|
||||
**Core Mechanic: {{mechanic_name}}**
|
||||
|
||||
|
||||
- **Description:** {{how_it_works}}
|
||||
- **Player Value:** {{why_its_fun}}
|
||||
- **Implementation Scope:** {{complexity_estimate}}
|
||||
@@ -1908,12 +1908,12 @@ sections:
|
||||
title: Technical Constraints
|
||||
template: |
|
||||
**Platform Requirements:**
|
||||
|
||||
|
||||
- Primary: {{platform_1}} - {{requirements}}
|
||||
- Secondary: {{platform_2}} - {{requirements}}
|
||||
|
||||
|
||||
**Technical Specifications:**
|
||||
|
||||
|
||||
- Engine: Phaser 3 + TypeScript
|
||||
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
||||
- Memory Budget: <{{memory_limit}}MB
|
||||
@@ -1951,10 +1951,10 @@ sections:
|
||||
title: Competitive Analysis
|
||||
template: |
|
||||
**Direct Competitors:**
|
||||
|
||||
|
||||
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
||||
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
||||
|
||||
|
||||
**Differentiation Strategy:**
|
||||
{{how_we_differ_and_why_thats_valuable}}
|
||||
- id: market-opportunity
|
||||
@@ -1978,16 +1978,16 @@ sections:
|
||||
title: Content Categories
|
||||
template: |
|
||||
**Core Content:**
|
||||
|
||||
|
||||
- {{content_type_1}}: {{quantity_and_description}}
|
||||
- {{content_type_2}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Optional Content:**
|
||||
|
||||
|
||||
- {{optional_content_type}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Replay Elements:**
|
||||
|
||||
|
||||
- {{replayability_features}}
|
||||
- id: difficulty-accessibility
|
||||
title: Difficulty and Accessibility
|
||||
@@ -2054,13 +2054,13 @@ sections:
|
||||
title: Player Experience Metrics
|
||||
template: |
|
||||
**Engagement Goals:**
|
||||
|
||||
|
||||
- Tutorial completion rate: >{{percentage}}%
|
||||
- Average session length: {{duration}} minutes
|
||||
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
||||
|
||||
|
||||
**Quality Benchmarks:**
|
||||
|
||||
|
||||
- Player satisfaction: >{{rating}}/10
|
||||
- Completion rate: >{{percentage}}%
|
||||
- Technical performance: {{fps_target}} FPS consistent
|
||||
@@ -2068,13 +2068,13 @@ sections:
|
||||
title: Development Metrics
|
||||
template: |
|
||||
**Technical Targets:**
|
||||
|
||||
|
||||
- Zero critical bugs at launch
|
||||
- Performance targets met on all platforms
|
||||
- Load times under {{seconds}}s
|
||||
|
||||
|
||||
**Process Goals:**
|
||||
|
||||
|
||||
- Development timeline adherence
|
||||
- Feature scope completion
|
||||
- Quality assurance standards
|
||||
@@ -2083,7 +2083,7 @@ sections:
|
||||
condition: has_business_goals
|
||||
template: |
|
||||
**Commercial Goals:**
|
||||
|
||||
|
||||
- {{revenue_target}} in first {{time_period}}
|
||||
- {{user_acquisition_target}} players in first {{time_period}}
|
||||
- {{retention_target}} monthly active users
|
||||
@@ -2136,12 +2136,12 @@ sections:
|
||||
title: Validation Plan
|
||||
template: |
|
||||
**Concept Testing:**
|
||||
|
||||
|
||||
- {{validation_method_1}} - {{timeline}}
|
||||
- {{validation_method_2}} - {{timeline}}
|
||||
|
||||
|
||||
**Prototype Testing:**
|
||||
|
||||
|
||||
- {{testing_approach}} - {{timeline}}
|
||||
- {{feedback_collection_method}} - {{timeline}}
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
|
||||
|
||||
|
||||
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
||||
|
||||
- id: introduction
|
||||
@@ -215,7 +215,7 @@ sections:
|
||||
instruction: Establish the document's purpose and scope for game development
|
||||
content: |
|
||||
This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
|
||||
|
||||
|
||||
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -234,7 +234,7 @@ sections:
|
||||
title: Architecture Summary
|
||||
instruction: |
|
||||
Provide a comprehensive overview covering:
|
||||
|
||||
|
||||
- Game engine choice and configuration
|
||||
- Project structure and organization
|
||||
- Key systems and their interactions
|
||||
@@ -322,23 +322,23 @@ sections:
|
||||
title: Scene Management System
|
||||
template: |
|
||||
**Purpose:** Handle game flow and scene transitions
|
||||
|
||||
|
||||
**Key Components:**
|
||||
|
||||
|
||||
- Scene loading and unloading
|
||||
- Data passing between scenes
|
||||
- Transition effects
|
||||
- Memory management
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Preload scene for asset loading
|
||||
- Menu system with navigation
|
||||
- Gameplay scenes with state management
|
||||
- Pause/resume functionality
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/scenes/BootScene.ts`
|
||||
- `src/scenes/PreloadScene.ts`
|
||||
- `src/scenes/MenuScene.ts`
|
||||
@@ -348,23 +348,23 @@ sections:
|
||||
title: Game State Management
|
||||
template: |
|
||||
**Purpose:** Track player progress and game status
|
||||
|
||||
|
||||
**State Categories:**
|
||||
|
||||
|
||||
- Player progress (levels, unlocks)
|
||||
- Game settings (audio, controls)
|
||||
- Session data (current level, score)
|
||||
- Persistent data (achievements, statistics)
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Save/load system with localStorage
|
||||
- State validation and error recovery
|
||||
- Cross-session data persistence
|
||||
- Settings management
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/GameState.ts`
|
||||
- `src/systems/SaveManager.ts`
|
||||
- `src/types/GameData.ts`
|
||||
@@ -372,23 +372,23 @@ sections:
|
||||
title: Asset Management System
|
||||
template: |
|
||||
**Purpose:** Efficient loading and management of game assets
|
||||
|
||||
|
||||
**Asset Categories:**
|
||||
|
||||
|
||||
- Sprite sheets and animations
|
||||
- Audio files and music
|
||||
- Level data and configurations
|
||||
- UI assets and fonts
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Progressive loading strategy
|
||||
- Asset caching and optimization
|
||||
- Error handling for failed loads
|
||||
- Memory management for large assets
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/AssetManager.ts`
|
||||
- `src/config/AssetConfig.ts`
|
||||
- `src/utils/AssetLoader.ts`
|
||||
@@ -396,23 +396,23 @@ sections:
|
||||
title: Input Management System
|
||||
template: |
|
||||
**Purpose:** Handle all player input across platforms
|
||||
|
||||
|
||||
**Input Types:**
|
||||
|
||||
|
||||
- Keyboard controls
|
||||
- Mouse/pointer interaction
|
||||
- Touch gestures (mobile)
|
||||
- Gamepad support (optional)
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Input mapping and configuration
|
||||
- Touch-friendly mobile controls
|
||||
- Input buffering for responsive gameplay
|
||||
- Customizable control schemes
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/InputManager.ts`
|
||||
- `src/utils/TouchControls.ts`
|
||||
- `src/types/InputTypes.ts`
|
||||
@@ -425,19 +425,19 @@ sections:
|
||||
title: "{{mechanic_name}} System"
|
||||
template: |
|
||||
**Purpose:** {{system_purpose}}
|
||||
|
||||
|
||||
**Core Functionality:**
|
||||
|
||||
|
||||
- {{feature_1}}
|
||||
- {{feature_2}}
|
||||
- {{feature_3}}
|
||||
|
||||
|
||||
**Dependencies:** {{required_systems}}
|
||||
|
||||
|
||||
**Performance Considerations:** {{optimization_notes}}
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/{{system_name}}.ts`
|
||||
- `src/gameObjects/{{related_object}}.ts`
|
||||
- `src/types/{{system_types}}.ts`
|
||||
@@ -445,65 +445,65 @@ sections:
|
||||
title: Physics & Collision System
|
||||
template: |
|
||||
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
||||
|
||||
|
||||
**Collision Categories:**
|
||||
|
||||
|
||||
- Player collision
|
||||
- Enemy interactions
|
||||
- Environmental objects
|
||||
- Collectibles and items
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Optimized collision detection
|
||||
- Physics body management
|
||||
- Collision callbacks and events
|
||||
- Performance monitoring
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/PhysicsManager.ts`
|
||||
- `src/utils/CollisionGroups.ts`
|
||||
- id: audio-system
|
||||
title: Audio System
|
||||
template: |
|
||||
**Audio Requirements:**
|
||||
|
||||
|
||||
- Background music with looping
|
||||
- Sound effects for actions
|
||||
- Audio settings and volume control
|
||||
- Mobile audio optimization
|
||||
|
||||
|
||||
**Implementation Features:**
|
||||
|
||||
|
||||
- Audio sprite management
|
||||
- Dynamic music system
|
||||
- Spatial audio (if applicable)
|
||||
- Audio pooling for performance
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/AudioManager.ts`
|
||||
- `src/config/AudioConfig.ts`
|
||||
- id: ui-system
|
||||
title: UI System
|
||||
template: |
|
||||
**UI Components:**
|
||||
|
||||
|
||||
- HUD elements (score, health, etc.)
|
||||
- Menu navigation
|
||||
- Modal dialogs
|
||||
- Settings screens
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Responsive layout system
|
||||
- Touch-friendly interface
|
||||
- Keyboard navigation support
|
||||
- Animation and transitions
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/UIManager.ts`
|
||||
- `src/gameObjects/UI/`
|
||||
- `src/types/UITypes.ts`
|
||||
@@ -1045,7 +1045,7 @@ interface GameState {
|
||||
interface GameSettings {
|
||||
musicVolume: number;
|
||||
sfxVolume: number;
|
||||
difficulty: "easy" | "normal" | "hard";
|
||||
difficulty: 'easy' | 'normal' | 'hard';
|
||||
controls: ControlScheme;
|
||||
}
|
||||
```
|
||||
@@ -1086,12 +1086,12 @@ class GameScene extends Phaser.Scene {
|
||||
private inputManager!: InputManager;
|
||||
|
||||
constructor() {
|
||||
super({ key: "GameScene" });
|
||||
super({ key: 'GameScene' });
|
||||
}
|
||||
|
||||
preload(): void {
|
||||
// Load only scene-specific assets
|
||||
this.load.image("player", "assets/player.png");
|
||||
this.load.image('player', 'assets/player.png');
|
||||
}
|
||||
|
||||
create(data: SceneData): void {
|
||||
@@ -1116,7 +1116,7 @@ class GameScene extends Phaser.Scene {
|
||||
this.inputManager.destroy();
|
||||
|
||||
// Remove event listeners
|
||||
this.events.off("*");
|
||||
this.events.off('*');
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -1125,13 +1125,13 @@ class GameScene extends Phaser.Scene {
|
||||
|
||||
```typescript
|
||||
// Proper scene transitions with data
|
||||
this.scene.start("NextScene", {
|
||||
this.scene.start('NextScene', {
|
||||
playerScore: this.playerScore,
|
||||
currentLevel: this.currentLevel + 1,
|
||||
});
|
||||
|
||||
// Scene overlays for UI
|
||||
this.scene.launch("PauseMenuScene");
|
||||
this.scene.launch('PauseMenuScene');
|
||||
this.scene.pause();
|
||||
```
|
||||
|
||||
@@ -1175,7 +1175,7 @@ class Player extends GameEntity {
|
||||
private health!: HealthComponent;
|
||||
|
||||
constructor(scene: Phaser.Scene, x: number, y: number) {
|
||||
super(scene, x, y, "player");
|
||||
super(scene, x, y, 'player');
|
||||
|
||||
this.movement = this.addComponent(new MovementComponent(this));
|
||||
this.health = this.addComponent(new HealthComponent(this, 100));
|
||||
@@ -1195,7 +1195,7 @@ class GameManager {
|
||||
|
||||
constructor(scene: Phaser.Scene) {
|
||||
if (GameManager.instance) {
|
||||
throw new Error("GameManager already exists!");
|
||||
throw new Error('GameManager already exists!');
|
||||
}
|
||||
|
||||
this.scene = scene;
|
||||
@@ -1205,7 +1205,7 @@ class GameManager {
|
||||
|
||||
static getInstance(): GameManager {
|
||||
if (!GameManager.instance) {
|
||||
throw new Error("GameManager not initialized!");
|
||||
throw new Error('GameManager not initialized!');
|
||||
}
|
||||
return GameManager.instance;
|
||||
}
|
||||
@@ -1252,7 +1252,7 @@ class BulletPool {
|
||||
}
|
||||
|
||||
// Pool exhausted - create new bullet
|
||||
console.warn("Bullet pool exhausted, creating new bullet");
|
||||
console.warn('Bullet pool exhausted, creating new bullet');
|
||||
return new Bullet(this.scene, 0, 0);
|
||||
}
|
||||
|
||||
@@ -1352,14 +1352,12 @@ class InputManager {
|
||||
}
|
||||
|
||||
private setupKeyboard(): void {
|
||||
this.keys = this.scene.input.keyboard.addKeys(
|
||||
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
|
||||
);
|
||||
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
||||
}
|
||||
|
||||
private setupTouch(): void {
|
||||
this.scene.input.on("pointerdown", this.handlePointerDown, this);
|
||||
this.scene.input.on("pointerup", this.handlePointerUp, this);
|
||||
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
||||
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
||||
}
|
||||
|
||||
update(): void {
|
||||
@@ -1386,9 +1384,9 @@ class InputManager {
|
||||
class AssetManager {
|
||||
loadAssets(): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.scene.load.on("filecomplete", this.handleFileComplete, this);
|
||||
this.scene.load.on("loaderror", this.handleLoadError, this);
|
||||
this.scene.load.on("complete", () => resolve());
|
||||
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
||||
this.scene.load.on('loaderror', this.handleLoadError, this);
|
||||
this.scene.load.on('complete', () => resolve());
|
||||
|
||||
this.scene.load.start();
|
||||
});
|
||||
@@ -1404,8 +1402,8 @@ class AssetManager {
|
||||
private loadFallbackAsset(key: string): void {
|
||||
// Load placeholder or default assets
|
||||
switch (key) {
|
||||
case "player":
|
||||
this.scene.load.image("player", "assets/defaults/default-player.png");
|
||||
case 'player':
|
||||
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
||||
break;
|
||||
default:
|
||||
console.warn(`No fallback for asset: ${key}`);
|
||||
@@ -1432,11 +1430,11 @@ class GameSystem {
|
||||
|
||||
private attemptRecovery(context: string): void {
|
||||
switch (context) {
|
||||
case "update":
|
||||
case 'update':
|
||||
// Reset system state
|
||||
this.reset();
|
||||
break;
|
||||
case "render":
|
||||
case 'render':
|
||||
// Disable visual effects
|
||||
this.disableEffects();
|
||||
break;
|
||||
@@ -1456,7 +1454,7 @@ class GameSystem {
|
||||
|
||||
```typescript
|
||||
// Example test for game mechanics
|
||||
describe("HealthComponent", () => {
|
||||
describe('HealthComponent', () => {
|
||||
let healthComponent: HealthComponent;
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -1464,18 +1462,18 @@ describe("HealthComponent", () => {
|
||||
healthComponent = new HealthComponent(mockEntity, 100);
|
||||
});
|
||||
|
||||
test("should initialize with correct health", () => {
|
||||
test('should initialize with correct health', () => {
|
||||
expect(healthComponent.currentHealth).toBe(100);
|
||||
expect(healthComponent.maxHealth).toBe(100);
|
||||
});
|
||||
|
||||
test("should handle damage correctly", () => {
|
||||
test('should handle damage correctly', () => {
|
||||
healthComponent.takeDamage(25);
|
||||
expect(healthComponent.currentHealth).toBe(75);
|
||||
expect(healthComponent.isAlive()).toBe(true);
|
||||
});
|
||||
|
||||
test("should handle death correctly", () => {
|
||||
test('should handle death correctly', () => {
|
||||
healthComponent.takeDamage(150);
|
||||
expect(healthComponent.currentHealth).toBe(0);
|
||||
expect(healthComponent.isAlive()).toBe(false);
|
||||
@@ -1488,7 +1486,7 @@ describe("HealthComponent", () => {
|
||||
**Scene Testing:**
|
||||
|
||||
```typescript
|
||||
describe("GameScene Integration", () => {
|
||||
describe('GameScene Integration', () => {
|
||||
let scene: GameScene;
|
||||
let mockGame: Phaser.Game;
|
||||
|
||||
@@ -1498,7 +1496,7 @@ describe("GameScene Integration", () => {
|
||||
scene = new GameScene();
|
||||
});
|
||||
|
||||
test("should initialize all systems", () => {
|
||||
test('should initialize all systems', () => {
|
||||
scene.create({});
|
||||
|
||||
expect(scene.gameManager).toBeDefined();
|
||||
|
||||
@@ -412,13 +412,13 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
||||
|
||||
|
||||
Before starting, ensure you have access to:
|
||||
|
||||
|
||||
- Game Design Document (GDD)
|
||||
- Game Architecture Document
|
||||
- Any existing stories in this epic
|
||||
|
||||
|
||||
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
||||
|
||||
- id: story-header
|
||||
@@ -467,12 +467,12 @@ sections:
|
||||
title: Files to Create/Modify
|
||||
template: |
|
||||
**New Files:**
|
||||
|
||||
|
||||
- `{{file_path_1}}` - {{purpose}}
|
||||
- `{{file_path_2}}` - {{purpose}}
|
||||
|
||||
|
||||
**Modified Files:**
|
||||
|
||||
|
||||
- `{{existing_file_1}}` - {{changes_needed}}
|
||||
- `{{existing_file_2}}` - {{changes_needed}}
|
||||
- id: class-interface-definitions
|
||||
@@ -487,15 +487,15 @@ sections:
|
||||
{{property_2}}: {{type}};
|
||||
{{method_1}}({{params}}): {{return_type}};
|
||||
}
|
||||
|
||||
|
||||
// {{class_name}}
|
||||
class {{class_name}} extends {{phaser_class}} {
|
||||
private {{property}}: {{type}};
|
||||
|
||||
|
||||
constructor({{params}}) {
|
||||
// Implementation requirements
|
||||
}
|
||||
|
||||
|
||||
public {{method}}({{params}}): {{return_type}} {
|
||||
// Method requirements
|
||||
}
|
||||
@@ -505,15 +505,15 @@ sections:
|
||||
instruction: Specify how this feature integrates with existing systems
|
||||
template: |
|
||||
**Scene Integration:**
|
||||
|
||||
|
||||
- {{scene_name}}: {{integration_details}}
|
||||
|
||||
|
||||
**System Dependencies:**
|
||||
|
||||
|
||||
- {{system_name}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Event Communication:**
|
||||
|
||||
|
||||
- Emits: `{{event_name}}` when {{condition}}
|
||||
- Listens: `{{event_name}}` to {{response}}
|
||||
|
||||
@@ -525,7 +525,7 @@ sections:
|
||||
title: Dev Agent Record
|
||||
template: |
|
||||
**Tasks:**
|
||||
|
||||
|
||||
- [ ] {{task_1_description}}
|
||||
- [ ] {{task_2_description}}
|
||||
- [ ] {{task_3_description}}
|
||||
@@ -533,18 +533,18 @@ sections:
|
||||
- [ ] Write unit tests for {{component}}
|
||||
- [ ] Integration testing with {{related_system}}
|
||||
- [ ] Performance testing and optimization
|
||||
|
||||
|
||||
**Debug Log:**
|
||||
| Task | File | Change | Reverted? |
|
||||
|------|------|--------|-----------|
|
||||
| | | | |
|
||||
|
||||
|
||||
**Completion Notes:**
|
||||
|
||||
|
||||
<!-- Only note deviations from requirements, keep under 50 words -->
|
||||
|
||||
|
||||
**Change Log:**
|
||||
|
||||
|
||||
<!-- Only requirement changes during implementation -->
|
||||
|
||||
- id: game-design-context
|
||||
@@ -552,13 +552,13 @@ sections:
|
||||
instruction: Reference the specific sections of the GDD that this story implements
|
||||
template: |
|
||||
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
||||
|
||||
|
||||
**Game Mechanic:** {{mechanic_name}}
|
||||
|
||||
|
||||
**Player Experience Goal:** {{experience_description}}
|
||||
|
||||
|
||||
**Balance Parameters:**
|
||||
|
||||
|
||||
- {{parameter_1}}: {{value_or_range}}
|
||||
- {{parameter_2}}: {{value_or_range}}
|
||||
|
||||
@@ -570,11 +570,11 @@ sections:
|
||||
title: Unit Tests
|
||||
template: |
|
||||
**Test Files:**
|
||||
|
||||
|
||||
- `tests/{{component_name}}.test.ts`
|
||||
|
||||
|
||||
**Test Scenarios:**
|
||||
|
||||
|
||||
- {{test_scenario_1}}
|
||||
- {{test_scenario_2}}
|
||||
- {{edge_case_test}}
|
||||
@@ -582,12 +582,12 @@ sections:
|
||||
title: Game Testing
|
||||
template: |
|
||||
**Manual Test Cases:**
|
||||
|
||||
|
||||
1. {{test_case_1_description}}
|
||||
|
||||
|
||||
- Expected: {{expected_behavior}}
|
||||
- Performance: {{performance_expectation}}
|
||||
|
||||
|
||||
2. {{test_case_2_description}}
|
||||
- Expected: {{expected_behavior}}
|
||||
- Edge Case: {{edge_case_handling}}
|
||||
@@ -595,7 +595,7 @@ sections:
|
||||
title: Performance Tests
|
||||
template: |
|
||||
**Metrics to Verify:**
|
||||
|
||||
|
||||
- Frame rate maintains {{fps_target}} FPS
|
||||
- Memory usage stays under {{memory_limit}}MB
|
||||
- {{feature_specific_performance_metric}}
|
||||
@@ -605,15 +605,15 @@ sections:
|
||||
instruction: List any dependencies that must be completed before this story can be implemented
|
||||
template: |
|
||||
**Story Dependencies:**
|
||||
|
||||
|
||||
- {{story_id}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Technical Dependencies:**
|
||||
|
||||
|
||||
- {{system_or_file}}: {{requirement}}
|
||||
|
||||
|
||||
**Asset Dependencies:**
|
||||
|
||||
|
||||
- {{asset_type}}: {{asset_description}}
|
||||
- Location: `{{asset_path}}`
|
||||
|
||||
@@ -636,17 +636,17 @@ sections:
|
||||
instruction: Any additional context, design decisions, or implementation notes
|
||||
template: |
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{note_1}}
|
||||
- {{note_2}}
|
||||
|
||||
|
||||
**Design Decisions:**
|
||||
|
||||
|
||||
- {{decision_1}}: {{rationale}}
|
||||
- {{decision_2}}: {{rationale}}
|
||||
|
||||
|
||||
**Future Considerations:**
|
||||
|
||||
|
||||
- {{future_enhancement_1}}
|
||||
- {{future_optimization_1}}
|
||||
==================== END: .bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml ====================
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3698,7 +3698,7 @@ Use the `shard-doc` task or `@kayvan/markdown-tree-parser` tool for automatic ga
|
||||
|
||||
- **Claude Code**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Cursor**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Trae**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Roo Code**: Select mode from mode selector with bmad2du prefix
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select the appropriate game agent.
|
||||
|
||||
@@ -1265,7 +1265,7 @@ sections:
|
||||
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions for Unity implementation.
|
||||
template: |
|
||||
**Primary Loop ({{duration}} seconds):**
|
||||
|
||||
|
||||
1. {{action_1}} ({{time_1}}s) - {{unity_component}}
|
||||
2. {{action_2}} ({{time_2}}s) - {{unity_component}}
|
||||
3. {{action_3}} ({{time_3}}s) - {{unity_component}}
|
||||
@@ -1277,12 +1277,12 @@ sections:
|
||||
instruction: Clearly define success and failure states with Unity-specific implementation notes
|
||||
template: |
|
||||
**Victory Conditions:**
|
||||
|
||||
|
||||
- {{win_condition_1}} - Unity Event: {{unity_event}}
|
||||
- {{win_condition_2}} - Unity Event: {{unity_event}}
|
||||
|
||||
|
||||
**Failure States:**
|
||||
|
||||
|
||||
- {{loss_condition_1}} - Trigger: {{unity_trigger}}
|
||||
- {{loss_condition_2}} - Trigger: {{unity_trigger}}
|
||||
examples:
|
||||
@@ -1302,22 +1302,22 @@ sections:
|
||||
title: "{{mechanic_name}}"
|
||||
template: |
|
||||
**Description:** {{detailed_description}}
|
||||
|
||||
|
||||
**Player Input:** {{input_method}} - Unity Input System: {{input_action}}
|
||||
|
||||
|
||||
**System Response:** {{game_response}}
|
||||
|
||||
|
||||
**Unity Implementation Notes:**
|
||||
|
||||
|
||||
- **Components Needed:** {{component_list}}
|
||||
- **Physics Requirements:** {{physics_2d_setup}}
|
||||
- **Animation States:** {{animator_states}}
|
||||
- **Performance Considerations:** {{optimization_notes}}
|
||||
|
||||
|
||||
**Dependencies:** {{other_mechanics_needed}}
|
||||
|
||||
|
||||
**Script Architecture:**
|
||||
|
||||
|
||||
- {{script_name}}.cs - {{responsibility}}
|
||||
- {{manager_script}}.cs - {{management_role}}
|
||||
examples:
|
||||
@@ -1343,15 +1343,15 @@ sections:
|
||||
title: Player Progression
|
||||
template: |
|
||||
**Progression Type:** {{linear|branching|metroidvania}}
|
||||
|
||||
|
||||
**Key Milestones:**
|
||||
|
||||
|
||||
1. **{{milestone_1}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
2. **{{milestone_2}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
3. **{{milestone_3}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
|
||||
|
||||
**Save Data Structure:**
|
||||
|
||||
|
||||
```csharp
|
||||
[System.Serializable]
|
||||
public class PlayerProgress
|
||||
@@ -1367,13 +1367,13 @@ sections:
|
||||
template: |
|
||||
**Tutorial Phase:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Early Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Mid Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Late Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
examples:
|
||||
@@ -1406,22 +1406,22 @@ sections:
|
||||
**Target Duration:** {{target_time}}
|
||||
**Key Elements:** {{required_mechanics}}
|
||||
**Difficulty Rating:** {{relative_difficulty}}
|
||||
|
||||
|
||||
**Unity Scene Structure:**
|
||||
|
||||
|
||||
- **Environment:** {{tilemap_setup}}
|
||||
- **Gameplay Objects:** {{prefab_list}}
|
||||
- **Lighting:** {{lighting_setup}}
|
||||
- **Audio:** {{audio_sources}}
|
||||
|
||||
|
||||
**Level Flow Template:**
|
||||
|
||||
|
||||
- **Introduction:** {{intro_description}} - Area: {{unity_area_bounds}}
|
||||
- **Challenge:** {{main_challenge}} - Mechanics: {{active_components}}
|
||||
- **Resolution:** {{completion_requirement}} - Trigger: {{completion_trigger}}
|
||||
|
||||
|
||||
**Reusable Prefabs:**
|
||||
|
||||
|
||||
- {{prefab_name}} - {{prefab_purpose}}
|
||||
examples:
|
||||
- "Environment: TilemapRenderer with Platform tileset, Lighting: 2D Global Light + Point Lights"
|
||||
@@ -1432,9 +1432,9 @@ sections:
|
||||
**Total Levels:** {{number}}
|
||||
**Unlock Pattern:** {{progression_method}}
|
||||
**Scene Management:** {{unity_scene_loading}}
|
||||
|
||||
|
||||
**Unity Scene Organization:**
|
||||
|
||||
|
||||
- Scene Naming: {{naming_convention}}
|
||||
- Addressable Assets: {{addressable_groups}}
|
||||
- Loading Screens: {{loading_implementation}}
|
||||
@@ -1459,13 +1459,13 @@ sections:
|
||||
**Physics:** {{2D Only|3D Only|Hybrid}}
|
||||
**Scripting Backend:** {{Mono|IL2CPP}}
|
||||
**API Compatibility:** {{.NET Standard 2.1|.NET Framework}}
|
||||
|
||||
|
||||
**Required Packages:**
|
||||
|
||||
|
||||
- {{package_name}} {{version}} - {{purpose}}
|
||||
|
||||
|
||||
**Project Settings:**
|
||||
|
||||
|
||||
- Color Space: {{Linear|Gamma}}
|
||||
- Quality Settings: {{quality_levels}}
|
||||
- Physics Settings: {{physics_config}}
|
||||
@@ -1479,9 +1479,9 @@ sections:
|
||||
**Memory Usage:** <{{memory_limit}}MB heap, <{{texture_memory}}MB textures
|
||||
**Load Times:** <{{load_time}}s initial, <{{level_load}}s between levels
|
||||
**Battery Usage:** Optimized for mobile devices - {{battery_target}} hours gameplay
|
||||
|
||||
|
||||
**Unity Profiler Targets:**
|
||||
|
||||
|
||||
- CPU Frame Time: <{{cpu_time}}ms
|
||||
- GPU Frame Time: <{{gpu_time}}ms
|
||||
- GC Allocs: <{{gc_limit}}KB per frame
|
||||
@@ -1492,20 +1492,20 @@ sections:
|
||||
title: Platform Specific Requirements
|
||||
template: |
|
||||
**Desktop:**
|
||||
|
||||
|
||||
- Resolution: {{min_resolution}} - {{max_resolution}}
|
||||
- Input: Keyboard, Mouse, Gamepad ({{gamepad_support}})
|
||||
- Build Target: {{desktop_targets}}
|
||||
|
||||
|
||||
**Mobile:**
|
||||
|
||||
|
||||
- Resolution: {{mobile_min}} - {{mobile_max}}
|
||||
- Input: Touch, Accelerometer ({{sensor_support}})
|
||||
- OS: iOS {{ios_min}}+, Android {{android_min}}+ (API {{api_level}})
|
||||
- Device Requirements: {{device_specs}}
|
||||
|
||||
|
||||
**Web (if applicable):**
|
||||
|
||||
|
||||
- WebGL Version: {{webgl_version}}
|
||||
- Browser Support: {{browser_list}}
|
||||
- Compression: {{compression_format}}
|
||||
@@ -1516,21 +1516,21 @@ sections:
|
||||
instruction: Define asset specifications for Unity pipeline optimization
|
||||
template: |
|
||||
**2D Art Assets:**
|
||||
|
||||
|
||||
- Sprites: {{sprite_resolution}} at {{ppu}} PPU
|
||||
- Texture Format: {{texture_compression}}
|
||||
- Atlas Strategy: {{sprite_atlas_setup}}
|
||||
- Animation: {{animation_type}} at {{framerate}} FPS
|
||||
|
||||
|
||||
**Audio Assets:**
|
||||
|
||||
|
||||
- Music: {{audio_format}} at {{sample_rate}} Hz
|
||||
- SFX: {{sfx_format}} at {{sfx_sample_rate}} Hz
|
||||
- Compression: {{audio_compression}}
|
||||
- 3D Audio: {{spatial_audio}}
|
||||
|
||||
|
||||
**UI Assets:**
|
||||
|
||||
|
||||
- Canvas Resolution: {{ui_resolution}}
|
||||
- UI Scale Mode: {{scale_mode}}
|
||||
- Font: {{font_requirements}}
|
||||
@@ -1551,17 +1551,17 @@ sections:
|
||||
title: Code Architecture Pattern
|
||||
template: |
|
||||
**Architecture Pattern:** {{MVC|MVVM|ECS|Component-Based|Custom}}
|
||||
|
||||
|
||||
**Core Systems Required:**
|
||||
|
||||
|
||||
- **Scene Management:** {{scene_manager_approach}}
|
||||
- **State Management:** {{state_pattern_implementation}}
|
||||
- **Event System:** {{event_system_choice}}
|
||||
- **Object Pooling:** {{pooling_strategy}}
|
||||
- **Save/Load System:** {{save_system_approach}}
|
||||
|
||||
|
||||
**Folder Structure:**
|
||||
|
||||
|
||||
```
|
||||
Assets/
|
||||
├── _Project/
|
||||
@@ -1571,9 +1571,9 @@ sections:
|
||||
│ ├── Scenes/
|
||||
│ └── {{additional_folders}}
|
||||
```
|
||||
|
||||
|
||||
**Naming Conventions:**
|
||||
|
||||
|
||||
- Scripts: {{script_naming}}
|
||||
- Prefabs: {{prefab_naming}}
|
||||
- Scenes: {{scene_naming}}
|
||||
@@ -1584,19 +1584,19 @@ sections:
|
||||
title: Unity Systems Integration
|
||||
template: |
|
||||
**Required Unity Systems:**
|
||||
|
||||
|
||||
- **Input System:** {{input_implementation}}
|
||||
- **Animation System:** {{animation_approach}}
|
||||
- **Physics Integration:** {{physics_usage}}
|
||||
- **Rendering Features:** {{rendering_requirements}}
|
||||
- **Asset Streaming:** {{asset_loading_strategy}}
|
||||
|
||||
|
||||
**Third-Party Integrations:**
|
||||
|
||||
|
||||
- {{integration_name}}: {{integration_purpose}}
|
||||
|
||||
|
||||
**Performance Systems:**
|
||||
|
||||
|
||||
- **Profiling Integration:** {{profiling_setup}}
|
||||
- **Memory Management:** {{memory_strategy}}
|
||||
- **Build Pipeline:** {{build_automation}}
|
||||
@@ -1607,20 +1607,20 @@ sections:
|
||||
title: Data Management
|
||||
template: |
|
||||
**Save Data Architecture:**
|
||||
|
||||
|
||||
- **Format:** {{PlayerPrefs|JSON|Binary|Cloud}}
|
||||
- **Structure:** {{save_data_organization}}
|
||||
- **Encryption:** {{security_approach}}
|
||||
- **Cloud Sync:** {{cloud_integration}}
|
||||
|
||||
|
||||
**Configuration Data:**
|
||||
|
||||
|
||||
- **ScriptableObjects:** {{scriptable_object_usage}}
|
||||
- **Settings Management:** {{settings_system}}
|
||||
- **Localization:** {{localization_approach}}
|
||||
|
||||
|
||||
**Runtime Data:**
|
||||
|
||||
|
||||
- **Caching Strategy:** {{cache_implementation}}
|
||||
- **Memory Pools:** {{pooling_objects}}
|
||||
- **Asset References:** {{asset_reference_system}}
|
||||
@@ -1848,15 +1848,15 @@ sections:
|
||||
instruction: Provide guidance for the Story Manager (SM) agent on how to break down this GDD into implementable user stories
|
||||
template: |
|
||||
**Epic Prioritization:** {{epic_order_rationale}}
|
||||
|
||||
|
||||
**Story Sizing Guidelines:**
|
||||
|
||||
|
||||
- Foundation stories: {{foundation_story_scope}}
|
||||
- Feature stories: {{feature_story_scope}}
|
||||
- Polish stories: {{polish_story_scope}}
|
||||
|
||||
|
||||
**Unity-Specific Story Considerations:**
|
||||
|
||||
|
||||
- Each story should result in testable Unity scenes or prefabs
|
||||
- Include specific Unity components and systems in acceptance criteria
|
||||
- Consider cross-platform testing requirements
|
||||
@@ -1892,7 +1892,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
||||
|
||||
|
||||
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
||||
|
||||
- id: introduction
|
||||
@@ -1900,7 +1900,7 @@ sections:
|
||||
instruction: Establish the purpose and scope of level design for this game
|
||||
content: |
|
||||
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
||||
|
||||
|
||||
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -1947,29 +1947,29 @@ sections:
|
||||
title: "{{category_name}} Levels"
|
||||
template: |
|
||||
**Purpose:** {{gameplay_purpose}}
|
||||
|
||||
|
||||
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
||||
|
||||
|
||||
**Difficulty Range:** {{difficulty_scale}}
|
||||
|
||||
|
||||
**Key Mechanics Featured:**
|
||||
|
||||
|
||||
- {{mechanic_1}} - {{usage_description}}
|
||||
- {{mechanic_2}} - {{usage_description}}
|
||||
|
||||
|
||||
**Player Objectives:**
|
||||
|
||||
|
||||
- Primary: {{primary_objective}}
|
||||
- Secondary: {{secondary_objective}}
|
||||
- Hidden: {{secret_objective}}
|
||||
|
||||
|
||||
**Success Criteria:**
|
||||
|
||||
|
||||
- {{completion_requirement_1}}
|
||||
- {{completion_requirement_2}}
|
||||
|
||||
|
||||
**Technical Requirements:**
|
||||
|
||||
|
||||
- Maximum entities: {{entity_limit}}
|
||||
- Performance target: {{fps_target}} FPS
|
||||
- Memory budget: {{memory_limit}}MB
|
||||
@@ -1984,11 +1984,11 @@ sections:
|
||||
instruction: Based on GDD requirements, define the overall level organization
|
||||
template: |
|
||||
**Organization Type:** {{linear|hub_world|open_world}}
|
||||
|
||||
|
||||
**Total Level Count:** {{number}}
|
||||
|
||||
|
||||
**World Breakdown:**
|
||||
|
||||
|
||||
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
@@ -2023,7 +2023,7 @@ sections:
|
||||
instruction: Define how players access new levels
|
||||
template: |
|
||||
**Progression Gates:**
|
||||
|
||||
|
||||
- Linear progression: Complete previous level
|
||||
- Star requirements: {{star_count}} stars to unlock
|
||||
- Skill gates: Demonstrate {{skill_requirement}}
|
||||
@@ -2038,17 +2038,17 @@ sections:
|
||||
instruction: Define all environmental components that can be used in levels
|
||||
template: |
|
||||
**Terrain Types:**
|
||||
|
||||
|
||||
- {{terrain_1}}: {{properties_and_usage}}
|
||||
- {{terrain_2}}: {{properties_and_usage}}
|
||||
|
||||
|
||||
**Interactive Objects:**
|
||||
|
||||
|
||||
- {{object_1}}: {{behavior_and_purpose}}
|
||||
- {{object_2}}: {{behavior_and_purpose}}
|
||||
|
||||
|
||||
**Hazards and Obstacles:**
|
||||
|
||||
|
||||
- {{hazard_1}}: {{damage_and_behavior}}
|
||||
- {{hazard_2}}: {{damage_and_behavior}}
|
||||
- id: collectibles-rewards
|
||||
@@ -2056,18 +2056,18 @@ sections:
|
||||
instruction: Define all collectible items and their placement rules
|
||||
template: |
|
||||
**Collectible Types:**
|
||||
|
||||
|
||||
- {{collectible_1}}: {{value_and_purpose}}
|
||||
- {{collectible_2}}: {{value_and_purpose}}
|
||||
|
||||
|
||||
**Placement Guidelines:**
|
||||
|
||||
|
||||
- Mandatory collectibles: {{placement_rules}}
|
||||
- Optional collectibles: {{placement_rules}}
|
||||
- Secret collectibles: {{placement_rules}}
|
||||
|
||||
|
||||
**Reward Distribution:**
|
||||
|
||||
|
||||
- Easy to find: {{percentage}}%
|
||||
- Moderate challenge: {{percentage}}%
|
||||
- High skill required: {{percentage}}%
|
||||
@@ -2076,18 +2076,18 @@ sections:
|
||||
instruction: Define how enemies should be placed and balanced in levels
|
||||
template: |
|
||||
**Enemy Categories:**
|
||||
|
||||
|
||||
- {{enemy_type_1}}: {{behavior_and_usage}}
|
||||
- {{enemy_type_2}}: {{behavior_and_usage}}
|
||||
|
||||
|
||||
**Placement Principles:**
|
||||
|
||||
|
||||
- Introduction encounters: {{guideline}}
|
||||
- Standard encounters: {{guideline}}
|
||||
- Challenge encounters: {{guideline}}
|
||||
|
||||
|
||||
**Difficulty Scaling:**
|
||||
|
||||
|
||||
- Enemy count progression: {{scaling_rule}}
|
||||
- Enemy type introduction: {{pacing_rule}}
|
||||
- Encounter complexity: {{complexity_rule}}
|
||||
@@ -2100,14 +2100,14 @@ sections:
|
||||
title: Level Layout Principles
|
||||
template: |
|
||||
**Spatial Design:**
|
||||
|
||||
|
||||
- Grid size: {{grid_dimensions}}
|
||||
- Minimum path width: {{width_units}}
|
||||
- Maximum vertical distance: {{height_units}}
|
||||
- Safe zones placement: {{safety_guidelines}}
|
||||
|
||||
|
||||
**Navigation Design:**
|
||||
|
||||
|
||||
- Clear path indication: {{visual_cues}}
|
||||
- Landmark placement: {{landmark_rules}}
|
||||
- Dead end avoidance: {{dead_end_policy}}
|
||||
@@ -2117,13 +2117,13 @@ sections:
|
||||
instruction: Define how to control the rhythm and pace of gameplay within levels
|
||||
template: |
|
||||
**Action Sequences:**
|
||||
|
||||
|
||||
- High intensity duration: {{max_duration}}
|
||||
- Rest period requirement: {{min_rest_time}}
|
||||
- Intensity variation: {{pacing_pattern}}
|
||||
|
||||
|
||||
**Learning Sequences:**
|
||||
|
||||
|
||||
- New mechanic introduction: {{teaching_method}}
|
||||
- Practice opportunity: {{practice_duration}}
|
||||
- Skill application: {{application_context}}
|
||||
@@ -2132,14 +2132,14 @@ sections:
|
||||
instruction: Define how to create appropriate challenges for each level type
|
||||
template: |
|
||||
**Challenge Types:**
|
||||
|
||||
|
||||
- Execution challenges: {{skill_requirements}}
|
||||
- Puzzle challenges: {{complexity_guidelines}}
|
||||
- Time challenges: {{time_pressure_rules}}
|
||||
- Resource challenges: {{resource_management}}
|
||||
|
||||
|
||||
**Difficulty Calibration:**
|
||||
|
||||
|
||||
- Skill check frequency: {{frequency_guidelines}}
|
||||
- Failure recovery: {{retry_mechanics}}
|
||||
- Hint system integration: {{help_system}}
|
||||
@@ -2153,7 +2153,7 @@ sections:
|
||||
instruction: Define how level data should be structured for implementation
|
||||
template: |
|
||||
**Level File Format:**
|
||||
|
||||
|
||||
- Data format: {{json|yaml|custom}}
|
||||
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
||||
- Data organization: {{structure_description}}
|
||||
@@ -2191,14 +2191,14 @@ sections:
|
||||
instruction: Define how level assets are organized and loaded
|
||||
template: |
|
||||
**Tilemap Requirements:**
|
||||
|
||||
|
||||
- Tile size: {{tile_dimensions}}px
|
||||
- Tileset organization: {{tileset_structure}}
|
||||
- Layer organization: {{layer_system}}
|
||||
- Collision data: {{collision_format}}
|
||||
|
||||
|
||||
**Audio Integration:**
|
||||
|
||||
|
||||
- Background music: {{music_requirements}}
|
||||
- Ambient sounds: {{ambient_system}}
|
||||
- Dynamic audio: {{dynamic_audio_rules}}
|
||||
@@ -2207,19 +2207,19 @@ sections:
|
||||
instruction: Define performance requirements for level systems
|
||||
template: |
|
||||
**Entity Limits:**
|
||||
|
||||
|
||||
- Maximum active entities: {{entity_limit}}
|
||||
- Maximum particles: {{particle_limit}}
|
||||
- Maximum audio sources: {{audio_limit}}
|
||||
|
||||
|
||||
**Memory Management:**
|
||||
|
||||
|
||||
- Texture memory budget: {{texture_memory}}MB
|
||||
- Audio memory budget: {{audio_memory}}MB
|
||||
- Level loading time: <{{load_time}}s
|
||||
|
||||
|
||||
**Culling and LOD:**
|
||||
|
||||
|
||||
- Off-screen culling: {{culling_distance}}
|
||||
- Level-of-detail rules: {{lod_system}}
|
||||
- Asset streaming: {{streaming_requirements}}
|
||||
@@ -2232,13 +2232,13 @@ sections:
|
||||
title: Automated Testing
|
||||
template: |
|
||||
**Performance Testing:**
|
||||
|
||||
|
||||
- Frame rate validation: Maintain {{fps_target}} FPS
|
||||
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
||||
- Loading time verification: Complete in <{{load_time}}s
|
||||
|
||||
|
||||
**Gameplay Testing:**
|
||||
|
||||
|
||||
- Completion path validation: All objectives achievable
|
||||
- Collectible accessibility: All items reachable
|
||||
- Softlock prevention: No unwinnable states
|
||||
@@ -2266,14 +2266,14 @@ sections:
|
||||
title: Balance Validation
|
||||
template: |
|
||||
**Metrics Collection:**
|
||||
|
||||
|
||||
- Completion rate: Target {{completion_percentage}}%
|
||||
- Average completion time: {{target_time}} ± {{variance}}
|
||||
- Death count per level: <{{max_deaths}}
|
||||
- Collectible discovery rate: {{discovery_percentage}}%
|
||||
|
||||
|
||||
**Iteration Guidelines:**
|
||||
|
||||
|
||||
- Adjustment criteria: {{criteria_for_changes}}
|
||||
- Testing sample size: {{minimum_testers}}
|
||||
- Validation period: {{testing_duration}}
|
||||
@@ -2286,14 +2286,14 @@ sections:
|
||||
title: Design Phase
|
||||
template: |
|
||||
**Concept Development:**
|
||||
|
||||
|
||||
1. Define level purpose and goals
|
||||
2. Create rough layout sketch
|
||||
3. Identify key mechanics and challenges
|
||||
4. Estimate difficulty and duration
|
||||
|
||||
|
||||
**Documentation Requirements:**
|
||||
|
||||
|
||||
- Level design brief
|
||||
- Layout diagrams
|
||||
- Mechanic integration notes
|
||||
@@ -2302,15 +2302,15 @@ sections:
|
||||
title: Implementation Phase
|
||||
template: |
|
||||
**Technical Implementation:**
|
||||
|
||||
|
||||
1. Create level data file
|
||||
2. Build tilemap and layout
|
||||
3. Place entities and objects
|
||||
4. Configure level logic and triggers
|
||||
5. Integrate audio and visual effects
|
||||
|
||||
|
||||
**Quality Assurance:**
|
||||
|
||||
|
||||
1. Automated testing execution
|
||||
2. Internal playtesting
|
||||
3. Performance validation
|
||||
@@ -2319,14 +2319,14 @@ sections:
|
||||
title: Integration Phase
|
||||
template: |
|
||||
**Game Integration:**
|
||||
|
||||
|
||||
1. Level progression integration
|
||||
2. Save system compatibility
|
||||
3. Analytics integration
|
||||
4. Achievement system integration
|
||||
|
||||
|
||||
**Final Validation:**
|
||||
|
||||
|
||||
1. Full game context testing
|
||||
2. Performance regression testing
|
||||
3. Platform compatibility verification
|
||||
@@ -2379,7 +2379,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
||||
|
||||
|
||||
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
||||
|
||||
- id: game-vision
|
||||
@@ -2436,7 +2436,7 @@ sections:
|
||||
repeatable: true
|
||||
template: |
|
||||
**Core Mechanic: {{mechanic_name}}**
|
||||
|
||||
|
||||
- **Description:** {{how_it_works}}
|
||||
- **Player Value:** {{why_its_fun}}
|
||||
- **Implementation Scope:** {{complexity_estimate}}
|
||||
@@ -2463,12 +2463,12 @@ sections:
|
||||
title: Technical Constraints
|
||||
template: |
|
||||
**Platform Requirements:**
|
||||
|
||||
|
||||
- Primary: {{platform_1}} - {{requirements}}
|
||||
- Secondary: {{platform_2}} - {{requirements}}
|
||||
|
||||
|
||||
**Technical Specifications:**
|
||||
|
||||
|
||||
- Engine: Unity & C#
|
||||
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
||||
- Memory Budget: <{{memory_limit}}MB
|
||||
@@ -2506,10 +2506,10 @@ sections:
|
||||
title: Competitive Analysis
|
||||
template: |
|
||||
**Direct Competitors:**
|
||||
|
||||
|
||||
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
||||
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
||||
|
||||
|
||||
**Differentiation Strategy:**
|
||||
{{how_we_differ_and_why_thats_valuable}}
|
||||
- id: market-opportunity
|
||||
@@ -2533,16 +2533,16 @@ sections:
|
||||
title: Content Categories
|
||||
template: |
|
||||
**Core Content:**
|
||||
|
||||
|
||||
- {{content_type_1}}: {{quantity_and_description}}
|
||||
- {{content_type_2}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Optional Content:**
|
||||
|
||||
|
||||
- {{optional_content_type}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Replay Elements:**
|
||||
|
||||
|
||||
- {{replayability_features}}
|
||||
- id: difficulty-accessibility
|
||||
title: Difficulty and Accessibility
|
||||
@@ -2609,13 +2609,13 @@ sections:
|
||||
title: Player Experience Metrics
|
||||
template: |
|
||||
**Engagement Goals:**
|
||||
|
||||
|
||||
- Tutorial completion rate: >{{percentage}}%
|
||||
- Average session length: {{duration}} minutes
|
||||
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
||||
|
||||
|
||||
**Quality Benchmarks:**
|
||||
|
||||
|
||||
- Player satisfaction: >{{rating}}/10
|
||||
- Completion rate: >{{percentage}}%
|
||||
- Technical performance: {{fps_target}} FPS consistent
|
||||
@@ -2623,13 +2623,13 @@ sections:
|
||||
title: Development Metrics
|
||||
template: |
|
||||
**Technical Targets:**
|
||||
|
||||
|
||||
- Zero critical bugs at launch
|
||||
- Performance targets met on all platforms
|
||||
- Load times under {{seconds}}s
|
||||
|
||||
|
||||
**Process Goals:**
|
||||
|
||||
|
||||
- Development timeline adherence
|
||||
- Feature scope completion
|
||||
- Quality assurance standards
|
||||
@@ -2638,7 +2638,7 @@ sections:
|
||||
condition: has_business_goals
|
||||
template: |
|
||||
**Commercial Goals:**
|
||||
|
||||
|
||||
- {{revenue_target}} in first {{time_period}}
|
||||
- {{user_acquisition_target}} players in first {{time_period}}
|
||||
- {{retention_target}} monthly active users
|
||||
@@ -2691,12 +2691,12 @@ sections:
|
||||
title: Validation Plan
|
||||
template: |
|
||||
**Concept Testing:**
|
||||
|
||||
|
||||
- {{validation_method_1}} - {{timeline}}
|
||||
- {{validation_method_2}} - {{timeline}}
|
||||
|
||||
|
||||
**Prototype Testing:**
|
||||
|
||||
|
||||
- {{testing_approach}} - {{timeline}}
|
||||
- {{feedback_collection_method}} - {{timeline}}
|
||||
|
||||
@@ -3384,7 +3384,7 @@ Use the `shard-doc` task or `@kayvan/markdown-tree-parser` tool for automatic ga
|
||||
|
||||
- **Claude Code**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Cursor**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Trae**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Roo Code**: Select mode from mode selector with bmad2du prefix
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select the appropriate game agent.
|
||||
|
||||
@@ -524,13 +524,13 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
||||
|
||||
|
||||
Before starting, ensure you have access to:
|
||||
|
||||
|
||||
- Game Design Document (GDD)
|
||||
- Game Architecture Document
|
||||
- Any existing stories in this epic
|
||||
|
||||
|
||||
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
||||
|
||||
- id: story-header
|
||||
@@ -579,12 +579,12 @@ sections:
|
||||
title: Files to Create/Modify
|
||||
template: |
|
||||
**New Files:**
|
||||
|
||||
|
||||
- `{{file_path_1}}` - {{purpose}}
|
||||
- `{{file_path_2}}` - {{purpose}}
|
||||
|
||||
|
||||
**Modified Files:**
|
||||
|
||||
|
||||
- `{{existing_file_1}}` - {{changes_needed}}
|
||||
- `{{existing_file_2}}` - {{changes_needed}}
|
||||
- id: class-interface-definitions
|
||||
@@ -667,13 +667,13 @@ sections:
|
||||
instruction: Reference the specific sections of the GDD that this story implements
|
||||
template: |
|
||||
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
||||
|
||||
|
||||
**Game Mechanic:** {{mechanic_name}}
|
||||
|
||||
|
||||
**Player Experience Goal:** {{experience_description}}
|
||||
|
||||
|
||||
**Balance Parameters:**
|
||||
|
||||
|
||||
- {{parameter_1}}: {{value_or_range}}
|
||||
- {{parameter_2}}: {{value_or_range}}
|
||||
|
||||
@@ -720,15 +720,15 @@ sections:
|
||||
instruction: List any dependencies that must be completed before this story can be implemented
|
||||
template: |
|
||||
**Story Dependencies:**
|
||||
|
||||
|
||||
- {{story_id}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Technical Dependencies:**
|
||||
|
||||
|
||||
- {{system_or_file}}: {{requirement}}
|
||||
|
||||
|
||||
**Asset Dependencies:**
|
||||
|
||||
|
||||
- {{asset_type}}: {{asset_description}}
|
||||
- Location: `{{asset_path}}`
|
||||
|
||||
@@ -751,17 +751,17 @@ sections:
|
||||
instruction: Any additional context, design decisions, or implementation notes
|
||||
template: |
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{note_1}}
|
||||
- {{note_2}}
|
||||
|
||||
|
||||
**Design Decisions:**
|
||||
|
||||
|
||||
- {{decision_1}}: {{rationale}}
|
||||
- {{decision_2}}: {{rationale}}
|
||||
|
||||
|
||||
**Future Considerations:**
|
||||
|
||||
|
||||
- {{future_enhancement_1}}
|
||||
- {{future_optimization_1}}
|
||||
==================== END: .bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml ====================
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -552,18 +552,18 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
Initial Setup
|
||||
|
||||
|
||||
1. Replace {{project_name}} with the actual project name throughout the document
|
||||
2. Gather and review required inputs:
|
||||
- Product Requirements Document (PRD) - Required for business needs and scale requirements
|
||||
- Main System Architecture - Required for infrastructure dependencies
|
||||
- Technical Preferences/Tech Stack Document - Required for technology choices
|
||||
- PRD Technical Assumptions - Required for cross-referencing repository and service architecture
|
||||
|
||||
|
||||
If any required documents are missing, ask user: "I need the following documents to create a comprehensive infrastructure architecture: [list missing]. Would you like to proceed with available information or provide the missing documents first?"
|
||||
|
||||
|
||||
3. <critical_rule>Cross-reference with PRD Technical Assumptions to ensure infrastructure decisions align with repository and service architecture decisions made in the system architecture.</critical_rule>
|
||||
|
||||
|
||||
Output file location: `docs/infrastructure-architecture.md`
|
||||
|
||||
- id: infrastructure-overview
|
||||
@@ -592,7 +592,7 @@ sections:
|
||||
- Repository Structure
|
||||
- State Management
|
||||
- Dependency Management
|
||||
|
||||
|
||||
<critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule>
|
||||
|
||||
- id: environment-configuration
|
||||
@@ -628,7 +628,7 @@ sections:
|
||||
title: Network Architecture
|
||||
instruction: |
|
||||
Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns.
|
||||
|
||||
|
||||
Create Mermaid diagram showing:
|
||||
- VPC/Network structure
|
||||
- Security zones and boundaries
|
||||
@@ -691,7 +691,7 @@ sections:
|
||||
title: Data Resources
|
||||
instruction: |
|
||||
Design data infrastructure based on data architecture from main system design. Consider data volumes, access patterns, compliance, and recovery requirements.
|
||||
|
||||
|
||||
Create data flow diagram showing:
|
||||
- Database topology
|
||||
- Replication patterns
|
||||
@@ -712,7 +712,7 @@ sections:
|
||||
- Data Encryption
|
||||
- Compliance Controls
|
||||
- Security Scanning & Monitoring
|
||||
|
||||
|
||||
<critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule>
|
||||
|
||||
- id: shared-responsibility
|
||||
@@ -748,7 +748,7 @@ sections:
|
||||
title: CI/CD Pipeline
|
||||
instruction: |
|
||||
Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates.
|
||||
|
||||
|
||||
Create pipeline diagram showing:
|
||||
- Build stages
|
||||
- Test gates
|
||||
@@ -779,7 +779,7 @@ sections:
|
||||
- Recovery Procedures
|
||||
- RTO & RPO Targets
|
||||
- DR Testing Approach
|
||||
|
||||
|
||||
<critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule>
|
||||
|
||||
- id: cost-optimization
|
||||
@@ -821,15 +821,15 @@ sections:
|
||||
title: DevOps/Platform Feasibility Review
|
||||
instruction: |
|
||||
CRITICAL STEP - Present architectural blueprint summary to DevOps/Platform Engineering Agent for feasibility review. Request specific feedback on:
|
||||
|
||||
|
||||
- **Operational Complexity:** Are the proposed patterns implementable with current tooling and expertise?
|
||||
- **Resource Constraints:** Do infrastructure requirements align with available resources and budgets?
|
||||
- **Security Implementation:** Are security patterns achievable with current security toolchain?
|
||||
- **Operational Overhead:** Will the proposed architecture create excessive operational burden?
|
||||
- **Technology Constraints:** Are selected technologies compatible with existing infrastructure?
|
||||
|
||||
|
||||
Document all feasibility feedback and concerns raised. Iterate on architectural decisions based on operational constraints and feedback.
|
||||
|
||||
|
||||
<critical_rule>Address all critical feasibility concerns before proceeding to final architecture documentation. If critical blockers identified, revise architecture before continuing.</critical_rule>
|
||||
sections:
|
||||
- id: feasibility-results
|
||||
@@ -847,7 +847,7 @@ sections:
|
||||
title: Validation Framework
|
||||
content: |
|
||||
This infrastructure architecture will be validated using the comprehensive `infrastructure-checklist.md`, with particular focus on Section 12: Architecture Documentation Validation. The checklist ensures:
|
||||
|
||||
|
||||
- Completeness of architecture documentation
|
||||
- Consistency with broader system architecture
|
||||
- Appropriate level of detail for different stakeholders
|
||||
@@ -857,12 +857,12 @@ sections:
|
||||
title: Validation Process
|
||||
content: |
|
||||
The architecture documentation validation should be performed:
|
||||
|
||||
|
||||
- After initial architecture development
|
||||
- After significant architecture changes
|
||||
- Before major implementation phases
|
||||
- During periodic architecture reviews
|
||||
|
||||
|
||||
The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document.
|
||||
|
||||
- id: implementation-handoff
|
||||
@@ -873,7 +873,7 @@ sections:
|
||||
title: Architecture Decision Records (ADRs)
|
||||
content: |
|
||||
Create ADRs for key infrastructure decisions:
|
||||
|
||||
|
||||
- Cloud provider selection rationale
|
||||
- Container orchestration platform choice
|
||||
- Networking architecture decisions
|
||||
@@ -883,7 +883,7 @@ sections:
|
||||
title: Implementation Validation Criteria
|
||||
content: |
|
||||
Define specific criteria for validating correct implementation:
|
||||
|
||||
|
||||
- Infrastructure as Code quality gates
|
||||
- Security compliance checkpoints
|
||||
- Performance benchmarks
|
||||
@@ -943,7 +943,7 @@ sections:
|
||||
instruction: Final Review - Ensure all sections are complete and consistent. Verify feasibility review was conducted and all concerns addressed. Apply final validation against infrastructure checklist.
|
||||
content: |
|
||||
---
|
||||
|
||||
|
||||
_Document Version: 1.0_
|
||||
_Last Updated: {{current_date}}_
|
||||
_Next Review: {{review_date}}_
|
||||
@@ -980,7 +980,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
Initial Setup
|
||||
|
||||
|
||||
1. Replace {{project_name}} with the actual project name throughout the document
|
||||
2. Gather and review required inputs:
|
||||
- **Infrastructure Architecture Document** (Primary input - REQUIRED)
|
||||
@@ -989,10 +989,10 @@ sections:
|
||||
- Technology Stack Document
|
||||
- Infrastructure Checklist
|
||||
- NOTE: If Infrastructure Architecture Document is missing, HALT and request: "I need the Infrastructure Architecture Document to proceed with platform implementation. This document defines the infrastructure design that we'll be implementing."
|
||||
|
||||
|
||||
3. Validate that the infrastructure architecture has been reviewed and approved
|
||||
4. <critical_rule>All platform implementation must align with the approved infrastructure architecture. Any deviations require architect approval.</critical_rule>
|
||||
|
||||
|
||||
Output file location: `docs/platform-infrastructure/platform-implementation.md`
|
||||
|
||||
- id: executive-summary
|
||||
@@ -1065,7 +1065,7 @@ sections:
|
||||
# Example Terraform for VPC setup
|
||||
module "vpc" {
|
||||
source = "./modules/vpc"
|
||||
|
||||
|
||||
cidr_block = "{{vpc_cidr}}"
|
||||
availability_zones = {{availability_zones}}
|
||||
public_subnets = {{public_subnets}}
|
||||
@@ -1460,7 +1460,7 @@ sections:
|
||||
// K6 Load Test Example
|
||||
import http from 'k6/http';
|
||||
import { check } from 'k6';
|
||||
|
||||
|
||||
export let options = {
|
||||
stages: [
|
||||
{ duration: '5m', target: {{target_users}} },
|
||||
@@ -1574,7 +1574,7 @@ sections:
|
||||
instruction: Final Review - Ensure all platform layers are properly implemented, integrated, and documented. Verify that the implementation fully supports the BMAD methodology and all agent workflows. Confirm successful validation against the infrastructure checklist.
|
||||
content: |
|
||||
---
|
||||
|
||||
|
||||
_Platform Version: 1.0_
|
||||
_Implementation Date: {{implementation_date}}_
|
||||
_Next Review: {{review_date}}_
|
||||
|
||||
1450
dist/teams/team-all.txt
vendored
1450
dist/teams/team-all.txt
vendored
File diff suppressed because it is too large
Load Diff
589
dist/teams/team-fullstack.txt
vendored
589
dist/teams/team-fullstack.txt
vendored
File diff suppressed because it is too large
Load Diff
883
dist/teams/team-ide-minimal.txt
vendored
883
dist/teams/team-ide-minimal.txt
vendored
File diff suppressed because it is too large
Load Diff
519
dist/teams/team-no-ui.txt
vendored
519
dist/teams/team-no-ui.txt
vendored
File diff suppressed because it is too large
Load Diff
@@ -29,14 +29,14 @@ The Test Architect (Quinn) provides comprehensive quality assurance throughout t
|
||||
|
||||
### Quick Command Reference
|
||||
|
||||
| **Stage** | **Command** | **Purpose** | **Output** | **Priority** |
|
||||
|-----------|------------|-------------|------------|--------------|
|
||||
| **After Story Approval** | `*risk` | Identify integration & regression risks | `docs/qa/assessments/{epic}.{story}-risk-{YYYYMMDD}.md` | High for complex/brownfield |
|
||||
| | `*design` | Create test strategy for dev | `docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md` | High for new features |
|
||||
| **During Development** | `*trace` | Verify test coverage | `docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md` | Medium |
|
||||
| | `*nfr` | Validate quality attributes | `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md` | High for critical features |
|
||||
| **After Development** | `*review` | Comprehensive assessment | QA Results in story + `docs/qa/gates/{epic}.{story}-{slug}.yml` | **Required** |
|
||||
| **Post-Review** | `*gate` | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` | As needed |
|
||||
| **Stage** | **Command** | **Purpose** | **Output** | **Priority** |
|
||||
| ------------------------ | ----------- | --------------------------------------- | --------------------------------------------------------------- | --------------------------- |
|
||||
| **After Story Approval** | `*risk` | Identify integration & regression risks | `docs/qa/assessments/{epic}.{story}-risk-{YYYYMMDD}.md` | High for complex/brownfield |
|
||||
| | `*design` | Create test strategy for dev | `docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md` | High for new features |
|
||||
| **During Development** | `*trace` | Verify test coverage | `docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md` | Medium |
|
||||
| | `*nfr` | Validate quality attributes | `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md` | High for critical features |
|
||||
| **After Development** | `*review` | Comprehensive assessment | QA Results in story + `docs/qa/gates/{epic}.{story}-{slug}.yml` | **Required** |
|
||||
| **Post-Review** | `*gate` | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` | As needed |
|
||||
|
||||
### Stage 1: After Story Creation (Before Dev Starts)
|
||||
|
||||
@@ -134,24 +134,24 @@ The Test Architect (Quinn) provides comprehensive quality assurance throughout t
|
||||
|
||||
### Understanding Gate Decisions
|
||||
|
||||
| **Status** | **Meaning** | **Action Required** | **Can Proceed?** |
|
||||
|------------|-------------|-------------------|------------------|
|
||||
| **PASS** | All critical requirements met | None | ✅ Yes |
|
||||
| **CONCERNS** | Non-critical issues found | Team review recommended | ⚠️ With caution |
|
||||
| **FAIL** | Critical issues (security, missing P0 tests) | Must fix | ❌ No |
|
||||
| **WAIVED** | Issues acknowledged and accepted | Document reasoning | ✅ With approval |
|
||||
| **Status** | **Meaning** | **Action Required** | **Can Proceed?** |
|
||||
| ------------ | -------------------------------------------- | ----------------------- | ---------------- |
|
||||
| **PASS** | All critical requirements met | None | ✅ Yes |
|
||||
| **CONCERNS** | Non-critical issues found | Team review recommended | ⚠️ With caution |
|
||||
| **FAIL** | Critical issues (security, missing P0 tests) | Must fix | ❌ No |
|
||||
| **WAIVED** | Issues acknowledged and accepted | Document reasoning | ✅ With approval |
|
||||
|
||||
### Risk-Based Testing Strategy
|
||||
|
||||
The Test Architect uses risk scoring to prioritize testing:
|
||||
|
||||
| **Risk Score** | **Calculation** | **Testing Priority** | **Gate Impact** |
|
||||
|---------------|----------------|-------------------|----------------|
|
||||
| **9** | High probability × High impact | P0 - Must test thoroughly | FAIL if untested |
|
||||
| **6** | Medium-high combinations | P1 - Should test well | CONCERNS if gaps |
|
||||
| **4** | Medium combinations | P1 - Should test | CONCERNS if notable gaps |
|
||||
| **2-3** | Low-medium combinations | P2 - Nice to have | Note in review |
|
||||
| **1** | Minimal risk | P2 - Minimal | Note in review |
|
||||
| **Risk Score** | **Calculation** | **Testing Priority** | **Gate Impact** |
|
||||
| -------------- | ------------------------------ | ------------------------- | ------------------------ |
|
||||
| **9** | High probability × High impact | P0 - Must test thoroughly | FAIL if untested |
|
||||
| **6** | Medium-high combinations | P1 - Should test well | CONCERNS if gaps |
|
||||
| **4** | Medium combinations | P1 - Should test | CONCERNS if notable gaps |
|
||||
| **2-3** | Low-medium combinations | P2 - Nice to have | Note in review |
|
||||
| **1** | Minimal risk | P2 - Minimal | Note in review |
|
||||
|
||||
### Special Situations & Best Practices
|
||||
|
||||
@@ -227,14 +227,14 @@ All Test Architect activities create permanent records:
|
||||
|
||||
**Should I run Test Architect commands?**
|
||||
|
||||
| **Scenario** | **Before Dev** | **During Dev** | **After Dev** |
|
||||
|-------------|---------------|----------------|---------------|
|
||||
| **Simple bug fix** | Optional | Optional | Required `*review` |
|
||||
| **New feature** | Recommended `*risk`, `*design` | Optional `*trace` | Required `*review` |
|
||||
| **Brownfield change** | **Required** `*risk`, `*design` | Recommended `*trace`, `*nfr` | Required `*review` |
|
||||
| **API modification** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` |
|
||||
| **Performance-critical** | Recommended `*design` | **Required** `*nfr` | Required `*review` |
|
||||
| **Data migration** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` + `*gate` |
|
||||
| **Scenario** | **Before Dev** | **During Dev** | **After Dev** |
|
||||
| ------------------------ | ------------------------------- | ---------------------------- | ---------------------------- |
|
||||
| **Simple bug fix** | Optional | Optional | Required `*review` |
|
||||
| **New feature** | Recommended `*risk`, `*design` | Optional `*trace` | Required `*review` |
|
||||
| **Brownfield change** | **Required** `*risk`, `*design` | Recommended `*trace`, `*nfr` | Required `*review` |
|
||||
| **API modification** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` |
|
||||
| **Performance-critical** | Recommended `*design` | **Required** `*nfr` | Required `*review` |
|
||||
| **Data migration** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` + `*gate` |
|
||||
|
||||
### Success Metrics
|
||||
|
||||
|
||||
@@ -277,7 +277,7 @@ The documentation uses short forms for convenience. Both styles are valid:
|
||||
|
||||
```text
|
||||
*risk → *risk-profile
|
||||
*design → *test-design
|
||||
*design → *test-design
|
||||
*nfr → *nfr-assess
|
||||
*trace → *trace-requirements (or just *trace)
|
||||
*review → *review
|
||||
@@ -376,14 +376,14 @@ Manages quality gate decisions:
|
||||
|
||||
The Test Architect provides value throughout the entire development lifecycle. Here's when and how to leverage each capability:
|
||||
|
||||
| **Stage** | **Command** | **When to Use** | **Value** | **Output** |
|
||||
|-----------|------------|-----------------|-----------|------------|
|
||||
| **Story Drafting** | `*risk` | After SM drafts story | Identify pitfalls early | `docs/qa/assessments/{epic}.{story}-risk-{YYYYMMDD}.md` |
|
||||
| | `*design` | After risk assessment | Guide dev on test strategy | `docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md` |
|
||||
| **Development** | `*trace` | Mid-implementation | Verify test coverage | `docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md` |
|
||||
| | `*nfr` | While building features | Catch quality issues early | `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md` |
|
||||
| **Review** | `*review` | Story marked complete | Full quality assessment | QA Results in story + gate file |
|
||||
| **Post-Review** | `*gate` | After fixing issues | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` |
|
||||
| **Stage** | **Command** | **When to Use** | **Value** | **Output** |
|
||||
| ------------------ | ----------- | ----------------------- | -------------------------- | -------------------------------------------------------------- |
|
||||
| **Story Drafting** | `*risk` | After SM drafts story | Identify pitfalls early | `docs/qa/assessments/{epic}.{story}-risk-{YYYYMMDD}.md` |
|
||||
| | `*design` | After risk assessment | Guide dev on test strategy | `docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md` |
|
||||
| **Development** | `*trace` | Mid-implementation | Verify test coverage | `docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md` |
|
||||
| | `*nfr` | While building features | Catch quality issues early | `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md` |
|
||||
| **Review** | `*review` | Story marked complete | Full quality assessment | QA Results in story + gate file |
|
||||
| **Post-Review** | `*gate` | After fixing issues | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` |
|
||||
|
||||
#### Example Commands
|
||||
|
||||
|
||||
@@ -1,77 +1,147 @@
|
||||
# How to Release a New Version
|
||||
# Versioning and Releases
|
||||
|
||||
## Automated Releases (Recommended)
|
||||
BMad Method uses a simplified release system with manual control and automatic release notes generation.
|
||||
|
||||
The easiest way to release new versions is through **automatic semantic releases**. Just commit with the right message format and push and everything else happens automatically.
|
||||
## 🚀 Release Workflow
|
||||
|
||||
### Commit Message Format
|
||||
### Command Line Release (Recommended)
|
||||
|
||||
Use these prefixes to control what type of release happens:
|
||||
The fastest way to create a release with beautiful release notes:
|
||||
|
||||
```bash
|
||||
fix: resolve CLI argument parsing bug # → patch release (4.1.0 → 4.1.1)
|
||||
feat: add new agent orchestration mode # → minor release (4.1.0 → 4.2.0)
|
||||
feat!: redesign CLI interface # → major release (4.1.0 → 5.0.0)
|
||||
# Preview what will be in the release
|
||||
npm run preview:release
|
||||
|
||||
# Create a release
|
||||
npm run release:patch # 5.1.0 → 5.1.1 (bug fixes)
|
||||
npm run release:minor # 5.1.0 → 5.2.0 (new features)
|
||||
npm run release:major # 5.1.0 → 6.0.0 (breaking changes)
|
||||
|
||||
# Watch the release process
|
||||
npm run release:watch
|
||||
```
|
||||
|
||||
### What Happens Automatically
|
||||
|
||||
When you push commits with `fix:` or `feat:`, GitHub Actions will:
|
||||
|
||||
1. ✅ Analyze your commit messages
|
||||
2. ✅ Bump version in `package.json`
|
||||
3. ✅ Generate changelog
|
||||
4. ✅ Create git tag
|
||||
5. ✅ **Publish to NPM automatically**
|
||||
6. ✅ Create GitHub release with notes
|
||||
|
||||
### Your Simple Workflow
|
||||
### One-Liner Release
|
||||
|
||||
```bash
|
||||
# Make your changes
|
||||
git add .
|
||||
git commit -m "feat: add team collaboration mode"
|
||||
git push
|
||||
|
||||
# That's it! Release happens automatically 🎉
|
||||
# Users can now run: npx bmad-method (and get the new version)
|
||||
npm run preview:release && npm run release:minor && npm run release:watch
|
||||
```
|
||||
|
||||
### Commits That DON'T Trigger Releases
|
||||
## 📝 What Happens Automatically
|
||||
|
||||
These commit types won't create releases (use them for maintenance):
|
||||
When you trigger a release, the GitHub Actions workflow automatically:
|
||||
|
||||
1. ✅ **Validates** - Runs tests, linting, and formatting checks
|
||||
2. ✅ **Bumps Version** - Updates `package.json` and installer version
|
||||
3. ✅ **Generates Release Notes** - Categorizes commits since last release:
|
||||
- ✨ **New Features** (`feat:`, `Feature:`)
|
||||
- 🐛 **Bug Fixes** (`fix:`, `Fix:`)
|
||||
- 🔧 **Maintenance** (`chore:`, `Chore:`)
|
||||
- 📦 **Other Changes** (everything else)
|
||||
4. ✅ **Creates Git Tag** - Tags the release version
|
||||
5. ✅ **Publishes to NPM** - With `@latest` tag for user installations
|
||||
6. ✅ **Creates GitHub Release** - With formatted release notes
|
||||
|
||||
## 📋 Sample Release Notes
|
||||
|
||||
The workflow automatically generates professional release notes like this:
|
||||
|
||||
````markdown
|
||||
## 🚀 What's New in v5.2.0
|
||||
|
||||
### ✨ New Features
|
||||
|
||||
- feat: add team collaboration mode
|
||||
- feat: enhance CLI with interactive prompts
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- fix: resolve installation path issues
|
||||
- fix: handle edge cases in agent loading
|
||||
|
||||
### 🔧 Maintenance
|
||||
|
||||
- chore: update dependencies
|
||||
- chore: improve error messages
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
```bash
|
||||
chore: update dependencies # No release
|
||||
docs: fix typo in readme # No release
|
||||
style: format code # No release
|
||||
test: add unit tests # No release
|
||||
npx bmad-method install
|
||||
```
|
||||
````
|
||||
|
||||
### Test Your Setup
|
||||
**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/v5.1.0...v5.2.0
|
||||
|
||||
````
|
||||
|
||||
## 🎯 User Installation
|
||||
|
||||
After any release, users can immediately get the new version with:
|
||||
|
||||
```bash
|
||||
npm run release:test # Safe to run locally - tests the config
|
||||
npx bmad-method install # Always gets latest release
|
||||
```
|
||||
|
||||
---
|
||||
## 📊 Preview Before Release
|
||||
|
||||
## Manual Release Methods (Exceptions Only)
|
||||
|
||||
⚠️ Only use these methods if you need to bypass the automatic system
|
||||
|
||||
### Quick Manual Version Bump
|
||||
Always preview what will be included in your release:
|
||||
|
||||
```bash
|
||||
npm run version:patch # 4.1.0 → 4.1.1 (bug fixes)
|
||||
npm run version:minor # 4.1.0 → 4.2.0 (new features)
|
||||
npm run version:major # 4.1.0 → 5.0.0 (breaking changes)
|
||||
|
||||
# Then manually publish:
|
||||
npm publish
|
||||
git push && git push --tags
|
||||
npm run preview:release
|
||||
```
|
||||
|
||||
### Manual GitHub Actions Trigger
|
||||
This shows:
|
||||
|
||||
You can also trigger releases manually through GitHub Actions workflow dispatch if needed.
|
||||
- Commits since last release
|
||||
- Categorized changes
|
||||
- Estimated next version
|
||||
- Release notes preview
|
||||
|
||||
## 🔧 Manual Release (GitHub UI)
|
||||
|
||||
You can also trigger releases through GitHub Actions:
|
||||
|
||||
1. Go to **GitHub Actions** → **Manual Release**
|
||||
2. Click **"Run workflow"**
|
||||
3. Choose version bump type (patch/minor/major)
|
||||
4. Everything else happens automatically
|
||||
|
||||
## 📈 Version Strategy
|
||||
|
||||
- **Patch** (5.1.0 → 5.1.1): Bug fixes, minor improvements
|
||||
- **Minor** (5.1.0 → 5.2.0): New features, enhancements
|
||||
- **Major** (5.1.0 → 6.0.0): Breaking changes, major redesigns
|
||||
|
||||
## 🛠️ Development Workflow
|
||||
|
||||
1. **Develop Freely** - Merge PRs to main without triggering releases
|
||||
2. **Test Unreleased Changes** - Clone repo to test latest main branch
|
||||
3. **Release When Ready** - Use command line or GitHub Actions to cut releases
|
||||
4. **Users Get Updates** - Via simple `npx bmad-method install` command
|
||||
|
||||
This gives you complete control over when releases happen while automating all the tedious parts like version bumping, release notes, and publishing.
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### Check Release Status
|
||||
|
||||
```bash
|
||||
gh run list --workflow="Manual Release"
|
||||
npm view bmad-method dist-tags
|
||||
git tag -l | sort -V | tail -5
|
||||
```
|
||||
|
||||
### View Latest Release
|
||||
|
||||
```bash
|
||||
gh release view --web
|
||||
npm view bmad-method versions --json
|
||||
```
|
||||
|
||||
### If Release Fails
|
||||
|
||||
- Check GitHub Actions logs: `gh run view <run-id> --log-failed`
|
||||
- Verify NPM tokens are configured
|
||||
- Ensure branch protection allows workflow pushes
|
||||
````
|
||||
|
||||
119
eslint.config.mjs
Normal file
119
eslint.config.mjs
Normal file
@@ -0,0 +1,119 @@
|
||||
import js from '@eslint/js';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||
import nodePlugin from 'eslint-plugin-n';
|
||||
import unicorn from 'eslint-plugin-unicorn';
|
||||
import yml from 'eslint-plugin-yml';
|
||||
|
||||
export default [
|
||||
// Global ignores for files/folders that should not be linted
|
||||
{
|
||||
ignores: ['dist/**', 'coverage/**', '**/*.min.js'],
|
||||
},
|
||||
|
||||
// Base JavaScript recommended rules
|
||||
js.configs.recommended,
|
||||
|
||||
// Node.js rules
|
||||
...nodePlugin.configs['flat/mixed-esm-and-cjs'],
|
||||
|
||||
// Unicorn rules (modern best practices)
|
||||
unicorn.configs.recommended,
|
||||
|
||||
// YAML linting
|
||||
...yml.configs['flat/recommended'],
|
||||
|
||||
// Place Prettier last to disable conflicting stylistic rules
|
||||
eslintConfigPrettier,
|
||||
|
||||
// Project-specific tweaks
|
||||
{
|
||||
rules: {
|
||||
// Allow console for CLI tools in this repo
|
||||
'no-console': 'off',
|
||||
// Enforce .yaml file extension for consistency
|
||||
'yml/file-extension': [
|
||||
'error',
|
||||
{
|
||||
extension: 'yaml',
|
||||
caseSensitive: true,
|
||||
},
|
||||
],
|
||||
// Prefer double quotes in YAML wherever quoting is used, but allow the other to avoid escapes
|
||||
'yml/quotes': [
|
||||
'error',
|
||||
{
|
||||
prefer: 'double',
|
||||
avoidEscape: true,
|
||||
},
|
||||
],
|
||||
// Relax some Unicorn rules that are too opinionated for this codebase
|
||||
'unicorn/prevent-abbreviations': 'off',
|
||||
'unicorn/no-null': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// CLI/CommonJS scripts under tools/**
|
||||
{
|
||||
files: ['tools/**/*.js'],
|
||||
rules: {
|
||||
// Allow CommonJS patterns for Node CLI scripts
|
||||
'unicorn/prefer-module': 'off',
|
||||
'unicorn/import-style': 'off',
|
||||
'unicorn/no-process-exit': 'off',
|
||||
'n/no-process-exit': 'off',
|
||||
'unicorn/no-await-expression-member': 'off',
|
||||
'unicorn/prefer-top-level-await': 'off',
|
||||
// Avoid failing CI on incidental unused vars in internal scripts
|
||||
'no-unused-vars': 'off',
|
||||
// Reduce style-only churn in internal tools
|
||||
'unicorn/prefer-ternary': 'off',
|
||||
'unicorn/filename-case': 'off',
|
||||
'unicorn/no-array-reduce': 'off',
|
||||
'unicorn/no-array-callback-reference': 'off',
|
||||
'unicorn/consistent-function-scoping': 'off',
|
||||
'n/no-extraneous-require': 'off',
|
||||
'n/no-extraneous-import': 'off',
|
||||
'n/no-unpublished-require': 'off',
|
||||
'n/no-unpublished-import': 'off',
|
||||
// Some scripts intentionally use globals provided at runtime
|
||||
'no-undef': 'off',
|
||||
// Additional relaxed rules for legacy/internal scripts
|
||||
'no-useless-catch': 'off',
|
||||
'unicorn/prefer-number-properties': 'off',
|
||||
'no-unreachable': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// ESLint config file should not be checked for publish-related Node rules
|
||||
{
|
||||
files: ['eslint.config.mjs'],
|
||||
rules: {
|
||||
'n/no-unpublished-import': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// YAML workflow templates allow empty mapping values intentionally
|
||||
{
|
||||
files: ['bmad-core/workflows/**/*.yaml'],
|
||||
rules: {
|
||||
'yml/no-empty-mapping-value': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// GitHub workflow files in this repo may use empty mapping values
|
||||
{
|
||||
files: ['.github/workflows/**/*.yaml'],
|
||||
rules: {
|
||||
'yml/no-empty-mapping-value': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Other GitHub YAML files may intentionally use empty values and reserved filenames
|
||||
{
|
||||
files: ['.github/**/*.yaml'],
|
||||
rules: {
|
||||
'yml/no-empty-mapping-value': 'off',
|
||||
'unicorn/filename-case': 'off',
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -1,26 +1,26 @@
|
||||
steps:
|
||||
# Build the container image
|
||||
- name: 'gcr.io/cloud-builders/docker'
|
||||
args: ['build', '-t', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA', '.']
|
||||
|
||||
# Push the container image to Container Registry
|
||||
- name: 'gcr.io/cloud-builders/docker'
|
||||
args: ['push', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA']
|
||||
|
||||
# Deploy container image to Cloud Run
|
||||
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
|
||||
entrypoint: gcloud
|
||||
args:
|
||||
- 'run'
|
||||
- 'deploy'
|
||||
- '{{COMPANY_NAME}}-ai-agents'
|
||||
- '--image'
|
||||
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA'
|
||||
- '--region'
|
||||
- '{{LOCATION}}'
|
||||
- '--platform'
|
||||
- 'managed'
|
||||
- '--allow-unauthenticated'
|
||||
|
||||
images:
|
||||
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA'
|
||||
steps:
|
||||
# Build the container image
|
||||
- name: "gcr.io/cloud-builders/docker"
|
||||
args: ["build", "-t", "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA", "."]
|
||||
|
||||
# Push the container image to Container Registry
|
||||
- name: "gcr.io/cloud-builders/docker"
|
||||
args: ["push", "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"]
|
||||
|
||||
# Deploy container image to Cloud Run
|
||||
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
|
||||
entrypoint: gcloud
|
||||
args:
|
||||
- "run"
|
||||
- "deploy"
|
||||
- "{{COMPANY_NAME}}-ai-agents"
|
||||
- "--image"
|
||||
- "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"
|
||||
- "--region"
|
||||
- "{{LOCATION}}"
|
||||
- "--platform"
|
||||
- "managed"
|
||||
- "--allow-unauthenticated"
|
||||
|
||||
images:
|
||||
- "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"
|
||||
|
||||
@@ -60,10 +60,10 @@ commands:
|
||||
task-execution:
|
||||
flow: Read story → Implement game feature → Write tests → Pass tests → Update [x] → Next task
|
||||
updates-ONLY:
|
||||
- "Checkboxes: [ ] not started | [-] in progress | [x] complete"
|
||||
- "Debug Log: | Task | File | Change | Reverted? |"
|
||||
- "Completion Notes: Deviations only, <50 words"
|
||||
- "Change Log: Requirement changes only"
|
||||
- 'Checkboxes: [ ] not started | [-] in progress | [x] complete'
|
||||
- 'Debug Log: | Task | File | Change | Reverted? |'
|
||||
- 'Completion Notes: Deviations only, <50 words'
|
||||
- 'Change Log: Requirement changes only'
|
||||
blocking: Unapproved deps | Ambiguous after story check | 3 failures | Missing game config
|
||||
done: Game feature works + Tests pass + 60 FPS + No lint errors + Follows Phaser 3 best practices
|
||||
dependencies:
|
||||
|
||||
@@ -27,7 +27,7 @@ activation-instructions:
|
||||
- When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
|
||||
- STAY IN CHARACTER!
|
||||
- CRITICAL: On activation, ONLY greet user and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
||||
- "CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Game Developer Agent"
|
||||
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Game Developer Agent'
|
||||
agent:
|
||||
name: Jordan
|
||||
id: game-sm
|
||||
|
||||
@@ -73,7 +73,7 @@ interface GameState {
|
||||
interface GameSettings {
|
||||
musicVolume: number;
|
||||
sfxVolume: number;
|
||||
difficulty: "easy" | "normal" | "hard";
|
||||
difficulty: 'easy' | 'normal' | 'hard';
|
||||
controls: ControlScheme;
|
||||
}
|
||||
```
|
||||
@@ -114,12 +114,12 @@ class GameScene extends Phaser.Scene {
|
||||
private inputManager!: InputManager;
|
||||
|
||||
constructor() {
|
||||
super({ key: "GameScene" });
|
||||
super({ key: 'GameScene' });
|
||||
}
|
||||
|
||||
preload(): void {
|
||||
// Load only scene-specific assets
|
||||
this.load.image("player", "assets/player.png");
|
||||
this.load.image('player', 'assets/player.png');
|
||||
}
|
||||
|
||||
create(data: SceneData): void {
|
||||
@@ -144,7 +144,7 @@ class GameScene extends Phaser.Scene {
|
||||
this.inputManager.destroy();
|
||||
|
||||
// Remove event listeners
|
||||
this.events.off("*");
|
||||
this.events.off('*');
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -153,13 +153,13 @@ class GameScene extends Phaser.Scene {
|
||||
|
||||
```typescript
|
||||
// Proper scene transitions with data
|
||||
this.scene.start("NextScene", {
|
||||
this.scene.start('NextScene', {
|
||||
playerScore: this.playerScore,
|
||||
currentLevel: this.currentLevel + 1,
|
||||
});
|
||||
|
||||
// Scene overlays for UI
|
||||
this.scene.launch("PauseMenuScene");
|
||||
this.scene.launch('PauseMenuScene');
|
||||
this.scene.pause();
|
||||
```
|
||||
|
||||
@@ -203,7 +203,7 @@ class Player extends GameEntity {
|
||||
private health!: HealthComponent;
|
||||
|
||||
constructor(scene: Phaser.Scene, x: number, y: number) {
|
||||
super(scene, x, y, "player");
|
||||
super(scene, x, y, 'player');
|
||||
|
||||
this.movement = this.addComponent(new MovementComponent(this));
|
||||
this.health = this.addComponent(new HealthComponent(this, 100));
|
||||
@@ -223,7 +223,7 @@ class GameManager {
|
||||
|
||||
constructor(scene: Phaser.Scene) {
|
||||
if (GameManager.instance) {
|
||||
throw new Error("GameManager already exists!");
|
||||
throw new Error('GameManager already exists!');
|
||||
}
|
||||
|
||||
this.scene = scene;
|
||||
@@ -233,7 +233,7 @@ class GameManager {
|
||||
|
||||
static getInstance(): GameManager {
|
||||
if (!GameManager.instance) {
|
||||
throw new Error("GameManager not initialized!");
|
||||
throw new Error('GameManager not initialized!');
|
||||
}
|
||||
return GameManager.instance;
|
||||
}
|
||||
@@ -280,7 +280,7 @@ class BulletPool {
|
||||
}
|
||||
|
||||
// Pool exhausted - create new bullet
|
||||
console.warn("Bullet pool exhausted, creating new bullet");
|
||||
console.warn('Bullet pool exhausted, creating new bullet');
|
||||
return new Bullet(this.scene, 0, 0);
|
||||
}
|
||||
|
||||
@@ -380,14 +380,12 @@ class InputManager {
|
||||
}
|
||||
|
||||
private setupKeyboard(): void {
|
||||
this.keys = this.scene.input.keyboard.addKeys(
|
||||
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
|
||||
);
|
||||
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
||||
}
|
||||
|
||||
private setupTouch(): void {
|
||||
this.scene.input.on("pointerdown", this.handlePointerDown, this);
|
||||
this.scene.input.on("pointerup", this.handlePointerUp, this);
|
||||
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
||||
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
||||
}
|
||||
|
||||
update(): void {
|
||||
@@ -414,9 +412,9 @@ class InputManager {
|
||||
class AssetManager {
|
||||
loadAssets(): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.scene.load.on("filecomplete", this.handleFileComplete, this);
|
||||
this.scene.load.on("loaderror", this.handleLoadError, this);
|
||||
this.scene.load.on("complete", () => resolve());
|
||||
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
||||
this.scene.load.on('loaderror', this.handleLoadError, this);
|
||||
this.scene.load.on('complete', () => resolve());
|
||||
|
||||
this.scene.load.start();
|
||||
});
|
||||
@@ -432,8 +430,8 @@ class AssetManager {
|
||||
private loadFallbackAsset(key: string): void {
|
||||
// Load placeholder or default assets
|
||||
switch (key) {
|
||||
case "player":
|
||||
this.scene.load.image("player", "assets/defaults/default-player.png");
|
||||
case 'player':
|
||||
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
||||
break;
|
||||
default:
|
||||
console.warn(`No fallback for asset: ${key}`);
|
||||
@@ -460,11 +458,11 @@ class GameSystem {
|
||||
|
||||
private attemptRecovery(context: string): void {
|
||||
switch (context) {
|
||||
case "update":
|
||||
case 'update':
|
||||
// Reset system state
|
||||
this.reset();
|
||||
break;
|
||||
case "render":
|
||||
case 'render':
|
||||
// Disable visual effects
|
||||
this.disableEffects();
|
||||
break;
|
||||
@@ -484,7 +482,7 @@ class GameSystem {
|
||||
|
||||
```typescript
|
||||
// Example test for game mechanics
|
||||
describe("HealthComponent", () => {
|
||||
describe('HealthComponent', () => {
|
||||
let healthComponent: HealthComponent;
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -492,18 +490,18 @@ describe("HealthComponent", () => {
|
||||
healthComponent = new HealthComponent(mockEntity, 100);
|
||||
});
|
||||
|
||||
test("should initialize with correct health", () => {
|
||||
test('should initialize with correct health', () => {
|
||||
expect(healthComponent.currentHealth).toBe(100);
|
||||
expect(healthComponent.maxHealth).toBe(100);
|
||||
});
|
||||
|
||||
test("should handle damage correctly", () => {
|
||||
test('should handle damage correctly', () => {
|
||||
healthComponent.takeDamage(25);
|
||||
expect(healthComponent.currentHealth).toBe(75);
|
||||
expect(healthComponent.isAlive()).toBe(true);
|
||||
});
|
||||
|
||||
test("should handle death correctly", () => {
|
||||
test('should handle death correctly', () => {
|
||||
healthComponent.takeDamage(150);
|
||||
expect(healthComponent.currentHealth).toBe(0);
|
||||
expect(healthComponent.isAlive()).toBe(false);
|
||||
@@ -516,7 +514,7 @@ describe("HealthComponent", () => {
|
||||
**Scene Testing:**
|
||||
|
||||
```typescript
|
||||
describe("GameScene Integration", () => {
|
||||
describe('GameScene Integration', () => {
|
||||
let scene: GameScene;
|
||||
let mockGame: Phaser.Game;
|
||||
|
||||
@@ -526,7 +524,7 @@ describe("GameScene Integration", () => {
|
||||
scene = new GameScene();
|
||||
});
|
||||
|
||||
test("should initialize all systems", () => {
|
||||
test('should initialize all systems', () => {
|
||||
scene.create({});
|
||||
|
||||
expect(scene.gameManager).toBeDefined();
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
|
||||
|
||||
|
||||
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
||||
|
||||
- id: introduction
|
||||
@@ -22,7 +22,7 @@ sections:
|
||||
instruction: Establish the document's purpose and scope for game development
|
||||
content: |
|
||||
This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
|
||||
|
||||
|
||||
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -41,7 +41,7 @@ sections:
|
||||
title: Architecture Summary
|
||||
instruction: |
|
||||
Provide a comprehensive overview covering:
|
||||
|
||||
|
||||
- Game engine choice and configuration
|
||||
- Project structure and organization
|
||||
- Key systems and their interactions
|
||||
@@ -129,23 +129,23 @@ sections:
|
||||
title: Scene Management System
|
||||
template: |
|
||||
**Purpose:** Handle game flow and scene transitions
|
||||
|
||||
|
||||
**Key Components:**
|
||||
|
||||
|
||||
- Scene loading and unloading
|
||||
- Data passing between scenes
|
||||
- Transition effects
|
||||
- Memory management
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Preload scene for asset loading
|
||||
- Menu system with navigation
|
||||
- Gameplay scenes with state management
|
||||
- Pause/resume functionality
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/scenes/BootScene.ts`
|
||||
- `src/scenes/PreloadScene.ts`
|
||||
- `src/scenes/MenuScene.ts`
|
||||
@@ -155,23 +155,23 @@ sections:
|
||||
title: Game State Management
|
||||
template: |
|
||||
**Purpose:** Track player progress and game status
|
||||
|
||||
|
||||
**State Categories:**
|
||||
|
||||
|
||||
- Player progress (levels, unlocks)
|
||||
- Game settings (audio, controls)
|
||||
- Session data (current level, score)
|
||||
- Persistent data (achievements, statistics)
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Save/load system with localStorage
|
||||
- State validation and error recovery
|
||||
- Cross-session data persistence
|
||||
- Settings management
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/GameState.ts`
|
||||
- `src/systems/SaveManager.ts`
|
||||
- `src/types/GameData.ts`
|
||||
@@ -179,23 +179,23 @@ sections:
|
||||
title: Asset Management System
|
||||
template: |
|
||||
**Purpose:** Efficient loading and management of game assets
|
||||
|
||||
|
||||
**Asset Categories:**
|
||||
|
||||
|
||||
- Sprite sheets and animations
|
||||
- Audio files and music
|
||||
- Level data and configurations
|
||||
- UI assets and fonts
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Progressive loading strategy
|
||||
- Asset caching and optimization
|
||||
- Error handling for failed loads
|
||||
- Memory management for large assets
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/AssetManager.ts`
|
||||
- `src/config/AssetConfig.ts`
|
||||
- `src/utils/AssetLoader.ts`
|
||||
@@ -203,23 +203,23 @@ sections:
|
||||
title: Input Management System
|
||||
template: |
|
||||
**Purpose:** Handle all player input across platforms
|
||||
|
||||
|
||||
**Input Types:**
|
||||
|
||||
|
||||
- Keyboard controls
|
||||
- Mouse/pointer interaction
|
||||
- Touch gestures (mobile)
|
||||
- Gamepad support (optional)
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Input mapping and configuration
|
||||
- Touch-friendly mobile controls
|
||||
- Input buffering for responsive gameplay
|
||||
- Customizable control schemes
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/InputManager.ts`
|
||||
- `src/utils/TouchControls.ts`
|
||||
- `src/types/InputTypes.ts`
|
||||
@@ -232,19 +232,19 @@ sections:
|
||||
title: "{{mechanic_name}} System"
|
||||
template: |
|
||||
**Purpose:** {{system_purpose}}
|
||||
|
||||
|
||||
**Core Functionality:**
|
||||
|
||||
|
||||
- {{feature_1}}
|
||||
- {{feature_2}}
|
||||
- {{feature_3}}
|
||||
|
||||
|
||||
**Dependencies:** {{required_systems}}
|
||||
|
||||
|
||||
**Performance Considerations:** {{optimization_notes}}
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/{{system_name}}.ts`
|
||||
- `src/gameObjects/{{related_object}}.ts`
|
||||
- `src/types/{{system_types}}.ts`
|
||||
@@ -252,65 +252,65 @@ sections:
|
||||
title: Physics & Collision System
|
||||
template: |
|
||||
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
||||
|
||||
|
||||
**Collision Categories:**
|
||||
|
||||
|
||||
- Player collision
|
||||
- Enemy interactions
|
||||
- Environmental objects
|
||||
- Collectibles and items
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Optimized collision detection
|
||||
- Physics body management
|
||||
- Collision callbacks and events
|
||||
- Performance monitoring
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/PhysicsManager.ts`
|
||||
- `src/utils/CollisionGroups.ts`
|
||||
- id: audio-system
|
||||
title: Audio System
|
||||
template: |
|
||||
**Audio Requirements:**
|
||||
|
||||
|
||||
- Background music with looping
|
||||
- Sound effects for actions
|
||||
- Audio settings and volume control
|
||||
- Mobile audio optimization
|
||||
|
||||
|
||||
**Implementation Features:**
|
||||
|
||||
|
||||
- Audio sprite management
|
||||
- Dynamic music system
|
||||
- Spatial audio (if applicable)
|
||||
- Audio pooling for performance
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/AudioManager.ts`
|
||||
- `src/config/AudioConfig.ts`
|
||||
- id: ui-system
|
||||
title: UI System
|
||||
template: |
|
||||
**UI Components:**
|
||||
|
||||
|
||||
- HUD elements (score, health, etc.)
|
||||
- Menu navigation
|
||||
- Modal dialogs
|
||||
- Settings screens
|
||||
|
||||
|
||||
**Implementation Requirements:**
|
||||
|
||||
|
||||
- Responsive layout system
|
||||
- Touch-friendly interface
|
||||
- Keyboard navigation support
|
||||
- Animation and transitions
|
||||
|
||||
|
||||
**Files to Create:**
|
||||
|
||||
|
||||
- `src/systems/UIManager.ts`
|
||||
- `src/gameObjects/UI/`
|
||||
- `src/types/UITypes.ts`
|
||||
@@ -610,4 +610,4 @@ sections:
|
||||
- 90%+ test coverage on game logic
|
||||
- Zero TypeScript errors in strict mode
|
||||
- Consistent adherence to coding standards
|
||||
- Comprehensive documentation coverage
|
||||
- Comprehensive documentation coverage
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
||||
|
||||
|
||||
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
||||
|
||||
- id: game-vision
|
||||
@@ -71,7 +71,7 @@ sections:
|
||||
repeatable: true
|
||||
template: |
|
||||
**Core Mechanic: {{mechanic_name}}**
|
||||
|
||||
|
||||
- **Description:** {{how_it_works}}
|
||||
- **Player Value:** {{why_its_fun}}
|
||||
- **Implementation Scope:** {{complexity_estimate}}
|
||||
@@ -98,12 +98,12 @@ sections:
|
||||
title: Technical Constraints
|
||||
template: |
|
||||
**Platform Requirements:**
|
||||
|
||||
|
||||
- Primary: {{platform_1}} - {{requirements}}
|
||||
- Secondary: {{platform_2}} - {{requirements}}
|
||||
|
||||
|
||||
**Technical Specifications:**
|
||||
|
||||
|
||||
- Engine: Phaser 3 + TypeScript
|
||||
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
||||
- Memory Budget: <{{memory_limit}}MB
|
||||
@@ -141,10 +141,10 @@ sections:
|
||||
title: Competitive Analysis
|
||||
template: |
|
||||
**Direct Competitors:**
|
||||
|
||||
|
||||
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
||||
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
||||
|
||||
|
||||
**Differentiation Strategy:**
|
||||
{{how_we_differ_and_why_thats_valuable}}
|
||||
- id: market-opportunity
|
||||
@@ -168,16 +168,16 @@ sections:
|
||||
title: Content Categories
|
||||
template: |
|
||||
**Core Content:**
|
||||
|
||||
|
||||
- {{content_type_1}}: {{quantity_and_description}}
|
||||
- {{content_type_2}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Optional Content:**
|
||||
|
||||
|
||||
- {{optional_content_type}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Replay Elements:**
|
||||
|
||||
|
||||
- {{replayability_features}}
|
||||
- id: difficulty-accessibility
|
||||
title: Difficulty and Accessibility
|
||||
@@ -244,13 +244,13 @@ sections:
|
||||
title: Player Experience Metrics
|
||||
template: |
|
||||
**Engagement Goals:**
|
||||
|
||||
|
||||
- Tutorial completion rate: >{{percentage}}%
|
||||
- Average session length: {{duration}} minutes
|
||||
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
||||
|
||||
|
||||
**Quality Benchmarks:**
|
||||
|
||||
|
||||
- Player satisfaction: >{{rating}}/10
|
||||
- Completion rate: >{{percentage}}%
|
||||
- Technical performance: {{fps_target}} FPS consistent
|
||||
@@ -258,13 +258,13 @@ sections:
|
||||
title: Development Metrics
|
||||
template: |
|
||||
**Technical Targets:**
|
||||
|
||||
|
||||
- Zero critical bugs at launch
|
||||
- Performance targets met on all platforms
|
||||
- Load times under {{seconds}}s
|
||||
|
||||
|
||||
**Process Goals:**
|
||||
|
||||
|
||||
- Development timeline adherence
|
||||
- Feature scope completion
|
||||
- Quality assurance standards
|
||||
@@ -273,7 +273,7 @@ sections:
|
||||
condition: has_business_goals
|
||||
template: |
|
||||
**Commercial Goals:**
|
||||
|
||||
|
||||
- {{revenue_target}} in first {{time_period}}
|
||||
- {{user_acquisition_target}} players in first {{time_period}}
|
||||
- {{retention_target}} monthly active users
|
||||
@@ -326,12 +326,12 @@ sections:
|
||||
title: Validation Plan
|
||||
template: |
|
||||
**Concept Testing:**
|
||||
|
||||
|
||||
- {{validation_method_1}} - {{timeline}}
|
||||
- {{validation_method_2}} - {{timeline}}
|
||||
|
||||
|
||||
**Prototype Testing:**
|
||||
|
||||
|
||||
- {{testing_approach}} - {{timeline}}
|
||||
- {{feedback_collection_method}} - {{timeline}}
|
||||
|
||||
@@ -353,4 +353,4 @@ sections:
|
||||
type: table
|
||||
template: |
|
||||
| Date | Version | Description | Author |
|
||||
| :--- | :------ | :---------- | :----- |
|
||||
| :--- | :------ | :---------- | :----- |
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive Game Design Document that will serve as the foundation for all game development work. The GDD should be detailed enough that developers can create user stories and epics from it. Focus on gameplay systems, mechanics, and technical requirements that can be broken down into implementable features.
|
||||
|
||||
|
||||
If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
|
||||
|
||||
- id: executive-summary
|
||||
@@ -59,7 +59,7 @@ sections:
|
||||
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
|
||||
template: |
|
||||
**Primary Loop ({{duration}} seconds):**
|
||||
|
||||
|
||||
1. {{action_1}} ({{time_1}}s)
|
||||
2. {{action_2}} ({{time_2}}s)
|
||||
3. {{action_3}} ({{time_3}}s)
|
||||
@@ -69,12 +69,12 @@ sections:
|
||||
instruction: Clearly define success and failure states
|
||||
template: |
|
||||
**Victory Conditions:**
|
||||
|
||||
|
||||
- {{win_condition_1}}
|
||||
- {{win_condition_2}}
|
||||
|
||||
|
||||
**Failure States:**
|
||||
|
||||
|
||||
- {{loss_condition_1}}
|
||||
- {{loss_condition_2}}
|
||||
|
||||
@@ -90,17 +90,17 @@ sections:
|
||||
title: "{{mechanic_name}}"
|
||||
template: |
|
||||
**Description:** {{detailed_description}}
|
||||
|
||||
|
||||
**Player Input:** {{input_method}}
|
||||
|
||||
|
||||
**System Response:** {{game_response}}
|
||||
|
||||
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{tech_requirement_1}}
|
||||
- {{tech_requirement_2}}
|
||||
- {{performance_consideration}}
|
||||
|
||||
|
||||
**Dependencies:** {{other_mechanics_needed}}
|
||||
- id: controls
|
||||
title: Controls
|
||||
@@ -119,9 +119,9 @@ sections:
|
||||
title: Player Progression
|
||||
template: |
|
||||
**Progression Type:** {{linear|branching|metroidvania}}
|
||||
|
||||
|
||||
**Key Milestones:**
|
||||
|
||||
|
||||
1. **{{milestone_1}}** - {{unlock_description}}
|
||||
2. **{{milestone_2}}** - {{unlock_description}}
|
||||
3. **{{milestone_3}}** - {{unlock_description}}
|
||||
@@ -158,9 +158,9 @@ sections:
|
||||
**Duration:** {{target_time}}
|
||||
**Key Elements:** {{required_mechanics}}
|
||||
**Difficulty:** {{relative_difficulty}}
|
||||
|
||||
|
||||
**Structure Template:**
|
||||
|
||||
|
||||
- Introduction: {{intro_description}}
|
||||
- Challenge: {{main_challenge}}
|
||||
- Resolution: {{completion_requirement}}
|
||||
@@ -186,13 +186,13 @@ sections:
|
||||
title: Platform Specific
|
||||
template: |
|
||||
**Desktop:**
|
||||
|
||||
|
||||
- Resolution: {{min_resolution}} - {{max_resolution}}
|
||||
- Input: Keyboard, Mouse, Gamepad
|
||||
- Browser: Chrome 80+, Firefox 75+, Safari 13+
|
||||
|
||||
|
||||
**Mobile:**
|
||||
|
||||
|
||||
- Resolution: {{mobile_min}} - {{mobile_max}}
|
||||
- Input: Touch, Tilt (optional)
|
||||
- OS: iOS 13+, Android 8+
|
||||
@@ -201,14 +201,14 @@ sections:
|
||||
instruction: Define asset specifications for the art and audio teams
|
||||
template: |
|
||||
**Visual Assets:**
|
||||
|
||||
|
||||
- Art Style: {{style_description}}
|
||||
- Color Palette: {{color_specification}}
|
||||
- Animation: {{animation_requirements}}
|
||||
- UI Resolution: {{ui_specs}}
|
||||
|
||||
|
||||
**Audio Assets:**
|
||||
|
||||
|
||||
- Music Style: {{music_genre}}
|
||||
- Sound Effects: {{sfx_requirements}}
|
||||
- Voice Acting: {{voice_needs}}
|
||||
@@ -221,7 +221,7 @@ sections:
|
||||
title: Engine Configuration
|
||||
template: |
|
||||
**Phaser 3 Setup:**
|
||||
|
||||
|
||||
- TypeScript: Strict mode enabled
|
||||
- Physics: {{physics_system}} (Arcade/Matter)
|
||||
- Renderer: WebGL with Canvas fallback
|
||||
@@ -230,7 +230,7 @@ sections:
|
||||
title: Code Architecture
|
||||
template: |
|
||||
**Required Systems:**
|
||||
|
||||
|
||||
- Scene Management
|
||||
- State Management
|
||||
- Asset Loading
|
||||
@@ -242,7 +242,7 @@ sections:
|
||||
title: Data Management
|
||||
template: |
|
||||
**Save Data:**
|
||||
|
||||
|
||||
- Progress tracking
|
||||
- Settings persistence
|
||||
- Statistics collection
|
||||
@@ -340,4 +340,4 @@ sections:
|
||||
title: References
|
||||
instruction: List any competitive analysis, inspiration, or research sources
|
||||
type: bullet-list
|
||||
template: "{{reference}}"
|
||||
template: "{{reference}}"
|
||||
|
||||
@@ -14,13 +14,13 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
||||
|
||||
|
||||
Before starting, ensure you have access to:
|
||||
|
||||
|
||||
- Game Design Document (GDD)
|
||||
- Game Architecture Document
|
||||
- Any existing stories in this epic
|
||||
|
||||
|
||||
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
||||
|
||||
- id: story-header
|
||||
@@ -69,12 +69,12 @@ sections:
|
||||
title: Files to Create/Modify
|
||||
template: |
|
||||
**New Files:**
|
||||
|
||||
|
||||
- `{{file_path_1}}` - {{purpose}}
|
||||
- `{{file_path_2}}` - {{purpose}}
|
||||
|
||||
|
||||
**Modified Files:**
|
||||
|
||||
|
||||
- `{{existing_file_1}}` - {{changes_needed}}
|
||||
- `{{existing_file_2}}` - {{changes_needed}}
|
||||
- id: class-interface-definitions
|
||||
@@ -89,15 +89,15 @@ sections:
|
||||
{{property_2}}: {{type}};
|
||||
{{method_1}}({{params}}): {{return_type}};
|
||||
}
|
||||
|
||||
|
||||
// {{class_name}}
|
||||
class {{class_name}} extends {{phaser_class}} {
|
||||
private {{property}}: {{type}};
|
||||
|
||||
|
||||
constructor({{params}}) {
|
||||
// Implementation requirements
|
||||
}
|
||||
|
||||
|
||||
public {{method}}({{params}}): {{return_type}} {
|
||||
// Method requirements
|
||||
}
|
||||
@@ -107,15 +107,15 @@ sections:
|
||||
instruction: Specify how this feature integrates with existing systems
|
||||
template: |
|
||||
**Scene Integration:**
|
||||
|
||||
|
||||
- {{scene_name}}: {{integration_details}}
|
||||
|
||||
|
||||
**System Dependencies:**
|
||||
|
||||
|
||||
- {{system_name}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Event Communication:**
|
||||
|
||||
|
||||
- Emits: `{{event_name}}` when {{condition}}
|
||||
- Listens: `{{event_name}}` to {{response}}
|
||||
|
||||
@@ -127,7 +127,7 @@ sections:
|
||||
title: Dev Agent Record
|
||||
template: |
|
||||
**Tasks:**
|
||||
|
||||
|
||||
- [ ] {{task_1_description}}
|
||||
- [ ] {{task_2_description}}
|
||||
- [ ] {{task_3_description}}
|
||||
@@ -135,18 +135,18 @@ sections:
|
||||
- [ ] Write unit tests for {{component}}
|
||||
- [ ] Integration testing with {{related_system}}
|
||||
- [ ] Performance testing and optimization
|
||||
|
||||
|
||||
**Debug Log:**
|
||||
| Task | File | Change | Reverted? |
|
||||
|------|------|--------|-----------|
|
||||
| | | | |
|
||||
|
||||
|
||||
**Completion Notes:**
|
||||
|
||||
|
||||
<!-- Only note deviations from requirements, keep under 50 words -->
|
||||
|
||||
|
||||
**Change Log:**
|
||||
|
||||
|
||||
<!-- Only requirement changes during implementation -->
|
||||
|
||||
- id: game-design-context
|
||||
@@ -154,13 +154,13 @@ sections:
|
||||
instruction: Reference the specific sections of the GDD that this story implements
|
||||
template: |
|
||||
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
||||
|
||||
|
||||
**Game Mechanic:** {{mechanic_name}}
|
||||
|
||||
|
||||
**Player Experience Goal:** {{experience_description}}
|
||||
|
||||
|
||||
**Balance Parameters:**
|
||||
|
||||
|
||||
- {{parameter_1}}: {{value_or_range}}
|
||||
- {{parameter_2}}: {{value_or_range}}
|
||||
|
||||
@@ -172,11 +172,11 @@ sections:
|
||||
title: Unit Tests
|
||||
template: |
|
||||
**Test Files:**
|
||||
|
||||
|
||||
- `tests/{{component_name}}.test.ts`
|
||||
|
||||
|
||||
**Test Scenarios:**
|
||||
|
||||
|
||||
- {{test_scenario_1}}
|
||||
- {{test_scenario_2}}
|
||||
- {{edge_case_test}}
|
||||
@@ -184,12 +184,12 @@ sections:
|
||||
title: Game Testing
|
||||
template: |
|
||||
**Manual Test Cases:**
|
||||
|
||||
|
||||
1. {{test_case_1_description}}
|
||||
|
||||
|
||||
- Expected: {{expected_behavior}}
|
||||
- Performance: {{performance_expectation}}
|
||||
|
||||
|
||||
2. {{test_case_2_description}}
|
||||
- Expected: {{expected_behavior}}
|
||||
- Edge Case: {{edge_case_handling}}
|
||||
@@ -197,7 +197,7 @@ sections:
|
||||
title: Performance Tests
|
||||
template: |
|
||||
**Metrics to Verify:**
|
||||
|
||||
|
||||
- Frame rate maintains {{fps_target}} FPS
|
||||
- Memory usage stays under {{memory_limit}}MB
|
||||
- {{feature_specific_performance_metric}}
|
||||
@@ -207,15 +207,15 @@ sections:
|
||||
instruction: List any dependencies that must be completed before this story can be implemented
|
||||
template: |
|
||||
**Story Dependencies:**
|
||||
|
||||
|
||||
- {{story_id}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Technical Dependencies:**
|
||||
|
||||
|
||||
- {{system_or_file}}: {{requirement}}
|
||||
|
||||
|
||||
**Asset Dependencies:**
|
||||
|
||||
|
||||
- {{asset_type}}: {{asset_description}}
|
||||
- Location: `{{asset_path}}`
|
||||
|
||||
@@ -238,16 +238,16 @@ sections:
|
||||
instruction: Any additional context, design decisions, or implementation notes
|
||||
template: |
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{note_1}}
|
||||
- {{note_2}}
|
||||
|
||||
|
||||
**Design Decisions:**
|
||||
|
||||
|
||||
- {{decision_1}}: {{rationale}}
|
||||
- {{decision_2}}: {{rationale}}
|
||||
|
||||
|
||||
**Future Considerations:**
|
||||
|
||||
|
||||
- {{future_enhancement_1}}
|
||||
- {{future_optimization_1}}
|
||||
- {{future_optimization_1}}
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
||||
|
||||
|
||||
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
||||
|
||||
- id: introduction
|
||||
@@ -22,7 +22,7 @@ sections:
|
||||
instruction: Establish the purpose and scope of level design for this game
|
||||
content: |
|
||||
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
||||
|
||||
|
||||
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -69,29 +69,29 @@ sections:
|
||||
title: "{{category_name}} Levels"
|
||||
template: |
|
||||
**Purpose:** {{gameplay_purpose}}
|
||||
|
||||
|
||||
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
||||
|
||||
|
||||
**Difficulty Range:** {{difficulty_scale}}
|
||||
|
||||
|
||||
**Key Mechanics Featured:**
|
||||
|
||||
|
||||
- {{mechanic_1}} - {{usage_description}}
|
||||
- {{mechanic_2}} - {{usage_description}}
|
||||
|
||||
|
||||
**Player Objectives:**
|
||||
|
||||
|
||||
- Primary: {{primary_objective}}
|
||||
- Secondary: {{secondary_objective}}
|
||||
- Hidden: {{secret_objective}}
|
||||
|
||||
|
||||
**Success Criteria:**
|
||||
|
||||
|
||||
- {{completion_requirement_1}}
|
||||
- {{completion_requirement_2}}
|
||||
|
||||
|
||||
**Technical Requirements:**
|
||||
|
||||
|
||||
- Maximum entities: {{entity_limit}}
|
||||
- Performance target: {{fps_target}} FPS
|
||||
- Memory budget: {{memory_limit}}MB
|
||||
@@ -106,11 +106,11 @@ sections:
|
||||
instruction: Based on GDD requirements, define the overall level organization
|
||||
template: |
|
||||
**Organization Type:** {{linear|hub_world|open_world}}
|
||||
|
||||
|
||||
**Total Level Count:** {{number}}
|
||||
|
||||
|
||||
**World Breakdown:**
|
||||
|
||||
|
||||
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
@@ -145,7 +145,7 @@ sections:
|
||||
instruction: Define how players access new levels
|
||||
template: |
|
||||
**Progression Gates:**
|
||||
|
||||
|
||||
- Linear progression: Complete previous level
|
||||
- Star requirements: {{star_count}} stars to unlock
|
||||
- Skill gates: Demonstrate {{skill_requirement}}
|
||||
@@ -160,17 +160,17 @@ sections:
|
||||
instruction: Define all environmental components that can be used in levels
|
||||
template: |
|
||||
**Terrain Types:**
|
||||
|
||||
|
||||
- {{terrain_1}}: {{properties_and_usage}}
|
||||
- {{terrain_2}}: {{properties_and_usage}}
|
||||
|
||||
|
||||
**Interactive Objects:**
|
||||
|
||||
|
||||
- {{object_1}}: {{behavior_and_purpose}}
|
||||
- {{object_2}}: {{behavior_and_purpose}}
|
||||
|
||||
|
||||
**Hazards and Obstacles:**
|
||||
|
||||
|
||||
- {{hazard_1}}: {{damage_and_behavior}}
|
||||
- {{hazard_2}}: {{damage_and_behavior}}
|
||||
- id: collectibles-rewards
|
||||
@@ -178,18 +178,18 @@ sections:
|
||||
instruction: Define all collectible items and their placement rules
|
||||
template: |
|
||||
**Collectible Types:**
|
||||
|
||||
|
||||
- {{collectible_1}}: {{value_and_purpose}}
|
||||
- {{collectible_2}}: {{value_and_purpose}}
|
||||
|
||||
|
||||
**Placement Guidelines:**
|
||||
|
||||
|
||||
- Mandatory collectibles: {{placement_rules}}
|
||||
- Optional collectibles: {{placement_rules}}
|
||||
- Secret collectibles: {{placement_rules}}
|
||||
|
||||
|
||||
**Reward Distribution:**
|
||||
|
||||
|
||||
- Easy to find: {{percentage}}%
|
||||
- Moderate challenge: {{percentage}}%
|
||||
- High skill required: {{percentage}}%
|
||||
@@ -198,18 +198,18 @@ sections:
|
||||
instruction: Define how enemies should be placed and balanced in levels
|
||||
template: |
|
||||
**Enemy Categories:**
|
||||
|
||||
|
||||
- {{enemy_type_1}}: {{behavior_and_usage}}
|
||||
- {{enemy_type_2}}: {{behavior_and_usage}}
|
||||
|
||||
|
||||
**Placement Principles:**
|
||||
|
||||
|
||||
- Introduction encounters: {{guideline}}
|
||||
- Standard encounters: {{guideline}}
|
||||
- Challenge encounters: {{guideline}}
|
||||
|
||||
|
||||
**Difficulty Scaling:**
|
||||
|
||||
|
||||
- Enemy count progression: {{scaling_rule}}
|
||||
- Enemy type introduction: {{pacing_rule}}
|
||||
- Encounter complexity: {{complexity_rule}}
|
||||
@@ -222,14 +222,14 @@ sections:
|
||||
title: Level Layout Principles
|
||||
template: |
|
||||
**Spatial Design:**
|
||||
|
||||
|
||||
- Grid size: {{grid_dimensions}}
|
||||
- Minimum path width: {{width_units}}
|
||||
- Maximum vertical distance: {{height_units}}
|
||||
- Safe zones placement: {{safety_guidelines}}
|
||||
|
||||
|
||||
**Navigation Design:**
|
||||
|
||||
|
||||
- Clear path indication: {{visual_cues}}
|
||||
- Landmark placement: {{landmark_rules}}
|
||||
- Dead end avoidance: {{dead_end_policy}}
|
||||
@@ -239,13 +239,13 @@ sections:
|
||||
instruction: Define how to control the rhythm and pace of gameplay within levels
|
||||
template: |
|
||||
**Action Sequences:**
|
||||
|
||||
|
||||
- High intensity duration: {{max_duration}}
|
||||
- Rest period requirement: {{min_rest_time}}
|
||||
- Intensity variation: {{pacing_pattern}}
|
||||
|
||||
|
||||
**Learning Sequences:**
|
||||
|
||||
|
||||
- New mechanic introduction: {{teaching_method}}
|
||||
- Practice opportunity: {{practice_duration}}
|
||||
- Skill application: {{application_context}}
|
||||
@@ -254,14 +254,14 @@ sections:
|
||||
instruction: Define how to create appropriate challenges for each level type
|
||||
template: |
|
||||
**Challenge Types:**
|
||||
|
||||
|
||||
- Execution challenges: {{skill_requirements}}
|
||||
- Puzzle challenges: {{complexity_guidelines}}
|
||||
- Time challenges: {{time_pressure_rules}}
|
||||
- Resource challenges: {{resource_management}}
|
||||
|
||||
|
||||
**Difficulty Calibration:**
|
||||
|
||||
|
||||
- Skill check frequency: {{frequency_guidelines}}
|
||||
- Failure recovery: {{retry_mechanics}}
|
||||
- Hint system integration: {{help_system}}
|
||||
@@ -275,7 +275,7 @@ sections:
|
||||
instruction: Define how level data should be structured for implementation
|
||||
template: |
|
||||
**Level File Format:**
|
||||
|
||||
|
||||
- Data format: {{json|yaml|custom}}
|
||||
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
||||
- Data organization: {{structure_description}}
|
||||
@@ -313,14 +313,14 @@ sections:
|
||||
instruction: Define how level assets are organized and loaded
|
||||
template: |
|
||||
**Tilemap Requirements:**
|
||||
|
||||
|
||||
- Tile size: {{tile_dimensions}}px
|
||||
- Tileset organization: {{tileset_structure}}
|
||||
- Layer organization: {{layer_system}}
|
||||
- Collision data: {{collision_format}}
|
||||
|
||||
|
||||
**Audio Integration:**
|
||||
|
||||
|
||||
- Background music: {{music_requirements}}
|
||||
- Ambient sounds: {{ambient_system}}
|
||||
- Dynamic audio: {{dynamic_audio_rules}}
|
||||
@@ -329,19 +329,19 @@ sections:
|
||||
instruction: Define performance requirements for level systems
|
||||
template: |
|
||||
**Entity Limits:**
|
||||
|
||||
|
||||
- Maximum active entities: {{entity_limit}}
|
||||
- Maximum particles: {{particle_limit}}
|
||||
- Maximum audio sources: {{audio_limit}}
|
||||
|
||||
|
||||
**Memory Management:**
|
||||
|
||||
|
||||
- Texture memory budget: {{texture_memory}}MB
|
||||
- Audio memory budget: {{audio_memory}}MB
|
||||
- Level loading time: <{{load_time}}s
|
||||
|
||||
|
||||
**Culling and LOD:**
|
||||
|
||||
|
||||
- Off-screen culling: {{culling_distance}}
|
||||
- Level-of-detail rules: {{lod_system}}
|
||||
- Asset streaming: {{streaming_requirements}}
|
||||
@@ -354,13 +354,13 @@ sections:
|
||||
title: Automated Testing
|
||||
template: |
|
||||
**Performance Testing:**
|
||||
|
||||
|
||||
- Frame rate validation: Maintain {{fps_target}} FPS
|
||||
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
||||
- Loading time verification: Complete in <{{load_time}}s
|
||||
|
||||
|
||||
**Gameplay Testing:**
|
||||
|
||||
|
||||
- Completion path validation: All objectives achievable
|
||||
- Collectible accessibility: All items reachable
|
||||
- Softlock prevention: No unwinnable states
|
||||
@@ -388,14 +388,14 @@ sections:
|
||||
title: Balance Validation
|
||||
template: |
|
||||
**Metrics Collection:**
|
||||
|
||||
|
||||
- Completion rate: Target {{completion_percentage}}%
|
||||
- Average completion time: {{target_time}} ± {{variance}}
|
||||
- Death count per level: <{{max_deaths}}
|
||||
- Collectible discovery rate: {{discovery_percentage}}%
|
||||
|
||||
|
||||
**Iteration Guidelines:**
|
||||
|
||||
|
||||
- Adjustment criteria: {{criteria_for_changes}}
|
||||
- Testing sample size: {{minimum_testers}}
|
||||
- Validation period: {{testing_duration}}
|
||||
@@ -408,14 +408,14 @@ sections:
|
||||
title: Design Phase
|
||||
template: |
|
||||
**Concept Development:**
|
||||
|
||||
|
||||
1. Define level purpose and goals
|
||||
2. Create rough layout sketch
|
||||
3. Identify key mechanics and challenges
|
||||
4. Estimate difficulty and duration
|
||||
|
||||
|
||||
**Documentation Requirements:**
|
||||
|
||||
|
||||
- Level design brief
|
||||
- Layout diagrams
|
||||
- Mechanic integration notes
|
||||
@@ -424,15 +424,15 @@ sections:
|
||||
title: Implementation Phase
|
||||
template: |
|
||||
**Technical Implementation:**
|
||||
|
||||
|
||||
1. Create level data file
|
||||
2. Build tilemap and layout
|
||||
3. Place entities and objects
|
||||
4. Configure level logic and triggers
|
||||
5. Integrate audio and visual effects
|
||||
|
||||
|
||||
**Quality Assurance:**
|
||||
|
||||
|
||||
1. Automated testing execution
|
||||
2. Internal playtesting
|
||||
3. Performance validation
|
||||
@@ -441,14 +441,14 @@ sections:
|
||||
title: Integration Phase
|
||||
template: |
|
||||
**Game Integration:**
|
||||
|
||||
|
||||
1. Level progression integration
|
||||
2. Save system compatibility
|
||||
3. Analytics integration
|
||||
4. Achievement system integration
|
||||
|
||||
|
||||
**Final Validation:**
|
||||
|
||||
|
||||
1. Full game context testing
|
||||
2. Performance regression testing
|
||||
3. Platform compatibility verification
|
||||
@@ -481,4 +481,4 @@ sections:
|
||||
- Difficulty curve adherence: {{curve_accuracy}}
|
||||
- Mechanic integration effectiveness: {{integration_score}}
|
||||
- Player guidance clarity: {{guidance_score}}
|
||||
- Content accessibility: {{accessibility_rate}}%
|
||||
- Content accessibility: {{accessibility_rate}}%
|
||||
|
||||
@@ -17,21 +17,21 @@ workflow:
|
||||
- brainstorming_session
|
||||
- game_research_prompt
|
||||
- player_research
|
||||
notes: 'Start with brainstorming game concepts, then create comprehensive game brief. SAVE OUTPUT: Copy final game-brief.md to your project''s docs/design/ folder.'
|
||||
notes: "Start with brainstorming game concepts, then create comprehensive game brief. SAVE OUTPUT: Copy final game-brief.md to your project's docs/design/ folder."
|
||||
- agent: game-designer
|
||||
creates: game-design-doc.md
|
||||
requires: game-brief.md
|
||||
optional_steps:
|
||||
- competitive_analysis
|
||||
- technical_research
|
||||
notes: 'Create detailed Game Design Document using game-design-doc-tmpl. Defines all gameplay mechanics, progression, and technical requirements. SAVE OUTPUT: Copy final game-design-doc.md to your project''s docs/design/ folder.'
|
||||
notes: "Create detailed Game Design Document using game-design-doc-tmpl. Defines all gameplay mechanics, progression, and technical requirements. SAVE OUTPUT: Copy final game-design-doc.md to your project's docs/design/ folder."
|
||||
- agent: game-designer
|
||||
creates: level-design-doc.md
|
||||
requires: game-design-doc.md
|
||||
optional_steps:
|
||||
- level_prototyping
|
||||
- difficulty_analysis
|
||||
notes: 'Create level design framework using level-design-doc-tmpl. Establishes content creation guidelines and performance requirements. SAVE OUTPUT: Copy final level-design-doc.md to your project''s docs/design/ folder.'
|
||||
notes: "Create level design framework using level-design-doc-tmpl. Establishes content creation guidelines and performance requirements. SAVE OUTPUT: Copy final level-design-doc.md to your project's docs/design/ folder."
|
||||
- agent: solution-architect
|
||||
creates: game-architecture.md
|
||||
requires:
|
||||
@@ -41,7 +41,7 @@ workflow:
|
||||
- technical_research_prompt
|
||||
- performance_analysis
|
||||
- platform_research
|
||||
notes: 'Create comprehensive technical architecture using game-architecture-tmpl. Defines Phaser 3 systems, performance optimization, and code structure. SAVE OUTPUT: Copy final game-architecture.md to your project''s docs/architecture/ folder.'
|
||||
notes: "Create comprehensive technical architecture using game-architecture-tmpl. Defines Phaser 3 systems, performance optimization, and code structure. SAVE OUTPUT: Copy final game-architecture.md to your project's docs/architecture/ folder."
|
||||
- agent: game-designer
|
||||
validates: design_consistency
|
||||
requires: all_design_documents
|
||||
@@ -66,7 +66,7 @@ workflow:
|
||||
optional_steps:
|
||||
- quick_brainstorming
|
||||
- concept_validation
|
||||
notes: 'Create focused game brief for prototype. Emphasize core mechanics and immediate playability. SAVE OUTPUT: Copy final game-brief.md to your project''s docs/ folder.'
|
||||
notes: "Create focused game brief for prototype. Emphasize core mechanics and immediate playability. SAVE OUTPUT: Copy final game-brief.md to your project's docs/ folder."
|
||||
- agent: game-designer
|
||||
creates: prototype-design.md
|
||||
uses: create-doc prototype-design OR create-game-story
|
||||
|
||||
@@ -44,7 +44,7 @@ workflow:
|
||||
notes: Implement stories in priority order. Test frequently and adjust design based on what feels fun. Document discoveries.
|
||||
workflow_end:
|
||||
action: prototype_evaluation
|
||||
notes: 'Prototype complete. Evaluate core mechanics, gather feedback, and decide next steps: iterate, expand, or archive.'
|
||||
notes: "Prototype complete. Evaluate core mechanics, gather feedback, and decide next steps: iterate, expand, or archive."
|
||||
game_jam_sequence:
|
||||
- step: jam_concept
|
||||
agent: game-designer
|
||||
|
||||
@@ -61,13 +61,13 @@ commands:
|
||||
- explain: teach me what and why you did whatever you just did in detail so I can learn. Explain to me as if you were training a junior Unity developer.
|
||||
- exit: Say goodbye as the Game Developer, and then abandon inhabiting this persona
|
||||
develop-story:
|
||||
order-of-execution: "Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete"
|
||||
order-of-execution: 'Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete'
|
||||
story-file-updates-ONLY:
|
||||
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS.
|
||||
- CRITICAL: You are ONLY authorized to edit these specific sections of story files - Tasks / Subtasks Checkboxes, Dev Agent Record section and all its subsections, Agent Model Used, Debug Log References, Completion Notes List, File List, Change Log, Status
|
||||
- CRITICAL: DO NOT modify Status, Story, Acceptance Criteria, Dev Notes, Testing sections, or any other sections not listed above
|
||||
blocking: "HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression"
|
||||
ready-for-review: "Code matches requirements + All validations pass + Follows Unity & C# standards + File List complete + Stable FPS"
|
||||
blocking: 'HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression'
|
||||
ready-for-review: 'Code matches requirements + All validations pass + Follows Unity & C# standards + File List complete + Stable FPS'
|
||||
completion: "All Tasks and Subtasks marked [x] and have tests→Validations and full regression passes (DON'T BE LAZY, EXECUTE ALL TESTS and CONFIRM)→Ensure File List is Complete→run the task execute-checklist for the checklist game-story-dod-checklist→set story status: 'Ready for Review'→HALT"
|
||||
dependencies:
|
||||
tasks:
|
||||
|
||||
@@ -456,7 +456,7 @@ Use the `shard-doc` task or `@kayvan/markdown-tree-parser` tool for automatic ga
|
||||
|
||||
- **Claude Code**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Cursor**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Windsurf**: `/bmad2du/game-designer`, `/bmad2du/game-developer`, `/bmad2du/game-sm`, `/bmad2du/game-architect`
|
||||
- **Trae**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
|
||||
- **Roo Code**: Select mode from mode selector with bmad2du prefix
|
||||
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select the appropriate game agent.
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
||||
|
||||
|
||||
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
||||
|
||||
- id: game-vision
|
||||
@@ -71,7 +71,7 @@ sections:
|
||||
repeatable: true
|
||||
template: |
|
||||
**Core Mechanic: {{mechanic_name}}**
|
||||
|
||||
|
||||
- **Description:** {{how_it_works}}
|
||||
- **Player Value:** {{why_its_fun}}
|
||||
- **Implementation Scope:** {{complexity_estimate}}
|
||||
@@ -98,12 +98,12 @@ sections:
|
||||
title: Technical Constraints
|
||||
template: |
|
||||
**Platform Requirements:**
|
||||
|
||||
|
||||
- Primary: {{platform_1}} - {{requirements}}
|
||||
- Secondary: {{platform_2}} - {{requirements}}
|
||||
|
||||
|
||||
**Technical Specifications:**
|
||||
|
||||
|
||||
- Engine: Unity & C#
|
||||
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
||||
- Memory Budget: <{{memory_limit}}MB
|
||||
@@ -141,10 +141,10 @@ sections:
|
||||
title: Competitive Analysis
|
||||
template: |
|
||||
**Direct Competitors:**
|
||||
|
||||
|
||||
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
||||
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
||||
|
||||
|
||||
**Differentiation Strategy:**
|
||||
{{how_we_differ_and_why_thats_valuable}}
|
||||
- id: market-opportunity
|
||||
@@ -168,16 +168,16 @@ sections:
|
||||
title: Content Categories
|
||||
template: |
|
||||
**Core Content:**
|
||||
|
||||
|
||||
- {{content_type_1}}: {{quantity_and_description}}
|
||||
- {{content_type_2}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Optional Content:**
|
||||
|
||||
|
||||
- {{optional_content_type}}: {{quantity_and_description}}
|
||||
|
||||
|
||||
**Replay Elements:**
|
||||
|
||||
|
||||
- {{replayability_features}}
|
||||
- id: difficulty-accessibility
|
||||
title: Difficulty and Accessibility
|
||||
@@ -244,13 +244,13 @@ sections:
|
||||
title: Player Experience Metrics
|
||||
template: |
|
||||
**Engagement Goals:**
|
||||
|
||||
|
||||
- Tutorial completion rate: >{{percentage}}%
|
||||
- Average session length: {{duration}} minutes
|
||||
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
||||
|
||||
|
||||
**Quality Benchmarks:**
|
||||
|
||||
|
||||
- Player satisfaction: >{{rating}}/10
|
||||
- Completion rate: >{{percentage}}%
|
||||
- Technical performance: {{fps_target}} FPS consistent
|
||||
@@ -258,13 +258,13 @@ sections:
|
||||
title: Development Metrics
|
||||
template: |
|
||||
**Technical Targets:**
|
||||
|
||||
|
||||
- Zero critical bugs at launch
|
||||
- Performance targets met on all platforms
|
||||
- Load times under {{seconds}}s
|
||||
|
||||
|
||||
**Process Goals:**
|
||||
|
||||
|
||||
- Development timeline adherence
|
||||
- Feature scope completion
|
||||
- Quality assurance standards
|
||||
@@ -273,7 +273,7 @@ sections:
|
||||
condition: has_business_goals
|
||||
template: |
|
||||
**Commercial Goals:**
|
||||
|
||||
|
||||
- {{revenue_target}} in first {{time_period}}
|
||||
- {{user_acquisition_target}} players in first {{time_period}}
|
||||
- {{retention_target}} monthly active users
|
||||
@@ -326,12 +326,12 @@ sections:
|
||||
title: Validation Plan
|
||||
template: |
|
||||
**Concept Testing:**
|
||||
|
||||
|
||||
- {{validation_method_1}} - {{timeline}}
|
||||
- {{validation_method_2}} - {{timeline}}
|
||||
|
||||
|
||||
**Prototype Testing:**
|
||||
|
||||
|
||||
- {{testing_approach}} - {{timeline}}
|
||||
- {{feedback_collection_method}} - {{timeline}}
|
||||
|
||||
@@ -353,4 +353,4 @@ sections:
|
||||
type: table
|
||||
template: |
|
||||
| Date | Version | Description | Author |
|
||||
| :--- | :------ | :---------- | :----- |
|
||||
| :--- | :------ | :---------- | :----- |
|
||||
|
||||
@@ -95,7 +95,7 @@ sections:
|
||||
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions for Unity implementation.
|
||||
template: |
|
||||
**Primary Loop ({{duration}} seconds):**
|
||||
|
||||
|
||||
1. {{action_1}} ({{time_1}}s) - {{unity_component}}
|
||||
2. {{action_2}} ({{time_2}}s) - {{unity_component}}
|
||||
3. {{action_3}} ({{time_3}}s) - {{unity_component}}
|
||||
@@ -107,12 +107,12 @@ sections:
|
||||
instruction: Clearly define success and failure states with Unity-specific implementation notes
|
||||
template: |
|
||||
**Victory Conditions:**
|
||||
|
||||
|
||||
- {{win_condition_1}} - Unity Event: {{unity_event}}
|
||||
- {{win_condition_2}} - Unity Event: {{unity_event}}
|
||||
|
||||
|
||||
**Failure States:**
|
||||
|
||||
|
||||
- {{loss_condition_1}} - Trigger: {{unity_trigger}}
|
||||
- {{loss_condition_2}} - Trigger: {{unity_trigger}}
|
||||
examples:
|
||||
@@ -132,22 +132,22 @@ sections:
|
||||
title: "{{mechanic_name}}"
|
||||
template: |
|
||||
**Description:** {{detailed_description}}
|
||||
|
||||
|
||||
**Player Input:** {{input_method}} - Unity Input System: {{input_action}}
|
||||
|
||||
|
||||
**System Response:** {{game_response}}
|
||||
|
||||
|
||||
**Unity Implementation Notes:**
|
||||
|
||||
|
||||
- **Components Needed:** {{component_list}}
|
||||
- **Physics Requirements:** {{physics_2d_setup}}
|
||||
- **Animation States:** {{animator_states}}
|
||||
- **Performance Considerations:** {{optimization_notes}}
|
||||
|
||||
|
||||
**Dependencies:** {{other_mechanics_needed}}
|
||||
|
||||
|
||||
**Script Architecture:**
|
||||
|
||||
|
||||
- {{script_name}}.cs - {{responsibility}}
|
||||
- {{manager_script}}.cs - {{management_role}}
|
||||
examples:
|
||||
@@ -173,15 +173,15 @@ sections:
|
||||
title: Player Progression
|
||||
template: |
|
||||
**Progression Type:** {{linear|branching|metroidvania}}
|
||||
|
||||
|
||||
**Key Milestones:**
|
||||
|
||||
|
||||
1. **{{milestone_1}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
2. **{{milestone_2}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
3. **{{milestone_3}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
|
||||
|
||||
|
||||
**Save Data Structure:**
|
||||
|
||||
|
||||
```csharp
|
||||
[System.Serializable]
|
||||
public class PlayerProgress
|
||||
@@ -197,13 +197,13 @@ sections:
|
||||
template: |
|
||||
**Tutorial Phase:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Early Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Mid Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
|
||||
|
||||
**Late Game:** {{duration}} - {{difficulty_description}}
|
||||
- Unity Config: {{scriptable_object_values}}
|
||||
examples:
|
||||
@@ -236,22 +236,22 @@ sections:
|
||||
**Target Duration:** {{target_time}}
|
||||
**Key Elements:** {{required_mechanics}}
|
||||
**Difficulty Rating:** {{relative_difficulty}}
|
||||
|
||||
|
||||
**Unity Scene Structure:**
|
||||
|
||||
|
||||
- **Environment:** {{tilemap_setup}}
|
||||
- **Gameplay Objects:** {{prefab_list}}
|
||||
- **Lighting:** {{lighting_setup}}
|
||||
- **Audio:** {{audio_sources}}
|
||||
|
||||
|
||||
**Level Flow Template:**
|
||||
|
||||
|
||||
- **Introduction:** {{intro_description}} - Area: {{unity_area_bounds}}
|
||||
- **Challenge:** {{main_challenge}} - Mechanics: {{active_components}}
|
||||
- **Resolution:** {{completion_requirement}} - Trigger: {{completion_trigger}}
|
||||
|
||||
|
||||
**Reusable Prefabs:**
|
||||
|
||||
|
||||
- {{prefab_name}} - {{prefab_purpose}}
|
||||
examples:
|
||||
- "Environment: TilemapRenderer with Platform tileset, Lighting: 2D Global Light + Point Lights"
|
||||
@@ -262,9 +262,9 @@ sections:
|
||||
**Total Levels:** {{number}}
|
||||
**Unlock Pattern:** {{progression_method}}
|
||||
**Scene Management:** {{unity_scene_loading}}
|
||||
|
||||
|
||||
**Unity Scene Organization:**
|
||||
|
||||
|
||||
- Scene Naming: {{naming_convention}}
|
||||
- Addressable Assets: {{addressable_groups}}
|
||||
- Loading Screens: {{loading_implementation}}
|
||||
@@ -289,13 +289,13 @@ sections:
|
||||
**Physics:** {{2D Only|3D Only|Hybrid}}
|
||||
**Scripting Backend:** {{Mono|IL2CPP}}
|
||||
**API Compatibility:** {{.NET Standard 2.1|.NET Framework}}
|
||||
|
||||
|
||||
**Required Packages:**
|
||||
|
||||
|
||||
- {{package_name}} {{version}} - {{purpose}}
|
||||
|
||||
|
||||
**Project Settings:**
|
||||
|
||||
|
||||
- Color Space: {{Linear|Gamma}}
|
||||
- Quality Settings: {{quality_levels}}
|
||||
- Physics Settings: {{physics_config}}
|
||||
@@ -309,9 +309,9 @@ sections:
|
||||
**Memory Usage:** <{{memory_limit}}MB heap, <{{texture_memory}}MB textures
|
||||
**Load Times:** <{{load_time}}s initial, <{{level_load}}s between levels
|
||||
**Battery Usage:** Optimized for mobile devices - {{battery_target}} hours gameplay
|
||||
|
||||
|
||||
**Unity Profiler Targets:**
|
||||
|
||||
|
||||
- CPU Frame Time: <{{cpu_time}}ms
|
||||
- GPU Frame Time: <{{gpu_time}}ms
|
||||
- GC Allocs: <{{gc_limit}}KB per frame
|
||||
@@ -322,20 +322,20 @@ sections:
|
||||
title: Platform Specific Requirements
|
||||
template: |
|
||||
**Desktop:**
|
||||
|
||||
|
||||
- Resolution: {{min_resolution}} - {{max_resolution}}
|
||||
- Input: Keyboard, Mouse, Gamepad ({{gamepad_support}})
|
||||
- Build Target: {{desktop_targets}}
|
||||
|
||||
|
||||
**Mobile:**
|
||||
|
||||
|
||||
- Resolution: {{mobile_min}} - {{mobile_max}}
|
||||
- Input: Touch, Accelerometer ({{sensor_support}})
|
||||
- OS: iOS {{ios_min}}+, Android {{android_min}}+ (API {{api_level}})
|
||||
- Device Requirements: {{device_specs}}
|
||||
|
||||
|
||||
**Web (if applicable):**
|
||||
|
||||
|
||||
- WebGL Version: {{webgl_version}}
|
||||
- Browser Support: {{browser_list}}
|
||||
- Compression: {{compression_format}}
|
||||
@@ -346,21 +346,21 @@ sections:
|
||||
instruction: Define asset specifications for Unity pipeline optimization
|
||||
template: |
|
||||
**2D Art Assets:**
|
||||
|
||||
|
||||
- Sprites: {{sprite_resolution}} at {{ppu}} PPU
|
||||
- Texture Format: {{texture_compression}}
|
||||
- Atlas Strategy: {{sprite_atlas_setup}}
|
||||
- Animation: {{animation_type}} at {{framerate}} FPS
|
||||
|
||||
|
||||
**Audio Assets:**
|
||||
|
||||
|
||||
- Music: {{audio_format}} at {{sample_rate}} Hz
|
||||
- SFX: {{sfx_format}} at {{sfx_sample_rate}} Hz
|
||||
- Compression: {{audio_compression}}
|
||||
- 3D Audio: {{spatial_audio}}
|
||||
|
||||
|
||||
**UI Assets:**
|
||||
|
||||
|
||||
- Canvas Resolution: {{ui_resolution}}
|
||||
- UI Scale Mode: {{scale_mode}}
|
||||
- Font: {{font_requirements}}
|
||||
@@ -381,17 +381,17 @@ sections:
|
||||
title: Code Architecture Pattern
|
||||
template: |
|
||||
**Architecture Pattern:** {{MVC|MVVM|ECS|Component-Based|Custom}}
|
||||
|
||||
|
||||
**Core Systems Required:**
|
||||
|
||||
|
||||
- **Scene Management:** {{scene_manager_approach}}
|
||||
- **State Management:** {{state_pattern_implementation}}
|
||||
- **Event System:** {{event_system_choice}}
|
||||
- **Object Pooling:** {{pooling_strategy}}
|
||||
- **Save/Load System:** {{save_system_approach}}
|
||||
|
||||
|
||||
**Folder Structure:**
|
||||
|
||||
|
||||
```
|
||||
Assets/
|
||||
├── _Project/
|
||||
@@ -401,9 +401,9 @@ sections:
|
||||
│ ├── Scenes/
|
||||
│ └── {{additional_folders}}
|
||||
```
|
||||
|
||||
|
||||
**Naming Conventions:**
|
||||
|
||||
|
||||
- Scripts: {{script_naming}}
|
||||
- Prefabs: {{prefab_naming}}
|
||||
- Scenes: {{scene_naming}}
|
||||
@@ -414,19 +414,19 @@ sections:
|
||||
title: Unity Systems Integration
|
||||
template: |
|
||||
**Required Unity Systems:**
|
||||
|
||||
|
||||
- **Input System:** {{input_implementation}}
|
||||
- **Animation System:** {{animation_approach}}
|
||||
- **Physics Integration:** {{physics_usage}}
|
||||
- **Rendering Features:** {{rendering_requirements}}
|
||||
- **Asset Streaming:** {{asset_loading_strategy}}
|
||||
|
||||
|
||||
**Third-Party Integrations:**
|
||||
|
||||
|
||||
- {{integration_name}}: {{integration_purpose}}
|
||||
|
||||
|
||||
**Performance Systems:**
|
||||
|
||||
|
||||
- **Profiling Integration:** {{profiling_setup}}
|
||||
- **Memory Management:** {{memory_strategy}}
|
||||
- **Build Pipeline:** {{build_automation}}
|
||||
@@ -437,20 +437,20 @@ sections:
|
||||
title: Data Management
|
||||
template: |
|
||||
**Save Data Architecture:**
|
||||
|
||||
|
||||
- **Format:** {{PlayerPrefs|JSON|Binary|Cloud}}
|
||||
- **Structure:** {{save_data_organization}}
|
||||
- **Encryption:** {{security_approach}}
|
||||
- **Cloud Sync:** {{cloud_integration}}
|
||||
|
||||
|
||||
**Configuration Data:**
|
||||
|
||||
|
||||
- **ScriptableObjects:** {{scriptable_object_usage}}
|
||||
- **Settings Management:** {{settings_system}}
|
||||
- **Localization:** {{localization_approach}}
|
||||
|
||||
|
||||
**Runtime Data:**
|
||||
|
||||
|
||||
- **Caching Strategy:** {{cache_implementation}}
|
||||
- **Memory Pools:** {{pooling_objects}}
|
||||
- **Asset References:** {{asset_reference_system}}
|
||||
@@ -678,15 +678,15 @@ sections:
|
||||
instruction: Provide guidance for the Story Manager (SM) agent on how to break down this GDD into implementable user stories
|
||||
template: |
|
||||
**Epic Prioritization:** {{epic_order_rationale}}
|
||||
|
||||
|
||||
**Story Sizing Guidelines:**
|
||||
|
||||
|
||||
- Foundation stories: {{foundation_story_scope}}
|
||||
- Feature stories: {{feature_story_scope}}
|
||||
- Polish stories: {{polish_story_scope}}
|
||||
|
||||
|
||||
**Unity-Specific Story Considerations:**
|
||||
|
||||
|
||||
- Each story should result in testable Unity scenes or prefabs
|
||||
- Include specific Unity components and systems in acceptance criteria
|
||||
- Consider cross-platform testing requirements
|
||||
@@ -702,4 +702,4 @@ sections:
|
||||
examples:
|
||||
- "Unity Architect: Create detailed technical architecture document with specific Unity implementation patterns"
|
||||
- "Unity Developer: Implement core systems and gameplay mechanics according to architecture"
|
||||
- "QA Tester: Validate performance metrics and cross-platform functionality"
|
||||
- "QA Tester: Validate performance metrics and cross-platform functionality"
|
||||
|
||||
@@ -14,13 +14,13 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
||||
|
||||
|
||||
Before starting, ensure you have access to:
|
||||
|
||||
|
||||
- Game Design Document (GDD)
|
||||
- Game Architecture Document
|
||||
- Any existing stories in this epic
|
||||
|
||||
|
||||
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
||||
|
||||
- id: story-header
|
||||
@@ -69,12 +69,12 @@ sections:
|
||||
title: Files to Create/Modify
|
||||
template: |
|
||||
**New Files:**
|
||||
|
||||
|
||||
- `{{file_path_1}}` - {{purpose}}
|
||||
- `{{file_path_2}}` - {{purpose}}
|
||||
|
||||
|
||||
**Modified Files:**
|
||||
|
||||
|
||||
- `{{existing_file_1}}` - {{changes_needed}}
|
||||
- `{{existing_file_2}}` - {{changes_needed}}
|
||||
- id: class-interface-definitions
|
||||
@@ -157,13 +157,13 @@ sections:
|
||||
instruction: Reference the specific sections of the GDD that this story implements
|
||||
template: |
|
||||
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
||||
|
||||
|
||||
**Game Mechanic:** {{mechanic_name}}
|
||||
|
||||
|
||||
**Player Experience Goal:** {{experience_description}}
|
||||
|
||||
|
||||
**Balance Parameters:**
|
||||
|
||||
|
||||
- {{parameter_1}}: {{value_or_range}}
|
||||
- {{parameter_2}}: {{value_or_range}}
|
||||
|
||||
@@ -210,15 +210,15 @@ sections:
|
||||
instruction: List any dependencies that must be completed before this story can be implemented
|
||||
template: |
|
||||
**Story Dependencies:**
|
||||
|
||||
|
||||
- {{story_id}}: {{dependency_description}}
|
||||
|
||||
|
||||
**Technical Dependencies:**
|
||||
|
||||
|
||||
- {{system_or_file}}: {{requirement}}
|
||||
|
||||
|
||||
**Asset Dependencies:**
|
||||
|
||||
|
||||
- {{asset_type}}: {{asset_description}}
|
||||
- Location: `{{asset_path}}`
|
||||
|
||||
@@ -241,16 +241,16 @@ sections:
|
||||
instruction: Any additional context, design decisions, or implementation notes
|
||||
template: |
|
||||
**Implementation Notes:**
|
||||
|
||||
|
||||
- {{note_1}}
|
||||
- {{note_2}}
|
||||
|
||||
|
||||
**Design Decisions:**
|
||||
|
||||
|
||||
- {{decision_1}}: {{rationale}}
|
||||
- {{decision_2}}: {{rationale}}
|
||||
|
||||
|
||||
**Future Considerations:**
|
||||
|
||||
|
||||
- {{future_enhancement_1}}
|
||||
- {{future_optimization_1}}
|
||||
|
||||
@@ -14,7 +14,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
||||
|
||||
|
||||
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
||||
|
||||
- id: introduction
|
||||
@@ -22,7 +22,7 @@ sections:
|
||||
instruction: Establish the purpose and scope of level design for this game
|
||||
content: |
|
||||
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
||||
|
||||
|
||||
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
||||
sections:
|
||||
- id: change-log
|
||||
@@ -69,29 +69,29 @@ sections:
|
||||
title: "{{category_name}} Levels"
|
||||
template: |
|
||||
**Purpose:** {{gameplay_purpose}}
|
||||
|
||||
|
||||
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
||||
|
||||
|
||||
**Difficulty Range:** {{difficulty_scale}}
|
||||
|
||||
|
||||
**Key Mechanics Featured:**
|
||||
|
||||
|
||||
- {{mechanic_1}} - {{usage_description}}
|
||||
- {{mechanic_2}} - {{usage_description}}
|
||||
|
||||
|
||||
**Player Objectives:**
|
||||
|
||||
|
||||
- Primary: {{primary_objective}}
|
||||
- Secondary: {{secondary_objective}}
|
||||
- Hidden: {{secret_objective}}
|
||||
|
||||
|
||||
**Success Criteria:**
|
||||
|
||||
|
||||
- {{completion_requirement_1}}
|
||||
- {{completion_requirement_2}}
|
||||
|
||||
|
||||
**Technical Requirements:**
|
||||
|
||||
|
||||
- Maximum entities: {{entity_limit}}
|
||||
- Performance target: {{fps_target}} FPS
|
||||
- Memory budget: {{memory_limit}}MB
|
||||
@@ -106,11 +106,11 @@ sections:
|
||||
instruction: Based on GDD requirements, define the overall level organization
|
||||
template: |
|
||||
**Organization Type:** {{linear|hub_world|open_world}}
|
||||
|
||||
|
||||
**Total Level Count:** {{number}}
|
||||
|
||||
|
||||
**World Breakdown:**
|
||||
|
||||
|
||||
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
||||
@@ -145,7 +145,7 @@ sections:
|
||||
instruction: Define how players access new levels
|
||||
template: |
|
||||
**Progression Gates:**
|
||||
|
||||
|
||||
- Linear progression: Complete previous level
|
||||
- Star requirements: {{star_count}} stars to unlock
|
||||
- Skill gates: Demonstrate {{skill_requirement}}
|
||||
@@ -160,17 +160,17 @@ sections:
|
||||
instruction: Define all environmental components that can be used in levels
|
||||
template: |
|
||||
**Terrain Types:**
|
||||
|
||||
|
||||
- {{terrain_1}}: {{properties_and_usage}}
|
||||
- {{terrain_2}}: {{properties_and_usage}}
|
||||
|
||||
|
||||
**Interactive Objects:**
|
||||
|
||||
|
||||
- {{object_1}}: {{behavior_and_purpose}}
|
||||
- {{object_2}}: {{behavior_and_purpose}}
|
||||
|
||||
|
||||
**Hazards and Obstacles:**
|
||||
|
||||
|
||||
- {{hazard_1}}: {{damage_and_behavior}}
|
||||
- {{hazard_2}}: {{damage_and_behavior}}
|
||||
- id: collectibles-rewards
|
||||
@@ -178,18 +178,18 @@ sections:
|
||||
instruction: Define all collectible items and their placement rules
|
||||
template: |
|
||||
**Collectible Types:**
|
||||
|
||||
|
||||
- {{collectible_1}}: {{value_and_purpose}}
|
||||
- {{collectible_2}}: {{value_and_purpose}}
|
||||
|
||||
|
||||
**Placement Guidelines:**
|
||||
|
||||
|
||||
- Mandatory collectibles: {{placement_rules}}
|
||||
- Optional collectibles: {{placement_rules}}
|
||||
- Secret collectibles: {{placement_rules}}
|
||||
|
||||
|
||||
**Reward Distribution:**
|
||||
|
||||
|
||||
- Easy to find: {{percentage}}%
|
||||
- Moderate challenge: {{percentage}}%
|
||||
- High skill required: {{percentage}}%
|
||||
@@ -198,18 +198,18 @@ sections:
|
||||
instruction: Define how enemies should be placed and balanced in levels
|
||||
template: |
|
||||
**Enemy Categories:**
|
||||
|
||||
|
||||
- {{enemy_type_1}}: {{behavior_and_usage}}
|
||||
- {{enemy_type_2}}: {{behavior_and_usage}}
|
||||
|
||||
|
||||
**Placement Principles:**
|
||||
|
||||
|
||||
- Introduction encounters: {{guideline}}
|
||||
- Standard encounters: {{guideline}}
|
||||
- Challenge encounters: {{guideline}}
|
||||
|
||||
|
||||
**Difficulty Scaling:**
|
||||
|
||||
|
||||
- Enemy count progression: {{scaling_rule}}
|
||||
- Enemy type introduction: {{pacing_rule}}
|
||||
- Encounter complexity: {{complexity_rule}}
|
||||
@@ -222,14 +222,14 @@ sections:
|
||||
title: Level Layout Principles
|
||||
template: |
|
||||
**Spatial Design:**
|
||||
|
||||
|
||||
- Grid size: {{grid_dimensions}}
|
||||
- Minimum path width: {{width_units}}
|
||||
- Maximum vertical distance: {{height_units}}
|
||||
- Safe zones placement: {{safety_guidelines}}
|
||||
|
||||
|
||||
**Navigation Design:**
|
||||
|
||||
|
||||
- Clear path indication: {{visual_cues}}
|
||||
- Landmark placement: {{landmark_rules}}
|
||||
- Dead end avoidance: {{dead_end_policy}}
|
||||
@@ -239,13 +239,13 @@ sections:
|
||||
instruction: Define how to control the rhythm and pace of gameplay within levels
|
||||
template: |
|
||||
**Action Sequences:**
|
||||
|
||||
|
||||
- High intensity duration: {{max_duration}}
|
||||
- Rest period requirement: {{min_rest_time}}
|
||||
- Intensity variation: {{pacing_pattern}}
|
||||
|
||||
|
||||
**Learning Sequences:**
|
||||
|
||||
|
||||
- New mechanic introduction: {{teaching_method}}
|
||||
- Practice opportunity: {{practice_duration}}
|
||||
- Skill application: {{application_context}}
|
||||
@@ -254,14 +254,14 @@ sections:
|
||||
instruction: Define how to create appropriate challenges for each level type
|
||||
template: |
|
||||
**Challenge Types:**
|
||||
|
||||
|
||||
- Execution challenges: {{skill_requirements}}
|
||||
- Puzzle challenges: {{complexity_guidelines}}
|
||||
- Time challenges: {{time_pressure_rules}}
|
||||
- Resource challenges: {{resource_management}}
|
||||
|
||||
|
||||
**Difficulty Calibration:**
|
||||
|
||||
|
||||
- Skill check frequency: {{frequency_guidelines}}
|
||||
- Failure recovery: {{retry_mechanics}}
|
||||
- Hint system integration: {{help_system}}
|
||||
@@ -275,7 +275,7 @@ sections:
|
||||
instruction: Define how level data should be structured for implementation
|
||||
template: |
|
||||
**Level File Format:**
|
||||
|
||||
|
||||
- Data format: {{json|yaml|custom}}
|
||||
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
||||
- Data organization: {{structure_description}}
|
||||
@@ -313,14 +313,14 @@ sections:
|
||||
instruction: Define how level assets are organized and loaded
|
||||
template: |
|
||||
**Tilemap Requirements:**
|
||||
|
||||
|
||||
- Tile size: {{tile_dimensions}}px
|
||||
- Tileset organization: {{tileset_structure}}
|
||||
- Layer organization: {{layer_system}}
|
||||
- Collision data: {{collision_format}}
|
||||
|
||||
|
||||
**Audio Integration:**
|
||||
|
||||
|
||||
- Background music: {{music_requirements}}
|
||||
- Ambient sounds: {{ambient_system}}
|
||||
- Dynamic audio: {{dynamic_audio_rules}}
|
||||
@@ -329,19 +329,19 @@ sections:
|
||||
instruction: Define performance requirements for level systems
|
||||
template: |
|
||||
**Entity Limits:**
|
||||
|
||||
|
||||
- Maximum active entities: {{entity_limit}}
|
||||
- Maximum particles: {{particle_limit}}
|
||||
- Maximum audio sources: {{audio_limit}}
|
||||
|
||||
|
||||
**Memory Management:**
|
||||
|
||||
|
||||
- Texture memory budget: {{texture_memory}}MB
|
||||
- Audio memory budget: {{audio_memory}}MB
|
||||
- Level loading time: <{{load_time}}s
|
||||
|
||||
|
||||
**Culling and LOD:**
|
||||
|
||||
|
||||
- Off-screen culling: {{culling_distance}}
|
||||
- Level-of-detail rules: {{lod_system}}
|
||||
- Asset streaming: {{streaming_requirements}}
|
||||
@@ -354,13 +354,13 @@ sections:
|
||||
title: Automated Testing
|
||||
template: |
|
||||
**Performance Testing:**
|
||||
|
||||
|
||||
- Frame rate validation: Maintain {{fps_target}} FPS
|
||||
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
||||
- Loading time verification: Complete in <{{load_time}}s
|
||||
|
||||
|
||||
**Gameplay Testing:**
|
||||
|
||||
|
||||
- Completion path validation: All objectives achievable
|
||||
- Collectible accessibility: All items reachable
|
||||
- Softlock prevention: No unwinnable states
|
||||
@@ -388,14 +388,14 @@ sections:
|
||||
title: Balance Validation
|
||||
template: |
|
||||
**Metrics Collection:**
|
||||
|
||||
|
||||
- Completion rate: Target {{completion_percentage}}%
|
||||
- Average completion time: {{target_time}} ± {{variance}}
|
||||
- Death count per level: <{{max_deaths}}
|
||||
- Collectible discovery rate: {{discovery_percentage}}%
|
||||
|
||||
|
||||
**Iteration Guidelines:**
|
||||
|
||||
|
||||
- Adjustment criteria: {{criteria_for_changes}}
|
||||
- Testing sample size: {{minimum_testers}}
|
||||
- Validation period: {{testing_duration}}
|
||||
@@ -408,14 +408,14 @@ sections:
|
||||
title: Design Phase
|
||||
template: |
|
||||
**Concept Development:**
|
||||
|
||||
|
||||
1. Define level purpose and goals
|
||||
2. Create rough layout sketch
|
||||
3. Identify key mechanics and challenges
|
||||
4. Estimate difficulty and duration
|
||||
|
||||
|
||||
**Documentation Requirements:**
|
||||
|
||||
|
||||
- Level design brief
|
||||
- Layout diagrams
|
||||
- Mechanic integration notes
|
||||
@@ -424,15 +424,15 @@ sections:
|
||||
title: Implementation Phase
|
||||
template: |
|
||||
**Technical Implementation:**
|
||||
|
||||
|
||||
1. Create level data file
|
||||
2. Build tilemap and layout
|
||||
3. Place entities and objects
|
||||
4. Configure level logic and triggers
|
||||
5. Integrate audio and visual effects
|
||||
|
||||
|
||||
**Quality Assurance:**
|
||||
|
||||
|
||||
1. Automated testing execution
|
||||
2. Internal playtesting
|
||||
3. Performance validation
|
||||
@@ -441,14 +441,14 @@ sections:
|
||||
title: Integration Phase
|
||||
template: |
|
||||
**Game Integration:**
|
||||
|
||||
|
||||
1. Level progression integration
|
||||
2. Save system compatibility
|
||||
3. Analytics integration
|
||||
4. Achievement system integration
|
||||
|
||||
|
||||
**Final Validation:**
|
||||
|
||||
|
||||
1. Full game context testing
|
||||
2. Performance regression testing
|
||||
3. Platform compatibility verification
|
||||
@@ -481,4 +481,4 @@ sections:
|
||||
- Difficulty curve adherence: {{curve_accuracy}}
|
||||
- Mechanic integration effectiveness: {{integration_score}}
|
||||
- Player guidance clarity: {{guidance_score}}
|
||||
- Content accessibility: {{accessibility_rate}}%
|
||||
- Content accessibility: {{accessibility_rate}}%
|
||||
|
||||
@@ -17,21 +17,21 @@ workflow:
|
||||
- brainstorming_session
|
||||
- game_research_prompt
|
||||
- player_research
|
||||
notes: 'Start with brainstorming game concepts, then create comprehensive game brief. SAVE OUTPUT: Copy final game-brief.md to your project''s docs/design/ folder.'
|
||||
notes: "Start with brainstorming game concepts, then create comprehensive game brief. SAVE OUTPUT: Copy final game-brief.md to your project's docs/design/ folder."
|
||||
- agent: game-designer
|
||||
creates: game-design-doc.md
|
||||
requires: game-brief.md
|
||||
optional_steps:
|
||||
- competitive_analysis
|
||||
- technical_research
|
||||
notes: 'Create detailed Game Design Document using game-design-doc-tmpl. Defines all gameplay mechanics, progression, and technical requirements. SAVE OUTPUT: Copy final game-design-doc.md to your project''s docs/design/ folder.'
|
||||
notes: "Create detailed Game Design Document using game-design-doc-tmpl. Defines all gameplay mechanics, progression, and technical requirements. SAVE OUTPUT: Copy final game-design-doc.md to your project's docs/design/ folder."
|
||||
- agent: game-designer
|
||||
creates: level-design-doc.md
|
||||
requires: game-design-doc.md
|
||||
optional_steps:
|
||||
- level_prototyping
|
||||
- difficulty_analysis
|
||||
notes: 'Create level design framework using level-design-doc-tmpl. Establishes content creation guidelines and performance requirements. SAVE OUTPUT: Copy final level-design-doc.md to your project''s docs/design/ folder.'
|
||||
notes: "Create level design framework using level-design-doc-tmpl. Establishes content creation guidelines and performance requirements. SAVE OUTPUT: Copy final level-design-doc.md to your project's docs/design/ folder."
|
||||
- agent: solution-architect
|
||||
creates: game-architecture.md
|
||||
requires:
|
||||
@@ -41,7 +41,7 @@ workflow:
|
||||
- technical_research_prompt
|
||||
- performance_analysis
|
||||
- platform_research
|
||||
notes: 'Create comprehensive technical architecture using game-architecture-tmpl. Defines Unity systems, performance optimization, and code structure. SAVE OUTPUT: Copy final game-architecture.md to your project''s docs/architecture/ folder.'
|
||||
notes: "Create comprehensive technical architecture using game-architecture-tmpl. Defines Unity systems, performance optimization, and code structure. SAVE OUTPUT: Copy final game-architecture.md to your project's docs/architecture/ folder."
|
||||
- agent: game-designer
|
||||
validates: design_consistency
|
||||
requires: all_design_documents
|
||||
@@ -66,7 +66,7 @@ workflow:
|
||||
optional_steps:
|
||||
- quick_brainstorming
|
||||
- concept_validation
|
||||
notes: 'Create focused game brief for prototype. Emphasize core mechanics and immediate playability. SAVE OUTPUT: Copy final game-brief.md to your project''s docs/ folder.'
|
||||
notes: "Create focused game brief for prototype. Emphasize core mechanics and immediate playability. SAVE OUTPUT: Copy final game-brief.md to your project's docs/ folder."
|
||||
- agent: game-designer
|
||||
creates: prototype-design.md
|
||||
uses: create-doc prototype-design OR create-game-story
|
||||
|
||||
@@ -44,7 +44,7 @@ workflow:
|
||||
notes: Implement stories in priority order. Test frequently in the Unity Editor and adjust design based on what feels fun. Document discoveries.
|
||||
workflow_end:
|
||||
action: prototype_evaluation
|
||||
notes: 'Prototype complete. Evaluate core mechanics, gather feedback, and decide next steps: iterate, expand, or archive.'
|
||||
notes: "Prototype complete. Evaluate core mechanics, gather feedback, and decide next steps: iterate, expand, or archive."
|
||||
game_jam_sequence:
|
||||
- step: jam_concept
|
||||
agent: game-designer
|
||||
|
||||
@@ -27,18 +27,18 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
Initial Setup
|
||||
|
||||
|
||||
1. Replace {{project_name}} with the actual project name throughout the document
|
||||
2. Gather and review required inputs:
|
||||
- Product Requirements Document (PRD) - Required for business needs and scale requirements
|
||||
- Main System Architecture - Required for infrastructure dependencies
|
||||
- Technical Preferences/Tech Stack Document - Required for technology choices
|
||||
- PRD Technical Assumptions - Required for cross-referencing repository and service architecture
|
||||
|
||||
|
||||
If any required documents are missing, ask user: "I need the following documents to create a comprehensive infrastructure architecture: [list missing]. Would you like to proceed with available information or provide the missing documents first?"
|
||||
|
||||
|
||||
3. <critical_rule>Cross-reference with PRD Technical Assumptions to ensure infrastructure decisions align with repository and service architecture decisions made in the system architecture.</critical_rule>
|
||||
|
||||
|
||||
Output file location: `docs/infrastructure-architecture.md`
|
||||
|
||||
- id: infrastructure-overview
|
||||
@@ -67,7 +67,7 @@ sections:
|
||||
- Repository Structure
|
||||
- State Management
|
||||
- Dependency Management
|
||||
|
||||
|
||||
<critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule>
|
||||
|
||||
- id: environment-configuration
|
||||
@@ -103,7 +103,7 @@ sections:
|
||||
title: Network Architecture
|
||||
instruction: |
|
||||
Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns.
|
||||
|
||||
|
||||
Create Mermaid diagram showing:
|
||||
- VPC/Network structure
|
||||
- Security zones and boundaries
|
||||
@@ -166,7 +166,7 @@ sections:
|
||||
title: Data Resources
|
||||
instruction: |
|
||||
Design data infrastructure based on data architecture from main system design. Consider data volumes, access patterns, compliance, and recovery requirements.
|
||||
|
||||
|
||||
Create data flow diagram showing:
|
||||
- Database topology
|
||||
- Replication patterns
|
||||
@@ -187,7 +187,7 @@ sections:
|
||||
- Data Encryption
|
||||
- Compliance Controls
|
||||
- Security Scanning & Monitoring
|
||||
|
||||
|
||||
<critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule>
|
||||
|
||||
- id: shared-responsibility
|
||||
@@ -223,7 +223,7 @@ sections:
|
||||
title: CI/CD Pipeline
|
||||
instruction: |
|
||||
Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates.
|
||||
|
||||
|
||||
Create pipeline diagram showing:
|
||||
- Build stages
|
||||
- Test gates
|
||||
@@ -254,7 +254,7 @@ sections:
|
||||
- Recovery Procedures
|
||||
- RTO & RPO Targets
|
||||
- DR Testing Approach
|
||||
|
||||
|
||||
<critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule>
|
||||
|
||||
- id: cost-optimization
|
||||
@@ -296,15 +296,15 @@ sections:
|
||||
title: DevOps/Platform Feasibility Review
|
||||
instruction: |
|
||||
CRITICAL STEP - Present architectural blueprint summary to DevOps/Platform Engineering Agent for feasibility review. Request specific feedback on:
|
||||
|
||||
|
||||
- **Operational Complexity:** Are the proposed patterns implementable with current tooling and expertise?
|
||||
- **Resource Constraints:** Do infrastructure requirements align with available resources and budgets?
|
||||
- **Security Implementation:** Are security patterns achievable with current security toolchain?
|
||||
- **Operational Overhead:** Will the proposed architecture create excessive operational burden?
|
||||
- **Technology Constraints:** Are selected technologies compatible with existing infrastructure?
|
||||
|
||||
|
||||
Document all feasibility feedback and concerns raised. Iterate on architectural decisions based on operational constraints and feedback.
|
||||
|
||||
|
||||
<critical_rule>Address all critical feasibility concerns before proceeding to final architecture documentation. If critical blockers identified, revise architecture before continuing.</critical_rule>
|
||||
sections:
|
||||
- id: feasibility-results
|
||||
@@ -322,7 +322,7 @@ sections:
|
||||
title: Validation Framework
|
||||
content: |
|
||||
This infrastructure architecture will be validated using the comprehensive `infrastructure-checklist.md`, with particular focus on Section 12: Architecture Documentation Validation. The checklist ensures:
|
||||
|
||||
|
||||
- Completeness of architecture documentation
|
||||
- Consistency with broader system architecture
|
||||
- Appropriate level of detail for different stakeholders
|
||||
@@ -332,12 +332,12 @@ sections:
|
||||
title: Validation Process
|
||||
content: |
|
||||
The architecture documentation validation should be performed:
|
||||
|
||||
|
||||
- After initial architecture development
|
||||
- After significant architecture changes
|
||||
- Before major implementation phases
|
||||
- During periodic architecture reviews
|
||||
|
||||
|
||||
The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document.
|
||||
|
||||
- id: implementation-handoff
|
||||
@@ -348,7 +348,7 @@ sections:
|
||||
title: Architecture Decision Records (ADRs)
|
||||
content: |
|
||||
Create ADRs for key infrastructure decisions:
|
||||
|
||||
|
||||
- Cloud provider selection rationale
|
||||
- Container orchestration platform choice
|
||||
- Networking architecture decisions
|
||||
@@ -358,7 +358,7 @@ sections:
|
||||
title: Implementation Validation Criteria
|
||||
content: |
|
||||
Define specific criteria for validating correct implementation:
|
||||
|
||||
|
||||
- Infrastructure as Code quality gates
|
||||
- Security compliance checkpoints
|
||||
- Performance benchmarks
|
||||
@@ -418,7 +418,7 @@ sections:
|
||||
instruction: Final Review - Ensure all sections are complete and consistent. Verify feasibility review was conducted and all concerns addressed. Apply final validation against infrastructure checklist.
|
||||
content: |
|
||||
---
|
||||
|
||||
|
||||
_Document Version: 1.0_
|
||||
_Last Updated: {{current_date}}_
|
||||
_Next Review: {{review_date}}_
|
||||
_Next Review: {{review_date}}_
|
||||
|
||||
@@ -28,7 +28,7 @@ sections:
|
||||
- id: initial-setup
|
||||
instruction: |
|
||||
Initial Setup
|
||||
|
||||
|
||||
1. Replace {{project_name}} with the actual project name throughout the document
|
||||
2. Gather and review required inputs:
|
||||
- **Infrastructure Architecture Document** (Primary input - REQUIRED)
|
||||
@@ -37,10 +37,10 @@ sections:
|
||||
- Technology Stack Document
|
||||
- Infrastructure Checklist
|
||||
- NOTE: If Infrastructure Architecture Document is missing, HALT and request: "I need the Infrastructure Architecture Document to proceed with platform implementation. This document defines the infrastructure design that we'll be implementing."
|
||||
|
||||
|
||||
3. Validate that the infrastructure architecture has been reviewed and approved
|
||||
4. <critical_rule>All platform implementation must align with the approved infrastructure architecture. Any deviations require architect approval.</critical_rule>
|
||||
|
||||
|
||||
Output file location: `docs/platform-infrastructure/platform-implementation.md`
|
||||
|
||||
- id: executive-summary
|
||||
@@ -113,7 +113,7 @@ sections:
|
||||
# Example Terraform for VPC setup
|
||||
module "vpc" {
|
||||
source = "./modules/vpc"
|
||||
|
||||
|
||||
cidr_block = "{{vpc_cidr}}"
|
||||
availability_zones = {{availability_zones}}
|
||||
public_subnets = {{public_subnets}}
|
||||
@@ -508,7 +508,7 @@ sections:
|
||||
// K6 Load Test Example
|
||||
import http from 'k6/http';
|
||||
import { check } from 'k6';
|
||||
|
||||
|
||||
export let options = {
|
||||
stages: [
|
||||
{ duration: '5m', target: {{target_users}} },
|
||||
@@ -622,8 +622,8 @@ sections:
|
||||
instruction: Final Review - Ensure all platform layers are properly implemented, integrated, and documented. Verify that the implementation fully supports the BMAD methodology and all agent workflows. Confirm successful validation against the infrastructure checklist.
|
||||
content: |
|
||||
---
|
||||
|
||||
|
||||
_Platform Version: 1.0_
|
||||
_Implementation Date: {{implementation_date}}_
|
||||
_Next Review: {{review_date}}_
|
||||
_Approved by: {{architect_name}} (Architect), {{devops_name}} (DevOps/Platform Engineer)_
|
||||
_Approved by: {{architect_name}} (Architect), {{devops_name}} (DevOps/Platform Engineer)_
|
||||
|
||||
1466
package-lock.json
generated
1466
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
101
package.json
101
package.json
@@ -1,7 +1,23 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "bmad-method",
|
||||
"version": "5.0.0",
|
||||
"version": "5.1.2",
|
||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||
"keywords": [
|
||||
"agile",
|
||||
"ai",
|
||||
"orchestrator",
|
||||
"development",
|
||||
"methodology",
|
||||
"agents",
|
||||
"bmad"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/bmadcode/BMAD-METHOD.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"author": "Brian (BMad) Madison",
|
||||
"main": "tools/cli.js",
|
||||
"bin": {
|
||||
"bmad": "tools/bmad-npx-wrapper.js",
|
||||
@@ -11,27 +27,46 @@
|
||||
"build": "node tools/cli.js build",
|
||||
"build:agents": "node tools/cli.js build --agents-only",
|
||||
"build:teams": "node tools/cli.js build --teams-only",
|
||||
"list:agents": "node tools/cli.js list:agents",
|
||||
"validate": "node tools/cli.js validate",
|
||||
"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}\"",
|
||||
"install:bmad": "node tools/installer/bin/bmad.js install",
|
||||
"format": "prettier --write \"**/*.md\"",
|
||||
"version:patch": "node tools/version-bump.js patch",
|
||||
"version:minor": "node tools/version-bump.js minor",
|
||||
"version:major": "node tools/version-bump.js major",
|
||||
"version:expansion": "node tools/bump-expansion-version.js",
|
||||
"version:expansion:set": "node tools/update-expansion-version.js",
|
||||
"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",
|
||||
"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",
|
||||
"validate": "node tools/cli.js validate",
|
||||
"version:all": "node tools/bump-all-versions.js",
|
||||
"version:all:minor": "node tools/bump-all-versions.js minor",
|
||||
"version:all:major": "node tools/bump-all-versions.js major",
|
||||
"version:all:minor": "node tools/bump-all-versions.js minor",
|
||||
"version:all:patch": "node tools/bump-all-versions.js patch",
|
||||
"version:expansion": "node tools/bump-expansion-version.js",
|
||||
"version:expansion:all": "node tools/bump-all-versions.js",
|
||||
"version:expansion:all:minor": "node tools/bump-all-versions.js minor",
|
||||
"version:expansion:all:major": "node tools/bump-all-versions.js major",
|
||||
"version:expansion:all:minor": "node tools/bump-all-versions.js minor",
|
||||
"version:expansion:all:patch": "node tools/bump-all-versions.js patch",
|
||||
"release": "semantic-release",
|
||||
"release:test": "semantic-release --dry-run --no-ci || echo 'Config test complete - authentication errors are expected locally'",
|
||||
"prepare": "husky"
|
||||
"version:expansion:set": "node tools/update-expansion-version.js",
|
||||
"version:major": "node tools/version-bump.js major",
|
||||
"version:minor": "node tools/version-bump.js minor",
|
||||
"version:patch": "node tools/version-bump.js patch"
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*.{js,cjs,mjs}": [
|
||||
"eslint --fix --max-warnings=0",
|
||||
"prettier --write"
|
||||
],
|
||||
"**/*.yaml": [
|
||||
"eslint --fix",
|
||||
"prettier --write"
|
||||
],
|
||||
"**/*.{json,md}": [
|
||||
"prettier --write"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@kayvan/markdown-tree-parser": "^1.5.0",
|
||||
@@ -46,37 +81,25 @@
|
||||
"ora": "^5.4.1",
|
||||
"semver": "^7.6.3"
|
||||
},
|
||||
"keywords": [
|
||||
"agile",
|
||||
"ai",
|
||||
"orchestrator",
|
||||
"development",
|
||||
"methodology",
|
||||
"agents",
|
||||
"bmad"
|
||||
],
|
||||
"author": "Brian (BMad) Madison",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/bmadcode/BMAD-METHOD.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"@eslint/js": "^9.33.0",
|
||||
"eslint": "^9.33.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-n": "^17.21.3",
|
||||
"eslint-plugin-unicorn": "^60.0.0",
|
||||
"eslint-plugin-yml": "^1.18.0",
|
||||
"husky": "^9.1.7",
|
||||
"jest": "^30.0.4",
|
||||
"lint-staged": "^16.1.1",
|
||||
"prettier": "^3.5.3",
|
||||
"semantic-release": "^22.0.0",
|
||||
"prettier-plugin-packagejson": "^2.5.19",
|
||||
"yaml-eslint-parser": "^1.2.3",
|
||||
"yaml-lint": "^1.7.0"
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*.md": [
|
||||
"prettier --write"
|
||||
]
|
||||
"engines": {
|
||||
"node": ">=20.10.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
|
||||
32
prettier.config.mjs
Normal file
32
prettier.config.mjs
Normal file
@@ -0,0 +1,32 @@
|
||||
export default {
|
||||
$schema: 'https://json.schemastore.org/prettierrc',
|
||||
printWidth: 100,
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
bracketSpacing: true,
|
||||
arrowParens: 'always',
|
||||
endOfLine: 'lf',
|
||||
proseWrap: 'preserve',
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.md'],
|
||||
options: { proseWrap: 'preserve' },
|
||||
},
|
||||
{
|
||||
files: ['*.yaml'],
|
||||
options: { singleQuote: false },
|
||||
},
|
||||
{
|
||||
files: ['*.json', '*.jsonc'],
|
||||
options: { singleQuote: false },
|
||||
},
|
||||
{
|
||||
files: ['*.cjs'],
|
||||
options: { parser: 'babel' },
|
||||
},
|
||||
],
|
||||
plugins: ['prettier-plugin-packagejson'],
|
||||
};
|
||||
@@ -5,30 +5,30 @@
|
||||
* This file ensures proper execution when run via npx from GitHub
|
||||
*/
|
||||
|
||||
const { execSync } = require('child_process');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('node:child_process');
|
||||
const path = require('node:path');
|
||||
const fs = require('node:fs');
|
||||
|
||||
// Check if we're running in an npx temporary directory
|
||||
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
||||
|
||||
// If running via npx, we need to handle things differently
|
||||
if (isNpxExecution) {
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const arguments_ = process.argv.slice(2);
|
||||
|
||||
// Use the installer for all commands
|
||||
const bmadScriptPath = path.join(__dirname, 'installer', 'bin', 'bmad.js');
|
||||
|
||||
|
||||
if (!fs.existsSync(bmadScriptPath)) {
|
||||
console.error('Error: Could not find bmad.js at', bmadScriptPath);
|
||||
console.error('Current directory:', __dirname);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
execSync(`node "${bmadScriptPath}" ${args.join(' ')}`, {
|
||||
execSync(`node "${bmadScriptPath}" ${arguments_.join(' ')}`, {
|
||||
stdio: 'inherit',
|
||||
cwd: path.dirname(__dirname)
|
||||
cwd: path.dirname(__dirname),
|
||||
});
|
||||
} catch (error) {
|
||||
process.exit(error.status || 1);
|
||||
@@ -36,4 +36,4 @@ if (isNpxExecution) {
|
||||
} else {
|
||||
// Local execution - use installer for all commands
|
||||
require('./installer/bin/bmad.js');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
const fs = require("node:fs").promises;
|
||||
const path = require("node:path");
|
||||
const DependencyResolver = require("../lib/dependency-resolver");
|
||||
const yamlUtils = require("../lib/yaml-utils");
|
||||
const fs = require('node:fs').promises;
|
||||
const path = require('node:path');
|
||||
const DependencyResolver = require('../lib/dependency-resolver');
|
||||
const yamlUtilities = require('../lib/yaml-utils');
|
||||
|
||||
class WebBuilder {
|
||||
constructor(options = {}) {
|
||||
this.rootDir = options.rootDir || process.cwd();
|
||||
this.outputDirs = options.outputDirs || [path.join(this.rootDir, "dist")];
|
||||
this.outputDirs = options.outputDirs || [path.join(this.rootDir, 'dist')];
|
||||
this.resolver = new DependencyResolver(this.rootDir);
|
||||
this.templatePath = path.join(
|
||||
this.rootDir,
|
||||
"tools",
|
||||
"md-assets",
|
||||
"web-agent-startup-instructions.md"
|
||||
'tools',
|
||||
'md-assets',
|
||||
'web-agent-startup-instructions.md',
|
||||
);
|
||||
}
|
||||
|
||||
parseYaml(content) {
|
||||
const yaml = require("js-yaml");
|
||||
const yaml = require('js-yaml');
|
||||
return yaml.load(content);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ class WebBuilder {
|
||||
// All resources get installed under the bundle root, so use that path
|
||||
const relativePath = path.relative(this.rootDir, filePath);
|
||||
const pathParts = relativePath.split(path.sep);
|
||||
|
||||
|
||||
let resourcePath;
|
||||
if (pathParts[0] === 'expansion-packs') {
|
||||
// For expansion packs, remove 'expansion-packs/packname' and use the rest
|
||||
@@ -35,18 +35,28 @@ class WebBuilder {
|
||||
// For bmad-core, common, etc., remove the first part
|
||||
resourcePath = pathParts.slice(1).join('/');
|
||||
}
|
||||
|
||||
|
||||
return `.${bundleRoot}/${resourcePath}`;
|
||||
}
|
||||
|
||||
generateWebInstructions(bundleType, packName = null) {
|
||||
// Generate dynamic web instructions based on bundle type
|
||||
const rootExample = packName ? `.${packName}` : '.bmad-core';
|
||||
const examplePath = packName ? `.${packName}/folder/filename.md` : '.bmad-core/folder/filename.md';
|
||||
const personasExample = packName ? `.${packName}/personas/analyst.md` : '.bmad-core/personas/analyst.md';
|
||||
const tasksExample = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md';
|
||||
const utilsExample = packName ? `.${packName}/utils/template-format.md` : '.bmad-core/utils/template-format.md';
|
||||
const tasksRef = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md';
|
||||
const examplePath = packName
|
||||
? `.${packName}/folder/filename.md`
|
||||
: '.bmad-core/folder/filename.md';
|
||||
const personasExample = packName
|
||||
? `.${packName}/personas/analyst.md`
|
||||
: '.bmad-core/personas/analyst.md';
|
||||
const tasksExample = packName
|
||||
? `.${packName}/tasks/create-story.md`
|
||||
: '.bmad-core/tasks/create-story.md';
|
||||
const utilitiesExample = packName
|
||||
? `.${packName}/utils/template-format.md`
|
||||
: '.bmad-core/utils/template-format.md';
|
||||
const tasksReference = packName
|
||||
? `.${packName}/tasks/create-story.md`
|
||||
: '.bmad-core/tasks/create-story.md';
|
||||
|
||||
return `# Web Agent Bundle Instructions
|
||||
|
||||
@@ -79,8 +89,8 @@ dependencies:
|
||||
|
||||
These references map directly to bundle sections:
|
||||
|
||||
- \`utils: template-format\` → Look for \`==================== START: ${utilsExample} ====================\`
|
||||
- \`tasks: create-story\` → Look for \`==================== START: ${tasksRef} ====================\`
|
||||
- \`utils: template-format\` → Look for \`==================== START: ${utilitiesExample} ====================\`
|
||||
- \`tasks: create-story\` → Look for \`==================== START: ${tasksReference} ====================\`
|
||||
|
||||
3. **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance.
|
||||
|
||||
@@ -112,10 +122,10 @@ These references map directly to bundle sections:
|
||||
|
||||
// Write to all output directories
|
||||
for (const outputDir of this.outputDirs) {
|
||||
const outputPath = path.join(outputDir, "agents");
|
||||
const outputPath = path.join(outputDir, 'agents');
|
||||
await fs.mkdir(outputPath, { recursive: true });
|
||||
const outputFile = path.join(outputPath, `${agentId}.txt`);
|
||||
await fs.writeFile(outputFile, bundle, "utf8");
|
||||
await fs.writeFile(outputFile, bundle, 'utf8');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,10 +141,10 @@ These references map directly to bundle sections:
|
||||
|
||||
// Write to all output directories
|
||||
for (const outputDir of this.outputDirs) {
|
||||
const outputPath = path.join(outputDir, "teams");
|
||||
const outputPath = path.join(outputDir, 'teams');
|
||||
await fs.mkdir(outputPath, { recursive: true });
|
||||
const outputFile = path.join(outputPath, `${teamId}.txt`);
|
||||
await fs.writeFile(outputFile, bundle, "utf8");
|
||||
await fs.writeFile(outputFile, bundle, 'utf8');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +167,7 @@ These references map directly to bundle sections:
|
||||
sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
|
||||
}
|
||||
|
||||
return sections.join("\n");
|
||||
return sections.join('\n');
|
||||
}
|
||||
|
||||
async buildTeamBundle(teamId) {
|
||||
@@ -182,40 +192,40 @@ These references map directly to bundle sections:
|
||||
sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
|
||||
}
|
||||
|
||||
return sections.join("\n");
|
||||
return sections.join('\n');
|
||||
}
|
||||
|
||||
processAgentContent(content) {
|
||||
// First, replace content before YAML with the template
|
||||
const yamlContent = yamlUtils.extractYamlFromAgent(content);
|
||||
const yamlContent = yamlUtilities.extractYamlFromAgent(content);
|
||||
if (!yamlContent) return content;
|
||||
|
||||
const yamlMatch = content.match(/```ya?ml\n([\s\S]*?)\n```/);
|
||||
if (!yamlMatch) return content;
|
||||
|
||||
|
||||
const yamlStartIndex = content.indexOf(yamlMatch[0]);
|
||||
const yamlEndIndex = yamlStartIndex + yamlMatch[0].length;
|
||||
|
||||
// Parse YAML and remove root and IDE-FILE-RESOLUTION properties
|
||||
try {
|
||||
const yaml = require("js-yaml");
|
||||
const yaml = require('js-yaml');
|
||||
const parsed = yaml.load(yamlContent);
|
||||
|
||||
// Remove the properties if they exist at root level
|
||||
delete parsed.root;
|
||||
delete parsed["IDE-FILE-RESOLUTION"];
|
||||
delete parsed["REQUEST-RESOLUTION"];
|
||||
delete parsed['IDE-FILE-RESOLUTION'];
|
||||
delete parsed['REQUEST-RESOLUTION'];
|
||||
|
||||
// Also remove from activation-instructions if they exist
|
||||
if (parsed["activation-instructions"] && Array.isArray(parsed["activation-instructions"])) {
|
||||
parsed["activation-instructions"] = parsed["activation-instructions"].filter(
|
||||
if (parsed['activation-instructions'] && Array.isArray(parsed['activation-instructions'])) {
|
||||
parsed['activation-instructions'] = parsed['activation-instructions'].filter(
|
||||
(instruction) => {
|
||||
return (
|
||||
typeof instruction === 'string' &&
|
||||
!instruction.startsWith("IDE-FILE-RESOLUTION:") &&
|
||||
!instruction.startsWith("REQUEST-RESOLUTION:")
|
||||
!instruction.startsWith('IDE-FILE-RESOLUTION:') &&
|
||||
!instruction.startsWith('REQUEST-RESOLUTION:')
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -223,25 +233,25 @@ These references map directly to bundle sections:
|
||||
const cleanedYaml = yaml.dump(parsed, { lineWidth: -1 });
|
||||
|
||||
// Get the agent name from the YAML for the header
|
||||
const agentName = parsed.agent?.id || "agent";
|
||||
const agentName = parsed.agent?.id || 'agent';
|
||||
|
||||
// Build the new content with just the agent header and YAML
|
||||
const newHeader = `# ${agentName}\n\nCRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:\n\n`;
|
||||
const afterYaml = content.substring(yamlEndIndex);
|
||||
const afterYaml = content.slice(Math.max(0, yamlEndIndex));
|
||||
|
||||
return newHeader + "```yaml\n" + cleanedYaml.trim() + "\n```" + afterYaml;
|
||||
return newHeader + '```yaml\n' + cleanedYaml.trim() + '\n```' + afterYaml;
|
||||
} catch (error) {
|
||||
console.warn("Failed to process agent YAML:", error.message);
|
||||
console.warn('Failed to process agent YAML:', error.message);
|
||||
// If parsing fails, return original content
|
||||
return content;
|
||||
}
|
||||
}
|
||||
|
||||
formatSection(path, content, bundleRoot = 'bmad-core') {
|
||||
const separator = "====================";
|
||||
const separator = '====================';
|
||||
|
||||
// Process agent content if this is an agent file
|
||||
if (path.includes("/agents/")) {
|
||||
if (path.includes('/agents/')) {
|
||||
content = this.processAgentContent(content);
|
||||
}
|
||||
|
||||
@@ -252,17 +262,17 @@ These references map directly to bundle sections:
|
||||
`${separator} START: ${path} ${separator}`,
|
||||
content.trim(),
|
||||
`${separator} END: ${path} ${separator}`,
|
||||
"",
|
||||
].join("\n");
|
||||
'',
|
||||
].join('\n');
|
||||
}
|
||||
|
||||
replaceRootReferences(content, bundleRoot) {
|
||||
// Replace {root} with the appropriate bundle root path
|
||||
return content.replace(/\{root\}/g, `.${bundleRoot}`);
|
||||
return content.replaceAll('{root}', `.${bundleRoot}`);
|
||||
}
|
||||
|
||||
async validate() {
|
||||
console.log("Validating agent configurations...");
|
||||
console.log('Validating agent configurations...');
|
||||
const agents = await this.resolver.listAgents();
|
||||
for (const agentId of agents) {
|
||||
try {
|
||||
@@ -274,7 +284,7 @@ These references map directly to bundle sections:
|
||||
}
|
||||
}
|
||||
|
||||
console.log("\nValidating team configurations...");
|
||||
console.log('\nValidating team configurations...');
|
||||
const teams = await this.resolver.listTeams();
|
||||
for (const teamId of teams) {
|
||||
try {
|
||||
@@ -299,54 +309,54 @@ These references map directly to bundle sections:
|
||||
}
|
||||
|
||||
async buildExpansionPack(packName, options = {}) {
|
||||
const packDir = path.join(this.rootDir, "expansion-packs", packName);
|
||||
const outputDirs = [path.join(this.rootDir, "dist", "expansion-packs", packName)];
|
||||
const packDir = path.join(this.rootDir, 'expansion-packs', packName);
|
||||
const outputDirectories = [path.join(this.rootDir, 'dist', 'expansion-packs', packName)];
|
||||
|
||||
// Clean output directories if requested
|
||||
if (options.clean !== false) {
|
||||
for (const outputDir of outputDirs) {
|
||||
for (const outputDir of outputDirectories) {
|
||||
try {
|
||||
await fs.rm(outputDir, { recursive: true, force: true });
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Directory might not exist, that's fine
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build individual agents first
|
||||
const agentsDir = path.join(packDir, "agents");
|
||||
const agentsDir = path.join(packDir, 'agents');
|
||||
try {
|
||||
const agentFiles = await fs.readdir(agentsDir);
|
||||
const agentMarkdownFiles = agentFiles.filter((f) => f.endsWith(".md"));
|
||||
const agentMarkdownFiles = agentFiles.filter((f) => f.endsWith('.md'));
|
||||
|
||||
if (agentMarkdownFiles.length > 0) {
|
||||
console.log(` Building individual agents for ${packName}:`);
|
||||
|
||||
for (const agentFile of agentMarkdownFiles) {
|
||||
const agentName = agentFile.replace(".md", "");
|
||||
const agentName = agentFile.replace('.md', '');
|
||||
console.log(` - ${agentName}`);
|
||||
|
||||
// Build individual agent bundle
|
||||
const bundle = await this.buildExpansionAgentBundle(packName, packDir, agentName);
|
||||
|
||||
// Write to all output directories
|
||||
for (const outputDir of outputDirs) {
|
||||
const agentsOutputDir = path.join(outputDir, "agents");
|
||||
for (const outputDir of outputDirectories) {
|
||||
const agentsOutputDir = path.join(outputDir, 'agents');
|
||||
await fs.mkdir(agentsOutputDir, { recursive: true });
|
||||
const outputFile = path.join(agentsOutputDir, `${agentName}.txt`);
|
||||
await fs.writeFile(outputFile, bundle, "utf8");
|
||||
await fs.writeFile(outputFile, bundle, 'utf8');
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
console.debug(` No agents directory found for ${packName}`);
|
||||
}
|
||||
|
||||
// Build team bundle
|
||||
const agentTeamsDir = path.join(packDir, "agent-teams");
|
||||
const agentTeamsDir = path.join(packDir, 'agent-teams');
|
||||
try {
|
||||
const teamFiles = await fs.readdir(agentTeamsDir);
|
||||
const teamFile = teamFiles.find((f) => f.endsWith(".yaml"));
|
||||
const teamFile = teamFiles.find((f) => f.endsWith('.yaml'));
|
||||
|
||||
if (teamFile) {
|
||||
console.log(` Building team bundle for ${packName}`);
|
||||
@@ -356,17 +366,17 @@ These references map directly to bundle sections:
|
||||
const bundle = await this.buildExpansionTeamBundle(packName, packDir, teamConfigPath);
|
||||
|
||||
// Write to all output directories
|
||||
for (const outputDir of outputDirs) {
|
||||
const teamsOutputDir = path.join(outputDir, "teams");
|
||||
for (const outputDir of outputDirectories) {
|
||||
const teamsOutputDir = path.join(outputDir, 'teams');
|
||||
await fs.mkdir(teamsOutputDir, { recursive: true });
|
||||
const outputFile = path.join(teamsOutputDir, teamFile.replace(".yaml", ".txt"));
|
||||
await fs.writeFile(outputFile, bundle, "utf8");
|
||||
const outputFile = path.join(teamsOutputDir, teamFile.replace('.yaml', '.txt'));
|
||||
await fs.writeFile(outputFile, bundle, 'utf8');
|
||||
console.log(` ✓ Created bundle: ${path.relative(this.rootDir, outputFile)}`);
|
||||
}
|
||||
} else {
|
||||
console.warn(` ⚠ No team configuration found in ${packName}/agent-teams/`);
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
console.warn(` ⚠ No agent-teams directory found for ${packName}`);
|
||||
}
|
||||
}
|
||||
@@ -376,16 +386,16 @@ These references map directly to bundle sections:
|
||||
const sections = [template];
|
||||
|
||||
// Add agent configuration
|
||||
const agentPath = path.join(packDir, "agents", `${agentName}.md`);
|
||||
const agentContent = await fs.readFile(agentPath, "utf8");
|
||||
const agentPath = path.join(packDir, 'agents', `${agentName}.md`);
|
||||
const agentContent = await fs.readFile(agentPath, 'utf8');
|
||||
const agentWebPath = this.convertToWebPath(agentPath, packName);
|
||||
sections.push(this.formatSection(agentWebPath, agentContent, packName));
|
||||
|
||||
// Resolve and add agent dependencies
|
||||
const yamlContent = yamlUtils.extractYamlFromAgent(agentContent);
|
||||
const yamlContent = yamlUtilities.extractYamlFromAgent(agentContent);
|
||||
if (yamlContent) {
|
||||
try {
|
||||
const yaml = require("js-yaml");
|
||||
const yaml = require('js-yaml');
|
||||
const agentConfig = yaml.load(yamlContent);
|
||||
|
||||
if (agentConfig.dependencies) {
|
||||
@@ -398,59 +408,43 @@ These references map directly to bundle sections:
|
||||
// Try expansion pack first
|
||||
const resourcePath = path.join(packDir, resourceType, resourceName);
|
||||
try {
|
||||
const resourceContent = await fs.readFile(resourcePath, "utf8");
|
||||
const resourceContent = await fs.readFile(resourcePath, 'utf8');
|
||||
const resourceWebPath = this.convertToWebPath(resourcePath, packName);
|
||||
sections.push(
|
||||
this.formatSection(resourceWebPath, resourceContent, packName)
|
||||
);
|
||||
sections.push(this.formatSection(resourceWebPath, resourceContent, packName));
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Not in expansion pack, continue
|
||||
}
|
||||
|
||||
// If not found in expansion pack, try core
|
||||
if (!found) {
|
||||
const corePath = path.join(
|
||||
this.rootDir,
|
||||
"bmad-core",
|
||||
resourceType,
|
||||
resourceName
|
||||
);
|
||||
const corePath = path.join(this.rootDir, 'bmad-core', resourceType, resourceName);
|
||||
try {
|
||||
const coreContent = await fs.readFile(corePath, "utf8");
|
||||
const coreContent = await fs.readFile(corePath, 'utf8');
|
||||
const coreWebPath = this.convertToWebPath(corePath, packName);
|
||||
sections.push(
|
||||
this.formatSection(coreWebPath, coreContent, packName)
|
||||
);
|
||||
sections.push(this.formatSection(coreWebPath, coreContent, packName));
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Not in core either, continue
|
||||
}
|
||||
}
|
||||
|
||||
// If not found in core, try common folder
|
||||
if (!found) {
|
||||
const commonPath = path.join(
|
||||
this.rootDir,
|
||||
"common",
|
||||
resourceType,
|
||||
resourceName
|
||||
);
|
||||
const commonPath = path.join(this.rootDir, 'common', resourceType, resourceName);
|
||||
try {
|
||||
const commonContent = await fs.readFile(commonPath, "utf8");
|
||||
const commonContent = await fs.readFile(commonPath, 'utf8');
|
||||
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
||||
sections.push(
|
||||
this.formatSection(commonWebPath, commonContent, packName)
|
||||
);
|
||||
sections.push(this.formatSection(commonWebPath, commonContent, packName));
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Not in common either, continue
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
console.warn(
|
||||
` ⚠ Dependency ${resourceType}#${resourceName} not found in expansion pack or core`
|
||||
` ⚠ Dependency ${resourceType}#${resourceName} not found in expansion pack or core`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -462,7 +456,7 @@ These references map directly to bundle sections:
|
||||
}
|
||||
}
|
||||
|
||||
return sections.join("\n");
|
||||
return sections.join('\n');
|
||||
}
|
||||
|
||||
async buildExpansionTeamBundle(packName, packDir, teamConfigPath) {
|
||||
@@ -471,38 +465,38 @@ These references map directly to bundle sections:
|
||||
const sections = [template];
|
||||
|
||||
// Add team configuration and parse to get agent list
|
||||
const teamContent = await fs.readFile(teamConfigPath, "utf8");
|
||||
const teamFileName = path.basename(teamConfigPath, ".yaml");
|
||||
const teamContent = await fs.readFile(teamConfigPath, 'utf8');
|
||||
const teamFileName = path.basename(teamConfigPath, '.yaml');
|
||||
const teamConfig = this.parseYaml(teamContent);
|
||||
const teamWebPath = this.convertToWebPath(teamConfigPath, packName);
|
||||
sections.push(this.formatSection(teamWebPath, teamContent, packName));
|
||||
|
||||
// Get list of expansion pack agents
|
||||
const expansionAgents = new Set();
|
||||
const agentsDir = path.join(packDir, "agents");
|
||||
const agentsDir = path.join(packDir, 'agents');
|
||||
try {
|
||||
const agentFiles = await fs.readdir(agentsDir);
|
||||
for (const agentFile of agentFiles.filter((f) => f.endsWith(".md"))) {
|
||||
const agentName = agentFile.replace(".md", "");
|
||||
for (const agentFile of agentFiles.filter((f) => f.endsWith('.md'))) {
|
||||
const agentName = agentFile.replace('.md', '');
|
||||
expansionAgents.add(agentName);
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
console.warn(` ⚠ No agents directory found in ${packName}`);
|
||||
}
|
||||
|
||||
// Build a map of all available expansion pack resources for override checking
|
||||
const expansionResources = new Map();
|
||||
const resourceDirs = ["templates", "tasks", "checklists", "workflows", "data"];
|
||||
for (const resourceDir of resourceDirs) {
|
||||
const resourceDirectories = ['templates', 'tasks', 'checklists', 'workflows', 'data'];
|
||||
for (const resourceDir of resourceDirectories) {
|
||||
const resourcePath = path.join(packDir, resourceDir);
|
||||
try {
|
||||
const resourceFiles = await fs.readdir(resourcePath);
|
||||
for (const resourceFile of resourceFiles.filter(
|
||||
(f) => f.endsWith(".md") || f.endsWith(".yaml")
|
||||
(f) => f.endsWith('.md') || f.endsWith('.yaml'),
|
||||
)) {
|
||||
expansionResources.set(`${resourceDir}#${resourceFile}`, true);
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Directory might not exist, that's fine
|
||||
}
|
||||
}
|
||||
@@ -511,9 +505,9 @@ These references map directly to bundle sections:
|
||||
const agentsToProcess = teamConfig.agents || [];
|
||||
|
||||
// Ensure bmad-orchestrator is always included for teams
|
||||
if (!agentsToProcess.includes("bmad-orchestrator")) {
|
||||
if (!agentsToProcess.includes('bmad-orchestrator')) {
|
||||
console.warn(` ⚠ Team ${teamFileName} missing bmad-orchestrator, adding automatically`);
|
||||
agentsToProcess.unshift("bmad-orchestrator");
|
||||
agentsToProcess.unshift('bmad-orchestrator');
|
||||
}
|
||||
|
||||
// Track all dependencies from all agents (deduplicated)
|
||||
@@ -523,7 +517,7 @@ These references map directly to bundle sections:
|
||||
if (expansionAgents.has(agentId)) {
|
||||
// Use expansion pack version (override)
|
||||
const agentPath = path.join(agentsDir, `${agentId}.md`);
|
||||
const agentContent = await fs.readFile(agentPath, "utf8");
|
||||
const agentContent = await fs.readFile(agentPath, 'utf8');
|
||||
const expansionAgentWebPath = this.convertToWebPath(agentPath, packName);
|
||||
sections.push(this.formatSection(expansionAgentWebPath, agentContent, packName));
|
||||
|
||||
@@ -551,13 +545,13 @@ These references map directly to bundle sections:
|
||||
} else {
|
||||
// Use core BMad version
|
||||
try {
|
||||
const coreAgentPath = path.join(this.rootDir, "bmad-core", "agents", `${agentId}.md`);
|
||||
const coreAgentContent = await fs.readFile(coreAgentPath, "utf8");
|
||||
const coreAgentPath = path.join(this.rootDir, 'bmad-core', 'agents', `${agentId}.md`);
|
||||
const coreAgentContent = await fs.readFile(coreAgentPath, 'utf8');
|
||||
const coreAgentWebPath = this.convertToWebPath(coreAgentPath, packName);
|
||||
sections.push(this.formatSection(coreAgentWebPath, coreAgentContent, packName));
|
||||
|
||||
// Parse and collect dependencies from core agent
|
||||
const yamlContent = yamlUtils.extractYamlFromAgent(coreAgentContent, true);
|
||||
const yamlContent = yamlUtilities.extractYamlFromAgent(coreAgentContent, true);
|
||||
if (yamlContent) {
|
||||
try {
|
||||
const agentConfig = this.parseYaml(yamlContent);
|
||||
@@ -577,7 +571,7 @@ These references map directly to bundle sections:
|
||||
console.debug(`Failed to parse agent YAML for ${agentId}:`, error.message);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
console.warn(` ⚠ Agent ${agentId} not found in core or expansion pack`);
|
||||
}
|
||||
}
|
||||
@@ -593,38 +587,38 @@ These references map directly to bundle sections:
|
||||
// We know it exists in expansion pack, find and load it
|
||||
const expansionPath = path.join(packDir, dep.type, dep.name);
|
||||
try {
|
||||
const content = await fs.readFile(expansionPath, "utf8");
|
||||
const content = await fs.readFile(expansionPath, 'utf8');
|
||||
const expansionWebPath = this.convertToWebPath(expansionPath, packName);
|
||||
sections.push(this.formatSection(expansionWebPath, content, packName));
|
||||
console.log(` ✓ Using expansion override for ${key}`);
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Try next extension
|
||||
}
|
||||
}
|
||||
|
||||
// If not found in expansion pack (or doesn't exist there), try core
|
||||
if (!found) {
|
||||
const corePath = path.join(this.rootDir, "bmad-core", dep.type, dep.name);
|
||||
const corePath = path.join(this.rootDir, 'bmad-core', dep.type, dep.name);
|
||||
try {
|
||||
const content = await fs.readFile(corePath, "utf8");
|
||||
const content = await fs.readFile(corePath, 'utf8');
|
||||
const coreWebPath = this.convertToWebPath(corePath, packName);
|
||||
sections.push(this.formatSection(coreWebPath, content, packName));
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Not in core either, continue
|
||||
}
|
||||
}
|
||||
|
||||
// If not found in core, try common folder
|
||||
if (!found) {
|
||||
const commonPath = path.join(this.rootDir, "common", dep.type, dep.name);
|
||||
const commonPath = path.join(this.rootDir, 'common', dep.type, dep.name);
|
||||
try {
|
||||
const content = await fs.readFile(commonPath, "utf8");
|
||||
const content = await fs.readFile(commonPath, 'utf8');
|
||||
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
||||
sections.push(this.formatSection(commonWebPath, content, packName));
|
||||
found = true;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Not in common either, continue
|
||||
}
|
||||
}
|
||||
@@ -635,16 +629,16 @@ These references map directly to bundle sections:
|
||||
}
|
||||
|
||||
// Add remaining expansion pack resources not already included as dependencies
|
||||
for (const resourceDir of resourceDirs) {
|
||||
for (const resourceDir of resourceDirectories) {
|
||||
const resourcePath = path.join(packDir, resourceDir);
|
||||
try {
|
||||
const resourceFiles = await fs.readdir(resourcePath);
|
||||
for (const resourceFile of resourceFiles.filter(
|
||||
(f) => f.endsWith(".md") || f.endsWith(".yaml")
|
||||
(f) => f.endsWith('.md') || f.endsWith('.yaml'),
|
||||
)) {
|
||||
const filePath = path.join(resourcePath, resourceFile);
|
||||
const fileContent = await fs.readFile(filePath, "utf8");
|
||||
const fileName = resourceFile.replace(/\.(md|yaml)$/, "");
|
||||
const fileContent = await fs.readFile(filePath, 'utf8');
|
||||
const fileName = resourceFile.replace(/\.(md|yaml)$/, '');
|
||||
|
||||
// Only add if not already included as a dependency
|
||||
const resourceKey = `${resourceDir}#${fileName}`;
|
||||
@@ -654,21 +648,21 @@ These references map directly to bundle sections:
|
||||
sections.push(this.formatSection(resourceWebPath, fileContent, packName));
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// Directory might not exist, that's fine
|
||||
}
|
||||
}
|
||||
|
||||
return sections.join("\n");
|
||||
return sections.join('\n');
|
||||
}
|
||||
|
||||
async listExpansionPacks() {
|
||||
const expansionPacksDir = path.join(this.rootDir, "expansion-packs");
|
||||
const expansionPacksDir = path.join(this.rootDir, 'expansion-packs');
|
||||
try {
|
||||
const entries = await fs.readdir(expansionPacksDir, { withFileTypes: true });
|
||||
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
|
||||
} catch (error) {
|
||||
console.warn("No expansion-packs directory found");
|
||||
} catch {
|
||||
console.warn('No expansion-packs directory found');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
const bumpType = args[0] || 'minor'; // default to minor
|
||||
const arguments_ = process.argv.slice(2);
|
||||
const bumpType = arguments_[0] || 'minor'; // default to minor
|
||||
|
||||
if (!['major', 'minor', 'patch'].includes(bumpType)) {
|
||||
console.log('Usage: node bump-all-versions.js [major|minor|patch]');
|
||||
@@ -15,22 +13,26 @@ if (!['major', 'minor', 'patch'].includes(bumpType)) {
|
||||
|
||||
function bumpVersion(currentVersion, type) {
|
||||
const [major, minor, patch] = currentVersion.split('.').map(Number);
|
||||
|
||||
|
||||
switch (type) {
|
||||
case 'major':
|
||||
case 'major': {
|
||||
return `${major + 1}.0.0`;
|
||||
case 'minor':
|
||||
}
|
||||
case 'minor': {
|
||||
return `${major}.${minor + 1}.0`;
|
||||
case 'patch':
|
||||
}
|
||||
case 'patch': {
|
||||
return `${major}.${minor}.${patch + 1}`;
|
||||
default:
|
||||
}
|
||||
default: {
|
||||
return currentVersion;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function bumpAllVersions() {
|
||||
const updatedItems = [];
|
||||
|
||||
|
||||
// First, bump the core version (package.json)
|
||||
const packagePath = path.join(__dirname, '..', 'package.json');
|
||||
try {
|
||||
@@ -38,69 +40,76 @@ async function bumpAllVersions() {
|
||||
const packageJson = JSON.parse(packageContent);
|
||||
const oldCoreVersion = packageJson.version || '1.0.0';
|
||||
const newCoreVersion = bumpVersion(oldCoreVersion, bumpType);
|
||||
|
||||
|
||||
packageJson.version = newCoreVersion;
|
||||
|
||||
|
||||
fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2) + '\n');
|
||||
|
||||
updatedItems.push({ type: 'core', name: 'BMad Core', oldVersion: oldCoreVersion, newVersion: newCoreVersion });
|
||||
|
||||
updatedItems.push({
|
||||
type: 'core',
|
||||
name: 'BMad Core',
|
||||
oldVersion: oldCoreVersion,
|
||||
newVersion: newCoreVersion,
|
||||
});
|
||||
console.log(`✓ BMad Core (package.json): ${oldCoreVersion} → ${newCoreVersion}`);
|
||||
} catch (error) {
|
||||
console.error(`✗ Failed to update BMad Core: ${error.message}`);
|
||||
}
|
||||
|
||||
|
||||
// Then, bump all expansion packs
|
||||
const expansionPacksDir = path.join(__dirname, '..', 'expansion-packs');
|
||||
|
||||
|
||||
try {
|
||||
const entries = fs.readdirSync(expansionPacksDir, { withFileTypes: true });
|
||||
|
||||
|
||||
for (const entry of entries) {
|
||||
if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'README.md') {
|
||||
const packId = entry.name;
|
||||
const configPath = path.join(expansionPacksDir, packId, 'config.yaml');
|
||||
|
||||
|
||||
if (fs.existsSync(configPath)) {
|
||||
try {
|
||||
const configContent = fs.readFileSync(configPath, 'utf8');
|
||||
const config = yaml.load(configContent);
|
||||
const oldVersion = config.version || '1.0.0';
|
||||
const newVersion = bumpVersion(oldVersion, bumpType);
|
||||
|
||||
|
||||
config.version = newVersion;
|
||||
|
||||
|
||||
const updatedYaml = yaml.dump(config, { indent: 2 });
|
||||
fs.writeFileSync(configPath, updatedYaml);
|
||||
|
||||
|
||||
updatedItems.push({ type: 'expansion', name: packId, oldVersion, newVersion });
|
||||
console.log(`✓ ${packId}: ${oldVersion} → ${newVersion}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error(`✗ Failed to update ${packId}: ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (updatedItems.length > 0) {
|
||||
const coreCount = updatedItems.filter(i => i.type === 'core').length;
|
||||
const expansionCount = updatedItems.filter(i => i.type === 'expansion').length;
|
||||
|
||||
console.log(`\n✓ Successfully bumped ${updatedItems.length} item(s) with ${bumpType} version bump`);
|
||||
const coreCount = updatedItems.filter((index) => index.type === 'core').length;
|
||||
const expansionCount = updatedItems.filter((index) => index.type === 'expansion').length;
|
||||
|
||||
console.log(
|
||||
`\n✓ Successfully bumped ${updatedItems.length} item(s) with ${bumpType} version bump`,
|
||||
);
|
||||
if (coreCount > 0) console.log(` - ${coreCount} core`);
|
||||
if (expansionCount > 0) console.log(` - ${expansionCount} expansion pack(s)`);
|
||||
|
||||
|
||||
console.log('\nNext steps:');
|
||||
console.log('1. Test the changes');
|
||||
console.log('2. Commit: git add -A && git commit -m "chore: bump all versions (' + bumpType + ')"');
|
||||
console.log(
|
||||
'2. Commit: git add -A && git commit -m "chore: bump all versions (' + bumpType + ')"',
|
||||
);
|
||||
} else {
|
||||
console.log('No items found to update');
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error reading expansion packs directory:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
bumpAllVersions();
|
||||
bumpAllVersions();
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// Load required modules
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
// Parse CLI arguments
|
||||
const args = process.argv.slice(2);
|
||||
const packId = args[0];
|
||||
const bumpType = args[1] || 'minor';
|
||||
const arguments_ = process.argv.slice(2);
|
||||
const packId = arguments_[0];
|
||||
const bumpType = arguments_[1] || 'minor';
|
||||
|
||||
// Validate arguments
|
||||
if (!packId || args.length > 2) {
|
||||
if (!packId || arguments_.length > 2) {
|
||||
console.log('Usage: node bump-expansion-version.js <expansion-pack-id> [major|minor|patch]');
|
||||
console.log('Default: minor');
|
||||
console.log('Example: node bump-expansion-version.js bmad-creator-tools patch');
|
||||
@@ -28,10 +26,18 @@ function bumpVersion(currentVersion, type) {
|
||||
const [major, minor, patch] = currentVersion.split('.').map(Number);
|
||||
|
||||
switch (type) {
|
||||
case 'major': return `${major + 1}.0.0`;
|
||||
case 'minor': return `${major}.${minor + 1}.0`;
|
||||
case 'patch': return `${major}.${minor}.${patch + 1}`;
|
||||
default: return currentVersion;
|
||||
case 'major': {
|
||||
return `${major + 1}.0.0`;
|
||||
}
|
||||
case 'minor': {
|
||||
return `${major}.${minor + 1}.0`;
|
||||
}
|
||||
case 'patch': {
|
||||
return `${major}.${minor}.${patch + 1}`;
|
||||
}
|
||||
default: {
|
||||
return currentVersion;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,11 +53,11 @@ async function updateVersion() {
|
||||
const packsDir = path.join(__dirname, '..', 'expansion-packs');
|
||||
const entries = fs.readdirSync(packsDir, { withFileTypes: true });
|
||||
|
||||
entries.forEach(entry => {
|
||||
for (const entry of entries) {
|
||||
if (entry.isDirectory() && !entry.name.startsWith('.')) {
|
||||
console.log(` - ${entry.name}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
process.exit(1);
|
||||
}
|
||||
@@ -72,8 +78,9 @@ async function updateVersion() {
|
||||
console.log(`\n✓ Successfully bumped ${packId} with ${bumpType} version bump`);
|
||||
console.log('\nNext steps:');
|
||||
console.log(`1. Test the changes`);
|
||||
console.log(`2. Commit: git add -A && git commit -m "chore: bump ${packId} version (${bumpType})"`);
|
||||
|
||||
console.log(
|
||||
`2. Commit: git add -A && git commit -m "chore: bump ${packId} version (${bumpType})"`,
|
||||
);
|
||||
} catch (error) {
|
||||
console.error('Error updating version:', error.message);
|
||||
process.exit(1);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user