version: '3' vars: PROJECT_NAME: '{{.PROJECT_NAME | default "myproject"}}' tasks: context:sync: desc: Regenerate all harness-specific context files cmds: - bash scripts/context-sync.sh sources: - .context/PROJECT.md - .skills/*/SKILL.md context:sync:claude: cmds: [bash scripts/context-sync.sh claude] context:sync:agents: cmds: [bash scripts/context-sync.sh agents] context:sync:cursor: cmds: [bash scripts/context-sync.sh cursor] dev: desc: Start development server cmds: - go run ./cmd/server build: desc: Build the binary cmds: - go build -o bin/{{.PROJECT_NAME}} ./cmd/server check: desc: Run all checks (lint + test + vet) cmds: - task: lint - task: test - task: vet lint: cmds: [golangci-lint run ./...] test: cmds: [go test -race -count=1 ./...] vet: cmds: - go vet ./... - govulncheck ./... || true up: desc: Start containers cmds: [docker compose up -d] down: cmds: [docker compose down] init: desc: Initialize a new project from this template cmds: - bash scripts/init.sh supervisor:dev: desc: Run supervisor MCP server (development) cmds: - go run ./cmd/supervisor supervisor:build: desc: Build supervisor binary cmds: - go build -o bin/supervisor ./cmd/supervisor supervisor:test:smoke: desc: Smoke test supervisor via MCP (requires supervisor:dev running) cmds: - | curl -s -X POST http://localhost:${SUPERVISOR_PORT:-3200}/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq . start: desc: Start the full hyperguild (ingestion + supervisor) in a tmux session cmds: - | tmux new-session -d -s hyperguild -x 220 -y 50 2>/dev/null || true tmux rename-window -t hyperguild:0 'ingestion' tmux send-keys -t hyperguild:ingestion "cd {{.ROOT_DIR}} && INGEST_BRAIN_DIR={{.ROOT_DIR}}/brain INGEST_PORT=3300 go run ./ingestion/cmd/server/" Enter tmux new-window -t hyperguild -n 'supervisor' tmux send-keys -t hyperguild:supervisor "cd {{.ROOT_DIR}} && SUPERVISOR_CONFIG_DIR={{.ROOT_DIR}}/config/supervisor SUPERVISOR_MODELS_FILE={{.ROOT_DIR}}/config/models.yaml SUPERVISOR_SESSIONS_DIR={{.ROOT_DIR}}/brain/sessions INGEST_BASE_URL=http://localhost:3300 go run ./cmd/supervisor/" Enter tmux new-window -t hyperguild -n 'shell' tmux select-window -t hyperguild:shell tmux attach -t hyperguild stop: desc: Stop the hyperguild tmux session cmds: - tmux kill-session -t hyperguild 2>/dev/null || true - echo "hyperguild stopped" ingestion:build: desc: Build ingestion server binary cmds: - go build -o bin/ingestion-server ./cmd/server dir: ingestion ingestion:dev: desc: Run ingestion server in development mode env: INGEST_BRAIN_DIR: "{{.ROOT_DIR}}/brain" INGEST_PORT: "3300" cmds: - go run ./cmd/server dir: ingestion ingestion:test: desc: Run ingestion tests cmds: - go test ./... -v dir: ingestion