[project] name = "specify-cli" version = "0.3.2" description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)." requires-python = ">=3.11" dependencies = [ "typer", "click>=8.1", "rich", "httpx[socks]", "platformdirs", "readchar", "truststore>=0.10.4", "pyyaml>=6.0", "packaging>=23.0", "pathspec>=0.12.0", "json5>=0.13.0", ] [project.scripts] specify = "specify_cli:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/specify_cli"] [tool.hatch.build.targets.wheel.force-include] # Bundle core assets so `specify init` works without network access (air-gapped / enterprise) # Page templates (exclude commands/ — bundled separately below to avoid duplication) "templates/agent-file-template.md" = "specify_cli/core_pack/templates/agent-file-template.md" "templates/checklist-template.md" = "specify_cli/core_pack/templates/checklist-template.md" "templates/constitution-template.md" = "specify_cli/core_pack/templates/constitution-template.md" "templates/plan-template.md" = "specify_cli/core_pack/templates/plan-template.md" "templates/spec-template.md" = "specify_cli/core_pack/templates/spec-template.md" "templates/tasks-template.md" = "specify_cli/core_pack/templates/tasks-template.md" "templates/vscode-settings.json" = "specify_cli/core_pack/templates/vscode-settings.json" # Command templates "templates/commands" = "specify_cli/core_pack/commands" "scripts/bash" = "specify_cli/core_pack/scripts/bash" "scripts/powershell" = "specify_cli/core_pack/scripts/powershell" ".github/workflows/scripts/create-release-packages.sh" = "specify_cli/core_pack/release_scripts/create-release-packages.sh" ".github/workflows/scripts/create-release-packages.ps1" = "specify_cli/core_pack/release_scripts/create-release-packages.ps1" # Official agent packs (embedded in wheel for zero-config offline operation) "src/specify_cli/core_pack/agents" = "specify_cli/core_pack/agents" [project.optional-dependencies] test = [ "pytest>=7.0", "pytest-cov>=4.0", ] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = [ "-v", "--strict-markers", "--tb=short", ] [tool.coverage.run] source = ["src"] omit = ["*/tests/*", "*/__pycache__/*"] [tool.coverage.report] precision = 2 show_missing = true skip_covered = false