Turn this repository from a minimal Python boilerplate into a stronger reusable starter by:
- fixing template-level correctness issues in the current repo
- backporting production-proven patterns from
~/Desktop/acpkit - keeping the result single-package and template-friendly
- implementing a cookiecutter-style starter builder named
advanced_project_template
Phase 1 through Phase 5 have been implemented in this repo:
- package behavior is now covered by real API and CLI tests
- pytest config ownership is consolidated in
pyproject.toml - package versioning is routed through
src/advanced_project_template/_version.py - Makefile, pre-commit hooks, and CI use
uv-based commands - docs, tests, type checks, and package build have local validation paths
- MkDocs now has a fuller starter navigation, strict config, API docs, and docs styling
- release ergonomics now include
bump.sh,CHANGELOG.md, and a version consistency check advanced_project_templatecan now generate thin, base, and full workspaces from prompts, flags, or YAML- builder variables, profiles, and feature categories are documented in
docs/starter-builder.md
The plan is based on a direct read of the parts of acpkit that are template-relevant:
- root packaging and metadata
- Makefile and local developer workflow
- pre-commit strategy
- GitHub Actions workflows
- docs structure and MkDocs configuration
- CLI/version/layout patterns in
src/acpkit - support scripts for coverage, release hygiene, and docs indexing
- representative tests, examples, and contributor docs
The large references/ tree in acpkit was not treated as template source material because it is reference data, not starter infrastructure.
These are not placeholder issues. They are template-quality issues:
pytestconfiguration is duplicated acrosspyproject.tomlandpytest.ini, and the active run currently ignores thepyproject.tomlpytest settings.examples/__main__.pyis not runnable as written.- The package CLI surface is too thin and inconsistent with the package identity.
- The default test does not validate package behavior.
- The developer workflow relies on globally installed tools instead of consistently routing through
uv. - Docs, examples, and tests are not yet tied together as maintained surfaces.
Backport:
- dynamic versioning through a dedicated
src/<package>/_version.py __main__.pydelegating to a realcli.py- package
__init__.pyexporting a stable public surface and__version__ - consistent single source of truth for version text
Do not backport directly:
- the
uvworkspace monorepo layout - multiple publishable subpackages
- adapter-specific exports
Template target:
- keep one package under
src/ - keep the code layout ready for later growth without forcing monorepo complexity now
Backport:
uv runbased Makefile commands instead of assuming globally installed tools- separate
check-formattedtarget - stronger
prodtarget - optional Python matrix check target
- explicit
servetarget for docs - explicit
pre-committarget
Likely targets for this template:
formatcheck-formattedchecktestsdocsservepre-commitprod
Backport:
- tests that validate public behavior instead of toy assertions
tests/conftest.pyonly when it solves a real import or plugin problem- a structure that leaves room for support helpers and focused suites
Template target:
- replace the Zen-of-Python smoke test with real tests for the package API and CLI
- ensure examples are either runnable and tested, or clearly documented as illustrative-only
Backport:
- stricter MkDocs config
site_url,repo_url,repo_name,edit_uri- richer Material features
- markdown extensions that improve docs quality
- API reference pages via
mkdocstrings - small docs styling hook via
docs/stylesheets/tweaks.css - a cleaner landing page structure
Template target:
- keep docs simple, but real
- ship a docs structure that a new repo can fill in without rewriting the whole site
Backport:
- a clearer CI job with concurrency control
- formatting check separated from formatting rewrite
- docs deploy using strict mode
- publishing via trusted publishing instead of token-only publishing
- optional coverage upload workflow
Template target:
- preserve the simple single-package case
- validate install, format, lint, type-check, tests, docs build, and package build
Backport:
- local hooks using repo commands, not only third-party hook wrappers
- staged-change-aware expensive checks
- one place to encode quality policy
Template target:
- lightweight default hook set
- optional heavy-hook script pattern, but probably behind a simple threshold and documented as opt-in or phase 2
Backport:
- version bump script pattern
- changelog discipline
- version consistency checks
- optional release validation before publish
Template target:
- add a minimal
bump.shplus_version.pyflow - decide whether to keep
VERSION; if kept, it must be synchronized intentionally
Backport:
- useful
docs/llms.txt - optional generated long-form LLM docs index
Template target:
- keep a short, truthful
llms.txt - only add generation scripts if they stay generic
These are valuable in acpkit but should not enter the base template yet:
- monorepo workspace members and local workspace package wiring
- package-specific release guards against PyPI for multiple distributions
- adapter/domain-specific examples
- coverage gates tuned for a mature large codebase
- ACP-specific docs, compatibility matrices, and runtime bridges
- large reference corpora
Goal: make the current template internally consistent and honestly runnable.
Changes:
- remove pytest config duplication and keep one source of truth
- replace the current CLI placeholder with a real minimal CLI entrypoint
- add
_version.pyand export__version__cleanly - fix the example execution path
- replace toy tests with package and CLI tests
- switch Makefile commands to
uv run
Exit criteria:
make checkmake tests- example invocation works as documented
- no config warnings during pytest startup
Goal: make the template feel closer to a serious maintained package.
Changes:
- add
check-formatted,serve,pre-commit, andprod - improve
CONTRIBUTING.mdarounduv sync/uv run - strengthen
.pre-commit-config.yaml - add docs strict build command
- align GitHub Actions with the local commands
Exit criteria:
- CI mirrors local commands
- hooks and docs build are documented and reproducible
Goal: turn placeholder docs into a reusable documentation starter.
Changes:
- improve
mkdocs.yml - add docs navigation for getting started, API, and contributing surfaces
- add
docs/stylesheets/tweaks.css - add API reference page(s)
- rewrite
docs/index.mdinto a more intentional landing page
Exit criteria:
mkdocs build --strictpasses- docs structure works as a fill-in starter for downstream projects
Goal: make the starter safer to release and easier to maintain.
Changes:
- add bump/version workflow
- convert publish workflow to trusted publishing
- optionally add changelog starter
- optionally add a minimal coverage summary script and artifact
Exit criteria:
- release path is documented and reproducible
- version ownership is unambiguous
Goal: reshape the template so it can be parameterized cleanly by a future starter builder.
Changes:
- isolate all fields that should become template variables
- remove hard-coded project strings from code, docs, workflows, and examples
- define which files are static, computed, optional, or generated
- decide whether the future builder should support modes such as:
- library
- CLI app
- docs-enabled package
- single-package vs future workspace-ready layout
Exit criteria:
- the repo can be generated from a small set of variables without brittle search/replace
- Phase 1 correctness fixes
uv runworkflow normalization- CLI/version layout upgrade
- real tests
- docs hardening
- CI/CD alignment
- release ergonomics
- builder extraction
Use these acpkit files as source patterns, not literal copies:
pyproject.tomlMakefile.pre-commit-config.yaml.github/workflows/ci.yml.github/workflows/docs.yml.github/workflows/publish.ymlmkdocs.ymlsrc/acpkit/__init__.pysrc/acpkit/__main__.pysrc/acpkit/cli.pysrc/acpkit/_version.pyscripts/save_coverage_summary.pyscripts/run_if_major_change.pyscripts/generate_llms_docs.pybump.shCONTRIBUTING.mddocs/testing.mddocs/index.mddocs/api/acpkit.mddocs/stylesheets/tweaks.css
Use this upgraded repository as the source of truth for the future cookiecutter-style starter builder.