Project structure¶
This page is the quickest way to understand where things are, where new files should go, and which paths matter most first.
High-level layout¶
.
βββ .github/ # CI, issue templates, automation workflows
βββ .sdetkit/ # repo-local generated outputs and automation assets
βββ artifacts/ # generated platform-problem artifacts and snapshots
βββ docs/ # MkDocs site pages
βββ examples/ # sample inputs, outputs, and runnable examples
βββ plans/ # planning artifacts and working plans
βββ scripts/ # developer shell/check/bootstrap helpers
βββ src/sdetkit/ # application + library code
βββ templates/ # reusable templates and scaffolds
βββ tests/ # automated tests
βββ tools/ # extra tooling helpers
βββ pyproject.toml # package metadata + tool configuration
βββ quality.sh # local quality runner
βββ README.md # top-level product and repo entrypoint
βββ mkdocs.yml # documentation site config
What to read first (by role)¶
| If you are... | Start here | Then read |
|---|---|---|
| New contributor | README.md |
CONTRIBUTING.md, docs/project-structure.md |
| CLI user | docs/cli.md |
docs/doctor.md, docs/repo-audit.md |
| Maintainer | quality.sh |
scripts/check.sh, noxfile.py, Makefile |
| Release owner | RELEASE.md |
docs/releasing.md, CHANGELOG.md |
| Docs editor | docs/index.md |
mkdocs.yml, docs/contributing.md |
Root directory guide¶
The repository root should stay reserved for project-wide entrypoints and policy.
Keep at the root¶
- project entry docs such as
README.md,CONTRIBUTING.md,RELEASE.md, andROADMAP.md - project-wide policy and trust files such as
SECURITY.md,SUPPORT.md, andCODE_OF_CONDUCT.md - package/build configuration such as
pyproject.toml,mkdocs.yml,poetry.lock, andnoxfile.py - top-level workflow runners such as
quality.sh,ci.sh,premium-gate.sh, andsecurity.sh
Prefer subdirectories for everything else¶
| Content type | Preferred location |
|---|---|
| Runtime Python code | src/sdetkit/ |
| Tests and fixtures | tests/ |
| Long-form documentation | docs/ |
| Examples and sample payloads | examples/ |
| Reusable templates | templates/ |
| Generated outputs/evidence | .sdetkit/out/ or artifacts/ |
| One-off helper scripts | scripts/ or tools/ |
| Planning material | plans/ |
Placement rules of thumb¶
- Add a new top-level file only if it affects the entire project.
- Add new code under
src/sdetkit/and mirror its coverage intests/. - Add deep explanations under
docs/and link fromREADME.mdinstead of expanding root docs forever. - Put generated content in
.sdetkit/out/orartifacts/, not beside hand-maintained source files. - Put templates/examples in
templates/andexamples/, not mixed with production code.
Key source modules (src/sdetkit/)¶
cli.pyβ top-level command router_entrypoints.pyβ console script entrypoints (kvcli,apigetcli)__main__.pyβpython -m sdetkitlauncherapiclient.pyβ high-level request operationsnetclient.pyβ network utilities (pagination/retries/breaker behavior)doctor.pyβ diagnostics, scoring, and recommendationsrepo.pyβ repository audit and policy checkspatch.pyβ deterministic patch featuresatomicio.pyβ safe atomic file IO helperstextutil.pyβ small text helpers
Supporting directories¶
tests/β feature tests, CLI tests, module unit tests, and mutation-test killer testsscripts/β one-command workflows such as:check.sh(fmt/lint/types/tests/coverage/docs/all)bootstrap.sh(create local environment + install dependencies)env.sh/shell.sh(venv PATH convenience)docs/β user and maintainer documentation published via MkDocsexamples/β sample profiles, example payloads, and walkthrough datatemplates/β reusable scaffolding and authoring helperstools/β additional helper scripts for local development.github/β Actions workflows, templates, and GitHub automation policy
Repo hygiene checklist¶
Use this before introducing a new file or folder:
- Is this file project-wide? If not, keep it out of the root.
- Is this file written by humans? If not, prefer
.sdetkit/out/orartifacts/. - Is this content documentation? If yes, prefer
docs/. - Is this content an example/template? If yes, prefer
examples/ortemplates/. - Can the change be explained by linking from an existing page instead of adding another root file?
Repository cleanup policy¶
For concrete placement standards, naming guidance, and a repeatable hygiene checklist, see docs/repo-cleanup-plan.md.