BMAD-METHOD/bmad-core/data/project-scaffolding-prefere...

9.2 KiB

Project Scaffolding Preferences

This document defines generic, technology-agnostic project scaffolding preferences that can be applied to any software project. These preferences promote consistency, maintainability, and best practices across different technology stacks.

Documentation Structure

Core Documentation

  • README: Primary project documentation with setup instructions, architecture overview, and contribution guidelines
  • CHANGELOG: Maintain detailed changelog following semantic versioning principles
  • LICENSE: Clear licensing information for the project
  • Contributing Guidelines: How to contribute, code standards, and review process

BMAD Documentation Structure

  • Product Requirements Document (PRD):

    • Single source file: docs/prd.md
    • Can be sharded into docs/prd/ directory by level 2 sections
    • Contains epics, stories, requirements
  • Architecture Documentation:

    • Single source file: docs/architecture.md or docs/brownfield-architecture.md
    • Can be sharded into docs/architecture/ directory
    • For brownfield: Document actual state including technical debt
  • Memory Bank (AI Context Persistence):

    • Location: docs/memory-bank/
    • Core files: projectbrief.md, productContext.md, systemPatterns.md, techContext.md, activeContext.md, progress.md
    • Provides persistent context across AI sessions

Architectural Documentation

  • Architecture Decision Records (ADRs): Document significant architectural decisions
    • Location: docs/adr/
    • When to create: Major dependency changes, pattern changes, integration approaches, schema modifications
    • Follow consistent ADR template (e.g., Michael Nygard format)
    • Number sequentially (e.g., adr-0001.md)
    • Maintain an index

Development Documentation

  • Development Journals: Track daily/session work, decisions, and challenges
    • Location: docs/devJournal/
    • Named with date format: YYYYMMDD-NN.md
    • Include work completed, decisions made, blockers encountered
    • Reference relevant ADRs and feature documentation
    • Create after significant work sessions

Feature Documentation

  • Roadmap: High-level project direction and planned features
    • Location: docs/roadmap/
    • Feature details in docs/roadmap/features/
  • Epics and Stories:
    • Epics extracted from PRD to docs/epics/
    • Stories created from epics to docs/stories/
    • Follow naming: epic-N-story-M.md

Source Code Organization

Separation of Concerns

  • Frontend/UI: Dedicated location for user interface components
  • Backend/API: Separate backend logic and API implementations
  • Shared Utilities: Common functionality used across layers
  • Configuration: Centralized configuration management
  • Scripts: Automation and utility scripts

Testing Structure

  • Unit Tests: Close to source code or in dedicated test directories
  • Integration Tests: Test component interactions
  • End-to-End Tests: Full workflow testing
  • Test Utilities: Shared test helpers and fixtures
  • Test Documentation: How to run tests, test strategies

Project Root Structure

Essential Files

  • Version control ignore files (e.g., .gitignore)
  • Editor/IDE configuration files
  • Dependency management files
  • Build/deployment configuration
  • Environment configuration templates (never commit actual secrets)

Standard Directories

/docs
  /adr           # Architecture Decision Records
  /devJournal    # Development journals  
  /memory-bank   # Persistent AI context (BMAD-specific)
  /prd           # Sharded Product Requirements Documents
  /architecture  # Sharded Architecture Documents
  /stories       # User stories (from epics)
  /epics         # Epic documents
  /api           # API documentation
  /roadmap       # Project roadmap and features

/src
  /[frontend]    # UI/frontend code
  /[backend]     # Backend/API code
  /[shared]      # Shared utilities
  /[config]      # Configuration

/tests
  /unit          # Unit tests
  /integration   # Integration tests
  /e2e           # End-to-end tests

/scripts         # Build, deployment, utility scripts
/tools           # Development tools and utilities
/.bmad          # BMAD-specific configuration and overrides

Development Practices

Code Organization

  • Keep files focused and manageable (typically under 300 lines)
  • Prefer composition over inheritance
  • Avoid code duplication - check for existing implementations
  • Use clear, consistent naming conventions throughout
  • Document complex logic and non-obvious decisions

Documentation Discipline

  • Update documentation alongside code changes
  • Document the "why" not just the "what"
  • Keep examples current and working
  • Review documentation in code reviews
  • Maintain templates for consistency

Security Considerations

  • Never commit secrets or credentials
  • Use environment variables for configuration
  • Implement proper input validation
  • Manage resources appropriately (close connections, free memory)
  • Follow principle of least privilege
  • Document security considerations

Quality Standards

  • All code must pass linting and formatting checks
  • Automated testing at multiple levels
  • Code review required before merging
  • Continuous integration for all changes
  • Regular dependency updates

Accessibility & Inclusion

Universal Design

  • Consider accessibility from the start
  • Follow established accessibility standards (e.g., WCAG)
  • Ensure keyboard navigation support
  • Provide appropriate text alternatives
  • Test with assistive technologies

Inclusive Practices

  • Use clear, inclusive language in documentation
  • Consider diverse user needs and contexts
  • Document accessibility requirements
  • Include accessibility in testing

Database/Data Management

Schema Management

  • Version control all schema changes
  • Use migration tools for consistency
  • Document schema decisions in ADRs
  • Maintain data dictionary
  • Never make manual production changes

Data Documentation

  • Maintain current entity relationship diagrams
  • Document data flows and dependencies
  • Explain business rules and constraints
  • Keep sample data separate from production

Environment Management

Environment Parity

  • Development, test, and production should be as similar as possible
  • Use same deployment process across environments
  • Configuration through environment variables
  • Document environment-specific settings
  • Automate environment setup

Local Development

  • Provide scripted setup process
  • Document all prerequisites
  • Include reset/cleanup scripts
  • Maintain environment templates
  • Support multiple development environments

Branching & Release Strategy

Version Control

  • Define clear branching strategy
  • Use semantic versioning
  • Tag all releases
  • Maintain release notes
  • Document hotfix procedures

Release Process

  • Automated build and deployment
  • Staged rollout capabilities
  • Rollback procedures documented
  • Release communication plan
  • Post-release verification

Incident Management

Incident Response

  • Maintain incident log
  • Document root cause analyses
  • Update runbooks based on incidents
  • Conduct retrospectives
  • Share learnings across team

Monitoring & Observability

  • Define key metrics
  • Implement appropriate logging
  • Set up alerting thresholds
  • Document troubleshooting guides
  • Regular review of metrics

Compliance & Governance

Data Privacy

  • Document data handling practices
  • Implement privacy by design
  • Regular compliance reviews
  • Clear data retention policies
  • User consent management

Audit Trail

  • Maintain change history
  • Document decision rationale
  • Track access and modifications
  • Regular security reviews
  • Compliance documentation

BMAD-Specific Considerations

Session Management

  • Session Kickoff: Always start new AI sessions with proper context initialization
  • Memory Bank Maintenance: Keep context files current throughout development
  • Dev Journal Creation: Document significant work sessions
  • Sprint Reviews: Regular quality and progress assessments

Document Sharding

  • When to Shard: Large PRDs and architecture documents (>1000 lines)
  • How to Shard: By level 2 sections, maintaining index.md
  • Naming Convention: Convert section headings to lowercase-dash-case
  • Tool Support: Use markdown-tree-parser when available

Brownfield vs Greenfield

  • Greenfield: Start with PRD → Architecture → Implementation
  • Brownfield: Document existing → Create focused PRD → Enhance
  • Documentation Focus: Brownfield docs capture actual state, not ideal
  • Technical Debt: Always document workarounds and constraints

Best Practices Summary

  1. Simplicity First: Choose the simplest solution that works
  2. Documentation as Code: Treat documentation with same rigor as code
  3. Automate Everything: If it's done twice, automate it
  4. Security by Default: Consider security implications in every decision
  5. Test Early and Often: Multiple levels of testing for confidence
  6. Continuous Improvement: Regular retrospectives and improvements
  7. Accessibility Always: Build inclusive solutions from the start
  8. Clean as You Go: Maintain code quality continuously
  9. Context Persistence: Maintain Memory Bank for AI continuity
  10. Reality Over Ideals: Document what exists, not what should be