Agentic Project Kit – A control harness for LLM-assisted coding via repo-state A local Python CLI called agentic-project-kit has been published to PyPI to govern AI-assisted repository work through contracts, gates, evidence, handoffs, policy selection, task tracking, GitHub automation and release validation. The kit generates repository scaffolding including `.agentic/project.yaml` as a machine-readable project contract, `AGENTS.md` agent rules, `docs/TEST_GATES.md` evidence matrix, `.agentic/todo.yaml`, a GitHub Actions CI workflow and a `sentinel.yaml` document and task checker, and its deterministic Successor Handoff Package writes `successor_context.yaml`, `source_manifest.json`, `validation_report.json`, `execution_contract.json` and `successor_prompt.md` so new chats verify the package and execution contract rather than chat memory. The project positions these as governance aids rather than semantic-completeness or production-readiness claims, aimed at reducing context drift from stale handoffs, unclear branch rules and missing test evidence. Handoff architecture: the deterministic Successor Handoff Package writes successor context.yaml , source manifest.json , validation report.json , execution contract.json , and successor prompt.md under docs/reports/handoff-packages/latest/ for this repo or .agentic/state/handoff/packages/latest/ externally. New chats verify package and execution contract, not chat memory. agentic-project-kit is a local Python CLI for governing AI-assisted repository work with contracts, gates, evidence, handoffs, policy selection, task tracking, GitHub automation, and release validation. Generated website: https://vfi64.github.io/agentic-project-kit/ https://vfi64.github.io/agentic-project-kit/ . External finding adjudications and exact retest contracts are available with agentic-kit greenfield status --json . The generated docs/reports/greenfield/external-findings-status.json distinguishes Kit fixes from consumer VERIFIED FIXED. Maintainers regenerate it through a signed agentic-kit greenfield export plan. Opt-in release.evidence archive: true adds the separately signed final E1 archive gate to release run, after publishing and DOI checks pass; committed evidence contains bounded step results and gate attribution. When the workspace has site/scripts/build.py , E1 declares projection paths in its signature, regenerates the canonical Pages fallback after writing evidence, and includes it in the archive commit. A rendering failure stops before commit or push; workspaces without that optional site are unchanged. See docs/reports/greenfield/KIT-GF-066-machine-readable-evidence-2026-10-13.md . release.changelog summary: curated writes only the curated summary lines into a release's CHANGELOG section by default the Unreleased entries, which must all be covered instead of combining them with the generated PR-title list. Release run reports C3 as WAITING while the package-index run waits for an environment approval in GitHub, settles C3 from the finished run, and resumes an unchanged, already approved gate without asking again. AI-assisted development works best when context is explicit, current, and machine-checkable. Otherwise, agents drift into stale handoffs, unclear branch rules, missing test evidence, and unstructured logs. The kit turns those lessons into reusable repository scaffolding. Goal: make repository state, handoffs, documentation coverage, tasks, release state, and policy expectations visible enough to reduce context drift. Cookiecutter-style generators create initial files. agentic-project-kit keeps AI-assisted repository work reviewable after the first commit. A generated project includes machine-readable state, current handoff files, documentation coverage expectations, task gates, local health checks, release-state validation, policy-pack fixtures, and evidence conventions. These are governance aids, not semantic-completeness or production-readiness claims. A generated project includes: - professional GitHub repository structure - .agentic/project.yaml as a machine-readable project contract - recommended project profiles and policy packs - AGENTS.md with stable agent rules and closeout expectations - docs/PROJECT START.md for first-run decisions - docs/STATUS.md as compact current-state dashboard - docs/TEST GATES.md as evidence matrix for different change types - docs/handoff/CURRENT HANDOFF.md and STANDARD AGENT PROMPT.md - .agentic/todo.yaml plus rendered docs/TODO.md - GitHub Actions CI workflow - pull request template and agent-regression issue template - GitHub Copilot instruction file - pre-commit configuration - bounded diagnostic log staging script - sentinel.yaml for document and task checks - minimal package/test skeleton for Python projects Install the package from PyPI in a virtual environment: python -m venv .venv source .venv/bin/activate python -m pip install agentic-project-kit agentic-kit --version Historical first-contact findings: docs/reports/V1 0 1 DOCKER PYPI FIRST CONTACT 20260820.md . Git is a system prerequisite for agentic-kit init and Git-backed workflows. pip install agentic-project-kit cannot install Git portably across macOS, Linux, and Windows. Install Git with your operating-system package manager or installer before creating a new governed repository. For Kit development from the public source projection: python -m venv .venv source .venv/bin/activate python -m pip install "agentic-project-kit @ git+https://github.com/vfi64/agentic-project-kit.git@main" agentic-kit --version For Kit development from a local checkout: python -m venv .venv source .venv/bin/activate python -m pip install -e ". dev " Run gates: pytest -q ruff check . agentic-kit check-docs agentic-kit doctor agentic-kit --version agentic-kit --help First-chat route selection is in docs/ONBOARDING.md . It separates creating a new governed project, adding the Kit operating layer to an existing repository, and working on this Kit repository. Use agentic-kit onboarding measure to check that the onboarding guide still matches the command manifest and workspace-detection message. For the generated install and usage walkthrough, including the PyPI install path, the source install path, a Docker-based safe package test, new repositories, and existing repositories, see https://vfi64.github.io/agentic-project-kit/quickstart/ https://vfi64.github.io/agentic-project-kit/quickstart/ . Evidence labels: Historical PyPI Validation means The first public PyPI validation confirmed a package from pypi.org ; Post-fix Build/Checkout Validation covers local checkout/wheel tests; Post-release PyPI Validation covers later packages. Docker without an official registry image uses the local source image: git clone https://github.com/vfi64/agentic-project-kit.git cd agentic-project-kit docker build -t agentic-project-kit:local . docker run --rm -v "/path/to/repo:/work" agentic-project-kit:local doctor --root /work Creating a new repository inside Docker also needs a Git identity for the initial convenience commit: docker run --rm \ -e GIT AUTHOR NAME="Your Name" \ -e GIT AUTHOR EMAIL="you@example.com" \ -e GIT COMMITTER NAME="Your Name" \ -e GIT COMMITTER EMAIL="you@example.com" \ -v "$PWD:/work" \ agentic-project-kit:local init my-new-project --type generic --kit-source none Without that identity the project files are still created, but the initial Git commit is skipped with an explicit warning. GitHub operations inside Docker require explicit gh and SSH credentials; no secret should be baked into the image. Create a new project interactively: agentic-kit init Create a new Python CLI project non-interactively: agentic-kit init my-new-project \ --type python-cli \ --description "My new project" \ --license MIT \ --github-actions \ --pre-commit \ --agent-docs \ --logging-evidence Then enter the generated project and run: cd my-new-project python -m venv .venv source .venv/bin/activate pip install -e ". dev " pytest -q agentic-kit check agentic-kit doctor See docs/examples/minimal-python-cli.md for a small end-to-end example showing how a generated Python CLI project gets project state files, agent instructions, documentation gates, task gates, and a local doctor check. Generated projects contain .agentic/project.yaml as a machine-readable project contract and a standard .gitignore for local Python/tooling byproducts. The contract records the project name, description, project type, selected profiles, selected policy packs, and basic governance expectations. Profiles describe what kind of repository the project is, for example generic-git-repo , markdown-docs , python-cli , python-lib , git-github , or release-managed . Policy packs describe which development rules are recommended for the project goal, for example starter , prototype , solo-maintainer , agentic-development , release-managed , or documentation-governed . By default, agentic-kit init recommends profiles and policy packs from the selected project type and enabled features. You can override them explicitly: agentic-kit init my-docs-project \ --type generic \ --profiles generic-git-repo,markdown-docs \ --policy-packs starter,documentation-governed agentic-kit doctor validates the project contract when .agentic/project.yaml is present and reports selected profiles and policy packs. After agentic-kit workspace init --root PATH --execute , .agentic/config.yaml enables external workspace health mode without the self-hosting Kit documentation set. agentic-kit check / agentic-kit check-docs inspect .agentic/state/ and .agentic/registries/ ; agentic-kit governance check , agentic-kit doctor , agentic-kit standard-gates-audit-suite , and agentic-kit slice gate --kind planning-doc use external gate sets. doctor reports SKIP / WARN , skips not-applicable Kit checks plus repo-local source audit, treats target documentation lifecycle remains project-owned, verifies packaged command manifest availability, and treats Kit-specific version drift as project-owned release governance. rules snapshot / rules acknowledge use external workspace rule sources .agentic/rules/README.md , .agentic/state/status.md ; repo head drift is a Rule-Ack warning, source snapshot drift remains blocking. Carriers: .agentic/state/handoff/transfer handoff reports/ ; packages: .agentic/state/handoff/packages/latest/ . External first-cycle workspace start skips post-merge handoff checks only before a successor package exists; transfer status reports NO COMMAND for empty inbox. PR/merge preflights only auto-clean allowlisted volatile carriers such as .agentic/rule ack/current.json ; workspace init ignores .agentic/tmp/ and .agentic/rule ack/ ; product files stay nonvolatile unless explicit policy classifies them safely. When a clean foreign checkout is currently on a branch without .agentic/config.yaml , transfer branch-switch and transfer sync-main --main-branch BRANCH may switch to an external target branch that contains .agentic/config.yaml before requiring external rule acknowledgement. For external admin refresh, transfer admin-refresh-pr --main-branch BRANCH may create the refresh branch from origin/BRANCH without checking out a basis branch that is already active in another worktree. Run transfer pr-merge-safe after fresh context, rule acknowledgement, and clean-except-known-transient worktree. External .agentic/transfer/inbox and .agentic/transfer/outbox are local transfer work directories; a fresh Git checkout may not contain them until a transfer command creates them. agentic-kit doctor activates lightweight policy-pack checks from .agentic/project.yaml . They verify structural prerequisites: - solo-maintainer expects status, handoff, sentinel, and task gate files. - agentic-development expects agent instructions, test gates, handoff, and the architecture contract. - release-managed expects changelog, citation metadata, and Zenodo metadata. - documentation-governed expects the documentation coverage matrix and architecture contract. - starter and prototype expect basic README/status scaffolding. The policy-pack checks are structural. They prove that the selected policy pack has its required fixtures, not prose completeness or release readiness. Use agentic-kit doctor as the compact repository health check: agentic-kit doctor It reports project files, workspace manifest status, project contract status, policy-pack checks, documentation gates, task validation, and version drift. SKIP means not applicable; WARN means advisory. The command exits non-zero only when required checks fail. agentic-kit check and agentic-kit doctor treat a directory with no Kit markers as not an Agentic Project Kit workspace and exit non-zero with the next safe setup command instead of an internal traceback. A freshly generated project uses .agentic/project.yaml ; doctor reports the operating-layer .agentic/config.yaml checks as SKIP there instead of warning that the new project is implicitly legacy. Use the deterministic successor handoff package before switching chats or continuing in another LLM: agentic-kit transfer chat-switch-complete --render-prompt For an existing external manifest workspace, agentic-kit kit status --json detects its own Kit environment without relying on global PATH. On a work branch, agentic-kit kit update --version X.Y.Z --json plans adoption of an exact released version. Its signed execution updates that environment, preserves customized CI while raising both managed pins, synchronizes the target version's command entrypoints and runs check/doctor. See workspace Kit maintenance https://github.com/vfi64/agentic-project-kit/blob/main/docs/reference/HUMAN WORKFLOW COMMANDS.md workspace-kit-maintenance-kit-gf-051021 for approval, configuration and recovery details. For local development in this repository, run it through the project environment: ./.venv/bin/agentic-kit transfer chat-switch-complete --render-prompt The command writes a machine-readable successor context, source manifest, validation report, and copy/paste successor prompt under: docs/reports/handoff-packages/latest/ The successor package separates the committed projection head from the final repository identity. validation report.json records the HEAD used to generate the committed package. After an admin refresh commit, post-merge-check may report successor package head status=refresh only descendant and successor package current head=