Skip to content

Slice 1: Repo scaffolding (Go module, urfave/cli v3 root, global flags, CI, goreleaser) #1

@MaxAnderson95

Description

@MaxAnderson95

What to build

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:
    • --config (env JOTSMITH_CONFIG)
    • --log-level (env JOTSMITH_LOG_LEVEL, default info, accepts error|warn|info|debug|trace)
    • --no-color (env NO_COLOR presence)
  • jotsmith --version prints version + git SHA + build date to stdout, exits 0
  • jotsmith (no args) and jotsmith help print usage to stderr, exits 0
  • Smoke test asserts no non-help output reaches stdout from the root command
  • .golangci.yml committed; golangci-lint run passes on the scaffolded code
  • .goreleaser.yaml committed; goreleaser build --single-target --snapshot succeeds locally
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent to pick up

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions