Files
sgard/CLAUDE.md
Kyle Isom d1a6e533a4 Step 8: Polish — lint, clock abstraction, e2e test.
- golangci-lint config with errcheck, govet, staticcheck, errorlint
- Fix all lint issues (unchecked error returns in cleanup paths, De Morgan)
- Inject jonboulle/clockwork into Garden for deterministic timestamps
- Add manifest.NewWithTime() for clock-aware initialization
- E2e lifecycle test: init → add → checkpoint → modify → status → restore → verify
- Update CLAUDE.md, PROJECT_PLAN.md, PROGRESS.md

Phase 1 (local) is now complete. All 9 CLI commands implemented and tested.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 22:03:53 -07:00

1.6 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Critical: Keep Project Docs Updated

Any change to the codebase MUST be reflected in these files:

  • ARCHITECTURE.md — design decisions, data model, package structure
  • PROJECT_PLAN.md — implementation steps; check off completed items
  • PROGRESS.md — current status, change log; update after completing any step

If another agent or engineer picks this up later, these files are how they resume. Keeping them accurate is not optional.

Project

sgard (Shimmering Clarity Gardener) — a dotfiles manager. Module: github.com/kisom/sgard. Author: K. Isom kyle@imap.cc.

Build

go build ./cmd/sgard

Run tests:

go test ./...

Lint:

golangci-lint run ./...

Dependencies

  • gopkg.in/yaml.v3 — manifest serialization
  • github.com/spf13/cobra — CLI framework
  • github.com/jonboulle/clockwork — injectable clock for deterministic tests

Package Structure

cmd/sgard/    CLI entry point (cobra commands, pure wiring)
garden/       Core business logic (Garden struct orchestrating everything)
manifest/     YAML manifest parsing (Manifest/Entry structs, Load/Save)
store/        Content-addressable blob storage (SHA-256 keyed)

Key rule: all logic lives in garden/. The cmd/ layer only parses flags and calls Garden methods. This enables the future gRPC server to reuse the same logic with zero duplication.

Each garden operation (remove, verify, list, diff) lives in its own file (garden/<op>.go) to minimize merge conflicts during parallel development.