# Migration Step 5: Promptkit Repository Foundation ## Status Complete as of 2026-07-28. ## Purpose Establish Promptkit as an independent, maintainable Go library repository ready to receive framework extraction in Migration Step 6 without moving framework behavior prematurely. The [main migration roadmap](migration.md) owns the overall sequence. [ADR 0002](../adr/0002-split-promptkit-from-scriptorium.md) owns the repository boundary, module path, versioning direction, and cross-repository ordering. [ADR 0003](../adr/0003-use-maintainer-run-validation-and-tag-only-releases-for-promptkit.md) owns the maintainer-run validation and tag-only release decision. ## Completed Work ### Repository And Module Foundation - Confirmed the Promptkit repository, maintainer governance, configured origin, and `main` tracking of `origin/main`. - Created dependency-free module `gitea.maximumdirect.net/eric/promptkit` with Go `1.25.5`. - Added the root `promptkit` package as the sole implemented Go package and public package boundary. - Added no framework implementation, exported API, internal package, speculative package tree, command, workspace file, or local replacement. - Retained GPLv3 and changed only the two template project names in its example notices to `Promptkit`. ### Durable Repository Guidance - Replaced application-template architecture, documentation, and testing policies with library-specific policies. - Recorded the root package as the only implemented component and kept future framework boundaries explicitly unimplemented. - Rewrote repository orientation and contributor workflow for the Promptkit module. - Documented deterministic, offline, parallel-safe, maintainer-run validation. - Documented temporary sibling workspace and uncommitted replacement workflows without committing machine-local coupling. - Added a semantic Go module tag release procedure with no runnable binaries or hosted CI. ### Decision Reconciliation - Accepted ADR 0003 as the later controlling decision for Promptkit validation while leaving ADR 0002 Accepted and its repository-split decision unchanged. - Reconciled the main migration roadmap with maintainer-run validation, tag-only releases, and the requirement that Promptkit publish its first versioned tag before Scriptorium adopts it. ## Acceptance Record From a clean Promptkit checkout with no active Go workspace or local replacement, the maintainer successfully ran: ```sh go test ./... go vet ./... go build ./... gofmt -l $(git ls-files '*.go') git diff --check ``` The formatting command produced no paths. Acceptance also confirmed: - module path `gitea.maximumdirect.net/eric/promptkit`, Go `1.25.5`, root package `promptkit`, and matching import path; - no external dependency, `go.sum`, `go.work`, `go.work.sum`, or `replace` directive; - no hosted CI configuration, command package, release artifact, version tag, or placeholder framework package; - every maintained Markdown link resolves; - repository orientation, policies, inventory, contributor workflow, and release procedure are internally consistent and free of template residue; - the configured origin belongs to Promptkit and `main` tracks `origin/main`; - GPLv3 wording and attribution remain unchanged apart from the two approved Promptkit example-notice names; and - Scriptorium contains only the decision and roadmap documentation required for this foundation work, with no production code or module dependency change. ## Scope Boundary And Next Gate No framework implementation or public framework API was extracted, no consumer was migrated, and no `v0.1.0` tag was created. Promptkit remains an independently valid repository foundation. Migration Step 6 is now authorized to extract and stabilize the framework. It must pass Promptkit's documented validation and publish the first versioned tag before Scriptorium or another consumer adopts the module.