Thank you for your interest in contributing!
For DCO sign-off, commit conventions, and code review process, see the organization-wide CONTRIBUTING.md.
- Python 3.10+
- Hatch (
pip install hatch) - reqstool (
pipx install reqstool) — for dogfooding this repo's own traceability data against the latest PyPI release; usehatch run dev:...below to exercise your local changes instead - OpenSpec (
npm install -g @fission-ai/openspec)
git clone https://github.com/reqstool/reqstool-client.git
cd reqstool-client
hatch env create devIf using Claude Code, opening this repo will prompt you to confirm adding the reqstool-ai
marketplace and enabling the reqstool/reqstool-openspec plugins (configured in
.claude/settings.json) — accept the prompt.
Then regenerate the opsx slash commands and OpenSpec skills
(.claude/commands/opsx/, .claude/skills/openspec-*) — they're CLI-generated tool scaffolding,
not committed to the repo:
openspec update # or: openspec init --tools claude --force# Run all tests
hatch run dev:pytest --cov=reqstool
# Unit tests only
hatch run dev:pytest --cov=reqstool tests/unit
# Integration tests only
hatch run dev:pytest --cov=reqstool tests/integration# Format with black
hatch run dev:black src tests
# Lint with flake8
hatch run dev:flake8Pydantic data models in src/reqstool/models/generated/ are auto-generated from the JSON Schemas
in src/reqstool/resources/schemas/v1/. JSON Schema is the source of truth — never edit the
generated files directly.
To regenerate after modifying a schema:
hatch run dev:codegenThis runs datamodel-codegen to produce Pydantic v2 BaseModel classes from all schema files.
The generated files should be committed alongside the schema changes.