Compare commits

...

15 Commits

Author SHA1 Message Date
manjaroblack
c48ddf462a chore: remove deprecated CLAUDE.md documentation file 2025-08-16 15:52:50 -05:00
Murat Ozcan
0c10ccd149 chore: add changelog cleanup workflow and remove Claude attribution 2025-08-16 15:52:35 -05:00
manjaroblack
a0a0b1ba6c chore(ci): harden release skip-ci condition for non-push triggers 2025-08-16 09:38:07 -05:00
manjaroblack
3c72d01f97 chore(ci): fix release workflow skip-ci expression 2025-08-16 09:34:23 -05:00
manjaroblack
e2b72c0618 refactor: simplify Windsurf workflow generation with minimal frontmatter format 2025-08-16 09:10:06 -05:00
manjaroblack
1e5dcd043a chore(yaml): enforce .yaml extension and prefer double quotes in YAML via eslint-plugin-yml; fix rule name; format repo 2025-08-15 23:49:14 -05:00
manjaroblack
312540327f style: standardize quote formatting and indentation in template files 2025-08-15 22:32:14 -05:00
manjaroblack
74c78d2274 chore: standardize ESLint/Prettier formatting across codebase 2025-08-15 22:22:24 -05:00
Brian Madison
e1176f337e feat: publish stable release 5.0.0
BREAKING CHANGE: Promote beta features to stable release for v5.0.0

This commit ensures the stable release gets properly published to NPM and GitHub releases.
2025-08-15 21:42:52 -05:00
github-actions[bot]
424cea6d8f release: promote to stable 5.0.0
- Promote beta features to stable release
- Update version from 4.38.0 to 5.0.0
- Automated promotion via GitHub Actions
2025-08-16 02:16:25 +00:00
github-actions[bot]
3092c9c9c2 Merge remote-tracking branch 'origin/main' into stable 2025-08-16 02:16:17 +00:00
github-actions[bot]
3c7f922564 release: promote to stable 4.38.0
- Promote beta features to stable release
- Update version from 4.37.0 to 4.38.0
- Automated promotion via GitHub Actions
2025-08-16 01:26:10 +00:00
github-actions[bot]
12aaaa537b Merge remote-tracking branch 'origin/main' into stable 2025-08-16 01:26:00 +00:00
Brian Madison
faff4e06a1 fix: update package-lock.json for semver dependency 2025-08-15 20:06:34 -05:00
Brian Madison
5e5c7ed98f release: create stable 4.37.0 release
Promote beta features to stable release with dual publishing support
2025-08-15 20:04:58 -05:00
128 changed files with 11449 additions and 10584 deletions

View File

@@ -1,9 +1,9 @@
--- ---
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
title: "" title: ''
labels: "" labels: ''
assignees: "" assignees: ''
--- ---
**Describe the bug** **Describe the bug**

View File

@@ -1,9 +1,9 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea for this project about: Suggest an idea for this project
title: "" title: ''
labels: "" labels: ''
assignees: "" assignees: ''
--- ---
**Did you discuss the idea first in Discord Server (#general-dev)** **Did you discuss the idea first in Discord Server (#general-dev)**

View File

@@ -1,6 +1,15 @@
name: Discord Notification 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: jobs:
notify: notify:
@@ -13,4 +22,4 @@ jobs:
webhook: ${{ secrets.DISCORD_WEBHOOK }} webhook: ${{ secrets.DISCORD_WEBHOOK }}
status: ${{ job.status }} status: ${{ job.status }}
title: "Triggered by ${{ github.event_name }}" title: "Triggered by ${{ github.event_name }}"
color: 0x5865F2 color: 0x5865F2

42
.github/workflows/format-check.yaml vendored Normal file
View 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

View File

@@ -1,12 +1,12 @@
name: Promote to Stable name: Promote to Stable
on: "on":
workflow_dispatch: workflow_dispatch:
inputs: inputs:
version_bump: version_bump:
description: 'Version bump type' description: "Version bump type"
required: true required: true
default: 'minor' default: "minor"
type: choice type: choice
options: options:
- patch - patch
@@ -19,7 +19,7 @@ jobs:
permissions: permissions:
contents: write contents: write
pull-requests: write pull-requests: write
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -30,8 +30,8 @@ jobs:
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: '20' node-version: "20"
registry-url: 'https://registry.npmjs.org' registry-url: "https://registry.npmjs.org"
- name: Configure Git - name: Configure Git
run: | run: |
@@ -57,17 +57,17 @@ jobs:
# Get current version from package.json # Get current version from package.json
CURRENT_VERSION=$(node -p "require('./package.json').version") CURRENT_VERSION=$(node -p "require('./package.json').version")
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
# Remove beta suffix if present # Remove beta suffix if present
BASE_VERSION=$(echo $CURRENT_VERSION | sed 's/-beta\.[0-9]\+//') BASE_VERSION=$(echo $CURRENT_VERSION | sed 's/-beta\.[0-9]\+//')
echo "base_version=$BASE_VERSION" >> $GITHUB_OUTPUT echo "base_version=$BASE_VERSION" >> $GITHUB_OUTPUT
# Calculate new version based on bump type # Calculate new version based on bump type
IFS='.' read -ra VERSION_PARTS <<< "$BASE_VERSION" IFS='.' read -ra VERSION_PARTS <<< "$BASE_VERSION"
MAJOR=${VERSION_PARTS[0]} MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]} MINOR=${VERSION_PARTS[1]}
PATCH=${VERSION_PARTS[2]} PATCH=${VERSION_PARTS[2]}
case "${{ github.event.inputs.version_bump }}" in case "${{ github.event.inputs.version_bump }}" in
"major") "major")
NEW_VERSION="$((MAJOR + 1)).0.0" NEW_VERSION="$((MAJOR + 1)).0.0"
@@ -82,7 +82,7 @@ jobs:
NEW_VERSION="$BASE_VERSION" NEW_VERSION="$BASE_VERSION"
;; ;;
esac esac
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "Promoting from $CURRENT_VERSION to $NEW_VERSION" echo "Promoting from $CURRENT_VERSION to $NEW_VERSION"
@@ -90,7 +90,7 @@ jobs:
run: | run: |
# Update main package.json # Update main package.json
npm version ${{ steps.version.outputs.new_version }} --no-git-tag-version npm version ${{ steps.version.outputs.new_version }} --no-git-tag-version
# Update installer package.json # Update installer package.json
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
@@ -119,4 +119,4 @@ jobs:
echo "🎉 Successfully promoted to stable!" echo "🎉 Successfully promoted to stable!"
echo "📦 Version: ${{ steps.version.outputs.new_version }}" echo "📦 Version: ${{ steps.version.outputs.new_version }}"
echo "🚀 The stable release will be automatically published to NPM via semantic-release" 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 }}" echo "✅ Users running 'npx bmad-method install' will now get version ${{ steps.version.outputs.new_version }}"

View File

@@ -1,5 +1,5 @@
name: Release name: Release
'on': "on":
push: push:
branches: branches:
- main - main
@@ -23,7 +23,7 @@ permissions:
jobs: jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: '!contains(github.event.head_commit.message, ''[skip ci]'')' if: ${{ github.event_name != 'push' || !contains(github.event.head_commit.message, '[skip ci]') }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -33,9 +33,9 @@ jobs:
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: '20' node-version: "20"
cache: npm cache: "npm"
registry-url: https://registry.npmjs.org registry-url: "https://registry.npmjs.org"
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci
- name: Run tests and validation - name: Run tests and validation
@@ -58,3 +58,17 @@ jobs:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm run release run: npm run release
- name: Clean changelog formatting
if: github.event_name == 'push'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Remove any Claude Code attribution from changelog
sed -i '/🤖 Generated with \[Claude Code\]/,+2d' CHANGELOG.md || true
# Format and commit if changes exist
npm run format
if ! git diff --quiet CHANGELOG.md; then
git add CHANGELOG.md
git commit -m "chore: clean changelog formatting [skip ci]"
git push
fi

1
.gitignore vendored
View File

@@ -25,7 +25,6 @@ Thumbs.db
# Development tools and configs # Development tools and configs
.prettierignore .prettierignore
.prettierrc .prettierrc
.husky/
# IDE and editor configs # IDE and editor configs
.windsurf/ .windsurf/

3
.husky/pre-commit Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env sh
npx --no-install lint-staged

View File

@@ -13,7 +13,13 @@
"plugins": [ "plugins": [
"@semantic-release/commit-analyzer", "@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator", "@semantic-release/release-notes-generator",
"@semantic-release/changelog", [
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md",
"changelogTitle": ""
}
],
"@semantic-release/npm", "@semantic-release/npm",
"./tools/semantic-release-sync-installer.js", "./tools/semantic-release-sync-installer.js",
"@semantic-release/github" "@semantic-release/github"

27
.vscode/settings.json vendored
View File

@@ -40,5 +40,30 @@
"tileset", "tileset",
"Trae", "Trae",
"VNET" "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]
} }

View File

@@ -574,10 +574,6 @@
- Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases. - 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) # [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes ### Bug Fixes
@@ -686,3 +682,5 @@ Co-Authored-By: Claude <noreply@anthropic.com>
### Features ### Features
- add versioning and release automation ([0ea5e50](https://github.com/bmadcode/BMAD-METHOD/commit/0ea5e50aa7ace5946d0100c180dd4c0da3e2fd8c)) - add versioning and release automation ([0ea5e50](https://github.com/bmadcode/BMAD-METHOD/commit/0ea5e50aa7ace5946d0100c180dd4c0da3e2fd8c))
# Promote to stable release 5.0.0

196
CLAUDE.md
View File

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

View File

@@ -4,7 +4,7 @@ bundle:
description: Includes every core system agent. description: Includes every core system agent.
agents: agents:
- bmad-orchestrator - bmad-orchestrator
- '*' - "*"
workflows: workflows:
- brownfield-fullstack.yaml - brownfield-fullstack.yaml
- brownfield-service.yaml - brownfield-service.yaml

View File

@@ -131,7 +131,7 @@ workflow-guidance:
- Understand each workflow's purpose, options, and decision points - Understand each workflow's purpose, options, and decision points
- Ask clarifying questions based on the workflow's structure - Ask clarifying questions based on the workflow's structure
- Guide users through workflow selection when multiple options exist - 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 - 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) - 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 - Only recommend workflows that actually exist in the current bundle

View File

@@ -35,7 +35,7 @@ agent:
id: dev id: dev
title: Full Stack Developer title: Full Stack Developer
icon: 💻 icon: 💻
whenToUse: "Use for code implementation, debugging, refactoring, and development best practices" whenToUse: 'Use for code implementation, debugging, refactoring, and development best practices'
customization: customization:
persona: 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. - 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 - exit: Say goodbye as the Developer, and then abandon inhabiting this persona
- develop-story: - 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: - story-file-updates-ONLY:
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS. - 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: 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 - 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" - 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" - 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" - 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: dependencies:

View File

@@ -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`) - **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
- **Cursor**: `@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`) - **Trae**: `@agent-name` (e.g., `@bmad-master`)
- **Roo Code**: Select mode from mode selector (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. - **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.

View File

@@ -25,10 +25,10 @@ Comprehensive guide for determining appropriate test levels (unit, integration,
```yaml ```yaml
unit_test: unit_test:
component: "PriceCalculator" component: 'PriceCalculator'
scenario: "Calculate discount with multiple rules" scenario: 'Calculate discount with multiple rules'
justification: "Complex business logic with multiple branches" justification: 'Complex business logic with multiple branches'
mock_requirements: "None - pure function" mock_requirements: 'None - pure function'
``` ```
### Integration Tests ### Integration Tests
@@ -52,10 +52,10 @@ unit_test:
```yaml ```yaml
integration_test: integration_test:
components: ["UserService", "AuthRepository"] components: ['UserService', 'AuthRepository']
scenario: "Create user with role assignment" scenario: 'Create user with role assignment'
justification: "Critical data flow between service and persistence" justification: 'Critical data flow between service and persistence'
test_environment: "In-memory database" test_environment: 'In-memory database'
``` ```
### End-to-End Tests ### End-to-End Tests
@@ -79,10 +79,10 @@ integration_test:
```yaml ```yaml
e2e_test: e2e_test:
journey: "Complete checkout process" journey: 'Complete checkout process'
scenario: "User purchases with saved payment method" scenario: 'User purchases with saved payment method'
justification: "Revenue-critical path requiring full validation" justification: 'Revenue-critical path requiring full validation'
environment: "Staging with test payment gateway" environment: 'Staging with test payment gateway'
``` ```
## Test Level Selection Rules ## Test Level Selection Rules

View File

@@ -1,6 +1,6 @@
--- ---
docOutputLocation: docs/brainstorming-session-results.md docOutputLocation: docs/brainstorming-session-results.md
template: "{root}/templates/brainstorming-output-tmpl.yaml" template: '{root}/templates/brainstorming-output-tmpl.yaml'
--- ---
# Facilitate Brainstorming Session Task # Facilitate Brainstorming Session Task

View File

@@ -6,18 +6,19 @@ Quick NFR validation focused on the core four: security, performance, reliabilit
```yaml ```yaml
required: required:
- story_id: "{epic}.{story}" # e.g., "1.3" - story_id: '{epic}.{story}' # e.g., "1.3"
- story_path: "docs/stories/{epic}.{story}.*.md" - story_path: 'docs/stories/{epic}.{story}.*.md'
optional: optional:
- architecture_refs: "docs/architecture/*.md" - architecture_refs: 'docs/architecture/*.md'
- technical_preferences: "docs/technical-preferences.md" - technical_preferences: 'docs/technical-preferences.md'
- acceptance_criteria: From story file - acceptance_criteria: From story file
``` ```
## Purpose ## Purpose
Assess non-functional requirements for a story and generate: Assess non-functional requirements for a story and generate:
1. YAML block for the gate file's `nfr_validation` section 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` 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 ### 0. Fail-safe for Missing Inputs
If story_path or story file can't be found: If story_path or story file can't be found:
- Still create assessment file with note: "Source story not found" - Still create assessment file with note: "Source story not found"
- Set all selected NFRs to CONCERNS with notes: "Target unknown / evidence missing" - Set all selected NFRs to CONCERNS with notes: "Target unknown / evidence missing"
- Continue with assessment to provide value - Continue with assessment to provide value
@@ -38,7 +40,7 @@ If story_path or story file can't be found:
```text ```text
Which NFRs should I assess? (Enter numbers or press Enter for default) Which NFRs should I assess? (Enter numbers or press Enter for default)
[1] Security (default) [1] Security (default)
[2] Performance (default) [2] Performance (default)
[3] Reliability (default) [3] Reliability (default)
[4] Maintainability (default) [4] Maintainability (default)
[5] Usability [5] Usability
@@ -52,6 +54,7 @@ Which NFRs should I assess? (Enter numbers or press Enter for default)
### 2. Check for Thresholds ### 2. Check for Thresholds
Look for NFR requirements in: Look for NFR requirements in:
- Story acceptance criteria - Story acceptance criteria
- `docs/architecture/*.md` files - `docs/architecture/*.md` files
- `docs/technical-preferences.md` - `docs/technical-preferences.md`
@@ -72,6 +75,7 @@ No security requirements found. Required auth method?
### 3. Quick Assessment ### 3. Quick Assessment
For each selected NFR, check: For each selected NFR, check:
- Is there evidence it's implemented? - Is there evidence it's implemented?
- Can we validate it? - Can we validate it?
- Are there obvious gaps? - Are there obvious gaps?
@@ -86,24 +90,24 @@ Generate ONLY for NFRs actually assessed (no placeholders):
# Gate YAML (copy/paste): # Gate YAML (copy/paste):
nfr_validation: nfr_validation:
_assessed: [security, performance, reliability, maintainability] _assessed: [security, performance, reliability, maintainability]
security: security:
status: CONCERNS status: CONCERNS
notes: "No rate limiting on auth endpoints" notes: 'No rate limiting on auth endpoints'
performance: performance:
status: PASS status: PASS
notes: "Response times < 200ms verified" notes: 'Response times < 200ms verified'
reliability: reliability:
status: PASS status: PASS
notes: "Error handling and retries implemented" notes: 'Error handling and retries implemented'
maintainability: maintainability:
status: CONCERNS status: CONCERNS
notes: "Test coverage at 65%, target is 80%" notes: 'Test coverage at 65%, target is 80%'
``` ```
## Deterministic Status Rules ## Deterministic Status Rules
- **FAIL**: Any selected NFR has critical gap or target clearly not met - **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 - **PASS**: All selected NFRs meet targets with evidence
## Quality Score Calculation ## Quality Score Calculation
@@ -123,18 +127,21 @@ If `technical-preferences.md` defines custom weights, use those instead.
```markdown ```markdown
# NFR Assessment: {epic}.{story} # NFR Assessment: {epic}.{story}
Date: {date} Date: {date}
Reviewer: Quinn Reviewer: Quinn
<!-- Note: Source story not found (if applicable) --> <!-- Note: Source story not found (if applicable) -->
## Summary ## Summary
- Security: CONCERNS - Missing rate limiting - Security: CONCERNS - Missing rate limiting
- Performance: PASS - Meets <200ms requirement - Performance: PASS - Meets <200ms requirement
- Reliability: PASS - Proper error handling - Reliability: PASS - Proper error handling
- Maintainability: CONCERNS - Test coverage below target - Maintainability: CONCERNS - Test coverage below target
## Critical Issues ## Critical Issues
1. **No rate limiting** (Security) 1. **No rate limiting** (Security)
- Risk: Brute force attacks possible - Risk: Brute force attacks possible
- Fix: Add rate limiting middleware to auth endpoints - Fix: Add rate limiting middleware to auth endpoints
@@ -144,6 +151,7 @@ Reviewer: Quinn
- Fix: Add tests for uncovered branches - Fix: Add tests for uncovered branches
## Quick Wins ## Quick Wins
- Add rate limiting: ~2 hours - Add rate limiting: ~2 hours
- Increase test coverage: ~4 hours - Increase test coverage: ~4 hours
- Add performance monitoring: ~1 hour - Add performance monitoring: ~1 hour
@@ -152,6 +160,7 @@ Reviewer: Quinn
## Output 3: Story Update Line ## Output 3: Story Update Line
**End with this line for the review task to quote:** **End with this line for the review task to quote:**
``` ```
NFR assessment: docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md 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 ## Output 4: Gate Integration Line
**Always print at the end:** **Always print at the end:**
``` ```
Gate NFR block ready → paste into docs/qa/gates/{epic}.{story}-{slug}.yml under nfr_validation 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 ## Assessment Criteria
### Security ### Security
**PASS if:** **PASS if:**
- Authentication implemented - Authentication implemented
- Authorization enforced - Authorization enforced
- Input validation present - Input validation present
- No hardcoded secrets - No hardcoded secrets
**CONCERNS if:** **CONCERNS if:**
- Missing rate limiting - Missing rate limiting
- Weak encryption - Weak encryption
- Incomplete authorization - Incomplete authorization
**FAIL if:** **FAIL if:**
- No authentication - No authentication
- Hardcoded credentials - Hardcoded credentials
- SQL injection vulnerabilities - SQL injection vulnerabilities
### Performance ### Performance
**PASS if:** **PASS if:**
- Meets response time targets - Meets response time targets
- No obvious bottlenecks - No obvious bottlenecks
- Reasonable resource usage - Reasonable resource usage
**CONCERNS if:** **CONCERNS if:**
- Close to limits - Close to limits
- Missing indexes - Missing indexes
- No caching strategy - No caching strategy
**FAIL if:** **FAIL if:**
- Exceeds response time limits - Exceeds response time limits
- Memory leaks - Memory leaks
- Unoptimized queries - Unoptimized queries
### Reliability ### Reliability
**PASS if:** **PASS if:**
- Error handling present - Error handling present
- Graceful degradation - Graceful degradation
- Retry logic where needed - Retry logic where needed
**CONCERNS if:** **CONCERNS if:**
- Some error cases unhandled - Some error cases unhandled
- No circuit breakers - No circuit breakers
- Missing health checks - Missing health checks
**FAIL if:** **FAIL if:**
- No error handling - No error handling
- Crashes on errors - Crashes on errors
- No recovery mechanisms - No recovery mechanisms
### Maintainability ### Maintainability
**PASS if:** **PASS if:**
- Test coverage meets target - Test coverage meets target
- Code well-structured - Code well-structured
- Documentation present - Documentation present
**CONCERNS if:** **CONCERNS if:**
- Test coverage below target - Test coverage below target
- Some code duplication - Some code duplication
- Missing documentation - Missing documentation
**FAIL if:** **FAIL if:**
- No tests - No tests
- Highly coupled code - Highly coupled code
- No documentation - No documentation
@@ -283,7 +309,7 @@ maintainability:
1. **Functional Suitability**: Completeness, correctness, appropriateness 1. **Functional Suitability**: Completeness, correctness, appropriateness
2. **Performance Efficiency**: Time behavior, resource use, capacity 2. **Performance Efficiency**: Time behavior, resource use, capacity
3. **Compatibility**: Co-existence, interoperability 3. **Compatibility**: Co-existence, interoperability
4. **Usability**: Learnability, operability, accessibility 4. **Usability**: Learnability, operability, accessibility
5. **Reliability**: Maturity, availability, fault tolerance 5. **Reliability**: Maturity, availability, fault tolerance
6. **Security**: Confidentiality, integrity, authenticity 6. **Security**: Confidentiality, integrity, authenticity
@@ -291,6 +317,7 @@ maintainability:
8. **Portability**: Adaptability, installability 8. **Portability**: Adaptability, installability
Use these when assessing beyond the core four. Use these when assessing beyond the core four.
</details> </details>
<details> <details>
@@ -304,12 +331,13 @@ performance_deep_dive:
p99: 350ms p99: 350ms
database: database:
slow_queries: 2 slow_queries: 2
missing_indexes: ["users.email", "orders.user_id"] missing_indexes: ['users.email', 'orders.user_id']
caching: caching:
hit_rate: 0% hit_rate: 0%
recommendation: "Add Redis for session data" recommendation: 'Add Redis for session data'
load_test: load_test:
max_rps: 150 max_rps: 150
breaking_point: 200 rps breaking_point: 200 rps
``` ```
</details>
</details>

View File

@@ -27,11 +27,11 @@ Slug rules:
```yaml ```yaml
schema: 1 schema: 1
story: "{epic}.{story}" story: '{epic}.{story}'
gate: PASS|CONCERNS|FAIL|WAIVED gate: PASS|CONCERNS|FAIL|WAIVED
status_reason: "1-2 sentence explanation of gate decision" status_reason: '1-2 sentence explanation of gate decision'
reviewer: "Quinn" reviewer: 'Quinn'
updated: "{ISO-8601 timestamp}" updated: '{ISO-8601 timestamp}'
top_issues: [] # Empty array if no issues top_issues: [] # Empty array if no issues
waiver: { active: false } # Only set active: true if WAIVED waiver: { active: false } # Only set active: true if WAIVED
``` ```
@@ -40,20 +40,20 @@ waiver: { active: false } # Only set active: true if WAIVED
```yaml ```yaml
schema: 1 schema: 1
story: "1.3" story: '1.3'
gate: CONCERNS gate: CONCERNS
status_reason: "Missing rate limiting on auth endpoints poses security risk." status_reason: 'Missing rate limiting on auth endpoints poses security risk.'
reviewer: "Quinn" reviewer: 'Quinn'
updated: "2025-01-12T10:15:00Z" updated: '2025-01-12T10:15:00Z'
top_issues: top_issues:
- id: "SEC-001" - id: 'SEC-001'
severity: high # ONLY: low|medium|high severity: high # ONLY: low|medium|high
finding: "No rate limiting on login endpoint" finding: 'No rate limiting on login endpoint'
suggested_action: "Add rate limiting middleware before production" suggested_action: 'Add rate limiting middleware before production'
- id: "TEST-001" - id: 'TEST-001'
severity: medium severity: medium
finding: "No integration tests for auth flow" finding: 'No integration tests for auth flow'
suggested_action: "Add integration test coverage" suggested_action: 'Add integration test coverage'
waiver: { active: false } waiver: { active: false }
``` ```
@@ -61,20 +61,20 @@ waiver: { active: false }
```yaml ```yaml
schema: 1 schema: 1
story: "1.3" story: '1.3'
gate: WAIVED gate: WAIVED
status_reason: "Known issues accepted for MVP release." status_reason: 'Known issues accepted for MVP release.'
reviewer: "Quinn" reviewer: 'Quinn'
updated: "2025-01-12T10:15:00Z" updated: '2025-01-12T10:15:00Z'
top_issues: top_issues:
- id: "PERF-001" - id: 'PERF-001'
severity: low severity: low
finding: "Dashboard loads slowly with 1000+ items" finding: 'Dashboard loads slowly with 1000+ items'
suggested_action: "Implement pagination in next sprint" suggested_action: 'Implement pagination in next sprint'
waiver: waiver:
active: true active: true
reason: "MVP release - performance optimization deferred" reason: 'MVP release - performance optimization deferred'
approved_by: "Product Owner" approved_by: 'Product Owner'
``` ```
## Gate Decision Criteria ## Gate Decision Criteria

View File

@@ -6,10 +6,10 @@ Perform a comprehensive test architecture review with quality gate decision. Thi
```yaml ```yaml
required: required:
- story_id: "{epic}.{story}" # e.g., "1.3" - story_id: '{epic}.{story}' # e.g., "1.3"
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml - story_path: '{devStoryLocation}/{epic}.{story}.*.md' # Path from core-config.yaml
- story_title: "{title}" # If missing, derive from story file H1 - story_title: '{title}' # If missing, derive from story file H1
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated) - story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
``` ```
## Prerequisites ## Prerequisites
@@ -191,19 +191,19 @@ Gate file structure:
```yaml ```yaml
schema: 1 schema: 1
story: "{epic}.{story}" story: '{epic}.{story}'
story_title: "{story title}" story_title: '{story title}'
gate: PASS|CONCERNS|FAIL|WAIVED gate: PASS|CONCERNS|FAIL|WAIVED
status_reason: "1-2 sentence explanation of gate decision" status_reason: '1-2 sentence explanation of gate decision'
reviewer: "Quinn (Test Architect)" reviewer: 'Quinn (Test Architect)'
updated: "{ISO-8601 timestamp}" updated: '{ISO-8601 timestamp}'
top_issues: [] # Empty if no issues top_issues: [] # Empty if no issues
waiver: { active: false } # Set active: true only if WAIVED waiver: { active: false } # Set active: true only if WAIVED
# Extended fields (optional but recommended): # Extended fields (optional but recommended):
quality_score: 0-100 # 100 - (20*FAILs) - (10*CONCERNS) or use technical-preferences.md weights 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: evidence:
tests_reviewed: { count } tests_reviewed: { count }
@@ -215,24 +215,24 @@ evidence:
nfr_validation: nfr_validation:
security: security:
status: PASS|CONCERNS|FAIL status: PASS|CONCERNS|FAIL
notes: "Specific findings" notes: 'Specific findings'
performance: performance:
status: PASS|CONCERNS|FAIL status: PASS|CONCERNS|FAIL
notes: "Specific findings" notes: 'Specific findings'
reliability: reliability:
status: PASS|CONCERNS|FAIL status: PASS|CONCERNS|FAIL
notes: "Specific findings" notes: 'Specific findings'
maintainability: maintainability:
status: PASS|CONCERNS|FAIL status: PASS|CONCERNS|FAIL
notes: "Specific findings" notes: 'Specific findings'
recommendations: recommendations:
immediate: # Must fix before production immediate: # Must fix before production
- action: "Add rate limiting" - action: 'Add rate limiting'
refs: ["api/auth/login.ts"] refs: ['api/auth/login.ts']
future: # Can be addressed later future: # Can be addressed later
- action: "Consider caching" - action: 'Consider caching'
refs: ["services/data.ts"] refs: ['services/data.ts']
``` ```
### Gate Decision Criteria ### Gate Decision Criteria

View File

@@ -6,10 +6,10 @@ Generate a comprehensive risk assessment matrix for a story implementation using
```yaml ```yaml
required: required:
- story_id: "{epic}.{story}" # e.g., "1.3" - story_id: '{epic}.{story}' # e.g., "1.3"
- story_path: "docs/stories/{epic}.{story}.*.md" - story_path: 'docs/stories/{epic}.{story}.*.md'
- story_title: "{title}" # If missing, derive from story file H1 - story_title: '{title}' # If missing, derive from story file H1
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated) - story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
``` ```
## Purpose ## Purpose
@@ -79,14 +79,14 @@ For each category, identify specific risks:
```yaml ```yaml
risk: 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 category: security
title: "Insufficient input validation on user forms" title: 'Insufficient input validation on user forms'
description: "Form inputs not properly sanitized could lead to XSS attacks" description: 'Form inputs not properly sanitized could lead to XSS attacks'
affected_components: affected_components:
- "UserRegistrationForm" - 'UserRegistrationForm'
- "ProfileUpdateForm" - 'ProfileUpdateForm'
detection_method: "Code review revealed missing validation" detection_method: 'Code review revealed missing validation'
``` ```
### 2. Risk Assessment ### 2. Risk Assessment
@@ -133,20 +133,20 @@ For each identified risk, provide mitigation:
```yaml ```yaml
mitigation: mitigation:
risk_id: "SEC-001" risk_id: 'SEC-001'
strategy: "preventive" # preventive|detective|corrective strategy: 'preventive' # preventive|detective|corrective
actions: actions:
- "Implement input validation library (e.g., validator.js)" - 'Implement input validation library (e.g., validator.js)'
- "Add CSP headers to prevent XSS execution" - 'Add CSP headers to prevent XSS execution'
- "Sanitize all user inputs before storage" - 'Sanitize all user inputs before storage'
- "Escape all outputs in templates" - 'Escape all outputs in templates'
testing_requirements: testing_requirements:
- "Security testing with OWASP ZAP" - 'Security testing with OWASP ZAP'
- "Manual penetration testing of forms" - 'Manual penetration testing of forms'
- "Unit tests for validation functions" - 'Unit tests for validation functions'
residual_risk: "Low - Some zero-day vulnerabilities may remain" residual_risk: 'Low - Some zero-day vulnerabilities may remain'
owner: "dev" owner: 'dev'
timeline: "Before deployment" timeline: 'Before deployment'
``` ```
## Outputs ## Outputs
@@ -172,12 +172,12 @@ risk_summary:
highest: highest:
id: SEC-001 id: SEC-001
score: 9 score: 9
title: "XSS on profile form" title: 'XSS on profile form'
recommendations: recommendations:
must_fix: must_fix:
- "Add input sanitization & CSP" - 'Add input sanitization & CSP'
monitor: monitor:
- "Add security alerts for auth endpoints" - 'Add security alerts for auth endpoints'
``` ```
### Output 2: Markdown Report ### Output 2: Markdown Report

View File

@@ -6,10 +6,10 @@ Create comprehensive test scenarios with appropriate test level recommendations
```yaml ```yaml
required: required:
- story_id: "{epic}.{story}" # e.g., "1.3" - story_id: '{epic}.{story}' # e.g., "1.3"
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml - story_path: '{devStoryLocation}/{epic}.{story}.*.md' # Path from core-config.yaml
- story_title: "{title}" # If missing, derive from story file H1 - story_title: '{title}' # If missing, derive from story file H1
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated) - story_slug: '{slug}' # If missing, derive from title (lowercase, hyphenated)
``` ```
## Purpose ## Purpose
@@ -62,13 +62,13 @@ For each identified test need, create:
```yaml ```yaml
test_scenario: test_scenario:
id: "{epic}.{story}-{LEVEL}-{SEQ}" id: '{epic}.{story}-{LEVEL}-{SEQ}'
requirement: "AC reference" requirement: 'AC reference'
priority: P0|P1|P2|P3 priority: P0|P1|P2|P3
level: unit|integration|e2e level: unit|integration|e2e
description: "What is being tested" description: 'What is being tested'
justification: "Why this level was chosen" justification: 'Why this level was chosen'
mitigates_risks: ["RISK-001"] # If risk profile exists mitigates_risks: ['RISK-001'] # If risk profile exists
``` ```
### 5. Validate Coverage ### 5. Validate Coverage

View File

@@ -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): For each requirement, document which tests validate it. Use Given-When-Then to describe what the test validates (not how it's written):
```yaml ```yaml
requirement: "AC1: User can login with valid credentials" requirement: 'AC1: User can login with valid credentials'
test_mappings: test_mappings:
- test_file: "auth/login.test.ts" - test_file: 'auth/login.test.ts'
test_case: "should successfully login with valid email and password" test_case: 'should successfully login with valid email and password'
# Given-When-Then describes WHAT the test validates, not HOW it's coded # Given-When-Then describes WHAT the test validates, not HOW it's coded
given: "A registered user with valid credentials" given: 'A registered user with valid credentials'
when: "They submit the login form" when: 'They submit the login form'
then: "They are redirected to dashboard and session is created" then: 'They are redirected to dashboard and session is created'
coverage: full coverage: full
- test_file: "e2e/auth-flow.test.ts" - test_file: 'e2e/auth-flow.test.ts'
test_case: "complete login flow" test_case: 'complete login flow'
given: "User on login page" given: 'User on login page'
when: "Entering valid credentials and submitting" when: 'Entering valid credentials and submitting'
then: "Dashboard loads with user data" then: 'Dashboard loads with user data'
coverage: integration coverage: integration
``` ```
@@ -67,19 +67,19 @@ Document any gaps found:
```yaml ```yaml
coverage_gaps: coverage_gaps:
- requirement: "AC3: Password reset email sent within 60 seconds" - requirement: 'AC3: Password reset email sent within 60 seconds'
gap: "No test for email delivery timing" gap: 'No test for email delivery timing'
severity: medium severity: medium
suggested_test: suggested_test:
type: integration type: integration
description: "Test email service SLA compliance" description: 'Test email service SLA compliance'
- requirement: "AC5: Support 1000 concurrent users" - requirement: 'AC5: Support 1000 concurrent users'
gap: "No load testing implemented" gap: 'No load testing implemented'
severity: high severity: high
suggested_test: suggested_test:
type: performance type: performance
description: "Load test with 1000 concurrent connections" description: 'Load test with 1000 concurrent connections'
``` ```
## Outputs ## Outputs
@@ -95,11 +95,11 @@ trace:
full: Y full: Y
partial: Z partial: Z
none: W 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: uncovered:
- ac: "AC3" - ac: 'AC3'
reason: "No test found for password reset timing" reason: 'No test found for password reset timing'
notes: "See docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md" notes: 'See docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md'
``` ```
### Output 2: Traceability Report ### Output 2: Traceability Report

View File

@@ -20,20 +20,20 @@ sections:
- id: intro-content - id: intro-content
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. 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:** **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. 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 - id: starter-template
title: Starter Template or Existing Project title: Starter Template or Existing Project
instruction: | instruction: |
Before proceeding further with architecture design, check if the project is based on a starter template or existing codebase: 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: 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.) - Starter templates (e.g., Create React App, Next.js, Vue CLI, Angular CLI, etc.)
- Existing projects or codebases being used as a foundation - Existing projects or codebases being used as a foundation
- Boilerplate projects or scaffolding tools - Boilerplate projects or scaffolding tools
- Previous projects to be cloned or adapted - Previous projects to be cloned or adapted
2. If a starter template or existing project is mentioned: 2. If a starter template or existing project is mentioned:
- Ask the user to provide access via one of these methods: - Ask the user to provide access via one of these methods:
- Link to the starter template documentation - Link to the starter template documentation
@@ -46,16 +46,16 @@ sections:
- Existing architectural patterns and conventions - Existing architectural patterns and conventions
- Any limitations or constraints imposed by the starter - Any limitations or constraints imposed by the starter
- Use this analysis to inform and align your architecture decisions - Use this analysis to inform and align your architecture decisions
3. If no starter template is mentioned but this is a greenfield project: 3. If no starter template is mentioned but this is a greenfield project:
- Suggest appropriate starter templates based on the tech stack preferences - Suggest appropriate starter templates based on the tech stack preferences
- Explain the benefits (faster setup, best practices, community support) - Explain the benefits (faster setup, best practices, community support)
- Let the user decide whether to use one - Let the user decide whether to use one
4. If the user confirms no starter template will be used: 4. If the user confirms no starter template will be used:
- Proceed with architecture design from scratch - Proceed with architecture design from scratch
- Note that manual setup will be required for all tooling and configuration - 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 Document the decision here before proceeding with the architecture design. If none, just say N/A
elicit: true elicit: true
- id: changelog - id: changelog
@@ -83,7 +83,7 @@ sections:
title: High Level Overview title: High Level Overview
instruction: | instruction: |
Based on the PRD's Technical Assumptions section, describe: Based on the PRD's Technical Assumptions section, describe:
1. The main architectural style (e.g., Monolith, Microservices, Serverless, Event-Driven) 1. The main architectural style (e.g., Monolith, Microservices, Serverless, Event-Driven)
2. Repository structure decision from PRD (Monorepo/Polyrepo) 2. Repository structure decision from PRD (Monorepo/Polyrepo)
3. Service architecture decision from PRD 3. Service architecture decision from PRD
@@ -100,17 +100,17 @@ sections:
- Data flow directions - Data flow directions
- External integrations - External integrations
- User entry points - User entry points
- id: architectural-patterns - id: architectural-patterns
title: Architectural and Design Patterns title: Architectural and Design Patterns
instruction: | instruction: |
List the key high-level patterns that will guide the architecture. For each pattern: List the key high-level patterns that will guide the architecture. For each pattern:
1. Present 2-3 viable options if multiple exist 1. Present 2-3 viable options if multiple exist
2. Provide your recommendation with clear rationale 2. Provide your recommendation with clear rationale
3. Get user confirmation before finalizing 3. Get user confirmation before finalizing
4. These patterns should align with the PRD's technical assumptions and project goals 4. These patterns should align with the PRD's technical assumptions and project goals
Common patterns to consider: Common patterns to consider:
- Architectural style patterns (Serverless, Event-Driven, Microservices, CQRS, Hexagonal) - Architectural style patterns (Serverless, Event-Driven, Microservices, CQRS, Hexagonal)
- Code organization patterns (Dependency Injection, Repository, Module, Factory) - Code organization patterns (Dependency Injection, Repository, Module, Factory)
@@ -126,23 +126,23 @@ sections:
title: Tech Stack title: Tech Stack
instruction: | instruction: |
This is the DEFINITIVE technology selection section. Work with the user to make specific choices: 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 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 2. For each category, present 2-3 viable options with pros/cons
3. Make a clear recommendation based on project needs 3. Make a clear recommendation based on project needs
4. Get explicit user approval for each selection 4. Get explicit user approval for each selection
5. Document exact versions (avoid "latest" - pin specific versions) 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 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: 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) - Starter templates (if any)
- Languages and runtimes with exact versions - Languages and runtimes with exact versions
- Frameworks and libraries / packages - Frameworks and libraries / packages
- Cloud provider and key services choices - 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 - 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 - 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. 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 elicit: true
sections: sections:
@@ -166,13 +166,13 @@ sections:
title: Data Models title: Data Models
instruction: | instruction: |
Define the core data models/entities: Define the core data models/entities:
1. Review PRD requirements and identify key business entities 1. Review PRD requirements and identify key business entities
2. For each model, explain its purpose and relationships 2. For each model, explain its purpose and relationships
3. Include key attributes and data types 3. Include key attributes and data types
4. Show relationships between models 4. Show relationships between models
5. Discuss design decisions with user 5. Discuss design decisions with user
Create a clear conceptual model before moving to database schema. Create a clear conceptual model before moving to database schema.
elicit: true elicit: true
repeatable: true repeatable: true
@@ -181,11 +181,11 @@ sections:
title: "{{model_name}}" title: "{{model_name}}"
template: | template: |
**Purpose:** {{model_purpose}} **Purpose:** {{model_purpose}}
**Key Attributes:** **Key Attributes:**
- {{attribute_1}}: {{type_1}} - {{description_1}} - {{attribute_1}}: {{type_1}} - {{description_1}}
- {{attribute_2}}: {{type_2}} - {{description_2}} - {{attribute_2}}: {{type_2}} - {{description_2}}
**Relationships:** **Relationships:**
- {{relationship_1}} - {{relationship_1}}
- {{relationship_2}} - {{relationship_2}}
@@ -194,7 +194,7 @@ sections:
title: Components title: Components
instruction: | instruction: |
Based on the architectural patterns, tech stack, and data models from above: Based on the architectural patterns, tech stack, and data models from above:
1. Identify major logical components/services and their responsibilities 1. Identify major logical components/services and their responsibilities
2. Consider the repository structure (monorepo/polyrepo) from PRD 2. Consider the repository structure (monorepo/polyrepo) from PRD
3. Define clear boundaries and interfaces between components 3. Define clear boundaries and interfaces between components
@@ -203,7 +203,7 @@ sections:
- Key interfaces/APIs exposed - Key interfaces/APIs exposed
- Dependencies on other components - Dependencies on other components
- Technology specifics based on tech stack choices - Technology specifics based on tech stack choices
5. Create component diagrams where helpful 5. Create component diagrams where helpful
elicit: true elicit: true
sections: sections:
@@ -212,13 +212,13 @@ sections:
title: "{{component_name}}" title: "{{component_name}}"
template: | template: |
**Responsibility:** {{component_description}} **Responsibility:** {{component_description}}
**Key Interfaces:** **Key Interfaces:**
- {{interface_1}} - {{interface_1}}
- {{interface_2}} - {{interface_2}}
**Dependencies:** {{dependencies}} **Dependencies:** {{dependencies}}
**Technology Stack:** {{component_tech_details}} **Technology Stack:** {{component_tech_details}}
- id: component-diagrams - id: component-diagrams
title: Component Diagrams title: Component Diagrams
@@ -235,13 +235,13 @@ sections:
condition: Project requires external API integrations condition: Project requires external API integrations
instruction: | instruction: |
For each external service integration: For each external service integration:
1. Identify APIs needed based on PRD requirements and component design 1. Identify APIs needed based on PRD requirements and component design
2. If documentation URLs are unknown, ask user for specifics 2. If documentation URLs are unknown, ask user for specifics
3. Document authentication methods and security considerations 3. Document authentication methods and security considerations
4. List specific endpoints that will be used 4. List specific endpoints that will be used
5. Note any rate limits or usage constraints 5. Note any rate limits or usage constraints
If no external APIs are needed, state this explicitly and skip to next section. If no external APIs are needed, state this explicitly and skip to next section.
elicit: true elicit: true
repeatable: true repeatable: true
@@ -254,10 +254,10 @@ sections:
- **Base URL(s):** {{api_base_url}} - **Base URL(s):** {{api_base_url}}
- **Authentication:** {{auth_method}} - **Authentication:** {{auth_method}}
- **Rate Limits:** {{rate_limits}} - **Rate Limits:** {{rate_limits}}
**Key Endpoints Used:** **Key Endpoints Used:**
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}} - `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
**Integration Notes:** {{integration_considerations}} **Integration Notes:** {{integration_considerations}}
- id: core-workflows - id: core-workflows
@@ -266,13 +266,13 @@ sections:
mermaid_type: sequence mermaid_type: sequence
instruction: | instruction: |
Illustrate key system workflows using sequence diagrams: Illustrate key system workflows using sequence diagrams:
1. Identify critical user journeys from PRD 1. Identify critical user journeys from PRD
2. Show component interactions including external APIs 2. Show component interactions including external APIs
3. Include error handling paths 3. Include error handling paths
4. Document async operations 4. Document async operations
5. Create both high-level and detailed diagrams as needed 5. Create both high-level and detailed diagrams as needed
Focus on workflows that clarify architecture decisions or complex interactions. Focus on workflows that clarify architecture decisions or complex interactions.
elicit: true elicit: true
@@ -283,13 +283,13 @@ sections:
language: yaml language: yaml
instruction: | instruction: |
If the project includes a REST API: If the project includes a REST API:
1. Create an OpenAPI 3.0 specification 1. Create an OpenAPI 3.0 specification
2. Include all endpoints from epics/stories 2. Include all endpoints from epics/stories
3. Define request/response schemas based on data models 3. Define request/response schemas based on data models
4. Document authentication requirements 4. Document authentication requirements
5. Include example requests/responses 5. Include example requests/responses
Use YAML format for better readability. If no REST API, skip this section. Use YAML format for better readability. If no REST API, skip this section.
elicit: true elicit: true
template: | template: |
@@ -306,13 +306,13 @@ sections:
title: Database Schema title: Database Schema
instruction: | instruction: |
Transform the conceptual data models into concrete database schemas: Transform the conceptual data models into concrete database schemas:
1. Use the database type(s) selected in Tech Stack 1. Use the database type(s) selected in Tech Stack
2. Create schema definitions using appropriate notation 2. Create schema definitions using appropriate notation
3. Include indexes, constraints, and relationships 3. Include indexes, constraints, and relationships
4. Consider performance and scalability 4. Consider performance and scalability
5. For NoSQL, show document structures 5. For NoSQL, show document structures
Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.) Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.)
elicit: true elicit: true
@@ -322,14 +322,14 @@ sections:
language: plaintext language: plaintext
instruction: | instruction: |
Create a project folder structure that reflects: Create a project folder structure that reflects:
1. The chosen repository structure (monorepo/polyrepo) 1. The chosen repository structure (monorepo/polyrepo)
2. The service architecture (monolith/microservices/serverless) 2. The service architecture (monolith/microservices/serverless)
3. The selected tech stack and languages 3. The selected tech stack and languages
4. Component organization from above 4. Component organization from above
5. Best practices for the chosen frameworks 5. Best practices for the chosen frameworks
6. Clear separation of concerns 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. Adapt the structure based on project needs. For monorepos, show service separation. For serverless, show function organization. Include language-specific conventions.
elicit: true elicit: true
examples: examples:
@@ -347,13 +347,13 @@ sections:
title: Infrastructure and Deployment title: Infrastructure and Deployment
instruction: | instruction: |
Define the deployment architecture and practices: Define the deployment architecture and practices:
1. Use IaC tool selected in Tech Stack 1. Use IaC tool selected in Tech Stack
2. Choose deployment strategy appropriate for the architecture 2. Choose deployment strategy appropriate for the architecture
3. Define environments and promotion flow 3. Define environments and promotion flow
4. Establish rollback procedures 4. Establish rollback procedures
5. Consider security, monitoring, and cost optimization 5. Consider security, monitoring, and cost optimization
Get user input on deployment preferences and CI/CD tool choices. Get user input on deployment preferences and CI/CD tool choices.
elicit: true elicit: true
sections: sections:
@@ -389,13 +389,13 @@ sections:
title: Error Handling Strategy title: Error Handling Strategy
instruction: | instruction: |
Define comprehensive error handling approach: Define comprehensive error handling approach:
1. Choose appropriate patterns for the language/framework from Tech Stack 1. Choose appropriate patterns for the language/framework from Tech Stack
2. Define logging standards and tools 2. Define logging standards and tools
3. Establish error categories and handling rules 3. Establish error categories and handling rules
4. Consider observability and debugging needs 4. Consider observability and debugging needs
5. Ensure security (no sensitive data in logs) 5. Ensure security (no sensitive data in logs)
This section guides both AI and human developers in consistent error handling. This section guides both AI and human developers in consistent error handling.
elicit: true elicit: true
sections: sections:
@@ -442,13 +442,13 @@ sections:
title: Coding Standards title: Coding Standards
instruction: | instruction: |
These standards are MANDATORY for AI agents. Work with user to define ONLY the critical rules needed to prevent bad code. Explain that: 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 1. This section directly controls AI developer behavior
2. Keep it minimal - assume AI knows general best practices 2. Keep it minimal - assume AI knows general best practices
3. Focus on project-specific conventions and gotchas 3. Focus on project-specific conventions and gotchas
4. Overly detailed standards bloat context and slow development 4. Overly detailed standards bloat context and slow development
5. Standards will be extracted to separate file for dev agent use 5. Standards will be extracted to separate file for dev agent use
For each standard, get explicit user confirmation it's necessary. For each standard, get explicit user confirmation it's necessary.
elicit: true elicit: true
sections: sections:
@@ -470,7 +470,7 @@ sections:
- "Never use console.log in production code - use logger" - "Never use console.log in production code - use logger"
- "All API responses must use ApiResponse wrapper type" - "All API responses must use ApiResponse wrapper type"
- "Database queries must use repository pattern, never direct ORM" - "Database queries must use repository pattern, never direct ORM"
Avoid obvious rules like "use SOLID principles" or "write clean code" Avoid obvious rules like "use SOLID principles" or "write clean code"
repeatable: true repeatable: true
template: "- **{{rule_name}}:** {{rule_description}}" template: "- **{{rule_name}}:** {{rule_description}}"
@@ -488,14 +488,14 @@ sections:
title: Test Strategy and Standards title: Test Strategy and Standards
instruction: | instruction: |
Work with user to define comprehensive test strategy: Work with user to define comprehensive test strategy:
1. Use test frameworks from Tech Stack 1. Use test frameworks from Tech Stack
2. Decide on TDD vs test-after approach 2. Decide on TDD vs test-after approach
3. Define test organization and naming 3. Define test organization and naming
4. Establish coverage goals 4. Establish coverage goals
5. Determine integration test infrastructure 5. Determine integration test infrastructure
6. Plan for test data and external dependencies 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. Note: Basic info goes in Coding Standards for dev agent. This detailed section is for QA agent and team reference.
elicit: true elicit: true
sections: sections:
@@ -516,7 +516,7 @@ sections:
- **Location:** {{unit_test_location}} - **Location:** {{unit_test_location}}
- **Mocking Library:** {{mocking_library}} - **Mocking Library:** {{mocking_library}}
- **Coverage Requirement:** {{unit_coverage}} - **Coverage Requirement:** {{unit_coverage}}
**AI Agent Requirements:** **AI Agent Requirements:**
- Generate tests for all public methods - Generate tests for all public methods
- Cover edge cases and error conditions - Cover edge cases and error conditions
@@ -558,7 +558,7 @@ sections:
title: Security title: Security
instruction: | instruction: |
Define MANDATORY security requirements for AI and human developers: Define MANDATORY security requirements for AI and human developers:
1. Focus on implementation-specific rules 1. Focus on implementation-specific rules
2. Reference security tools from Tech Stack 2. Reference security tools from Tech Stack
3. Define clear patterns for common scenarios 3. Define clear patterns for common scenarios
@@ -627,16 +627,16 @@ sections:
title: Next Steps title: Next Steps
instruction: | instruction: |
After completing the architecture: After completing the architecture:
1. If project has UI components: 1. If project has UI components:
- Use "Frontend Architecture Mode" - Use "Frontend Architecture Mode"
- Provide this document as input - Provide this document as input
2. For all projects: 2. For all projects:
- Review with Product Owner - Review with Product Owner
- Begin story implementation with Dev agent - Begin story implementation with Dev agent
- Set up infrastructure with DevOps agent - Set up infrastructure with DevOps agent
3. Include specific prompts for next agents if needed 3. Include specific prompts for next agents if needed
sections: sections:
- id: architect-prompt - id: architect-prompt

View File

@@ -23,11 +23,11 @@ sections:
- id: summary-details - id: summary-details
template: | template: |
**Topic:** {{session_topic}} **Topic:** {{session_topic}}
**Session Goals:** {{stated_goals}} **Session Goals:** {{stated_goals}}
**Techniques Used:** {{techniques_list}} **Techniques Used:** {{techniques_list}}
**Total Ideas Generated:** {{total_ideas}} **Total Ideas Generated:** {{total_ideas}}
- id: key-themes - id: key-themes
title: "Key Themes Identified:" title: "Key Themes Identified:"
@@ -152,5 +152,5 @@ sections:
- id: footer - id: footer
content: | content: |
--- ---
*Session facilitated using the BMAD-METHOD brainstorming framework* *Session facilitated using the BMAD-METHOD brainstorming framework*

View File

@@ -16,40 +16,40 @@ sections:
title: Introduction title: Introduction
instruction: | instruction: |
IMPORTANT - SCOPE AND ASSESSMENT REQUIRED: IMPORTANT - SCOPE AND ASSESSMENT REQUIRED:
This architecture document is for SIGNIFICANT enhancements to existing projects that require comprehensive architectural planning. Before proceeding: 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." 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**: 2. **REQUIRED INPUTS**:
- Completed brownfield-prd.md - Completed brownfield-prd.md
- Existing project technical documentation (from docs folder or user-provided) - Existing project technical documentation (from docs folder or user-provided)
- Access to existing project structure (IDE or uploaded files) - 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. 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?" 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. If any required inputs are missing, request them before proceeding.
elicit: true elicit: true
sections: sections:
- id: intro-content - id: intro-content
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. 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:** **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. 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 - id: existing-project-analysis
title: Existing Project Analysis title: Existing Project Analysis
instruction: | instruction: |
Analyze the existing project structure and architecture: Analyze the existing project structure and architecture:
1. Review existing documentation in docs folder 1. Review existing documentation in docs folder
2. Examine current technology stack and versions 2. Examine current technology stack and versions
3. Identify existing architectural patterns and conventions 3. Identify existing architectural patterns and conventions
4. Note current deployment and infrastructure setup 4. Note current deployment and infrastructure setup
5. Document any constraints or limitations 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." 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 elicit: true
sections: sections:
@@ -78,12 +78,12 @@ sections:
title: Enhancement Scope and Integration Strategy title: Enhancement Scope and Integration Strategy
instruction: | instruction: |
Define how the enhancement will integrate with the existing system: Define how the enhancement will integrate with the existing system:
1. Review the brownfield PRD enhancement scope 1. Review the brownfield PRD enhancement scope
2. Identify integration points with existing code 2. Identify integration points with existing code
3. Define boundaries between new and existing functionality 3. Define boundaries between new and existing functionality
4. Establish compatibility requirements 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?" 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 elicit: true
sections: sections:
@@ -112,7 +112,7 @@ sections:
title: Tech Stack Alignment title: Tech Stack Alignment
instruction: | instruction: |
Ensure new components align with existing technology choices: Ensure new components align with existing technology choices:
1. Use existing technology stack as the foundation 1. Use existing technology stack as the foundation
2. Only introduce new technologies if absolutely necessary 2. Only introduce new technologies if absolutely necessary
3. Justify any new additions with clear rationale 3. Justify any new additions with clear rationale
@@ -135,7 +135,7 @@ sections:
title: Data Models and Schema Changes title: Data Models and Schema Changes
instruction: | instruction: |
Define new data models and how they integrate with existing schema: Define new data models and how they integrate with existing schema:
1. Identify new entities required for the enhancement 1. Identify new entities required for the enhancement
2. Define relationships with existing data models 2. Define relationships with existing data models
3. Plan database schema changes (additions, modifications) 3. Plan database schema changes (additions, modifications)
@@ -151,11 +151,11 @@ sections:
template: | template: |
**Purpose:** {{model_purpose}} **Purpose:** {{model_purpose}}
**Integration:** {{integration_with_existing}} **Integration:** {{integration_with_existing}}
**Key Attributes:** **Key Attributes:**
- {{attribute_1}}: {{type_1}} - {{description_1}} - {{attribute_1}}: {{type_1}} - {{description_1}}
- {{attribute_2}}: {{type_2}} - {{description_2}} - {{attribute_2}}: {{type_2}} - {{description_2}}
**Relationships:** **Relationships:**
- **With Existing:** {{existing_relationships}} - **With Existing:** {{existing_relationships}}
- **With New:** {{new_relationships}} - **With New:** {{new_relationships}}
@@ -167,7 +167,7 @@ sections:
- **Modified Tables:** {{modified_tables_list}} - **Modified Tables:** {{modified_tables_list}}
- **New Indexes:** {{new_indexes_list}} - **New Indexes:** {{new_indexes_list}}
- **Migration Strategy:** {{migration_approach}} - **Migration Strategy:** {{migration_approach}}
**Backward Compatibility:** **Backward Compatibility:**
- {{compatibility_measure_1}} - {{compatibility_measure_1}}
- {{compatibility_measure_2}} - {{compatibility_measure_2}}
@@ -176,12 +176,12 @@ sections:
title: Component Architecture title: Component Architecture
instruction: | instruction: |
Define new components and their integration with existing architecture: Define new components and their integration with existing architecture:
1. Identify new components required for the enhancement 1. Identify new components required for the enhancement
2. Define interfaces with existing components 2. Define interfaces with existing components
3. Establish clear boundaries and responsibilities 3. Establish clear boundaries and responsibilities
4. Plan integration points and data flow 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?" 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 elicit: true
sections: sections:
@@ -194,15 +194,15 @@ sections:
template: | template: |
**Responsibility:** {{component_description}} **Responsibility:** {{component_description}}
**Integration Points:** {{integration_points}} **Integration Points:** {{integration_points}}
**Key Interfaces:** **Key Interfaces:**
- {{interface_1}} - {{interface_1}}
- {{interface_2}} - {{interface_2}}
**Dependencies:** **Dependencies:**
- **Existing Components:** {{existing_dependencies}} - **Existing Components:** {{existing_dependencies}}
- **New Components:** {{new_dependencies}} - **New Components:** {{new_dependencies}}
**Technology Stack:** {{component_tech_details}} **Technology Stack:** {{component_tech_details}}
- id: interaction-diagram - id: interaction-diagram
title: Component Interaction Diagram title: Component Interaction Diagram
@@ -215,7 +215,7 @@ sections:
condition: Enhancement requires API changes condition: Enhancement requires API changes
instruction: | instruction: |
Define new API endpoints and integration with existing APIs: Define new API endpoints and integration with existing APIs:
1. Plan new API endpoints required for the enhancement 1. Plan new API endpoints required for the enhancement
2. Ensure consistency with existing API patterns 2. Ensure consistency with existing API patterns
3. Define authentication and authorization integration 3. Define authentication and authorization integration
@@ -265,17 +265,17 @@ sections:
- **Base URL:** {{api_base_url}} - **Base URL:** {{api_base_url}}
- **Authentication:** {{auth_method}} - **Authentication:** {{auth_method}}
- **Integration Method:** {{integration_approach}} - **Integration Method:** {{integration_approach}}
**Key Endpoints Used:** **Key Endpoints Used:**
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}} - `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
**Error Handling:** {{error_handling_strategy}} **Error Handling:** {{error_handling_strategy}}
- id: source-tree-integration - id: source-tree-integration
title: Source Tree Integration title: Source Tree Integration
instruction: | instruction: |
Define how new code will integrate with existing project structure: Define how new code will integrate with existing project structure:
1. Follow existing project organization patterns 1. Follow existing project organization patterns
2. Identify where new files/folders will be placed 2. Identify where new files/folders will be placed
3. Ensure consistency with existing naming conventions 3. Ensure consistency with existing naming conventions
@@ -314,7 +314,7 @@ sections:
title: Infrastructure and Deployment Integration title: Infrastructure and Deployment Integration
instruction: | instruction: |
Define how the enhancement will be deployed alongside existing infrastructure: Define how the enhancement will be deployed alongside existing infrastructure:
1. Use existing deployment pipeline and infrastructure 1. Use existing deployment pipeline and infrastructure
2. Identify any infrastructure changes needed 2. Identify any infrastructure changes needed
3. Plan deployment strategy to minimize risk 3. Plan deployment strategy to minimize risk
@@ -344,7 +344,7 @@ sections:
title: Coding Standards and Conventions title: Coding Standards and Conventions
instruction: | instruction: |
Ensure new code follows existing project conventions: Ensure new code follows existing project conventions:
1. Document existing coding standards from project analysis 1. Document existing coding standards from project analysis
2. Identify any enhancement-specific requirements 2. Identify any enhancement-specific requirements
3. Ensure consistency with existing codebase patterns 3. Ensure consistency with existing codebase patterns
@@ -375,7 +375,7 @@ sections:
title: Testing Strategy title: Testing Strategy
instruction: | instruction: |
Define testing approach for the enhancement: Define testing approach for the enhancement:
1. Integrate with existing test suite 1. Integrate with existing test suite
2. Ensure existing functionality remains intact 2. Ensure existing functionality remains intact
3. Plan for testing new features 3. Plan for testing new features
@@ -415,7 +415,7 @@ sections:
title: Security Integration title: Security Integration
instruction: | instruction: |
Ensure security consistency with existing system: Ensure security consistency with existing system:
1. Follow existing security patterns and tools 1. Follow existing security patterns and tools
2. Ensure new features don't introduce vulnerabilities 2. Ensure new features don't introduce vulnerabilities
3. Maintain existing security posture 3. Maintain existing security posture
@@ -450,7 +450,7 @@ sections:
title: Next Steps title: Next Steps
instruction: | instruction: |
After completing the brownfield architecture: After completing the brownfield architecture:
1. Review integration points with existing system 1. Review integration points with existing system
2. Begin story implementation with Dev agent 2. Begin story implementation with Dev agent
3. Set up deployment pipeline integration 3. Set up deployment pipeline integration
@@ -473,4 +473,4 @@ sections:
- Integration requirements with existing codebase validated with user - Integration requirements with existing codebase validated with user
- Key technical decisions based on real project constraints - Key technical decisions based on real project constraints
- Existing system compatibility requirements with specific verification steps - 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

View File

@@ -16,19 +16,19 @@ sections:
title: Intro Project Analysis and Context title: Intro Project Analysis and Context
instruction: | instruction: |
IMPORTANT - SCOPE ASSESSMENT REQUIRED: IMPORTANT - SCOPE ASSESSMENT REQUIRED:
This PRD is for SIGNIFICANT enhancements to existing projects that require comprehensive planning and multiple stories. Before proceeding: 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." 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. 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. 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. 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?" 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. Do not proceed with any recommendations until the user has validated your understanding of the existing system.
sections: sections:
- id: existing-project-overview - id: existing-project-overview
@@ -54,7 +54,7 @@ sections:
- Note: "Document-project analysis available - using existing technical documentation" - Note: "Document-project analysis available - using existing technical documentation"
- List key documents created by document-project - List key documents created by document-project
- Skip the missing documentation check below - Skip the missing documentation check below
Otherwise, check for existing documentation: Otherwise, check for existing documentation:
sections: sections:
- id: available-docs - id: available-docs
@@ -178,7 +178,7 @@ sections:
If document-project output available: If document-project output available:
- Extract from "Actual Tech Stack" table in High Level Architecture section - Extract from "Actual Tech Stack" table in High Level Architecture section
- Include version numbers and any noted constraints - Include version numbers and any noted constraints
Otherwise, document the current technology stack: Otherwise, document the current technology stack:
template: | template: |
**Languages**: {{languages}} **Languages**: {{languages}}
@@ -217,7 +217,7 @@ sections:
- Reference "Technical Debt and Known Issues" section - Reference "Technical Debt and Known Issues" section
- Include "Workarounds and Gotchas" that might impact enhancement - Include "Workarounds and Gotchas" that might impact enhancement
- Note any identified constraints from "Critical Technical Debt" - Note any identified constraints from "Critical Technical Debt"
Build risk assessment incorporating existing known issues: Build risk assessment incorporating existing known issues:
template: | template: |
**Technical Risks**: {{technical_risks}} **Technical Risks**: {{technical_risks}}
@@ -240,7 +240,7 @@ sections:
title: "Epic 1: {{enhancement_title}}" title: "Epic 1: {{enhancement_title}}"
instruction: | instruction: |
Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality
CRITICAL STORY SEQUENCING FOR BROWNFIELD: CRITICAL STORY SEQUENCING FOR BROWNFIELD:
- Stories must ensure existing functionality remains intact - Stories must ensure existing functionality remains intact
- Each story should include verification that existing features still work - Each story should include verification that existing features still work
@@ -253,7 +253,7 @@ sections:
- Each story must deliver value while maintaining system integrity - Each story must deliver value while maintaining system integrity
template: | template: |
**Epic Goal**: {{epic_goal}} **Epic Goal**: {{epic_goal}}
**Integration Requirements**: {{integration_requirements}} **Integration Requirements**: {{integration_requirements}}
sections: sections:
- id: story - id: story
@@ -277,4 +277,4 @@ sections:
items: items:
- template: "IV1: {{existing_functionality_verification}}" - template: "IV1: {{existing_functionality_verification}}"
- template: "IV2: {{integration_point_verification}}" - template: "IV2: {{integration_point_verification}}"
- template: "IV3: {{performance_impact_verification}}" - template: "IV3: {{performance_impact_verification}}"

View File

@@ -76,7 +76,7 @@ sections:
title: Competitor Prioritization Matrix title: Competitor Prioritization Matrix
instruction: | instruction: |
Help categorize competitors by market share and strategic threat level Help categorize competitors by market share and strategic threat level
Create a 2x2 matrix: Create a 2x2 matrix:
- Priority 1 (Core Competitors): High Market Share + High Threat - Priority 1 (Core Competitors): High Market Share + High Threat
- Priority 2 (Emerging Threats): Low Market Share + High Threat - Priority 2 (Emerging Threats): Low Market Share + High Threat
@@ -141,7 +141,14 @@ sections:
title: Feature Comparison Matrix title: Feature Comparison Matrix
instruction: Create a detailed comparison table of key features across competitors instruction: Create a detailed comparison table of key features across competitors
type: table 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: rows:
- category: "Core Functionality" - category: "Core Functionality"
items: items:
@@ -153,7 +160,13 @@ sections:
- ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"] - ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"]
- category: "Integration & Ecosystem" - category: "Integration & Ecosystem"
items: items:
- ["API Availability", "{{availability}}", "{{availability}}", "{{availability}}", "{{availability}}"] - [
"API Availability",
"{{availability}}",
"{{availability}}",
"{{availability}}",
"{{availability}}",
]
- ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"] - ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"]
- category: "Pricing & Plans" - category: "Pricing & Plans"
items: items:
@@ -180,7 +193,7 @@ sections:
title: Positioning Map title: Positioning Map
instruction: | instruction: |
Describe competitor positions on key dimensions Describe competitor positions on key dimensions
Create a positioning description using 2 key dimensions relevant to the market, such as: Create a positioning description using 2 key dimensions relevant to the market, such as:
- Price vs. Features - Price vs. Features
- Ease of Use vs. Power - Ease of Use vs. Power
@@ -215,7 +228,7 @@ sections:
title: Blue Ocean Opportunities title: Blue Ocean Opportunities
instruction: | instruction: |
Identify uncontested market spaces Identify uncontested market spaces
List opportunities to create new market space: List opportunities to create new market space:
- Underserved segments - Underserved segments
- Unaddressed use cases - Unaddressed use cases
@@ -290,4 +303,4 @@ sections:
Recommended review schedule: Recommended review schedule:
- Weekly: {{weekly_items}} - Weekly: {{weekly_items}}
- Monthly: {{monthly_items}} - Monthly: {{monthly_items}}
- Quarterly: {{quarterly_analysis}} - Quarterly: {{quarterly_analysis}}

View File

@@ -16,16 +16,16 @@ sections:
title: Template and Framework Selection title: Template and Framework Selection
instruction: | 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. 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: 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: 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.) - Frontend starter templates (e.g., Create React App, Next.js, Vite, Vue CLI, Angular CLI, etc.)
- UI kit or component library starters - UI kit or component library starters
- Existing frontend projects being used as a foundation - Existing frontend projects being used as a foundation
- Admin dashboard templates or other specialized starters - Admin dashboard templates or other specialized starters
- Design system implementations - Design system implementations
2. If a frontend starter template or existing project is mentioned: 2. If a frontend starter template or existing project is mentioned:
- Ask the user to provide access via one of these methods: - Ask the user to provide access via one of these methods:
- Link to the starter template documentation - Link to the starter template documentation
@@ -41,7 +41,7 @@ sections:
- Testing setup and patterns - Testing setup and patterns
- Build and development scripts - Build and development scripts
- Use this analysis to ensure your frontend architecture aligns with the starter's patterns - 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: 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: - Based on the framework choice, suggest appropriate starters:
- React: Create React App, Next.js, Vite + React - React: Create React App, Next.js, Vite + React
@@ -49,11 +49,11 @@ sections:
- Angular: Angular CLI - Angular: Angular CLI
- Or suggest popular UI templates if applicable - Or suggest popular UI templates if applicable
- Explain benefits specific to frontend development - Explain benefits specific to frontend development
4. If the user confirms no starter template will be used: 4. If the user confirms no starter template will be used:
- Note that all tooling, bundling, and configuration will need manual setup - Note that all tooling, bundling, and configuration will need manual setup
- Proceed with frontend architecture from scratch - Proceed with frontend architecture from scratch
Document the starter template decision and any constraints it imposes before proceeding. Document the starter template decision and any constraints it imposes before proceeding.
sections: sections:
- id: changelog - id: changelog
@@ -75,12 +75,24 @@ sections:
rows: rows:
- ["Framework", "{{framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Framework", "{{framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["UI Library", "{{ui_library}}", "{{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}}"] - ["Routing", "{{routing_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Build Tool", "{{build_tool}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Build Tool", "{{build_tool}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Styling", "{{styling_solution}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Styling", "{{styling_solution}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Testing", "{{test_framework}}", "{{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}}"] - ["Form Handling", "{{form_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Animation", "{{animation_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Animation", "{{animation_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Dev Tools", "{{dev_tools}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Dev Tools", "{{dev_tools}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
@@ -203,4 +215,4 @@ sections:
- Common commands (dev server, build, test) - Common commands (dev server, build, test)
- Key import patterns - Key import patterns
- File naming conventions - File naming conventions
- Project-specific patterns and utilities - Project-specific patterns and utilities

View File

@@ -16,7 +16,7 @@ sections:
title: Introduction title: Introduction
instruction: | 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. 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. Establish the document's purpose and scope. Keep the content below but ensure project name is properly substituted.
content: | 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. 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 title: Overall UX Goals & Principles
instruction: | instruction: |
Work with the user to establish and document the following. If not already defined, facilitate a discussion to determine: 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 1. Target User Personas - elicit details or confirm existing ones from PRD
2. Key Usability Goals - understand what success looks like for users 2. Key Usability Goals - understand what success looks like for users
3. Core Design Principles - establish 3-5 guiding principles 3. Core Design Principles - establish 3-5 guiding principles
@@ -66,7 +66,7 @@ sections:
title: Information Architecture (IA) title: Information Architecture (IA)
instruction: | instruction: |
Collaborate with the user to create a comprehensive information architecture: Collaborate with the user to create a comprehensive information architecture:
1. Build a Site Map or Screen Inventory showing all major areas 1. Build a Site Map or Screen Inventory showing all major areas
2. Define the Navigation Structure (primary, secondary, breadcrumbs) 2. Define the Navigation Structure (primary, secondary, breadcrumbs)
3. Use Mermaid diagrams for visual representation 3. Use Mermaid diagrams for visual representation
@@ -96,22 +96,22 @@ sections:
title: Navigation Structure title: Navigation Structure
template: | template: |
**Primary Navigation:** {{primary_nav_description}} **Primary Navigation:** {{primary_nav_description}}
**Secondary Navigation:** {{secondary_nav_description}} **Secondary Navigation:** {{secondary_nav_description}}
**Breadcrumb Strategy:** {{breadcrumb_strategy}} **Breadcrumb Strategy:** {{breadcrumb_strategy}}
- id: user-flows - id: user-flows
title: User Flows title: User Flows
instruction: | instruction: |
For each critical user task identified in the PRD: For each critical user task identified in the PRD:
1. Define the user's goal clearly 1. Define the user's goal clearly
2. Map out all steps including decision points 2. Map out all steps including decision points
3. Consider edge cases and error states 3. Consider edge cases and error states
4. Use Mermaid flow diagrams for clarity 4. Use Mermaid flow diagrams for clarity
5. Link to external tools (Figma/Miro) if detailed flows exist there 5. Link to external tools (Figma/Miro) if detailed flows exist there
Create subsections for each major flow. Create subsections for each major flow.
elicit: true elicit: true
repeatable: true repeatable: true
@@ -120,9 +120,9 @@ sections:
title: "{{flow_name}}" title: "{{flow_name}}"
template: | template: |
**User Goal:** {{flow_goal}} **User Goal:** {{flow_goal}}
**Entry Points:** {{entry_points}} **Entry Points:** {{entry_points}}
**Success Criteria:** {{success_criteria}} **Success Criteria:** {{success_criteria}}
sections: sections:
- id: flow-diagram - id: flow-diagram
@@ -153,14 +153,14 @@ sections:
title: "{{screen_name}}" title: "{{screen_name}}"
template: | template: |
**Purpose:** {{screen_purpose}} **Purpose:** {{screen_purpose}}
**Key Elements:** **Key Elements:**
- {{element_1}} - {{element_1}}
- {{element_2}} - {{element_2}}
- {{element_3}} - {{element_3}}
**Interaction Notes:** {{interaction_notes}} **Interaction Notes:** {{interaction_notes}}
**Design File Reference:** {{specific_frame_link}} **Design File Reference:** {{specific_frame_link}}
- id: component-library - id: component-library
@@ -179,11 +179,11 @@ sections:
title: "{{component_name}}" title: "{{component_name}}"
template: | template: |
**Purpose:** {{component_purpose}} **Purpose:** {{component_purpose}}
**Variants:** {{component_variants}} **Variants:** {{component_variants}}
**States:** {{component_states}} **States:** {{component_states}}
**Usage Guidelines:** {{usage_guidelines}} **Usage Guidelines:** {{usage_guidelines}}
- id: branding-style - id: branding-style
@@ -229,13 +229,13 @@ sections:
title: Iconography title: Iconography
template: | template: |
**Icon Library:** {{icon_library}} **Icon Library:** {{icon_library}}
**Usage Guidelines:** {{icon_guidelines}} **Usage Guidelines:** {{icon_guidelines}}
- id: spacing-layout - id: spacing-layout
title: Spacing & Layout title: Spacing & Layout
template: | template: |
**Grid System:** {{grid_system}} **Grid System:** {{grid_system}}
**Spacing Scale:** {{spacing_scale}} **Spacing Scale:** {{spacing_scale}}
- id: accessibility - id: accessibility
@@ -253,12 +253,12 @@ sections:
- Color contrast ratios: {{contrast_requirements}} - Color contrast ratios: {{contrast_requirements}}
- Focus indicators: {{focus_requirements}} - Focus indicators: {{focus_requirements}}
- Text sizing: {{text_requirements}} - Text sizing: {{text_requirements}}
**Interaction:** **Interaction:**
- Keyboard navigation: {{keyboard_requirements}} - Keyboard navigation: {{keyboard_requirements}}
- Screen reader support: {{screen_reader_requirements}} - Screen reader support: {{screen_reader_requirements}}
- Touch targets: {{touch_requirements}} - Touch targets: {{touch_requirements}}
**Content:** **Content:**
- Alternative text: {{alt_text_requirements}} - Alternative text: {{alt_text_requirements}}
- Heading structure: {{heading_requirements}} - Heading structure: {{heading_requirements}}
@@ -285,11 +285,11 @@ sections:
title: Adaptation Patterns title: Adaptation Patterns
template: | template: |
**Layout Changes:** {{layout_adaptations}} **Layout Changes:** {{layout_adaptations}}
**Navigation Changes:** {{nav_adaptations}} **Navigation Changes:** {{nav_adaptations}}
**Content Priority:** {{content_adaptations}} **Content Priority:** {{content_adaptations}}
**Interaction Changes:** {{interaction_adaptations}} **Interaction Changes:** {{interaction_adaptations}}
- id: animation - id: animation
@@ -323,7 +323,7 @@ sections:
title: Next Steps title: Next Steps
instruction: | instruction: |
After completing the UI/UX specification: After completing the UI/UX specification:
1. Recommend review with stakeholders 1. Recommend review with stakeholders
2. Suggest creating/updating visual designs in design tool 2. Suggest creating/updating visual designs in design tool
3. Prepare for handoff to Design Architect for frontend architecture 3. Prepare for handoff to Design Architect for frontend architecture
@@ -346,4 +346,4 @@ sections:
- id: checklist-results - id: checklist-results
title: 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.

View File

@@ -19,33 +19,33 @@ sections:
elicit: true elicit: true
content: | 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 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. 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: sections:
- id: starter-template - id: starter-template
title: Starter Template or Existing Project title: Starter Template or Existing Project
instruction: | instruction: |
Before proceeding with architecture design, check if the project is based on any starter templates or existing codebases: 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: 1. Review the PRD and other documents for mentions of:
- Fullstack starter templates (e.g., T3 Stack, MEAN/MERN starters, Django + React templates) - Fullstack starter templates (e.g., T3 Stack, MEAN/MERN starters, Django + React templates)
- Monorepo templates (e.g., Nx, Turborepo starters) - Monorepo templates (e.g., Nx, Turborepo starters)
- Platform-specific starters (e.g., Vercel templates, AWS Amplify starters) - Platform-specific starters (e.g., Vercel templates, AWS Amplify starters)
- Existing projects being extended or cloned - Existing projects being extended or cloned
2. If starter templates or existing projects are mentioned: 2. If starter templates or existing projects are mentioned:
- Ask the user to provide access (links, repos, or files) - Ask the user to provide access (links, repos, or files)
- Analyze to understand pre-configured choices and constraints - Analyze to understand pre-configured choices and constraints
- Note any architectural decisions already made - Note any architectural decisions already made
- Identify what can be modified vs what must be retained - Identify what can be modified vs what must be retained
3. If no starter is mentioned but this is greenfield: 3. If no starter is mentioned but this is greenfield:
- Suggest appropriate fullstack starters based on tech preferences - Suggest appropriate fullstack starters based on tech preferences
- Consider platform-specific options (Vercel, AWS, etc.) - Consider platform-specific options (Vercel, AWS, etc.)
- Let user decide whether to use one - Let user decide whether to use one
4. Document the decision and any constraints it imposes 4. Document the decision and any constraints it imposes
If none, state "N/A - Greenfield project" If none, state "N/A - Greenfield project"
- id: changelog - id: changelog
title: Change Log title: Change Log
@@ -71,17 +71,17 @@ sections:
title: Platform and Infrastructure Choice title: Platform and Infrastructure Choice
instruction: | instruction: |
Based on PRD requirements and technical assumptions, make a platform recommendation: 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): 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 - **Vercel + Supabase**: For rapid development with Next.js, built-in auth/storage
- **AWS Full Stack**: For enterprise scale with Lambda, API Gateway, S3, Cognito - **AWS Full Stack**: For enterprise scale with Lambda, API Gateway, S3, Cognito
- **Azure**: For .NET ecosystems or enterprise Microsoft environments - **Azure**: For .NET ecosystems or enterprise Microsoft environments
- **Google Cloud**: For ML/AI heavy applications or Google ecosystem integration - **Google Cloud**: For ML/AI heavy applications or Google ecosystem integration
2. Present 2-3 viable options with clear pros/cons 2. Present 2-3 viable options with clear pros/cons
3. Make a recommendation with rationale 3. Make a recommendation with rationale
4. Get explicit user confirmation 4. Get explicit user confirmation
Document the choice and key services that will be used. Document the choice and key services that will be used.
template: | template: |
**Platform:** {{selected_platform}} **Platform:** {{selected_platform}}
@@ -91,7 +91,7 @@ sections:
title: Repository Structure title: Repository Structure
instruction: | instruction: |
Define the repository approach based on PRD requirements and platform choice, explain your rationale or ask questions to the user if unsure: 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 1. For modern fullstack apps, monorepo is often preferred
2. Consider tooling (Nx, Turborepo, Lerna, npm workspaces) 2. Consider tooling (Nx, Turborepo, Lerna, npm workspaces)
3. Define package/app boundaries 3. Define package/app boundaries
@@ -113,7 +113,7 @@ sections:
- Databases and storage - Databases and storage
- External integrations - External integrations
- CDN and caching layers - CDN and caching layers
Use appropriate diagram type for clarity. Use appropriate diagram type for clarity.
- id: architectural-patterns - id: architectural-patterns
title: Architectural Patterns title: Architectural Patterns
@@ -123,7 +123,7 @@ sections:
- Frontend patterns (e.g., Component-based, State management) - Frontend patterns (e.g., Component-based, State management)
- Backend patterns (e.g., Repository, CQRS, Event-driven) - Backend patterns (e.g., Repository, CQRS, Event-driven)
- Integration patterns (e.g., BFF, API Gateway) - Integration patterns (e.g., BFF, API Gateway)
For each pattern, provide recommendation and rationale. For each pattern, provide recommendation and rationale.
repeatable: true repeatable: true
template: "- **{{pattern_name}}:** {{pattern_description}} - _Rationale:_ {{rationale}}" template: "- **{{pattern_name}}:** {{pattern_description}} - _Rationale:_ {{rationale}}"
@@ -137,7 +137,7 @@ sections:
title: Tech Stack title: Tech Stack
instruction: | 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. 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: Key areas to cover:
- Frontend and backend languages/frameworks - Frontend and backend languages/frameworks
- Databases and caching - Databases and caching
@@ -146,7 +146,7 @@ sections:
- Testing tools for both frontend and backend - Testing tools for both frontend and backend
- Build and deployment tools - Build and deployment tools
- Monitoring and logging - Monitoring and logging
Upon render, elicit feedback immediately. Upon render, elicit feedback immediately.
elicit: true elicit: true
sections: sections:
@@ -156,11 +156,29 @@ sections:
columns: [Category, Technology, Version, Purpose, Rationale] columns: [Category, Technology, Version, Purpose, Rationale]
rows: rows:
- ["Frontend Language", "{{fe_language}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["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}}"] - ["State Management", "{{state_mgmt}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Backend Language", "{{be_language}}", "{{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}}"] - ["API Style", "{{api_style}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Database", "{{database}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Database", "{{database}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
- ["Cache", "{{cache}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"] - ["Cache", "{{cache}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
@@ -181,14 +199,14 @@ sections:
title: Data Models title: Data Models
instruction: | instruction: |
Define the core data models/entities that will be shared between frontend and backend: Define the core data models/entities that will be shared between frontend and backend:
1. Review PRD requirements and identify key business entities 1. Review PRD requirements and identify key business entities
2. For each model, explain its purpose and relationships 2. For each model, explain its purpose and relationships
3. Include key attributes and data types 3. Include key attributes and data types
4. Show relationships between models 4. Show relationships between models
5. Create TypeScript interfaces that can be shared 5. Create TypeScript interfaces that can be shared
6. Discuss design decisions with user 6. Discuss design decisions with user
Create a clear conceptual model before moving to database schema. Create a clear conceptual model before moving to database schema.
elicit: true elicit: true
repeatable: true repeatable: true
@@ -197,7 +215,7 @@ sections:
title: "{{model_name}}" title: "{{model_name}}"
template: | template: |
**Purpose:** {{model_purpose}} **Purpose:** {{model_purpose}}
**Key Attributes:** **Key Attributes:**
- {{attribute_1}}: {{type_1}} - {{description_1}} - {{attribute_1}}: {{type_1}} - {{description_1}}
- {{attribute_2}}: {{type_2}} - {{description_2}} - {{attribute_2}}: {{type_2}} - {{description_2}}
@@ -216,7 +234,7 @@ sections:
title: API Specification title: API Specification
instruction: | instruction: |
Based on the chosen API style from Tech Stack: Based on the chosen API style from Tech Stack:
1. If REST API, create an OpenAPI 3.0 specification 1. If REST API, create an OpenAPI 3.0 specification
2. If GraphQL, provide the GraphQL schema 2. If GraphQL, provide the GraphQL schema
3. If tRPC, show router definitions 3. If tRPC, show router definitions
@@ -224,7 +242,7 @@ sections:
5. Define request/response schemas based on data models 5. Define request/response schemas based on data models
6. Document authentication requirements 6. Document authentication requirements
7. Include example requests/responses 7. Include example requests/responses
Use appropriate format for the chosen API style. If no API (e.g., static site), skip this section. Use appropriate format for the chosen API style. If no API (e.g., static site), skip this section.
elicit: true elicit: true
sections: sections:
@@ -259,7 +277,7 @@ sections:
title: Components title: Components
instruction: | instruction: |
Based on the architectural patterns, tech stack, and data models from above: Based on the architectural patterns, tech stack, and data models from above:
1. Identify major logical components/services across the fullstack 1. Identify major logical components/services across the fullstack
2. Consider both frontend and backend components 2. Consider both frontend and backend components
3. Define clear boundaries and interfaces between components 3. Define clear boundaries and interfaces between components
@@ -268,7 +286,7 @@ sections:
- Key interfaces/APIs exposed - Key interfaces/APIs exposed
- Dependencies on other components - Dependencies on other components
- Technology specifics based on tech stack choices - Technology specifics based on tech stack choices
5. Create component diagrams where helpful 5. Create component diagrams where helpful
elicit: true elicit: true
sections: sections:
@@ -277,13 +295,13 @@ sections:
title: "{{component_name}}" title: "{{component_name}}"
template: | template: |
**Responsibility:** {{component_description}} **Responsibility:** {{component_description}}
**Key Interfaces:** **Key Interfaces:**
- {{interface_1}} - {{interface_1}}
- {{interface_2}} - {{interface_2}}
**Dependencies:** {{dependencies}} **Dependencies:** {{dependencies}}
**Technology Stack:** {{component_tech_details}} **Technology Stack:** {{component_tech_details}}
- id: component-diagrams - id: component-diagrams
title: Component Diagrams title: Component Diagrams
@@ -300,13 +318,13 @@ sections:
condition: Project requires external API integrations condition: Project requires external API integrations
instruction: | instruction: |
For each external service integration: For each external service integration:
1. Identify APIs needed based on PRD requirements and component design 1. Identify APIs needed based on PRD requirements and component design
2. If documentation URLs are unknown, ask user for specifics 2. If documentation URLs are unknown, ask user for specifics
3. Document authentication methods and security considerations 3. Document authentication methods and security considerations
4. List specific endpoints that will be used 4. List specific endpoints that will be used
5. Note any rate limits or usage constraints 5. Note any rate limits or usage constraints
If no external APIs are needed, state this explicitly and skip to next section. If no external APIs are needed, state this explicitly and skip to next section.
elicit: true elicit: true
repeatable: true repeatable: true
@@ -319,10 +337,10 @@ sections:
- **Base URL(s):** {{api_base_url}} - **Base URL(s):** {{api_base_url}}
- **Authentication:** {{auth_method}} - **Authentication:** {{auth_method}}
- **Rate Limits:** {{rate_limits}} - **Rate Limits:** {{rate_limits}}
**Key Endpoints Used:** **Key Endpoints Used:**
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}} - `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
**Integration Notes:** {{integration_considerations}} **Integration Notes:** {{integration_considerations}}
- id: core-workflows - id: core-workflows
@@ -331,14 +349,14 @@ sections:
mermaid_type: sequence mermaid_type: sequence
instruction: | instruction: |
Illustrate key system workflows using sequence diagrams: Illustrate key system workflows using sequence diagrams:
1. Identify critical user journeys from PRD 1. Identify critical user journeys from PRD
2. Show component interactions including external APIs 2. Show component interactions including external APIs
3. Include both frontend and backend flows 3. Include both frontend and backend flows
4. Include error handling paths 4. Include error handling paths
5. Document async operations 5. Document async operations
6. Create both high-level and detailed diagrams as needed 6. Create both high-level and detailed diagrams as needed
Focus on workflows that clarify architecture decisions or complex interactions. Focus on workflows that clarify architecture decisions or complex interactions.
elicit: true elicit: true
@@ -346,13 +364,13 @@ sections:
title: Database Schema title: Database Schema
instruction: | instruction: |
Transform the conceptual data models into concrete database schemas: Transform the conceptual data models into concrete database schemas:
1. Use the database type(s) selected in Tech Stack 1. Use the database type(s) selected in Tech Stack
2. Create schema definitions using appropriate notation 2. Create schema definitions using appropriate notation
3. Include indexes, constraints, and relationships 3. Include indexes, constraints, and relationships
4. Consider performance and scalability 4. Consider performance and scalability
5. For NoSQL, show document structures 5. For NoSQL, show document structures
Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.) Present schema in format appropriate to database type (SQL DDL, JSON schema, etc.)
elicit: true elicit: true
@@ -488,60 +506,60 @@ sections:
type: code type: code
language: plaintext language: plaintext
examples: examples:
- | - |
{{project-name}}/ {{project-name}}/
├── .github/ # CI/CD workflows ├── .github/ # CI/CD workflows
│ └── workflows/ │ └── workflows/
│ ├── ci.yaml │ ├── ci.yaml
│ └── deploy.yaml │ └── deploy.yaml
├── apps/ # Application packages ├── apps/ # Application packages
│ ├── web/ # Frontend application │ ├── web/ # Frontend application
│ │ ├── src/ │ │ ├── src/
│ │ │ ├── components/ # UI components │ │ │ ├── components/ # UI components
│ │ │ ├── pages/ # Page components/routes │ │ │ ├── pages/ # Page components/routes
│ │ │ ├── hooks/ # Custom React hooks │ │ │ ├── hooks/ # Custom React hooks
│ │ │ ├── services/ # API client services │ │ │ ├── services/ # API client services
│ │ │ ├── stores/ # State management │ │ │ ├── stores/ # State management
│ │ │ ├── styles/ # Global styles/themes │ │ │ ├── styles/ # Global styles/themes
│ │ │ └── utils/ # Frontend utilities │ │ │ └── utils/ # Frontend utilities
│ │ ├── public/ # Static assets │ │ ├── public/ # Static assets
│ │ ├── tests/ # Frontend tests │ │ ├── tests/ # Frontend tests
│ │ └── package.json │ │ └── package.json
│ └── api/ # Backend application │ └── api/ # Backend application
│ ├── src/ │ ├── src/
│ │ ├── routes/ # API routes/controllers │ │ ├── routes/ # API routes/controllers
│ │ ├── services/ # Business logic │ │ ├── services/ # Business logic
│ │ ├── models/ # Data models │ │ ├── models/ # Data models
│ │ ├── middleware/ # Express/API middleware │ │ ├── middleware/ # Express/API middleware
│ │ ├── utils/ # Backend utilities │ │ ├── utils/ # Backend utilities
│ │ └── {{serverless_or_server_entry}} │ │ └── {{serverless_or_server_entry}}
│ ├── tests/ # Backend tests │ ├── tests/ # Backend tests
│ └── package.json │ └── package.json
├── packages/ # Shared packages ├── packages/ # Shared packages
│ ├── shared/ # Shared types/utilities │ ├── shared/ # Shared types/utilities
│ │ ├── src/ │ │ ├── src/
│ │ │ ├── types/ # TypeScript interfaces │ │ │ ├── types/ # TypeScript interfaces
│ │ │ ├── constants/ # Shared constants │ │ │ ├── constants/ # Shared constants
│ │ │ └── utils/ # Shared utilities │ │ │ └── utils/ # Shared utilities
│ │ └── package.json │ │ └── package.json
│ ├── ui/ # Shared UI components │ ├── ui/ # Shared UI components
│ │ ├── src/ │ │ ├── src/
│ │ └── package.json │ │ └── package.json
│ └── config/ # Shared configuration │ └── config/ # Shared configuration
│ ├── eslint/ │ ├── eslint/
│ ├── typescript/ │ ├── typescript/
│ └── jest/ │ └── jest/
├── infrastructure/ # IaC definitions ├── infrastructure/ # IaC definitions
│ └── {{iac_structure}} │ └── {{iac_structure}}
├── scripts/ # Build/deploy scripts ├── scripts/ # Build/deploy scripts
├── docs/ # Documentation ├── docs/ # Documentation
│ ├── prd.md │ ├── prd.md
│ ├── front-end-spec.md │ ├── front-end-spec.md
│ └── fullstack-architecture.md │ └── fullstack-architecture.md
├── .env.example # Environment template ├── .env.example # Environment template
├── package.json # Root package.json ├── package.json # Root package.json
├── {{monorepo_config}} # Monorepo configuration ├── {{monorepo_config}} # Monorepo configuration
└── README.md └── README.md
- id: development-workflow - id: development-workflow
title: Development Workflow title: Development Workflow
@@ -568,13 +586,13 @@ sections:
template: | template: |
# Start all services # Start all services
{{start_all_command}} {{start_all_command}}
# Start frontend only # Start frontend only
{{start_frontend_command}} {{start_frontend_command}}
# Start backend only # Start backend only
{{start_backend_command}} {{start_backend_command}}
# Run tests # Run tests
{{test_commands}} {{test_commands}}
- id: environment-config - id: environment-config
@@ -587,10 +605,10 @@ sections:
template: | template: |
# Frontend (.env.local) # Frontend (.env.local)
{{frontend_env_vars}} {{frontend_env_vars}}
# Backend (.env) # Backend (.env)
{{backend_env_vars}} {{backend_env_vars}}
# Shared # Shared
{{shared_env_vars}} {{shared_env_vars}}
@@ -607,7 +625,7 @@ sections:
- **Build Command:** {{frontend_build_command}} - **Build Command:** {{frontend_build_command}}
- **Output Directory:** {{frontend_output_dir}} - **Output Directory:** {{frontend_output_dir}}
- **CDN/Edge:** {{cdn_strategy}} - **CDN/Edge:** {{cdn_strategy}}
**Backend Deployment:** **Backend Deployment:**
- **Platform:** {{backend_deploy_platform}} - **Platform:** {{backend_deploy_platform}}
- **Build Command:** {{backend_build_command}} - **Build Command:** {{backend_build_command}}
@@ -638,12 +656,12 @@ sections:
- CSP Headers: {{csp_policy}} - CSP Headers: {{csp_policy}}
- XSS Prevention: {{xss_strategy}} - XSS Prevention: {{xss_strategy}}
- Secure Storage: {{storage_strategy}} - Secure Storage: {{storage_strategy}}
**Backend Security:** **Backend Security:**
- Input Validation: {{validation_approach}} - Input Validation: {{validation_approach}}
- Rate Limiting: {{rate_limit_config}} - Rate Limiting: {{rate_limit_config}}
- CORS Policy: {{cors_config}} - CORS Policy: {{cors_config}}
**Authentication Security:** **Authentication Security:**
- Token Storage: {{token_strategy}} - Token Storage: {{token_strategy}}
- Session Management: {{session_approach}} - Session Management: {{session_approach}}
@@ -655,7 +673,7 @@ sections:
- Bundle Size Target: {{bundle_size}} - Bundle Size Target: {{bundle_size}}
- Loading Strategy: {{loading_approach}} - Loading Strategy: {{loading_approach}}
- Caching Strategy: {{fe_cache_strategy}} - Caching Strategy: {{fe_cache_strategy}}
**Backend Performance:** **Backend Performance:**
- Response Time Target: {{response_target}} - Response Time Target: {{response_target}}
- Database Optimization: {{db_optimization}} - Database Optimization: {{db_optimization}}
@@ -671,10 +689,10 @@ sections:
type: code type: code
language: text language: text
template: | template: |
E2E Tests E2E Tests
/ \ / \
Integration Tests Integration Tests
/ \ / \
Frontend Unit Backend Unit Frontend Unit Backend Unit
- id: test-organization - id: test-organization
title: Test Organization title: Test Organization
@@ -793,7 +811,7 @@ sections:
- JavaScript errors - JavaScript errors
- API response times - API response times
- User interactions - User interactions
**Backend Metrics:** **Backend Metrics:**
- Request rate - Request rate
- Error rate - Error rate
@@ -802,4 +820,4 @@ sections:
- id: checklist-results - id: checklist-results
title: Checklist Results Report 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.

View File

@@ -130,7 +130,7 @@ sections:
instruction: Map the end-to-end customer experience for primary segments instruction: Map the end-to-end customer experience for primary segments
template: | template: |
For primary customer segment: For primary customer segment:
1. **Awareness:** {{discovery_process}} 1. **Awareness:** {{discovery_process}}
2. **Consideration:** {{evaluation_criteria}} 2. **Consideration:** {{evaluation_criteria}}
3. **Purchase:** {{decision_triggers}} 3. **Purchase:** {{decision_triggers}}
@@ -249,4 +249,4 @@ sections:
instruction: Include any complex calculations or models instruction: Include any complex calculations or models
- id: additional-analysis - id: additional-analysis
title: C. Additional Analysis title: C. Additional Analysis
instruction: Any supplementary analysis not included in main body instruction: Any supplementary analysis not included in main body

View File

@@ -56,7 +56,7 @@ sections:
condition: PRD has UX/UI requirements condition: PRD has UX/UI requirements
instruction: | instruction: |
Capture high-level UI/UX vision to guide Design Architect and to inform story creation. Steps: 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 1. Pre-fill all subsections with educated guesses based on project context
2. Present the complete rendered section to user 2. Present the complete rendered section to user
3. Clearly let the user know where assumptions were made 3. Clearly let the user know where assumptions were made
@@ -98,7 +98,7 @@ sections:
title: Technical Assumptions title: Technical Assumptions
instruction: | instruction: |
Gather technical decisions that will guide the Architect. Steps: 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 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 2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
3. For unknowns, offer guidance based on project goals and MVP scope 3. For unknowns, offer guidance based on project goals and MVP scope
@@ -126,9 +126,9 @@ sections:
title: Epic List title: Epic List
instruction: | 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. 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: 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 - 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! - 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 - 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 repeatable: true
instruction: | instruction: |
After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit. 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). For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
CRITICAL STORY SEQUENCING REQUIREMENTS: CRITICAL STORY SEQUENCING REQUIREMENTS:
- Stories within each epic MUST be logically sequential - 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 - 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 - No story should depend on work from a later story or epic
@@ -179,7 +179,7 @@ sections:
repeatable: true repeatable: true
instruction: | instruction: |
Define clear, comprehensive, and testable acceptance criteria that: Define clear, comprehensive, and testable acceptance criteria that:
- Precisely define what "done" means from a functional perspective - Precisely define what "done" means from a functional perspective
- Are unambiguous and serve as basis for verification - Are unambiguous and serve as basis for verification
- Include any critical non-functional requirements from the PRD - 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. 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 - id: architect-prompt
title: 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.

View File

@@ -28,12 +28,12 @@ sections:
- id: introduction - id: introduction
instruction: | instruction: |
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development. 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: Start by asking the user which mode they prefer:
1. **Interactive Mode** - Work through each section collaboratively 1. **Interactive Mode** - Work through each section collaboratively
2. **YOLO Mode** - Generate complete draft for review and refinement 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. Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
- id: executive-summary - id: executive-summary
@@ -218,4 +218,4 @@ sections:
- id: pm-handoff - id: pm-handoff
title: PM Handoff title: PM Handoff
content: | 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.

View File

@@ -11,8 +11,8 @@ template:
schema: 1 schema: 1
story: "{{epic_num}}.{{story_num}}" story: "{{epic_num}}.{{story_num}}"
story_title: "{{story_title}}" story_title: "{{story_title}}"
gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision
reviewer: "Quinn (Test Architect)" reviewer: "Quinn (Test Architect)"
updated: "{{iso_timestamp}}" updated: "{{iso_timestamp}}"
@@ -41,7 +41,7 @@ examples:
severity: medium severity: medium
finding: "Missing integration tests for auth flow" finding: "Missing integration tests for auth flow"
suggested_action: "Add test coverage for critical paths" suggested_action: "Add test coverage for critical paths"
when_waived: | when_waived: |
waiver: waiver:
active: true active: true
@@ -55,7 +55,7 @@ optional_fields_examples:
quality_and_expiry: | quality_and_expiry: |
quality_score: 75 # 0-100 (optional scoring) quality_score: 75 # 0-100 (optional scoring)
expires: "2025-01-26T00:00:00Z" # Optional gate freshness window expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
evidence: | evidence: |
evidence: evidence:
tests_reviewed: 15 tests_reviewed: 15
@@ -63,14 +63,14 @@ optional_fields_examples:
trace: trace:
ac_covered: [1, 2, 3] # AC numbers with test coverage ac_covered: [1, 2, 3] # AC numbers with test coverage
ac_gaps: [4] # AC numbers lacking coverage ac_gaps: [4] # AC numbers lacking coverage
nfr_validation: | nfr_validation: |
nfr_validation: nfr_validation:
security: { status: CONCERNS, notes: "Rate limiting missing" } security: { status: CONCERNS, notes: "Rate limiting missing" }
performance: { status: PASS, notes: "" } performance: { status: PASS, notes: "" }
reliability: { status: PASS, notes: "" } reliability: { status: PASS, notes: "" }
maintainability: { status: PASS, notes: "" } maintainability: { status: PASS, notes: "" }
history: | history: |
history: # Append-only audit trail history: # Append-only audit trail
- at: "2025-01-12T10:00:00Z" - at: "2025-01-12T10:00:00Z"
@@ -79,7 +79,7 @@ optional_fields_examples:
- at: "2025-01-12T15:00:00Z" - at: "2025-01-12T15:00:00Z"
gate: CONCERNS gate: CONCERNS
note: "Tests added but rate limiting still missing" note: "Tests added but rate limiting still missing"
risk_summary: | risk_summary: |
risk_summary: # From risk-profile task risk_summary: # From risk-profile task
totals: totals:
@@ -91,7 +91,7 @@ optional_fields_examples:
recommendations: recommendations:
must_fix: [] must_fix: []
monitor: [] monitor: []
recommendations: | recommendations: |
recommendations: recommendations:
immediate: # Must fix before production immediate: # Must fix before production
@@ -99,4 +99,4 @@ optional_fields_examples:
refs: ["api/auth/login.ts:42-68"] refs: ["api/auth/login.ts:42-68"]
future: # Can be addressed later future: # Can be addressed later
- action: "Consider caching for better performance" - action: "Consider caching for better performance"
refs: ["services/data.service.ts"] refs: ["services/data.service.ts"]

View File

@@ -12,7 +12,7 @@ workflow:
elicitation: advanced-elicitation elicitation: advanced-elicitation
agent_config: agent_config:
editable_sections: editable_sections:
- Status - Status
- Story - Story
- Acceptance Criteria - Acceptance Criteria
@@ -29,7 +29,7 @@ sections:
instruction: Select the current status of the story instruction: Select the current status of the story
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: story - id: story
title: Story title: Story
type: template-text type: template-text
@@ -41,7 +41,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
@@ -49,7 +49,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: tasks-subtasks - id: tasks-subtasks
title: Tasks / Subtasks title: Tasks / Subtasks
type: bullet-list type: bullet-list
@@ -66,7 +66,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: dev-notes - id: dev-notes
title: Dev Notes title: Dev Notes
instruction: | instruction: |
@@ -90,7 +90,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: change-log - id: change-log
title: Change Log title: Change Log
type: table type: table
@@ -98,7 +98,7 @@ sections:
instruction: Track changes made to this story document instruction: Track changes made to this story document
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent, qa-agent] editors: [scrum-master, dev-agent, qa-agent]
- id: dev-agent-record - id: dev-agent-record
title: Dev Agent Record title: Dev Agent Record
instruction: This section is populated by the development agent during implementation 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 instruction: Record the specific AI agent model and version used for development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: debug-log-references - id: debug-log-references
title: Debug Log References title: Debug Log References
instruction: Reference any debug logs or traces generated during development instruction: Reference any debug logs or traces generated during development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: completion-notes - id: completion-notes
title: Completion Notes List title: Completion Notes List
instruction: Notes about the completion of tasks and any issues encountered instruction: Notes about the completion of tasks and any issues encountered
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: file-list - id: file-list
title: File List title: File List
instruction: List all files created, modified, or affected during story implementation instruction: List all files created, modified, or affected during story implementation
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: qa-results - id: qa-results
title: QA Results title: QA Results
instruction: Results from QA Agent QA review of the completed story implementation instruction: Results from QA Agent QA review of the completed story implementation
owner: qa-agent owner: qa-agent
editors: [qa-agent] editors: [qa-agent]

View File

@@ -20,7 +20,7 @@ workflow:
- Single story (< 4 hours) → Use brownfield-create-story task - Single story (< 4 hours) → Use brownfield-create-story task
- Small feature (1-3 stories) → Use brownfield-create-epic task - Small feature (1-3 stories) → Use brownfield-create-epic task
- Major enhancement (multiple epics) → Continue with full workflow - 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?" 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 - step: routing_decision
@@ -181,7 +181,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Project development phase complete. Project development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |
@@ -265,33 +265,33 @@ workflow:
{{if single_story}}: Proceeding with brownfield-create-story task for immediate implementation. {{if single_story}}: Proceeding with brownfield-create-story task for immediate implementation.
{{if small_feature}}: Creating focused epic with brownfield-create-epic task. {{if small_feature}}: Creating focused epic with brownfield-create-epic task.
{{if major_enhancement}}: Continuing with comprehensive planning workflow. {{if major_enhancement}}: Continuing with comprehensive planning workflow.
documentation_assessment: | documentation_assessment: |
Documentation assessment complete: Documentation assessment complete:
{{if adequate}}: Existing documentation is sufficient. Proceeding directly to PRD creation. {{if adequate}}: Existing documentation is sufficient. Proceeding directly to PRD creation.
{{if inadequate}}: Running document-project to capture current system state before PRD. {{if inadequate}}: Running document-project to capture current system state before PRD.
document_project_to_pm: | document_project_to_pm: |
Project analysis complete. Key findings documented in: Project analysis complete. Key findings documented in:
- {{document_list}} - {{document_list}}
Use these findings to inform PRD creation and avoid re-analyzing the same aspects. Use these findings to inform PRD creation and avoid re-analyzing the same aspects.
pm_to_architect_decision: | pm_to_architect_decision: |
PRD complete and saved as docs/prd.md. PRD complete and saved as docs/prd.md.
Architectural changes identified: {{yes/no}} Architectural changes identified: {{yes/no}}
{{if yes}}: Proceeding to create architecture document for: {{specific_changes}} {{if yes}}: Proceeding to create architecture document for: {{specific_changes}}
{{if no}}: No architectural changes needed. Proceeding to validation. {{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." architect_to_po: "Architecture complete. Save it as docs/architecture.md. Please validate all artifacts for integration safety."
po_to_sm: | po_to_sm: |
All artifacts validated. All artifacts validated.
Documentation type available: {{sharded_prd / brownfield_docs}} Documentation type available: {{sharded_prd / brownfield_docs}}
{{if sharded}}: Use standard create-next-story task. {{if sharded}}: Use standard create-next-story task.
{{if brownfield}}: Use create-brownfield-story task to handle varied documentation formats. {{if brownfield}}: Use create-brownfield-story task to handle varied documentation formats.
sm_story_creation: | sm_story_creation: |
Creating story from {{documentation_type}}. Creating story from {{documentation_type}}.
{{if missing_context}}: May need to gather additional context from user during story creation. {{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." complete: "All planning artifacts validated and development can begin. Stories will be created based on available documentation format."

View File

@@ -127,7 +127,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Project development phase complete. Project development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |

View File

@@ -134,7 +134,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Project development phase complete. Project development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |

View File

@@ -159,7 +159,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Project development phase complete. Project development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |

View File

@@ -135,7 +135,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Service development phase complete. Service development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |

View File

@@ -154,7 +154,7 @@ workflow:
notes: | notes: |
All stories implemented and reviewed! All stories implemented and reviewed!
Project development phase complete. Project development phase complete.
Reference: {root}/data/bmad-kb.md#IDE Development Workflow Reference: {root}/data/bmad-kb.md#IDE Development Workflow
flow_diagram: | flow_diagram: |

View File

@@ -14,7 +14,7 @@ template:
output: output:
format: markdown format: markdown
filename: default-path/to/{{filename}}.md filename: default-path/to/{{filename}}.md
title: "{{variable}} Document Title" title: '{{variable}} Document Title'
workflow: workflow:
mode: interactive mode: interactive
@@ -108,8 +108,8 @@ sections:
Use `{{variable_name}}` in titles, templates, and content: Use `{{variable_name}}` in titles, templates, and content:
```yaml ```yaml
title: "Epic {{epic_number}} {{epic_title}}" title: 'Epic {{epic_number}} {{epic_title}}'
template: "As a {{user_type}}, I want {{action}}, so that {{benefit}}." template: 'As a {{user_type}}, I want {{action}}, so that {{benefit}}.'
``` ```
### Conditional Sections ### Conditional Sections
@@ -212,7 +212,7 @@ choices:
- id: criteria - id: criteria
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
item_template: "{{criterion_number}}: {{criteria}}" item_template: '{{criterion_number}}: {{criteria}}'
repeatable: true repeatable: true
``` ```
@@ -220,7 +220,7 @@ choices:
````yaml ````yaml
examples: examples:
- "FR6: The system must authenticate users within 2 seconds" - 'FR6: The system must authenticate users within 2 seconds'
- | - |
```mermaid ```mermaid
sequenceDiagram sequenceDiagram

View File

@@ -106,7 +106,7 @@ dependencies:
==================== START: .bmad-core/tasks/facilitate-brainstorming-session.md ==================== ==================== START: .bmad-core/tasks/facilitate-brainstorming-session.md ====================
--- ---
docOutputLocation: docs/brainstorming-session-results.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 # Facilitate Brainstorming Session Task
@@ -1101,35 +1101,35 @@ template:
output: output:
format: markdown format: markdown
filename: docs/brief.md filename: docs/brief.md
title: "Project Brief: {{project_name}}" title: 'Project Brief: {{project_name}}'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
custom_elicitation: custom_elicitation:
title: "Project Brief Elicitation Actions" title: 'Project Brief Elicitation Actions'
options: options:
- "Expand section with more specific details" - 'Expand section with more specific details'
- "Validate against similar successful products" - 'Validate against similar successful products'
- "Stress test assumptions with edge cases" - 'Stress test assumptions with edge cases'
- "Explore alternative solution approaches" - 'Explore alternative solution approaches'
- "Analyze resource/constraint trade-offs" - 'Analyze resource/constraint trade-offs'
- "Generate risk mitigation strategies" - 'Generate risk mitigation strategies'
- "Challenge scope from MVP minimalist view" - 'Challenge scope from MVP minimalist view'
- "Brainstorm creative feature possibilities" - 'Brainstorm creative feature possibilities'
- "If only we had [resource/capability/time]..." - 'If only we had [resource/capability/time]...'
- "Proceed to next section" - 'Proceed to next section'
sections: sections:
- id: introduction - id: introduction
instruction: | instruction: |
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development. 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: Start by asking the user which mode they prefer:
1. **Interactive Mode** - Work through each section collaboratively 1. **Interactive Mode** - Work through each section collaboratively
2. **YOLO Mode** - Generate complete draft for review and refinement 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. Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
- id: executive-summary - id: executive-summary
@@ -1140,7 +1140,7 @@ sections:
- Primary problem being solved - Primary problem being solved
- Target market identification - Target market identification
- Key value proposition - Key value proposition
template: "{{executive_summary_content}}" template: '{{executive_summary_content}}'
- id: problem-statement - id: problem-statement
title: Problem Statement title: Problem Statement
@@ -1150,7 +1150,7 @@ sections:
- Impact of the problem (quantify if possible) - Impact of the problem (quantify if possible)
- Why existing solutions fall short - Why existing solutions fall short
- Urgency and importance of solving this now - Urgency and importance of solving this now
template: "{{detailed_problem_description}}" template: '{{detailed_problem_description}}'
- id: proposed-solution - id: proposed-solution
title: Proposed Solution title: Proposed Solution
@@ -1160,7 +1160,7 @@ sections:
- Key differentiators from existing solutions - Key differentiators from existing solutions
- Why this solution will succeed where others haven't - Why this solution will succeed where others haven't
- High-level vision for the product - High-level vision for the product
template: "{{solution_description}}" template: '{{solution_description}}'
- id: target-users - id: target-users
title: Target Users title: Target Users
@@ -1172,12 +1172,12 @@ sections:
- Goals they're trying to achieve - Goals they're trying to achieve
sections: sections:
- id: primary-segment - id: primary-segment
title: "Primary User Segment: {{segment_name}}" title: 'Primary User Segment: {{segment_name}}'
template: "{{primary_user_description}}" template: '{{primary_user_description}}'
- id: secondary-segment - id: secondary-segment
title: "Secondary User Segment: {{segment_name}}" title: 'Secondary User Segment: {{segment_name}}'
condition: Has secondary user segment condition: Has secondary user segment
template: "{{secondary_user_description}}" template: '{{secondary_user_description}}'
- id: goals-metrics - id: goals-metrics
title: Goals & Success Metrics title: Goals & Success Metrics
@@ -1186,15 +1186,15 @@ sections:
- id: business-objectives - id: business-objectives
title: Business Objectives title: Business Objectives
type: bullet-list type: bullet-list
template: "- {{objective_with_metric}}" template: '- {{objective_with_metric}}'
- id: user-success-metrics - id: user-success-metrics
title: User Success Metrics title: User Success Metrics
type: bullet-list type: bullet-list
template: "- {{user_metric}}" template: '- {{user_metric}}'
- id: kpis - id: kpis
title: Key Performance Indicators (KPIs) title: Key Performance Indicators (KPIs)
type: bullet-list type: bullet-list
template: "- {{kpi}}: {{definition_and_target}}" template: '- {{kpi}}: {{definition_and_target}}'
- id: mvp-scope - id: mvp-scope
title: MVP Scope title: MVP Scope
@@ -1203,14 +1203,14 @@ sections:
- id: core-features - id: core-features
title: Core Features (Must Have) title: Core Features (Must Have)
type: bullet-list type: bullet-list
template: "- **{{feature}}:** {{description_and_rationale}}" template: '- **{{feature}}:** {{description_and_rationale}}'
- id: out-of-scope - id: out-of-scope
title: Out of Scope for MVP title: Out of Scope for MVP
type: bullet-list type: bullet-list
template: "- {{feature_or_capability}}" template: '- {{feature_or_capability}}'
- id: mvp-success-criteria - id: mvp-success-criteria
title: MVP Success Criteria title: MVP Success Criteria
template: "{{mvp_success_definition}}" template: '{{mvp_success_definition}}'
- id: post-mvp-vision - id: post-mvp-vision
title: Post-MVP Vision title: Post-MVP Vision
@@ -1218,13 +1218,13 @@ sections:
sections: sections:
- id: phase-2-features - id: phase-2-features
title: Phase 2 Features title: Phase 2 Features
template: "{{next_priority_features}}" template: '{{next_priority_features}}'
- id: long-term-vision - id: long-term-vision
title: Long-term Vision title: Long-term Vision
template: "{{one_two_year_vision}}" template: '{{one_two_year_vision}}'
- id: expansion-opportunities - id: expansion-opportunities
title: Expansion Opportunities title: Expansion Opportunities
template: "{{potential_expansions}}" template: '{{potential_expansions}}'
- id: technical-considerations - id: technical-considerations
title: Technical Considerations title: Technical Considerations
@@ -1265,7 +1265,7 @@ sections:
- id: key-assumptions - id: key-assumptions
title: Key Assumptions title: Key Assumptions
type: bullet-list type: bullet-list
template: "- {{assumption}}" template: '- {{assumption}}'
- id: risks-questions - id: risks-questions
title: Risks & Open Questions title: Risks & Open Questions
@@ -1274,15 +1274,15 @@ sections:
- id: key-risks - id: key-risks
title: Key Risks title: Key Risks
type: bullet-list type: bullet-list
template: "- **{{risk}}:** {{description_and_impact}}" template: '- **{{risk}}:** {{description_and_impact}}'
- id: open-questions - id: open-questions
title: Open Questions title: Open Questions
type: bullet-list type: bullet-list
template: "- {{question}}" template: '- {{question}}'
- id: research-areas - id: research-areas
title: Areas Needing Further Research title: Areas Needing Further Research
type: bullet-list type: bullet-list
template: "- {{research_topic}}" template: '- {{research_topic}}'
- id: appendices - id: appendices
title: Appendices title: Appendices
@@ -1299,10 +1299,10 @@ sections:
- id: stakeholder-input - id: stakeholder-input
title: B. Stakeholder Input title: B. Stakeholder Input
condition: Has stakeholder feedback condition: Has stakeholder feedback
template: "{{stakeholder_feedback}}" template: '{{stakeholder_feedback}}'
- id: references - id: references
title: C. References title: C. References
template: "{{relevant_links_and_docs}}" template: '{{relevant_links_and_docs}}'
- id: next-steps - id: next-steps
title: Next Steps title: Next Steps
@@ -1310,7 +1310,7 @@ sections:
- id: immediate-actions - id: immediate-actions
title: Immediate Actions title: Immediate Actions
type: numbered-list type: numbered-list
template: "{{action_item}}" template: '{{action_item}}'
- id: pm-handoff - id: pm-handoff
title: PM Handoff title: PM Handoff
content: | content: |
@@ -1325,24 +1325,24 @@ template:
output: output:
format: markdown format: markdown
filename: docs/market-research.md filename: docs/market-research.md
title: "Market Research Report: {{project_product_name}}" title: 'Market Research Report: {{project_product_name}}'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
custom_elicitation: custom_elicitation:
title: "Market Research Elicitation Actions" title: 'Market Research Elicitation Actions'
options: options:
- "Expand market sizing calculations with sensitivity analysis" - 'Expand market sizing calculations with sensitivity analysis'
- "Deep dive into a specific customer segment" - 'Deep dive into a specific customer segment'
- "Analyze an emerging market trend in detail" - 'Analyze an emerging market trend in detail'
- "Compare this market to an analogous market" - 'Compare this market to an analogous market'
- "Stress test market assumptions" - 'Stress test market assumptions'
- "Explore adjacent market opportunities" - 'Explore adjacent market opportunities'
- "Challenge market definition and boundaries" - 'Challenge market definition and boundaries'
- "Generate strategic scenarios (best/base/worst case)" - 'Generate strategic scenarios (best/base/worst case)'
- "If only we had considered [X market factor]..." - 'If only we had considered [X market factor]...'
- "Proceed to next section" - 'Proceed to next section'
sections: sections:
- id: executive-summary - id: executive-summary
@@ -1424,7 +1424,7 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: segment - id: segment
title: "Segment {{segment_number}}: {{segment_name}}" title: 'Segment {{segment_number}}: {{segment_name}}'
template: | template: |
- **Description:** {{brief_overview}} - **Description:** {{brief_overview}}
- **Size:** {{number_of_customers_market_value}} - **Size:** {{number_of_customers_market_value}}
@@ -1450,7 +1450,7 @@ sections:
instruction: Map the end-to-end customer experience for primary segments instruction: Map the end-to-end customer experience for primary segments
template: | template: |
For primary customer segment: For primary customer segment:
1. **Awareness:** {{discovery_process}} 1. **Awareness:** {{discovery_process}}
2. **Consideration:** {{evaluation_criteria}} 2. **Consideration:** {{evaluation_criteria}}
3. **Purchase:** {{decision_triggers}} 3. **Purchase:** {{decision_triggers}}
@@ -1493,20 +1493,20 @@ sections:
instruction: Analyze each force with specific evidence and implications instruction: Analyze each force with specific evidence and implications
sections: sections:
- id: supplier-power - id: supplier-power
title: "Supplier Power: {{power_level}}" title: 'Supplier Power: {{power_level}}'
template: "{{analysis_and_implications}}" template: '{{analysis_and_implications}}'
- id: buyer-power - id: buyer-power
title: "Buyer Power: {{power_level}}" title: 'Buyer Power: {{power_level}}'
template: "{{analysis_and_implications}}" template: '{{analysis_and_implications}}'
- id: competitive-rivalry - id: competitive-rivalry
title: "Competitive Rivalry: {{intensity_level}}" title: 'Competitive Rivalry: {{intensity_level}}'
template: "{{analysis_and_implications}}" template: '{{analysis_and_implications}}'
- id: threat-new-entry - id: threat-new-entry
title: "Threat of New Entry: {{threat_level}}" title: 'Threat of New Entry: {{threat_level}}'
template: "{{analysis_and_implications}}" template: '{{analysis_and_implications}}'
- id: threat-substitutes - id: threat-substitutes
title: "Threat of Substitutes: {{threat_level}}" title: 'Threat of Substitutes: {{threat_level}}'
template: "{{analysis_and_implications}}" template: '{{analysis_and_implications}}'
- id: adoption-lifecycle - id: adoption-lifecycle
title: Technology Adoption Lifecycle Stage title: Technology Adoption Lifecycle Stage
instruction: | instruction: |
@@ -1524,7 +1524,7 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: opportunity - id: opportunity
title: "Opportunity {{opportunity_number}}: {{name}}" title: 'Opportunity {{opportunity_number}}: {{name}}'
template: | template: |
- **Description:** {{what_is_the_opportunity}} - **Description:** {{what_is_the_opportunity}}
- **Size/Potential:** {{quantified_potential}} - **Size/Potential:** {{quantified_potential}}
@@ -1580,24 +1580,24 @@ template:
output: output:
format: markdown format: markdown
filename: docs/competitor-analysis.md filename: docs/competitor-analysis.md
title: "Competitive Analysis Report: {{project_product_name}}" title: 'Competitive Analysis Report: {{project_product_name}}'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
custom_elicitation: custom_elicitation:
title: "Competitive Analysis Elicitation Actions" title: 'Competitive Analysis Elicitation Actions'
options: options:
- "Deep dive on a specific competitor's strategy" - "Deep dive on a specific competitor's strategy"
- "Analyze competitive dynamics in a specific segment" - 'Analyze competitive dynamics in a specific segment'
- "War game competitive responses to your moves" - 'War game competitive responses to your moves'
- "Explore partnership vs. competition scenarios" - 'Explore partnership vs. competition scenarios'
- "Stress test differentiation claims" - 'Stress test differentiation claims'
- "Analyze disruption potential (yours or theirs)" - 'Analyze disruption potential (yours or theirs)'
- "Compare to competition in adjacent markets" - 'Compare to competition in adjacent markets'
- "Generate win/loss analysis insights" - 'Generate win/loss analysis insights'
- "If only we had known about [competitor X's plan]..." - "If only we had known about [competitor X's plan]..."
- "Proceed to next section" - 'Proceed to next section'
sections: sections:
- id: executive-summary - id: executive-summary
@@ -1651,7 +1651,7 @@ sections:
title: Competitor Prioritization Matrix title: Competitor Prioritization Matrix
instruction: | instruction: |
Help categorize competitors by market share and strategic threat level Help categorize competitors by market share and strategic threat level
Create a 2x2 matrix: Create a 2x2 matrix:
- Priority 1 (Core Competitors): High Market Share + High Threat - Priority 1 (Core Competitors): High Market Share + High Threat
- Priority 2 (Emerging Threats): Low Market Share + High Threat - Priority 2 (Emerging Threats): Low Market Share + High Threat
@@ -1664,7 +1664,7 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: competitor - id: competitor
title: "{{competitor_name}} - Priority {{priority_level}}" title: '{{competitor_name}} - Priority {{priority_level}}'
sections: sections:
- id: company-overview - id: company-overview
title: Company Overview title: Company Overview
@@ -1696,11 +1696,11 @@ sections:
- id: strengths - id: strengths
title: Strengths title: Strengths
type: bullet-list type: bullet-list
template: "- {{strength}}" template: '- {{strength}}'
- id: weaknesses - id: weaknesses
title: Weaknesses title: Weaknesses
type: bullet-list type: bullet-list
template: "- {{weakness}}" template: '- {{weakness}}'
- id: market-position - id: market-position
title: Market Position & Performance title: Market Position & Performance
template: | template: |
@@ -1716,24 +1716,37 @@ sections:
title: Feature Comparison Matrix title: Feature Comparison Matrix
instruction: Create a detailed comparison table of key features across competitors instruction: Create a detailed comparison table of key features across competitors
type: table 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: rows:
- category: "Core Functionality" - category: 'Core Functionality'
items: items:
- ["Feature A", "{{status}}", "{{status}}", "{{status}}", "{{status}}"] - ['Feature A', '{{status}}', '{{status}}', '{{status}}', '{{status}}']
- ["Feature B", "{{status}}", "{{status}}", "{{status}}", "{{status}}"] - ['Feature B', '{{status}}', '{{status}}', '{{status}}', '{{status}}']
- category: "User Experience" - category: 'User Experience'
items: items:
- ["Mobile App", "{{rating}}", "{{rating}}", "{{rating}}", "{{rating}}"] - ['Mobile App', '{{rating}}', '{{rating}}', '{{rating}}', '{{rating}}']
- ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"] - ['Onboarding Time', '{{time}}', '{{time}}', '{{time}}', '{{time}}']
- category: "Integration & Ecosystem" - category: 'Integration & Ecosystem'
items: items:
- ["API Availability", "{{availability}}", "{{availability}}", "{{availability}}", "{{availability}}"] - [
- ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"] 'API Availability',
- category: "Pricing & Plans" '{{availability}}',
'{{availability}}',
'{{availability}}',
'{{availability}}',
]
- ['Third-party Integrations', '{{number}}', '{{number}}', '{{number}}', '{{number}}']
- category: 'Pricing & Plans'
items: items:
- ["Starting Price", "{{price}}", "{{price}}", "{{price}}", "{{price}}"] - ['Starting Price', '{{price}}', '{{price}}', '{{price}}', '{{price}}']
- ["Free Tier", "{{yes_no}}", "{{yes_no}}", "{{yes_no}}", "{{yes_no}}"] - ['Free Tier', '{{yes_no}}', '{{yes_no}}', '{{yes_no}}', '{{yes_no}}']
- id: swot-comparison - id: swot-comparison
title: SWOT Comparison title: SWOT Comparison
instruction: Create SWOT analysis for your solution vs. top competitors instruction: Create SWOT analysis for your solution vs. top competitors
@@ -1746,7 +1759,7 @@ sections:
- **Opportunities:** {{opportunities}} - **Opportunities:** {{opportunities}}
- **Threats:** {{threats}} - **Threats:** {{threats}}
- id: vs-competitor - id: vs-competitor
title: "vs. {{main_competitor}}" title: 'vs. {{main_competitor}}'
template: | template: |
- **Competitive Advantages:** {{your_advantages}} - **Competitive Advantages:** {{your_advantages}}
- **Competitive Disadvantages:** {{their_advantages}} - **Competitive Disadvantages:** {{their_advantages}}
@@ -1755,7 +1768,7 @@ sections:
title: Positioning Map title: Positioning Map
instruction: | instruction: |
Describe competitor positions on key dimensions Describe competitor positions on key dimensions
Create a positioning description using 2 key dimensions relevant to the market, such as: Create a positioning description using 2 key dimensions relevant to the market, such as:
- Price vs. Features - Price vs. Features
- Ease of Use vs. Power - Ease of Use vs. Power
@@ -1790,7 +1803,7 @@ sections:
title: Blue Ocean Opportunities title: Blue Ocean Opportunities
instruction: | instruction: |
Identify uncontested market spaces Identify uncontested market spaces
List opportunities to create new market space: List opportunities to create new market space:
- Underserved segments - Underserved segments
- Unaddressed use cases - Unaddressed use cases
@@ -1876,7 +1889,7 @@ template:
output: output:
format: markdown format: markdown
filename: docs/brainstorming-session-results.md filename: docs/brainstorming-session-results.md
title: "Brainstorming Session Results" title: 'Brainstorming Session Results'
workflow: workflow:
mode: non-interactive mode: non-interactive
@@ -1894,45 +1907,45 @@ sections:
- id: summary-details - id: summary-details
template: | template: |
**Topic:** {{session_topic}} **Topic:** {{session_topic}}
**Session Goals:** {{stated_goals}} **Session Goals:** {{stated_goals}}
**Techniques Used:** {{techniques_list}} **Techniques Used:** {{techniques_list}}
**Total Ideas Generated:** {{total_ideas}} **Total Ideas Generated:** {{total_ideas}}
- id: key-themes - id: key-themes
title: "Key Themes Identified:" title: 'Key Themes Identified:'
type: bullet-list type: bullet-list
template: "- {{theme}}" template: '- {{theme}}'
- id: technique-sessions - id: technique-sessions
title: Technique Sessions title: Technique Sessions
repeatable: true repeatable: true
sections: sections:
- id: technique - id: technique
title: "{{technique_name}} - {{duration}}" title: '{{technique_name}} - {{duration}}'
sections: sections:
- id: description - id: description
template: "**Description:** {{technique_description}}" template: '**Description:** {{technique_description}}'
- id: ideas-generated - id: ideas-generated
title: "Ideas Generated:" title: 'Ideas Generated:'
type: numbered-list type: numbered-list
template: "{{idea}}" template: '{{idea}}'
- id: insights - id: insights
title: "Insights Discovered:" title: 'Insights Discovered:'
type: bullet-list type: bullet-list
template: "- {{insight}}" template: '- {{insight}}'
- id: connections - id: connections
title: "Notable Connections:" title: 'Notable Connections:'
type: bullet-list type: bullet-list
template: "- {{connection}}" template: '- {{connection}}'
- id: idea-categorization - id: idea-categorization
title: Idea Categorization title: Idea Categorization
sections: sections:
- id: immediate-opportunities - id: immediate-opportunities
title: Immediate Opportunities title: Immediate Opportunities
content: "*Ideas ready to implement now*" content: '*Ideas ready to implement now*'
repeatable: true repeatable: true
type: numbered-list type: numbered-list
template: | template: |
@@ -1942,7 +1955,7 @@ sections:
- Resources needed: {{requirements}} - Resources needed: {{requirements}}
- id: future-innovations - id: future-innovations
title: Future Innovations title: Future Innovations
content: "*Ideas requiring development/research*" content: '*Ideas requiring development/research*'
repeatable: true repeatable: true
type: numbered-list type: numbered-list
template: | template: |
@@ -1952,7 +1965,7 @@ sections:
- Timeline estimate: {{timeline}} - Timeline estimate: {{timeline}}
- id: moonshots - id: moonshots
title: Moonshots title: Moonshots
content: "*Ambitious, transformative concepts*" content: '*Ambitious, transformative concepts*'
repeatable: true repeatable: true
type: numbered-list type: numbered-list
template: | template: |
@@ -1962,9 +1975,9 @@ sections:
- Challenges to overcome: {{challenges}} - Challenges to overcome: {{challenges}}
- id: insights-learnings - id: insights-learnings
title: Insights & Learnings title: Insights & Learnings
content: "*Key realizations from the session*" content: '*Key realizations from the session*'
type: bullet-list type: bullet-list
template: "- {{insight}}: {{description_and_implications}}" template: '- {{insight}}: {{description_and_implications}}'
- id: action-planning - id: action-planning
title: Action Planning title: Action Planning
@@ -1973,21 +1986,21 @@ sections:
title: Top 3 Priority Ideas title: Top 3 Priority Ideas
sections: sections:
- id: priority-1 - id: priority-1
title: "#1 Priority: {{idea_name}}" title: '#1 Priority: {{idea_name}}'
template: | template: |
- Rationale: {{rationale}} - Rationale: {{rationale}}
- Next steps: {{next_steps}} - Next steps: {{next_steps}}
- Resources needed: {{resources}} - Resources needed: {{resources}}
- Timeline: {{timeline}} - Timeline: {{timeline}}
- id: priority-2 - id: priority-2
title: "#2 Priority: {{idea_name}}" title: '#2 Priority: {{idea_name}}'
template: | template: |
- Rationale: {{rationale}} - Rationale: {{rationale}}
- Next steps: {{next_steps}} - Next steps: {{next_steps}}
- Resources needed: {{resources}} - Resources needed: {{resources}}
- Timeline: {{timeline}} - Timeline: {{timeline}}
- id: priority-3 - id: priority-3
title: "#3 Priority: {{idea_name}}" title: '#3 Priority: {{idea_name}}'
template: | template: |
- Rationale: {{rationale}} - Rationale: {{rationale}}
- Next steps: {{next_steps}} - Next steps: {{next_steps}}
@@ -2000,19 +2013,19 @@ sections:
- id: what-worked - id: what-worked
title: What Worked Well title: What Worked Well
type: bullet-list type: bullet-list
template: "- {{aspect}}" template: '- {{aspect}}'
- id: areas-exploration - id: areas-exploration
title: Areas for Further Exploration title: Areas for Further Exploration
type: bullet-list type: bullet-list
template: "- {{area}}: {{reason}}" template: '- {{area}}: {{reason}}'
- id: recommended-techniques - id: recommended-techniques
title: Recommended Follow-up Techniques title: Recommended Follow-up Techniques
type: bullet-list type: bullet-list
template: "- {{technique}}: {{reason}}" template: '- {{technique}}: {{reason}}'
- id: questions-emerged - id: questions-emerged
title: Questions That Emerged title: Questions That Emerged
type: bullet-list type: bullet-list
template: "- {{question}}" template: '- {{question}}'
- id: next-session - id: next-session
title: Next Session Planning title: Next Session Planning
template: | template: |
@@ -2023,7 +2036,7 @@ sections:
- id: footer - id: footer
content: | content: |
--- ---
*Session facilitated using the BMAD-METHOD brainstorming framework* *Session facilitated using the BMAD-METHOD brainstorming framework*
==================== END: .bmad-core/templates/brainstorming-output-tmpl.yaml ==================== ==================== 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`) - **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
- **Cursor**: `@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`) - **Trae**: `@agent-name` (e.g., `@bmad-master`)
- **Roo Code**: Select mode from mode selector (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. - **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -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`) - **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
- **Cursor**: `@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`) - **Trae**: `@agent-name` (e.g., `@bmad-master`)
- **Roo Code**: Select mode from mode selector (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. - **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.

120
dist/agents/pm.txt vendored
View File

@@ -1159,7 +1159,7 @@ template:
output: output:
format: markdown format: markdown
filename: docs/prd.md filename: docs/prd.md
title: "{{project_name}} Product Requirements Document (PRD)" title: '{{project_name}} Product Requirements Document (PRD)'
workflow: workflow:
mode: interactive mode: interactive
@@ -1196,21 +1196,21 @@ sections:
prefix: FR prefix: FR
instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with FR instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with FR
examples: examples:
- "FR6: The Todo List uses AI to detect and warn against potentially duplicate todo items that are worded differently." - 'FR6: The Todo List uses AI to detect and warn against potentially duplicate todo items that are worded differently.'
- id: non-functional - id: non-functional
title: Non Functional title: Non Functional
type: numbered-list type: numbered-list
prefix: NFR prefix: NFR
instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR
examples: examples:
- "NFR1: AWS service usage must aim to stay within free-tier limits where feasible." - 'NFR1: AWS service usage must aim to stay within free-tier limits where feasible.'
- id: ui-goals - id: ui-goals
title: User Interface Design Goals title: User Interface Design Goals
condition: PRD has UX/UI requirements condition: PRD has UX/UI requirements
instruction: | instruction: |
Capture high-level UI/UX vision to guide Design Architect and to inform story creation. Steps: 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 1. Pre-fill all subsections with educated guesses based on project context
2. Present the complete rendered section to user 2. Present the complete rendered section to user
3. Clearly let the user know where assumptions were made 3. Clearly let the user know where assumptions were made
@@ -1229,30 +1229,30 @@ sections:
title: Core Screens and Views title: Core Screens and Views
instruction: From a product perspective, what are the most critical screens or views necessary to deliver the the PRD values and goals? This is meant to be Conceptual High Level to Drive Rough Epic or User Stories instruction: From a product perspective, what are the most critical screens or views necessary to deliver the the PRD values and goals? This is meant to be Conceptual High Level to Drive Rough Epic or User Stories
examples: examples:
- "Login Screen" - 'Login Screen'
- "Main Dashboard" - 'Main Dashboard'
- "Item Detail Page" - 'Item Detail Page'
- "Settings Page" - 'Settings Page'
- id: accessibility - id: accessibility
title: "Accessibility: {None|WCAG AA|WCAG AAA|Custom Requirements}" title: 'Accessibility: {None|WCAG AA|WCAG AAA|Custom Requirements}'
- id: branding - id: branding
title: Branding title: Branding
instruction: Any known branding elements or style guides that must be incorporated? instruction: Any known branding elements or style guides that must be incorporated?
examples: examples:
- "Replicate the look and feel of early 1900s black and white cinema, including animated effects replicating film damage or projector glitches during page or state transitions." - 'Replicate the look and feel of early 1900s black and white cinema, including animated effects replicating film damage or projector glitches during page or state transitions.'
- "Attached is the full color pallet and tokens for our corporate branding." - 'Attached is the full color pallet and tokens for our corporate branding.'
- id: target-platforms - id: target-platforms
title: "Target Device and Platforms: {Web Responsive|Mobile Only|Desktop Only|Cross-Platform}" title: 'Target Device and Platforms: {Web Responsive|Mobile Only|Desktop Only|Cross-Platform}'
examples: examples:
- "Web Responsive, and all mobile platforms" - 'Web Responsive, and all mobile platforms'
- "iPhone Only" - 'iPhone Only'
- "ASCII Windows Desktop" - 'ASCII Windows Desktop'
- id: technical-assumptions - id: technical-assumptions
title: Technical Assumptions title: Technical Assumptions
instruction: | instruction: |
Gather technical decisions that will guide the Architect. Steps: 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 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 2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
3. For unknowns, offer guidance based on project goals and MVP scope 3. For unknowns, offer guidance based on project goals and MVP scope
@@ -1265,13 +1265,13 @@ sections:
testing: [Unit Only, Unit + Integration, Full Testing Pyramid] testing: [Unit Only, Unit + Integration, Full Testing Pyramid]
sections: sections:
- id: repository-structure - id: repository-structure
title: "Repository Structure: {Monorepo|Polyrepo|Multi-repo}" title: 'Repository Structure: {Monorepo|Polyrepo|Multi-repo}'
- id: service-architecture - id: service-architecture
title: Service Architecture title: Service Architecture
instruction: "CRITICAL DECISION - Document the high-level service architecture (e.g., Monolith, Microservices, Serverless functions within a Monorepo)." instruction: 'CRITICAL DECISION - Document the high-level service architecture (e.g., Monolith, Microservices, Serverless functions within a Monorepo).'
- id: testing-requirements - id: testing-requirements
title: Testing Requirements title: Testing Requirements
instruction: "CRITICAL DECISION - Document the testing requirements, unit only, integration, e2e, manual, need for manual testing convenience methods)." instruction: 'CRITICAL DECISION - Document the testing requirements, unit only, integration, e2e, manual, need for manual testing convenience methods).'
- id: additional-assumptions - id: additional-assumptions
title: Additional Technical Assumptions and Requests title: Additional Technical Assumptions and Requests
instruction: Throughout the entire process of drafting this document, if any other technical assumptions are raised or discovered appropriate for the architect, add them here as additional bulleted items instruction: Throughout the entire process of drafting this document, if any other technical assumptions are raised or discovered appropriate for the architect, add them here as additional bulleted items
@@ -1280,9 +1280,9 @@ sections:
title: Epic List title: Epic List
instruction: | 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. 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: 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 - 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! - 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 - Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
@@ -1291,21 +1291,21 @@ sections:
- Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning. - Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning.
elicit: true elicit: true
examples: examples:
- "Epic 1: Foundation & Core Infrastructure: Establish project setup, authentication, and basic user management" - 'Epic 1: Foundation & Core Infrastructure: Establish project setup, authentication, and basic user management'
- "Epic 2: Core Business Entities: Create and manage primary domain objects with CRUD operations" - 'Epic 2: Core Business Entities: Create and manage primary domain objects with CRUD operations'
- "Epic 3: User Workflows & Interactions: Enable key user journeys and business processes" - 'Epic 3: User Workflows & Interactions: Enable key user journeys and business processes'
- "Epic 4: Reporting & Analytics: Provide insights and data visualization for users" - 'Epic 4: Reporting & Analytics: Provide insights and data visualization for users'
- id: epic-details - id: epic-details
title: Epic {{epic_number}} {{epic_title}} title: Epic {{epic_number}} {{epic_title}}
repeatable: true repeatable: true
instruction: | instruction: |
After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit. 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). For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
CRITICAL STORY SEQUENCING REQUIREMENTS: CRITICAL STORY SEQUENCING REQUIREMENTS:
- Stories within each epic MUST be logically sequential - 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 - 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 - No story should depend on work from a later story or epic
@@ -1316,7 +1316,7 @@ sections:
- Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained - Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained
- If a story seems complex, break it down further as long as it can deliver a vertical slice - If a story seems complex, break it down further as long as it can deliver a vertical slice
elicit: true elicit: true
template: "{{epic_goal}}" template: '{{epic_goal}}'
sections: sections:
- id: story - id: story
title: Story {{epic_number}}.{{story_number}} {{story_title}} title: Story {{epic_number}}.{{story_number}} {{story_title}}
@@ -1329,11 +1329,11 @@ sections:
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
item_template: "{{criterion_number}}: {{criteria}}" item_template: '{{criterion_number}}: {{criteria}}'
repeatable: true repeatable: true
instruction: | instruction: |
Define clear, comprehensive, and testable acceptance criteria that: Define clear, comprehensive, and testable acceptance criteria that:
- Precisely define what "done" means from a functional perspective - Precisely define what "done" means from a functional perspective
- Are unambiguous and serve as basis for verification - Are unambiguous and serve as basis for verification
- Include any critical non-functional requirements from the PRD - Include any critical non-functional requirements from the PRD
@@ -1364,7 +1364,7 @@ template:
output: output:
format: markdown format: markdown
filename: docs/prd.md filename: docs/prd.md
title: "{{project_name}} Brownfield Enhancement PRD" title: '{{project_name}} Brownfield Enhancement PRD'
workflow: workflow:
mode: interactive mode: interactive
@@ -1375,19 +1375,19 @@ sections:
title: Intro Project Analysis and Context title: Intro Project Analysis and Context
instruction: | instruction: |
IMPORTANT - SCOPE ASSESSMENT REQUIRED: IMPORTANT - SCOPE ASSESSMENT REQUIRED:
This PRD is for SIGNIFICANT enhancements to existing projects that require comprehensive planning and multiple stories. Before proceeding: 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." 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. 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. 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. 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?" 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. Do not proceed with any recommendations until the user has validated your understanding of the existing system.
sections: sections:
- id: existing-project-overview - id: existing-project-overview
@@ -1413,7 +1413,7 @@ sections:
- Note: "Document-project analysis available - using existing technical documentation" - Note: "Document-project analysis available - using existing technical documentation"
- List key documents created by document-project - List key documents created by document-project
- Skip the missing documentation check below - Skip the missing documentation check below
Otherwise, check for existing documentation: Otherwise, check for existing documentation:
sections: sections:
- id: available-docs - id: available-docs
@@ -1427,7 +1427,7 @@ sections:
- External API Documentation [[LLM: If from document-project, check ✓]] - External API Documentation [[LLM: If from document-project, check ✓]]
- UX/UI Guidelines [[LLM: May not be in document-project]] - UX/UI Guidelines [[LLM: May not be in document-project]]
- Technical Debt Documentation [[LLM: If from document-project, check ✓]] - Technical Debt Documentation [[LLM: If from document-project, check ✓]]
- "Other: {{other_docs}}" - 'Other: {{other_docs}}'
instruction: | instruction: |
- If document-project was already run: "Using existing project analysis from document-project output." - If document-project was already run: "Using existing project analysis from document-project output."
- If critical documentation is missing and no document-project: "I recommend running the document-project task first..." - If critical documentation is missing and no document-project: "I recommend running the document-project task first..."
@@ -1447,7 +1447,7 @@ sections:
- UI/UX Overhaul - UI/UX Overhaul
- Technology Stack Upgrade - Technology Stack Upgrade
- Bug Fix and Stability Improvements - Bug Fix and Stability Improvements
- "Other: {{other_type}}" - 'Other: {{other_type}}'
- id: enhancement-description - id: enhancement-description
title: Enhancement Description title: Enhancement Description
instruction: 2-3 sentences describing what the user wants to add or change instruction: 2-3 sentences describing what the user wants to add or change
@@ -1488,29 +1488,29 @@ sections:
prefix: FR prefix: FR
instruction: Each Requirement will be a bullet markdown with identifier starting with FR instruction: Each Requirement will be a bullet markdown with identifier starting with FR
examples: examples:
- "FR1: The existing Todo List will integrate with the new AI duplicate detection service without breaking current functionality." - 'FR1: The existing Todo List will integrate with the new AI duplicate detection service without breaking current functionality.'
- id: non-functional - id: non-functional
title: Non Functional title: Non Functional
type: numbered-list type: numbered-list
prefix: NFR prefix: NFR
instruction: Each Requirement will be a bullet markdown with identifier starting with NFR. Include constraints from existing system instruction: Each Requirement will be a bullet markdown with identifier starting with NFR. Include constraints from existing system
examples: examples:
- "NFR1: Enhancement must maintain existing performance characteristics and not exceed current memory usage by more than 20%." - 'NFR1: Enhancement must maintain existing performance characteristics and not exceed current memory usage by more than 20%.'
- id: compatibility - id: compatibility
title: Compatibility Requirements title: Compatibility Requirements
instruction: Critical for brownfield - what must remain compatible instruction: Critical for brownfield - what must remain compatible
type: numbered-list type: numbered-list
prefix: CR prefix: CR
template: "{{requirement}}: {{description}}" template: '{{requirement}}: {{description}}'
items: items:
- id: cr1 - id: cr1
template: "CR1: {{existing_api_compatibility}}" template: 'CR1: {{existing_api_compatibility}}'
- id: cr2 - id: cr2
template: "CR2: {{database_schema_compatibility}}" template: 'CR2: {{database_schema_compatibility}}'
- id: cr3 - id: cr3
template: "CR3: {{ui_ux_consistency}}" template: 'CR3: {{ui_ux_consistency}}'
- id: cr4 - id: cr4
template: "CR4: {{integration_compatibility}}" template: 'CR4: {{integration_compatibility}}'
- id: ui-enhancement-goals - id: ui-enhancement-goals
title: User Interface Enhancement Goals title: User Interface Enhancement Goals
@@ -1537,7 +1537,7 @@ sections:
If document-project output available: If document-project output available:
- Extract from "Actual Tech Stack" table in High Level Architecture section - Extract from "Actual Tech Stack" table in High Level Architecture section
- Include version numbers and any noted constraints - Include version numbers and any noted constraints
Otherwise, document the current technology stack: Otherwise, document the current technology stack:
template: | template: |
**Languages**: {{languages}} **Languages**: {{languages}}
@@ -1576,7 +1576,7 @@ sections:
- Reference "Technical Debt and Known Issues" section - Reference "Technical Debt and Known Issues" section
- Include "Workarounds and Gotchas" that might impact enhancement - Include "Workarounds and Gotchas" that might impact enhancement
- Note any identified constraints from "Critical Technical Debt" - Note any identified constraints from "Critical Technical Debt"
Build risk assessment incorporating existing known issues: Build risk assessment incorporating existing known issues:
template: | template: |
**Technical Risks**: {{technical_risks}} **Technical Risks**: {{technical_risks}}
@@ -1593,13 +1593,13 @@ sections:
- id: epic-approach - id: epic-approach
title: Epic Approach title: Epic Approach
instruction: Explain the rationale for epic structure - typically single epic for brownfield unless multiple unrelated features instruction: Explain the rationale for epic structure - typically single epic for brownfield unless multiple unrelated features
template: "**Epic Structure Decision**: {{epic_decision}} with rationale" template: '**Epic Structure Decision**: {{epic_decision}} with rationale'
- id: epic-details - id: epic-details
title: "Epic 1: {{enhancement_title}}" title: 'Epic 1: {{enhancement_title}}'
instruction: | instruction: |
Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality Comprehensive epic that delivers the brownfield enhancement while maintaining existing functionality
CRITICAL STORY SEQUENCING FOR BROWNFIELD: CRITICAL STORY SEQUENCING FOR BROWNFIELD:
- Stories must ensure existing functionality remains intact - Stories must ensure existing functionality remains intact
- Each story should include verification that existing features still work - Each story should include verification that existing features still work
@@ -1612,11 +1612,11 @@ sections:
- Each story must deliver value while maintaining system integrity - Each story must deliver value while maintaining system integrity
template: | template: |
**Epic Goal**: {{epic_goal}} **Epic Goal**: {{epic_goal}}
**Integration Requirements**: {{integration_requirements}} **Integration Requirements**: {{integration_requirements}}
sections: sections:
- id: story - id: story
title: "Story 1.{{story_number}} {{story_title}}" title: 'Story 1.{{story_number}} {{story_title}}'
repeatable: true repeatable: true
template: | template: |
As a {{user_type}}, As a {{user_type}},
@@ -1627,16 +1627,16 @@ sections:
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
instruction: Define criteria that include both new functionality and existing system integrity instruction: Define criteria that include both new functionality and existing system integrity
item_template: "{{criterion_number}}: {{criteria}}" item_template: '{{criterion_number}}: {{criteria}}'
- id: integration-verification - id: integration-verification
title: Integration Verification title: Integration Verification
instruction: Specific verification steps to ensure existing functionality remains intact instruction: Specific verification steps to ensure existing functionality remains intact
type: numbered-list type: numbered-list
prefix: IV prefix: IV
items: items:
- template: "IV1: {{existing_functionality_verification}}" - template: 'IV1: {{existing_functionality_verification}}'
- template: "IV2: {{integration_point_verification}}" - template: 'IV2: {{integration_point_verification}}'
- template: "IV3: {{performance_impact_verification}}" - template: 'IV3: {{performance_impact_verification}}'
==================== END: .bmad-core/templates/brownfield-prd-tmpl.yaml ==================== ==================== END: .bmad-core/templates/brownfield-prd-tmpl.yaml ====================
==================== START: .bmad-core/checklists/pm-checklist.md ==================== ==================== START: .bmad-core/checklists/pm-checklist.md ====================

26
dist/agents/po.txt vendored
View File

@@ -593,14 +593,14 @@ template:
output: output:
format: markdown format: markdown
filename: docs/stories/{{epic_num}}.{{story_num}}.{{story_title_short}}.md filename: docs/stories/{{epic_num}}.{{story_num}}.{{story_title_short}}.md
title: "Story {{epic_num}}.{{story_num}}: {{story_title_short}}" title: 'Story {{epic_num}}.{{story_num}}: {{story_title_short}}'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
agent_config: agent_config:
editable_sections: editable_sections:
- Status - Status
- Story - Story
- Acceptance Criteria - Acceptance Criteria
@@ -617,7 +617,7 @@ sections:
instruction: Select the current status of the story instruction: Select the current status of the story
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: story - id: story
title: Story title: Story
type: template-text type: template-text
@@ -629,7 +629,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
@@ -637,7 +637,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: tasks-subtasks - id: tasks-subtasks
title: Tasks / Subtasks title: Tasks / Subtasks
type: bullet-list type: bullet-list
@@ -654,7 +654,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: dev-notes - id: dev-notes
title: Dev Notes title: Dev Notes
instruction: | instruction: |
@@ -678,7 +678,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: change-log - id: change-log
title: Change Log title: Change Log
type: table type: table
@@ -686,7 +686,7 @@ sections:
instruction: Track changes made to this story document instruction: Track changes made to this story document
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent, qa-agent] editors: [scrum-master, dev-agent, qa-agent]
- id: dev-agent-record - id: dev-agent-record
title: Dev Agent Record title: Dev Agent Record
instruction: This section is populated by the development agent during implementation instruction: This section is populated by the development agent during implementation
@@ -695,29 +695,29 @@ sections:
sections: sections:
- id: agent-model - id: agent-model
title: Agent Model Used title: Agent Model Used
template: "{{agent_model_name_version}}" template: '{{agent_model_name_version}}'
instruction: Record the specific AI agent model and version used for development instruction: Record the specific AI agent model and version used for development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: debug-log-references - id: debug-log-references
title: Debug Log References title: Debug Log References
instruction: Reference any debug logs or traces generated during development instruction: Reference any debug logs or traces generated during development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: completion-notes - id: completion-notes
title: Completion Notes List title: Completion Notes List
instruction: Notes about the completion of tasks and any issues encountered instruction: Notes about the completion of tasks and any issues encountered
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: file-list - id: file-list
title: File List title: File List
instruction: List all files created, modified, or affected during story implementation instruction: List all files created, modified, or affected during story implementation
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: qa-results - id: qa-results
title: QA Results title: QA Results
instruction: Results from QA Agent QA review of the completed story implementation instruction: Results from QA Agent QA review of the completed story implementation

895
dist/agents/qa.txt vendored

File diff suppressed because it is too large Load Diff

26
dist/agents/sm.txt vendored
View File

@@ -369,14 +369,14 @@ template:
output: output:
format: markdown format: markdown
filename: docs/stories/{{epic_num}}.{{story_num}}.{{story_title_short}}.md filename: docs/stories/{{epic_num}}.{{story_num}}.{{story_title_short}}.md
title: "Story {{epic_num}}.{{story_num}}: {{story_title_short}}" title: 'Story {{epic_num}}.{{story_num}}: {{story_title_short}}'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
agent_config: agent_config:
editable_sections: editable_sections:
- Status - Status
- Story - Story
- Acceptance Criteria - Acceptance Criteria
@@ -393,7 +393,7 @@ sections:
instruction: Select the current status of the story instruction: Select the current status of the story
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: story - id: story
title: Story title: Story
type: template-text type: template-text
@@ -405,7 +405,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
type: numbered-list type: numbered-list
@@ -413,7 +413,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: tasks-subtasks - id: tasks-subtasks
title: Tasks / Subtasks title: Tasks / Subtasks
type: bullet-list type: bullet-list
@@ -430,7 +430,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent] editors: [scrum-master, dev-agent]
- id: dev-notes - id: dev-notes
title: Dev Notes title: Dev Notes
instruction: | instruction: |
@@ -454,7 +454,7 @@ sections:
elicit: true elicit: true
owner: scrum-master owner: scrum-master
editors: [scrum-master] editors: [scrum-master]
- id: change-log - id: change-log
title: Change Log title: Change Log
type: table type: table
@@ -462,7 +462,7 @@ sections:
instruction: Track changes made to this story document instruction: Track changes made to this story document
owner: scrum-master owner: scrum-master
editors: [scrum-master, dev-agent, qa-agent] editors: [scrum-master, dev-agent, qa-agent]
- id: dev-agent-record - id: dev-agent-record
title: Dev Agent Record title: Dev Agent Record
instruction: This section is populated by the development agent during implementation instruction: This section is populated by the development agent during implementation
@@ -471,29 +471,29 @@ sections:
sections: sections:
- id: agent-model - id: agent-model
title: Agent Model Used title: Agent Model Used
template: "{{agent_model_name_version}}" template: '{{agent_model_name_version}}'
instruction: Record the specific AI agent model and version used for development instruction: Record the specific AI agent model and version used for development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: debug-log-references - id: debug-log-references
title: Debug Log References title: Debug Log References
instruction: Reference any debug logs or traces generated during development instruction: Reference any debug logs or traces generated during development
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: completion-notes - id: completion-notes
title: Completion Notes List title: Completion Notes List
instruction: Notes about the completion of tasks and any issues encountered instruction: Notes about the completion of tasks and any issues encountered
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: file-list - id: file-list
title: File List title: File List
instruction: List all files created, modified, or affected during story implementation instruction: List all files created, modified, or affected during story implementation
owner: dev-agent owner: dev-agent
editors: [dev-agent] editors: [dev-agent]
- id: qa-results - id: qa-results
title: QA Results title: QA Results
instruction: Results from QA Agent QA review of the completed story implementation instruction: Results from QA Agent QA review of the completed story implementation

View File

@@ -343,7 +343,7 @@ template:
output: output:
format: markdown format: markdown
filename: docs/front-end-spec.md filename: docs/front-end-spec.md
title: "{{project_name}} UI/UX Specification" title: '{{project_name}} UI/UX Specification'
workflow: workflow:
mode: interactive mode: interactive
@@ -354,7 +354,7 @@ sections:
title: Introduction title: Introduction
instruction: | 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. 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. Establish the document's purpose and scope. Keep the content below but ensure project name is properly substituted.
content: | 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. 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 title: Overall UX Goals & Principles
instruction: | instruction: |
Work with the user to establish and document the following. If not already defined, facilitate a discussion to determine: 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 1. Target User Personas - elicit details or confirm existing ones from PRD
2. Key Usability Goals - understand what success looks like for users 2. Key Usability Goals - understand what success looks like for users
3. Core Design Principles - establish 3-5 guiding principles 3. Core Design Principles - establish 3-5 guiding principles
@@ -371,29 +371,29 @@ sections:
sections: sections:
- id: user-personas - id: user-personas
title: Target User Personas title: Target User Personas
template: "{{persona_descriptions}}" template: '{{persona_descriptions}}'
examples: examples:
- "**Power User:** Technical professionals who need advanced features and efficiency" - '**Power User:** Technical professionals who need advanced features and efficiency'
- "**Casual User:** Occasional users who prioritize ease of use and clear guidance" - '**Casual User:** Occasional users who prioritize ease of use and clear guidance'
- "**Administrator:** System managers who need control and oversight capabilities" - '**Administrator:** System managers who need control and oversight capabilities'
- id: usability-goals - id: usability-goals
title: Usability Goals title: Usability Goals
template: "{{usability_goals}}" template: '{{usability_goals}}'
examples: examples:
- "Ease of learning: New users can complete core tasks within 5 minutes" - 'Ease of learning: New users can complete core tasks within 5 minutes'
- "Efficiency of use: Power users can complete frequent tasks with minimal clicks" - 'Efficiency of use: Power users can complete frequent tasks with minimal clicks'
- "Error prevention: Clear validation and confirmation for destructive actions" - 'Error prevention: Clear validation and confirmation for destructive actions'
- "Memorability: Infrequent users can return without relearning" - 'Memorability: Infrequent users can return without relearning'
- id: design-principles - id: design-principles
title: Design Principles title: Design Principles
template: "{{design_principles}}" template: '{{design_principles}}'
type: numbered-list type: numbered-list
examples: examples:
- "**Clarity over cleverness** - Prioritize clear communication over aesthetic innovation" - '**Clarity over cleverness** - Prioritize clear communication over aesthetic innovation'
- "**Progressive disclosure** - Show only what's needed, when it's needed" - "**Progressive disclosure** - Show only what's needed, when it's needed"
- "**Consistent patterns** - Use familiar UI patterns throughout the application" - '**Consistent patterns** - Use familiar UI patterns throughout the application'
- "**Immediate feedback** - Every action should have a clear, immediate response" - '**Immediate feedback** - Every action should have a clear, immediate response'
- "**Accessible by default** - Design for all users from the start" - '**Accessible by default** - Design for all users from the start'
- id: changelog - id: changelog
title: Change Log title: Change Log
type: table type: table
@@ -404,7 +404,7 @@ sections:
title: Information Architecture (IA) title: Information Architecture (IA)
instruction: | instruction: |
Collaborate with the user to create a comprehensive information architecture: Collaborate with the user to create a comprehensive information architecture:
1. Build a Site Map or Screen Inventory showing all major areas 1. Build a Site Map or Screen Inventory showing all major areas
2. Define the Navigation Structure (primary, secondary, breadcrumbs) 2. Define the Navigation Structure (primary, secondary, breadcrumbs)
3. Use Mermaid diagrams for visual representation 3. Use Mermaid diagrams for visual representation
@@ -415,7 +415,7 @@ sections:
title: Site Map / Screen Inventory title: Site Map / Screen Inventory
type: mermaid type: mermaid
mermaid_type: graph mermaid_type: graph
template: "{{sitemap_diagram}}" template: '{{sitemap_diagram}}'
examples: examples:
- | - |
graph TD graph TD
@@ -434,46 +434,46 @@ sections:
title: Navigation Structure title: Navigation Structure
template: | template: |
**Primary Navigation:** {{primary_nav_description}} **Primary Navigation:** {{primary_nav_description}}
**Secondary Navigation:** {{secondary_nav_description}} **Secondary Navigation:** {{secondary_nav_description}}
**Breadcrumb Strategy:** {{breadcrumb_strategy}} **Breadcrumb Strategy:** {{breadcrumb_strategy}}
- id: user-flows - id: user-flows
title: User Flows title: User Flows
instruction: | instruction: |
For each critical user task identified in the PRD: For each critical user task identified in the PRD:
1. Define the user's goal clearly 1. Define the user's goal clearly
2. Map out all steps including decision points 2. Map out all steps including decision points
3. Consider edge cases and error states 3. Consider edge cases and error states
4. Use Mermaid flow diagrams for clarity 4. Use Mermaid flow diagrams for clarity
5. Link to external tools (Figma/Miro) if detailed flows exist there 5. Link to external tools (Figma/Miro) if detailed flows exist there
Create subsections for each major flow. Create subsections for each major flow.
elicit: true elicit: true
repeatable: true repeatable: true
sections: sections:
- id: flow - id: flow
title: "{{flow_name}}" title: '{{flow_name}}'
template: | template: |
**User Goal:** {{flow_goal}} **User Goal:** {{flow_goal}}
**Entry Points:** {{entry_points}} **Entry Points:** {{entry_points}}
**Success Criteria:** {{success_criteria}} **Success Criteria:** {{success_criteria}}
sections: sections:
- id: flow-diagram - id: flow-diagram
title: Flow Diagram title: Flow Diagram
type: mermaid type: mermaid
mermaid_type: graph mermaid_type: graph
template: "{{flow_diagram}}" template: '{{flow_diagram}}'
- id: edge-cases - id: edge-cases
title: "Edge Cases & Error Handling:" title: 'Edge Cases & Error Handling:'
type: bullet-list type: bullet-list
template: "- {{edge_case}}" template: '- {{edge_case}}'
- id: notes - id: notes
template: "**Notes:** {{flow_notes}}" template: '**Notes:** {{flow_notes}}'
- id: wireframes-mockups - id: wireframes-mockups
title: Wireframes & Mockups title: Wireframes & Mockups
@@ -482,23 +482,23 @@ sections:
elicit: true elicit: true
sections: sections:
- id: design-files - id: design-files
template: "**Primary Design Files:** {{design_tool_link}}" template: '**Primary Design Files:** {{design_tool_link}}'
- id: key-screen-layouts - id: key-screen-layouts
title: Key Screen Layouts title: Key Screen Layouts
repeatable: true repeatable: true
sections: sections:
- id: screen - id: screen
title: "{{screen_name}}" title: '{{screen_name}}'
template: | template: |
**Purpose:** {{screen_purpose}} **Purpose:** {{screen_purpose}}
**Key Elements:** **Key Elements:**
- {{element_1}} - {{element_1}}
- {{element_2}} - {{element_2}}
- {{element_3}} - {{element_3}}
**Interaction Notes:** {{interaction_notes}} **Interaction Notes:** {{interaction_notes}}
**Design File Reference:** {{specific_frame_link}} **Design File Reference:** {{specific_frame_link}}
- id: component-library - id: component-library
@@ -508,20 +508,20 @@ sections:
elicit: true elicit: true
sections: sections:
- id: design-system-approach - id: design-system-approach
template: "**Design System Approach:** {{design_system_approach}}" template: '**Design System Approach:** {{design_system_approach}}'
- id: core-components - id: core-components
title: Core Components title: Core Components
repeatable: true repeatable: true
sections: sections:
- id: component - id: component
title: "{{component_name}}" title: '{{component_name}}'
template: | template: |
**Purpose:** {{component_purpose}} **Purpose:** {{component_purpose}}
**Variants:** {{component_variants}} **Variants:** {{component_variants}}
**States:** {{component_states}} **States:** {{component_states}}
**Usage Guidelines:** {{usage_guidelines}} **Usage Guidelines:** {{usage_guidelines}}
- id: branding-style - id: branding-style
@@ -531,19 +531,19 @@ sections:
sections: sections:
- id: visual-identity - id: visual-identity
title: Visual Identity title: Visual Identity
template: "**Brand Guidelines:** {{brand_guidelines_link}}" template: '**Brand Guidelines:** {{brand_guidelines_link}}'
- id: color-palette - id: color-palette
title: Color Palette title: Color Palette
type: table type: table
columns: ["Color Type", "Hex Code", "Usage"] columns: ['Color Type', 'Hex Code', 'Usage']
rows: rows:
- ["Primary", "{{primary_color}}", "{{primary_usage}}"] - ['Primary', '{{primary_color}}', '{{primary_usage}}']
- ["Secondary", "{{secondary_color}}", "{{secondary_usage}}"] - ['Secondary', '{{secondary_color}}', '{{secondary_usage}}']
- ["Accent", "{{accent_color}}", "{{accent_usage}}"] - ['Accent', '{{accent_color}}', '{{accent_usage}}']
- ["Success", "{{success_color}}", "Positive feedback, confirmations"] - ['Success', '{{success_color}}', 'Positive feedback, confirmations']
- ["Warning", "{{warning_color}}", "Cautions, important notices"] - ['Warning', '{{warning_color}}', 'Cautions, important notices']
- ["Error", "{{error_color}}", "Errors, destructive actions"] - ['Error', '{{error_color}}', 'Errors, destructive actions']
- ["Neutral", "{{neutral_colors}}", "Text, borders, backgrounds"] - ['Neutral', '{{neutral_colors}}', 'Text, borders, backgrounds']
- id: typography - id: typography
title: Typography title: Typography
sections: sections:
@@ -556,24 +556,24 @@ sections:
- id: type-scale - id: type-scale
title: Type Scale title: Type Scale
type: table type: table
columns: ["Element", "Size", "Weight", "Line Height"] columns: ['Element', 'Size', 'Weight', 'Line Height']
rows: rows:
- ["H1", "{{h1_size}}", "{{h1_weight}}", "{{h1_line}}"] - ['H1', '{{h1_size}}', '{{h1_weight}}', '{{h1_line}}']
- ["H2", "{{h2_size}}", "{{h2_weight}}", "{{h2_line}}"] - ['H2', '{{h2_size}}', '{{h2_weight}}', '{{h2_line}}']
- ["H3", "{{h3_size}}", "{{h3_weight}}", "{{h3_line}}"] - ['H3', '{{h3_size}}', '{{h3_weight}}', '{{h3_line}}']
- ["Body", "{{body_size}}", "{{body_weight}}", "{{body_line}}"] - ['Body', '{{body_size}}', '{{body_weight}}', '{{body_line}}']
- ["Small", "{{small_size}}", "{{small_weight}}", "{{small_line}}"] - ['Small', '{{small_size}}', '{{small_weight}}', '{{small_line}}']
- id: iconography - id: iconography
title: Iconography title: Iconography
template: | template: |
**Icon Library:** {{icon_library}} **Icon Library:** {{icon_library}}
**Usage Guidelines:** {{icon_guidelines}} **Usage Guidelines:** {{icon_guidelines}}
- id: spacing-layout - id: spacing-layout
title: Spacing & Layout title: Spacing & Layout
template: | template: |
**Grid System:** {{grid_system}} **Grid System:** {{grid_system}}
**Spacing Scale:** {{spacing_scale}} **Spacing Scale:** {{spacing_scale}}
- id: accessibility - id: accessibility
@@ -583,7 +583,7 @@ sections:
sections: sections:
- id: compliance-target - id: compliance-target
title: Compliance Target title: Compliance Target
template: "**Standard:** {{compliance_standard}}" template: '**Standard:** {{compliance_standard}}'
- id: key-requirements - id: key-requirements
title: Key Requirements title: Key Requirements
template: | template: |
@@ -591,19 +591,19 @@ sections:
- Color contrast ratios: {{contrast_requirements}} - Color contrast ratios: {{contrast_requirements}}
- Focus indicators: {{focus_requirements}} - Focus indicators: {{focus_requirements}}
- Text sizing: {{text_requirements}} - Text sizing: {{text_requirements}}
**Interaction:** **Interaction:**
- Keyboard navigation: {{keyboard_requirements}} - Keyboard navigation: {{keyboard_requirements}}
- Screen reader support: {{screen_reader_requirements}} - Screen reader support: {{screen_reader_requirements}}
- Touch targets: {{touch_requirements}} - Touch targets: {{touch_requirements}}
**Content:** **Content:**
- Alternative text: {{alt_text_requirements}} - Alternative text: {{alt_text_requirements}}
- Heading structure: {{heading_requirements}} - Heading structure: {{heading_requirements}}
- Form labels: {{form_requirements}} - Form labels: {{form_requirements}}
- id: testing-strategy - id: testing-strategy
title: Testing Strategy title: Testing Strategy
template: "{{accessibility_testing}}" template: '{{accessibility_testing}}'
- id: responsiveness - id: responsiveness
title: Responsiveness Strategy title: Responsiveness Strategy
@@ -613,21 +613,21 @@ sections:
- id: breakpoints - id: breakpoints
title: Breakpoints title: Breakpoints
type: table type: table
columns: ["Breakpoint", "Min Width", "Max Width", "Target Devices"] columns: ['Breakpoint', 'Min Width', 'Max Width', 'Target Devices']
rows: rows:
- ["Mobile", "{{mobile_min}}", "{{mobile_max}}", "{{mobile_devices}}"] - ['Mobile', '{{mobile_min}}', '{{mobile_max}}', '{{mobile_devices}}']
- ["Tablet", "{{tablet_min}}", "{{tablet_max}}", "{{tablet_devices}}"] - ['Tablet', '{{tablet_min}}', '{{tablet_max}}', '{{tablet_devices}}']
- ["Desktop", "{{desktop_min}}", "{{desktop_max}}", "{{desktop_devices}}"] - ['Desktop', '{{desktop_min}}', '{{desktop_max}}', '{{desktop_devices}}']
- ["Wide", "{{wide_min}}", "-", "{{wide_devices}}"] - ['Wide', '{{wide_min}}', '-', '{{wide_devices}}']
- id: adaptation-patterns - id: adaptation-patterns
title: Adaptation Patterns title: Adaptation Patterns
template: | template: |
**Layout Changes:** {{layout_adaptations}} **Layout Changes:** {{layout_adaptations}}
**Navigation Changes:** {{nav_adaptations}} **Navigation Changes:** {{nav_adaptations}}
**Content Priority:** {{content_adaptations}} **Content Priority:** {{content_adaptations}}
**Interaction Changes:** {{interaction_adaptations}} **Interaction Changes:** {{interaction_adaptations}}
- id: animation - id: animation
@@ -637,11 +637,11 @@ sections:
sections: sections:
- id: motion-principles - id: motion-principles
title: Motion Principles title: Motion Principles
template: "{{motion_principles}}" template: '{{motion_principles}}'
- id: key-animations - id: key-animations
title: Key Animations title: Key Animations
repeatable: true repeatable: true
template: "- **{{animation_name}}:** {{animation_description}} (Duration: {{duration}}, Easing: {{easing}})" template: '- **{{animation_name}}:** {{animation_description}} (Duration: {{duration}}, Easing: {{easing}})'
- id: performance - id: performance
title: Performance Considerations title: Performance Considerations
@@ -655,13 +655,13 @@ sections:
- **Animation FPS:** {{animation_goal}} - **Animation FPS:** {{animation_goal}}
- id: design-strategies - id: design-strategies
title: Design Strategies title: Design Strategies
template: "{{performance_strategies}}" template: '{{performance_strategies}}'
- id: next-steps - id: next-steps
title: Next Steps title: Next Steps
instruction: | instruction: |
After completing the UI/UX specification: After completing the UI/UX specification:
1. Recommend review with stakeholders 1. Recommend review with stakeholders
2. Suggest creating/updating visual designs in design tool 2. Suggest creating/updating visual designs in design tool
3. Prepare for handoff to Design Architect for frontend architecture 3. Prepare for handoff to Design Architect for frontend architecture
@@ -670,17 +670,17 @@ sections:
- id: immediate-actions - id: immediate-actions
title: Immediate Actions title: Immediate Actions
type: numbered-list type: numbered-list
template: "{{action}}" template: '{{action}}'
- id: design-handoff-checklist - id: design-handoff-checklist
title: Design Handoff Checklist title: Design Handoff Checklist
type: checklist type: checklist
items: items:
- "All user flows documented" - 'All user flows documented'
- "Component inventory complete" - 'Component inventory complete'
- "Accessibility requirements defined" - 'Accessibility requirements defined'
- "Responsive strategy clear" - 'Responsive strategy clear'
- "Brand guidelines incorporated" - 'Brand guidelines incorporated'
- "Performance goals established" - 'Performance goals established'
- id: checklist-results - id: checklist-results
title: Checklist Results title: Checklist Results

View File

@@ -981,8 +981,8 @@ template:
version: 2.0 version: 2.0
output: output:
format: markdown format: markdown
filename: "docs/{{game_name}}-game-design-document.md" filename: 'docs/{{game_name}}-game-design-document.md'
title: "{{game_title}} Game Design Document (GDD)" title: '{{game_title}} Game Design Document (GDD)'
workflow: workflow:
mode: interactive mode: interactive
@@ -991,7 +991,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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 If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
- id: executive-summary - id: executive-summary
@@ -1019,7 +1019,7 @@ sections:
title: Unique Selling Points title: Unique Selling Points
instruction: List 3-5 key features that differentiate this game from competitors instruction: List 3-5 key features that differentiate this game from competitors
type: numbered-list type: numbered-list
template: "{{usp}}" template: '{{usp}}'
- id: core-gameplay - id: core-gameplay
title: Core Gameplay title: Core Gameplay
@@ -1036,7 +1036,7 @@ sections:
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions. instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
template: | template: |
**Primary Loop ({{duration}} seconds):** **Primary Loop ({{duration}} seconds):**
1. {{action_1}} ({{time_1}}s) 1. {{action_1}} ({{time_1}}s)
2. {{action_2}} ({{time_2}}s) 2. {{action_2}} ({{time_2}}s)
3. {{action_3}} ({{time_3}}s) 3. {{action_3}} ({{time_3}}s)
@@ -1046,12 +1046,12 @@ sections:
instruction: Clearly define success and failure states instruction: Clearly define success and failure states
template: | template: |
**Victory Conditions:** **Victory Conditions:**
- {{win_condition_1}} - {{win_condition_1}}
- {{win_condition_2}} - {{win_condition_2}}
**Failure States:** **Failure States:**
- {{loss_condition_1}} - {{loss_condition_1}}
- {{loss_condition_2}} - {{loss_condition_2}}
@@ -1064,20 +1064,20 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: mechanic - id: mechanic
title: "{{mechanic_name}}" title: '{{mechanic_name}}'
template: | template: |
**Description:** {{detailed_description}} **Description:** {{detailed_description}}
**Player Input:** {{input_method}} **Player Input:** {{input_method}}
**System Response:** {{game_response}} **System Response:** {{game_response}}
**Implementation Notes:** **Implementation Notes:**
- {{tech_requirement_1}} - {{tech_requirement_1}}
- {{tech_requirement_2}} - {{tech_requirement_2}}
- {{performance_consideration}} - {{performance_consideration}}
**Dependencies:** {{other_mechanics_needed}} **Dependencies:** {{other_mechanics_needed}}
- id: controls - id: controls
title: Controls title: Controls
@@ -1096,9 +1096,9 @@ sections:
title: Player Progression title: Player Progression
template: | template: |
**Progression Type:** {{linear|branching|metroidvania}} **Progression Type:** {{linear|branching|metroidvania}}
**Key Milestones:** **Key Milestones:**
1. **{{milestone_1}}** - {{unlock_description}} 1. **{{milestone_1}}** - {{unlock_description}}
2. **{{milestone_2}}** - {{unlock_description}} 2. **{{milestone_2}}** - {{unlock_description}}
3. **{{milestone_3}}** - {{unlock_description}} 3. **{{milestone_3}}** - {{unlock_description}}
@@ -1129,15 +1129,15 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: level-type - id: level-type
title: "{{level_type_name}}" title: '{{level_type_name}}'
template: | template: |
**Purpose:** {{gameplay_purpose}} **Purpose:** {{gameplay_purpose}}
**Duration:** {{target_time}} **Duration:** {{target_time}}
**Key Elements:** {{required_mechanics}} **Key Elements:** {{required_mechanics}}
**Difficulty:** {{relative_difficulty}} **Difficulty:** {{relative_difficulty}}
**Structure Template:** **Structure Template:**
- Introduction: {{intro_description}} - Introduction: {{intro_description}}
- Challenge: {{main_challenge}} - Challenge: {{main_challenge}}
- Resolution: {{completion_requirement}} - Resolution: {{completion_requirement}}
@@ -1163,13 +1163,13 @@ sections:
title: Platform Specific title: Platform Specific
template: | template: |
**Desktop:** **Desktop:**
- Resolution: {{min_resolution}} - {{max_resolution}} - Resolution: {{min_resolution}} - {{max_resolution}}
- Input: Keyboard, Mouse, Gamepad - Input: Keyboard, Mouse, Gamepad
- Browser: Chrome 80+, Firefox 75+, Safari 13+ - Browser: Chrome 80+, Firefox 75+, Safari 13+
**Mobile:** **Mobile:**
- Resolution: {{mobile_min}} - {{mobile_max}} - Resolution: {{mobile_min}} - {{mobile_max}}
- Input: Touch, Tilt (optional) - Input: Touch, Tilt (optional)
- OS: iOS 13+, Android 8+ - OS: iOS 13+, Android 8+
@@ -1178,14 +1178,14 @@ sections:
instruction: Define asset specifications for the art and audio teams instruction: Define asset specifications for the art and audio teams
template: | template: |
**Visual Assets:** **Visual Assets:**
- Art Style: {{style_description}} - Art Style: {{style_description}}
- Color Palette: {{color_specification}} - Color Palette: {{color_specification}}
- Animation: {{animation_requirements}} - Animation: {{animation_requirements}}
- UI Resolution: {{ui_specs}} - UI Resolution: {{ui_specs}}
**Audio Assets:** **Audio Assets:**
- Music Style: {{music_genre}} - Music Style: {{music_genre}}
- Sound Effects: {{sfx_requirements}} - Sound Effects: {{sfx_requirements}}
- Voice Acting: {{voice_needs}} - Voice Acting: {{voice_needs}}
@@ -1198,7 +1198,7 @@ sections:
title: Engine Configuration title: Engine Configuration
template: | template: |
**Phaser 3 Setup:** **Phaser 3 Setup:**
- TypeScript: Strict mode enabled - TypeScript: Strict mode enabled
- Physics: {{physics_system}} (Arcade/Matter) - Physics: {{physics_system}} (Arcade/Matter)
- Renderer: WebGL with Canvas fallback - Renderer: WebGL with Canvas fallback
@@ -1207,7 +1207,7 @@ sections:
title: Code Architecture title: Code Architecture
template: | template: |
**Required Systems:** **Required Systems:**
- Scene Management - Scene Management
- State Management - State Management
- Asset Loading - Asset Loading
@@ -1219,7 +1219,7 @@ sections:
title: Data Management title: Data Management
template: | template: |
**Save Data:** **Save Data:**
- Progress tracking - Progress tracking
- Settings persistence - Settings persistence
- Statistics collection - Statistics collection
@@ -1230,10 +1230,10 @@ sections:
instruction: Break down the development into phases that can be converted to epics instruction: Break down the development into phases that can be converted to epics
sections: sections:
- id: phase-1-core-systems - id: phase-1-core-systems
title: "Phase 1: Core Systems ({{duration}})" title: 'Phase 1: Core Systems ({{duration}})'
sections: sections:
- id: foundation-epic - id: foundation-epic
title: "Epic: Foundation" title: 'Epic: Foundation'
type: bullet-list type: bullet-list
template: | template: |
- Engine setup and configuration - Engine setup and configuration
@@ -1241,41 +1241,41 @@ sections:
- Core input handling - Core input handling
- Asset loading pipeline - Asset loading pipeline
- id: core-mechanics-epic - id: core-mechanics-epic
title: "Epic: Core Mechanics" title: 'Epic: Core Mechanics'
type: bullet-list type: bullet-list
template: | template: |
- {{primary_mechanic}} implementation - {{primary_mechanic}} implementation
- Basic physics and collision - Basic physics and collision
- Player controller - Player controller
- id: phase-2-gameplay-features - id: phase-2-gameplay-features
title: "Phase 2: Gameplay Features ({{duration}})" title: 'Phase 2: Gameplay Features ({{duration}})'
sections: sections:
- id: game-systems-epic - id: game-systems-epic
title: "Epic: Game Systems" title: 'Epic: Game Systems'
type: bullet-list type: bullet-list
template: | template: |
- {{mechanic_2}} implementation - {{mechanic_2}} implementation
- {{mechanic_3}} implementation - {{mechanic_3}} implementation
- Game state management - Game state management
- id: content-creation-epic - id: content-creation-epic
title: "Epic: Content Creation" title: 'Epic: Content Creation'
type: bullet-list type: bullet-list
template: | template: |
- Level loading system - Level loading system
- First playable levels - First playable levels
- Basic UI implementation - Basic UI implementation
- id: phase-3-polish-optimization - id: phase-3-polish-optimization
title: "Phase 3: Polish & Optimization ({{duration}})" title: 'Phase 3: Polish & Optimization ({{duration}})'
sections: sections:
- id: performance-epic - id: performance-epic
title: "Epic: Performance" title: 'Epic: Performance'
type: bullet-list type: bullet-list
template: | template: |
- Optimization and profiling - Optimization and profiling
- Mobile platform testing - Mobile platform testing
- Memory management - Memory management
- id: user-experience-epic - id: user-experience-epic
title: "Epic: User Experience" title: 'Epic: User Experience'
type: bullet-list type: bullet-list
template: | template: |
- Audio implementation - Audio implementation
@@ -1317,7 +1317,7 @@ sections:
title: References title: References
instruction: List any competitive analysis, inspiration, or research sources instruction: List any competitive analysis, inspiration, or research sources
type: bullet-list type: bullet-list
template: "{{reference}}" template: '{{reference}}'
==================== END: .bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml ==================== ==================== END: .bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml ====================
==================== START: .bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml ==================== ==================== START: .bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml ====================
@@ -1327,8 +1327,8 @@ template:
version: 2.0 version: 2.0
output: output:
format: markdown format: markdown
filename: "docs/{{game_name}}-level-design-document.md" filename: 'docs/{{game_name}}-level-design-document.md'
title: "{{game_title}} Level Design Document" title: '{{game_title}} Level Design Document'
workflow: workflow:
mode: interactive mode: interactive
@@ -1337,7 +1337,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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. 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 - id: introduction
@@ -1345,7 +1345,7 @@ sections:
instruction: Establish the purpose and scope of level design for this game instruction: Establish the purpose and scope of level design for this game
content: | 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 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. This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
sections: sections:
- id: change-log - id: change-log
@@ -1389,32 +1389,32 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: level-category - id: level-category
title: "{{category_name}} Levels" title: '{{category_name}} Levels'
template: | template: |
**Purpose:** {{gameplay_purpose}} **Purpose:** {{gameplay_purpose}}
**Target Duration:** {{min_time}} - {{max_time}} minutes **Target Duration:** {{min_time}} - {{max_time}} minutes
**Difficulty Range:** {{difficulty_scale}} **Difficulty Range:** {{difficulty_scale}}
**Key Mechanics Featured:** **Key Mechanics Featured:**
- {{mechanic_1}} - {{usage_description}} - {{mechanic_1}} - {{usage_description}}
- {{mechanic_2}} - {{usage_description}} - {{mechanic_2}} - {{usage_description}}
**Player Objectives:** **Player Objectives:**
- Primary: {{primary_objective}} - Primary: {{primary_objective}}
- Secondary: {{secondary_objective}} - Secondary: {{secondary_objective}}
- Hidden: {{secret_objective}} - Hidden: {{secret_objective}}
**Success Criteria:** **Success Criteria:**
- {{completion_requirement_1}} - {{completion_requirement_1}}
- {{completion_requirement_2}} - {{completion_requirement_2}}
**Technical Requirements:** **Technical Requirements:**
- Maximum entities: {{entity_limit}} - Maximum entities: {{entity_limit}}
- Performance target: {{fps_target}} FPS - Performance target: {{fps_target}} FPS
- Memory budget: {{memory_limit}}MB - Memory budget: {{memory_limit}}MB
@@ -1429,11 +1429,11 @@ sections:
instruction: Based on GDD requirements, define the overall level organization instruction: Based on GDD requirements, define the overall level organization
template: | template: |
**Organization Type:** {{linear|hub_world|open_world}} **Organization Type:** {{linear|hub_world|open_world}}
**Total Level Count:** {{number}} **Total Level Count:** {{number}}
**World Breakdown:** **World Breakdown:**
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 3: {{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 instruction: Define how players access new levels
template: | template: |
**Progression Gates:** **Progression Gates:**
- Linear progression: Complete previous level - Linear progression: Complete previous level
- Star requirements: {{star_count}} stars to unlock - Star requirements: {{star_count}} stars to unlock
- Skill gates: Demonstrate {{skill_requirement}} - Skill gates: Demonstrate {{skill_requirement}}
@@ -1483,17 +1483,17 @@ sections:
instruction: Define all environmental components that can be used in levels instruction: Define all environmental components that can be used in levels
template: | template: |
**Terrain Types:** **Terrain Types:**
- {{terrain_1}}: {{properties_and_usage}} - {{terrain_1}}: {{properties_and_usage}}
- {{terrain_2}}: {{properties_and_usage}} - {{terrain_2}}: {{properties_and_usage}}
**Interactive Objects:** **Interactive Objects:**
- {{object_1}}: {{behavior_and_purpose}} - {{object_1}}: {{behavior_and_purpose}}
- {{object_2}}: {{behavior_and_purpose}} - {{object_2}}: {{behavior_and_purpose}}
**Hazards and Obstacles:** **Hazards and Obstacles:**
- {{hazard_1}}: {{damage_and_behavior}} - {{hazard_1}}: {{damage_and_behavior}}
- {{hazard_2}}: {{damage_and_behavior}} - {{hazard_2}}: {{damage_and_behavior}}
- id: collectibles-rewards - id: collectibles-rewards
@@ -1501,18 +1501,18 @@ sections:
instruction: Define all collectible items and their placement rules instruction: Define all collectible items and their placement rules
template: | template: |
**Collectible Types:** **Collectible Types:**
- {{collectible_1}}: {{value_and_purpose}} - {{collectible_1}}: {{value_and_purpose}}
- {{collectible_2}}: {{value_and_purpose}} - {{collectible_2}}: {{value_and_purpose}}
**Placement Guidelines:** **Placement Guidelines:**
- Mandatory collectibles: {{placement_rules}} - Mandatory collectibles: {{placement_rules}}
- Optional collectibles: {{placement_rules}} - Optional collectibles: {{placement_rules}}
- Secret collectibles: {{placement_rules}} - Secret collectibles: {{placement_rules}}
**Reward Distribution:** **Reward Distribution:**
- Easy to find: {{percentage}}% - Easy to find: {{percentage}}%
- Moderate challenge: {{percentage}}% - Moderate challenge: {{percentage}}%
- High skill required: {{percentage}}% - High skill required: {{percentage}}%
@@ -1521,18 +1521,18 @@ sections:
instruction: Define how enemies should be placed and balanced in levels instruction: Define how enemies should be placed and balanced in levels
template: | template: |
**Enemy Categories:** **Enemy Categories:**
- {{enemy_type_1}}: {{behavior_and_usage}} - {{enemy_type_1}}: {{behavior_and_usage}}
- {{enemy_type_2}}: {{behavior_and_usage}} - {{enemy_type_2}}: {{behavior_and_usage}}
**Placement Principles:** **Placement Principles:**
- Introduction encounters: {{guideline}} - Introduction encounters: {{guideline}}
- Standard encounters: {{guideline}} - Standard encounters: {{guideline}}
- Challenge encounters: {{guideline}} - Challenge encounters: {{guideline}}
**Difficulty Scaling:** **Difficulty Scaling:**
- Enemy count progression: {{scaling_rule}} - Enemy count progression: {{scaling_rule}}
- Enemy type introduction: {{pacing_rule}} - Enemy type introduction: {{pacing_rule}}
- Encounter complexity: {{complexity_rule}} - Encounter complexity: {{complexity_rule}}
@@ -1545,14 +1545,14 @@ sections:
title: Level Layout Principles title: Level Layout Principles
template: | template: |
**Spatial Design:** **Spatial Design:**
- Grid size: {{grid_dimensions}} - Grid size: {{grid_dimensions}}
- Minimum path width: {{width_units}} - Minimum path width: {{width_units}}
- Maximum vertical distance: {{height_units}} - Maximum vertical distance: {{height_units}}
- Safe zones placement: {{safety_guidelines}} - Safe zones placement: {{safety_guidelines}}
**Navigation Design:** **Navigation Design:**
- Clear path indication: {{visual_cues}} - Clear path indication: {{visual_cues}}
- Landmark placement: {{landmark_rules}} - Landmark placement: {{landmark_rules}}
- Dead end avoidance: {{dead_end_policy}} - Dead end avoidance: {{dead_end_policy}}
@@ -1562,13 +1562,13 @@ sections:
instruction: Define how to control the rhythm and pace of gameplay within levels instruction: Define how to control the rhythm and pace of gameplay within levels
template: | template: |
**Action Sequences:** **Action Sequences:**
- High intensity duration: {{max_duration}} - High intensity duration: {{max_duration}}
- Rest period requirement: {{min_rest_time}} - Rest period requirement: {{min_rest_time}}
- Intensity variation: {{pacing_pattern}} - Intensity variation: {{pacing_pattern}}
**Learning Sequences:** **Learning Sequences:**
- New mechanic introduction: {{teaching_method}} - New mechanic introduction: {{teaching_method}}
- Practice opportunity: {{practice_duration}} - Practice opportunity: {{practice_duration}}
- Skill application: {{application_context}} - Skill application: {{application_context}}
@@ -1577,14 +1577,14 @@ sections:
instruction: Define how to create appropriate challenges for each level type instruction: Define how to create appropriate challenges for each level type
template: | template: |
**Challenge Types:** **Challenge Types:**
- Execution challenges: {{skill_requirements}} - Execution challenges: {{skill_requirements}}
- Puzzle challenges: {{complexity_guidelines}} - Puzzle challenges: {{complexity_guidelines}}
- Time challenges: {{time_pressure_rules}} - Time challenges: {{time_pressure_rules}}
- Resource challenges: {{resource_management}} - Resource challenges: {{resource_management}}
**Difficulty Calibration:** **Difficulty Calibration:**
- Skill check frequency: {{frequency_guidelines}} - Skill check frequency: {{frequency_guidelines}}
- Failure recovery: {{retry_mechanics}} - Failure recovery: {{retry_mechanics}}
- Hint system integration: {{help_system}} - Hint system integration: {{help_system}}
@@ -1598,7 +1598,7 @@ sections:
instruction: Define how level data should be structured for implementation instruction: Define how level data should be structured for implementation
template: | template: |
**Level File Format:** **Level File Format:**
- Data format: {{json|yaml|custom}} - Data format: {{json|yaml|custom}}
- File naming: `level_{{world}}_{{number}}.{{extension}}` - File naming: `level_{{world}}_{{number}}.{{extension}}`
- Data organization: {{structure_description}} - Data organization: {{structure_description}}
@@ -1636,14 +1636,14 @@ sections:
instruction: Define how level assets are organized and loaded instruction: Define how level assets are organized and loaded
template: | template: |
**Tilemap Requirements:** **Tilemap Requirements:**
- Tile size: {{tile_dimensions}}px - Tile size: {{tile_dimensions}}px
- Tileset organization: {{tileset_structure}} - Tileset organization: {{tileset_structure}}
- Layer organization: {{layer_system}} - Layer organization: {{layer_system}}
- Collision data: {{collision_format}} - Collision data: {{collision_format}}
**Audio Integration:** **Audio Integration:**
- Background music: {{music_requirements}} - Background music: {{music_requirements}}
- Ambient sounds: {{ambient_system}} - Ambient sounds: {{ambient_system}}
- Dynamic audio: {{dynamic_audio_rules}} - Dynamic audio: {{dynamic_audio_rules}}
@@ -1652,19 +1652,19 @@ sections:
instruction: Define performance requirements for level systems instruction: Define performance requirements for level systems
template: | template: |
**Entity Limits:** **Entity Limits:**
- Maximum active entities: {{entity_limit}} - Maximum active entities: {{entity_limit}}
- Maximum particles: {{particle_limit}} - Maximum particles: {{particle_limit}}
- Maximum audio sources: {{audio_limit}} - Maximum audio sources: {{audio_limit}}
**Memory Management:** **Memory Management:**
- Texture memory budget: {{texture_memory}}MB - Texture memory budget: {{texture_memory}}MB
- Audio memory budget: {{audio_memory}}MB - Audio memory budget: {{audio_memory}}MB
- Level loading time: <{{load_time}}s - Level loading time: <{{load_time}}s
**Culling and LOD:** **Culling and LOD:**
- Off-screen culling: {{culling_distance}} - Off-screen culling: {{culling_distance}}
- Level-of-detail rules: {{lod_system}} - Level-of-detail rules: {{lod_system}}
- Asset streaming: {{streaming_requirements}} - Asset streaming: {{streaming_requirements}}
@@ -1677,13 +1677,13 @@ sections:
title: Automated Testing title: Automated Testing
template: | template: |
**Performance Testing:** **Performance Testing:**
- Frame rate validation: Maintain {{fps_target}} FPS - Frame rate validation: Maintain {{fps_target}} FPS
- Memory usage monitoring: Stay under {{memory_limit}}MB - Memory usage monitoring: Stay under {{memory_limit}}MB
- Loading time verification: Complete in <{{load_time}}s - Loading time verification: Complete in <{{load_time}}s
**Gameplay Testing:** **Gameplay Testing:**
- Completion path validation: All objectives achievable - Completion path validation: All objectives achievable
- Collectible accessibility: All items reachable - Collectible accessibility: All items reachable
- Softlock prevention: No unwinnable states - Softlock prevention: No unwinnable states
@@ -1694,31 +1694,31 @@ sections:
title: Playtesting Checklist title: Playtesting Checklist
type: checklist type: checklist
items: items:
- "Level completes within target time range" - 'Level completes within target time range'
- "All mechanics function correctly" - 'All mechanics function correctly'
- "Difficulty feels appropriate for level category" - 'Difficulty feels appropriate for level category'
- "Player guidance is clear and effective" - 'Player guidance is clear and effective'
- "No exploits or sequence breaks (unless intended)" - 'No exploits or sequence breaks (unless intended)'
- id: player-experience-testing - id: player-experience-testing
title: Player Experience Testing title: Player Experience Testing
type: checklist type: checklist
items: items:
- "Tutorial levels teach effectively" - 'Tutorial levels teach effectively'
- "Challenge feels fair and rewarding" - 'Challenge feels fair and rewarding'
- "Flow and pacing maintain engagement" - 'Flow and pacing maintain engagement'
- "Audio and visual feedback support gameplay" - 'Audio and visual feedback support gameplay'
- id: balance-validation - id: balance-validation
title: Balance Validation title: Balance Validation
template: | template: |
**Metrics Collection:** **Metrics Collection:**
- Completion rate: Target {{completion_percentage}}% - Completion rate: Target {{completion_percentage}}%
- Average completion time: {{target_time}} ± {{variance}} - Average completion time: {{target_time}} ± {{variance}}
- Death count per level: <{{max_deaths}} - Death count per level: <{{max_deaths}}
- Collectible discovery rate: {{discovery_percentage}}% - Collectible discovery rate: {{discovery_percentage}}%
**Iteration Guidelines:** **Iteration Guidelines:**
- Adjustment criteria: {{criteria_for_changes}} - Adjustment criteria: {{criteria_for_changes}}
- Testing sample size: {{minimum_testers}} - Testing sample size: {{minimum_testers}}
- Validation period: {{testing_duration}} - Validation period: {{testing_duration}}
@@ -1731,14 +1731,14 @@ sections:
title: Design Phase title: Design Phase
template: | template: |
**Concept Development:** **Concept Development:**
1. Define level purpose and goals 1. Define level purpose and goals
2. Create rough layout sketch 2. Create rough layout sketch
3. Identify key mechanics and challenges 3. Identify key mechanics and challenges
4. Estimate difficulty and duration 4. Estimate difficulty and duration
**Documentation Requirements:** **Documentation Requirements:**
- Level design brief - Level design brief
- Layout diagrams - Layout diagrams
- Mechanic integration notes - Mechanic integration notes
@@ -1747,15 +1747,15 @@ sections:
title: Implementation Phase title: Implementation Phase
template: | template: |
**Technical Implementation:** **Technical Implementation:**
1. Create level data file 1. Create level data file
2. Build tilemap and layout 2. Build tilemap and layout
3. Place entities and objects 3. Place entities and objects
4. Configure level logic and triggers 4. Configure level logic and triggers
5. Integrate audio and visual effects 5. Integrate audio and visual effects
**Quality Assurance:** **Quality Assurance:**
1. Automated testing execution 1. Automated testing execution
2. Internal playtesting 2. Internal playtesting
3. Performance validation 3. Performance validation
@@ -1764,14 +1764,14 @@ sections:
title: Integration Phase title: Integration Phase
template: | template: |
**Game Integration:** **Game Integration:**
1. Level progression integration 1. Level progression integration
2. Save system compatibility 2. Save system compatibility
3. Analytics integration 3. Analytics integration
4. Achievement system integration 4. Achievement system integration
**Final Validation:** **Final Validation:**
1. Full game context testing 1. Full game context testing
2. Performance regression testing 2. Performance regression testing
3. Platform compatibility verification 3. Platform compatibility verification
@@ -1814,8 +1814,8 @@ template:
version: 2.0 version: 2.0
output: output:
format: markdown format: markdown
filename: "docs/{{game_name}}-game-brief.md" filename: 'docs/{{game_name}}-game-brief.md'
title: "{{game_title}} Game Brief" title: '{{game_title}} Game Brief'
workflow: workflow:
mode: interactive mode: interactive
@@ -1824,7 +1824,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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 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. 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 - id: game-vision
@@ -1881,7 +1881,7 @@ sections:
repeatable: true repeatable: true
template: | template: |
**Core Mechanic: {{mechanic_name}}** **Core Mechanic: {{mechanic_name}}**
- **Description:** {{how_it_works}} - **Description:** {{how_it_works}}
- **Player Value:** {{why_its_fun}} - **Player Value:** {{why_its_fun}}
- **Implementation Scope:** {{complexity_estimate}} - **Implementation Scope:** {{complexity_estimate}}
@@ -1908,12 +1908,12 @@ sections:
title: Technical Constraints title: Technical Constraints
template: | template: |
**Platform Requirements:** **Platform Requirements:**
- Primary: {{platform_1}} - {{requirements}} - Primary: {{platform_1}} - {{requirements}}
- Secondary: {{platform_2}} - {{requirements}} - Secondary: {{platform_2}} - {{requirements}}
**Technical Specifications:** **Technical Specifications:**
- Engine: Phaser 3 + TypeScript - Engine: Phaser 3 + TypeScript
- Performance Target: {{fps_target}} FPS on {{target_device}} - Performance Target: {{fps_target}} FPS on {{target_device}}
- Memory Budget: <{{memory_limit}}MB - Memory Budget: <{{memory_limit}}MB
@@ -1951,10 +1951,10 @@ sections:
title: Competitive Analysis title: Competitive Analysis
template: | template: |
**Direct Competitors:** **Direct Competitors:**
- {{competitor_1}}: {{strengths_and_weaknesses}} - {{competitor_1}}: {{strengths_and_weaknesses}}
- {{competitor_2}}: {{strengths_and_weaknesses}} - {{competitor_2}}: {{strengths_and_weaknesses}}
**Differentiation Strategy:** **Differentiation Strategy:**
{{how_we_differ_and_why_thats_valuable}} {{how_we_differ_and_why_thats_valuable}}
- id: market-opportunity - id: market-opportunity
@@ -1978,16 +1978,16 @@ sections:
title: Content Categories title: Content Categories
template: | template: |
**Core Content:** **Core Content:**
- {{content_type_1}}: {{quantity_and_description}} - {{content_type_1}}: {{quantity_and_description}}
- {{content_type_2}}: {{quantity_and_description}} - {{content_type_2}}: {{quantity_and_description}}
**Optional Content:** **Optional Content:**
- {{optional_content_type}}: {{quantity_and_description}} - {{optional_content_type}}: {{quantity_and_description}}
**Replay Elements:** **Replay Elements:**
- {{replayability_features}} - {{replayability_features}}
- id: difficulty-accessibility - id: difficulty-accessibility
title: Difficulty and Accessibility title: Difficulty and Accessibility
@@ -2054,13 +2054,13 @@ sections:
title: Player Experience Metrics title: Player Experience Metrics
template: | template: |
**Engagement Goals:** **Engagement Goals:**
- Tutorial completion rate: >{{percentage}}% - Tutorial completion rate: >{{percentage}}%
- Average session length: {{duration}} minutes - Average session length: {{duration}} minutes
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}% - Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
**Quality Benchmarks:** **Quality Benchmarks:**
- Player satisfaction: >{{rating}}/10 - Player satisfaction: >{{rating}}/10
- Completion rate: >{{percentage}}% - Completion rate: >{{percentage}}%
- Technical performance: {{fps_target}} FPS consistent - Technical performance: {{fps_target}} FPS consistent
@@ -2068,13 +2068,13 @@ sections:
title: Development Metrics title: Development Metrics
template: | template: |
**Technical Targets:** **Technical Targets:**
- Zero critical bugs at launch - Zero critical bugs at launch
- Performance targets met on all platforms - Performance targets met on all platforms
- Load times under {{seconds}}s - Load times under {{seconds}}s
**Process Goals:** **Process Goals:**
- Development timeline adherence - Development timeline adherence
- Feature scope completion - Feature scope completion
- Quality assurance standards - Quality assurance standards
@@ -2083,7 +2083,7 @@ sections:
condition: has_business_goals condition: has_business_goals
template: | template: |
**Commercial Goals:** **Commercial Goals:**
- {{revenue_target}} in first {{time_period}} - {{revenue_target}} in first {{time_period}}
- {{user_acquisition_target}} players in first {{time_period}} - {{user_acquisition_target}} players in first {{time_period}}
- {{retention_target}} monthly active users - {{retention_target}} monthly active users
@@ -2101,21 +2101,21 @@ sections:
title: Development Roadmap title: Development Roadmap
sections: sections:
- id: phase-1-preproduction - id: phase-1-preproduction
title: "Phase 1: Pre-Production ({{duration}})" title: 'Phase 1: Pre-Production ({{duration}})'
type: bullet-list type: bullet-list
template: | template: |
- Detailed Game Design Document creation - Detailed Game Design Document creation
- Technical architecture planning - Technical architecture planning
- Art style exploration and pipeline setup - Art style exploration and pipeline setup
- id: phase-2-prototype - id: phase-2-prototype
title: "Phase 2: Prototype ({{duration}})" title: 'Phase 2: Prototype ({{duration}})'
type: bullet-list type: bullet-list
template: | template: |
- Core mechanic implementation - Core mechanic implementation
- Technical proof of concept - Technical proof of concept
- Initial playtesting and iteration - Initial playtesting and iteration
- id: phase-3-production - id: phase-3-production
title: "Phase 3: Production ({{duration}})" title: 'Phase 3: Production ({{duration}})'
type: bullet-list type: bullet-list
template: | template: |
- Full feature development - Full feature development
@@ -2136,12 +2136,12 @@ sections:
title: Validation Plan title: Validation Plan
template: | template: |
**Concept Testing:** **Concept Testing:**
- {{validation_method_1}} - {{timeline}} - {{validation_method_1}} - {{timeline}}
- {{validation_method_2}} - {{timeline}} - {{validation_method_2}} - {{timeline}}
**Prototype Testing:** **Prototype Testing:**
- {{testing_approach}} - {{timeline}} - {{testing_approach}} - {{timeline}}
- {{feedback_collection_method}} - {{timeline}} - {{feedback_collection_method}} - {{timeline}}

View File

@@ -197,8 +197,8 @@ template:
version: 2.0 version: 2.0
output: output:
format: markdown format: markdown
filename: "docs/{{game_name}}-game-architecture.md" filename: 'docs/{{game_name}}-game-architecture.md'
title: "{{game_title}} Game Architecture Document" title: '{{game_title}} Game Architecture Document'
workflow: workflow:
mode: interactive mode: interactive
@@ -207,7 +207,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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. 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 - id: introduction
@@ -215,7 +215,7 @@ sections:
instruction: Establish the document's purpose and scope for game development instruction: Establish the document's purpose and scope for game development
content: | 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 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. 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: sections:
- id: change-log - id: change-log
@@ -234,7 +234,7 @@ sections:
title: Architecture Summary title: Architecture Summary
instruction: | instruction: |
Provide a comprehensive overview covering: Provide a comprehensive overview covering:
- Game engine choice and configuration - Game engine choice and configuration
- Project structure and organization - Project structure and organization
- Key systems and their interactions - Key systems and their interactions
@@ -322,23 +322,23 @@ sections:
title: Scene Management System title: Scene Management System
template: | template: |
**Purpose:** Handle game flow and scene transitions **Purpose:** Handle game flow and scene transitions
**Key Components:** **Key Components:**
- Scene loading and unloading - Scene loading and unloading
- Data passing between scenes - Data passing between scenes
- Transition effects - Transition effects
- Memory management - Memory management
**Implementation Requirements:** **Implementation Requirements:**
- Preload scene for asset loading - Preload scene for asset loading
- Menu system with navigation - Menu system with navigation
- Gameplay scenes with state management - Gameplay scenes with state management
- Pause/resume functionality - Pause/resume functionality
**Files to Create:** **Files to Create:**
- `src/scenes/BootScene.ts` - `src/scenes/BootScene.ts`
- `src/scenes/PreloadScene.ts` - `src/scenes/PreloadScene.ts`
- `src/scenes/MenuScene.ts` - `src/scenes/MenuScene.ts`
@@ -348,23 +348,23 @@ sections:
title: Game State Management title: Game State Management
template: | template: |
**Purpose:** Track player progress and game status **Purpose:** Track player progress and game status
**State Categories:** **State Categories:**
- Player progress (levels, unlocks) - Player progress (levels, unlocks)
- Game settings (audio, controls) - Game settings (audio, controls)
- Session data (current level, score) - Session data (current level, score)
- Persistent data (achievements, statistics) - Persistent data (achievements, statistics)
**Implementation Requirements:** **Implementation Requirements:**
- Save/load system with localStorage - Save/load system with localStorage
- State validation and error recovery - State validation and error recovery
- Cross-session data persistence - Cross-session data persistence
- Settings management - Settings management
**Files to Create:** **Files to Create:**
- `src/systems/GameState.ts` - `src/systems/GameState.ts`
- `src/systems/SaveManager.ts` - `src/systems/SaveManager.ts`
- `src/types/GameData.ts` - `src/types/GameData.ts`
@@ -372,23 +372,23 @@ sections:
title: Asset Management System title: Asset Management System
template: | template: |
**Purpose:** Efficient loading and management of game assets **Purpose:** Efficient loading and management of game assets
**Asset Categories:** **Asset Categories:**
- Sprite sheets and animations - Sprite sheets and animations
- Audio files and music - Audio files and music
- Level data and configurations - Level data and configurations
- UI assets and fonts - UI assets and fonts
**Implementation Requirements:** **Implementation Requirements:**
- Progressive loading strategy - Progressive loading strategy
- Asset caching and optimization - Asset caching and optimization
- Error handling for failed loads - Error handling for failed loads
- Memory management for large assets - Memory management for large assets
**Files to Create:** **Files to Create:**
- `src/systems/AssetManager.ts` - `src/systems/AssetManager.ts`
- `src/config/AssetConfig.ts` - `src/config/AssetConfig.ts`
- `src/utils/AssetLoader.ts` - `src/utils/AssetLoader.ts`
@@ -396,23 +396,23 @@ sections:
title: Input Management System title: Input Management System
template: | template: |
**Purpose:** Handle all player input across platforms **Purpose:** Handle all player input across platforms
**Input Types:** **Input Types:**
- Keyboard controls - Keyboard controls
- Mouse/pointer interaction - Mouse/pointer interaction
- Touch gestures (mobile) - Touch gestures (mobile)
- Gamepad support (optional) - Gamepad support (optional)
**Implementation Requirements:** **Implementation Requirements:**
- Input mapping and configuration - Input mapping and configuration
- Touch-friendly mobile controls - Touch-friendly mobile controls
- Input buffering for responsive gameplay - Input buffering for responsive gameplay
- Customizable control schemes - Customizable control schemes
**Files to Create:** **Files to Create:**
- `src/systems/InputManager.ts` - `src/systems/InputManager.ts`
- `src/utils/TouchControls.ts` - `src/utils/TouchControls.ts`
- `src/types/InputTypes.ts` - `src/types/InputTypes.ts`
@@ -422,22 +422,22 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: mechanic-system - id: mechanic-system
title: "{{mechanic_name}} System" title: '{{mechanic_name}} System'
template: | template: |
**Purpose:** {{system_purpose}} **Purpose:** {{system_purpose}}
**Core Functionality:** **Core Functionality:**
- {{feature_1}} - {{feature_1}}
- {{feature_2}} - {{feature_2}}
- {{feature_3}} - {{feature_3}}
**Dependencies:** {{required_systems}} **Dependencies:** {{required_systems}}
**Performance Considerations:** {{optimization_notes}} **Performance Considerations:** {{optimization_notes}}
**Files to Create:** **Files to Create:**
- `src/systems/{{system_name}}.ts` - `src/systems/{{system_name}}.ts`
- `src/gameObjects/{{related_object}}.ts` - `src/gameObjects/{{related_object}}.ts`
- `src/types/{{system_types}}.ts` - `src/types/{{system_types}}.ts`
@@ -445,65 +445,65 @@ sections:
title: Physics & Collision System title: Physics & Collision System
template: | template: |
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js) **Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
**Collision Categories:** **Collision Categories:**
- Player collision - Player collision
- Enemy interactions - Enemy interactions
- Environmental objects - Environmental objects
- Collectibles and items - Collectibles and items
**Implementation Requirements:** **Implementation Requirements:**
- Optimized collision detection - Optimized collision detection
- Physics body management - Physics body management
- Collision callbacks and events - Collision callbacks and events
- Performance monitoring - Performance monitoring
**Files to Create:** **Files to Create:**
- `src/systems/PhysicsManager.ts` - `src/systems/PhysicsManager.ts`
- `src/utils/CollisionGroups.ts` - `src/utils/CollisionGroups.ts`
- id: audio-system - id: audio-system
title: Audio System title: Audio System
template: | template: |
**Audio Requirements:** **Audio Requirements:**
- Background music with looping - Background music with looping
- Sound effects for actions - Sound effects for actions
- Audio settings and volume control - Audio settings and volume control
- Mobile audio optimization - Mobile audio optimization
**Implementation Features:** **Implementation Features:**
- Audio sprite management - Audio sprite management
- Dynamic music system - Dynamic music system
- Spatial audio (if applicable) - Spatial audio (if applicable)
- Audio pooling for performance - Audio pooling for performance
**Files to Create:** **Files to Create:**
- `src/systems/AudioManager.ts` - `src/systems/AudioManager.ts`
- `src/config/AudioConfig.ts` - `src/config/AudioConfig.ts`
- id: ui-system - id: ui-system
title: UI System title: UI System
template: | template: |
**UI Components:** **UI Components:**
- HUD elements (score, health, etc.) - HUD elements (score, health, etc.)
- Menu navigation - Menu navigation
- Modal dialogs - Modal dialogs
- Settings screens - Settings screens
**Implementation Requirements:** **Implementation Requirements:**
- Responsive layout system - Responsive layout system
- Touch-friendly interface - Touch-friendly interface
- Keyboard navigation support - Keyboard navigation support
- Animation and transitions - Animation and transitions
**Files to Create:** **Files to Create:**
- `src/systems/UIManager.ts` - `src/systems/UIManager.ts`
- `src/gameObjects/UI/` - `src/gameObjects/UI/`
- `src/types/UITypes.ts` - `src/types/UITypes.ts`
@@ -719,7 +719,7 @@ sections:
instruction: Break down the architecture implementation into phases that align with the GDD development phases instruction: Break down the architecture implementation into phases that align with the GDD development phases
sections: sections:
- id: phase-1-foundation - id: phase-1-foundation
title: "Phase 1: Foundation ({{duration}})" title: 'Phase 1: Foundation ({{duration}})'
sections: sections:
- id: phase-1-core - id: phase-1-core
title: Core Systems title: Core Systems
@@ -737,7 +737,7 @@ sections:
- "Basic Scene Management System" - "Basic Scene Management System"
- "Asset Loading Foundation" - "Asset Loading Foundation"
- id: phase-2-game-systems - id: phase-2-game-systems
title: "Phase 2: Game Systems ({{duration}})" title: 'Phase 2: Game Systems ({{duration}})'
sections: sections:
- id: phase-2-gameplay - id: phase-2-gameplay
title: Gameplay Systems title: Gameplay Systems
@@ -755,7 +755,7 @@ sections:
- "Physics and Collision Framework" - "Physics and Collision Framework"
- "Game State Management System" - "Game State Management System"
- id: phase-3-content-polish - id: phase-3-content-polish
title: "Phase 3: Content & Polish ({{duration}})" title: 'Phase 3: Content & Polish ({{duration}})'
sections: sections:
- id: phase-3-content - id: phase-3-content
title: Content Systems title: Content Systems
@@ -1045,7 +1045,7 @@ interface GameState {
interface GameSettings { interface GameSettings {
musicVolume: number; musicVolume: number;
sfxVolume: number; sfxVolume: number;
difficulty: "easy" | "normal" | "hard"; difficulty: 'easy' | 'normal' | 'hard';
controls: ControlScheme; controls: ControlScheme;
} }
``` ```
@@ -1086,12 +1086,12 @@ class GameScene extends Phaser.Scene {
private inputManager!: InputManager; private inputManager!: InputManager;
constructor() { constructor() {
super({ key: "GameScene" }); super({ key: 'GameScene' });
} }
preload(): void { preload(): void {
// Load only scene-specific assets // Load only scene-specific assets
this.load.image("player", "assets/player.png"); this.load.image('player', 'assets/player.png');
} }
create(data: SceneData): void { create(data: SceneData): void {
@@ -1116,7 +1116,7 @@ class GameScene extends Phaser.Scene {
this.inputManager.destroy(); this.inputManager.destroy();
// Remove event listeners // Remove event listeners
this.events.off("*"); this.events.off('*');
} }
} }
``` ```
@@ -1125,13 +1125,13 @@ class GameScene extends Phaser.Scene {
```typescript ```typescript
// Proper scene transitions with data // Proper scene transitions with data
this.scene.start("NextScene", { this.scene.start('NextScene', {
playerScore: this.playerScore, playerScore: this.playerScore,
currentLevel: this.currentLevel + 1, currentLevel: this.currentLevel + 1,
}); });
// Scene overlays for UI // Scene overlays for UI
this.scene.launch("PauseMenuScene"); this.scene.launch('PauseMenuScene');
this.scene.pause(); this.scene.pause();
``` ```
@@ -1175,7 +1175,7 @@ class Player extends GameEntity {
private health!: HealthComponent; private health!: HealthComponent;
constructor(scene: Phaser.Scene, x: number, y: number) { 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.movement = this.addComponent(new MovementComponent(this));
this.health = this.addComponent(new HealthComponent(this, 100)); this.health = this.addComponent(new HealthComponent(this, 100));
@@ -1195,7 +1195,7 @@ class GameManager {
constructor(scene: Phaser.Scene) { constructor(scene: Phaser.Scene) {
if (GameManager.instance) { if (GameManager.instance) {
throw new Error("GameManager already exists!"); throw new Error('GameManager already exists!');
} }
this.scene = scene; this.scene = scene;
@@ -1205,7 +1205,7 @@ class GameManager {
static getInstance(): GameManager { static getInstance(): GameManager {
if (!GameManager.instance) { if (!GameManager.instance) {
throw new Error("GameManager not initialized!"); throw new Error('GameManager not initialized!');
} }
return GameManager.instance; return GameManager.instance;
} }
@@ -1252,7 +1252,7 @@ class BulletPool {
} }
// Pool exhausted - create new bullet // 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); return new Bullet(this.scene, 0, 0);
} }
@@ -1352,14 +1352,12 @@ class InputManager {
} }
private setupKeyboard(): void { private setupKeyboard(): void {
this.keys = this.scene.input.keyboard.addKeys( this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
);
} }
private setupTouch(): void { private setupTouch(): void {
this.scene.input.on("pointerdown", this.handlePointerDown, this); this.scene.input.on('pointerdown', this.handlePointerDown, this);
this.scene.input.on("pointerup", this.handlePointerUp, this); this.scene.input.on('pointerup', this.handlePointerUp, this);
} }
update(): void { update(): void {
@@ -1386,9 +1384,9 @@ class InputManager {
class AssetManager { class AssetManager {
loadAssets(): Promise<void> { loadAssets(): Promise<void> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.scene.load.on("filecomplete", this.handleFileComplete, this); this.scene.load.on('filecomplete', this.handleFileComplete, this);
this.scene.load.on("loaderror", this.handleLoadError, this); this.scene.load.on('loaderror', this.handleLoadError, this);
this.scene.load.on("complete", () => resolve()); this.scene.load.on('complete', () => resolve());
this.scene.load.start(); this.scene.load.start();
}); });
@@ -1404,8 +1402,8 @@ class AssetManager {
private loadFallbackAsset(key: string): void { private loadFallbackAsset(key: string): void {
// Load placeholder or default assets // Load placeholder or default assets
switch (key) { switch (key) {
case "player": case 'player':
this.scene.load.image("player", "assets/defaults/default-player.png"); this.scene.load.image('player', 'assets/defaults/default-player.png');
break; break;
default: default:
console.warn(`No fallback for asset: ${key}`); console.warn(`No fallback for asset: ${key}`);
@@ -1432,11 +1430,11 @@ class GameSystem {
private attemptRecovery(context: string): void { private attemptRecovery(context: string): void {
switch (context) { switch (context) {
case "update": case 'update':
// Reset system state // Reset system state
this.reset(); this.reset();
break; break;
case "render": case 'render':
// Disable visual effects // Disable visual effects
this.disableEffects(); this.disableEffects();
break; break;
@@ -1456,7 +1454,7 @@ class GameSystem {
```typescript ```typescript
// Example test for game mechanics // Example test for game mechanics
describe("HealthComponent", () => { describe('HealthComponent', () => {
let healthComponent: HealthComponent; let healthComponent: HealthComponent;
beforeEach(() => { beforeEach(() => {
@@ -1464,18 +1462,18 @@ describe("HealthComponent", () => {
healthComponent = new HealthComponent(mockEntity, 100); healthComponent = new HealthComponent(mockEntity, 100);
}); });
test("should initialize with correct health", () => { test('should initialize with correct health', () => {
expect(healthComponent.currentHealth).toBe(100); expect(healthComponent.currentHealth).toBe(100);
expect(healthComponent.maxHealth).toBe(100); expect(healthComponent.maxHealth).toBe(100);
}); });
test("should handle damage correctly", () => { test('should handle damage correctly', () => {
healthComponent.takeDamage(25); healthComponent.takeDamage(25);
expect(healthComponent.currentHealth).toBe(75); expect(healthComponent.currentHealth).toBe(75);
expect(healthComponent.isAlive()).toBe(true); expect(healthComponent.isAlive()).toBe(true);
}); });
test("should handle death correctly", () => { test('should handle death correctly', () => {
healthComponent.takeDamage(150); healthComponent.takeDamage(150);
expect(healthComponent.currentHealth).toBe(0); expect(healthComponent.currentHealth).toBe(0);
expect(healthComponent.isAlive()).toBe(false); expect(healthComponent.isAlive()).toBe(false);
@@ -1488,7 +1486,7 @@ describe("HealthComponent", () => {
**Scene Testing:** **Scene Testing:**
```typescript ```typescript
describe("GameScene Integration", () => { describe('GameScene Integration', () => {
let scene: GameScene; let scene: GameScene;
let mockGame: Phaser.Game; let mockGame: Phaser.Game;
@@ -1498,7 +1496,7 @@ describe("GameScene Integration", () => {
scene = new GameScene(); scene = new GameScene();
}); });
test("should initialize all systems", () => { test('should initialize all systems', () => {
scene.create({}); scene.create({});
expect(scene.gameManager).toBeDefined(); expect(scene.gameManager).toBeDefined();

View File

@@ -402,8 +402,8 @@ template:
version: 2.0 version: 2.0
output: output:
format: markdown format: markdown
filename: "stories/{{epic_name}}/{{story_id}}-{{story_name}}.md" filename: 'stories/{{epic_name}}/{{story_id}}-{{story_name}}.md'
title: "Story: {{story_title}}" title: 'Story: {{story_title}}'
workflow: workflow:
mode: interactive mode: interactive
@@ -412,13 +412,13 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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: Before starting, ensure you have access to:
- Game Design Document (GDD) - Game Design Document (GDD)
- Game Architecture Document - Game Architecture Document
- Any existing stories in this epic - Any existing stories in this epic
The story should be specific enough that a developer can implement it without requiring additional design decisions. The story should be specific enough that a developer can implement it without requiring additional design decisions.
- id: story-header - id: story-header
@@ -432,7 +432,7 @@ sections:
- id: description - id: description
title: Description title: Description
instruction: Provide a clear, concise description of what this story implements. Focus on the specific game feature or system being built. Reference the GDD section that defines this feature. instruction: Provide a clear, concise description of what this story implements. Focus on the specific game feature or system being built. Reference the GDD section that defines this feature.
template: "{{clear_description_of_what_needs_to_be_implemented}}" template: '{{clear_description_of_what_needs_to_be_implemented}}'
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
@@ -442,22 +442,22 @@ sections:
title: Functional Requirements title: Functional Requirements
type: checklist type: checklist
items: items:
- "{{specific_functional_requirement}}" - '{{specific_functional_requirement}}'
- id: technical-requirements - id: technical-requirements
title: Technical Requirements title: Technical Requirements
type: checklist type: checklist
items: items:
- "Code follows TypeScript strict mode standards" - 'Code follows TypeScript strict mode standards'
- "Maintains 60 FPS on target devices" - 'Maintains 60 FPS on target devices'
- "No memory leaks or performance degradation" - 'No memory leaks or performance degradation'
- "{{specific_technical_requirement}}" - '{{specific_technical_requirement}}'
- id: game-design-requirements - id: game-design-requirements
title: Game Design Requirements title: Game Design Requirements
type: checklist type: checklist
items: items:
- "{{gameplay_requirement_from_gdd}}" - '{{gameplay_requirement_from_gdd}}'
- "{{balance_requirement_if_applicable}}" - '{{balance_requirement_if_applicable}}'
- "{{player_experience_requirement}}" - '{{player_experience_requirement}}'
- id: technical-specifications - id: technical-specifications
title: Technical Specifications title: Technical Specifications
@@ -467,12 +467,12 @@ sections:
title: Files to Create/Modify title: Files to Create/Modify
template: | template: |
**New Files:** **New Files:**
- `{{file_path_1}}` - {{purpose}} - `{{file_path_1}}` - {{purpose}}
- `{{file_path_2}}` - {{purpose}} - `{{file_path_2}}` - {{purpose}}
**Modified Files:** **Modified Files:**
- `{{existing_file_1}}` - {{changes_needed}} - `{{existing_file_1}}` - {{changes_needed}}
- `{{existing_file_2}}` - {{changes_needed}} - `{{existing_file_2}}` - {{changes_needed}}
- id: class-interface-definitions - id: class-interface-definitions
@@ -487,15 +487,15 @@ sections:
{{property_2}}: {{type}}; {{property_2}}: {{type}};
{{method_1}}({{params}}): {{return_type}}; {{method_1}}({{params}}): {{return_type}};
} }
// {{class_name}} // {{class_name}}
class {{class_name}} extends {{phaser_class}} { class {{class_name}} extends {{phaser_class}} {
private {{property}}: {{type}}; private {{property}}: {{type}};
constructor({{params}}) { constructor({{params}}) {
// Implementation requirements // Implementation requirements
} }
public {{method}}({{params}}): {{return_type}} { public {{method}}({{params}}): {{return_type}} {
// Method requirements // Method requirements
} }
@@ -505,15 +505,15 @@ sections:
instruction: Specify how this feature integrates with existing systems instruction: Specify how this feature integrates with existing systems
template: | template: |
**Scene Integration:** **Scene Integration:**
- {{scene_name}}: {{integration_details}} - {{scene_name}}: {{integration_details}}
**System Dependencies:** **System Dependencies:**
- {{system_name}}: {{dependency_description}} - {{system_name}}: {{dependency_description}}
**Event Communication:** **Event Communication:**
- Emits: `{{event_name}}` when {{condition}} - Emits: `{{event_name}}` when {{condition}}
- Listens: `{{event_name}}` to {{response}} - Listens: `{{event_name}}` to {{response}}
@@ -525,7 +525,7 @@ sections:
title: Dev Agent Record title: Dev Agent Record
template: | template: |
**Tasks:** **Tasks:**
- [ ] {{task_1_description}} - [ ] {{task_1_description}}
- [ ] {{task_2_description}} - [ ] {{task_2_description}}
- [ ] {{task_3_description}} - [ ] {{task_3_description}}
@@ -533,18 +533,18 @@ sections:
- [ ] Write unit tests for {{component}} - [ ] Write unit tests for {{component}}
- [ ] Integration testing with {{related_system}} - [ ] Integration testing with {{related_system}}
- [ ] Performance testing and optimization - [ ] Performance testing and optimization
**Debug Log:** **Debug Log:**
| Task | File | Change | Reverted? | | Task | File | Change | Reverted? |
|------|------|--------|-----------| |------|------|--------|-----------|
| | | | | | | | | |
**Completion Notes:** **Completion Notes:**
<!-- Only note deviations from requirements, keep under 50 words --> <!-- Only note deviations from requirements, keep under 50 words -->
**Change Log:** **Change Log:**
<!-- Only requirement changes during implementation --> <!-- Only requirement changes during implementation -->
- id: game-design-context - id: game-design-context
@@ -552,13 +552,13 @@ sections:
instruction: Reference the specific sections of the GDD that this story implements instruction: Reference the specific sections of the GDD that this story implements
template: | template: |
**GDD Reference:** {{section_name}} ({{page_or_section_number}}) **GDD Reference:** {{section_name}} ({{page_or_section_number}})
**Game Mechanic:** {{mechanic_name}} **Game Mechanic:** {{mechanic_name}}
**Player Experience Goal:** {{experience_description}} **Player Experience Goal:** {{experience_description}}
**Balance Parameters:** **Balance Parameters:**
- {{parameter_1}}: {{value_or_range}} - {{parameter_1}}: {{value_or_range}}
- {{parameter_2}}: {{value_or_range}} - {{parameter_2}}: {{value_or_range}}
@@ -570,11 +570,11 @@ sections:
title: Unit Tests title: Unit Tests
template: | template: |
**Test Files:** **Test Files:**
- `tests/{{component_name}}.test.ts` - `tests/{{component_name}}.test.ts`
**Test Scenarios:** **Test Scenarios:**
- {{test_scenario_1}} - {{test_scenario_1}}
- {{test_scenario_2}} - {{test_scenario_2}}
- {{edge_case_test}} - {{edge_case_test}}
@@ -582,12 +582,12 @@ sections:
title: Game Testing title: Game Testing
template: | template: |
**Manual Test Cases:** **Manual Test Cases:**
1. {{test_case_1_description}} 1. {{test_case_1_description}}
- Expected: {{expected_behavior}} - Expected: {{expected_behavior}}
- Performance: {{performance_expectation}} - Performance: {{performance_expectation}}
2. {{test_case_2_description}} 2. {{test_case_2_description}}
- Expected: {{expected_behavior}} - Expected: {{expected_behavior}}
- Edge Case: {{edge_case_handling}} - Edge Case: {{edge_case_handling}}
@@ -595,7 +595,7 @@ sections:
title: Performance Tests title: Performance Tests
template: | template: |
**Metrics to Verify:** **Metrics to Verify:**
- Frame rate maintains {{fps_target}} FPS - Frame rate maintains {{fps_target}} FPS
- Memory usage stays under {{memory_limit}}MB - Memory usage stays under {{memory_limit}}MB
- {{feature_specific_performance_metric}} - {{feature_specific_performance_metric}}
@@ -605,15 +605,15 @@ sections:
instruction: List any dependencies that must be completed before this story can be implemented instruction: List any dependencies that must be completed before this story can be implemented
template: | template: |
**Story Dependencies:** **Story Dependencies:**
- {{story_id}}: {{dependency_description}} - {{story_id}}: {{dependency_description}}
**Technical Dependencies:** **Technical Dependencies:**
- {{system_or_file}}: {{requirement}} - {{system_or_file}}: {{requirement}}
**Asset Dependencies:** **Asset Dependencies:**
- {{asset_type}}: {{asset_description}} - {{asset_type}}: {{asset_description}}
- Location: `{{asset_path}}` - Location: `{{asset_path}}`
@@ -622,31 +622,31 @@ sections:
instruction: Checklist that must be completed before the story is considered finished instruction: Checklist that must be completed before the story is considered finished
type: checklist type: checklist
items: items:
- "All acceptance criteria met" - 'All acceptance criteria met'
- "Code reviewed and approved" - 'Code reviewed and approved'
- "Unit tests written and passing" - 'Unit tests written and passing'
- "Integration tests passing" - 'Integration tests passing'
- "Performance targets met" - 'Performance targets met'
- "No linting errors" - 'No linting errors'
- "Documentation updated" - 'Documentation updated'
- "{{game_specific_dod_item}}" - '{{game_specific_dod_item}}'
- id: notes - id: notes
title: Notes title: Notes
instruction: Any additional context, design decisions, or implementation notes instruction: Any additional context, design decisions, or implementation notes
template: | template: |
**Implementation Notes:** **Implementation Notes:**
- {{note_1}} - {{note_1}}
- {{note_2}} - {{note_2}}
**Design Decisions:** **Design Decisions:**
- {{decision_1}}: {{rationale}} - {{decision_1}}: {{rationale}}
- {{decision_2}}: {{rationale}} - {{decision_2}}: {{rationale}}
**Future Considerations:** **Future Considerations:**
- {{future_enhancement_1}} - {{future_enhancement_1}}
- {{future_optimization_1}} - {{future_optimization_1}}
==================== END: .bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml ==================== ==================== END: .bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml ====================

View File

@@ -1231,7 +1231,7 @@ template:
output: output:
format: markdown format: markdown
filename: docs/game-architecture.md filename: docs/game-architecture.md
title: "{{project_name}} Game Architecture Document" title: '{{project_name}} Game Architecture Document'
workflow: workflow:
mode: interactive mode: interactive
@@ -1341,11 +1341,11 @@ sections:
- Game management patterns (Singleton managers, Event systems, State machines) - Game management patterns (Singleton managers, Event systems, State machines)
- Data patterns (ScriptableObject configuration, Save/Load systems) - Data patterns (ScriptableObject configuration, Save/Load systems)
- Unity-specific patterns (Object pooling, Coroutines, Unity Events) - Unity-specific patterns (Object pooling, Coroutines, Unity Events)
template: "- **{{pattern_name}}:** {{pattern_description}} - _Rationale:_ {{rationale}}" template: '- **{{pattern_name}}:** {{pattern_description}} - _Rationale:_ {{rationale}}'
examples: examples:
- "**Component-Based Architecture:** Using MonoBehaviour components for game logic - _Rationale:_ Aligns with Unity's design philosophy and enables reusable, testable game systems" - "**Component-Based Architecture:** Using MonoBehaviour components for game logic - _Rationale:_ Aligns with Unity's design philosophy and enables reusable, testable game systems"
- "**ScriptableObject Data:** Using ScriptableObjects for game configuration - _Rationale:_ Enables data-driven design and easy balancing without code changes" - '**ScriptableObject Data:** Using ScriptableObjects for game configuration - _Rationale:_ Enables data-driven design and easy balancing without code changes'
- "**Event-Driven Communication:** Using Unity Events and C# events for system decoupling - _Rationale:_ Supports modular architecture and easier testing" - '**Event-Driven Communication:** Using Unity Events and C# events for system decoupling - _Rationale:_ Supports modular architecture and easier testing'
- id: tech-stack - id: tech-stack
title: Tech Stack title: Tech Stack
@@ -1384,13 +1384,13 @@ sections:
columns: [Category, Technology, Version, Purpose, Rationale] columns: [Category, Technology, Version, Purpose, Rationale]
instruction: Populate the technology stack table with all relevant Unity technologies instruction: Populate the technology stack table with all relevant Unity technologies
examples: examples:
- "| **Game Engine** | Unity | 2022.3.21f1 | Core game development platform | Latest LTS version, stable 2D tooling, comprehensive package ecosystem |" - '| **Game Engine** | Unity | 2022.3.21f1 | Core game development platform | Latest LTS version, stable 2D tooling, comprehensive package ecosystem |'
- "| **Language** | C# | 10.0 | Primary scripting language | Unity's native language, strong typing, excellent tooling |" - "| **Language** | C# | 10.0 | Primary scripting language | Unity's native language, strong typing, excellent tooling |"
- "| **Render Pipeline** | Universal Render Pipeline (URP) | 14.0.10 | 2D/3D rendering | Optimized for mobile, excellent 2D features, future-proof |" - '| **Render Pipeline** | Universal Render Pipeline (URP) | 14.0.10 | 2D/3D rendering | Optimized for mobile, excellent 2D features, future-proof |'
- "| **Input System** | Unity Input System | 1.7.0 | Cross-platform input handling | Modern input system, supports multiple devices, rebindable controls |" - '| **Input System** | Unity Input System | 1.7.0 | Cross-platform input handling | Modern input system, supports multiple devices, rebindable controls |'
- "| **Physics** | Unity 2D Physics | Built-in | 2D collision and physics | Integrated Box2D, optimized for 2D games |" - '| **Physics** | Unity 2D Physics | Built-in | 2D collision and physics | Integrated Box2D, optimized for 2D games |'
- "| **Audio** | Unity Audio | Built-in | Audio playback and mixing | Built-in audio system with mixer support |" - '| **Audio** | Unity Audio | Built-in | Audio playback and mixing | Built-in audio system with mixer support |'
- "| **Testing** | Unity Test Framework | 1.1.33 | Unit and integration testing | Built-in testing framework based on NUnit |" - '| **Testing** | Unity Test Framework | 1.1.33 | Unit and integration testing | Built-in testing framework based on NUnit |'
- id: data-models - id: data-models
title: Game Data Models title: Game Data Models
@@ -1408,7 +1408,7 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: model - id: model
title: "{{model_name}}" title: '{{model_name}}'
template: | template: |
**Purpose:** {{model_purpose}} **Purpose:** {{model_purpose}}
@@ -1443,7 +1443,7 @@ sections:
sections: sections:
- id: system-list - id: system-list
repeatable: true repeatable: true
title: "{{system_name}} System" title: '{{system_name}} System'
template: | template: |
**Responsibility:** {{system_description}} **Responsibility:** {{system_description}}
@@ -1967,7 +1967,7 @@ sections:
repeatable: true repeatable: true
sections: sections:
- id: integration - id: integration
title: "{{service_name}} Integration" title: '{{service_name}} Integration'
template: | template: |
- **Purpose:** {{service_purpose}} - **Purpose:** {{service_purpose}}
- **Documentation:** {{service_docs_url}} - **Documentation:** {{service_docs_url}}
@@ -2079,12 +2079,12 @@ sections:
- id: environments - id: environments
title: Build Environments title: Build Environments
repeatable: true repeatable: true
template: "- **{{env_name}}:** {{env_purpose}} - {{platform_settings}}" template: '- **{{env_name}}:** {{env_purpose}} - {{platform_settings}}'
- id: platform-specific-builds - id: platform-specific-builds
title: Platform-Specific Build Settings title: Platform-Specific Build Settings
type: code type: code
language: text language: text
template: "{{platform_build_configurations}}" template: '{{platform_build_configurations}}'
- id: coding-standards - id: coding-standards
title: Coding Standards title: Coding Standards
@@ -2113,9 +2113,9 @@ sections:
columns: [Element, Convention, Example] columns: [Element, Convention, Example]
instruction: Only include if deviating from Unity defaults instruction: Only include if deviating from Unity defaults
examples: examples:
- "| MonoBehaviour | PascalCase + Component suffix | PlayerController, HealthSystem |" - '| MonoBehaviour | PascalCase + Component suffix | PlayerController, HealthSystem |'
- "| ScriptableObject | PascalCase + Data/Config suffix | PlayerData, GameConfig |" - '| ScriptableObject | PascalCase + Data/Config suffix | PlayerData, GameConfig |'
- "| Prefab | PascalCase descriptive | PlayerCharacter, EnvironmentTile |" - '| Prefab | PascalCase descriptive | PlayerCharacter, EnvironmentTile |'
- id: critical-rules - id: critical-rules
title: Critical Unity Rules title: Critical Unity Rules
instruction: | instruction: |
@@ -2127,7 +2127,7 @@ sections:
Avoid obvious rules like "follow SOLID principles" or "optimize performance" Avoid obvious rules like "follow SOLID principles" or "optimize performance"
repeatable: true repeatable: true
template: "- **{{rule_name}}:** {{rule_description}}" template: '- **{{rule_name}}:** {{rule_description}}'
- id: unity-specifics - id: unity-specifics
title: Unity-Specific Guidelines title: Unity-Specific Guidelines
condition: Critical Unity-specific rules needed condition: Critical Unity-specific rules needed
@@ -2136,7 +2136,7 @@ sections:
- id: unity-lifecycle - id: unity-lifecycle
title: Unity Lifecycle Rules title: Unity Lifecycle Rules
repeatable: true repeatable: true
template: "- **{{lifecycle_method}}:** {{usage_rule}}" template: '- **{{lifecycle_method}}:** {{usage_rule}}'
- id: test-strategy - id: test-strategy
title: Test Strategy and Standards title: Test Strategy and Standards
@@ -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` - **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` - **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` - **Trae**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
- **Roo Code**: Select mode from mode selector with bmad2du prefix - **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. - **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select the appropriate game agent.

File diff suppressed because it is too large Load Diff

View File

@@ -514,8 +514,8 @@ template:
version: 3.0 version: 3.0
output: output:
format: markdown format: markdown
filename: "stories/{{epic_name}}/{{story_id}}-{{story_name}}.md" filename: 'stories/{{epic_name}}/{{story_id}}-{{story_name}}.md'
title: "Story: {{story_title}}" title: 'Story: {{story_title}}'
workflow: workflow:
mode: interactive mode: interactive
@@ -524,13 +524,13 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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: Before starting, ensure you have access to:
- Game Design Document (GDD) - Game Design Document (GDD)
- Game Architecture Document - Game Architecture Document
- Any existing stories in this epic - Any existing stories in this epic
The story should be specific enough that a developer can implement it without requiring additional design decisions. The story should be specific enough that a developer can implement it without requiring additional design decisions.
- id: story-header - id: story-header
@@ -544,7 +544,7 @@ sections:
- id: description - id: description
title: Description title: Description
instruction: Provide a clear, concise description of what this story implements. Focus on the specific game feature or system being built. Reference the GDD section that defines this feature. instruction: Provide a clear, concise description of what this story implements. Focus on the specific game feature or system being built. Reference the GDD section that defines this feature.
template: "{{clear_description_of_what_needs_to_be_implemented}}" template: '{{clear_description_of_what_needs_to_be_implemented}}'
- id: acceptance-criteria - id: acceptance-criteria
title: Acceptance Criteria title: Acceptance Criteria
@@ -554,7 +554,7 @@ sections:
title: Functional Requirements title: Functional Requirements
type: checklist type: checklist
items: items:
- "{{specific_functional_requirement}}" - '{{specific_functional_requirement}}'
- id: technical-requirements - id: technical-requirements
title: Technical Requirements title: Technical Requirements
type: checklist type: checklist
@@ -562,14 +562,14 @@ sections:
- Code follows C# best practices - Code follows C# best practices
- Maintains stable frame rate on target devices - Maintains stable frame rate on target devices
- No memory leaks or performance degradation - No memory leaks or performance degradation
- "{{specific_technical_requirement}}" - '{{specific_technical_requirement}}'
- id: game-design-requirements - id: game-design-requirements
title: Game Design Requirements title: Game Design Requirements
type: checklist type: checklist
items: items:
- "{{gameplay_requirement_from_gdd}}" - '{{gameplay_requirement_from_gdd}}'
- "{{balance_requirement_if_applicable}}" - '{{balance_requirement_if_applicable}}'
- "{{player_experience_requirement}}" - '{{player_experience_requirement}}'
- id: technical-specifications - id: technical-specifications
title: Technical Specifications title: Technical Specifications
@@ -579,12 +579,12 @@ sections:
title: Files to Create/Modify title: Files to Create/Modify
template: | template: |
**New Files:** **New Files:**
- `{{file_path_1}}` - {{purpose}} - `{{file_path_1}}` - {{purpose}}
- `{{file_path_2}}` - {{purpose}} - `{{file_path_2}}` - {{purpose}}
**Modified Files:** **Modified Files:**
- `{{existing_file_1}}` - {{changes_needed}} - `{{existing_file_1}}` - {{changes_needed}}
- `{{existing_file_2}}` - {{changes_needed}} - `{{existing_file_2}}` - {{changes_needed}}
- id: class-interface-definitions - id: class-interface-definitions
@@ -667,13 +667,13 @@ sections:
instruction: Reference the specific sections of the GDD that this story implements instruction: Reference the specific sections of the GDD that this story implements
template: | template: |
**GDD Reference:** {{section_name}} ({{page_or_section_number}}) **GDD Reference:** {{section_name}} ({{page_or_section_number}})
**Game Mechanic:** {{mechanic_name}} **Game Mechanic:** {{mechanic_name}}
**Player Experience Goal:** {{experience_description}} **Player Experience Goal:** {{experience_description}}
**Balance Parameters:** **Balance Parameters:**
- {{parameter_1}}: {{value_or_range}} - {{parameter_1}}: {{value_or_range}}
- {{parameter_2}}: {{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 instruction: List any dependencies that must be completed before this story can be implemented
template: | template: |
**Story Dependencies:** **Story Dependencies:**
- {{story_id}}: {{dependency_description}} - {{story_id}}: {{dependency_description}}
**Technical Dependencies:** **Technical Dependencies:**
- {{system_or_file}}: {{requirement}} - {{system_or_file}}: {{requirement}}
**Asset Dependencies:** **Asset Dependencies:**
- {{asset_type}}: {{asset_description}} - {{asset_type}}: {{asset_description}}
- Location: `{{asset_path}}` - Location: `{{asset_path}}`
@@ -744,24 +744,24 @@ sections:
- Performance targets met - Performance targets met
- No C# compiler errors or warnings - No C# compiler errors or warnings
- Documentation updated - Documentation updated
- "{{game_specific_dod_item}}" - '{{game_specific_dod_item}}'
- id: notes - id: notes
title: Notes title: Notes
instruction: Any additional context, design decisions, or implementation notes instruction: Any additional context, design decisions, or implementation notes
template: | template: |
**Implementation Notes:** **Implementation Notes:**
- {{note_1}} - {{note_1}}
- {{note_2}} - {{note_2}}
**Design Decisions:** **Design Decisions:**
- {{decision_1}}: {{rationale}} - {{decision_1}}: {{rationale}}
- {{decision_2}}: {{rationale}} - {{decision_2}}: {{rationale}}
**Future Considerations:** **Future Considerations:**
- {{future_enhancement_1}} - {{future_enhancement_1}}
- {{future_optimization_1}} - {{future_optimization_1}}
==================== END: .bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml ==================== ==================== END: .bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml ====================

File diff suppressed because it is too large Load Diff

View File

@@ -530,40 +530,40 @@ template:
output: output:
format: markdown format: markdown
filename: docs/infrastructure-architecture.md filename: docs/infrastructure-architecture.md
title: "{{project_name}} Infrastructure Architecture" title: '{{project_name}} Infrastructure Architecture'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
custom_elicitation: custom_elicitation:
title: "Infrastructure Architecture Elicitation Actions" title: 'Infrastructure Architecture Elicitation Actions'
sections: sections:
- id: infrastructure-overview - id: infrastructure-overview
options: options:
- "Multi-Cloud Strategy Analysis - Evaluate cloud provider options and vendor lock-in considerations" - 'Multi-Cloud Strategy Analysis - Evaluate cloud provider options and vendor lock-in considerations'
- "Regional Distribution Planning - Analyze latency requirements and data residency needs" - 'Regional Distribution Planning - Analyze latency requirements and data residency needs'
- "Environment Isolation Strategy - Design security boundaries and resource segregation" - 'Environment Isolation Strategy - Design security boundaries and resource segregation'
- "Scalability Patterns Review - Assess auto-scaling needs and traffic patterns" - 'Scalability Patterns Review - Assess auto-scaling needs and traffic patterns'
- "Compliance Requirements Analysis - Review regulatory and security compliance needs" - 'Compliance Requirements Analysis - Review regulatory and security compliance needs'
- "Cost-Benefit Analysis - Compare infrastructure options and TCO" - 'Cost-Benefit Analysis - Compare infrastructure options and TCO'
- "Proceed to next section" - 'Proceed to next section'
sections: sections:
- id: initial-setup - id: initial-setup
instruction: | instruction: |
Initial Setup Initial Setup
1. Replace {{project_name}} with the actual project name throughout the document 1. Replace {{project_name}} with the actual project name throughout the document
2. Gather and review required inputs: 2. Gather and review required inputs:
- Product Requirements Document (PRD) - Required for business needs and scale requirements - Product Requirements Document (PRD) - Required for business needs and scale requirements
- Main System Architecture - Required for infrastructure dependencies - Main System Architecture - Required for infrastructure dependencies
- Technical Preferences/Tech Stack Document - Required for technology choices - Technical Preferences/Tech Stack Document - Required for technology choices
- PRD Technical Assumptions - Required for cross-referencing repository and service architecture - 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?" 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> 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` Output file location: `docs/infrastructure-architecture.md`
- id: infrastructure-overview - id: infrastructure-overview
@@ -592,7 +592,7 @@ sections:
- Repository Structure - Repository Structure
- State Management - State Management
- Dependency Management - Dependency Management
<critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule> <critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule>
- id: environment-configuration - id: environment-configuration
@@ -606,7 +606,7 @@ sections:
sections: sections:
- id: environments - id: environments
repeatable: true repeatable: true
title: "{{environment_name}} Environment" title: '{{environment_name}} Environment'
template: | template: |
- **Purpose:** {{environment_purpose}} - **Purpose:** {{environment_purpose}}
- **Resources:** {{environment_resources}} - **Resources:** {{environment_resources}}
@@ -628,7 +628,7 @@ sections:
title: Network Architecture title: Network Architecture
instruction: | instruction: |
Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns. Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns.
Create Mermaid diagram showing: Create Mermaid diagram showing:
- VPC/Network structure - VPC/Network structure
- Security zones and boundaries - Security zones and boundaries
@@ -691,7 +691,7 @@ sections:
title: Data Resources title: Data Resources
instruction: | instruction: |
Design data infrastructure based on data architecture from main system design. Consider data volumes, access patterns, compliance, and recovery requirements. 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: Create data flow diagram showing:
- Database topology - Database topology
- Replication patterns - Replication patterns
@@ -712,7 +712,7 @@ sections:
- Data Encryption - Data Encryption
- Compliance Controls - Compliance Controls
- Security Scanning & Monitoring - Security Scanning & Monitoring
<critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule> <critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule>
- id: shared-responsibility - id: shared-responsibility
@@ -748,7 +748,7 @@ sections:
title: CI/CD Pipeline title: CI/CD Pipeline
instruction: | instruction: |
Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates. Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates.
Create pipeline diagram showing: Create pipeline diagram showing:
- Build stages - Build stages
- Test gates - Test gates
@@ -779,7 +779,7 @@ sections:
- Recovery Procedures - Recovery Procedures
- RTO & RPO Targets - RTO & RPO Targets
- DR Testing Approach - DR Testing Approach
<critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule> <critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule>
- id: cost-optimization - id: cost-optimization
@@ -821,15 +821,15 @@ sections:
title: DevOps/Platform Feasibility Review title: DevOps/Platform Feasibility Review
instruction: | instruction: |
CRITICAL STEP - Present architectural blueprint summary to DevOps/Platform Engineering Agent for feasibility review. Request specific feedback on: 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? - **Operational Complexity:** Are the proposed patterns implementable with current tooling and expertise?
- **Resource Constraints:** Do infrastructure requirements align with available resources and budgets? - **Resource Constraints:** Do infrastructure requirements align with available resources and budgets?
- **Security Implementation:** Are security patterns achievable with current security toolchain? - **Security Implementation:** Are security patterns achievable with current security toolchain?
- **Operational Overhead:** Will the proposed architecture create excessive operational burden? - **Operational Overhead:** Will the proposed architecture create excessive operational burden?
- **Technology Constraints:** Are selected technologies compatible with existing infrastructure? - **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. 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> <critical_rule>Address all critical feasibility concerns before proceeding to final architecture documentation. If critical blockers identified, revise architecture before continuing.</critical_rule>
sections: sections:
- id: feasibility-results - id: feasibility-results
@@ -847,7 +847,7 @@ sections:
title: Validation Framework title: Validation Framework
content: | 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: 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 - Completeness of architecture documentation
- Consistency with broader system architecture - Consistency with broader system architecture
- Appropriate level of detail for different stakeholders - Appropriate level of detail for different stakeholders
@@ -857,12 +857,12 @@ sections:
title: Validation Process title: Validation Process
content: | content: |
The architecture documentation validation should be performed: The architecture documentation validation should be performed:
- After initial architecture development - After initial architecture development
- After significant architecture changes - After significant architecture changes
- Before major implementation phases - Before major implementation phases
- During periodic architecture reviews - During periodic architecture reviews
The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document. The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document.
- id: implementation-handoff - id: implementation-handoff
@@ -873,7 +873,7 @@ sections:
title: Architecture Decision Records (ADRs) title: Architecture Decision Records (ADRs)
content: | content: |
Create ADRs for key infrastructure decisions: Create ADRs for key infrastructure decisions:
- Cloud provider selection rationale - Cloud provider selection rationale
- Container orchestration platform choice - Container orchestration platform choice
- Networking architecture decisions - Networking architecture decisions
@@ -883,7 +883,7 @@ sections:
title: Implementation Validation Criteria title: Implementation Validation Criteria
content: | content: |
Define specific criteria for validating correct implementation: Define specific criteria for validating correct implementation:
- Infrastructure as Code quality gates - Infrastructure as Code quality gates
- Security compliance checkpoints - Security compliance checkpoints
- Performance benchmarks - 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. 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: | content: |
--- ---
_Document Version: 1.0_ _Document Version: 1.0_
_Last Updated: {{current_date}}_ _Last Updated: {{current_date}}_
_Next Review: {{review_date}}_ _Next Review: {{review_date}}_
@@ -957,30 +957,30 @@ template:
output: output:
format: markdown format: markdown
filename: docs/platform-infrastructure/platform-implementation.md filename: docs/platform-infrastructure/platform-implementation.md
title: "{{project_name}} Platform Infrastructure Implementation" title: '{{project_name}} Platform Infrastructure Implementation'
workflow: workflow:
mode: interactive mode: interactive
elicitation: advanced-elicitation elicitation: advanced-elicitation
custom_elicitation: custom_elicitation:
title: "Platform Implementation Elicitation Actions" title: 'Platform Implementation Elicitation Actions'
sections: sections:
- id: foundation-infrastructure - id: foundation-infrastructure
options: options:
- "Platform Layer Security Hardening - Additional security controls and compliance validation" - 'Platform Layer Security Hardening - Additional security controls and compliance validation'
- "Performance Optimization - Network and resource optimization" - 'Performance Optimization - Network and resource optimization'
- "Operational Excellence Enhancement - Automation and monitoring improvements" - 'Operational Excellence Enhancement - Automation and monitoring improvements'
- "Platform Integration Validation - Verify foundation supports upper layers" - 'Platform Integration Validation - Verify foundation supports upper layers'
- "Developer Experience Analysis - Foundation impact on developer workflows" - 'Developer Experience Analysis - Foundation impact on developer workflows'
- "Disaster Recovery Testing - Foundation resilience validation" - 'Disaster Recovery Testing - Foundation resilience validation'
- "BMAD Workflow Integration - Cross-agent support verification" - 'BMAD Workflow Integration - Cross-agent support verification'
- "Finalize and Proceed to Container Platform" - 'Finalize and Proceed to Container Platform'
sections: sections:
- id: initial-setup - id: initial-setup
instruction: | instruction: |
Initial Setup Initial Setup
1. Replace {{project_name}} with the actual project name throughout the document 1. Replace {{project_name}} with the actual project name throughout the document
2. Gather and review required inputs: 2. Gather and review required inputs:
- **Infrastructure Architecture Document** (Primary input - REQUIRED) - **Infrastructure Architecture Document** (Primary input - REQUIRED)
@@ -989,10 +989,10 @@ sections:
- Technology Stack Document - Technology Stack Document
- Infrastructure Checklist - 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." - 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 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> 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` Output file location: `docs/platform-infrastructure/platform-implementation.md`
- id: executive-summary - id: executive-summary
@@ -1065,7 +1065,7 @@ sections:
# Example Terraform for VPC setup # Example Terraform for VPC setup
module "vpc" { module "vpc" {
source = "./modules/vpc" source = "./modules/vpc"
cidr_block = "{{vpc_cidr}}" cidr_block = "{{vpc_cidr}}"
availability_zones = {{availability_zones}} availability_zones = {{availability_zones}}
public_subnets = {{public_subnets}} public_subnets = {{public_subnets}}
@@ -1460,7 +1460,7 @@ sections:
// K6 Load Test Example // K6 Load Test Example
import http from 'k6/http'; import http from 'k6/http';
import { check } from 'k6'; import { check } from 'k6';
export let options = { export let options = {
stages: [ stages: [
{ duration: '5m', target: {{target_users}} }, { 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. 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: | content: |
--- ---
_Platform Version: 1.0_ _Platform Version: 1.0_
_Implementation Date: {{implementation_date}}_ _Implementation Date: {{implementation_date}}_
_Next Review: {{review_date}}_ _Next Review: {{review_date}}_

2230
dist/teams/team-all.txt vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -29,14 +29,14 @@ The Test Architect (Quinn) provides comprehensive quality assurance throughout t
### Quick Command Reference ### Quick Command Reference
| **Stage** | **Command** | **Purpose** | **Output** | **Priority** | | **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 | | **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 | | | `*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 | | **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 | | | `*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** | | **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 | | **Post-Review** | `*gate` | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` | As needed |
### Stage 1: After Story Creation (Before Dev Starts) ### 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 ### Understanding Gate Decisions
| **Status** | **Meaning** | **Action Required** | **Can Proceed?** | | **Status** | **Meaning** | **Action Required** | **Can Proceed?** |
|------------|-------------|-------------------|------------------| | ------------ | -------------------------------------------- | ----------------------- | ---------------- |
| **PASS** | All critical requirements met | None | ✅ Yes | | **PASS** | All critical requirements met | None | ✅ Yes |
| **CONCERNS** | Non-critical issues found | Team review recommended | ⚠️ With caution | | **CONCERNS** | Non-critical issues found | Team review recommended | ⚠️ With caution |
| **FAIL** | Critical issues (security, missing P0 tests) | Must fix | ❌ No | | **FAIL** | Critical issues (security, missing P0 tests) | Must fix | ❌ No |
| **WAIVED** | Issues acknowledged and accepted | Document reasoning | ✅ With approval | | **WAIVED** | Issues acknowledged and accepted | Document reasoning | ✅ With approval |
### Risk-Based Testing Strategy ### Risk-Based Testing Strategy
The Test Architect uses risk scoring to prioritize testing: The Test Architect uses risk scoring to prioritize testing:
| **Risk Score** | **Calculation** | **Testing Priority** | **Gate Impact** | | **Risk Score** | **Calculation** | **Testing Priority** | **Gate Impact** |
|---------------|----------------|-------------------|----------------| | -------------- | ------------------------------ | ------------------------- | ------------------------ |
| **9** | High probability × High impact | P0 - Must test thoroughly | FAIL if untested | | **9** | High probability × High impact | P0 - Must test thoroughly | FAIL if untested |
| **6** | Medium-high combinations | P1 - Should test well | CONCERNS if gaps | | **6** | Medium-high combinations | P1 - Should test well | CONCERNS if gaps |
| **4** | Medium combinations | P1 - Should test | CONCERNS if notable gaps | | **4** | Medium combinations | P1 - Should test | CONCERNS if notable gaps |
| **2-3** | Low-medium combinations | P2 - Nice to have | Note in review | | **2-3** | Low-medium combinations | P2 - Nice to have | Note in review |
| **1** | Minimal risk | P2 - Minimal | Note in review | | **1** | Minimal risk | P2 - Minimal | Note in review |
### Special Situations & Best Practices ### Special Situations & Best Practices
@@ -227,14 +227,14 @@ All Test Architect activities create permanent records:
**Should I run Test Architect commands?** **Should I run Test Architect commands?**
| **Scenario** | **Before Dev** | **During Dev** | **After Dev** | | **Scenario** | **Before Dev** | **During Dev** | **After Dev** |
|-------------|---------------|----------------|---------------| | ------------------------ | ------------------------------- | ---------------------------- | ---------------------------- |
| **Simple bug fix** | Optional | Optional | Required `*review` | | **Simple bug fix** | Optional | Optional | Required `*review` |
| **New feature** | Recommended `*risk`, `*design` | Optional `*trace` | Required `*review` | | **New feature** | Recommended `*risk`, `*design` | Optional `*trace` | Required `*review` |
| **Brownfield change** | **Required** `*risk`, `*design` | Recommended `*trace`, `*nfr` | Required `*review` | | **Brownfield change** | **Required** `*risk`, `*design` | Recommended `*trace`, `*nfr` | Required `*review` |
| **API modification** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` | | **API modification** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` |
| **Performance-critical** | Recommended `*design` | **Required** `*nfr` | Required `*review` | | **Performance-critical** | Recommended `*design` | **Required** `*nfr` | Required `*review` |
| **Data migration** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` + `*gate` | | **Data migration** | **Required** `*risk`, `*design` | **Required** `*trace` | Required `*review` + `*gate` |
### Success Metrics ### Success Metrics

View File

@@ -277,7 +277,7 @@ The documentation uses short forms for convenience. Both styles are valid:
```text ```text
*risk → *risk-profile *risk → *risk-profile
*design → *test-design *design → *test-design
*nfr → *nfr-assess *nfr → *nfr-assess
*trace → *trace-requirements (or just *trace) *trace → *trace-requirements (or just *trace)
*review → *review *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: 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** | | **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` | | **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` | | | `*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` | | **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` | | | `*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 | | **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` | | **Post-Review** | `*gate` | After fixing issues | Update quality decision | Updated `docs/qa/gates/{epic}.{story}-{slug}.yml` |
#### Example Commands #### Example Commands

119
eslint.config.mjs Normal file
View 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',
},
},
];

View File

@@ -1,26 +1,26 @@
steps: steps:
# Build the container image # Build the container image
- name: 'gcr.io/cloud-builders/docker' - name: "gcr.io/cloud-builders/docker"
args: ['build', '-t', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA', '.'] args: ["build", "-t", "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA", "."]
# Push the container image to Container Registry # Push the container image to Container Registry
- name: 'gcr.io/cloud-builders/docker' - name: "gcr.io/cloud-builders/docker"
args: ['push', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA'] args: ["push", "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"]
# Deploy container image to Cloud Run # Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: gcloud entrypoint: gcloud
args: args:
- 'run' - "run"
- 'deploy' - "deploy"
- '{{COMPANY_NAME}}-ai-agents' - "{{COMPANY_NAME}}-ai-agents"
- '--image' - "--image"
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA' - "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"
- '--region' - "--region"
- '{{LOCATION}}' - "{{LOCATION}}"
- '--platform' - "--platform"
- 'managed' - "managed"
- '--allow-unauthenticated' - "--allow-unauthenticated"
images: images:
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA' - "gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA"

View File

@@ -60,10 +60,10 @@ commands:
task-execution: task-execution:
flow: Read story → Implement game feature → Write tests → Pass tests → Update [x] → Next task flow: Read story → Implement game feature → Write tests → Pass tests → Update [x] → Next task
updates-ONLY: updates-ONLY:
- "Checkboxes: [ ] not started | [-] in progress | [x] complete" - 'Checkboxes: [ ] not started | [-] in progress | [x] complete'
- "Debug Log: | Task | File | Change | Reverted? |" - 'Debug Log: | Task | File | Change | Reverted? |'
- "Completion Notes: Deviations only, <50 words" - 'Completion Notes: Deviations only, <50 words'
- "Change Log: Requirement changes only" - 'Change Log: Requirement changes only'
blocking: Unapproved deps | Ambiguous after story check | 3 failures | Missing game config 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 done: Game feature works + Tests pass + 60 FPS + No lint errors + Follows Phaser 3 best practices
dependencies: dependencies:

View File

@@ -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 - 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! - 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: 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: agent:
name: Jordan name: Jordan
id: game-sm id: game-sm

View File

@@ -73,7 +73,7 @@ interface GameState {
interface GameSettings { interface GameSettings {
musicVolume: number; musicVolume: number;
sfxVolume: number; sfxVolume: number;
difficulty: "easy" | "normal" | "hard"; difficulty: 'easy' | 'normal' | 'hard';
controls: ControlScheme; controls: ControlScheme;
} }
``` ```
@@ -114,12 +114,12 @@ class GameScene extends Phaser.Scene {
private inputManager!: InputManager; private inputManager!: InputManager;
constructor() { constructor() {
super({ key: "GameScene" }); super({ key: 'GameScene' });
} }
preload(): void { preload(): void {
// Load only scene-specific assets // Load only scene-specific assets
this.load.image("player", "assets/player.png"); this.load.image('player', 'assets/player.png');
} }
create(data: SceneData): void { create(data: SceneData): void {
@@ -144,7 +144,7 @@ class GameScene extends Phaser.Scene {
this.inputManager.destroy(); this.inputManager.destroy();
// Remove event listeners // Remove event listeners
this.events.off("*"); this.events.off('*');
} }
} }
``` ```
@@ -153,13 +153,13 @@ class GameScene extends Phaser.Scene {
```typescript ```typescript
// Proper scene transitions with data // Proper scene transitions with data
this.scene.start("NextScene", { this.scene.start('NextScene', {
playerScore: this.playerScore, playerScore: this.playerScore,
currentLevel: this.currentLevel + 1, currentLevel: this.currentLevel + 1,
}); });
// Scene overlays for UI // Scene overlays for UI
this.scene.launch("PauseMenuScene"); this.scene.launch('PauseMenuScene');
this.scene.pause(); this.scene.pause();
``` ```
@@ -203,7 +203,7 @@ class Player extends GameEntity {
private health!: HealthComponent; private health!: HealthComponent;
constructor(scene: Phaser.Scene, x: number, y: number) { 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.movement = this.addComponent(new MovementComponent(this));
this.health = this.addComponent(new HealthComponent(this, 100)); this.health = this.addComponent(new HealthComponent(this, 100));
@@ -223,7 +223,7 @@ class GameManager {
constructor(scene: Phaser.Scene) { constructor(scene: Phaser.Scene) {
if (GameManager.instance) { if (GameManager.instance) {
throw new Error("GameManager already exists!"); throw new Error('GameManager already exists!');
} }
this.scene = scene; this.scene = scene;
@@ -233,7 +233,7 @@ class GameManager {
static getInstance(): GameManager { static getInstance(): GameManager {
if (!GameManager.instance) { if (!GameManager.instance) {
throw new Error("GameManager not initialized!"); throw new Error('GameManager not initialized!');
} }
return GameManager.instance; return GameManager.instance;
} }
@@ -280,7 +280,7 @@ class BulletPool {
} }
// Pool exhausted - create new bullet // 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); return new Bullet(this.scene, 0, 0);
} }
@@ -380,14 +380,12 @@ class InputManager {
} }
private setupKeyboard(): void { private setupKeyboard(): void {
this.keys = this.scene.input.keyboard.addKeys( this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
);
} }
private setupTouch(): void { private setupTouch(): void {
this.scene.input.on("pointerdown", this.handlePointerDown, this); this.scene.input.on('pointerdown', this.handlePointerDown, this);
this.scene.input.on("pointerup", this.handlePointerUp, this); this.scene.input.on('pointerup', this.handlePointerUp, this);
} }
update(): void { update(): void {
@@ -414,9 +412,9 @@ class InputManager {
class AssetManager { class AssetManager {
loadAssets(): Promise<void> { loadAssets(): Promise<void> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.scene.load.on("filecomplete", this.handleFileComplete, this); this.scene.load.on('filecomplete', this.handleFileComplete, this);
this.scene.load.on("loaderror", this.handleLoadError, this); this.scene.load.on('loaderror', this.handleLoadError, this);
this.scene.load.on("complete", () => resolve()); this.scene.load.on('complete', () => resolve());
this.scene.load.start(); this.scene.load.start();
}); });
@@ -432,8 +430,8 @@ class AssetManager {
private loadFallbackAsset(key: string): void { private loadFallbackAsset(key: string): void {
// Load placeholder or default assets // Load placeholder or default assets
switch (key) { switch (key) {
case "player": case 'player':
this.scene.load.image("player", "assets/defaults/default-player.png"); this.scene.load.image('player', 'assets/defaults/default-player.png');
break; break;
default: default:
console.warn(`No fallback for asset: ${key}`); console.warn(`No fallback for asset: ${key}`);
@@ -460,11 +458,11 @@ class GameSystem {
private attemptRecovery(context: string): void { private attemptRecovery(context: string): void {
switch (context) { switch (context) {
case "update": case 'update':
// Reset system state // Reset system state
this.reset(); this.reset();
break; break;
case "render": case 'render':
// Disable visual effects // Disable visual effects
this.disableEffects(); this.disableEffects();
break; break;
@@ -484,7 +482,7 @@ class GameSystem {
```typescript ```typescript
// Example test for game mechanics // Example test for game mechanics
describe("HealthComponent", () => { describe('HealthComponent', () => {
let healthComponent: HealthComponent; let healthComponent: HealthComponent;
beforeEach(() => { beforeEach(() => {
@@ -492,18 +490,18 @@ describe("HealthComponent", () => {
healthComponent = new HealthComponent(mockEntity, 100); healthComponent = new HealthComponent(mockEntity, 100);
}); });
test("should initialize with correct health", () => { test('should initialize with correct health', () => {
expect(healthComponent.currentHealth).toBe(100); expect(healthComponent.currentHealth).toBe(100);
expect(healthComponent.maxHealth).toBe(100); expect(healthComponent.maxHealth).toBe(100);
}); });
test("should handle damage correctly", () => { test('should handle damage correctly', () => {
healthComponent.takeDamage(25); healthComponent.takeDamage(25);
expect(healthComponent.currentHealth).toBe(75); expect(healthComponent.currentHealth).toBe(75);
expect(healthComponent.isAlive()).toBe(true); expect(healthComponent.isAlive()).toBe(true);
}); });
test("should handle death correctly", () => { test('should handle death correctly', () => {
healthComponent.takeDamage(150); healthComponent.takeDamage(150);
expect(healthComponent.currentHealth).toBe(0); expect(healthComponent.currentHealth).toBe(0);
expect(healthComponent.isAlive()).toBe(false); expect(healthComponent.isAlive()).toBe(false);
@@ -516,7 +514,7 @@ describe("HealthComponent", () => {
**Scene Testing:** **Scene Testing:**
```typescript ```typescript
describe("GameScene Integration", () => { describe('GameScene Integration', () => {
let scene: GameScene; let scene: GameScene;
let mockGame: Phaser.Game; let mockGame: Phaser.Game;
@@ -526,7 +524,7 @@ describe("GameScene Integration", () => {
scene = new GameScene(); scene = new GameScene();
}); });
test("should initialize all systems", () => { test('should initialize all systems', () => {
scene.create({}); scene.create({});
expect(scene.gameManager).toBeDefined(); expect(scene.gameManager).toBeDefined();

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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. 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 - id: introduction
@@ -22,7 +22,7 @@ sections:
instruction: Establish the document's purpose and scope for game development instruction: Establish the document's purpose and scope for game development
content: | 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 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. 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: sections:
- id: change-log - id: change-log
@@ -41,7 +41,7 @@ sections:
title: Architecture Summary title: Architecture Summary
instruction: | instruction: |
Provide a comprehensive overview covering: Provide a comprehensive overview covering:
- Game engine choice and configuration - Game engine choice and configuration
- Project structure and organization - Project structure and organization
- Key systems and their interactions - Key systems and their interactions
@@ -129,23 +129,23 @@ sections:
title: Scene Management System title: Scene Management System
template: | template: |
**Purpose:** Handle game flow and scene transitions **Purpose:** Handle game flow and scene transitions
**Key Components:** **Key Components:**
- Scene loading and unloading - Scene loading and unloading
- Data passing between scenes - Data passing between scenes
- Transition effects - Transition effects
- Memory management - Memory management
**Implementation Requirements:** **Implementation Requirements:**
- Preload scene for asset loading - Preload scene for asset loading
- Menu system with navigation - Menu system with navigation
- Gameplay scenes with state management - Gameplay scenes with state management
- Pause/resume functionality - Pause/resume functionality
**Files to Create:** **Files to Create:**
- `src/scenes/BootScene.ts` - `src/scenes/BootScene.ts`
- `src/scenes/PreloadScene.ts` - `src/scenes/PreloadScene.ts`
- `src/scenes/MenuScene.ts` - `src/scenes/MenuScene.ts`
@@ -155,23 +155,23 @@ sections:
title: Game State Management title: Game State Management
template: | template: |
**Purpose:** Track player progress and game status **Purpose:** Track player progress and game status
**State Categories:** **State Categories:**
- Player progress (levels, unlocks) - Player progress (levels, unlocks)
- Game settings (audio, controls) - Game settings (audio, controls)
- Session data (current level, score) - Session data (current level, score)
- Persistent data (achievements, statistics) - Persistent data (achievements, statistics)
**Implementation Requirements:** **Implementation Requirements:**
- Save/load system with localStorage - Save/load system with localStorage
- State validation and error recovery - State validation and error recovery
- Cross-session data persistence - Cross-session data persistence
- Settings management - Settings management
**Files to Create:** **Files to Create:**
- `src/systems/GameState.ts` - `src/systems/GameState.ts`
- `src/systems/SaveManager.ts` - `src/systems/SaveManager.ts`
- `src/types/GameData.ts` - `src/types/GameData.ts`
@@ -179,23 +179,23 @@ sections:
title: Asset Management System title: Asset Management System
template: | template: |
**Purpose:** Efficient loading and management of game assets **Purpose:** Efficient loading and management of game assets
**Asset Categories:** **Asset Categories:**
- Sprite sheets and animations - Sprite sheets and animations
- Audio files and music - Audio files and music
- Level data and configurations - Level data and configurations
- UI assets and fonts - UI assets and fonts
**Implementation Requirements:** **Implementation Requirements:**
- Progressive loading strategy - Progressive loading strategy
- Asset caching and optimization - Asset caching and optimization
- Error handling for failed loads - Error handling for failed loads
- Memory management for large assets - Memory management for large assets
**Files to Create:** **Files to Create:**
- `src/systems/AssetManager.ts` - `src/systems/AssetManager.ts`
- `src/config/AssetConfig.ts` - `src/config/AssetConfig.ts`
- `src/utils/AssetLoader.ts` - `src/utils/AssetLoader.ts`
@@ -203,23 +203,23 @@ sections:
title: Input Management System title: Input Management System
template: | template: |
**Purpose:** Handle all player input across platforms **Purpose:** Handle all player input across platforms
**Input Types:** **Input Types:**
- Keyboard controls - Keyboard controls
- Mouse/pointer interaction - Mouse/pointer interaction
- Touch gestures (mobile) - Touch gestures (mobile)
- Gamepad support (optional) - Gamepad support (optional)
**Implementation Requirements:** **Implementation Requirements:**
- Input mapping and configuration - Input mapping and configuration
- Touch-friendly mobile controls - Touch-friendly mobile controls
- Input buffering for responsive gameplay - Input buffering for responsive gameplay
- Customizable control schemes - Customizable control schemes
**Files to Create:** **Files to Create:**
- `src/systems/InputManager.ts` - `src/systems/InputManager.ts`
- `src/utils/TouchControls.ts` - `src/utils/TouchControls.ts`
- `src/types/InputTypes.ts` - `src/types/InputTypes.ts`
@@ -232,19 +232,19 @@ sections:
title: "{{mechanic_name}} System" title: "{{mechanic_name}} System"
template: | template: |
**Purpose:** {{system_purpose}} **Purpose:** {{system_purpose}}
**Core Functionality:** **Core Functionality:**
- {{feature_1}} - {{feature_1}}
- {{feature_2}} - {{feature_2}}
- {{feature_3}} - {{feature_3}}
**Dependencies:** {{required_systems}} **Dependencies:** {{required_systems}}
**Performance Considerations:** {{optimization_notes}} **Performance Considerations:** {{optimization_notes}}
**Files to Create:** **Files to Create:**
- `src/systems/{{system_name}}.ts` - `src/systems/{{system_name}}.ts`
- `src/gameObjects/{{related_object}}.ts` - `src/gameObjects/{{related_object}}.ts`
- `src/types/{{system_types}}.ts` - `src/types/{{system_types}}.ts`
@@ -252,65 +252,65 @@ sections:
title: Physics & Collision System title: Physics & Collision System
template: | template: |
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js) **Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
**Collision Categories:** **Collision Categories:**
- Player collision - Player collision
- Enemy interactions - Enemy interactions
- Environmental objects - Environmental objects
- Collectibles and items - Collectibles and items
**Implementation Requirements:** **Implementation Requirements:**
- Optimized collision detection - Optimized collision detection
- Physics body management - Physics body management
- Collision callbacks and events - Collision callbacks and events
- Performance monitoring - Performance monitoring
**Files to Create:** **Files to Create:**
- `src/systems/PhysicsManager.ts` - `src/systems/PhysicsManager.ts`
- `src/utils/CollisionGroups.ts` - `src/utils/CollisionGroups.ts`
- id: audio-system - id: audio-system
title: Audio System title: Audio System
template: | template: |
**Audio Requirements:** **Audio Requirements:**
- Background music with looping - Background music with looping
- Sound effects for actions - Sound effects for actions
- Audio settings and volume control - Audio settings and volume control
- Mobile audio optimization - Mobile audio optimization
**Implementation Features:** **Implementation Features:**
- Audio sprite management - Audio sprite management
- Dynamic music system - Dynamic music system
- Spatial audio (if applicable) - Spatial audio (if applicable)
- Audio pooling for performance - Audio pooling for performance
**Files to Create:** **Files to Create:**
- `src/systems/AudioManager.ts` - `src/systems/AudioManager.ts`
- `src/config/AudioConfig.ts` - `src/config/AudioConfig.ts`
- id: ui-system - id: ui-system
title: UI System title: UI System
template: | template: |
**UI Components:** **UI Components:**
- HUD elements (score, health, etc.) - HUD elements (score, health, etc.)
- Menu navigation - Menu navigation
- Modal dialogs - Modal dialogs
- Settings screens - Settings screens
**Implementation Requirements:** **Implementation Requirements:**
- Responsive layout system - Responsive layout system
- Touch-friendly interface - Touch-friendly interface
- Keyboard navigation support - Keyboard navigation support
- Animation and transitions - Animation and transitions
**Files to Create:** **Files to Create:**
- `src/systems/UIManager.ts` - `src/systems/UIManager.ts`
- `src/gameObjects/UI/` - `src/gameObjects/UI/`
- `src/types/UITypes.ts` - `src/types/UITypes.ts`
@@ -610,4 +610,4 @@ sections:
- 90%+ test coverage on game logic - 90%+ test coverage on game logic
- Zero TypeScript errors in strict mode - Zero TypeScript errors in strict mode
- Consistent adherence to coding standards - Consistent adherence to coding standards
- Comprehensive documentation coverage - Comprehensive documentation coverage

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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 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. 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 - id: game-vision
@@ -71,7 +71,7 @@ sections:
repeatable: true repeatable: true
template: | template: |
**Core Mechanic: {{mechanic_name}}** **Core Mechanic: {{mechanic_name}}**
- **Description:** {{how_it_works}} - **Description:** {{how_it_works}}
- **Player Value:** {{why_its_fun}} - **Player Value:** {{why_its_fun}}
- **Implementation Scope:** {{complexity_estimate}} - **Implementation Scope:** {{complexity_estimate}}
@@ -98,12 +98,12 @@ sections:
title: Technical Constraints title: Technical Constraints
template: | template: |
**Platform Requirements:** **Platform Requirements:**
- Primary: {{platform_1}} - {{requirements}} - Primary: {{platform_1}} - {{requirements}}
- Secondary: {{platform_2}} - {{requirements}} - Secondary: {{platform_2}} - {{requirements}}
**Technical Specifications:** **Technical Specifications:**
- Engine: Phaser 3 + TypeScript - Engine: Phaser 3 + TypeScript
- Performance Target: {{fps_target}} FPS on {{target_device}} - Performance Target: {{fps_target}} FPS on {{target_device}}
- Memory Budget: <{{memory_limit}}MB - Memory Budget: <{{memory_limit}}MB
@@ -141,10 +141,10 @@ sections:
title: Competitive Analysis title: Competitive Analysis
template: | template: |
**Direct Competitors:** **Direct Competitors:**
- {{competitor_1}}: {{strengths_and_weaknesses}} - {{competitor_1}}: {{strengths_and_weaknesses}}
- {{competitor_2}}: {{strengths_and_weaknesses}} - {{competitor_2}}: {{strengths_and_weaknesses}}
**Differentiation Strategy:** **Differentiation Strategy:**
{{how_we_differ_and_why_thats_valuable}} {{how_we_differ_and_why_thats_valuable}}
- id: market-opportunity - id: market-opportunity
@@ -168,16 +168,16 @@ sections:
title: Content Categories title: Content Categories
template: | template: |
**Core Content:** **Core Content:**
- {{content_type_1}}: {{quantity_and_description}} - {{content_type_1}}: {{quantity_and_description}}
- {{content_type_2}}: {{quantity_and_description}} - {{content_type_2}}: {{quantity_and_description}}
**Optional Content:** **Optional Content:**
- {{optional_content_type}}: {{quantity_and_description}} - {{optional_content_type}}: {{quantity_and_description}}
**Replay Elements:** **Replay Elements:**
- {{replayability_features}} - {{replayability_features}}
- id: difficulty-accessibility - id: difficulty-accessibility
title: Difficulty and Accessibility title: Difficulty and Accessibility
@@ -244,13 +244,13 @@ sections:
title: Player Experience Metrics title: Player Experience Metrics
template: | template: |
**Engagement Goals:** **Engagement Goals:**
- Tutorial completion rate: >{{percentage}}% - Tutorial completion rate: >{{percentage}}%
- Average session length: {{duration}} minutes - Average session length: {{duration}} minutes
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}% - Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
**Quality Benchmarks:** **Quality Benchmarks:**
- Player satisfaction: >{{rating}}/10 - Player satisfaction: >{{rating}}/10
- Completion rate: >{{percentage}}% - Completion rate: >{{percentage}}%
- Technical performance: {{fps_target}} FPS consistent - Technical performance: {{fps_target}} FPS consistent
@@ -258,13 +258,13 @@ sections:
title: Development Metrics title: Development Metrics
template: | template: |
**Technical Targets:** **Technical Targets:**
- Zero critical bugs at launch - Zero critical bugs at launch
- Performance targets met on all platforms - Performance targets met on all platforms
- Load times under {{seconds}}s - Load times under {{seconds}}s
**Process Goals:** **Process Goals:**
- Development timeline adherence - Development timeline adherence
- Feature scope completion - Feature scope completion
- Quality assurance standards - Quality assurance standards
@@ -273,7 +273,7 @@ sections:
condition: has_business_goals condition: has_business_goals
template: | template: |
**Commercial Goals:** **Commercial Goals:**
- {{revenue_target}} in first {{time_period}} - {{revenue_target}} in first {{time_period}}
- {{user_acquisition_target}} players in first {{time_period}} - {{user_acquisition_target}} players in first {{time_period}}
- {{retention_target}} monthly active users - {{retention_target}} monthly active users
@@ -326,12 +326,12 @@ sections:
title: Validation Plan title: Validation Plan
template: | template: |
**Concept Testing:** **Concept Testing:**
- {{validation_method_1}} - {{timeline}} - {{validation_method_1}} - {{timeline}}
- {{validation_method_2}} - {{timeline}} - {{validation_method_2}} - {{timeline}}
**Prototype Testing:** **Prototype Testing:**
- {{testing_approach}} - {{timeline}} - {{testing_approach}} - {{timeline}}
- {{feedback_collection_method}} - {{timeline}} - {{feedback_collection_method}} - {{timeline}}
@@ -353,4 +353,4 @@ sections:
type: table type: table
template: | template: |
| Date | Version | Description | Author | | Date | Version | Description | Author |
| :--- | :------ | :---------- | :----- | | :--- | :------ | :---------- | :----- |

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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 If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
- id: executive-summary - 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. instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
template: | template: |
**Primary Loop ({{duration}} seconds):** **Primary Loop ({{duration}} seconds):**
1. {{action_1}} ({{time_1}}s) 1. {{action_1}} ({{time_1}}s)
2. {{action_2}} ({{time_2}}s) 2. {{action_2}} ({{time_2}}s)
3. {{action_3}} ({{time_3}}s) 3. {{action_3}} ({{time_3}}s)
@@ -69,12 +69,12 @@ sections:
instruction: Clearly define success and failure states instruction: Clearly define success and failure states
template: | template: |
**Victory Conditions:** **Victory Conditions:**
- {{win_condition_1}} - {{win_condition_1}}
- {{win_condition_2}} - {{win_condition_2}}
**Failure States:** **Failure States:**
- {{loss_condition_1}} - {{loss_condition_1}}
- {{loss_condition_2}} - {{loss_condition_2}}
@@ -90,17 +90,17 @@ sections:
title: "{{mechanic_name}}" title: "{{mechanic_name}}"
template: | template: |
**Description:** {{detailed_description}} **Description:** {{detailed_description}}
**Player Input:** {{input_method}} **Player Input:** {{input_method}}
**System Response:** {{game_response}} **System Response:** {{game_response}}
**Implementation Notes:** **Implementation Notes:**
- {{tech_requirement_1}} - {{tech_requirement_1}}
- {{tech_requirement_2}} - {{tech_requirement_2}}
- {{performance_consideration}} - {{performance_consideration}}
**Dependencies:** {{other_mechanics_needed}} **Dependencies:** {{other_mechanics_needed}}
- id: controls - id: controls
title: Controls title: Controls
@@ -119,9 +119,9 @@ sections:
title: Player Progression title: Player Progression
template: | template: |
**Progression Type:** {{linear|branching|metroidvania}} **Progression Type:** {{linear|branching|metroidvania}}
**Key Milestones:** **Key Milestones:**
1. **{{milestone_1}}** - {{unlock_description}} 1. **{{milestone_1}}** - {{unlock_description}}
2. **{{milestone_2}}** - {{unlock_description}} 2. **{{milestone_2}}** - {{unlock_description}}
3. **{{milestone_3}}** - {{unlock_description}} 3. **{{milestone_3}}** - {{unlock_description}}
@@ -158,9 +158,9 @@ sections:
**Duration:** {{target_time}} **Duration:** {{target_time}}
**Key Elements:** {{required_mechanics}} **Key Elements:** {{required_mechanics}}
**Difficulty:** {{relative_difficulty}} **Difficulty:** {{relative_difficulty}}
**Structure Template:** **Structure Template:**
- Introduction: {{intro_description}} - Introduction: {{intro_description}}
- Challenge: {{main_challenge}} - Challenge: {{main_challenge}}
- Resolution: {{completion_requirement}} - Resolution: {{completion_requirement}}
@@ -186,13 +186,13 @@ sections:
title: Platform Specific title: Platform Specific
template: | template: |
**Desktop:** **Desktop:**
- Resolution: {{min_resolution}} - {{max_resolution}} - Resolution: {{min_resolution}} - {{max_resolution}}
- Input: Keyboard, Mouse, Gamepad - Input: Keyboard, Mouse, Gamepad
- Browser: Chrome 80+, Firefox 75+, Safari 13+ - Browser: Chrome 80+, Firefox 75+, Safari 13+
**Mobile:** **Mobile:**
- Resolution: {{mobile_min}} - {{mobile_max}} - Resolution: {{mobile_min}} - {{mobile_max}}
- Input: Touch, Tilt (optional) - Input: Touch, Tilt (optional)
- OS: iOS 13+, Android 8+ - OS: iOS 13+, Android 8+
@@ -201,14 +201,14 @@ sections:
instruction: Define asset specifications for the art and audio teams instruction: Define asset specifications for the art and audio teams
template: | template: |
**Visual Assets:** **Visual Assets:**
- Art Style: {{style_description}} - Art Style: {{style_description}}
- Color Palette: {{color_specification}} - Color Palette: {{color_specification}}
- Animation: {{animation_requirements}} - Animation: {{animation_requirements}}
- UI Resolution: {{ui_specs}} - UI Resolution: {{ui_specs}}
**Audio Assets:** **Audio Assets:**
- Music Style: {{music_genre}} - Music Style: {{music_genre}}
- Sound Effects: {{sfx_requirements}} - Sound Effects: {{sfx_requirements}}
- Voice Acting: {{voice_needs}} - Voice Acting: {{voice_needs}}
@@ -221,7 +221,7 @@ sections:
title: Engine Configuration title: Engine Configuration
template: | template: |
**Phaser 3 Setup:** **Phaser 3 Setup:**
- TypeScript: Strict mode enabled - TypeScript: Strict mode enabled
- Physics: {{physics_system}} (Arcade/Matter) - Physics: {{physics_system}} (Arcade/Matter)
- Renderer: WebGL with Canvas fallback - Renderer: WebGL with Canvas fallback
@@ -230,7 +230,7 @@ sections:
title: Code Architecture title: Code Architecture
template: | template: |
**Required Systems:** **Required Systems:**
- Scene Management - Scene Management
- State Management - State Management
- Asset Loading - Asset Loading
@@ -242,7 +242,7 @@ sections:
title: Data Management title: Data Management
template: | template: |
**Save Data:** **Save Data:**
- Progress tracking - Progress tracking
- Settings persistence - Settings persistence
- Statistics collection - Statistics collection
@@ -340,4 +340,4 @@ sections:
title: References title: References
instruction: List any competitive analysis, inspiration, or research sources instruction: List any competitive analysis, inspiration, or research sources
type: bullet-list type: bullet-list
template: "{{reference}}" template: "{{reference}}"

View File

@@ -14,13 +14,13 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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: Before starting, ensure you have access to:
- Game Design Document (GDD) - Game Design Document (GDD)
- Game Architecture Document - Game Architecture Document
- Any existing stories in this epic - Any existing stories in this epic
The story should be specific enough that a developer can implement it without requiring additional design decisions. The story should be specific enough that a developer can implement it without requiring additional design decisions.
- id: story-header - id: story-header
@@ -69,12 +69,12 @@ sections:
title: Files to Create/Modify title: Files to Create/Modify
template: | template: |
**New Files:** **New Files:**
- `{{file_path_1}}` - {{purpose}} - `{{file_path_1}}` - {{purpose}}
- `{{file_path_2}}` - {{purpose}} - `{{file_path_2}}` - {{purpose}}
**Modified Files:** **Modified Files:**
- `{{existing_file_1}}` - {{changes_needed}} - `{{existing_file_1}}` - {{changes_needed}}
- `{{existing_file_2}}` - {{changes_needed}} - `{{existing_file_2}}` - {{changes_needed}}
- id: class-interface-definitions - id: class-interface-definitions
@@ -89,15 +89,15 @@ sections:
{{property_2}}: {{type}}; {{property_2}}: {{type}};
{{method_1}}({{params}}): {{return_type}}; {{method_1}}({{params}}): {{return_type}};
} }
// {{class_name}} // {{class_name}}
class {{class_name}} extends {{phaser_class}} { class {{class_name}} extends {{phaser_class}} {
private {{property}}: {{type}}; private {{property}}: {{type}};
constructor({{params}}) { constructor({{params}}) {
// Implementation requirements // Implementation requirements
} }
public {{method}}({{params}}): {{return_type}} { public {{method}}({{params}}): {{return_type}} {
// Method requirements // Method requirements
} }
@@ -107,15 +107,15 @@ sections:
instruction: Specify how this feature integrates with existing systems instruction: Specify how this feature integrates with existing systems
template: | template: |
**Scene Integration:** **Scene Integration:**
- {{scene_name}}: {{integration_details}} - {{scene_name}}: {{integration_details}}
**System Dependencies:** **System Dependencies:**
- {{system_name}}: {{dependency_description}} - {{system_name}}: {{dependency_description}}
**Event Communication:** **Event Communication:**
- Emits: `{{event_name}}` when {{condition}} - Emits: `{{event_name}}` when {{condition}}
- Listens: `{{event_name}}` to {{response}} - Listens: `{{event_name}}` to {{response}}
@@ -127,7 +127,7 @@ sections:
title: Dev Agent Record title: Dev Agent Record
template: | template: |
**Tasks:** **Tasks:**
- [ ] {{task_1_description}} - [ ] {{task_1_description}}
- [ ] {{task_2_description}} - [ ] {{task_2_description}}
- [ ] {{task_3_description}} - [ ] {{task_3_description}}
@@ -135,18 +135,18 @@ sections:
- [ ] Write unit tests for {{component}} - [ ] Write unit tests for {{component}}
- [ ] Integration testing with {{related_system}} - [ ] Integration testing with {{related_system}}
- [ ] Performance testing and optimization - [ ] Performance testing and optimization
**Debug Log:** **Debug Log:**
| Task | File | Change | Reverted? | | Task | File | Change | Reverted? |
|------|------|--------|-----------| |------|------|--------|-----------|
| | | | | | | | | |
**Completion Notes:** **Completion Notes:**
<!-- Only note deviations from requirements, keep under 50 words --> <!-- Only note deviations from requirements, keep under 50 words -->
**Change Log:** **Change Log:**
<!-- Only requirement changes during implementation --> <!-- Only requirement changes during implementation -->
- id: game-design-context - id: game-design-context
@@ -154,13 +154,13 @@ sections:
instruction: Reference the specific sections of the GDD that this story implements instruction: Reference the specific sections of the GDD that this story implements
template: | template: |
**GDD Reference:** {{section_name}} ({{page_or_section_number}}) **GDD Reference:** {{section_name}} ({{page_or_section_number}})
**Game Mechanic:** {{mechanic_name}} **Game Mechanic:** {{mechanic_name}}
**Player Experience Goal:** {{experience_description}} **Player Experience Goal:** {{experience_description}}
**Balance Parameters:** **Balance Parameters:**
- {{parameter_1}}: {{value_or_range}} - {{parameter_1}}: {{value_or_range}}
- {{parameter_2}}: {{value_or_range}} - {{parameter_2}}: {{value_or_range}}
@@ -172,11 +172,11 @@ sections:
title: Unit Tests title: Unit Tests
template: | template: |
**Test Files:** **Test Files:**
- `tests/{{component_name}}.test.ts` - `tests/{{component_name}}.test.ts`
**Test Scenarios:** **Test Scenarios:**
- {{test_scenario_1}} - {{test_scenario_1}}
- {{test_scenario_2}} - {{test_scenario_2}}
- {{edge_case_test}} - {{edge_case_test}}
@@ -184,12 +184,12 @@ sections:
title: Game Testing title: Game Testing
template: | template: |
**Manual Test Cases:** **Manual Test Cases:**
1. {{test_case_1_description}} 1. {{test_case_1_description}}
- Expected: {{expected_behavior}} - Expected: {{expected_behavior}}
- Performance: {{performance_expectation}} - Performance: {{performance_expectation}}
2. {{test_case_2_description}} 2. {{test_case_2_description}}
- Expected: {{expected_behavior}} - Expected: {{expected_behavior}}
- Edge Case: {{edge_case_handling}} - Edge Case: {{edge_case_handling}}
@@ -197,7 +197,7 @@ sections:
title: Performance Tests title: Performance Tests
template: | template: |
**Metrics to Verify:** **Metrics to Verify:**
- Frame rate maintains {{fps_target}} FPS - Frame rate maintains {{fps_target}} FPS
- Memory usage stays under {{memory_limit}}MB - Memory usage stays under {{memory_limit}}MB
- {{feature_specific_performance_metric}} - {{feature_specific_performance_metric}}
@@ -207,15 +207,15 @@ sections:
instruction: List any dependencies that must be completed before this story can be implemented instruction: List any dependencies that must be completed before this story can be implemented
template: | template: |
**Story Dependencies:** **Story Dependencies:**
- {{story_id}}: {{dependency_description}} - {{story_id}}: {{dependency_description}}
**Technical Dependencies:** **Technical Dependencies:**
- {{system_or_file}}: {{requirement}} - {{system_or_file}}: {{requirement}}
**Asset Dependencies:** **Asset Dependencies:**
- {{asset_type}}: {{asset_description}} - {{asset_type}}: {{asset_description}}
- Location: `{{asset_path}}` - Location: `{{asset_path}}`
@@ -238,16 +238,16 @@ sections:
instruction: Any additional context, design decisions, or implementation notes instruction: Any additional context, design decisions, or implementation notes
template: | template: |
**Implementation Notes:** **Implementation Notes:**
- {{note_1}} - {{note_1}}
- {{note_2}} - {{note_2}}
**Design Decisions:** **Design Decisions:**
- {{decision_1}}: {{rationale}} - {{decision_1}}: {{rationale}}
- {{decision_2}}: {{rationale}} - {{decision_2}}: {{rationale}}
**Future Considerations:** **Future Considerations:**
- {{future_enhancement_1}} - {{future_enhancement_1}}
- {{future_optimization_1}} - {{future_optimization_1}}

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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. 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 - id: introduction
@@ -22,7 +22,7 @@ sections:
instruction: Establish the purpose and scope of level design for this game instruction: Establish the purpose and scope of level design for this game
content: | 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 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. This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
sections: sections:
- id: change-log - id: change-log
@@ -69,29 +69,29 @@ sections:
title: "{{category_name}} Levels" title: "{{category_name}} Levels"
template: | template: |
**Purpose:** {{gameplay_purpose}} **Purpose:** {{gameplay_purpose}}
**Target Duration:** {{min_time}} - {{max_time}} minutes **Target Duration:** {{min_time}} - {{max_time}} minutes
**Difficulty Range:** {{difficulty_scale}} **Difficulty Range:** {{difficulty_scale}}
**Key Mechanics Featured:** **Key Mechanics Featured:**
- {{mechanic_1}} - {{usage_description}} - {{mechanic_1}} - {{usage_description}}
- {{mechanic_2}} - {{usage_description}} - {{mechanic_2}} - {{usage_description}}
**Player Objectives:** **Player Objectives:**
- Primary: {{primary_objective}} - Primary: {{primary_objective}}
- Secondary: {{secondary_objective}} - Secondary: {{secondary_objective}}
- Hidden: {{secret_objective}} - Hidden: {{secret_objective}}
**Success Criteria:** **Success Criteria:**
- {{completion_requirement_1}} - {{completion_requirement_1}}
- {{completion_requirement_2}} - {{completion_requirement_2}}
**Technical Requirements:** **Technical Requirements:**
- Maximum entities: {{entity_limit}} - Maximum entities: {{entity_limit}}
- Performance target: {{fps_target}} FPS - Performance target: {{fps_target}} FPS
- Memory budget: {{memory_limit}}MB - Memory budget: {{memory_limit}}MB
@@ -106,11 +106,11 @@ sections:
instruction: Based on GDD requirements, define the overall level organization instruction: Based on GDD requirements, define the overall level organization
template: | template: |
**Organization Type:** {{linear|hub_world|open_world}} **Organization Type:** {{linear|hub_world|open_world}}
**Total Level Count:** {{number}} **Total Level Count:** {{number}}
**World Breakdown:** **World Breakdown:**
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 3: {{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 instruction: Define how players access new levels
template: | template: |
**Progression Gates:** **Progression Gates:**
- Linear progression: Complete previous level - Linear progression: Complete previous level
- Star requirements: {{star_count}} stars to unlock - Star requirements: {{star_count}} stars to unlock
- Skill gates: Demonstrate {{skill_requirement}} - Skill gates: Demonstrate {{skill_requirement}}
@@ -160,17 +160,17 @@ sections:
instruction: Define all environmental components that can be used in levels instruction: Define all environmental components that can be used in levels
template: | template: |
**Terrain Types:** **Terrain Types:**
- {{terrain_1}}: {{properties_and_usage}} - {{terrain_1}}: {{properties_and_usage}}
- {{terrain_2}}: {{properties_and_usage}} - {{terrain_2}}: {{properties_and_usage}}
**Interactive Objects:** **Interactive Objects:**
- {{object_1}}: {{behavior_and_purpose}} - {{object_1}}: {{behavior_and_purpose}}
- {{object_2}}: {{behavior_and_purpose}} - {{object_2}}: {{behavior_and_purpose}}
**Hazards and Obstacles:** **Hazards and Obstacles:**
- {{hazard_1}}: {{damage_and_behavior}} - {{hazard_1}}: {{damage_and_behavior}}
- {{hazard_2}}: {{damage_and_behavior}} - {{hazard_2}}: {{damage_and_behavior}}
- id: collectibles-rewards - id: collectibles-rewards
@@ -178,18 +178,18 @@ sections:
instruction: Define all collectible items and their placement rules instruction: Define all collectible items and their placement rules
template: | template: |
**Collectible Types:** **Collectible Types:**
- {{collectible_1}}: {{value_and_purpose}} - {{collectible_1}}: {{value_and_purpose}}
- {{collectible_2}}: {{value_and_purpose}} - {{collectible_2}}: {{value_and_purpose}}
**Placement Guidelines:** **Placement Guidelines:**
- Mandatory collectibles: {{placement_rules}} - Mandatory collectibles: {{placement_rules}}
- Optional collectibles: {{placement_rules}} - Optional collectibles: {{placement_rules}}
- Secret collectibles: {{placement_rules}} - Secret collectibles: {{placement_rules}}
**Reward Distribution:** **Reward Distribution:**
- Easy to find: {{percentage}}% - Easy to find: {{percentage}}%
- Moderate challenge: {{percentage}}% - Moderate challenge: {{percentage}}%
- High skill required: {{percentage}}% - High skill required: {{percentage}}%
@@ -198,18 +198,18 @@ sections:
instruction: Define how enemies should be placed and balanced in levels instruction: Define how enemies should be placed and balanced in levels
template: | template: |
**Enemy Categories:** **Enemy Categories:**
- {{enemy_type_1}}: {{behavior_and_usage}} - {{enemy_type_1}}: {{behavior_and_usage}}
- {{enemy_type_2}}: {{behavior_and_usage}} - {{enemy_type_2}}: {{behavior_and_usage}}
**Placement Principles:** **Placement Principles:**
- Introduction encounters: {{guideline}} - Introduction encounters: {{guideline}}
- Standard encounters: {{guideline}} - Standard encounters: {{guideline}}
- Challenge encounters: {{guideline}} - Challenge encounters: {{guideline}}
**Difficulty Scaling:** **Difficulty Scaling:**
- Enemy count progression: {{scaling_rule}} - Enemy count progression: {{scaling_rule}}
- Enemy type introduction: {{pacing_rule}} - Enemy type introduction: {{pacing_rule}}
- Encounter complexity: {{complexity_rule}} - Encounter complexity: {{complexity_rule}}
@@ -222,14 +222,14 @@ sections:
title: Level Layout Principles title: Level Layout Principles
template: | template: |
**Spatial Design:** **Spatial Design:**
- Grid size: {{grid_dimensions}} - Grid size: {{grid_dimensions}}
- Minimum path width: {{width_units}} - Minimum path width: {{width_units}}
- Maximum vertical distance: {{height_units}} - Maximum vertical distance: {{height_units}}
- Safe zones placement: {{safety_guidelines}} - Safe zones placement: {{safety_guidelines}}
**Navigation Design:** **Navigation Design:**
- Clear path indication: {{visual_cues}} - Clear path indication: {{visual_cues}}
- Landmark placement: {{landmark_rules}} - Landmark placement: {{landmark_rules}}
- Dead end avoidance: {{dead_end_policy}} - Dead end avoidance: {{dead_end_policy}}
@@ -239,13 +239,13 @@ sections:
instruction: Define how to control the rhythm and pace of gameplay within levels instruction: Define how to control the rhythm and pace of gameplay within levels
template: | template: |
**Action Sequences:** **Action Sequences:**
- High intensity duration: {{max_duration}} - High intensity duration: {{max_duration}}
- Rest period requirement: {{min_rest_time}} - Rest period requirement: {{min_rest_time}}
- Intensity variation: {{pacing_pattern}} - Intensity variation: {{pacing_pattern}}
**Learning Sequences:** **Learning Sequences:**
- New mechanic introduction: {{teaching_method}} - New mechanic introduction: {{teaching_method}}
- Practice opportunity: {{practice_duration}} - Practice opportunity: {{practice_duration}}
- Skill application: {{application_context}} - Skill application: {{application_context}}
@@ -254,14 +254,14 @@ sections:
instruction: Define how to create appropriate challenges for each level type instruction: Define how to create appropriate challenges for each level type
template: | template: |
**Challenge Types:** **Challenge Types:**
- Execution challenges: {{skill_requirements}} - Execution challenges: {{skill_requirements}}
- Puzzle challenges: {{complexity_guidelines}} - Puzzle challenges: {{complexity_guidelines}}
- Time challenges: {{time_pressure_rules}} - Time challenges: {{time_pressure_rules}}
- Resource challenges: {{resource_management}} - Resource challenges: {{resource_management}}
**Difficulty Calibration:** **Difficulty Calibration:**
- Skill check frequency: {{frequency_guidelines}} - Skill check frequency: {{frequency_guidelines}}
- Failure recovery: {{retry_mechanics}} - Failure recovery: {{retry_mechanics}}
- Hint system integration: {{help_system}} - Hint system integration: {{help_system}}
@@ -275,7 +275,7 @@ sections:
instruction: Define how level data should be structured for implementation instruction: Define how level data should be structured for implementation
template: | template: |
**Level File Format:** **Level File Format:**
- Data format: {{json|yaml|custom}} - Data format: {{json|yaml|custom}}
- File naming: `level_{{world}}_{{number}}.{{extension}}` - File naming: `level_{{world}}_{{number}}.{{extension}}`
- Data organization: {{structure_description}} - Data organization: {{structure_description}}
@@ -313,14 +313,14 @@ sections:
instruction: Define how level assets are organized and loaded instruction: Define how level assets are organized and loaded
template: | template: |
**Tilemap Requirements:** **Tilemap Requirements:**
- Tile size: {{tile_dimensions}}px - Tile size: {{tile_dimensions}}px
- Tileset organization: {{tileset_structure}} - Tileset organization: {{tileset_structure}}
- Layer organization: {{layer_system}} - Layer organization: {{layer_system}}
- Collision data: {{collision_format}} - Collision data: {{collision_format}}
**Audio Integration:** **Audio Integration:**
- Background music: {{music_requirements}} - Background music: {{music_requirements}}
- Ambient sounds: {{ambient_system}} - Ambient sounds: {{ambient_system}}
- Dynamic audio: {{dynamic_audio_rules}} - Dynamic audio: {{dynamic_audio_rules}}
@@ -329,19 +329,19 @@ sections:
instruction: Define performance requirements for level systems instruction: Define performance requirements for level systems
template: | template: |
**Entity Limits:** **Entity Limits:**
- Maximum active entities: {{entity_limit}} - Maximum active entities: {{entity_limit}}
- Maximum particles: {{particle_limit}} - Maximum particles: {{particle_limit}}
- Maximum audio sources: {{audio_limit}} - Maximum audio sources: {{audio_limit}}
**Memory Management:** **Memory Management:**
- Texture memory budget: {{texture_memory}}MB - Texture memory budget: {{texture_memory}}MB
- Audio memory budget: {{audio_memory}}MB - Audio memory budget: {{audio_memory}}MB
- Level loading time: <{{load_time}}s - Level loading time: <{{load_time}}s
**Culling and LOD:** **Culling and LOD:**
- Off-screen culling: {{culling_distance}} - Off-screen culling: {{culling_distance}}
- Level-of-detail rules: {{lod_system}} - Level-of-detail rules: {{lod_system}}
- Asset streaming: {{streaming_requirements}} - Asset streaming: {{streaming_requirements}}
@@ -354,13 +354,13 @@ sections:
title: Automated Testing title: Automated Testing
template: | template: |
**Performance Testing:** **Performance Testing:**
- Frame rate validation: Maintain {{fps_target}} FPS - Frame rate validation: Maintain {{fps_target}} FPS
- Memory usage monitoring: Stay under {{memory_limit}}MB - Memory usage monitoring: Stay under {{memory_limit}}MB
- Loading time verification: Complete in <{{load_time}}s - Loading time verification: Complete in <{{load_time}}s
**Gameplay Testing:** **Gameplay Testing:**
- Completion path validation: All objectives achievable - Completion path validation: All objectives achievable
- Collectible accessibility: All items reachable - Collectible accessibility: All items reachable
- Softlock prevention: No unwinnable states - Softlock prevention: No unwinnable states
@@ -388,14 +388,14 @@ sections:
title: Balance Validation title: Balance Validation
template: | template: |
**Metrics Collection:** **Metrics Collection:**
- Completion rate: Target {{completion_percentage}}% - Completion rate: Target {{completion_percentage}}%
- Average completion time: {{target_time}} ± {{variance}} - Average completion time: {{target_time}} ± {{variance}}
- Death count per level: <{{max_deaths}} - Death count per level: <{{max_deaths}}
- Collectible discovery rate: {{discovery_percentage}}% - Collectible discovery rate: {{discovery_percentage}}%
**Iteration Guidelines:** **Iteration Guidelines:**
- Adjustment criteria: {{criteria_for_changes}} - Adjustment criteria: {{criteria_for_changes}}
- Testing sample size: {{minimum_testers}} - Testing sample size: {{minimum_testers}}
- Validation period: {{testing_duration}} - Validation period: {{testing_duration}}
@@ -408,14 +408,14 @@ sections:
title: Design Phase title: Design Phase
template: | template: |
**Concept Development:** **Concept Development:**
1. Define level purpose and goals 1. Define level purpose and goals
2. Create rough layout sketch 2. Create rough layout sketch
3. Identify key mechanics and challenges 3. Identify key mechanics and challenges
4. Estimate difficulty and duration 4. Estimate difficulty and duration
**Documentation Requirements:** **Documentation Requirements:**
- Level design brief - Level design brief
- Layout diagrams - Layout diagrams
- Mechanic integration notes - Mechanic integration notes
@@ -424,15 +424,15 @@ sections:
title: Implementation Phase title: Implementation Phase
template: | template: |
**Technical Implementation:** **Technical Implementation:**
1. Create level data file 1. Create level data file
2. Build tilemap and layout 2. Build tilemap and layout
3. Place entities and objects 3. Place entities and objects
4. Configure level logic and triggers 4. Configure level logic and triggers
5. Integrate audio and visual effects 5. Integrate audio and visual effects
**Quality Assurance:** **Quality Assurance:**
1. Automated testing execution 1. Automated testing execution
2. Internal playtesting 2. Internal playtesting
3. Performance validation 3. Performance validation
@@ -441,14 +441,14 @@ sections:
title: Integration Phase title: Integration Phase
template: | template: |
**Game Integration:** **Game Integration:**
1. Level progression integration 1. Level progression integration
2. Save system compatibility 2. Save system compatibility
3. Analytics integration 3. Analytics integration
4. Achievement system integration 4. Achievement system integration
**Final Validation:** **Final Validation:**
1. Full game context testing 1. Full game context testing
2. Performance regression testing 2. Performance regression testing
3. Platform compatibility verification 3. Platform compatibility verification
@@ -481,4 +481,4 @@ sections:
- Difficulty curve adherence: {{curve_accuracy}} - Difficulty curve adherence: {{curve_accuracy}}
- Mechanic integration effectiveness: {{integration_score}} - Mechanic integration effectiveness: {{integration_score}}
- Player guidance clarity: {{guidance_score}} - Player guidance clarity: {{guidance_score}}
- Content accessibility: {{accessibility_rate}}% - Content accessibility: {{accessibility_rate}}%

View File

@@ -17,21 +17,21 @@ workflow:
- brainstorming_session - brainstorming_session
- game_research_prompt - game_research_prompt
- player_research - 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 - agent: game-designer
creates: game-design-doc.md creates: game-design-doc.md
requires: game-brief.md requires: game-brief.md
optional_steps: optional_steps:
- competitive_analysis - competitive_analysis
- technical_research - 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 - agent: game-designer
creates: level-design-doc.md creates: level-design-doc.md
requires: game-design-doc.md requires: game-design-doc.md
optional_steps: optional_steps:
- level_prototyping - level_prototyping
- difficulty_analysis - 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 - agent: solution-architect
creates: game-architecture.md creates: game-architecture.md
requires: requires:
@@ -41,7 +41,7 @@ workflow:
- technical_research_prompt - technical_research_prompt
- performance_analysis - performance_analysis
- platform_research - 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 - agent: game-designer
validates: design_consistency validates: design_consistency
requires: all_design_documents requires: all_design_documents
@@ -66,7 +66,7 @@ workflow:
optional_steps: optional_steps:
- quick_brainstorming - quick_brainstorming
- concept_validation - 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 - agent: game-designer
creates: prototype-design.md creates: prototype-design.md
uses: create-doc prototype-design OR create-game-story uses: create-doc prototype-design OR create-game-story

View File

@@ -44,7 +44,7 @@ workflow:
notes: Implement stories in priority order. Test frequently and adjust design based on what feels fun. Document discoveries. notes: Implement stories in priority order. Test frequently and adjust design based on what feels fun. Document discoveries.
workflow_end: workflow_end:
action: prototype_evaluation 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: game_jam_sequence:
- step: jam_concept - step: jam_concept
agent: game-designer agent: game-designer

View File

@@ -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. - 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 - exit: Say goodbye as the Game Developer, and then abandon inhabiting this persona
develop-story: 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: story-file-updates-ONLY:
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS. - 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: 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 - 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" 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" 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" 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: dependencies:
tasks: tasks:

View File

@@ -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` - **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` - **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` - **Trae**: `@bmad2du/game-designer`, `@bmad2du/game-developer`, `@bmad2du/game-sm`, `@bmad2du/game-architect`
- **Roo Code**: Select mode from mode selector with bmad2du prefix - **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. - **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select the appropriate game agent.

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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 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. 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 - id: game-vision
@@ -71,7 +71,7 @@ sections:
repeatable: true repeatable: true
template: | template: |
**Core Mechanic: {{mechanic_name}}** **Core Mechanic: {{mechanic_name}}**
- **Description:** {{how_it_works}} - **Description:** {{how_it_works}}
- **Player Value:** {{why_its_fun}} - **Player Value:** {{why_its_fun}}
- **Implementation Scope:** {{complexity_estimate}} - **Implementation Scope:** {{complexity_estimate}}
@@ -98,12 +98,12 @@ sections:
title: Technical Constraints title: Technical Constraints
template: | template: |
**Platform Requirements:** **Platform Requirements:**
- Primary: {{platform_1}} - {{requirements}} - Primary: {{platform_1}} - {{requirements}}
- Secondary: {{platform_2}} - {{requirements}} - Secondary: {{platform_2}} - {{requirements}}
**Technical Specifications:** **Technical Specifications:**
- Engine: Unity & C# - Engine: Unity & C#
- Performance Target: {{fps_target}} FPS on {{target_device}} - Performance Target: {{fps_target}} FPS on {{target_device}}
- Memory Budget: <{{memory_limit}}MB - Memory Budget: <{{memory_limit}}MB
@@ -141,10 +141,10 @@ sections:
title: Competitive Analysis title: Competitive Analysis
template: | template: |
**Direct Competitors:** **Direct Competitors:**
- {{competitor_1}}: {{strengths_and_weaknesses}} - {{competitor_1}}: {{strengths_and_weaknesses}}
- {{competitor_2}}: {{strengths_and_weaknesses}} - {{competitor_2}}: {{strengths_and_weaknesses}}
**Differentiation Strategy:** **Differentiation Strategy:**
{{how_we_differ_and_why_thats_valuable}} {{how_we_differ_and_why_thats_valuable}}
- id: market-opportunity - id: market-opportunity
@@ -168,16 +168,16 @@ sections:
title: Content Categories title: Content Categories
template: | template: |
**Core Content:** **Core Content:**
- {{content_type_1}}: {{quantity_and_description}} - {{content_type_1}}: {{quantity_and_description}}
- {{content_type_2}}: {{quantity_and_description}} - {{content_type_2}}: {{quantity_and_description}}
**Optional Content:** **Optional Content:**
- {{optional_content_type}}: {{quantity_and_description}} - {{optional_content_type}}: {{quantity_and_description}}
**Replay Elements:** **Replay Elements:**
- {{replayability_features}} - {{replayability_features}}
- id: difficulty-accessibility - id: difficulty-accessibility
title: Difficulty and Accessibility title: Difficulty and Accessibility
@@ -244,13 +244,13 @@ sections:
title: Player Experience Metrics title: Player Experience Metrics
template: | template: |
**Engagement Goals:** **Engagement Goals:**
- Tutorial completion rate: >{{percentage}}% - Tutorial completion rate: >{{percentage}}%
- Average session length: {{duration}} minutes - Average session length: {{duration}} minutes
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}% - Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
**Quality Benchmarks:** **Quality Benchmarks:**
- Player satisfaction: >{{rating}}/10 - Player satisfaction: >{{rating}}/10
- Completion rate: >{{percentage}}% - Completion rate: >{{percentage}}%
- Technical performance: {{fps_target}} FPS consistent - Technical performance: {{fps_target}} FPS consistent
@@ -258,13 +258,13 @@ sections:
title: Development Metrics title: Development Metrics
template: | template: |
**Technical Targets:** **Technical Targets:**
- Zero critical bugs at launch - Zero critical bugs at launch
- Performance targets met on all platforms - Performance targets met on all platforms
- Load times under {{seconds}}s - Load times under {{seconds}}s
**Process Goals:** **Process Goals:**
- Development timeline adherence - Development timeline adherence
- Feature scope completion - Feature scope completion
- Quality assurance standards - Quality assurance standards
@@ -273,7 +273,7 @@ sections:
condition: has_business_goals condition: has_business_goals
template: | template: |
**Commercial Goals:** **Commercial Goals:**
- {{revenue_target}} in first {{time_period}} - {{revenue_target}} in first {{time_period}}
- {{user_acquisition_target}} players in first {{time_period}} - {{user_acquisition_target}} players in first {{time_period}}
- {{retention_target}} monthly active users - {{retention_target}} monthly active users
@@ -326,12 +326,12 @@ sections:
title: Validation Plan title: Validation Plan
template: | template: |
**Concept Testing:** **Concept Testing:**
- {{validation_method_1}} - {{timeline}} - {{validation_method_1}} - {{timeline}}
- {{validation_method_2}} - {{timeline}} - {{validation_method_2}} - {{timeline}}
**Prototype Testing:** **Prototype Testing:**
- {{testing_approach}} - {{timeline}} - {{testing_approach}} - {{timeline}}
- {{feedback_collection_method}} - {{timeline}} - {{feedback_collection_method}} - {{timeline}}
@@ -353,4 +353,4 @@ sections:
type: table type: table
template: | template: |
| Date | Version | Description | Author | | Date | Version | Description | Author |
| :--- | :------ | :---------- | :----- | | :--- | :------ | :---------- | :----- |

View File

@@ -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. instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions for Unity implementation.
template: | template: |
**Primary Loop ({{duration}} seconds):** **Primary Loop ({{duration}} seconds):**
1. {{action_1}} ({{time_1}}s) - {{unity_component}} 1. {{action_1}} ({{time_1}}s) - {{unity_component}}
2. {{action_2}} ({{time_2}}s) - {{unity_component}} 2. {{action_2}} ({{time_2}}s) - {{unity_component}}
3. {{action_3}} ({{time_3}}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 instruction: Clearly define success and failure states with Unity-specific implementation notes
template: | template: |
**Victory Conditions:** **Victory Conditions:**
- {{win_condition_1}} - Unity Event: {{unity_event}} - {{win_condition_1}} - Unity Event: {{unity_event}}
- {{win_condition_2}} - Unity Event: {{unity_event}} - {{win_condition_2}} - Unity Event: {{unity_event}}
**Failure States:** **Failure States:**
- {{loss_condition_1}} - Trigger: {{unity_trigger}} - {{loss_condition_1}} - Trigger: {{unity_trigger}}
- {{loss_condition_2}} - Trigger: {{unity_trigger}} - {{loss_condition_2}} - Trigger: {{unity_trigger}}
examples: examples:
@@ -132,22 +132,22 @@ sections:
title: "{{mechanic_name}}" title: "{{mechanic_name}}"
template: | template: |
**Description:** {{detailed_description}} **Description:** {{detailed_description}}
**Player Input:** {{input_method}} - Unity Input System: {{input_action}} **Player Input:** {{input_method}} - Unity Input System: {{input_action}}
**System Response:** {{game_response}} **System Response:** {{game_response}}
**Unity Implementation Notes:** **Unity Implementation Notes:**
- **Components Needed:** {{component_list}} - **Components Needed:** {{component_list}}
- **Physics Requirements:** {{physics_2d_setup}} - **Physics Requirements:** {{physics_2d_setup}}
- **Animation States:** {{animator_states}} - **Animation States:** {{animator_states}}
- **Performance Considerations:** {{optimization_notes}} - **Performance Considerations:** {{optimization_notes}}
**Dependencies:** {{other_mechanics_needed}} **Dependencies:** {{other_mechanics_needed}}
**Script Architecture:** **Script Architecture:**
- {{script_name}}.cs - {{responsibility}} - {{script_name}}.cs - {{responsibility}}
- {{manager_script}}.cs - {{management_role}} - {{manager_script}}.cs - {{management_role}}
examples: examples:
@@ -173,15 +173,15 @@ sections:
title: Player Progression title: Player Progression
template: | template: |
**Progression Type:** {{linear|branching|metroidvania}} **Progression Type:** {{linear|branching|metroidvania}}
**Key Milestones:** **Key Milestones:**
1. **{{milestone_1}}** - {{unlock_description}} - Unity: {{scriptable_object_update}} 1. **{{milestone_1}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
2. **{{milestone_2}}** - {{unlock_description}} - Unity: {{scriptable_object_update}} 2. **{{milestone_2}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
3. **{{milestone_3}}** - {{unlock_description}} - Unity: {{scriptable_object_update}} 3. **{{milestone_3}}** - {{unlock_description}} - Unity: {{scriptable_object_update}}
**Save Data Structure:** **Save Data Structure:**
```csharp ```csharp
[System.Serializable] [System.Serializable]
public class PlayerProgress public class PlayerProgress
@@ -197,13 +197,13 @@ sections:
template: | template: |
**Tutorial Phase:** {{duration}} - {{difficulty_description}} **Tutorial Phase:** {{duration}} - {{difficulty_description}}
- Unity Config: {{scriptable_object_values}} - Unity Config: {{scriptable_object_values}}
**Early Game:** {{duration}} - {{difficulty_description}} **Early Game:** {{duration}} - {{difficulty_description}}
- Unity Config: {{scriptable_object_values}} - Unity Config: {{scriptable_object_values}}
**Mid Game:** {{duration}} - {{difficulty_description}} **Mid Game:** {{duration}} - {{difficulty_description}}
- Unity Config: {{scriptable_object_values}} - Unity Config: {{scriptable_object_values}}
**Late Game:** {{duration}} - {{difficulty_description}} **Late Game:** {{duration}} - {{difficulty_description}}
- Unity Config: {{scriptable_object_values}} - Unity Config: {{scriptable_object_values}}
examples: examples:
@@ -236,22 +236,22 @@ sections:
**Target Duration:** {{target_time}} **Target Duration:** {{target_time}}
**Key Elements:** {{required_mechanics}} **Key Elements:** {{required_mechanics}}
**Difficulty Rating:** {{relative_difficulty}} **Difficulty Rating:** {{relative_difficulty}}
**Unity Scene Structure:** **Unity Scene Structure:**
- **Environment:** {{tilemap_setup}} - **Environment:** {{tilemap_setup}}
- **Gameplay Objects:** {{prefab_list}} - **Gameplay Objects:** {{prefab_list}}
- **Lighting:** {{lighting_setup}} - **Lighting:** {{lighting_setup}}
- **Audio:** {{audio_sources}} - **Audio:** {{audio_sources}}
**Level Flow Template:** **Level Flow Template:**
- **Introduction:** {{intro_description}} - Area: {{unity_area_bounds}} - **Introduction:** {{intro_description}} - Area: {{unity_area_bounds}}
- **Challenge:** {{main_challenge}} - Mechanics: {{active_components}} - **Challenge:** {{main_challenge}} - Mechanics: {{active_components}}
- **Resolution:** {{completion_requirement}} - Trigger: {{completion_trigger}} - **Resolution:** {{completion_requirement}} - Trigger: {{completion_trigger}}
**Reusable Prefabs:** **Reusable Prefabs:**
- {{prefab_name}} - {{prefab_purpose}} - {{prefab_name}} - {{prefab_purpose}}
examples: examples:
- "Environment: TilemapRenderer with Platform tileset, Lighting: 2D Global Light + Point Lights" - "Environment: TilemapRenderer with Platform tileset, Lighting: 2D Global Light + Point Lights"
@@ -262,9 +262,9 @@ sections:
**Total Levels:** {{number}} **Total Levels:** {{number}}
**Unlock Pattern:** {{progression_method}} **Unlock Pattern:** {{progression_method}}
**Scene Management:** {{unity_scene_loading}} **Scene Management:** {{unity_scene_loading}}
**Unity Scene Organization:** **Unity Scene Organization:**
- Scene Naming: {{naming_convention}} - Scene Naming: {{naming_convention}}
- Addressable Assets: {{addressable_groups}} - Addressable Assets: {{addressable_groups}}
- Loading Screens: {{loading_implementation}} - Loading Screens: {{loading_implementation}}
@@ -289,13 +289,13 @@ sections:
**Physics:** {{2D Only|3D Only|Hybrid}} **Physics:** {{2D Only|3D Only|Hybrid}}
**Scripting Backend:** {{Mono|IL2CPP}} **Scripting Backend:** {{Mono|IL2CPP}}
**API Compatibility:** {{.NET Standard 2.1|.NET Framework}} **API Compatibility:** {{.NET Standard 2.1|.NET Framework}}
**Required Packages:** **Required Packages:**
- {{package_name}} {{version}} - {{purpose}} - {{package_name}} {{version}} - {{purpose}}
**Project Settings:** **Project Settings:**
- Color Space: {{Linear|Gamma}} - Color Space: {{Linear|Gamma}}
- Quality Settings: {{quality_levels}} - Quality Settings: {{quality_levels}}
- Physics Settings: {{physics_config}} - Physics Settings: {{physics_config}}
@@ -309,9 +309,9 @@ sections:
**Memory Usage:** <{{memory_limit}}MB heap, <{{texture_memory}}MB textures **Memory Usage:** <{{memory_limit}}MB heap, <{{texture_memory}}MB textures
**Load Times:** <{{load_time}}s initial, <{{level_load}}s between levels **Load Times:** <{{load_time}}s initial, <{{level_load}}s between levels
**Battery Usage:** Optimized for mobile devices - {{battery_target}} hours gameplay **Battery Usage:** Optimized for mobile devices - {{battery_target}} hours gameplay
**Unity Profiler Targets:** **Unity Profiler Targets:**
- CPU Frame Time: <{{cpu_time}}ms - CPU Frame Time: <{{cpu_time}}ms
- GPU Frame Time: <{{gpu_time}}ms - GPU Frame Time: <{{gpu_time}}ms
- GC Allocs: <{{gc_limit}}KB per frame - GC Allocs: <{{gc_limit}}KB per frame
@@ -322,20 +322,20 @@ sections:
title: Platform Specific Requirements title: Platform Specific Requirements
template: | template: |
**Desktop:** **Desktop:**
- Resolution: {{min_resolution}} - {{max_resolution}} - Resolution: {{min_resolution}} - {{max_resolution}}
- Input: Keyboard, Mouse, Gamepad ({{gamepad_support}}) - Input: Keyboard, Mouse, Gamepad ({{gamepad_support}})
- Build Target: {{desktop_targets}} - Build Target: {{desktop_targets}}
**Mobile:** **Mobile:**
- Resolution: {{mobile_min}} - {{mobile_max}} - Resolution: {{mobile_min}} - {{mobile_max}}
- Input: Touch, Accelerometer ({{sensor_support}}) - Input: Touch, Accelerometer ({{sensor_support}})
- OS: iOS {{ios_min}}+, Android {{android_min}}+ (API {{api_level}}) - OS: iOS {{ios_min}}+, Android {{android_min}}+ (API {{api_level}})
- Device Requirements: {{device_specs}} - Device Requirements: {{device_specs}}
**Web (if applicable):** **Web (if applicable):**
- WebGL Version: {{webgl_version}} - WebGL Version: {{webgl_version}}
- Browser Support: {{browser_list}} - Browser Support: {{browser_list}}
- Compression: {{compression_format}} - Compression: {{compression_format}}
@@ -346,21 +346,21 @@ sections:
instruction: Define asset specifications for Unity pipeline optimization instruction: Define asset specifications for Unity pipeline optimization
template: | template: |
**2D Art Assets:** **2D Art Assets:**
- Sprites: {{sprite_resolution}} at {{ppu}} PPU - Sprites: {{sprite_resolution}} at {{ppu}} PPU
- Texture Format: {{texture_compression}} - Texture Format: {{texture_compression}}
- Atlas Strategy: {{sprite_atlas_setup}} - Atlas Strategy: {{sprite_atlas_setup}}
- Animation: {{animation_type}} at {{framerate}} FPS - Animation: {{animation_type}} at {{framerate}} FPS
**Audio Assets:** **Audio Assets:**
- Music: {{audio_format}} at {{sample_rate}} Hz - Music: {{audio_format}} at {{sample_rate}} Hz
- SFX: {{sfx_format}} at {{sfx_sample_rate}} Hz - SFX: {{sfx_format}} at {{sfx_sample_rate}} Hz
- Compression: {{audio_compression}} - Compression: {{audio_compression}}
- 3D Audio: {{spatial_audio}} - 3D Audio: {{spatial_audio}}
**UI Assets:** **UI Assets:**
- Canvas Resolution: {{ui_resolution}} - Canvas Resolution: {{ui_resolution}}
- UI Scale Mode: {{scale_mode}} - UI Scale Mode: {{scale_mode}}
- Font: {{font_requirements}} - Font: {{font_requirements}}
@@ -381,17 +381,17 @@ sections:
title: Code Architecture Pattern title: Code Architecture Pattern
template: | template: |
**Architecture Pattern:** {{MVC|MVVM|ECS|Component-Based|Custom}} **Architecture Pattern:** {{MVC|MVVM|ECS|Component-Based|Custom}}
**Core Systems Required:** **Core Systems Required:**
- **Scene Management:** {{scene_manager_approach}} - **Scene Management:** {{scene_manager_approach}}
- **State Management:** {{state_pattern_implementation}} - **State Management:** {{state_pattern_implementation}}
- **Event System:** {{event_system_choice}} - **Event System:** {{event_system_choice}}
- **Object Pooling:** {{pooling_strategy}} - **Object Pooling:** {{pooling_strategy}}
- **Save/Load System:** {{save_system_approach}} - **Save/Load System:** {{save_system_approach}}
**Folder Structure:** **Folder Structure:**
``` ```
Assets/ Assets/
├── _Project/ ├── _Project/
@@ -401,9 +401,9 @@ sections:
│ ├── Scenes/ │ ├── Scenes/
│ └── {{additional_folders}} │ └── {{additional_folders}}
``` ```
**Naming Conventions:** **Naming Conventions:**
- Scripts: {{script_naming}} - Scripts: {{script_naming}}
- Prefabs: {{prefab_naming}} - Prefabs: {{prefab_naming}}
- Scenes: {{scene_naming}} - Scenes: {{scene_naming}}
@@ -414,19 +414,19 @@ sections:
title: Unity Systems Integration title: Unity Systems Integration
template: | template: |
**Required Unity Systems:** **Required Unity Systems:**
- **Input System:** {{input_implementation}} - **Input System:** {{input_implementation}}
- **Animation System:** {{animation_approach}} - **Animation System:** {{animation_approach}}
- **Physics Integration:** {{physics_usage}} - **Physics Integration:** {{physics_usage}}
- **Rendering Features:** {{rendering_requirements}} - **Rendering Features:** {{rendering_requirements}}
- **Asset Streaming:** {{asset_loading_strategy}} - **Asset Streaming:** {{asset_loading_strategy}}
**Third-Party Integrations:** **Third-Party Integrations:**
- {{integration_name}}: {{integration_purpose}} - {{integration_name}}: {{integration_purpose}}
**Performance Systems:** **Performance Systems:**
- **Profiling Integration:** {{profiling_setup}} - **Profiling Integration:** {{profiling_setup}}
- **Memory Management:** {{memory_strategy}} - **Memory Management:** {{memory_strategy}}
- **Build Pipeline:** {{build_automation}} - **Build Pipeline:** {{build_automation}}
@@ -437,20 +437,20 @@ sections:
title: Data Management title: Data Management
template: | template: |
**Save Data Architecture:** **Save Data Architecture:**
- **Format:** {{PlayerPrefs|JSON|Binary|Cloud}} - **Format:** {{PlayerPrefs|JSON|Binary|Cloud}}
- **Structure:** {{save_data_organization}} - **Structure:** {{save_data_organization}}
- **Encryption:** {{security_approach}} - **Encryption:** {{security_approach}}
- **Cloud Sync:** {{cloud_integration}} - **Cloud Sync:** {{cloud_integration}}
**Configuration Data:** **Configuration Data:**
- **ScriptableObjects:** {{scriptable_object_usage}} - **ScriptableObjects:** {{scriptable_object_usage}}
- **Settings Management:** {{settings_system}} - **Settings Management:** {{settings_system}}
- **Localization:** {{localization_approach}} - **Localization:** {{localization_approach}}
**Runtime Data:** **Runtime Data:**
- **Caching Strategy:** {{cache_implementation}} - **Caching Strategy:** {{cache_implementation}}
- **Memory Pools:** {{pooling_objects}} - **Memory Pools:** {{pooling_objects}}
- **Asset References:** {{asset_reference_system}} - **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 instruction: Provide guidance for the Story Manager (SM) agent on how to break down this GDD into implementable user stories
template: | template: |
**Epic Prioritization:** {{epic_order_rationale}} **Epic Prioritization:** {{epic_order_rationale}}
**Story Sizing Guidelines:** **Story Sizing Guidelines:**
- Foundation stories: {{foundation_story_scope}} - Foundation stories: {{foundation_story_scope}}
- Feature stories: {{feature_story_scope}} - Feature stories: {{feature_story_scope}}
- Polish stories: {{polish_story_scope}} - Polish stories: {{polish_story_scope}}
**Unity-Specific Story Considerations:** **Unity-Specific Story Considerations:**
- Each story should result in testable Unity scenes or prefabs - Each story should result in testable Unity scenes or prefabs
- Include specific Unity components and systems in acceptance criteria - Include specific Unity components and systems in acceptance criteria
- Consider cross-platform testing requirements - Consider cross-platform testing requirements
@@ -702,4 +702,4 @@ sections:
examples: examples:
- "Unity Architect: Create detailed technical architecture document with specific Unity implementation patterns" - "Unity Architect: Create detailed technical architecture document with specific Unity implementation patterns"
- "Unity Developer: Implement core systems and gameplay mechanics according to architecture" - "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"

View File

@@ -14,13 +14,13 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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: Before starting, ensure you have access to:
- Game Design Document (GDD) - Game Design Document (GDD)
- Game Architecture Document - Game Architecture Document
- Any existing stories in this epic - Any existing stories in this epic
The story should be specific enough that a developer can implement it without requiring additional design decisions. The story should be specific enough that a developer can implement it without requiring additional design decisions.
- id: story-header - id: story-header
@@ -69,12 +69,12 @@ sections:
title: Files to Create/Modify title: Files to Create/Modify
template: | template: |
**New Files:** **New Files:**
- `{{file_path_1}}` - {{purpose}} - `{{file_path_1}}` - {{purpose}}
- `{{file_path_2}}` - {{purpose}} - `{{file_path_2}}` - {{purpose}}
**Modified Files:** **Modified Files:**
- `{{existing_file_1}}` - {{changes_needed}} - `{{existing_file_1}}` - {{changes_needed}}
- `{{existing_file_2}}` - {{changes_needed}} - `{{existing_file_2}}` - {{changes_needed}}
- id: class-interface-definitions - id: class-interface-definitions
@@ -157,13 +157,13 @@ sections:
instruction: Reference the specific sections of the GDD that this story implements instruction: Reference the specific sections of the GDD that this story implements
template: | template: |
**GDD Reference:** {{section_name}} ({{page_or_section_number}}) **GDD Reference:** {{section_name}} ({{page_or_section_number}})
**Game Mechanic:** {{mechanic_name}} **Game Mechanic:** {{mechanic_name}}
**Player Experience Goal:** {{experience_description}} **Player Experience Goal:** {{experience_description}}
**Balance Parameters:** **Balance Parameters:**
- {{parameter_1}}: {{value_or_range}} - {{parameter_1}}: {{value_or_range}}
- {{parameter_2}}: {{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 instruction: List any dependencies that must be completed before this story can be implemented
template: | template: |
**Story Dependencies:** **Story Dependencies:**
- {{story_id}}: {{dependency_description}} - {{story_id}}: {{dependency_description}}
**Technical Dependencies:** **Technical Dependencies:**
- {{system_or_file}}: {{requirement}} - {{system_or_file}}: {{requirement}}
**Asset Dependencies:** **Asset Dependencies:**
- {{asset_type}}: {{asset_description}} - {{asset_type}}: {{asset_description}}
- Location: `{{asset_path}}` - Location: `{{asset_path}}`
@@ -241,16 +241,16 @@ sections:
instruction: Any additional context, design decisions, or implementation notes instruction: Any additional context, design decisions, or implementation notes
template: | template: |
**Implementation Notes:** **Implementation Notes:**
- {{note_1}} - {{note_1}}
- {{note_2}} - {{note_2}}
**Design Decisions:** **Design Decisions:**
- {{decision_1}}: {{rationale}} - {{decision_1}}: {{rationale}}
- {{decision_2}}: {{rationale}} - {{decision_2}}: {{rationale}}
**Future Considerations:** **Future Considerations:**
- {{future_enhancement_1}} - {{future_enhancement_1}}
- {{future_optimization_1}} - {{future_optimization_1}}

View File

@@ -14,7 +14,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | 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. 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. 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 - id: introduction
@@ -22,7 +22,7 @@ sections:
instruction: Establish the purpose and scope of level design for this game instruction: Establish the purpose and scope of level design for this game
content: | 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 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. This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
sections: sections:
- id: change-log - id: change-log
@@ -69,29 +69,29 @@ sections:
title: "{{category_name}} Levels" title: "{{category_name}} Levels"
template: | template: |
**Purpose:** {{gameplay_purpose}} **Purpose:** {{gameplay_purpose}}
**Target Duration:** {{min_time}} - {{max_time}} minutes **Target Duration:** {{min_time}} - {{max_time}} minutes
**Difficulty Range:** {{difficulty_scale}} **Difficulty Range:** {{difficulty_scale}}
**Key Mechanics Featured:** **Key Mechanics Featured:**
- {{mechanic_1}} - {{usage_description}} - {{mechanic_1}} - {{usage_description}}
- {{mechanic_2}} - {{usage_description}} - {{mechanic_2}} - {{usage_description}}
**Player Objectives:** **Player Objectives:**
- Primary: {{primary_objective}} - Primary: {{primary_objective}}
- Secondary: {{secondary_objective}} - Secondary: {{secondary_objective}}
- Hidden: {{secret_objective}} - Hidden: {{secret_objective}}
**Success Criteria:** **Success Criteria:**
- {{completion_requirement_1}} - {{completion_requirement_1}}
- {{completion_requirement_2}} - {{completion_requirement_2}}
**Technical Requirements:** **Technical Requirements:**
- Maximum entities: {{entity_limit}} - Maximum entities: {{entity_limit}}
- Performance target: {{fps_target}} FPS - Performance target: {{fps_target}} FPS
- Memory budget: {{memory_limit}}MB - Memory budget: {{memory_limit}}MB
@@ -106,11 +106,11 @@ sections:
instruction: Based on GDD requirements, define the overall level organization instruction: Based on GDD requirements, define the overall level organization
template: | template: |
**Organization Type:** {{linear|hub_world|open_world}} **Organization Type:** {{linear|hub_world|open_world}}
**Total Level Count:** {{number}} **Total Level Count:** {{number}}
**World Breakdown:** **World Breakdown:**
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}} - World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
- World 3: {{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 instruction: Define how players access new levels
template: | template: |
**Progression Gates:** **Progression Gates:**
- Linear progression: Complete previous level - Linear progression: Complete previous level
- Star requirements: {{star_count}} stars to unlock - Star requirements: {{star_count}} stars to unlock
- Skill gates: Demonstrate {{skill_requirement}} - Skill gates: Demonstrate {{skill_requirement}}
@@ -160,17 +160,17 @@ sections:
instruction: Define all environmental components that can be used in levels instruction: Define all environmental components that can be used in levels
template: | template: |
**Terrain Types:** **Terrain Types:**
- {{terrain_1}}: {{properties_and_usage}} - {{terrain_1}}: {{properties_and_usage}}
- {{terrain_2}}: {{properties_and_usage}} - {{terrain_2}}: {{properties_and_usage}}
**Interactive Objects:** **Interactive Objects:**
- {{object_1}}: {{behavior_and_purpose}} - {{object_1}}: {{behavior_and_purpose}}
- {{object_2}}: {{behavior_and_purpose}} - {{object_2}}: {{behavior_and_purpose}}
**Hazards and Obstacles:** **Hazards and Obstacles:**
- {{hazard_1}}: {{damage_and_behavior}} - {{hazard_1}}: {{damage_and_behavior}}
- {{hazard_2}}: {{damage_and_behavior}} - {{hazard_2}}: {{damage_and_behavior}}
- id: collectibles-rewards - id: collectibles-rewards
@@ -178,18 +178,18 @@ sections:
instruction: Define all collectible items and their placement rules instruction: Define all collectible items and their placement rules
template: | template: |
**Collectible Types:** **Collectible Types:**
- {{collectible_1}}: {{value_and_purpose}} - {{collectible_1}}: {{value_and_purpose}}
- {{collectible_2}}: {{value_and_purpose}} - {{collectible_2}}: {{value_and_purpose}}
**Placement Guidelines:** **Placement Guidelines:**
- Mandatory collectibles: {{placement_rules}} - Mandatory collectibles: {{placement_rules}}
- Optional collectibles: {{placement_rules}} - Optional collectibles: {{placement_rules}}
- Secret collectibles: {{placement_rules}} - Secret collectibles: {{placement_rules}}
**Reward Distribution:** **Reward Distribution:**
- Easy to find: {{percentage}}% - Easy to find: {{percentage}}%
- Moderate challenge: {{percentage}}% - Moderate challenge: {{percentage}}%
- High skill required: {{percentage}}% - High skill required: {{percentage}}%
@@ -198,18 +198,18 @@ sections:
instruction: Define how enemies should be placed and balanced in levels instruction: Define how enemies should be placed and balanced in levels
template: | template: |
**Enemy Categories:** **Enemy Categories:**
- {{enemy_type_1}}: {{behavior_and_usage}} - {{enemy_type_1}}: {{behavior_and_usage}}
- {{enemy_type_2}}: {{behavior_and_usage}} - {{enemy_type_2}}: {{behavior_and_usage}}
**Placement Principles:** **Placement Principles:**
- Introduction encounters: {{guideline}} - Introduction encounters: {{guideline}}
- Standard encounters: {{guideline}} - Standard encounters: {{guideline}}
- Challenge encounters: {{guideline}} - Challenge encounters: {{guideline}}
**Difficulty Scaling:** **Difficulty Scaling:**
- Enemy count progression: {{scaling_rule}} - Enemy count progression: {{scaling_rule}}
- Enemy type introduction: {{pacing_rule}} - Enemy type introduction: {{pacing_rule}}
- Encounter complexity: {{complexity_rule}} - Encounter complexity: {{complexity_rule}}
@@ -222,14 +222,14 @@ sections:
title: Level Layout Principles title: Level Layout Principles
template: | template: |
**Spatial Design:** **Spatial Design:**
- Grid size: {{grid_dimensions}} - Grid size: {{grid_dimensions}}
- Minimum path width: {{width_units}} - Minimum path width: {{width_units}}
- Maximum vertical distance: {{height_units}} - Maximum vertical distance: {{height_units}}
- Safe zones placement: {{safety_guidelines}} - Safe zones placement: {{safety_guidelines}}
**Navigation Design:** **Navigation Design:**
- Clear path indication: {{visual_cues}} - Clear path indication: {{visual_cues}}
- Landmark placement: {{landmark_rules}} - Landmark placement: {{landmark_rules}}
- Dead end avoidance: {{dead_end_policy}} - Dead end avoidance: {{dead_end_policy}}
@@ -239,13 +239,13 @@ sections:
instruction: Define how to control the rhythm and pace of gameplay within levels instruction: Define how to control the rhythm and pace of gameplay within levels
template: | template: |
**Action Sequences:** **Action Sequences:**
- High intensity duration: {{max_duration}} - High intensity duration: {{max_duration}}
- Rest period requirement: {{min_rest_time}} - Rest period requirement: {{min_rest_time}}
- Intensity variation: {{pacing_pattern}} - Intensity variation: {{pacing_pattern}}
**Learning Sequences:** **Learning Sequences:**
- New mechanic introduction: {{teaching_method}} - New mechanic introduction: {{teaching_method}}
- Practice opportunity: {{practice_duration}} - Practice opportunity: {{practice_duration}}
- Skill application: {{application_context}} - Skill application: {{application_context}}
@@ -254,14 +254,14 @@ sections:
instruction: Define how to create appropriate challenges for each level type instruction: Define how to create appropriate challenges for each level type
template: | template: |
**Challenge Types:** **Challenge Types:**
- Execution challenges: {{skill_requirements}} - Execution challenges: {{skill_requirements}}
- Puzzle challenges: {{complexity_guidelines}} - Puzzle challenges: {{complexity_guidelines}}
- Time challenges: {{time_pressure_rules}} - Time challenges: {{time_pressure_rules}}
- Resource challenges: {{resource_management}} - Resource challenges: {{resource_management}}
**Difficulty Calibration:** **Difficulty Calibration:**
- Skill check frequency: {{frequency_guidelines}} - Skill check frequency: {{frequency_guidelines}}
- Failure recovery: {{retry_mechanics}} - Failure recovery: {{retry_mechanics}}
- Hint system integration: {{help_system}} - Hint system integration: {{help_system}}
@@ -275,7 +275,7 @@ sections:
instruction: Define how level data should be structured for implementation instruction: Define how level data should be structured for implementation
template: | template: |
**Level File Format:** **Level File Format:**
- Data format: {{json|yaml|custom}} - Data format: {{json|yaml|custom}}
- File naming: `level_{{world}}_{{number}}.{{extension}}` - File naming: `level_{{world}}_{{number}}.{{extension}}`
- Data organization: {{structure_description}} - Data organization: {{structure_description}}
@@ -313,14 +313,14 @@ sections:
instruction: Define how level assets are organized and loaded instruction: Define how level assets are organized and loaded
template: | template: |
**Tilemap Requirements:** **Tilemap Requirements:**
- Tile size: {{tile_dimensions}}px - Tile size: {{tile_dimensions}}px
- Tileset organization: {{tileset_structure}} - Tileset organization: {{tileset_structure}}
- Layer organization: {{layer_system}} - Layer organization: {{layer_system}}
- Collision data: {{collision_format}} - Collision data: {{collision_format}}
**Audio Integration:** **Audio Integration:**
- Background music: {{music_requirements}} - Background music: {{music_requirements}}
- Ambient sounds: {{ambient_system}} - Ambient sounds: {{ambient_system}}
- Dynamic audio: {{dynamic_audio_rules}} - Dynamic audio: {{dynamic_audio_rules}}
@@ -329,19 +329,19 @@ sections:
instruction: Define performance requirements for level systems instruction: Define performance requirements for level systems
template: | template: |
**Entity Limits:** **Entity Limits:**
- Maximum active entities: {{entity_limit}} - Maximum active entities: {{entity_limit}}
- Maximum particles: {{particle_limit}} - Maximum particles: {{particle_limit}}
- Maximum audio sources: {{audio_limit}} - Maximum audio sources: {{audio_limit}}
**Memory Management:** **Memory Management:**
- Texture memory budget: {{texture_memory}}MB - Texture memory budget: {{texture_memory}}MB
- Audio memory budget: {{audio_memory}}MB - Audio memory budget: {{audio_memory}}MB
- Level loading time: <{{load_time}}s - Level loading time: <{{load_time}}s
**Culling and LOD:** **Culling and LOD:**
- Off-screen culling: {{culling_distance}} - Off-screen culling: {{culling_distance}}
- Level-of-detail rules: {{lod_system}} - Level-of-detail rules: {{lod_system}}
- Asset streaming: {{streaming_requirements}} - Asset streaming: {{streaming_requirements}}
@@ -354,13 +354,13 @@ sections:
title: Automated Testing title: Automated Testing
template: | template: |
**Performance Testing:** **Performance Testing:**
- Frame rate validation: Maintain {{fps_target}} FPS - Frame rate validation: Maintain {{fps_target}} FPS
- Memory usage monitoring: Stay under {{memory_limit}}MB - Memory usage monitoring: Stay under {{memory_limit}}MB
- Loading time verification: Complete in <{{load_time}}s - Loading time verification: Complete in <{{load_time}}s
**Gameplay Testing:** **Gameplay Testing:**
- Completion path validation: All objectives achievable - Completion path validation: All objectives achievable
- Collectible accessibility: All items reachable - Collectible accessibility: All items reachable
- Softlock prevention: No unwinnable states - Softlock prevention: No unwinnable states
@@ -388,14 +388,14 @@ sections:
title: Balance Validation title: Balance Validation
template: | template: |
**Metrics Collection:** **Metrics Collection:**
- Completion rate: Target {{completion_percentage}}% - Completion rate: Target {{completion_percentage}}%
- Average completion time: {{target_time}} ± {{variance}} - Average completion time: {{target_time}} ± {{variance}}
- Death count per level: <{{max_deaths}} - Death count per level: <{{max_deaths}}
- Collectible discovery rate: {{discovery_percentage}}% - Collectible discovery rate: {{discovery_percentage}}%
**Iteration Guidelines:** **Iteration Guidelines:**
- Adjustment criteria: {{criteria_for_changes}} - Adjustment criteria: {{criteria_for_changes}}
- Testing sample size: {{minimum_testers}} - Testing sample size: {{minimum_testers}}
- Validation period: {{testing_duration}} - Validation period: {{testing_duration}}
@@ -408,14 +408,14 @@ sections:
title: Design Phase title: Design Phase
template: | template: |
**Concept Development:** **Concept Development:**
1. Define level purpose and goals 1. Define level purpose and goals
2. Create rough layout sketch 2. Create rough layout sketch
3. Identify key mechanics and challenges 3. Identify key mechanics and challenges
4. Estimate difficulty and duration 4. Estimate difficulty and duration
**Documentation Requirements:** **Documentation Requirements:**
- Level design brief - Level design brief
- Layout diagrams - Layout diagrams
- Mechanic integration notes - Mechanic integration notes
@@ -424,15 +424,15 @@ sections:
title: Implementation Phase title: Implementation Phase
template: | template: |
**Technical Implementation:** **Technical Implementation:**
1. Create level data file 1. Create level data file
2. Build tilemap and layout 2. Build tilemap and layout
3. Place entities and objects 3. Place entities and objects
4. Configure level logic and triggers 4. Configure level logic and triggers
5. Integrate audio and visual effects 5. Integrate audio and visual effects
**Quality Assurance:** **Quality Assurance:**
1. Automated testing execution 1. Automated testing execution
2. Internal playtesting 2. Internal playtesting
3. Performance validation 3. Performance validation
@@ -441,14 +441,14 @@ sections:
title: Integration Phase title: Integration Phase
template: | template: |
**Game Integration:** **Game Integration:**
1. Level progression integration 1. Level progression integration
2. Save system compatibility 2. Save system compatibility
3. Analytics integration 3. Analytics integration
4. Achievement system integration 4. Achievement system integration
**Final Validation:** **Final Validation:**
1. Full game context testing 1. Full game context testing
2. Performance regression testing 2. Performance regression testing
3. Platform compatibility verification 3. Platform compatibility verification
@@ -481,4 +481,4 @@ sections:
- Difficulty curve adherence: {{curve_accuracy}} - Difficulty curve adherence: {{curve_accuracy}}
- Mechanic integration effectiveness: {{integration_score}} - Mechanic integration effectiveness: {{integration_score}}
- Player guidance clarity: {{guidance_score}} - Player guidance clarity: {{guidance_score}}
- Content accessibility: {{accessibility_rate}}% - Content accessibility: {{accessibility_rate}}%

View File

@@ -17,21 +17,21 @@ workflow:
- brainstorming_session - brainstorming_session
- game_research_prompt - game_research_prompt
- player_research - 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 - agent: game-designer
creates: game-design-doc.md creates: game-design-doc.md
requires: game-brief.md requires: game-brief.md
optional_steps: optional_steps:
- competitive_analysis - competitive_analysis
- technical_research - 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 - agent: game-designer
creates: level-design-doc.md creates: level-design-doc.md
requires: game-design-doc.md requires: game-design-doc.md
optional_steps: optional_steps:
- level_prototyping - level_prototyping
- difficulty_analysis - 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 - agent: solution-architect
creates: game-architecture.md creates: game-architecture.md
requires: requires:
@@ -41,7 +41,7 @@ workflow:
- technical_research_prompt - technical_research_prompt
- performance_analysis - performance_analysis
- platform_research - 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 - agent: game-designer
validates: design_consistency validates: design_consistency
requires: all_design_documents requires: all_design_documents
@@ -66,7 +66,7 @@ workflow:
optional_steps: optional_steps:
- quick_brainstorming - quick_brainstorming
- concept_validation - 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 - agent: game-designer
creates: prototype-design.md creates: prototype-design.md
uses: create-doc prototype-design OR create-game-story uses: create-doc prototype-design OR create-game-story

View File

@@ -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. notes: Implement stories in priority order. Test frequently in the Unity Editor and adjust design based on what feels fun. Document discoveries.
workflow_end: workflow_end:
action: prototype_evaluation 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: game_jam_sequence:
- step: jam_concept - step: jam_concept
agent: game-designer agent: game-designer

View File

@@ -27,18 +27,18 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | instruction: |
Initial Setup Initial Setup
1. Replace {{project_name}} with the actual project name throughout the document 1. Replace {{project_name}} with the actual project name throughout the document
2. Gather and review required inputs: 2. Gather and review required inputs:
- Product Requirements Document (PRD) - Required for business needs and scale requirements - Product Requirements Document (PRD) - Required for business needs and scale requirements
- Main System Architecture - Required for infrastructure dependencies - Main System Architecture - Required for infrastructure dependencies
- Technical Preferences/Tech Stack Document - Required for technology choices - Technical Preferences/Tech Stack Document - Required for technology choices
- PRD Technical Assumptions - Required for cross-referencing repository and service architecture - 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?" 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> 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` Output file location: `docs/infrastructure-architecture.md`
- id: infrastructure-overview - id: infrastructure-overview
@@ -67,7 +67,7 @@ sections:
- Repository Structure - Repository Structure
- State Management - State Management
- Dependency Management - Dependency Management
<critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule> <critical_rule>All infrastructure must be defined as code. No manual resource creation in production environments.</critical_rule>
- id: environment-configuration - id: environment-configuration
@@ -103,7 +103,7 @@ sections:
title: Network Architecture title: Network Architecture
instruction: | instruction: |
Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns. Design network topology considering security zones, traffic patterns, and compliance requirements. Reference main architecture for service communication patterns.
Create Mermaid diagram showing: Create Mermaid diagram showing:
- VPC/Network structure - VPC/Network structure
- Security zones and boundaries - Security zones and boundaries
@@ -166,7 +166,7 @@ sections:
title: Data Resources title: Data Resources
instruction: | instruction: |
Design data infrastructure based on data architecture from main system design. Consider data volumes, access patterns, compliance, and recovery requirements. 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: Create data flow diagram showing:
- Database topology - Database topology
- Replication patterns - Replication patterns
@@ -187,7 +187,7 @@ sections:
- Data Encryption - Data Encryption
- Compliance Controls - Compliance Controls
- Security Scanning & Monitoring - Security Scanning & Monitoring
<critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule> <critical_rule>Apply principle of least privilege for all access controls. Document all security exceptions with business justification.</critical_rule>
- id: shared-responsibility - id: shared-responsibility
@@ -223,7 +223,7 @@ sections:
title: CI/CD Pipeline title: CI/CD Pipeline
instruction: | instruction: |
Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates. Design deployment pipeline that balances speed with safety. Include progressive deployment strategies and automated quality gates.
Create pipeline diagram showing: Create pipeline diagram showing:
- Build stages - Build stages
- Test gates - Test gates
@@ -254,7 +254,7 @@ sections:
- Recovery Procedures - Recovery Procedures
- RTO & RPO Targets - RTO & RPO Targets
- DR Testing Approach - DR Testing Approach
<critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule> <critical_rule>DR procedures must be tested at least quarterly. Document test results and improvement actions.</critical_rule>
- id: cost-optimization - id: cost-optimization
@@ -296,15 +296,15 @@ sections:
title: DevOps/Platform Feasibility Review title: DevOps/Platform Feasibility Review
instruction: | instruction: |
CRITICAL STEP - Present architectural blueprint summary to DevOps/Platform Engineering Agent for feasibility review. Request specific feedback on: 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? - **Operational Complexity:** Are the proposed patterns implementable with current tooling and expertise?
- **Resource Constraints:** Do infrastructure requirements align with available resources and budgets? - **Resource Constraints:** Do infrastructure requirements align with available resources and budgets?
- **Security Implementation:** Are security patterns achievable with current security toolchain? - **Security Implementation:** Are security patterns achievable with current security toolchain?
- **Operational Overhead:** Will the proposed architecture create excessive operational burden? - **Operational Overhead:** Will the proposed architecture create excessive operational burden?
- **Technology Constraints:** Are selected technologies compatible with existing infrastructure? - **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. 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> <critical_rule>Address all critical feasibility concerns before proceeding to final architecture documentation. If critical blockers identified, revise architecture before continuing.</critical_rule>
sections: sections:
- id: feasibility-results - id: feasibility-results
@@ -322,7 +322,7 @@ sections:
title: Validation Framework title: Validation Framework
content: | 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: 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 - Completeness of architecture documentation
- Consistency with broader system architecture - Consistency with broader system architecture
- Appropriate level of detail for different stakeholders - Appropriate level of detail for different stakeholders
@@ -332,12 +332,12 @@ sections:
title: Validation Process title: Validation Process
content: | content: |
The architecture documentation validation should be performed: The architecture documentation validation should be performed:
- After initial architecture development - After initial architecture development
- After significant architecture changes - After significant architecture changes
- Before major implementation phases - Before major implementation phases
- During periodic architecture reviews - During periodic architecture reviews
The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document. The Platform Engineer should use the infrastructure checklist to systematically validate all aspects of this architecture document.
- id: implementation-handoff - id: implementation-handoff
@@ -348,7 +348,7 @@ sections:
title: Architecture Decision Records (ADRs) title: Architecture Decision Records (ADRs)
content: | content: |
Create ADRs for key infrastructure decisions: Create ADRs for key infrastructure decisions:
- Cloud provider selection rationale - Cloud provider selection rationale
- Container orchestration platform choice - Container orchestration platform choice
- Networking architecture decisions - Networking architecture decisions
@@ -358,7 +358,7 @@ sections:
title: Implementation Validation Criteria title: Implementation Validation Criteria
content: | content: |
Define specific criteria for validating correct implementation: Define specific criteria for validating correct implementation:
- Infrastructure as Code quality gates - Infrastructure as Code quality gates
- Security compliance checkpoints - Security compliance checkpoints
- Performance benchmarks - 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. 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: | content: |
--- ---
_Document Version: 1.0_ _Document Version: 1.0_
_Last Updated: {{current_date}}_ _Last Updated: {{current_date}}_
_Next Review: {{review_date}}_ _Next Review: {{review_date}}_

View File

@@ -28,7 +28,7 @@ sections:
- id: initial-setup - id: initial-setup
instruction: | instruction: |
Initial Setup Initial Setup
1. Replace {{project_name}} with the actual project name throughout the document 1. Replace {{project_name}} with the actual project name throughout the document
2. Gather and review required inputs: 2. Gather and review required inputs:
- **Infrastructure Architecture Document** (Primary input - REQUIRED) - **Infrastructure Architecture Document** (Primary input - REQUIRED)
@@ -37,10 +37,10 @@ sections:
- Technology Stack Document - Technology Stack Document
- Infrastructure Checklist - 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." - 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 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> 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` Output file location: `docs/platform-infrastructure/platform-implementation.md`
- id: executive-summary - id: executive-summary
@@ -113,7 +113,7 @@ sections:
# Example Terraform for VPC setup # Example Terraform for VPC setup
module "vpc" { module "vpc" {
source = "./modules/vpc" source = "./modules/vpc"
cidr_block = "{{vpc_cidr}}" cidr_block = "{{vpc_cidr}}"
availability_zones = {{availability_zones}} availability_zones = {{availability_zones}}
public_subnets = {{public_subnets}} public_subnets = {{public_subnets}}
@@ -508,7 +508,7 @@ sections:
// K6 Load Test Example // K6 Load Test Example
import http from 'k6/http'; import http from 'k6/http';
import { check } from 'k6'; import { check } from 'k6';
export let options = { export let options = {
stages: [ stages: [
{ duration: '5m', target: {{target_users}} }, { 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. 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: | content: |
--- ---
_Platform Version: 1.0_ _Platform Version: 1.0_
_Implementation Date: {{implementation_date}}_ _Implementation Date: {{implementation_date}}_
_Next Review: {{review_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)_

1607
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,23 @@
{ {
"$schema": "https://json.schemastore.org/package.json",
"name": "bmad-method", "name": "bmad-method",
"version": "4.37.0-beta.6", "version": "5.0.0",
"description": "Breakthrough Method of Agile AI-driven Development", "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", "main": "tools/cli.js",
"bin": { "bin": {
"bmad": "tools/bmad-npx-wrapper.js", "bmad": "tools/bmad-npx-wrapper.js",
@@ -11,27 +27,43 @@
"build": "node tools/cli.js build", "build": "node tools/cli.js build",
"build:agents": "node tools/cli.js build --agents-only", "build:agents": "node tools/cli.js build --agents-only",
"build:teams": "node tools/cli.js build --teams-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", "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", "install:bmad": "node tools/installer/bin/bmad.js install",
"format": "prettier --write \"**/*.md\"", "lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
"version:patch": "node tools/version-bump.js patch", "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
"version:minor": "node tools/version-bump.js minor", "list:agents": "node tools/cli.js list:agents",
"version:major": "node tools/version-bump.js major", "prepare": "husky",
"version:expansion": "node tools/bump-expansion-version.js",
"version:expansion:set": "node tools/update-expansion-version.js",
"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:patch": "node tools/bump-all-versions.js patch",
"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:patch": "node tools/bump-all-versions.js patch",
"release": "semantic-release", "release": "semantic-release",
"release:test": "semantic-release --dry-run --no-ci || echo 'Config test complete - authentication errors are expected locally'", "release:test": "semantic-release --dry-run --no-ci || echo 'Config test complete - authentication errors are expected locally'",
"prepare": "husky" "validate": "node tools/cli.js validate",
"version:all": "node tools/bump-all-versions.js",
"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: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",
"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": { "dependencies": {
"@kayvan/markdown-tree-parser": "^1.5.0", "@kayvan/markdown-tree-parser": "^1.5.0",
@@ -46,37 +78,25 @@
"ora": "^5.4.1", "ora": "^5.4.1",
"semver": "^7.6.3" "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": { "devDependencies": {
"@eslint/js": "^9.33.0",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"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", "husky": "^9.1.7",
"jest": "^30.0.4", "jest": "^30.0.4",
"lint-staged": "^16.1.1", "lint-staged": "^16.1.1",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-packagejson": "^2.5.19",
"semantic-release": "^22.0.0", "semantic-release": "^22.0.0",
"yaml-eslint-parser": "^1.2.3",
"yaml-lint": "^1.7.0" "yaml-lint": "^1.7.0"
}, },
"lint-staged": { "engines": {
"**/*.md": [ "node": ">=20.10.0"
"prettier --write"
]
} }
} }

32
prettier.config.mjs Normal file
View 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'],
};

View File

@@ -5,30 +5,30 @@
* This file ensures proper execution when run via npx from GitHub * This file ensures proper execution when run via npx from GitHub
*/ */
const { execSync } = require('child_process'); const { execSync } = require('node:child_process');
const path = require('path'); const path = require('node:path');
const fs = require('fs'); const fs = require('node:fs');
// Check if we're running in an npx temporary directory // Check if we're running in an npx temporary directory
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm'); const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
// If running via npx, we need to handle things differently // If running via npx, we need to handle things differently
if (isNpxExecution) { if (isNpxExecution) {
const args = process.argv.slice(2); const arguments_ = process.argv.slice(2);
// Use the installer for all commands // Use the installer for all commands
const bmadScriptPath = path.join(__dirname, 'installer', 'bin', 'bmad.js'); const bmadScriptPath = path.join(__dirname, 'installer', 'bin', 'bmad.js');
if (!fs.existsSync(bmadScriptPath)) { if (!fs.existsSync(bmadScriptPath)) {
console.error('Error: Could not find bmad.js at', bmadScriptPath); console.error('Error: Could not find bmad.js at', bmadScriptPath);
console.error('Current directory:', __dirname); console.error('Current directory:', __dirname);
process.exit(1); process.exit(1);
} }
try { try {
execSync(`node "${bmadScriptPath}" ${args.join(' ')}`, { execSync(`node "${bmadScriptPath}" ${arguments_.join(' ')}`, {
stdio: 'inherit', stdio: 'inherit',
cwd: path.dirname(__dirname) cwd: path.dirname(__dirname),
}); });
} catch (error) { } catch (error) {
process.exit(error.status || 1); process.exit(error.status || 1);
@@ -36,4 +36,4 @@ if (isNpxExecution) {
} else { } else {
// Local execution - use installer for all commands // Local execution - use installer for all commands
require('./installer/bin/bmad.js'); require('./installer/bin/bmad.js');
} }

View File

@@ -1,23 +1,23 @@
const fs = require("node:fs").promises; const fs = require('node:fs').promises;
const path = require("node:path"); const path = require('node:path');
const DependencyResolver = require("../lib/dependency-resolver"); const DependencyResolver = require('../lib/dependency-resolver');
const yamlUtils = require("../lib/yaml-utils"); const yamlUtilities = require('../lib/yaml-utils');
class WebBuilder { class WebBuilder {
constructor(options = {}) { constructor(options = {}) {
this.rootDir = options.rootDir || process.cwd(); 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.resolver = new DependencyResolver(this.rootDir);
this.templatePath = path.join( this.templatePath = path.join(
this.rootDir, this.rootDir,
"tools", 'tools',
"md-assets", 'md-assets',
"web-agent-startup-instructions.md" 'web-agent-startup-instructions.md',
); );
} }
parseYaml(content) { parseYaml(content) {
const yaml = require("js-yaml"); const yaml = require('js-yaml');
return yaml.load(content); return yaml.load(content);
} }
@@ -26,7 +26,7 @@ class WebBuilder {
// All resources get installed under the bundle root, so use that path // All resources get installed under the bundle root, so use that path
const relativePath = path.relative(this.rootDir, filePath); const relativePath = path.relative(this.rootDir, filePath);
const pathParts = relativePath.split(path.sep); const pathParts = relativePath.split(path.sep);
let resourcePath; let resourcePath;
if (pathParts[0] === 'expansion-packs') { if (pathParts[0] === 'expansion-packs') {
// For expansion packs, remove 'expansion-packs/packname' and use the rest // 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 // For bmad-core, common, etc., remove the first part
resourcePath = pathParts.slice(1).join('/'); resourcePath = pathParts.slice(1).join('/');
} }
return `.${bundleRoot}/${resourcePath}`; return `.${bundleRoot}/${resourcePath}`;
} }
generateWebInstructions(bundleType, packName = null) { generateWebInstructions(bundleType, packName = null) {
// Generate dynamic web instructions based on bundle type // Generate dynamic web instructions based on bundle type
const rootExample = packName ? `.${packName}` : '.bmad-core'; const rootExample = packName ? `.${packName}` : '.bmad-core';
const examplePath = packName ? `.${packName}/folder/filename.md` : '.bmad-core/folder/filename.md'; const examplePath = packName
const personasExample = packName ? `.${packName}/personas/analyst.md` : '.bmad-core/personas/analyst.md'; ? `.${packName}/folder/filename.md`
const tasksExample = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md'; : '.bmad-core/folder/filename.md';
const utilsExample = packName ? `.${packName}/utils/template-format.md` : '.bmad-core/utils/template-format.md'; const personasExample = packName
const tasksRef = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md'; ? `.${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 return `# Web Agent Bundle Instructions
@@ -79,8 +89,8 @@ dependencies:
These references map directly to bundle sections: These references map directly to bundle sections:
- \`utils: template-format\` → Look for \`==================== START: ${utilsExample} ====================\` - \`utils: template-format\` → Look for \`==================== START: ${utilitiesExample} ====================\`
- \`tasks: create-story\` → Look for \`==================== START: ${tasksRef} ====================\` - \`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. 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 // Write to all output directories
for (const outputDir of this.outputDirs) { for (const outputDir of this.outputDirs) {
const outputPath = path.join(outputDir, "agents"); const outputPath = path.join(outputDir, 'agents');
await fs.mkdir(outputPath, { recursive: true }); await fs.mkdir(outputPath, { recursive: true });
const outputFile = path.join(outputPath, `${agentId}.txt`); 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 // Write to all output directories
for (const outputDir of this.outputDirs) { for (const outputDir of this.outputDirs) {
const outputPath = path.join(outputDir, "teams"); const outputPath = path.join(outputDir, 'teams');
await fs.mkdir(outputPath, { recursive: true }); await fs.mkdir(outputPath, { recursive: true });
const outputFile = path.join(outputPath, `${teamId}.txt`); 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')); sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
} }
return sections.join("\n"); return sections.join('\n');
} }
async buildTeamBundle(teamId) { async buildTeamBundle(teamId) {
@@ -182,40 +192,40 @@ These references map directly to bundle sections:
sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core')); sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
} }
return sections.join("\n"); return sections.join('\n');
} }
processAgentContent(content) { processAgentContent(content) {
// First, replace content before YAML with the template // First, replace content before YAML with the template
const yamlContent = yamlUtils.extractYamlFromAgent(content); const yamlContent = yamlUtilities.extractYamlFromAgent(content);
if (!yamlContent) return content; if (!yamlContent) return content;
const yamlMatch = content.match(/```ya?ml\n([\s\S]*?)\n```/); const yamlMatch = content.match(/```ya?ml\n([\s\S]*?)\n```/);
if (!yamlMatch) return content; if (!yamlMatch) return content;
const yamlStartIndex = content.indexOf(yamlMatch[0]); const yamlStartIndex = content.indexOf(yamlMatch[0]);
const yamlEndIndex = yamlStartIndex + yamlMatch[0].length; const yamlEndIndex = yamlStartIndex + yamlMatch[0].length;
// Parse YAML and remove root and IDE-FILE-RESOLUTION properties // Parse YAML and remove root and IDE-FILE-RESOLUTION properties
try { try {
const yaml = require("js-yaml"); const yaml = require('js-yaml');
const parsed = yaml.load(yamlContent); const parsed = yaml.load(yamlContent);
// Remove the properties if they exist at root level // Remove the properties if they exist at root level
delete parsed.root; delete parsed.root;
delete parsed["IDE-FILE-RESOLUTION"]; delete parsed['IDE-FILE-RESOLUTION'];
delete parsed["REQUEST-RESOLUTION"]; delete parsed['REQUEST-RESOLUTION'];
// Also remove from activation-instructions if they exist // Also remove from activation-instructions if they exist
if (parsed["activation-instructions"] && Array.isArray(parsed["activation-instructions"])) { if (parsed['activation-instructions'] && Array.isArray(parsed['activation-instructions'])) {
parsed["activation-instructions"] = parsed["activation-instructions"].filter( parsed['activation-instructions'] = parsed['activation-instructions'].filter(
(instruction) => { (instruction) => {
return ( return (
typeof instruction === 'string' && typeof instruction === 'string' &&
!instruction.startsWith("IDE-FILE-RESOLUTION:") && !instruction.startsWith('IDE-FILE-RESOLUTION:') &&
!instruction.startsWith("REQUEST-RESOLUTION:") !instruction.startsWith('REQUEST-RESOLUTION:')
); );
} },
); );
} }
@@ -223,25 +233,25 @@ These references map directly to bundle sections:
const cleanedYaml = yaml.dump(parsed, { lineWidth: -1 }); const cleanedYaml = yaml.dump(parsed, { lineWidth: -1 });
// Get the agent name from the YAML for the header // 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 // 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 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) { } 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 // If parsing fails, return original content
return content; return content;
} }
} }
formatSection(path, content, bundleRoot = 'bmad-core') { formatSection(path, content, bundleRoot = 'bmad-core') {
const separator = "===================="; const separator = '====================';
// Process agent content if this is an agent file // Process agent content if this is an agent file
if (path.includes("/agents/")) { if (path.includes('/agents/')) {
content = this.processAgentContent(content); content = this.processAgentContent(content);
} }
@@ -252,17 +262,17 @@ These references map directly to bundle sections:
`${separator} START: ${path} ${separator}`, `${separator} START: ${path} ${separator}`,
content.trim(), content.trim(),
`${separator} END: ${path} ${separator}`, `${separator} END: ${path} ${separator}`,
"", '',
].join("\n"); ].join('\n');
} }
replaceRootReferences(content, bundleRoot) { replaceRootReferences(content, bundleRoot) {
// Replace {root} with the appropriate bundle root path // Replace {root} with the appropriate bundle root path
return content.replace(/\{root\}/g, `.${bundleRoot}`); return content.replaceAll('{root}', `.${bundleRoot}`);
} }
async validate() { async validate() {
console.log("Validating agent configurations..."); console.log('Validating agent configurations...');
const agents = await this.resolver.listAgents(); const agents = await this.resolver.listAgents();
for (const agentId of agents) { for (const agentId of agents) {
try { 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(); const teams = await this.resolver.listTeams();
for (const teamId of teams) { for (const teamId of teams) {
try { try {
@@ -299,54 +309,54 @@ These references map directly to bundle sections:
} }
async buildExpansionPack(packName, options = {}) { async buildExpansionPack(packName, options = {}) {
const packDir = path.join(this.rootDir, "expansion-packs", packName); const packDir = path.join(this.rootDir, 'expansion-packs', packName);
const outputDirs = [path.join(this.rootDir, "dist", "expansion-packs", packName)]; const outputDirectories = [path.join(this.rootDir, 'dist', 'expansion-packs', packName)];
// Clean output directories if requested // Clean output directories if requested
if (options.clean !== false) { if (options.clean !== false) {
for (const outputDir of outputDirs) { for (const outputDir of outputDirectories) {
try { try {
await fs.rm(outputDir, { recursive: true, force: true }); await fs.rm(outputDir, { recursive: true, force: true });
} catch (error) { } catch {
// Directory might not exist, that's fine // Directory might not exist, that's fine
} }
} }
} }
// Build individual agents first // Build individual agents first
const agentsDir = path.join(packDir, "agents"); const agentsDir = path.join(packDir, 'agents');
try { try {
const agentFiles = await fs.readdir(agentsDir); 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) { if (agentMarkdownFiles.length > 0) {
console.log(` Building individual agents for ${packName}:`); console.log(` Building individual agents for ${packName}:`);
for (const agentFile of agentMarkdownFiles) { for (const agentFile of agentMarkdownFiles) {
const agentName = agentFile.replace(".md", ""); const agentName = agentFile.replace('.md', '');
console.log(` - ${agentName}`); console.log(` - ${agentName}`);
// Build individual agent bundle // Build individual agent bundle
const bundle = await this.buildExpansionAgentBundle(packName, packDir, agentName); const bundle = await this.buildExpansionAgentBundle(packName, packDir, agentName);
// Write to all output directories // Write to all output directories
for (const outputDir of outputDirs) { for (const outputDir of outputDirectories) {
const agentsOutputDir = path.join(outputDir, "agents"); const agentsOutputDir = path.join(outputDir, 'agents');
await fs.mkdir(agentsOutputDir, { recursive: true }); await fs.mkdir(agentsOutputDir, { recursive: true });
const outputFile = path.join(agentsOutputDir, `${agentName}.txt`); 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}`); console.debug(` No agents directory found for ${packName}`);
} }
// Build team bundle // Build team bundle
const agentTeamsDir = path.join(packDir, "agent-teams"); const agentTeamsDir = path.join(packDir, 'agent-teams');
try { try {
const teamFiles = await fs.readdir(agentTeamsDir); const teamFiles = await fs.readdir(agentTeamsDir);
const teamFile = teamFiles.find((f) => f.endsWith(".yaml")); const teamFile = teamFiles.find((f) => f.endsWith('.yaml'));
if (teamFile) { if (teamFile) {
console.log(` Building team bundle for ${packName}`); 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); const bundle = await this.buildExpansionTeamBundle(packName, packDir, teamConfigPath);
// Write to all output directories // Write to all output directories
for (const outputDir of outputDirs) { for (const outputDir of outputDirectories) {
const teamsOutputDir = path.join(outputDir, "teams"); const teamsOutputDir = path.join(outputDir, 'teams');
await fs.mkdir(teamsOutputDir, { recursive: true }); await fs.mkdir(teamsOutputDir, { recursive: true });
const outputFile = path.join(teamsOutputDir, teamFile.replace(".yaml", ".txt")); const outputFile = path.join(teamsOutputDir, teamFile.replace('.yaml', '.txt'));
await fs.writeFile(outputFile, bundle, "utf8"); await fs.writeFile(outputFile, bundle, 'utf8');
console.log(` ✓ Created bundle: ${path.relative(this.rootDir, outputFile)}`); console.log(` ✓ Created bundle: ${path.relative(this.rootDir, outputFile)}`);
} }
} else { } else {
console.warn(` ⚠ No team configuration found in ${packName}/agent-teams/`); console.warn(` ⚠ No team configuration found in ${packName}/agent-teams/`);
} }
} catch (error) { } catch {
console.warn(` ⚠ No agent-teams directory found for ${packName}`); console.warn(` ⚠ No agent-teams directory found for ${packName}`);
} }
} }
@@ -376,16 +386,16 @@ These references map directly to bundle sections:
const sections = [template]; const sections = [template];
// Add agent configuration // Add agent configuration
const agentPath = path.join(packDir, "agents", `${agentName}.md`); const agentPath = path.join(packDir, 'agents', `${agentName}.md`);
const agentContent = await fs.readFile(agentPath, "utf8"); const agentContent = await fs.readFile(agentPath, 'utf8');
const agentWebPath = this.convertToWebPath(agentPath, packName); const agentWebPath = this.convertToWebPath(agentPath, packName);
sections.push(this.formatSection(agentWebPath, agentContent, packName)); sections.push(this.formatSection(agentWebPath, agentContent, packName));
// Resolve and add agent dependencies // Resolve and add agent dependencies
const yamlContent = yamlUtils.extractYamlFromAgent(agentContent); const yamlContent = yamlUtilities.extractYamlFromAgent(agentContent);
if (yamlContent) { if (yamlContent) {
try { try {
const yaml = require("js-yaml"); const yaml = require('js-yaml');
const agentConfig = yaml.load(yamlContent); const agentConfig = yaml.load(yamlContent);
if (agentConfig.dependencies) { if (agentConfig.dependencies) {
@@ -398,59 +408,43 @@ These references map directly to bundle sections:
// Try expansion pack first // Try expansion pack first
const resourcePath = path.join(packDir, resourceType, resourceName); const resourcePath = path.join(packDir, resourceType, resourceName);
try { try {
const resourceContent = await fs.readFile(resourcePath, "utf8"); const resourceContent = await fs.readFile(resourcePath, 'utf8');
const resourceWebPath = this.convertToWebPath(resourcePath, packName); const resourceWebPath = this.convertToWebPath(resourcePath, packName);
sections.push( sections.push(this.formatSection(resourceWebPath, resourceContent, packName));
this.formatSection(resourceWebPath, resourceContent, packName)
);
found = true; found = true;
} catch (error) { } catch {
// Not in expansion pack, continue // Not in expansion pack, continue
} }
// If not found in expansion pack, try core // If not found in expansion pack, try core
if (!found) { if (!found) {
const corePath = path.join( const corePath = path.join(this.rootDir, 'bmad-core', resourceType, resourceName);
this.rootDir,
"bmad-core",
resourceType,
resourceName
);
try { try {
const coreContent = await fs.readFile(corePath, "utf8"); const coreContent = await fs.readFile(corePath, 'utf8');
const coreWebPath = this.convertToWebPath(corePath, packName); const coreWebPath = this.convertToWebPath(corePath, packName);
sections.push( sections.push(this.formatSection(coreWebPath, coreContent, packName));
this.formatSection(coreWebPath, coreContent, packName)
);
found = true; found = true;
} catch (error) { } catch {
// Not in core either, continue // Not in core either, continue
} }
} }
// If not found in core, try common folder // If not found in core, try common folder
if (!found) { if (!found) {
const commonPath = path.join( const commonPath = path.join(this.rootDir, 'common', resourceType, resourceName);
this.rootDir,
"common",
resourceType,
resourceName
);
try { try {
const commonContent = await fs.readFile(commonPath, "utf8"); const commonContent = await fs.readFile(commonPath, 'utf8');
const commonWebPath = this.convertToWebPath(commonPath, packName); const commonWebPath = this.convertToWebPath(commonPath, packName);
sections.push( sections.push(this.formatSection(commonWebPath, commonContent, packName));
this.formatSection(commonWebPath, commonContent, packName)
);
found = true; found = true;
} catch (error) { } catch {
// Not in common either, continue // Not in common either, continue
} }
} }
if (!found) { if (!found) {
console.warn( 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) { async buildExpansionTeamBundle(packName, packDir, teamConfigPath) {
@@ -471,38 +465,38 @@ These references map directly to bundle sections:
const sections = [template]; const sections = [template];
// Add team configuration and parse to get agent list // Add team configuration and parse to get agent list
const teamContent = await fs.readFile(teamConfigPath, "utf8"); const teamContent = await fs.readFile(teamConfigPath, 'utf8');
const teamFileName = path.basename(teamConfigPath, ".yaml"); const teamFileName = path.basename(teamConfigPath, '.yaml');
const teamConfig = this.parseYaml(teamContent); const teamConfig = this.parseYaml(teamContent);
const teamWebPath = this.convertToWebPath(teamConfigPath, packName); const teamWebPath = this.convertToWebPath(teamConfigPath, packName);
sections.push(this.formatSection(teamWebPath, teamContent, packName)); sections.push(this.formatSection(teamWebPath, teamContent, packName));
// Get list of expansion pack agents // Get list of expansion pack agents
const expansionAgents = new Set(); const expansionAgents = new Set();
const agentsDir = path.join(packDir, "agents"); const agentsDir = path.join(packDir, 'agents');
try { try {
const agentFiles = await fs.readdir(agentsDir); const agentFiles = await fs.readdir(agentsDir);
for (const agentFile of agentFiles.filter((f) => f.endsWith(".md"))) { for (const agentFile of agentFiles.filter((f) => f.endsWith('.md'))) {
const agentName = agentFile.replace(".md", ""); const agentName = agentFile.replace('.md', '');
expansionAgents.add(agentName); expansionAgents.add(agentName);
} }
} catch (error) { } catch {
console.warn(` ⚠ No agents directory found in ${packName}`); console.warn(` ⚠ No agents directory found in ${packName}`);
} }
// Build a map of all available expansion pack resources for override checking // Build a map of all available expansion pack resources for override checking
const expansionResources = new Map(); const expansionResources = new Map();
const resourceDirs = ["templates", "tasks", "checklists", "workflows", "data"]; const resourceDirectories = ['templates', 'tasks', 'checklists', 'workflows', 'data'];
for (const resourceDir of resourceDirs) { for (const resourceDir of resourceDirectories) {
const resourcePath = path.join(packDir, resourceDir); const resourcePath = path.join(packDir, resourceDir);
try { try {
const resourceFiles = await fs.readdir(resourcePath); const resourceFiles = await fs.readdir(resourcePath);
for (const resourceFile of resourceFiles.filter( 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); expansionResources.set(`${resourceDir}#${resourceFile}`, true);
} }
} catch (error) { } catch {
// Directory might not exist, that's fine // Directory might not exist, that's fine
} }
} }
@@ -511,9 +505,9 @@ These references map directly to bundle sections:
const agentsToProcess = teamConfig.agents || []; const agentsToProcess = teamConfig.agents || [];
// Ensure bmad-orchestrator is always included for teams // 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`); console.warn(` ⚠ Team ${teamFileName} missing bmad-orchestrator, adding automatically`);
agentsToProcess.unshift("bmad-orchestrator"); agentsToProcess.unshift('bmad-orchestrator');
} }
// Track all dependencies from all agents (deduplicated) // Track all dependencies from all agents (deduplicated)
@@ -523,7 +517,7 @@ These references map directly to bundle sections:
if (expansionAgents.has(agentId)) { if (expansionAgents.has(agentId)) {
// Use expansion pack version (override) // Use expansion pack version (override)
const agentPath = path.join(agentsDir, `${agentId}.md`); 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); const expansionAgentWebPath = this.convertToWebPath(agentPath, packName);
sections.push(this.formatSection(expansionAgentWebPath, agentContent, packName)); sections.push(this.formatSection(expansionAgentWebPath, agentContent, packName));
@@ -551,13 +545,13 @@ These references map directly to bundle sections:
} else { } else {
// Use core BMad version // Use core BMad version
try { try {
const coreAgentPath = path.join(this.rootDir, "bmad-core", "agents", `${agentId}.md`); const coreAgentPath = path.join(this.rootDir, 'bmad-core', 'agents', `${agentId}.md`);
const coreAgentContent = await fs.readFile(coreAgentPath, "utf8"); const coreAgentContent = await fs.readFile(coreAgentPath, 'utf8');
const coreAgentWebPath = this.convertToWebPath(coreAgentPath, packName); const coreAgentWebPath = this.convertToWebPath(coreAgentPath, packName);
sections.push(this.formatSection(coreAgentWebPath, coreAgentContent, packName)); sections.push(this.formatSection(coreAgentWebPath, coreAgentContent, packName));
// Parse and collect dependencies from core agent // Parse and collect dependencies from core agent
const yamlContent = yamlUtils.extractYamlFromAgent(coreAgentContent, true); const yamlContent = yamlUtilities.extractYamlFromAgent(coreAgentContent, true);
if (yamlContent) { if (yamlContent) {
try { try {
const agentConfig = this.parseYaml(yamlContent); 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); 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`); 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 // We know it exists in expansion pack, find and load it
const expansionPath = path.join(packDir, dep.type, dep.name); const expansionPath = path.join(packDir, dep.type, dep.name);
try { try {
const content = await fs.readFile(expansionPath, "utf8"); const content = await fs.readFile(expansionPath, 'utf8');
const expansionWebPath = this.convertToWebPath(expansionPath, packName); const expansionWebPath = this.convertToWebPath(expansionPath, packName);
sections.push(this.formatSection(expansionWebPath, content, packName)); sections.push(this.formatSection(expansionWebPath, content, packName));
console.log(` ✓ Using expansion override for ${key}`); console.log(` ✓ Using expansion override for ${key}`);
found = true; found = true;
} catch (error) { } catch {
// Try next extension // Try next extension
} }
} }
// If not found in expansion pack (or doesn't exist there), try core // If not found in expansion pack (or doesn't exist there), try core
if (!found) { 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 { try {
const content = await fs.readFile(corePath, "utf8"); const content = await fs.readFile(corePath, 'utf8');
const coreWebPath = this.convertToWebPath(corePath, packName); const coreWebPath = this.convertToWebPath(corePath, packName);
sections.push(this.formatSection(coreWebPath, content, packName)); sections.push(this.formatSection(coreWebPath, content, packName));
found = true; found = true;
} catch (error) { } catch {
// Not in core either, continue // Not in core either, continue
} }
} }
// If not found in core, try common folder // If not found in core, try common folder
if (!found) { 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 { try {
const content = await fs.readFile(commonPath, "utf8"); const content = await fs.readFile(commonPath, 'utf8');
const commonWebPath = this.convertToWebPath(commonPath, packName); const commonWebPath = this.convertToWebPath(commonPath, packName);
sections.push(this.formatSection(commonWebPath, content, packName)); sections.push(this.formatSection(commonWebPath, content, packName));
found = true; found = true;
} catch (error) { } catch {
// Not in common either, continue // 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 // 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); const resourcePath = path.join(packDir, resourceDir);
try { try {
const resourceFiles = await fs.readdir(resourcePath); const resourceFiles = await fs.readdir(resourcePath);
for (const resourceFile of resourceFiles.filter( 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 filePath = path.join(resourcePath, resourceFile);
const fileContent = await fs.readFile(filePath, "utf8"); const fileContent = await fs.readFile(filePath, 'utf8');
const fileName = resourceFile.replace(/\.(md|yaml)$/, ""); const fileName = resourceFile.replace(/\.(md|yaml)$/, '');
// Only add if not already included as a dependency // Only add if not already included as a dependency
const resourceKey = `${resourceDir}#${fileName}`; const resourceKey = `${resourceDir}#${fileName}`;
@@ -654,21 +648,21 @@ These references map directly to bundle sections:
sections.push(this.formatSection(resourceWebPath, fileContent, packName)); sections.push(this.formatSection(resourceWebPath, fileContent, packName));
} }
} }
} catch (error) { } catch {
// Directory might not exist, that's fine // Directory might not exist, that's fine
} }
} }
return sections.join("\n"); return sections.join('\n');
} }
async listExpansionPacks() { async listExpansionPacks() {
const expansionPacksDir = path.join(this.rootDir, "expansion-packs"); const expansionPacksDir = path.join(this.rootDir, 'expansion-packs');
try { try {
const entries = await fs.readdir(expansionPacksDir, { withFileTypes: true }); const entries = await fs.readdir(expansionPacksDir, { withFileTypes: true });
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name); return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
} catch (error) { } catch {
console.warn("No expansion-packs directory found"); console.warn('No expansion-packs directory found');
return []; return [];
} }
} }

View File

@@ -1,11 +1,9 @@
#!/usr/bin/env node const fs = require('node:fs');
const path = require('node:path');
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml'); const yaml = require('js-yaml');
const args = process.argv.slice(2); const arguments_ = process.argv.slice(2);
const bumpType = args[0] || 'minor'; // default to minor const bumpType = arguments_[0] || 'minor'; // default to minor
if (!['major', 'minor', 'patch'].includes(bumpType)) { if (!['major', 'minor', 'patch'].includes(bumpType)) {
console.log('Usage: node bump-all-versions.js [major|minor|patch]'); 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) { function bumpVersion(currentVersion, type) {
const [major, minor, patch] = currentVersion.split('.').map(Number); const [major, minor, patch] = currentVersion.split('.').map(Number);
switch (type) { switch (type) {
case 'major': case 'major': {
return `${major + 1}.0.0`; return `${major + 1}.0.0`;
case 'minor': }
case 'minor': {
return `${major}.${minor + 1}.0`; return `${major}.${minor + 1}.0`;
case 'patch': }
case 'patch': {
return `${major}.${minor}.${patch + 1}`; return `${major}.${minor}.${patch + 1}`;
default: }
default: {
return currentVersion; return currentVersion;
}
} }
} }
async function bumpAllVersions() { async function bumpAllVersions() {
const updatedItems = []; const updatedItems = [];
// First, bump the core version (package.json) // First, bump the core version (package.json)
const packagePath = path.join(__dirname, '..', 'package.json'); const packagePath = path.join(__dirname, '..', 'package.json');
try { try {
@@ -38,69 +40,76 @@ async function bumpAllVersions() {
const packageJson = JSON.parse(packageContent); const packageJson = JSON.parse(packageContent);
const oldCoreVersion = packageJson.version || '1.0.0'; const oldCoreVersion = packageJson.version || '1.0.0';
const newCoreVersion = bumpVersion(oldCoreVersion, bumpType); const newCoreVersion = bumpVersion(oldCoreVersion, bumpType);
packageJson.version = newCoreVersion; packageJson.version = newCoreVersion;
fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2) + '\n'); 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}`); console.log(`✓ BMad Core (package.json): ${oldCoreVersion}${newCoreVersion}`);
} catch (error) { } catch (error) {
console.error(`✗ Failed to update BMad Core: ${error.message}`); console.error(`✗ Failed to update BMad Core: ${error.message}`);
} }
// Then, bump all expansion packs // Then, bump all expansion packs
const expansionPacksDir = path.join(__dirname, '..', 'expansion-packs'); const expansionPacksDir = path.join(__dirname, '..', 'expansion-packs');
try { try {
const entries = fs.readdirSync(expansionPacksDir, { withFileTypes: true }); const entries = fs.readdirSync(expansionPacksDir, { withFileTypes: true });
for (const entry of entries) { for (const entry of entries) {
if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'README.md') { if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'README.md') {
const packId = entry.name; const packId = entry.name;
const configPath = path.join(expansionPacksDir, packId, 'config.yaml'); const configPath = path.join(expansionPacksDir, packId, 'config.yaml');
if (fs.existsSync(configPath)) { if (fs.existsSync(configPath)) {
try { try {
const configContent = fs.readFileSync(configPath, 'utf8'); const configContent = fs.readFileSync(configPath, 'utf8');
const config = yaml.load(configContent); const config = yaml.load(configContent);
const oldVersion = config.version || '1.0.0'; const oldVersion = config.version || '1.0.0';
const newVersion = bumpVersion(oldVersion, bumpType); const newVersion = bumpVersion(oldVersion, bumpType);
config.version = newVersion; config.version = newVersion;
const updatedYaml = yaml.dump(config, { indent: 2 }); const updatedYaml = yaml.dump(config, { indent: 2 });
fs.writeFileSync(configPath, updatedYaml); fs.writeFileSync(configPath, updatedYaml);
updatedItems.push({ type: 'expansion', name: packId, oldVersion, newVersion }); updatedItems.push({ type: 'expansion', name: packId, oldVersion, newVersion });
console.log(`${packId}: ${oldVersion}${newVersion}`); console.log(`${packId}: ${oldVersion}${newVersion}`);
} catch (error) { } catch (error) {
console.error(`✗ Failed to update ${packId}: ${error.message}`); console.error(`✗ Failed to update ${packId}: ${error.message}`);
} }
} }
} }
} }
if (updatedItems.length > 0) { if (updatedItems.length > 0) {
const coreCount = updatedItems.filter(i => i.type === 'core').length; const coreCount = updatedItems.filter((index) => index.type === 'core').length;
const expansionCount = updatedItems.filter(i => i.type === 'expansion').length; const expansionCount = updatedItems.filter((index) => index.type === 'expansion').length;
console.log(`\n✓ Successfully bumped ${updatedItems.length} item(s) with ${bumpType} version bump`); console.log(
`\n✓ Successfully bumped ${updatedItems.length} item(s) with ${bumpType} version bump`,
);
if (coreCount > 0) console.log(` - ${coreCount} core`); if (coreCount > 0) console.log(` - ${coreCount} core`);
if (expansionCount > 0) console.log(` - ${expansionCount} expansion pack(s)`); if (expansionCount > 0) console.log(` - ${expansionCount} expansion pack(s)`);
console.log('\nNext steps:'); console.log('\nNext steps:');
console.log('1. Test the changes'); 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 { } else {
console.log('No items found to update'); console.log('No items found to update');
} }
} catch (error) { } catch (error) {
console.error('Error reading expansion packs directory:', error.message); console.error('Error reading expansion packs directory:', error.message);
process.exit(1); process.exit(1);
} }
} }
bumpAllVersions(); bumpAllVersions();

View File

@@ -1,17 +1,15 @@
#!/usr/bin/env node
// Load required modules // Load required modules
const fs = require('fs'); const fs = require('node:fs');
const path = require('path'); const path = require('node:path');
const yaml = require('js-yaml'); const yaml = require('js-yaml');
// Parse CLI arguments // Parse CLI arguments
const args = process.argv.slice(2); const arguments_ = process.argv.slice(2);
const packId = args[0]; const packId = arguments_[0];
const bumpType = args[1] || 'minor'; const bumpType = arguments_[1] || 'minor';
// Validate arguments // 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('Usage: node bump-expansion-version.js <expansion-pack-id> [major|minor|patch]');
console.log('Default: minor'); console.log('Default: minor');
console.log('Example: node bump-expansion-version.js bmad-creator-tools patch'); 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); const [major, minor, patch] = currentVersion.split('.').map(Number);
switch (type) { switch (type) {
case 'major': return `${major + 1}.0.0`; case 'major': {
case 'minor': return `${major}.${minor + 1}.0`; return `${major + 1}.0.0`;
case 'patch': return `${major}.${minor}.${patch + 1}`; }
default: return currentVersion; 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 packsDir = path.join(__dirname, '..', 'expansion-packs');
const entries = fs.readdirSync(packsDir, { withFileTypes: true }); const entries = fs.readdirSync(packsDir, { withFileTypes: true });
entries.forEach(entry => { for (const entry of entries) {
if (entry.isDirectory() && !entry.name.startsWith('.')) { if (entry.isDirectory() && !entry.name.startsWith('.')) {
console.log(` - ${entry.name}`); console.log(` - ${entry.name}`);
} }
}); }
process.exit(1); process.exit(1);
} }
@@ -72,8 +78,9 @@ async function updateVersion() {
console.log(`\n✓ Successfully bumped ${packId} with ${bumpType} version bump`); console.log(`\n✓ Successfully bumped ${packId} with ${bumpType} version bump`);
console.log('\nNext steps:'); console.log('\nNext steps:');
console.log(`1. Test the changes`); 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) { } catch (error) {
console.error('Error updating version:', error.message); console.error('Error updating version:', error.message);
process.exit(1); process.exit(1);

View File

@@ -1,10 +1,8 @@
#!/usr/bin/env node
const { Command } = require('commander'); const { Command } = require('commander');
const WebBuilder = require('./builders/web-builder'); const WebBuilder = require('./builders/web-builder');
const V3ToV4Upgrader = require('./upgraders/v3-to-v4-upgrader'); const V3ToV4Upgrader = require('./upgraders/v3-to-v4-upgrader');
const IdeSetup = require('./installer/lib/ide-setup'); const IdeSetup = require('./installer/lib/ide-setup');
const path = require('path'); const path = require('node:path');
const program = new Command(); const program = new Command();
@@ -23,7 +21,7 @@ program
.option('--no-clean', 'Skip cleaning output directories') .option('--no-clean', 'Skip cleaning output directories')
.action(async (options) => { .action(async (options) => {
const builder = new WebBuilder({ const builder = new WebBuilder({
rootDir: process.cwd() rootDir: process.cwd(),
}); });
try { try {
@@ -66,7 +64,7 @@ program
.option('--no-clean', 'Skip cleaning output directories') .option('--no-clean', 'Skip cleaning output directories')
.action(async (options) => { .action(async (options) => {
const builder = new WebBuilder({ const builder = new WebBuilder({
rootDir: process.cwd() rootDir: process.cwd(),
}); });
try { try {
@@ -92,7 +90,7 @@ program
const builder = new WebBuilder({ rootDir: process.cwd() }); const builder = new WebBuilder({ rootDir: process.cwd() });
const agents = await builder.resolver.listAgents(); const agents = await builder.resolver.listAgents();
console.log('Available agents:'); console.log('Available agents:');
agents.forEach(agent => console.log(` - ${agent}`)); for (const agent of agents) console.log(` - ${agent}`);
process.exit(0); process.exit(0);
}); });
@@ -103,7 +101,7 @@ program
const builder = new WebBuilder({ rootDir: process.cwd() }); const builder = new WebBuilder({ rootDir: process.cwd() });
const expansions = await builder.listExpansionPacks(); const expansions = await builder.listExpansionPacks();
console.log('Available expansion packs:'); console.log('Available expansion packs:');
expansions.forEach(expansion => console.log(` - ${expansion}`)); for (const expansion of expansions) console.log(` - ${expansion}`);
process.exit(0); process.exit(0);
}); });
@@ -116,19 +114,19 @@ program
// Validate by attempting to build all agents and teams // Validate by attempting to build all agents and teams
const agents = await builder.resolver.listAgents(); const agents = await builder.resolver.listAgents();
const teams = await builder.resolver.listTeams(); const teams = await builder.resolver.listTeams();
console.log('Validating agents...'); console.log('Validating agents...');
for (const agent of agents) { for (const agent of agents) {
await builder.resolver.resolveAgentDependencies(agent); await builder.resolver.resolveAgentDependencies(agent);
console.log(`${agent}`); console.log(`${agent}`);
} }
console.log('\nValidating teams...'); console.log('\nValidating teams...');
for (const team of teams) { for (const team of teams) {
await builder.resolver.resolveTeamDependencies(team); await builder.resolver.resolveTeamDependencies(team);
console.log(`${team}`); console.log(`${team}`);
} }
console.log('\nAll configurations are valid!'); console.log('\nAll configurations are valid!');
} catch (error) { } catch (error) {
console.error('Validation failed:', error.message); console.error('Validation failed:', error.message);
@@ -147,8 +145,8 @@ program
await upgrader.upgrade({ await upgrader.upgrade({
projectPath: options.project, projectPath: options.project,
dryRun: options.dryRun, dryRun: options.dryRun,
backup: options.backup backup: options.backup,
}); });
}); });
program.parse(); program.parse();

View File

@@ -1,7 +1,7 @@
const fs = require("fs-extra"); const fs = require('fs-extra');
const path = require("node:path"); const path = require('node:path');
const os = require("node:os"); const os = require('node:os');
const { isBinaryFile } = require("./binary.js"); const { isBinaryFile } = require('./binary.js');
/** /**
* Aggregate file contents with bounded concurrency. * Aggregate file contents with bounded concurrency.
@@ -22,7 +22,7 @@ async function aggregateFileContents(files, rootDir, spinner = null) {
// Automatic concurrency selection based on CPU count and workload size. // Automatic concurrency selection based on CPU count and workload size.
// - Base on 2x logical CPUs, clamped to [2, 64] // - Base on 2x logical CPUs, clamped to [2, 64]
// - For very small workloads, avoid excessive parallelism // - For very small workloads, avoid excessive parallelism
const cpuCount = (os.cpus && Array.isArray(os.cpus()) ? os.cpus().length : (os.cpus?.length || 4)); const cpuCount = os.cpus && Array.isArray(os.cpus()) ? os.cpus().length : os.cpus?.length || 4;
let concurrency = Math.min(64, Math.max(2, (Number(cpuCount) || 4) * 2)); let concurrency = Math.min(64, Math.max(2, (Number(cpuCount) || 4) * 2));
if (files.length > 0 && files.length < concurrency) { if (files.length > 0 && files.length < concurrency) {
concurrency = Math.max(1, Math.min(concurrency, Math.ceil(files.length / 2))); concurrency = Math.max(1, Math.min(concurrency, Math.ceil(files.length / 2)));
@@ -37,16 +37,16 @@ async function aggregateFileContents(files, rootDir, spinner = null) {
const binary = await isBinaryFile(filePath); const binary = await isBinaryFile(filePath);
if (binary) { if (binary) {
const size = (await fs.stat(filePath)).size; const { size } = await fs.stat(filePath);
results.binaryFiles.push({ path: relativePath, absolutePath: filePath, size }); results.binaryFiles.push({ path: relativePath, absolutePath: filePath, size });
} else { } else {
const content = await fs.readFile(filePath, "utf8"); const content = await fs.readFile(filePath, 'utf8');
results.textFiles.push({ results.textFiles.push({
path: relativePath, path: relativePath,
absolutePath: filePath, absolutePath: filePath,
content, content,
size: content.length, size: content.length,
lines: content.split("\n").length, lines: content.split('\n').length,
}); });
} }
} catch (error) { } catch (error) {
@@ -63,8 +63,8 @@ async function aggregateFileContents(files, rootDir, spinner = null) {
} }
} }
for (let i = 0; i < files.length; i += concurrency) { for (let index = 0; index < files.length; index += concurrency) {
const slice = files.slice(i, i + concurrency); const slice = files.slice(index, index + concurrency);
await Promise.all(slice.map(processOne)); await Promise.all(slice.map(processOne));
} }

View File

@@ -1,6 +1,6 @@
const fsp = require("node:fs/promises"); const fsp = require('node:fs/promises');
const path = require("node:path"); const path = require('node:path');
const { Buffer } = require("node:buffer"); const { Buffer } = require('node:buffer');
/** /**
* Efficiently determine if a file is binary without reading the whole file. * Efficiently determine if a file is binary without reading the whole file.
@@ -13,25 +13,54 @@ async function isBinaryFile(filePath) {
try { try {
const stats = await fsp.stat(filePath); const stats = await fsp.stat(filePath);
if (stats.isDirectory()) { if (stats.isDirectory()) {
throw new Error("EISDIR: illegal operation on a directory"); throw new Error('EISDIR: illegal operation on a directory');
} }
const binaryExtensions = new Set([ const binaryExtensions = new Set([
".jpg", ".jpeg", ".png", ".gif", ".bmp", ".ico", ".svg", '.jpg',
".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", '.jpeg',
".zip", ".tar", ".gz", ".rar", ".7z", '.png',
".exe", ".dll", ".so", ".dylib", '.gif',
".mp3", ".mp4", ".avi", ".mov", ".wav", '.bmp',
".ttf", ".otf", ".woff", ".woff2", '.ico',
".bin", ".dat", ".db", ".sqlite", '.svg',
'.pdf',
'.doc',
'.docx',
'.xls',
'.xlsx',
'.ppt',
'.pptx',
'.zip',
'.tar',
'.gz',
'.rar',
'.7z',
'.exe',
'.dll',
'.so',
'.dylib',
'.mp3',
'.mp4',
'.avi',
'.mov',
'.wav',
'.ttf',
'.otf',
'.woff',
'.woff2',
'.bin',
'.dat',
'.db',
'.sqlite',
]); ]);
const ext = path.extname(filePath).toLowerCase(); const extension = path.extname(filePath).toLowerCase();
if (binaryExtensions.has(ext)) return true; if (binaryExtensions.has(extension)) return true;
if (stats.size === 0) return false; if (stats.size === 0) return false;
const sampleSize = Math.min(4096, stats.size); const sampleSize = Math.min(4096, stats.size);
const fd = await fsp.open(filePath, "r"); const fd = await fsp.open(filePath, 'r');
try { try {
const buffer = Buffer.allocUnsafe(sampleSize); const buffer = Buffer.allocUnsafe(sampleSize);
const { bytesRead } = await fd.read(buffer, 0, sampleSize, 0); const { bytesRead } = await fd.read(buffer, 0, sampleSize, 0);
@@ -41,9 +70,7 @@ async function isBinaryFile(filePath) {
await fd.close(); await fd.close();
} }
} catch (error) { } catch (error) {
console.warn( console.warn(`Warning: Could not determine if file is binary: ${filePath} - ${error.message}`);
`Warning: Could not determine if file is binary: ${filePath} - ${error.message}`,
);
return false; return false;
} }
} }

Some files were not shown because too many files have changed in this diff Show More