# Development tooling for the BMAD-METHOD repository. # # This is not a distributable package: the repository tree itself is what # `npx skills add bmad-code-org/BMAD-METHOD` and the plugin marketplaces # install, and each shipped script under skills/*/scripts declares its own # dependencies inline (PEP 723) so `uv run` works without this file. # The release version lives in skills/*/module-manifest.toml, not here. [project] name = "bmad-method" version = "0" description = "Repository tooling for BMAD-METHOD (not published)" requires-python = ">=3.11" dependencies = [] [dependency-groups] dev = [ "jinja2>=3.1", "pre-commit>=4.6.2", "pytest>=8", "pytest-xdist>=3", "pyyaml>=6.0.2,<7", "ruamel.yaml>=0.18", "ruff>=0.14", ] [tool.uv] package = false [tool.pytest.ini_options] addopts = "-q -ra --tb=short -n auto -p no:cacheprovider" testpaths = ["tools/tests", "skills"] [tool.ruff] # Every shipped script declares the same floor inline (PEP 723) as # requires-python above; tools/tests/test_python_floor.py enforces that, # since ruff reads only this setting. target-version = "py311" line-length = 120 extend-exclude = ["tools/tests/fixtures"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] ignore = [ "E501", # long lines: the formatter handles code; strings and comments may exceed ] [tool.rumdl] # The five rules markdownlint enforced before; the rest stay off. enable = ["MD001", "MD024", "MD026", "MD034", "MD037"] exclude = ["node_modules", "tools/tests/fixtures", "CODE_OF_CONDUCT.md", "docs-site/dist", "docs-site/.astro"] [tool.rumdl.MD024] siblings-only = true [tool.rumdl.MD026] punctuation = "," [tool.yamlfix] # yamlfix's default of 0 also strips blank lines inside block scalars, # which rewrites the shell scripts in workflows. 1 keeps them. whitelines = 1 section_whitelines = 1 explicit_start = false