Run tq --help for data model, commands, and usage examples.
- Build:
go build ./... - Test:
go test ./... - Single test:
go test ./db/ -run TestTaskCreate - Lint:
golangci-lint run(CI also runs./scripts/deadcode-check.sh— Rule 13) - Install:
go install .
tq CLI subcommands (see docs/cli-reference.md for flags and examples):
tq project/tq task/tq action— manage projects, tasks, and actionstq schedule— create and manage scheduled actionstq event— query the event logtq search <keyword>— full-text search across task titles, task metadata, task status change reasons, action titles, action results, and action metadatatq config— get/set global settings stored in the DB (e.g.default_mode)tq ui— launch interactive TUI with queue workertq completion— generate shell autocompletion scripts
- Table-driven tests in
*_test.go; usetestutil.NewTestDB()for in-memory SQLite (ortestutil.NewFileTestDB()when the test needs the multi-connection pool, e.g. SQLITE_BUSY contention) - Wrap errors with
fmt.Errorf
- Lint rules:
.golangci.yml - Architecture layers enforced by depguard: db (foundation) ← dispatch/tui (service) ← cmd (orchestrator) ← main
- Golden rules (verifiable architectural constraints):
docs/golden-rules.md
- All
.claude-plugins/*/.claude-plugin/plugin.jsonfiles MUST share the sameversionascmd/version.go; tagpr only bumps files matching the prior version string. - Do not set
versionin.claude-plugin/marketplace.jsonplugin entries —plugin.jsonis the single source of truth. - Release flow is automated by tagpr; the bump target list lives in
.tagpr.
- MUST: Run
/quality-reviewbefore marking work complete - Requires
flockonPATH(macOS:brew install flock) —.claude/scripts/record-quality-review.shuses it to serialize the state ledger across worktrees - Enforced: a PreToolUse hook (
.claude/hooks/check-quality-review.sh) blocksgh pr createuntil/quality-reviewhas recorded the current HEAD SHA - Enforced: a Stop hook (
.claude/hooks/check-session-completion.sh) pushes the agent back if the session is about to end with uncommitted changes, commits ahead of origin/main without a PR, or an open PR (failing/pending CI, draft, conflict, or simply un-merged). Follow the slash command quoted in the push-back message, then retry. - Auto: a PostToolUse hook (
.claude/hooks/post-edit-go-quality.sh) runsgolangci-lint fmton edited.gofiles and injects package-level lint diagnostics into the agent context (non-blocking).