chore(repo): bootstrap repo skeleton and hygiene#9
Merged
Conversation
Scaffolds the repository for the v0.1 bootstrap (#1): - go.mod / go.sum with Go 1.26 and pinned dev tools via internal/tools/tools.go - README, CONTRIBUTING, CODE_OF_CONDUCT (Contributor Covenant 2.1 by reference), SECURITY - .github/CODEOWNERS, PR template, issue templates (bug, feature, security-redirect, config) - Dependabot for gomod and github-actions, weekly grouped minor/patch - .golangci.yml with the spec's full linter set (gocyclo=15, gocognit=20, nolintlint with require-explanation) - Makefile (build, test, lint, sec, cover, tidy, tools, fmt, vet, vuln, clean) - .pre-commit-config.yaml (whitespace, EOF, yaml/json check, large files, mixed line endings, private key) - Directory layout placeholders for core/, cmd/, examples/, docs/{prompts,adrs}/, .github/workflows/ No Go source yet — phases 3+ land it. CI workflows land in phase 2 (#3). Closes #2.
- Switch from the //go:build tools pattern to the go.mod `tool` directive (Go 1.24+). Drop internal/tools/tools.go. Drop cosign and syft from the module graph (they are release-time tools and belong in the release workflow / GoReleaser config in phase 2). Net result: go.mod 657 -> 268 lines, go.sum 2637 -> 1088 lines. - Update Makefile to invoke pinned tools through `go tool <name>`. Remove the redundant `make tools` target. Add a `licenses` target for go-licenses. `make build` now prints a clear note when there are no Go packages yet, so contributors do not mistake the empty build for a successful one. - Update CONTRIBUTING.md: replace `make tools` instructions with `go mod tidy` plus a note that tools are invoked via `go tool`. Complete the SSH-signed-commit setup (gpg.ssh.allowedSignersFile was missing, which left signatures showing as unverified on GitHub). - README: drop speculative badges (CI, Codecov, Go Report Card, Scorecard, Release, pkg.go.dev) that would render broken until the underlying integrations exist. Keep License. Add a note about when the rest will land. - SECURITY.md: clarify that the supported-versions matrix is the policy that takes effect at v0.1.0; explicitly note that until then only `main` is supported. - .gitignore: cover vendor/ (guards against accidental `go mod vendor`), go.work / go.work.sum, and *.exe. - .golangci.yml: rename `gomodguard` to `gomodguard_v2` (deprecated in golangci-lint 2.12.0). Verified clean via `golangci-lint config verify`. - docs/adrs/0001-tool-directive-vs-tools-build-tag.md: ADR documenting the toolchain decision and its deviation from the spec at issue #1 §16.2. Issue #8 (phase 7) updated to renumber the provider ADR to 0002. Verified locally: - go mod verify -> all modules verified - go vet ./... -> clean - golangci-lint config -> verify exit 0 - make build -> exit 0 with friendly empty-tree note
This was referenced May 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2. Part of #1 (project bootstrap, v0.1).
This is phase 1 of 7 in the v0.1 bootstrap. It scaffolds the repository — directory layout, hygiene files, lint/build configuration, and Dependabot — so subsequent phases can layer CI, library code, the CLI, and examples onto a known-good foundation. No Go source is added under
core/orcmd/in this PR. Empty packages exist as.gitkeepplaceholders; the Go file count is one (internal/tools/tools.go).Summary
github.com/plexara/plexara-agents, Go 1.26.//go:build toolspattern ininternal/tools/tools.gosogo installproduces a reproducible local toolchain.go mod tidyhas resolved the full set;go.sumis locked..github/populated with CODEOWNERS, a PR template, three issue templates (bug / feature / security-redirect), anISSUE_TEMPLATE/config.ymlthat disables blank issues and surfaces Discussions and the security advisory page, and a Dependabot config coveringgomodandgithub-actionson a weekly schedule with grouped minor/patch updates and Conventional Commit prefixes..golangci.ymlset up with the spec's full linter set and thresholds (gocyclo=15,gocognit=20,dupl=150,nolintlintrequiring explanations,reviverule list).Makefilemirrors CI:make build,make test,make lint,make sec,make cover,make tidy,make tools, plusfmt,vet,vuln,clean,help..pre-commit-config.yamlinstalled for whitespace, EOF, YAML/JSON validation, large-file gates, mixed line endings, merge-conflict markers, and private-key detection..gitignorecovers Go build artifacts and the local.claude/agent state directory.Phase mapping
This PR is the foundation. The remaining six phases each have their own ticket and branch:
feat/bootstrap-skeletonfeat/bootstrap-cicore/event+core/providerfeat/bootstrap-event-providercore/mcp+core/sessionfeat/bootstrap-mcp-sessioncore/loop+core/router+core/approvalfeat/bootstrap-loop-router-approvalcmd/askCLIfeat/bootstrap-askexamples/acme-revenue+ ADR + architecture docfeat/bootstrap-acme-exampleFiles added (24)
Hygiene & docs
README.md— badges (CI, Codecov, Go Report Card, OpenSSF Scorecard, Release, License, pkg.go.dev), pre-v0.1 status calloutCONTRIBUTING.md— local dev setup, Conventional Commits, signed-commit guidance, code standardsCODE_OF_CONDUCT.md— adopts Contributor Covenant 2.1 by referenceSECURITY.md— GitHub PVR + email reporting viasupport@plexara.iowith a[SECURITY]subject prefix, supported-versions matrix, Cosign / SBOM / SLSA verification placeholder.gitignore— Go defaults plus.claude/.github/CODEOWNERS—@cjimtion everything, with extra entries on.github/,.goreleaser.yaml,.golangci.yml,core/,docs/, and the doc setPULL_REQUEST_TEMPLATE.md— summary, linked issue, type checklist, contributor checklist, reviewer notesISSUE_TEMPLATE/bug.md,feature.md,security-redirect.md,config.ymldependabot.yml— gomod + github-actions, weekly Monday 06:00 UTC, grouped minor/patch, Conventional Commit prefixesworkflows/.gitkeep— placeholder; phase 2 fills this inBuild, lint, format
go.mod,go.sum— module path, Go 1.26, dev tools resolved throughinternal/tools/tools.go.golangci.yml— full linter set per spec §14.5Makefile— CI-mirroring targets.pre-commit-config.yaml— pre-commit hygiene hooksinternal/tools/tools.go—//go:build toolspinning of golangci-lint, goimports, govulncheck, gosec, go-licenses, syft, cosignLayout placeholders
core/.gitkeep,cmd/.gitkeep,examples/.gitkeep,docs/prompts/.gitkeep,docs/adrs/.gitkeepOut of scope (deferred to later phases)
ci.yml,security.yml,codeql.yml,scorecard.yml,dependency-review.yml,release.yml,fuzz.yml) — phase 2 / Phase 2: CI & release pipeline #3main— manual GitHub setting, not configurable via this PRcore/orcmd/— phases 3 through 7Notes for the reviewer
CODE_OF_CONDUCT.mdshort and authoritative — the canonical text always lives atcontributor-covenant.organd is updated there.security@mailbox; the only address that exists today issupport@plexara.io. SECURITY.md, CODE_OF_CONDUCT.md, and the security-redirect issue template all route to it with subject-line prefixes ([SECURITY],[CONDUCT]).internal/tools/tools.goalready pulled in deps. Once that file imports the tool packages,go mod tidyresolves them — that is the intended outcome of the standard tools pattern. Versions ingo.sumare now the local source of truth and Dependabot will keep them current..golangci.ymlschema usesversion: "2"and the newlinters.default: standardplus enabled list. The Makefile andtools.goimportgithub.com/golangci/golangci-lint/v2/cmd/golangci-lint.core/,cmd/,examples/,docs/prompts/,docs/adrs/,.github/workflows/carry.gitkeepplaceholders so the planned layout is visible at a glance. They get deleted as real files arrive in later phases.Test plan
go build ./...runs clean (no packages yet, so emits the expected "matched no packages" warning and exits 0)go mod verifyreportsall modules verifiedgo vet ./...exits 0make helplists all targetschore(repo): ...)mainand start adding workflows