# DevOps Build, test, lint, and CI procedures for {Project Name}. ## Quick Start ```bash make setup # Initialize dev environment make # Show all available targets ``` ## Database The project uses SQLite for ticketing and decision tracking. ### Initialize ```bash tooling/db/sqlite-init ``` ### Query ```bash tooling/db/sqlite-query "SELECT * FROM tickets WHERE status='in_progress'" tooling/db/sqlite-exec "UPDATE tickets SET status='done' WHERE id=1" ``` **Never use the `sqlite3` CLI** — it crashes in Claude Code (std::bad_alloc). Use the wrapper scripts. ### Ticket CLI ```bash tooling/db/ticket list [--status S] [--sprint N] [--team T] tooling/db/ticket show tooling/db/ticket create --title "Title" --team T --priority P tooling/db/ticket assign --agent name ``` ### Sprint CLI ```bash tooling/db/sprint status # Current sprint progress tooling/db/sprint status --team T # Team-scoped view tooling/db/sprint start-work [--team T] # Full context dump for starting work tooling/db/sprint prepare # Prepare next sprint tooling/db/sprint start # Activate a planned sprint tooling/db/sprint stop # Complete an active sprint ``` ## Decision Tracking Decisions live in `decisions/*.md` domain files and sync to SQLite: ```bash make decisions-sync # Parse decisions/*.md into SQLite make decisions-coverage # Decision-to-ticket coverage report make decisions-active # List all active confirmed decisions make decisions-orphan # Decisions without associated tickets ``` ## Document Search (optional) If Qdrant + Ollama are configured for semantic search: ```bash tooling/db/qdrant-health # Check service status tooling/db/qdrant-search "query text" # Semantic search tooling/db/qdrant-index path/to/doc.md # Index a document tooling/db/qdrant-count # Collection stats ``` ## Git Hooks Install hooks: ```bash make setup-hooks ``` Hook directory: `.config/hooks/` The pre-commit hook runs project-specific validation checks. Add new checks by editing `.config/hooks/pre-commit` and adding `run_check` calls. ## Pre-PR Checklist ```bash make pre-pr ``` This runs: 1. Decision sync (ensures SQLite index is current) 2. {Add project-specific checks as needed} ## Sprint Branch Workflow Teams work on ephemeral sprint branches (`sprint-{N}/{team}`). The `start-sprint` script creates worktrees under `.sprint/` for parallel team work: ``` {parent}/ main/ # Permanent — integration branch .sprint/sprint-{N}/{team}/ # Ephemeral — created per sprint, deleted after close {db_name} # Shared ticketing database ``` ### Branch management ```bash # Start sprint session (creates worktrees + terminal tabs) ./start-sprint [sprint-number] # Clean up after sprint close .claude/skills/sprint-start/scripts/sprint-teardown.sh {N} ``` **Protected branches** (never delete): `main`.