chore(config): remove $REPO_ROOT env var, use relative paths
Claude Code's CWD is always the worktree root, so all script invocations work with plain relative paths (db/connectors/ticket, db/connectors/qdrant-search, etc.). The REPO_ROOT environment variable and its settings.local.json definitions are no longer needed. Updated: CLAUDE.md, all skill files, qatux agent file. The settings.local.json env sections were also removed across all 9 worktrees (non-git files, edited directly). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -44,7 +44,7 @@ Named after Qatux, the Raiel with perfect memory who helped Paula Myo by recalli
|
||||
- **Work in dedicated round files:** All new rounds happen in `docs/discussions/round-NN-topic.md` from the start. DISCUSSION.md is retired for new content.
|
||||
- **Update the discussion index ONLY when closing:** After a round is formally closed, update `docs/discussions/README.md` with the round entry (number, topic, decisions produced, file link).
|
||||
- **Update briefings:** After a round produces new decisions, update the relevant agent briefing files in `docs/briefings/`.
|
||||
- **Re-index documents:** After archiving or updating documents, re-index them in Qdrant via `python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file <path>`.
|
||||
- **Re-index documents:** After archiving or updating documents, re-index them in Qdrant via `db/connectors/qdrant-index <path>`.
|
||||
|
||||
## Team workflow (mandatory)
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ file so the team knows who to spawn.
|
||||
### 1. Determine sprint number
|
||||
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" sprint --active
|
||||
db/connectors/ticket sprint --active
|
||||
```
|
||||
|
||||
Next sprint = active sprint ID + 1. If no active sprint, ask the user.
|
||||
@@ -66,8 +66,8 @@ Next sprint = active sprint ID + 1. If no active sprint, ask the user.
|
||||
Review the active sprint for carry-overs:
|
||||
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" list --sprint <current_id> --status in_progress
|
||||
"$REPO_ROOT/db/connectors/ticket" list --sprint <current_id> --status ready
|
||||
db/connectors/ticket list --sprint <current_id> --status in_progress
|
||||
db/connectors/ticket list --sprint <current_id> --status ready
|
||||
```
|
||||
|
||||
Any ticket not `done` is a potential carry-over. Note these for the briefing.
|
||||
@@ -77,16 +77,16 @@ Any ticket not `done` is a potential carry-over. Note these for the briefing.
|
||||
Pull candidate tickets by priority:
|
||||
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" epics --status backlog
|
||||
db/connectors/ticket epics --status backlog
|
||||
```
|
||||
|
||||
For critical epics, check their children:
|
||||
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" children <epic_id>
|
||||
db/connectors/ticket children <epic_id>
|
||||
```
|
||||
|
||||
Use `"$REPO_ROOT/db/connectors/ticket" show --brief <id> [<id>...]` to quickly scan multiple tickets.
|
||||
Use `db/connectors/ticket show --brief <id> [<id>...]` to quickly scan multiple tickets.
|
||||
|
||||
### 4. Read existing code state
|
||||
|
||||
@@ -154,10 +154,10 @@ After the user approves, assign all selected tickets to the new sprint:
|
||||
|
||||
```bash
|
||||
# Create the sprint
|
||||
"$REPO_ROOT/db/connectors/sqlite-exec" "INSERT INTO sprints (name, goal, status) VALUES ('Sprint N: Theme', 'goal', 'planned')"
|
||||
db/connectors/sqlite-exec "INSERT INTO sprints (name, goal, status) VALUES ('Sprint N: Theme', 'goal', 'planned')"
|
||||
|
||||
# Assign tickets
|
||||
"$REPO_ROOT/db/connectors/ticket" sprint assign <ticket_id> <sprint_id>
|
||||
db/connectors/ticket sprint assign <ticket_id> <sprint_id>
|
||||
```
|
||||
|
||||
### 9. Present summary
|
||||
|
||||
@@ -26,7 +26,7 @@ Each team gets one briefing file at `docs/sprints/sprint-N/<team>.md`.
|
||||
|---|-------|------------|
|
||||
| #ID | Title | #dependency or — |
|
||||
|
||||
Use `"$REPO_ROOT/db/connectors/ticket" show <id>` for full details.
|
||||
Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ If the diff is empty, report "No changes to review" and stop.
|
||||
- `Cargo.lock` (auto-generated)
|
||||
- `client/addons/gdUnit4/` (vendor test framework)
|
||||
- `*.uid` (Godot-generated)
|
||||
- `db/commonwealth.db` (binary)
|
||||
- `docs/backups/settledreach.db.backup` (binary)
|
||||
|
||||
Three-dot diff with pathspec exclusions is unreliable. Instead, either:
|
||||
1. Use `git diff main...<branch>` (full diff) and filter in the prompt, or
|
||||
|
||||
@@ -14,10 +14,17 @@ Semantic search across Commonwealth project documents using Qdrant vector databa
|
||||
|
||||
## Access Method
|
||||
|
||||
**Use the connector script.** The `$REPO_ROOT` environment variable is pre-set
|
||||
per worktree — always use it as a prefix:
|
||||
**Use the connector wrapper scripts:**
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" <command> [args]
|
||||
db/connectors/qdrant-search "query text"
|
||||
db/connectors/qdrant-index <file>
|
||||
db/connectors/qdrant-health
|
||||
db/connectors/qdrant-count
|
||||
```
|
||||
|
||||
Or the Python script directly:
|
||||
```bash
|
||||
python3 db/connectors/qdrant_connector.py <command> [args]
|
||||
```
|
||||
|
||||
## Commands
|
||||
@@ -25,9 +32,9 @@ python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" <command> [args]
|
||||
### Search
|
||||
Find documents semantically related to a query:
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" search "asymmetric information design"
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" search "what did we decide about fog of war"
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" search "engine requirements"
|
||||
db/connectors/qdrant-search "asymmetric information design"
|
||||
db/connectors/qdrant-search "what did we decide about fog of war"
|
||||
db/connectors/qdrant-search "engine requirements"
|
||||
```
|
||||
|
||||
Returns top 5 matching document chunks with source file, heading, and relevance score.
|
||||
@@ -35,10 +42,10 @@ Returns top 5 matching document chunks with source file, heading, and relevance
|
||||
### Index a file
|
||||
Add or update a document in the search index:
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file decisions/architecture.md
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file decisions/perception.md
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file docs/discussions/round-10-map-fog-borderless.md
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file docs/briefings/tyre.md
|
||||
db/connectors/qdrant-index decisions/architecture.md
|
||||
db/connectors/qdrant-index decisions/perception.md
|
||||
db/connectors/qdrant-index docs/discussions/round-10-map-fog-borderless.md
|
||||
db/connectors/qdrant-index docs/briefings/tyre.md
|
||||
```
|
||||
|
||||
Files are chunked by markdown headings (# and ##). Each chunk is embedded via ollama and stored in Qdrant with metadata (source_file, heading, chunk_index).
|
||||
@@ -46,25 +53,25 @@ Files are chunked by markdown headings (# and ##). Each chunk is embedded via ol
|
||||
### Index a single chunk
|
||||
For precise indexing of specific content:
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index "unique-id" "Text content to index" --metadata source=manual heading="Custom heading"
|
||||
python3 db/connectors/qdrant_connector.py index "unique-id" "Text content to index" --metadata source=manual heading="Custom heading"
|
||||
```
|
||||
|
||||
### Health check
|
||||
Verify connectivity to Qdrant and ollama:
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" health
|
||||
db/connectors/qdrant-health
|
||||
```
|
||||
|
||||
### Collection info
|
||||
Check how many documents are indexed:
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" count
|
||||
db/connectors/qdrant-count
|
||||
```
|
||||
|
||||
### Create collection
|
||||
Initialize the Qdrant collection (run once during setup):
|
||||
```bash
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" create-collection
|
||||
python3 db/connectors/qdrant_connector.py create-collection
|
||||
```
|
||||
|
||||
## Endpoints
|
||||
@@ -93,7 +100,7 @@ grep -r -i "search term" decisions/ DISCUSSION.md docs/ --include="*.md"
|
||||
## Bulk indexing
|
||||
To index all project documents at once:
|
||||
```bash
|
||||
for f in "$REPO_ROOT"/decisions/*.md "$REPO_ROOT"/DISCUSSION.md "$REPO_ROOT"/TEAM.md "$REPO_ROOT"/docs/discussions/*.md "$REPO_ROOT"/docs/briefings/*.md; do
|
||||
python3 "$REPO_ROOT/db/connectors/qdrant_connector.py" index-file "$f"
|
||||
for f in decisions/*.md DISCUSSION.md TEAM.md docs/discussions/*.md docs/briefings/*.md; do
|
||||
db/connectors/qdrant-index "$f"
|
||||
done
|
||||
```
|
||||
|
||||
@@ -14,19 +14,6 @@ allowed-tools: Bash, Read, Grep, Glob
|
||||
Prepare a team branch for sprint work: sync with main, load the sprint
|
||||
briefing, and present actionable next steps.
|
||||
|
||||
## Path resolution (CRITICAL)
|
||||
|
||||
This project uses **git worktrees**. Each team branch is a separate directory.
|
||||
All file paths MUST use `$REPO_ROOT` as a prefix — this environment variable
|
||||
is pre-set in each worktree's `.claude/settings.local.json`.
|
||||
|
||||
- Ticket CLI: `"$REPO_ROOT/db/connectors/ticket"`
|
||||
- Sprint briefings: `"$REPO_ROOT/docs/sprints/sprint-N/<team>.md"`
|
||||
- Decision files: `"$REPO_ROOT/decisions/*.md"`
|
||||
|
||||
**Never use bare relative paths** like `db/connectors/ticket` — they break
|
||||
when the shell's CWD doesn't match the worktree root.
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Determine the team
|
||||
@@ -51,7 +38,7 @@ If the merge has conflicts, report them and stop — do not force-resolve.
|
||||
### 3. Find the active sprint
|
||||
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" sprint --active
|
||||
db/connectors/ticket sprint --active
|
||||
```
|
||||
|
||||
Extract the sprint ID and name from the JSON output. If no active sprint,
|
||||
@@ -59,7 +46,7 @@ report that and stop.
|
||||
|
||||
### 4. Read the sprint briefing
|
||||
|
||||
Read `$REPO_ROOT/docs/sprints/sprint-N/<team>.md` where N is the sprint ID
|
||||
Read `docs/sprints/sprint-N/<team>.md` where N is the sprint ID
|
||||
and team matches the branch name (e.g. `server.md`, `client.md`, `copy.md`).
|
||||
If no matching briefing exists for the team, report that and suggest running
|
||||
`/plan-sprint` to generate one.
|
||||
@@ -71,7 +58,7 @@ should be mentioned.
|
||||
|
||||
For each ticket listed in the briefing, run:
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" show <id>
|
||||
db/connectors/ticket show <id>
|
||||
```
|
||||
|
||||
Identify which tickets are actionable now (no open blockers) vs blocked.
|
||||
|
||||
@@ -10,15 +10,14 @@ allowed-tools: Bash, Read, Grep, Glob
|
||||
|
||||
# Ticket Skill
|
||||
|
||||
Manage the Commonwealth project ticketing database at `db/commonwealth.db`.
|
||||
Manage the project ticketing database (shared `settledreach.db` in the worktree parent directory).
|
||||
|
||||
## Access Method
|
||||
|
||||
**Use the `ticket` CLI for all ticket operations.** The `$REPO_ROOT` environment
|
||||
variable is pre-set per worktree — always use it as a prefix:
|
||||
**Use the `ticket` CLI for all ticket operations:**
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" <command> [args...]
|
||||
"$REPO_ROOT/db/connectors/ticket" --help
|
||||
db/connectors/ticket <command> [args...]
|
||||
db/connectors/ticket --help
|
||||
```
|
||||
|
||||
All output is JSON on stdout.
|
||||
@@ -26,67 +25,67 @@ All output is JSON on stdout.
|
||||
For raw SQL access (rare), use the wrapper scripts:
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| `"$REPO_ROOT/db/connectors/sqlite-query" "<SQL>"` | Run SELECT queries |
|
||||
| `"$REPO_ROOT/db/connectors/sqlite-exec" "<SQL>"` | Run INSERT/UPDATE/DELETE |
|
||||
| `"$REPO_ROOT/db/connectors/sqlite-init"` | Create/update database from schema |
|
||||
| `"$REPO_ROOT/db/connectors/sqlite-seed"` | Seed initiatives from DECISIONS.md |
|
||||
| `db/connectors/sqlite-query "<SQL>"` | Run SELECT queries |
|
||||
| `db/connectors/sqlite-exec "<SQL>"` | Run INSERT/UPDATE/DELETE |
|
||||
| `db/connectors/sqlite-init` | Create/update database from schema |
|
||||
| `db/connectors/sqlite-seed` | Seed initiatives from DECISIONS.md |
|
||||
|
||||
## Commands
|
||||
|
||||
### List tickets
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" list [--status S] [--priority P] [--epic N] [--sprint N] [--assigned A] [--team T]
|
||||
db/connectors/ticket list [--status S] [--priority P] [--epic N] [--sprint N] [--assigned A] [--team T]
|
||||
```
|
||||
|
||||
### Show ticket detail
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" show <id>
|
||||
db/connectors/ticket show <id>
|
||||
```
|
||||
Returns full ticket with children, blockers, and dependents.
|
||||
|
||||
### Create ticket
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" create <type> <title> [--parent N] [--priority P] [--decision D] [--team T]
|
||||
db/connectors/ticket create <type> <title> [--parent N] [--priority P] [--decision D] [--team T]
|
||||
```
|
||||
Types: `initiative`, `epic`, `story`, `task`, `bug`
|
||||
Priorities: `critical`, `high`, `medium`, `low`
|
||||
|
||||
### Update status
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" status <id> <new_status>
|
||||
"$REPO_ROOT/db/connectors/ticket" done <id> [<id> ...]
|
||||
db/connectors/ticket status <id> <new_status>
|
||||
db/connectors/ticket done <id> [<id> ...]
|
||||
```
|
||||
Statuses: `backlog`, `ready`, `in_progress`, `review`, `done`, `cancelled`
|
||||
|
||||
### Assignment
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" assign <id> <agent>
|
||||
"$REPO_ROOT/db/connectors/ticket" unassign <id>
|
||||
db/connectors/ticket assign <id> <agent>
|
||||
db/connectors/ticket unassign <id>
|
||||
```
|
||||
|
||||
### Team assignment
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" team <id> <teams>
|
||||
db/connectors/ticket team <id> <teams>
|
||||
```
|
||||
Teams are comma-separated, e.g. `server`, `client`, `server,client`.
|
||||
|
||||
### Sprint management
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" sprint [--active]
|
||||
"$REPO_ROOT/db/connectors/ticket" sprint assign <id> <sprint_id>
|
||||
db/connectors/ticket sprint [--active]
|
||||
db/connectors/ticket sprint assign <id> <sprint_id>
|
||||
```
|
||||
|
||||
### Dependencies
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" deps <id>
|
||||
db/connectors/ticket deps <id>
|
||||
```
|
||||
|
||||
### Search and browse
|
||||
```bash
|
||||
"$REPO_ROOT/db/connectors/ticket" search <keyword>
|
||||
"$REPO_ROOT/db/connectors/ticket" epics [--status S]
|
||||
"$REPO_ROOT/db/connectors/ticket" children <id>
|
||||
"$REPO_ROOT/db/connectors/ticket" count [--status S]
|
||||
db/connectors/ticket search <keyword>
|
||||
db/connectors/ticket epics [--status S]
|
||||
db/connectors/ticket children <id>
|
||||
db/connectors/ticket count [--status S]
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
Reference in New Issue
Block a user