You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bootstrap the jotsmith Go module and the CLI skeleton everything else builds on. Wire urfave/cli/v3 as the root command, define the global flags every subcommand will accept, get --version working, and stand up CI + lint + release tooling so all subsequent slices land on green pipelines.
This is intentionally a thin tracer: no Azure calls, no config loading yet, no subcommands beyond --version and help. The point is to prove the layout + tool choices + CI are correct end-to-end before any real functionality lands.
Acceptance criteria
go.mod exists with module path github.com/MaxAnderson95/jotsmith and Go ≥ 1.24
Target directory layout from AGENTS.md exists: cmd/jotsmith/ plus internal/{cli,config,azurex,jwk,oidc,sign}/ (each internal/* package may be empty besides a doc comment for now)
cmd/jotsmith/main.go wires a urfave/cli/v3 root command with global flags:
GitHub Actions workflow runs golangci-lint, go test ./..., and go build ./... on push and PR; all third-party actions pinned to commit SHAs per repo convention
go test ./... passes (near-empty initially)
Blocked by
None - can start immediately.
Originally created in OpenCode session ID: ses_17ca8efd8ffexLcFSysAMDVNBQ
What to build
Bootstrap the
jotsmithGo module and the CLI skeleton everything else builds on. Wireurfave/cli/v3as the root command, define the global flags every subcommand will accept, get--versionworking, and stand up CI + lint + release tooling so all subsequent slices land on green pipelines.This is intentionally a thin tracer: no Azure calls, no config loading yet, no subcommands beyond
--versionandhelp. The point is to prove the layout + tool choices + CI are correct end-to-end before any real functionality lands.Acceptance criteria
go.modexists with module pathgithub.com/MaxAnderson95/jotsmithand Go ≥ 1.24AGENTS.mdexists:cmd/jotsmith/plusinternal/{cli,config,azurex,jwk,oidc,sign}/(eachinternal/*package may be empty besides a doc comment for now)cmd/jotsmith/main.gowires aurfave/cli/v3root command with global flags:--config(envJOTSMITH_CONFIG)--log-level(envJOTSMITH_LOG_LEVEL, defaultinfo, acceptserror|warn|info|debug|trace)--no-color(envNO_COLORpresence)jotsmith --versionprints version + git SHA + build date to stdout, exits 0jotsmith(no args) andjotsmith helpprint usage to stderr, exits 0.golangci.ymlcommitted;golangci-lint runpasses on the scaffolded code.goreleaser.yamlcommitted;goreleaser build --single-target --snapshotsucceeds locallygolangci-lint,go test ./..., andgo build ./...on push and PR; all third-party actions pinned to commit SHAs per repo conventiongo test ./...passes (near-empty initially)Blocked by
None - can start immediately.
Originally created in OpenCode session ID: ses_17ca8efd8ffexLcFSysAMDVNBQ