# Seeds Git-native issue tracker for AI agent workflows. Minimal dependencies, JSONL storage, Bun runtime. Replaces beads in the overstory/mulch ecosystem. **The JSONL file IS the database.** No binary files, no export pipeline, no sync step. One file, diffable, mergeable. ## Tech Stack - **Runtime:** Bun (runs TypeScript directly, no build step) - **Language:** TypeScript with strict mode (`noUncheckedIndexedAccess`, no `any`) - **Linting:** Biome (formatter + linter in one tool) - **Runtime dependencies:** chalk, commander (plus Bun built-in APIs: `Bun.file`, `Bun.write`, `node:fs`, `node:crypto`) - **Dev dependencies:** `@types/bun`, `typescript`, `@biomejs/biome` - **Storage:** JSONL (git-native, diffable, mergeable) - **Config:** YAML (minimal built-in parser, ~50 LOC) - **Locking:** Advisory file locks (proven in mulch for multi-agent) ## Directory Structure ``` seeds/ package.json tsconfig.json biome.json CLAUDE.md CHANGELOG.md README.md .claude/ commands/ release.md # /release slash command .github/ workflows/ ci.yml # lint + typecheck + test on push/PR publish.yml # CI publish: auto-tag + GitHub release + npm publish scripts/ version-bump.ts # Bump version in package.json + src/version.ts src/ index.ts # CLI entry + command router version.ts # VERSION constant (importable without CLI side-effects) types.ts # Issue, Template, Config, constants store.ts # JSONL read/write/lock/atomic id.ts # ID generation config.ts # YAML config load/save config-schema.ts # JSON Schema for .seeds/config.yaml (sd config schema) output.ts # JSON + human output helpers yaml.ts # Minimal YAML parser (flat key-value only) markers.ts # Marker-delimited section helpers (onboard) filter.ts # Shared issue filter logic (list + ready) commands/ init.ts # sd init create.ts # sd create show.ts # sd show list.ts # sd list ready.ts # sd ready search.ts # sd search update.ts # sd update close.ts # sd close dep.ts # sd dep add/remove/list block.ts # sd block unblock.ts # sd unblock label.ts # sd label add/remove/list/list-all sync.ts # sd sync blocked.ts # sd blocked stats.ts # sd stats tpl.ts # sd tpl create/step/list/show/pour/status migrate.ts # sd migrate-from-beads doctor.ts # sd doctor prime.ts # sd prime setup.ts # sd setup claude guard.ts # sd guard (PreToolUse hook) onboard.ts # sd onboard upgrade.ts # sd upgrade completions.ts # sd completions config.ts # sd config schema/show/set/unset test-harness.ts # In-process test harness (captures stdout/stderr/exitCode) test-harness.test.ts # Test harness self-tests cli-smoke.test.ts # CLI binary smoke tests (real subprocess) markers.test.ts # Marker section tests store.test.ts # Core data layer tests id.test.ts # ID generation tests yaml.test.ts # YAML parser tests commands/ init.test.ts create.test.ts dep.test.ts tpl.test.ts doctor.test.ts prime.test.ts onboard.test.ts completions.test.ts label.test.ts unblock.test.ts sync.test.ts config.test.ts suggestions.test.ts # Typo suggestion tests timing.test.ts # --timing flag tests ``` ## Build & Test Commands ```bash bun test # Run all tests bun test src/store.test.ts # Run single test file bun run lint # bunx biome check . bun run typecheck # tsc --noEmit ``` ## Quality Gates Run before committing: ```bash bun run check:all # quiet runner over all 9 gates (alias: bun run verify) ``` `check:all` (`scripts/check-all.ts`, byte-identical fleet-wide — never edit it in place) resolves its manifest from package.json and runs, in order: `lint`, `typecheck`, `check:agents`, `check:dups`, `check:deps`, `check:size`, `check:debt`, `check:coverage`, `check:ci-parity`. See `docs/check-all-standard.md` at the os-eco root. Per-repo CI-parity escape hatches live in `scripts/ci-parity-config.json` (aliases + justified ciOnly entries), never in the script itself. ## On-Disk Format (.seeds/) ``` .seeds/ config.yaml # Project config (YAML) issues.jsonl # All issues, one JSON object per line templates.jsonl # Molecule/template definitions .gitignore # Ignores lock files ``` Git merge strategy: `merge=union` gitattribute on JSONL files. Dedup-on-read (last occurrence wins) handles duplicates from parallel branch merges. ## CLI Command Reference Binary name: `sd` Every command supports `--json` for structured output. Global flags: `-v`, `-q`/`--quiet`, `--verbose`, `--timing`. ### Issue Commands ``` sd init Initialize .seeds/ in current directory sd create --title Create a new issue --type task|bug|feature|epic (default: task) --priority 0-4 or P0-P4 (default: 2) --description --assignee --from Provenance: discovered while working on (non-blocking) --intent Link a roots idea (repeatable) sd show Show issue details sd list List issues with filters --status --type --assignee --limit --label