Reverts gitignore change. Now using forge SSH URLs for flake inputs
with daemon auto-push, so issues.jsonl stays tracked and synced
while flake locks to stable remote commits.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This repo is consumed as a flake input. Beads daemon auto-commits
to issues.jsonl cause narHash mismatches between nix flake lock
and build.
Also add missing gitignore patterns for daemon runtime files.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document all commands: list-windows, get-text, find-element,
query-state, benchmark. Add common flags section.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- benchmark.py: measures coverage and query performance
- Documents coverage across Ghostty, waybar, vicinae
- Key finding: Firefox not visible to AT-SPI without explicit config
- Query performance: ~1.7s to find buttons across all apps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add opt-in debug logging to all scripts:
- set_debug() and log_debug() in common.py
- --debug flag in all 4 scripts
- Exception handlers now log context via log_debug()
Keeps broad exception catching (needed for AT-SPI stale objects)
but adds visibility when debugging.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Consolidates duplicate find_elements() from find-element.py and query-state.py.
Shared function returns raw accessibles; callers map through their own info extractors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Consolidates duplicate find_windows() from get-text.py and find-element.py
into a shared module. Also adds get_all_windows() helper.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use printf %q to escape arguments before passing through nix-shell --run.
Fixes handling of arguments containing spaces or special characters.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Detailed state querying for UI elements:
- Find focused element with --focused
- Show all state flags with descriptions (--all-states)
- Reports actions, value ranges, text content, caret position
- Human-readable state descriptions
Completes ui-query skill (list-windows, get-text, find-element, query-state)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Search AT-SPI tree for elements by role and/or name:
- Filter by role (button, label, text, menu-item, etc.)
- Filter by name substring (case-insensitive)
- Scope to specific window or app
- Returns position, states, path context
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extracts text content from windows via AT-SPI Text interface:
- Match windows by name pattern or app name
- Traverses accessibility tree to find text elements
- Outputs hierarchical text structure or JSON
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Initial AT-SPI integration for semantic UI access:
- list-windows.py: enumerate windows via accessibility tree
- Wrapper script handles nix dependencies (pyatspi, pygobject3)
- Outputs table or JSON with window geometry and states
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Robust rollback on spawn failure (branch + worktree cleanup)
- Error messages include step context
- Default base branch changed to main
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix rollback to handle partial branch creation (skills-yylq)
- Pre-compute branch/worktree names before createWorktree
- Use gitBranchExists() and dirExists() for robust cleanup
- Add step context to error messages (skills-ux6h)
- Track currentStep through spawn process
- Error now shows which step failed
- Deduplicate success output block (skills-qjln)
- Consolidated to single block with conditional review line
- Simplify use-skills.sh auth symlink (skills-475o)
- One-liner with || instead of nested if
- Fix inconsistent default branch in git.nim (skills-fext)
- Changed default from "origin/integration" to "main"
Closes skills-yylq, skills-ux6h, skills-qjln, skills-475o, skills-fext
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change default base branch from origin/integration to main
- Add --noFetch flag to skip git fetch (for offline/sandbox use)
- Add try/except with rollback on spawn failure
- Improve error message for missing review-gate
- Add Codex auth.json symlink to use-skills.sh
- Include worker orchestration AAR from 2026-01-13
Addresses pain points from worker-orchestration-aar-2026-01-13.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- use-skills.sh: symlink to $CODEX_HOME/skills when CODEX_HOME is set
- docs: update PER-REPO-SKILLS.md and RFC-SKILLS-MANIFEST.md with Codex flow
- hq: add model configuration section (sonnet-4.5, Claude Max)
- hq: update launch commands with explicit --model flag
Closes skills-legi
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add codexSkills option for deploying skills to ~/.codex/skills/
- Follows same pattern as claudeCodeSkills and openCodeSkills
- Dotfiles can now configure: services.ai-skills.codexSkills = [ "worklog" "hq" ];
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>