bd sync: 2026-01-15 20:33:36
This commit is contained in:
parent
75f1c0bee0
commit
1bfbb2b30a
|
|
@ -1,6 +1,6 @@
|
||||||
{"id":"skills-05ah","title":"Define error handling strategy and apply consistently","description":"Establish consistent error handling pattern:\n\n1. Define strategy:\n - Boundary operations wrap errors with context (file, taskId, operation)\n - Use existing exception types (GitError, DbError, etc.)\n - Log to stderr with consistent format: 'ERROR: {operation}: {message}'\n\n2. Apply to:\n - db.nim: poll() JSON parsing, openBusDb(), tryClaim()\n - git.nim: fetch failures, cleanup operations\n - context.nim: writeContext(), readContext()\n - state.nim: parseState() calls\n - heartbeat.nim: thread startup\n\nConsolidates: skills-xcl, skills-266, skills-8xv, skills-8vdo, skills-n6zf, skills-tdfm, skills-koes, skills-xgh0, skills-8bi, skills-2wjp, skills-3uv9\n\nParent: skills-g2wa","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T20:18:49.538009153-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.729200121-08:00","closed_at":"2026-01-10T20:37:04.729200121-08:00","close_reason":"Implemented consistent error handling strategy"}
|
{"id":"skills-05ah","title":"Define error handling strategy and apply consistently","description":"Establish consistent error handling pattern:\n\n1. Define strategy:\n - Boundary operations wrap errors with context (file, taskId, operation)\n - Use existing exception types (GitError, DbError, etc.)\n - Log to stderr with consistent format: 'ERROR: {operation}: {message}'\n\n2. Apply to:\n - db.nim: poll() JSON parsing, openBusDb(), tryClaim()\n - git.nim: fetch failures, cleanup operations\n - context.nim: writeContext(), readContext()\n - state.nim: parseState() calls\n - heartbeat.nim: thread startup\n\nConsolidates: skills-xcl, skills-266, skills-8xv, skills-8vdo, skills-n6zf, skills-tdfm, skills-koes, skills-xgh0, skills-8bi, skills-2wjp, skills-3uv9\n\nParent: skills-g2wa","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T20:18:49.538009153-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.729200121-08:00","closed_at":"2026-01-10T20:37:04.729200121-08:00","close_reason":"Implemented consistent error handling strategy"}
|
||||||
{"id":"skills-0dxd","title":"Define StaleLevel enum instead of string returns","description":"[EVOLVE] LOW state.nim:225-241 - staleLevel() returns strings ('ok','WARN','STALE','DEAD') instead of enum. Define StaleLevel enum in types.nim for type safety.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:53.935566122-08:00","created_by":"dan","updated_at":"2026-01-10T19:49:53.935566122-08:00"}
|
{"id":"skills-0dxd","title":"Define StaleLevel enum instead of string returns","description":"[EVOLVE] LOW state.nim:225-241 - staleLevel() returns strings ('ok','WARN','STALE','DEAD') instead of enum. Define StaleLevel enum in types.nim for type safety.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:53.935566122-08:00","created_by":"dan","updated_at":"2026-01-10T19:49:53.935566122-08:00"}
|
||||||
{"id":"skills-0f1","title":"Per-repo LSP profiles in Nix flakes","description":"Define language servers, versions, and settings pinned per repo in flake.nix.\n\nBenefits:\n- Claude Code LSP becomes deterministic across machines/CI\n- CI can run headless LSP diagnostics as first-class check\n- Ephemeral LS sandboxes for experimental refactors\n\nExample: pin rust-analyzer version per project to avoid skill breakage.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-24T02:29:57.353003052-05:00","updated_at":"2025-12-24T02:29:57.353003052-05:00","dependencies":[{"issue_id":"skills-0f1","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.696967182-05:00","created_by":"daemon"}]}
|
{"id":"skills-0f1","title":"Per-repo LSP profiles in Nix flakes","description":"Define language servers, versions, and settings pinned per repo in flake.nix.\n\nBenefits:\n- Claude Code LSP becomes deterministic across machines/CI\n- CI can run headless LSP diagnostics as first-class check\n- Ephemeral LS sandboxes for experimental refactors\n\nExample: pin rust-analyzer version per project to avoid skill breakage.","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-24T02:29:57.353003052-05:00","updated_at":"2026-01-15T19:19:23.230453595-08:00","dependencies":[{"issue_id":"skills-0f1","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.696967182-05:00","created_by":"daemon"},{"issue_id":"skills-0f1","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:28.006038023-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-0nl","title":"Update orch skill to match CLI v0.1.0","description":"The orch skill (in ~/.claude/skills/orch/) is out of sync with the orch CLI.\n\nNeeded updates:\n- Fix model aliases: gpt-5 → gpt-5.2, claude-opus-4.1 → claude-opus-4.5\n- Add new aliases: deepseek, r1, qwen, qwen-fast, glm, sonar, sonar-pro\n- Document --synthesize flag for response aggregation\n- Document stdin piping support\n- Document orch models command\n- Document orch sessions command\n- Add --websearch, --serial, --allow-expensive options\n\nReference: ~/proj/orch/README.md and src/orch/models_registry.py","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T21:11:46.294285184-05:00","updated_at":"2025-12-24T01:29:54.408882125-05:00","closed_at":"2025-12-24T01:29:54.408882125-05:00","close_reason":"Updated skill with current CLI features and model aliases"}
|
{"id":"skills-0nl","title":"Update orch skill to match CLI v0.1.0","description":"The orch skill (in ~/.claude/skills/orch/) is out of sync with the orch CLI.\n\nNeeded updates:\n- Fix model aliases: gpt-5 → gpt-5.2, claude-opus-4.1 → claude-opus-4.5\n- Add new aliases: deepseek, r1, qwen, qwen-fast, glm, sonar, sonar-pro\n- Document --synthesize flag for response aggregation\n- Document stdin piping support\n- Document orch models command\n- Document orch sessions command\n- Add --websearch, --serial, --allow-expensive options\n\nReference: ~/proj/orch/README.md and src/orch/models_registry.py","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T21:11:46.294285184-05:00","updated_at":"2025-12-24T01:29:54.408882125-05:00","closed_at":"2025-12-24T01:29:54.408882125-05:00","close_reason":"Updated skill with current CLI features and model aliases"}
|
||||||
{"id":"skills-0og","title":"spec-review: Define output capture and audit trail","description":"Reviews happen in terminal then disappear. No audit trail, no diffable history.\n\nAdd:\n- Guidance to tee output to review file (e.g., specs/{branch}/review.md)\n- Standard location for gate check results\n- Template for recording decisions and rationale","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:23.705164812-08:00","updated_at":"2025-12-15T13:02:32.313084337-08:00","closed_at":"2025-12-15T13:02:32.313084337-08:00"}
|
{"id":"skills-0og","title":"spec-review: Define output capture and audit trail","description":"Reviews happen in terminal then disappear. No audit trail, no diffable history.\n\nAdd:\n- Guidance to tee output to review file (e.g., specs/{branch}/review.md)\n- Standard location for gate check results\n- Template for recording decisions and rationale","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:23.705164812-08:00","updated_at":"2025-12-15T13:02:32.313084337-08:00","closed_at":"2025-12-15T13:02:32.313084337-08:00"}
|
||||||
{"id":"skills-0tk","title":"Evaluate: jwz for transient agent state","description":"Evaluate jwz as complement to beads for agent coordination.\n\n## Current Understanding\n- beads: persistent issues (multi-session, dependencies)\n- jwz: transient messages (session coordination, async)\n\n## Questions to Answer\n1. Does jwz add value beyond what beads provides?\n2. Is the Zig dependency acceptable?\n3. Can we achieve same with simpler file-based approach?\n4. How does jwz handle multi-repo coordination?\n\n## Evaluation Criteria\n- Complexity vs benefit\n- Cross-agent compatibility\n- Git integration quality\n- Maintenance burden\n\n## Deliverable\nRecommendation: adopt jwz, build alternative, or extend beads","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-09T19:01:44.672000734-08:00","created_by":"dan","updated_at":"2026-01-09T19:01:44.672000734-08:00"}
|
{"id":"skills-0tk","title":"Evaluate: jwz for transient agent state","description":"Evaluate jwz as complement to beads for agent coordination.\n\n## Current Understanding\n- beads: persistent issues (multi-session, dependencies)\n- jwz: transient messages (session coordination, async)\n\n## Questions to Answer\n1. Does jwz add value beyond what beads provides?\n2. Is the Zig dependency acceptable?\n3. Can we achieve same with simpler file-based approach?\n4. How does jwz handle multi-repo coordination?\n\n## Evaluation Criteria\n- Complexity vs benefit\n- Cross-agent compatibility\n- Git integration quality\n- Maintenance burden\n\n## Deliverable\nRecommendation: adopt jwz, build alternative, or extend beads","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-09T19:01:44.672000734-08:00","created_by":"dan","updated_at":"2026-01-09T19:01:44.672000734-08:00"}
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
{"id":"skills-16zf","title":"Check for symlinks before reading context file","description":"[SECURITY] MED context.nim:21,31 - readFile follows symlinks, could read arbitrary files if .worker-ctx.json is symlinked. Check that path is regular file before reading.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:10:03.403878355-08:00","created_by":"dan","updated_at":"2026-01-10T20:55:02.344845949-08:00","closed_at":"2026-01-10T20:55:02.344845949-08:00","close_reason":"P2 bugs fixed"}
|
{"id":"skills-16zf","title":"Check for symlinks before reading context file","description":"[SECURITY] MED context.nim:21,31 - readFile follows symlinks, could read arbitrary files if .worker-ctx.json is symlinked. Check that path is regular file before reading.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:10:03.403878355-08:00","created_by":"dan","updated_at":"2026-01-10T20:55:02.344845949-08:00","closed_at":"2026-01-10T20:55:02.344845949-08:00","close_reason":"P2 bugs fixed"}
|
||||||
{"id":"skills-17f","title":"Ensure git access to both local Forgejo and ops-jrz1 Forgejo","description":"Need reliable access to both git servers for plugin development and deployment:\n\n**Local Forgejo (home):**\n- URL: http://192.168.1.108:3000\n- Currently down/unreachable at times\n- Used for skills repo remote\n\n**ops-jrz1 Forgejo (VPS):**\n- URL: https://git.clarun.xyz\n- Production server\n- Target for emes plugin deployment\n\n**Tasks:**\n- Verify local Forgejo is running (systemctl status)\n- Add ops-jrz1 as additional remote for skills repo\n- Consider mirroring skills repo to both\n- Document which forge is source of truth","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T11:14:52.639492685-08:00","created_by":"dan","updated_at":"2026-01-09T16:57:16.417563927-08:00","closed_at":"2026-01-09T16:57:16.417563927-08:00","close_reason":"Multi-push configured: origin pushes to both local and clarun Forgejos"}
|
{"id":"skills-17f","title":"Ensure git access to both local Forgejo and ops-jrz1 Forgejo","description":"Need reliable access to both git servers for plugin development and deployment:\n\n**Local Forgejo (home):**\n- URL: http://192.168.1.108:3000\n- Currently down/unreachable at times\n- Used for skills repo remote\n\n**ops-jrz1 Forgejo (VPS):**\n- URL: https://git.clarun.xyz\n- Production server\n- Target for emes plugin deployment\n\n**Tasks:**\n- Verify local Forgejo is running (systemctl status)\n- Add ops-jrz1 as additional remote for skills repo\n- Consider mirroring skills repo to both\n- Document which forge is source of truth","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T11:14:52.639492685-08:00","created_by":"dan","updated_at":"2026-01-09T16:57:16.417563927-08:00","closed_at":"2026-01-09T16:57:16.417563927-08:00","close_reason":"Multi-push configured: origin pushes to both local and clarun Forgejos"}
|
||||||
{"id":"skills-1ig","title":"Brainstorm agent-friendly doc conventions","description":"# Agent-Friendly Doc Conventions - Hybrid Architecture\n\n## FINAL ARCHITECTURE: Vale + LLM Hybrid\n\n### Insight\n\u003e \"Good old deterministic testing (dumb robots) is the best way to keep in check LLMs (smart robots) at volume.\"\n\n### Split by Tool\n\n| Category | Rubrics | Tool |\n|----------|---------|------|\n| Vale-only | Format Integrity, Deterministic Instructions, Terminology Strictness, Token Efficiency | Fast, deterministic, CI-friendly |\n| Vale + LLM | Semantic Headings, Configuration Precision, Security Boundaries | Vale flags, LLM suggests fixes |\n| LLM-only | Contextual Independence, Code Executability, Execution Verification | Semantic understanding required |\n\n### Pipeline\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 1: Vale (deterministic, fast, free) │\n│ - Runs in CI on every commit │\n│ - Catches 40% of issues instantly │\n│ - No LLM cost for clean docs │\n└─────────────────────┬───────────────────────────────────────┘\n │ only if Vale passes\n ▼\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 2: LLM Triage (cheap model) │\n│ - Evaluates 3 semantic rubrics │\n│ - Identifies which need patches │\n└─────────────────────┬───────────────────────────────────────┘\n │ only if issues found\n ▼\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 3: LLM Specialists (capable model) │\n│ - One agent per failed rubric │\n│ - Generates patches │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Why This Works\n- Vale is battle-tested, fast, CI-native\n- LLM only fires when needed (adaptive cost)\n- Deterministic rules catch predictable issues\n- LLM handles semantic/contextual issues\n\n---\n\n## Vale Rules Needed\n\n### Format Integrity\n- Existence: code blocks without language tags\n- Regex for unclosed fences\n\n### Deterministic Instructions \n- Existence: hedging words (\"might\", \"may want to\", \"consider\", \"you could\")\n\n### Terminology Strictness\n- Consistency: flag term variations\n\n### Token Efficiency\n- Existence: filler phrases (\"In this section we will...\", \"As you may know...\")\n\n### Semantic Headings (partial)\n- Existence: banned headings (\"Overview\", \"Introduction\", \"Getting Started\")\n\n### Configuration Precision (partial)\n- Existence: vague versions (\"Python 3.x\", \"recent version\")\n\n### Security Boundaries (partial)\n- Existence: hardcoded API key patterns\n\n---\n\n## NEXT STEPS\n\n1. Create Vale style for doc-review rubrics\n2. Test Vale on sample docs\n3. Design LLM prompts for semantic rubrics only\n4. Wire into orch or standalone","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T14:02:04.898026177-08:00","updated_at":"2025-12-04T16:43:53.0608948-08:00","closed_at":"2025-12-04T16:43:53.0608948-08:00"}
|
{"id":"skills-1ig","title":"Brainstorm agent-friendly doc conventions","description":"# Agent-Friendly Doc Conventions - Hybrid Architecture\n\n## FINAL ARCHITECTURE: Vale + LLM Hybrid\n\n### Insight\n\u003e \"Good old deterministic testing (dumb robots) is the best way to keep in check LLMs (smart robots) at volume.\"\n\n### Split by Tool\n\n| Category | Rubrics | Tool |\n|----------|---------|------|\n| Vale-only | Format Integrity, Deterministic Instructions, Terminology Strictness, Token Efficiency | Fast, deterministic, CI-friendly |\n| Vale + LLM | Semantic Headings, Configuration Precision, Security Boundaries | Vale flags, LLM suggests fixes |\n| LLM-only | Contextual Independence, Code Executability, Execution Verification | Semantic understanding required |\n\n### Pipeline\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 1: Vale (deterministic, fast, free) │\n│ - Runs in CI on every commit │\n│ - Catches 40% of issues instantly │\n│ - No LLM cost for clean docs │\n└─────────────────────┬───────────────────────────────────────┘\n │ only if Vale passes\n ▼\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 2: LLM Triage (cheap model) │\n│ - Evaluates 3 semantic rubrics │\n│ - Identifies which need patches │\n└─────────────────────┬───────────────────────────────────────┘\n │ only if issues found\n ▼\n┌─────────────────────────────────────────────────────────────┐\n│ Stage 3: LLM Specialists (capable model) │\n│ - One agent per failed rubric │\n│ - Generates patches │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Why This Works\n- Vale is battle-tested, fast, CI-native\n- LLM only fires when needed (adaptive cost)\n- Deterministic rules catch predictable issues\n- LLM handles semantic/contextual issues\n\n---\n\n## Vale Rules Needed\n\n### Format Integrity\n- Existence: code blocks without language tags\n- Regex for unclosed fences\n\n### Deterministic Instructions \n- Existence: hedging words (\"might\", \"may want to\", \"consider\", \"you could\")\n\n### Terminology Strictness\n- Consistency: flag term variations\n\n### Token Efficiency\n- Existence: filler phrases (\"In this section we will...\", \"As you may know...\")\n\n### Semantic Headings (partial)\n- Existence: banned headings (\"Overview\", \"Introduction\", \"Getting Started\")\n\n### Configuration Precision (partial)\n- Existence: vague versions (\"Python 3.x\", \"recent version\")\n\n### Security Boundaries (partial)\n- Existence: hardcoded API key patterns\n\n---\n\n## NEXT STEPS\n\n1. Create Vale style for doc-review rubrics\n2. Test Vale on sample docs\n3. Design LLM prompts for semantic rubrics only\n4. Wire into orch or standalone","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T14:02:04.898026177-08:00","updated_at":"2025-12-04T16:43:53.0608948-08:00","closed_at":"2025-12-04T16:43:53.0608948-08:00"}
|
||||||
{"id":"skills-1jc","title":"Design: Stuck agent detection (Rubber Duck)","description":"Detect non-progress and force clarification.\n\n## Pattern (from GPT/Gemini brainstorm)\nTrack:\n- repeated tool calls (same command 3x)\n- identical errors\n- no diff delta\n- no new hypotheses\n\nWhen triggered, force protocol:\n1. Write down 3 hypotheses\n2. Run one discriminating experiment per hypothesis\n3. If no new info → escalate\n\n## Rubber Duck variant\nOn stuck: force agent to explain problem in 200 tokens to dumber model.\nIf can't explain coherently → escalate to human.\nCompression reveals the flaw.\n\n## Abstraction Elevator variant\nStuck on syntax → force to pseudocode\nStuck on logic → force to explain with analogies\n\n## Implementation\n- worker stuck X - detect non-progress\n- Check .worker-state/X.log for repeated patterns\n- Inject 'rubber duck' prompt if stuck\n- Circuit breaker after N attempts","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:51.130472999-08:00","created_by":"dan","updated_at":"2026-01-10T12:14:51.130472999-08:00","dependencies":[{"issue_id":"skills-1jc","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.15494718-08:00","created_by":"dan"}]}
|
{"id":"skills-1jc","title":"Design: Stuck agent detection (Rubber Duck)","description":"Detect non-progress and force clarification.\n\n## Pattern (from GPT/Gemini brainstorm)\nTrack:\n- repeated tool calls (same command 3x)\n- identical errors\n- no diff delta\n- no new hypotheses\n\nWhen triggered, force protocol:\n1. Write down 3 hypotheses\n2. Run one discriminating experiment per hypothesis\n3. If no new info → escalate\n\n## Rubber Duck variant\nOn stuck: force agent to explain problem in 200 tokens to dumber model.\nIf can't explain coherently → escalate to human.\nCompression reveals the flaw.\n\n## Abstraction Elevator variant\nStuck on syntax → force to pseudocode\nStuck on logic → force to explain with analogies\n\n## Implementation\n- worker stuck X - detect non-progress\n- Check .worker-state/X.log for repeated patterns\n- Inject 'rubber duck' prompt if stuck\n- Circuit breaker after N attempts","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:51.130472999-08:00","created_by":"dan","updated_at":"2026-01-15T20:33:20.935654328-08:00","closed_at":"2026-01-15T20:33:20.935654328-08:00","close_reason":"Merged into skills-ya3n (stale worker salvage)","dependencies":[{"issue_id":"skills-1jc","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.15494718-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-1ks","title":"Dual-publish pattern: Convert remaining skills","description":"Convert skills to dual-publish pattern (Nix + Claude plugin):\n\n**Pattern established with orch:**\n- Keep SKILL.md at root (Nix deployment)\n- Add .claude-plugin/plugin.json (Claude marketplace)\n- Copy to skills/\u003cname\u003e.md (Claude auto-discovery)\n\n**Skills to convert:**\n- [ ] worklog\n- [ ] code-review (has lenses dependency)\n- [ ] ops-review (has lenses dependency)\n- [ ] playwright-visit\n- [ ] screenshot-latest\n- [ ] niri-window-capture\n- [ ] web-search\n- [ ] web-research\n\n**Why dual-publish:**\n- Cross-agent support (Gemini, OpenCode can't use Claude plugins)\n- Nix provides system-level deployment\n- Claude plugin system provides hooks, marketplace discovery\n- See skills-bo8 for Gemini path restriction issue","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T11:20:47.271151803-08:00","created_by":"dan","updated_at":"2026-01-09T16:19:13.995523596-08:00","closed_at":"2026-01-09T16:19:13.995523596-08:00","close_reason":"All 16 skills converted to dual-publish pattern"}
|
{"id":"skills-1ks","title":"Dual-publish pattern: Convert remaining skills","description":"Convert skills to dual-publish pattern (Nix + Claude plugin):\n\n**Pattern established with orch:**\n- Keep SKILL.md at root (Nix deployment)\n- Add .claude-plugin/plugin.json (Claude marketplace)\n- Copy to skills/\u003cname\u003e.md (Claude auto-discovery)\n\n**Skills to convert:**\n- [ ] worklog\n- [ ] code-review (has lenses dependency)\n- [ ] ops-review (has lenses dependency)\n- [ ] playwright-visit\n- [ ] screenshot-latest\n- [ ] niri-window-capture\n- [ ] web-search\n- [ ] web-research\n\n**Why dual-publish:**\n- Cross-agent support (Gemini, OpenCode can't use Claude plugins)\n- Nix provides system-level deployment\n- Claude plugin system provides hooks, marketplace discovery\n- See skills-bo8 for Gemini path restriction issue","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T11:20:47.271151803-08:00","created_by":"dan","updated_at":"2026-01-09T16:19:13.995523596-08:00","closed_at":"2026-01-09T16:19:13.995523596-08:00","close_reason":"All 16 skills converted to dual-publish pattern"}
|
||||||
{"id":"skills-1n3","title":"Set up agent skills for Gemini CLI","description":"The AI agent skills (worklog, web-search, etc.) configured in .skills are not currently working when using the Gemini CLI. \\n\\nObserved behavior:\\n- 'worklog' command not found even after 'direnv reload'.\\n- .envrc sources ~/proj/skills/bin/use-skills.sh, but skills are not accessible in the Gemini agent session.\\n\\nNeed to:\\n1. Investigate how Gemini CLI loads its environment compared to Claude Code.\\n2. Update 'use-skills.sh' or direnv configuration to support Gemini CLI.\\n3. Ensure skill symlinks/binaries are correctly in the PATH for Gemini.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-22T17:39:28.106296919-05:00","updated_at":"2025-12-28T22:28:49.781533243-05:00","closed_at":"2025-12-28T22:28:49.781533243-05:00","close_reason":"No MCP/extensions. Gemini CLI lacks native skill support (feature request #11506 pending). Current workaround: GEMINI.md references skill paths for manual reading. Revisit when native support lands."}
|
{"id":"skills-1n3","title":"Set up agent skills for Gemini CLI","description":"The AI agent skills (worklog, web-search, etc.) configured in .skills are not currently working when using the Gemini CLI. \\n\\nObserved behavior:\\n- 'worklog' command not found even after 'direnv reload'.\\n- .envrc sources ~/proj/skills/bin/use-skills.sh, but skills are not accessible in the Gemini agent session.\\n\\nNeed to:\\n1. Investigate how Gemini CLI loads its environment compared to Claude Code.\\n2. Update 'use-skills.sh' or direnv configuration to support Gemini CLI.\\n3. Ensure skill symlinks/binaries are correctly in the PATH for Gemini.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-22T17:39:28.106296919-05:00","updated_at":"2025-12-28T22:28:49.781533243-05:00","closed_at":"2025-12-28T22:28:49.781533243-05:00","close_reason":"No MCP/extensions. Gemini CLI lacks native skill support (feature request #11506 pending). Current workaround: GEMINI.md references skill paths for manual reading. Revisit when native support lands."}
|
||||||
{"id":"skills-1qz","title":"Design: Token and cost budgets per agent","description":"Prevent token blowup footgun. Implement: hard budgets per agent and per run, limit context sizes, separate heavy/light agents, queueing with backpressure, retry with idempotency tokens. Plan-and-Execute pattern: expensive model plans, cheap models execute (90% cost reduction). From research synthesis.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.383262566-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.383262566-08:00","dependencies":[{"issue_id":"skills-1qz","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.383903314-08:00","created_by":"dan"}]}
|
{"id":"skills-1qz","title":"Design: Token and cost budgets per agent","description":"Prevent token blowup footgun. Implement: hard budgets per agent and per run, limit context sizes, separate heavy/light agents, queueing with backpressure, retry with idempotency tokens. Plan-and-Execute pattern: expensive model plans, cheap models execute (90% cost reduction). From research synthesis.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.383262566-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.383262566-08:00","dependencies":[{"issue_id":"skills-1qz","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.383903314-08:00","created_by":"dan"}]}
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
{"id":"skills-3d9o","title":"Extract branchName() and worktreePath() helpers in git.nim","description":"[REDUNDANCY] MED git.nim:36,59,89 - Branch pattern 'feat/{taskId}' repeated 3 times. Worktree path repeated at 37,53. Extract helpers: proc branchName(taskId): string and proc worktreePath(taskId): string.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:52:13.458091312-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.357072712-08:00","closed_at":"2026-01-10T20:32:28.357072712-08:00","close_reason":"Created utils.nim with common helpers"}
|
{"id":"skills-3d9o","title":"Extract branchName() and worktreePath() helpers in git.nim","description":"[REDUNDANCY] MED git.nim:36,59,89 - Branch pattern 'feat/{taskId}' repeated 3 times. Worktree path repeated at 37,53. Extract helpers: proc branchName(taskId): string and proc worktreePath(taskId): string.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:52:13.458091312-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.357072712-08:00","closed_at":"2026-01-10T20:32:28.357072712-08:00","close_reason":"Created utils.nim with common helpers"}
|
||||||
{"id":"skills-3em","title":"Prototype elevation pipeline","description":"Build pipeline: successful molecule → skill draft\n1. On molecule close, option to 'elevate'\n2. Analyze squashed trace\n3. Extract generalizable pattern\n4. Generate SKILL.md draft\n5. Human approval gate\n\nStart simple: script that takes squashed molecule ID and outputs draft SKILL.md\n\nMigrated from dotfiles-2p2.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:21:08.208885336-05:00","updated_at":"2025-12-29T13:55:35.80560789-05:00","closed_at":"2025-12-29T13:55:35.80560789-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-3em","depends_on_id":"skills-jeb","type":"blocks","created_at":"2025-12-23T19:21:50.034640219-05:00","created_by":"dan"},{"issue_id":"skills-3em","depends_on_id":"skills-2k0","type":"blocks","created_at":"2025-12-23T19:50:10.516122892-05:00","created_by":"daemon"}]}
|
{"id":"skills-3em","title":"Prototype elevation pipeline","description":"Build pipeline: successful molecule → skill draft\n1. On molecule close, option to 'elevate'\n2. Analyze squashed trace\n3. Extract generalizable pattern\n4. Generate SKILL.md draft\n5. Human approval gate\n\nStart simple: script that takes squashed molecule ID and outputs draft SKILL.md\n\nMigrated from dotfiles-2p2.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:21:08.208885336-05:00","updated_at":"2025-12-29T13:55:35.80560789-05:00","closed_at":"2025-12-29T13:55:35.80560789-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-3em","depends_on_id":"skills-jeb","type":"blocks","created_at":"2025-12-23T19:21:50.034640219-05:00","created_by":"dan"},{"issue_id":"skills-3em","depends_on_id":"skills-2k0","type":"blocks","created_at":"2025-12-23T19:50:10.516122892-05:00","created_by":"daemon"}]}
|
||||||
{"id":"skills-3gk","title":"Research: Cross-agent hook alternatives","description":"Claude Code has hooks (Stop, SessionStart, etc.) for mechanical enforcement. Other agents don't.\n\nResearch alternatives for cross-agent quality gates:\n\n1. **External wrapper** - Script that launches agent, monitors output, gates exit\n2. **Protocol-based** - Agent follows instructions in AGENTS.md, posts to state store\n3. **Orchestrator pattern** - Meta-agent spawns worker + reviewer, enforces gate\n4. **Hybrid** - Hooks where available, protocol elsewhere\n\nEvaluate:\n- Enforcement strength (mechanical vs cooperative)\n- Implementation complexity\n- Agent compatibility\n- Failure modes\n\nOutput: Comparison doc with recommendation","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.433319252-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.683960774-08:00","closed_at":"2026-01-09T19:33:36.683960774-08:00","close_reason":"Consolidated into skills-8sj"}
|
{"id":"skills-3gk","title":"Research: Cross-agent hook alternatives","description":"Claude Code has hooks (Stop, SessionStart, etc.) for mechanical enforcement. Other agents don't.\n\nResearch alternatives for cross-agent quality gates:\n\n1. **External wrapper** - Script that launches agent, monitors output, gates exit\n2. **Protocol-based** - Agent follows instructions in AGENTS.md, posts to state store\n3. **Orchestrator pattern** - Meta-agent spawns worker + reviewer, enforces gate\n4. **Hybrid** - Hooks where available, protocol elsewhere\n\nEvaluate:\n- Enforcement strength (mechanical vs cooperative)\n- Implementation complexity\n- Agent compatibility\n- Failure modes\n\nOutput: Comparison doc with recommendation","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.433319252-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.683960774-08:00","closed_at":"2026-01-09T19:33:36.683960774-08:00","close_reason":"Consolidated into skills-8sj"}
|
||||||
{"id":"skills-3hri","title":"HQ SKILL.md design gaps from orch consensus","description":"Orch consensus review of HQ SKILL.md (flash-or, gemini, gpt @ temp 1.2) identified multiple design gaps.\n\nSession: 01KESKA3TVWYVW2PTS0XRBR1Q7\n\n## Architectural Decision\n\nHQ should be a **thin orchestration layer** making decisions, not a monolith handling everything.\n\nIssues have been reclassified to proper layers:\n- **HQ**: WIP limits, DoD, templates, core loop, dependency scoping\n- **worker CLI**: Launch, rebase, salvage, retry counts\n- **review-gate**: CI gates, post-merge verification\n- **bd**: Context pruning, message format\n- **infrastructure**: Security, disk space\n\n2 issues closed as duplicates:\n- skills-gyvt → merged into skills-vdup (retry limits)\n- skills-8umb → merged into skills-8hyz (context pruning)\n\nSee epic comments for full architectural rationale.","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-12T09:19:33.047763881-08:00","created_by":"dan","updated_at":"2026-01-12T09:59:21.172216773-08:00","dependencies":[{"issue_id":"skills-3hri","depends_on_id":"skills-8umb","type":"blocks","created_at":"2026-01-12T09:20:37.67133727-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-q8i0","type":"blocks","created_at":"2026-01-12T09:26:17.249825798-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-qqaa","type":"blocks","created_at":"2026-01-12T09:26:17.300419697-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-lr29","type":"blocks","created_at":"2026-01-12T09:26:17.353360648-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-gyvt","type":"blocks","created_at":"2026-01-12T09:26:17.420475584-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-365b","type":"blocks","created_at":"2026-01-12T09:26:17.479320404-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-9mhk","type":"blocks","created_at":"2026-01-12T09:26:17.532630668-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-4dnt","type":"blocks","created_at":"2026-01-12T09:26:17.591580206-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-du0a","type":"blocks","created_at":"2026-01-12T09:26:17.640412141-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-n8ck","type":"blocks","created_at":"2026-01-12T09:26:17.70105987-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-8l92","type":"blocks","created_at":"2026-01-12T09:26:17.755417151-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-a50w","type":"blocks","created_at":"2026-01-12T09:26:17.810308166-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-6ppz","type":"blocks","created_at":"2026-01-12T09:26:17.865598387-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-ya3n","type":"blocks","created_at":"2026-01-12T09:26:17.912357881-08:00","created_by":"dan"}],"comments":[{"id":3,"issue_id":"skills-3hri","author":"dan","text":"[HQ:arch:2026-01-12T09:35:58-08:00] Architectural review: HQ should be thin orchestration layer. Reclassifying issues to proper layers:\n\nLAYER ASSIGNMENTS:\n- HQ: Orchestration decisions (what to work on, approve/reject, WIP limits)\n- review-gate: Quality enforcement (CI gates, test verification, evidence)\n- worker CLI: Lifecycle \u0026 isolation (state machine, retry counts, rebase, launch)\n- bd: Issue tracking \u0026 messaging (context pruning, message format)\n- infrastructure: Runtime concerns (sandboxing, disk space)\n\nISSUES BEING RECLASSIFIED:\n- CI/test gates → review-gate\n- Retry counting → worker CLI (merge with skills-vdup)\n- Context bloat → bd (merge with skills-8hyz)\n- Rebase handling → worker CLI\n- Security/sandbox → infrastructure\n- Resource exhaustion → infrastructure\n- Worker launch → worker CLI\n- Post-merge verification → review-gate\n- Stale salvage → worker CLI\n\nISSUES STAYING IN HQ:\n- WIP limits, DoD checklist, communication templates, core loop, dependency scoping","created_at":"2026-01-12T17:35:58Z"}]}
|
{"id":"skills-3hri","title":"HQ SKILL.md design gaps from orch consensus","description":"Orch consensus review of HQ SKILL.md (flash-or, gemini, gpt @ temp 1.2) identified multiple design gaps.\n\nSession: 01KESKA3TVWYVW2PTS0XRBR1Q7\n\n## Architectural Decision\n\nHQ should be a **thin orchestration layer** making decisions, not a monolith handling everything.\n\nIssues have been reclassified to proper layers:\n- **HQ**: WIP limits, DoD, templates, core loop, dependency scoping\n- **worker CLI**: Launch, rebase, salvage, retry counts\n- **review-gate**: CI gates, post-merge verification\n- **bd**: Context pruning, message format\n- **infrastructure**: Security, disk space\n\n2 issues closed as duplicates:\n- skills-gyvt → merged into skills-vdup (retry limits)\n- skills-8umb → merged into skills-8hyz (context pruning)\n\nSee epic comments for full architectural rationale.","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-12T09:19:33.047763881-08:00","created_by":"dan","updated_at":"2026-01-12T09:59:21.172216773-08:00","dependencies":[{"issue_id":"skills-3hri","depends_on_id":"skills-8umb","type":"blocks","created_at":"2026-01-12T09:20:37.67133727-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-q8i0","type":"blocks","created_at":"2026-01-12T09:26:17.249825798-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-qqaa","type":"blocks","created_at":"2026-01-12T09:26:17.300419697-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-lr29","type":"blocks","created_at":"2026-01-12T09:26:17.353360648-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-gyvt","type":"blocks","created_at":"2026-01-12T09:26:17.420475584-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-365b","type":"blocks","created_at":"2026-01-12T09:26:17.479320404-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-9mhk","type":"blocks","created_at":"2026-01-12T09:26:17.532630668-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-4dnt","type":"blocks","created_at":"2026-01-12T09:26:17.591580206-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-du0a","type":"blocks","created_at":"2026-01-12T09:26:17.640412141-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-n8ck","type":"blocks","created_at":"2026-01-12T09:26:17.70105987-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-8l92","type":"blocks","created_at":"2026-01-12T09:26:17.755417151-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-a50w","type":"blocks","created_at":"2026-01-12T09:26:17.810308166-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-6ppz","type":"blocks","created_at":"2026-01-12T09:26:17.865598387-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-ya3n","type":"blocks","created_at":"2026-01-12T09:26:17.912357881-08:00","created_by":"dan"},{"issue_id":"skills-3hri","depends_on_id":"skills-r62","type":"blocks","created_at":"2026-01-15T20:33:31.76045801-08:00","created_by":"dan"}],"comments":[{"id":3,"issue_id":"skills-3hri","author":"dan","text":"[HQ:arch:2026-01-12T09:35:58-08:00] Architectural review: HQ should be thin orchestration layer. Reclassifying issues to proper layers:\n\nLAYER ASSIGNMENTS:\n- HQ: Orchestration decisions (what to work on, approve/reject, WIP limits)\n- review-gate: Quality enforcement (CI gates, test verification, evidence)\n- worker CLI: Lifecycle \u0026 isolation (state machine, retry counts, rebase, launch)\n- bd: Issue tracking \u0026 messaging (context pruning, message format)\n- infrastructure: Runtime concerns (sandboxing, disk space)\n\nISSUES BEING RECLASSIFIED:\n- CI/test gates → review-gate\n- Retry counting → worker CLI (merge with skills-vdup)\n- Context bloat → bd (merge with skills-8hyz)\n- Rebase handling → worker CLI\n- Security/sandbox → infrastructure\n- Resource exhaustion → infrastructure\n- Worker launch → worker CLI\n- Post-merge verification → review-gate\n- Stale salvage → worker CLI\n\nISSUES STAYING IN HQ:\n- WIP limits, DoD checklist, communication templates, core loop, dependency scoping","created_at":"2026-01-12T17:35:58Z"}]}
|
||||||
{"id":"skills-3ib6","title":"Create initial scenario suite (easy/medium/hard)","description":"Write 6-9 scenarios across difficulty levels:\n\nEasy (clear spec, single file):\n- Add factorial function\n- Fix typo in config\n- Add CLI flag\n\nMedium (requires understanding context):\n- Refactor function to use new pattern\n- Add caching to existing endpoint\n- Write tests for existing code\n\nHard (ambiguous, multi-file, debugging):\n- Fix race condition\n- Migrate to new library version\n- Resolve conflicting requirements","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:46.322151154-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.581305762-08:00","closed_at":"2026-01-11T16:38:26.581305762-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-3ib6","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.771085983-08:00","created_by":"dan"}]}
|
{"id":"skills-3ib6","title":"Create initial scenario suite (easy/medium/hard)","description":"Write 6-9 scenarios across difficulty levels:\n\nEasy (clear spec, single file):\n- Add factorial function\n- Fix typo in config\n- Add CLI flag\n\nMedium (requires understanding context):\n- Refactor function to use new pattern\n- Add caching to existing endpoint\n- Write tests for existing code\n\nHard (ambiguous, multi-file, debugging):\n- Fix race condition\n- Migrate to new library version\n- Resolve conflicting requirements","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:46.322151154-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.581305762-08:00","closed_at":"2026-01-11T16:38:26.581305762-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-3ib6","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.771085983-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-3j55","title":"Create hq-status script","description":"Unified status view across all coordination layers.\n\nShows:\n- bd ready (available work)\n- worker status (active workers)\n- review-gate status (pending reviews)\n- Recent bd comments (coordination messages)\n\nUsage: hq-status [--json]\n\nOutput: skills/hq/scripts/hq-status","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T21:06:34.998651979-08:00","created_by":"dan","updated_at":"2026-01-12T10:47:40.367540818-08:00","closed_at":"2026-01-12T10:47:40.367540818-08:00","close_reason":"Completed - skills/hq/scripts/hq-status created"}
|
{"id":"skills-3j55","title":"Create hq-status script","description":"Unified status view across all coordination layers.\n\nShows:\n- bd ready (available work)\n- worker status (active workers)\n- review-gate status (pending reviews)\n- Recent bd comments (coordination messages)\n\nUsage: hq-status [--json]\n\nOutput: skills/hq/scripts/hq-status","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T21:06:34.998651979-08:00","created_by":"dan","updated_at":"2026-01-12T10:47:40.367540818-08:00","closed_at":"2026-01-12T10:47:40.367540818-08:00","close_reason":"Completed - skills/hq/scripts/hq-status created"}
|
||||||
{"id":"skills-3ja","title":"Design: Cross-agent quality gate architecture","description":"Design a quality gate pattern that works regardless of agent.\n\nRequirements:\n- Worker agent can be Claude, Gemini, OpenCode, etc.\n- Reviewer agent can be any capable model\n- Gate blocks completion until reviewer approves\n- Circuit breakers prevent infinite loops\n- Works in autonomous/unattended scenarios\n\nBuilding on alice/idle research (docs/research/idle-alice-quality-gate.md):\n- alice uses Claude hooks + jwz state\n- We need agent-agnostic equivalent\n\nConsiderations:\n- State management: jwz vs beads vs simple files\n- Enforcement: mechanical vs protocol-based\n- Reviewer selection: orch consensus vs single model\n- Activation: opt-in prefix vs context-based\n\nOutput: Architecture doc with component design","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.657906484-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.694607649-08:00","closed_at":"2026-01-09T19:33:36.694607649-08:00","close_reason":"Consolidated into skills-8sj"}
|
{"id":"skills-3ja","title":"Design: Cross-agent quality gate architecture","description":"Design a quality gate pattern that works regardless of agent.\n\nRequirements:\n- Worker agent can be Claude, Gemini, OpenCode, etc.\n- Reviewer agent can be any capable model\n- Gate blocks completion until reviewer approves\n- Circuit breakers prevent infinite loops\n- Works in autonomous/unattended scenarios\n\nBuilding on alice/idle research (docs/research/idle-alice-quality-gate.md):\n- alice uses Claude hooks + jwz state\n- We need agent-agnostic equivalent\n\nConsiderations:\n- State management: jwz vs beads vs simple files\n- Enforcement: mechanical vs protocol-based\n- Reviewer selection: orch consensus vs single model\n- Activation: opt-in prefix vs context-based\n\nOutput: Architecture doc with component design","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.657906484-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.694607649-08:00","closed_at":"2026-01-09T19:33:36.694607649-08:00","close_reason":"Consolidated into skills-8sj"}
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
{"id":"skills-5ji","title":"infra: Ephemeral namespaced environments","description":"Solve shared state pollution footgun. Each worker branch gets: namespaced DB (schema prefix or separate DB), isolated Redis namespace, separate queues, namespaced feature flags. Agents never touch shared prod-like state. Idempotent migrations and fixture loaders. From HN practitioner feedback on database isolation.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.720141358-08:00","created_by":"dan","updated_at":"2026-01-12T10:10:20.275515776-08:00","dependencies":[{"issue_id":"skills-5ji","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.721467429-08:00","created_by":"dan"}],"comments":[{"id":15,"issue_id":"skills-5ji","author":"dan","text":"[RECLASSIFY:2026-01-12T10:10:20-08:00] Moved to infrastructure layer. Environment isolation is runtime infrastructure.","created_at":"2026-01-12T18:10:20Z"}]}
|
{"id":"skills-5ji","title":"infra: Ephemeral namespaced environments","description":"Solve shared state pollution footgun. Each worker branch gets: namespaced DB (schema prefix or separate DB), isolated Redis namespace, separate queues, namespaced feature flags. Agents never touch shared prod-like state. Idempotent migrations and fixture loaders. From HN practitioner feedback on database isolation.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.720141358-08:00","created_by":"dan","updated_at":"2026-01-12T10:10:20.275515776-08:00","dependencies":[{"issue_id":"skills-5ji","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.721467429-08:00","created_by":"dan"}],"comments":[{"id":15,"issue_id":"skills-5ji","author":"dan","text":"[RECLASSIFY:2026-01-12T10:10:20-08:00] Moved to infrastructure layer. Environment isolation is runtime infrastructure.","created_at":"2026-01-12T18:10:20Z"}]}
|
||||||
{"id":"skills-5kv","title":"Document beads vs tissue split during emes testing","description":"During emes testing on ops-jrz1:\n- Local dev: beads (skills repo, dotfiles, etc.)\n- ops-jrz1: tissue (emes ecosystem testing)\n\nNeed to document:\n- Which tracker for which repos\n- How to context-switch mentally\n- Whether to bridge or keep separate\n- Exit criteria: when do we converge?","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T16:03:45.493255636-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.885799343-08:00","closed_at":"2026-01-09T19:59:37.885799343-08:00","close_reason":"Superseded by abstract layer approach - memory layer abstracts beads/tissue"}
|
{"id":"skills-5kv","title":"Document beads vs tissue split during emes testing","description":"During emes testing on ops-jrz1:\n- Local dev: beads (skills repo, dotfiles, etc.)\n- ops-jrz1: tissue (emes ecosystem testing)\n\nNeed to document:\n- Which tracker for which repos\n- How to context-switch mentally\n- Whether to bridge or keep separate\n- Exit criteria: when do we converge?","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T16:03:45.493255636-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.885799343-08:00","closed_at":"2026-01-09T19:59:37.885799343-08:00","close_reason":"Superseded by abstract layer approach - memory layer abstracts beads/tissue"}
|
||||||
{"id":"skills-5ry7","title":"Worker done fails: worktree path is relative, not absolute","description":"## Bug\nWhen running `worker done` from inside a worktree, the rebase fails because the stored worktree path is relative.\n\n## Reproduction\n1. worker spawn test-001\n2. cd worktrees/test-001\n3. (make changes, commit)\n4. worker done\n\n## Error\n```\nfatal: cannot change to 'worktrees/test-001': No such file or directory\n```\n\n## Root Cause\n- `createWorkerContext` stores whatever path is passed (relative)\n- `done` uses `ctx.worktree` for git operations\n- When running from inside worktree, relative path doesn't resolve\n\n## Existing tests don't catch this\ntest-worker.sh bypasses `done` by manually setting state to IN_REVIEW.\n\n## Fix Options\n1. Store absolute path in context (cleanest)\n2. Resolve path in `done` relative to repo root\n3. Always run git operations from repo root\n\n## Found By\nSpike: skills-6n4u - manually testing Claude in worker context","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-11T16:47:13.026059242-08:00","created_by":"dan","updated_at":"2026-01-11T19:15:34.945684191-08:00","closed_at":"2026-01-11T19:15:34.945684191-08:00","close_reason":"Fixed in utils.nim - worktreePath now returns absolute path using findMainRepoDir()"}
|
{"id":"skills-5ry7","title":"Worker done fails: worktree path is relative, not absolute","description":"## Bug\nWhen running `worker done` from inside a worktree, the rebase fails because the stored worktree path is relative.\n\n## Reproduction\n1. worker spawn test-001\n2. cd worktrees/test-001\n3. (make changes, commit)\n4. worker done\n\n## Error\n```\nfatal: cannot change to 'worktrees/test-001': No such file or directory\n```\n\n## Root Cause\n- `createWorkerContext` stores whatever path is passed (relative)\n- `done` uses `ctx.worktree` for git operations\n- When running from inside worktree, relative path doesn't resolve\n\n## Existing tests don't catch this\ntest-worker.sh bypasses `done` by manually setting state to IN_REVIEW.\n\n## Fix Options\n1. Store absolute path in context (cleanest)\n2. Resolve path in `done` relative to repo root\n3. Always run git operations from repo root\n\n## Found By\nSpike: skills-6n4u - manually testing Claude in worker context","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-11T16:47:13.026059242-08:00","created_by":"dan","updated_at":"2026-01-11T19:15:34.945684191-08:00","closed_at":"2026-01-11T19:15:34.945684191-08:00","close_reason":"Fixed in utils.nim - worktreePath now returns absolute path using findMainRepoDir()"}
|
||||||
{"id":"skills-5tq","title":"LSP diagnostic harvest → auto-create beads","description":"Periodic/nightly headless LSP scan that:\n- Gathers diagnostics (unused vars, type errors, deprecations, lint warnings)\n- Groups by subsystem/module\n- Auto-creates beads with severity thresholds\n- Enables 'refactor quests' - parent bead with children per symbol\n\nRun via CI or cron, feed results back into beads automatically.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-24T02:29:56.191762416-05:00","updated_at":"2025-12-24T02:29:56.191762416-05:00","dependencies":[{"issue_id":"skills-5tq","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.471853411-05:00","created_by":"daemon"}]}
|
{"id":"skills-5tq","title":"LSP diagnostic harvest → auto-create beads","description":"Periodic/nightly headless LSP scan that:\n- Gathers diagnostics (unused vars, type errors, deprecations, lint warnings)\n- Groups by subsystem/module\n- Auto-creates beads with severity thresholds\n- Enables 'refactor quests' - parent bead with children per symbol\n\nRun via CI or cron, feed results back into beads automatically.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-24T02:29:56.191762416-05:00","updated_at":"2026-01-15T19:19:22.931645856-08:00","dependencies":[{"issue_id":"skills-5tq","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.471853411-05:00","created_by":"daemon"},{"issue_id":"skills-5tq","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:27.655487907-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-5v8","title":"Replace SKILL.md with upstream version","description":"Upstream has 644 lines vs our 122. Missing: self-test questions, notes quality checks, token checkpointing, database selection, field usage table, lifecycle workflow, common patterns, troubleshooting","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-03T20:15:53.025829293-08:00","updated_at":"2025-12-03T20:16:20.470185004-08:00","closed_at":"2025-12-03T20:16:20.470185004-08:00","dependencies":[{"issue_id":"skills-5v8","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.027601712-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-5v8","title":"Replace SKILL.md with upstream version","description":"Upstream has 644 lines vs our 122. Missing: self-test questions, notes quality checks, token checkpointing, database selection, field usage table, lifecycle workflow, common patterns, troubleshooting","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-03T20:15:53.025829293-08:00","updated_at":"2025-12-03T20:16:20.470185004-08:00","closed_at":"2025-12-03T20:16:20.470185004-08:00","dependencies":[{"issue_id":"skills-5v8","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.027601712-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-5vg","title":"spec-review: Add context/assumptions step to prompts","description":"Reviews can become speculative without establishing context first.\n\nAdd to prompts:\n- List assumptions being made\n- Distinguish: missing from doc vs implied vs out of scope\n- Ask clarifying questions if critical context missing","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.681448596-08:00","updated_at":"2025-12-15T14:06:15.415750911-08:00","closed_at":"2025-12-15T14:06:15.415750911-08:00"}
|
{"id":"skills-5vg","title":"spec-review: Add context/assumptions step to prompts","description":"Reviews can become speculative without establishing context first.\n\nAdd to prompts:\n- List assumptions being made\n- Distinguish: missing from doc vs implied vs out of scope\n- Ask clarifying questions if critical context missing","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.681448596-08:00","updated_at":"2025-12-15T14:06:15.415750911-08:00","closed_at":"2025-12-15T14:06:15.415750911-08:00"}
|
||||||
{"id":"skills-5x2o","title":"Extract msToUnix helper for repeated div 1000","description":"[SMELL] LOW state.nim - 'div 1000' for ms to seconds conversion repeated 8 times. Add helper proc msToUnix(ms: int64): int64 in types.nim.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T19:49:52.505245039-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.362386563-08:00","closed_at":"2026-01-10T20:32:28.362386563-08:00","close_reason":"Created utils.nim with common helpers"}
|
{"id":"skills-5x2o","title":"Extract msToUnix helper for repeated div 1000","description":"[SMELL] LOW state.nim - 'div 1000' for ms to seconds conversion repeated 8 times. Add helper proc msToUnix(ms: int64): int64 in types.nim.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T19:49:52.505245039-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.362386563-08:00","closed_at":"2026-01-10T20:32:28.362386563-08:00","close_reason":"Created utils.nim with common helpers"}
|
||||||
|
|
@ -72,7 +72,7 @@
|
||||||
{"id":"skills-73yu","title":"Validate taskId to prevent path traversal and command injection","description":"[SECURITY] HIGH git.nim:36,37,53,59,89 - taskId used unsanitized in branch names and file paths. If taskId contains '../' or shell metacharacters, could escape worktree dir. Validate taskId matches safe pattern (alphanumeric + dash/underscore only).","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-10T19:52:13.24918965-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.374723485-08:00","closed_at":"2026-01-10T20:32:28.374723485-08:00","close_reason":"Created utils.nim with common helpers"}
|
{"id":"skills-73yu","title":"Validate taskId to prevent path traversal and command injection","description":"[SECURITY] HIGH git.nim:36,37,53,59,89 - taskId used unsanitized in branch names and file paths. If taskId contains '../' or shell metacharacters, could escape worktree dir. Validate taskId matches safe pattern (alphanumeric + dash/underscore only).","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-10T19:52:13.24918965-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.374723485-08:00","closed_at":"2026-01-10T20:32:28.374723485-08:00","close_reason":"Created utils.nim with common helpers"}
|
||||||
{"id":"skills-7a00","title":"Add LLM-as-judge verification","description":"Use an LLM to evaluate task completion quality.\n\nComponents:\n- Judge prompt template\n- Rubric format (list of criteria)\n- Scoring mechanism (0-1 per criterion, aggregate)\n- Model selection (haiku for cost, sonnet for quality)\n\nShould take: task description, rubric, code diff/result\nShould output: score, reasoning, pass/fail per criterion","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:45.933759107-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.564395054-08:00","closed_at":"2026-01-11T16:38:26.564395054-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-7a00","depends_on_id":"skills-y0p0","type":"blocks","created_at":"2026-01-11T16:20:20.700175136-08:00","created_by":"dan"}]}
|
{"id":"skills-7a00","title":"Add LLM-as-judge verification","description":"Use an LLM to evaluate task completion quality.\n\nComponents:\n- Judge prompt template\n- Rubric format (list of criteria)\n- Scoring mechanism (0-1 per criterion, aggregate)\n- Model selection (haiku for cost, sonnet for quality)\n\nShould take: task description, rubric, code diff/result\nShould output: score, reasoning, pass/fail per criterion","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:45.933759107-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.564395054-08:00","closed_at":"2026-01-11T16:38:26.564395054-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-7a00","depends_on_id":"skills-y0p0","type":"blocks","created_at":"2026-01-11T16:20:20.700175136-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-7bu","title":"Add atomic file operations to update scripts","description":"Files affected:\n- skills/update-opencode/scripts/update-nix-file.sh\n- .specify/scripts/bash/update-agent-context.sh\n\nIssues:\n- Uses sed -i which can corrupt on error\n- No rollback mechanism despite creating backups\n- Unsafe regex patterns with complex escaping\n\nFix:\n- Write to temp file, then atomic mv\n- Validate output before replacing original\n- Add rollback on failure\n\nSeverity: MEDIUM","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T02:51:02.334416215-05:00","updated_at":"2026-01-03T12:08:56.822659199-08:00","closed_at":"2026-01-03T12:08:56.822659199-08:00","close_reason":"Implemented atomic updates using temp files and traps in update-nix-file.sh, update-agent-context.sh, and deploy-skill.sh. Added validation before replacing original files."}
|
{"id":"skills-7bu","title":"Add atomic file operations to update scripts","description":"Files affected:\n- skills/update-opencode/scripts/update-nix-file.sh\n- .specify/scripts/bash/update-agent-context.sh\n\nIssues:\n- Uses sed -i which can corrupt on error\n- No rollback mechanism despite creating backups\n- Unsafe regex patterns with complex escaping\n\nFix:\n- Write to temp file, then atomic mv\n- Validate output before replacing original\n- Add rollback on failure\n\nSeverity: MEDIUM","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T02:51:02.334416215-05:00","updated_at":"2026-01-03T12:08:56.822659199-08:00","closed_at":"2026-01-03T12:08:56.822659199-08:00","close_reason":"Implemented atomic updates using temp files and traps in update-nix-file.sh, update-agent-context.sh, and deploy-skill.sh. Added validation before replacing original files."}
|
||||||
{"id":"skills-7n4","title":"Design: Rollback strategy for failed workers","description":"Consensus gap: No rollback strategy. Handle: stuck workers, rejected reviews, merge conflicts. Branch archive/delete, state reset for re-assignment, evidence preservation for debugging.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T13:55:24.144602107-08:00","created_by":"dan","updated_at":"2026-01-10T13:55:24.144602107-08:00","dependencies":[{"issue_id":"skills-7n4","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:24.147809879-08:00","created_by":"dan"}]}
|
{"id":"skills-7n4","title":"Design: Rollback strategy for failed workers","description":"Consensus gap: No rollback strategy. Handle: stuck workers, rejected reviews, merge conflicts. Branch archive/delete, state reset for re-assignment, evidence preservation for debugging.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T13:55:24.144602107-08:00","created_by":"dan","updated_at":"2026-01-15T20:33:21.029844282-08:00","closed_at":"2026-01-15T20:33:21.029844282-08:00","close_reason":"Merged into skills-ya3n (stale worker salvage)","dependencies":[{"issue_id":"skills-7n4","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:24.147809879-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-7s0","title":"Compare STATIC_DATA.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:55.193704589-08:00","updated_at":"2025-12-03T20:19:29.659256809-08:00","closed_at":"2025-12-03T20:19:29.659256809-08:00","dependencies":[{"issue_id":"skills-7s0","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:55.195160705-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-7s0","title":"Compare STATIC_DATA.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:55.193704589-08:00","updated_at":"2025-12-03T20:19:29.659256809-08:00","closed_at":"2025-12-03T20:19:29.659256809-08:00","dependencies":[{"issue_id":"skills-7s0","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:55.195160705-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-7sh","title":"Set up bd-issue-tracking Claude Code skill from beads repo","description":"Install the beads Claude Code skill from https://github.com/steveyegge/beads/tree/main/examples/claude-code-skill\n\nThis skill teaches Claude how to effectively use beads for issue tracking across multi-session coding workflows. It provides strategic guidance on when/how to use beads, not just command syntax.\n\nFiles to install to ~/.claude/skills/bd-issue-tracking/:\n- SKILL.md - Core workflow patterns and decision criteria\n- BOUNDARIES.md - When to use beads vs markdown alternatives\n- CLI_REFERENCE.md - Complete command documentation\n- DEPENDENCIES.md - Relationship types and patterns\n- WORKFLOWS.md - Step-by-step procedures\n- ISSUE_CREATION.md - Quality guidelines\n- RESUMABILITY.md - Making work resumable across sessions\n- STATIC_DATA.md - Using beads as reference databases\n\nCan symlink or copy the files. Restart Claude Code after install.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T17:53:43.254007992-08:00","updated_at":"2025-12-03T20:04:53.416579381-08:00","closed_at":"2025-12-03T20:04:53.416579381-08:00"}
|
{"id":"skills-7sh","title":"Set up bd-issue-tracking Claude Code skill from beads repo","description":"Install the beads Claude Code skill from https://github.com/steveyegge/beads/tree/main/examples/claude-code-skill\n\nThis skill teaches Claude how to effectively use beads for issue tracking across multi-session coding workflows. It provides strategic guidance on when/how to use beads, not just command syntax.\n\nFiles to install to ~/.claude/skills/bd-issue-tracking/:\n- SKILL.md - Core workflow patterns and decision criteria\n- BOUNDARIES.md - When to use beads vs markdown alternatives\n- CLI_REFERENCE.md - Complete command documentation\n- DEPENDENCIES.md - Relationship types and patterns\n- WORKFLOWS.md - Step-by-step procedures\n- ISSUE_CREATION.md - Quality guidelines\n- RESUMABILITY.md - Making work resumable across sessions\n- STATIC_DATA.md - Using beads as reference databases\n\nCan symlink or copy the files. Restart Claude Code after install.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T17:53:43.254007992-08:00","updated_at":"2025-12-03T20:04:53.416579381-08:00","closed_at":"2025-12-03T20:04:53.416579381-08:00"}
|
||||||
{"id":"skills-827e","title":"Verify getBranchStatus() usage or remove","description":"[DEAD] LOW git.nim:130-143 - getBranchStatus() may be unused. Verify usage across codebase, delete if unused.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.081128399-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.036708173-08:00","closed_at":"2026-01-11T15:46:39.036708173-08:00","close_reason":"Closed"}
|
{"id":"skills-827e","title":"Verify getBranchStatus() usage or remove","description":"[DEAD] LOW git.nim:130-143 - getBranchStatus() may be unused. Verify usage across codebase, delete if unused.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.081128399-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.036708173-08:00","closed_at":"2026-01-11T15:46:39.036708173-08:00","close_reason":"Closed"}
|
||||||
|
|
@ -115,6 +115,7 @@
|
||||||
{"id":"skills-9jk","title":"Research: emes idle quality gate for code-review","description":"Evaluate whether code-review skill should use idle-style quality gate (block exit until review approved). Would enforce review completion mechanically.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T10:59:25.094378206-08:00","created_by":"dan","updated_at":"2026-01-09T16:43:51.746332338-08:00","closed_at":"2026-01-09T16:43:51.746332338-08:00","close_reason":"Research complete - alice pattern documented, recommendation: review reminder hook instead","dependencies":[{"issue_id":"skills-9jk","depends_on_id":"skills-6x1","type":"blocks","created_at":"2026-01-09T10:59:33.267948785-08:00","created_by":"dan"}]}
|
{"id":"skills-9jk","title":"Research: emes idle quality gate for code-review","description":"Evaluate whether code-review skill should use idle-style quality gate (block exit until review approved). Would enforce review completion mechanically.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T10:59:25.094378206-08:00","created_by":"dan","updated_at":"2026-01-09T16:43:51.746332338-08:00","closed_at":"2026-01-09T16:43:51.746332338-08:00","close_reason":"Research complete - alice pattern documented, recommendation: review reminder hook instead","dependencies":[{"issue_id":"skills-9jk","depends_on_id":"skills-6x1","type":"blocks","created_at":"2026-01-09T10:59:33.267948785-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-9mhk","title":"HQ: Definition of Done checklist","description":"**Raised by:** gpt (primary), flash-or\n\n**Problem:**\n\"Approve when tests pass + meets requirements\" is vague. No explicit acceptance criteria, no checklist per issue type, no non-test validation steps (lint, typecheck, migrations, docs).\n\n**gpt:**\n\u003e \"Missing: A required checklist per issue type (bugfix vs feature vs refactor). Explicit acceptance criteria pulled from the issue and reiterated in HQ's first comment. Non-test validation steps (lint/typecheck, migrations, docs, perf, backward compatibility). 'No tests exist' path.\"\n\n**flash-or:**\n\u003e \"Define 'Definition of Done' (DoD): Explicitly list that DoD includes 'Tests passing in worker's environment.'\"\n\n**Suggested fixes:**\n1. Standard DoD template HQ posts to issue at kickoff\n2. Review checklist (tests, lint, security, docs, rollout/compat)\n3. Per-issue-type requirements (bugfix vs feature vs refactor)\n4. \"No tests\" path with compensating validation\n5. Codify with tooling: formatter, lint rules, pre-commit, typechecker","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:23:24.281717002-08:00","created_by":"dan","updated_at":"2026-01-12T09:23:24.281717002-08:00"}
|
{"id":"skills-9mhk","title":"HQ: Definition of Done checklist","description":"**Raised by:** gpt (primary), flash-or\n\n**Problem:**\n\"Approve when tests pass + meets requirements\" is vague. No explicit acceptance criteria, no checklist per issue type, no non-test validation steps (lint, typecheck, migrations, docs).\n\n**gpt:**\n\u003e \"Missing: A required checklist per issue type (bugfix vs feature vs refactor). Explicit acceptance criteria pulled from the issue and reiterated in HQ's first comment. Non-test validation steps (lint/typecheck, migrations, docs, perf, backward compatibility). 'No tests exist' path.\"\n\n**flash-or:**\n\u003e \"Define 'Definition of Done' (DoD): Explicitly list that DoD includes 'Tests passing in worker's environment.'\"\n\n**Suggested fixes:**\n1. Standard DoD template HQ posts to issue at kickoff\n2. Review checklist (tests, lint, security, docs, rollout/compat)\n3. Per-issue-type requirements (bugfix vs feature vs refactor)\n4. \"No tests\" path with compensating validation\n5. Codify with tooling: formatter, lint rules, pre-commit, typechecker","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:23:24.281717002-08:00","created_by":"dan","updated_at":"2026-01-12T09:23:24.281717002-08:00"}
|
||||||
{"id":"skills-9ny","title":"Add schema migration pattern for future DB changes","description":"[EVOLVE] MED db.nim:92 - schema_version='1' exists but no migration logic. initSchema() always runs full schema. Add version check + migration proc pattern for ALTER TABLE scenarios.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T18:52:38.470894574-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.492927833-08:00","closed_at":"2026-01-11T15:38:00.492927833-08:00","close_reason":"Closed"}
|
{"id":"skills-9ny","title":"Add schema migration pattern for future DB changes","description":"[EVOLVE] MED db.nim:92 - schema_version='1' exists but no migration logic. initSchema() always runs full schema. Add version check + migration proc pattern for ALTER TABLE scenarios.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T18:52:38.470894574-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.492927833-08:00","closed_at":"2026-01-11T15:38:00.492927833-08:00","close_reason":"Closed"}
|
||||||
|
{"id":"skills-9w1e","title":"(EPIC) LSP infrastructure for agent-assisted coding","description":"Umbrella for LSP-dependent features. Deferred until LSP integration is more mature.\n\n## Prerequisites\n- Reliable LSP setup across languages (Nim, Python, TypeScript, Go)\n- Headless LSP invocation for CI/automation\n- Understanding of Claude Code's LSP integration points\n\n## Blocked Features\n- beads --from-cursor with symbol context\n- LSP diagnostic harvest → auto-create beads\n- rename_symbol with LSP validation\n- semantic-grep using LSP\n- Per-repo LSP profiles in Nix flakes\n- Symbol verification before suggesting code\n\n## When to Revisit\nWhen there's a concrete use case that justifies the LSP infrastructure investment.","status":"open","priority":4,"issue_type":"epic","owner":"dan@delpad","created_at":"2026-01-15T19:19:16.207924173-08:00","created_by":"dan","updated_at":"2026-01-15T19:19:16.207924173-08:00"}
|
||||||
{"id":"skills-a0x","title":"spec-review: Add traceability requirements across artifacts","description":"Prompts don't enforce spec → plan → tasks linkage. Drift can occur without detection.\n\nAdd:\n- Require trace matrix or linkage in reviews\n- Each plan item should reference spec requirement\n- Each task should reference plan item\n- Flag unmapped items and extra scope","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.270581198-08:00","updated_at":"2025-12-15T14:05:48.196356786-08:00","closed_at":"2025-12-15T14:05:48.196356786-08:00"}
|
{"id":"skills-a0x","title":"spec-review: Add traceability requirements across artifacts","description":"Prompts don't enforce spec → plan → tasks linkage. Drift can occur without detection.\n\nAdd:\n- Require trace matrix or linkage in reviews\n- Each plan item should reference spec requirement\n- Each task should reference plan item\n- Flag unmapped items and extra scope","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.270581198-08:00","updated_at":"2025-12-15T14:05:48.196356786-08:00","closed_at":"2025-12-15T14:05:48.196356786-08:00"}
|
||||||
{"id":"skills-a23","title":"Update main README to list all 9 skills","description":"Main README.md 'Skills Included' section only lists worklog and update-spec-kit. Repo actually has 9 skills: template, worklog, update-spec-kit, screenshot-latest, niri-window-capture, tufte-press, update-opencode, web-research, web-search.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:14.042397754-08:00","updated_at":"2025-12-28T22:08:02.074758486-05:00","closed_at":"2025-12-28T22:08:02.074758486-05:00","close_reason":"Updated README with table listing all 14 skills (5 deployed, 8 available, 1 development template)","dependencies":[{"issue_id":"skills-a23","depends_on_id":"skills-4yn","type":"blocks","created_at":"2025-11-30T12:01:30.306742184-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-a23","title":"Update main README to list all 9 skills","description":"Main README.md 'Skills Included' section only lists worklog and update-spec-kit. Repo actually has 9 skills: template, worklog, update-spec-kit, screenshot-latest, niri-window-capture, tufte-press, update-opencode, web-research, web-search.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:14.042397754-08:00","updated_at":"2025-12-28T22:08:02.074758486-05:00","closed_at":"2025-12-28T22:08:02.074758486-05:00","close_reason":"Updated README with table listing all 14 skills (5 deployed, 8 available, 1 development template)","dependencies":[{"issue_id":"skills-a23","depends_on_id":"skills-4yn","type":"blocks","created_at":"2025-11-30T12:01:30.306742184-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-a50w","title":"review-gate: Post-merge verification and rollback","description":"**Raised by:** gpt\n\n**Problem:**\nWhat if merge succeeds but breaks master? CI fails after merge? No revert procedure defined.\n\n**gpt:**\n\u003e \"Add a 'post-merge verification' stage: Merge → CI required → only then 'bd close'. Define revert procedure and who owns it (HQ vs new worker). Optionally enable 'merge queue' semantics.\"\n\n**Suggested fixes:**\n1. merged_pending_ci status before done\n2. Post-merge CI verification required\n3. Revert playbook section\n4. \"fix-forward\" task spawning on breakage\n5. Consider merge queue semantics","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-12T09:24:12.120656389-08:00","created_by":"dan","updated_at":"2026-01-12T09:42:04.942124168-08:00","comments":[{"id":10,"issue_id":"skills-a50w","author":"dan","text":"[RECLASSIFY:2026-01-12T09:42:04-08:00] Moved from HQ to review-gate layer.\n\nPost-merge CI verification is quality enforcement. review-gate or CI should handle this, not HQ logic.","created_at":"2026-01-12T17:42:04Z"}]}
|
{"id":"skills-a50w","title":"review-gate: Post-merge verification and rollback","description":"**Raised by:** gpt\n\n**Problem:**\nWhat if merge succeeds but breaks master? CI fails after merge? No revert procedure defined.\n\n**gpt:**\n\u003e \"Add a 'post-merge verification' stage: Merge → CI required → only then 'bd close'. Define revert procedure and who owns it (HQ vs new worker). Optionally enable 'merge queue' semantics.\"\n\n**Suggested fixes:**\n1. merged_pending_ci status before done\n2. Post-merge CI verification required\n3. Revert playbook section\n4. \"fix-forward\" task spawning on breakage\n5. Consider merge queue semantics","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-12T09:24:12.120656389-08:00","created_by":"dan","updated_at":"2026-01-12T09:42:04.942124168-08:00","comments":[{"id":10,"issue_id":"skills-a50w","author":"dan","text":"[RECLASSIFY:2026-01-12T09:42:04-08:00] Moved from HQ to review-gate layer.\n\nPost-merge CI verification is quality enforcement. review-gate or CI should handle this, not HQ logic.","created_at":"2026-01-12T17:42:04Z"}]}
|
||||||
|
|
@ -143,10 +144,10 @@
|
||||||
{"id":"skills-dpw","title":"orch: add command to show available/configured models","description":"## Problem\n\nWhen trying to use orch, you have to trial-and-error through models to find which ones have API keys configured. Each failure looks like:\n\n```\nError: GEMINI_API_KEY not set. Required for Google Gemini models.\n```\n\nNo way to know upfront which models are usable.\n\n## Proposed Solution\n\nAdd `orch models` or `orch status` command:\n\n```bash\n$ orch models\nAvailable models:\n ✓ flash (GEMINI_API_KEY set)\n ✓ gemini (GEMINI_API_KEY set)\n ✗ deepseek (OPENROUTER_KEY not set)\n ✗ qwen (OPENROUTER_KEY not set)\n ✓ gpt (OPENAI_API_KEY set)\n```\n\nOr at minimum, on failure suggest alternatives:\n```\nError: GEMINI_API_KEY not set. Try --model gpt or --model deepseek instead.\n```\n\n## Context\n\nHit this while trying to brainstorm with high-temp gemini - had to try 4 models before realizing none were configured in this environment.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-04T14:10:07.069103175-08:00","updated_at":"2025-12-04T14:11:05.49122538-08:00","closed_at":"2025-12-04T14:11:05.49122538-08:00"}
|
{"id":"skills-dpw","title":"orch: add command to show available/configured models","description":"## Problem\n\nWhen trying to use orch, you have to trial-and-error through models to find which ones have API keys configured. Each failure looks like:\n\n```\nError: GEMINI_API_KEY not set. Required for Google Gemini models.\n```\n\nNo way to know upfront which models are usable.\n\n## Proposed Solution\n\nAdd `orch models` or `orch status` command:\n\n```bash\n$ orch models\nAvailable models:\n ✓ flash (GEMINI_API_KEY set)\n ✓ gemini (GEMINI_API_KEY set)\n ✗ deepseek (OPENROUTER_KEY not set)\n ✗ qwen (OPENROUTER_KEY not set)\n ✓ gpt (OPENAI_API_KEY set)\n```\n\nOr at minimum, on failure suggest alternatives:\n```\nError: GEMINI_API_KEY not set. Try --model gpt or --model deepseek instead.\n```\n\n## Context\n\nHit this while trying to brainstorm with high-temp gemini - had to try 4 models before realizing none were configured in this environment.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-04T14:10:07.069103175-08:00","updated_at":"2025-12-04T14:11:05.49122538-08:00","closed_at":"2025-12-04T14:11:05.49122538-08:00"}
|
||||||
{"id":"skills-dszn","title":"Extract loadContextFromPath helper in context.nim","description":"[REDUNDANCY] LOW context.nim:21-23,31-33 - Same read+parse pattern repeated. Extract: proc loadContextFromPath(path: string): WorkerContext","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T20:10:03.6228906-08:00","created_by":"dan","updated_at":"2026-01-11T15:34:20.571875891-08:00","closed_at":"2026-01-11T15:34:20.571875891-08:00","close_reason":"Closed"}
|
{"id":"skills-dszn","title":"Extract loadContextFromPath helper in context.nim","description":"[REDUNDANCY] LOW context.nim:21-23,31-33 - Same read+parse pattern repeated. Extract: proc loadContextFromPath(path: string): WorkerContext","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T20:10:03.6228906-08:00","created_by":"dan","updated_at":"2026-01-11T15:34:20.571875891-08:00","closed_at":"2026-01-11T15:34:20.571875891-08:00","close_reason":"Closed"}
|
||||||
{"id":"skills-dtk","title":"Consolidate isStale() and staleLevel() logic","description":"[SMELL] MED state.nim:214-223,225-241 - Both compute heartbeat age with overlapping checks. Have isStale() call staleLevel() \\!= 'ok', or extract shared ageStatus() helper.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:49:51.730374503-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.466085606-08:00","closed_at":"2026-01-11T15:38:00.466085606-08:00","close_reason":"Closed"}
|
{"id":"skills-dtk","title":"Consolidate isStale() and staleLevel() logic","description":"[SMELL] MED state.nim:214-223,225-241 - Both compute heartbeat age with overlapping checks. Have isStale() call staleLevel() \\!= 'ok', or extract shared ageStatus() helper.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:49:51.730374503-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.466085606-08:00","closed_at":"2026-01-11T15:38:00.466085606-08:00","close_reason":"Closed"}
|
||||||
{"id":"skills-du0a","title":"HQ: Structured communication templates","description":"**Raised by:** gpt (primary), gemini\n\n**Problem:**\nBD comments as message bus lacks structure. Questions/answers get buried. No threading. No way to signal \"requires HQ decision\" vs \"FYI\". No attachments/artifacts.\n\n**gpt:**\n\u003e \"Require periodic worker 'state summaries' in a fixed schema (Summary / Risks / Next / Questions / Diffstat). Have HQ post a running 'Decision Log' comment for traceability.\"\n\n**Suggested templates:**\n\n**HQ kickoff comment:**\n- Scope (in/out)\n- Acceptance criteria bullets\n- Required checks (tests/lint/typecheck)\n- Risk areas / files\n- \"Ask before changing X\"\n\n**Worker update (every heartbeat):**\n- What changed\n- What's next\n- Blockers/questions\n- Commands run + results\n- Link to diff/commits\n\n**Suggested fixes:**\n1. Kickoff template posted by HQ\n2. Periodic state summary schema for workers\n3. Decision log comment (edited/superseding)\n4. \"Latest instruction\" pinning","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:23:26.910596266-08:00","created_by":"dan","updated_at":"2026-01-12T09:23:26.910596266-08:00"}
|
{"id":"skills-du0a","title":"HQ: Structured communication templates","description":"**Raised by:** gpt (primary), gemini\n\n**Problem:**\nBD comments as message bus lacks structure. Questions/answers get buried. No threading. No way to signal \"requires HQ decision\" vs \"FYI\". No attachments/artifacts.\n\n**gpt:**\n\u003e \"Require periodic worker 'state summaries' in a fixed schema (Summary / Risks / Next / Questions / Diffstat). Have HQ post a running 'Decision Log' comment for traceability.\"\n\n**Suggested templates:**\n\n**HQ kickoff comment:**\n- Scope (in/out)\n- Acceptance criteria bullets\n- Required checks (tests/lint/typecheck)\n- Risk areas / files\n- \"Ask before changing X\"\n\n**Worker update (every heartbeat):**\n- What changed\n- What's next\n- Blockers/questions\n- Commands run + results\n- Link to diff/commits\n\n**Suggested fixes:**\n1. Kickoff template posted by HQ\n2. Periodic state summary schema for workers\n3. Decision log comment (edited/superseding)\n4. \"Latest instruction\" pinning","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:23:26.910596266-08:00","created_by":"dan","updated_at":"2026-01-12T09:23:26.910596266-08:00","comments":[{"id":18,"issue_id":"skills-du0a","author":"dan","text":"Merged from skills-zf6 (Evidence artifacts for review handoff):\n\n## Evidence Artifacts Pattern\nWorker completion writes to .worker-state/X.json:\n```json\n{\n \"status\": \"needs_review\",\n \"evidence\": {\n \"summary\": \"Added rate limiting to auth endpoint\",\n \"diff_file\": \".worker-state/X.diff\",\n \"test_output\": \"...\",\n \"reasoning\": \"Rate limiting needed per issue #123\"\n }\n}\n```\n\nReviewer reads structured evidence, not full transcript. Benefits:\n- Reduces cross-contamination of mistakes\n- Faster review (structured, not conversational)\n- Model-agnostic (any agent can produce/consume)","created_at":"2026-01-16T04:32:49Z"}]}
|
||||||
{"id":"skills-e8h","title":"Investigate waybar + niri integration improvements","description":"Look into waybar configuration and niri compositor integration.\n\nPotential areas:\n- Waybar modules for niri workspaces\n- Status indicators\n- Integration with existing niri-window-capture skill\n- Custom scripts in pkgs/waybar-scripts\n\nRelated: dotfiles has home/waybar.nix (196 lines) and pkgs/waybar-scripts/","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T20:11:23.115445797-05:00","created_by":"dan","updated_at":"2025-12-28T20:37:16.465731945-05:00","closed_at":"2025-12-28T20:37:16.465731945-05:00","close_reason":"Moved to dotfiles repo - waybar config lives there"}
|
{"id":"skills-e8h","title":"Investigate waybar + niri integration improvements","description":"Look into waybar configuration and niri compositor integration.\n\nPotential areas:\n- Waybar modules for niri workspaces\n- Status indicators\n- Integration with existing niri-window-capture skill\n- Custom scripts in pkgs/waybar-scripts\n\nRelated: dotfiles has home/waybar.nix (196 lines) and pkgs/waybar-scripts/","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T20:11:23.115445797-05:00","created_by":"dan","updated_at":"2025-12-28T20:37:16.465731945-05:00","closed_at":"2025-12-28T20:37:16.465731945-05:00","close_reason":"Moved to dotfiles repo - waybar config lives there"}
|
||||||
{"id":"skills-e94u","title":"ui-query: extract shared find_windows() to common module","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-15T14:22:03.79081457-08:00","created_by":"dan","updated_at":"2026-01-15T14:54:16.135426883-08:00","closed_at":"2026-01-15T14:54:16.135426883-08:00","close_reason":"Extracted to common.py, imported in get-text.py and find-element.py"}
|
{"id":"skills-e94u","title":"ui-query: extract shared find_windows() to common module","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-15T14:22:03.79081457-08:00","created_by":"dan","updated_at":"2026-01-15T14:54:16.135426883-08:00","closed_at":"2026-01-15T14:54:16.135426883-08:00","close_reason":"Extracted to common.py, imported in get-text.py and find-element.py"}
|
||||||
{"id":"skills-e96","title":"skill: semantic-grep using LSP","description":"Use workspace/symbol, documentSymbol, and references instead of ripgrep.\n\nExample: 'Find all places where we handle User objects but only where we modify the email field directly'\n- LSP references finds all User usages\n- Filter by AST analysis for .email assignments\n- Return hit list for bead or further processing\n\nBetter than regex for Go interfaces, Rust traits, TS types.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-24T02:29:57.119983837-05:00","updated_at":"2025-12-24T02:29:57.119983837-05:00","dependencies":[{"issue_id":"skills-e96","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.632906383-05:00","created_by":"daemon"}]}
|
{"id":"skills-e96","title":"skill: semantic-grep using LSP","description":"Use workspace/symbol, documentSymbol, and references instead of ripgrep.\n\nExample: 'Find all places where we handle User objects but only where we modify the email field directly'\n- LSP references finds all User usages\n- Filter by AST analysis for .email assignments\n- Return hit list for bead or further processing\n\nBetter than regex for Go interfaces, Rust traits, TS types.","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-24T02:29:57.119983837-05:00","updated_at":"2026-01-15T19:19:23.117896161-08:00","dependencies":[{"issue_id":"skills-e96","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.632906383-05:00","created_by":"daemon"},{"issue_id":"skills-e96","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:27.892142859-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-ebh","title":"Compare bd-issue-tracking skill files with upstream","description":"Fetch upstream beads skill files and compare with our condensed versions to identify differences","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:14:07.886535859-08:00","updated_at":"2025-12-03T20:19:37.579815337-08:00","closed_at":"2025-12-03T20:19:37.579815337-08:00"}
|
{"id":"skills-ebh","title":"Compare bd-issue-tracking skill files with upstream","description":"Fetch upstream beads skill files and compare with our condensed versions to identify differences","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:14:07.886535859-08:00","updated_at":"2025-12-03T20:19:37.579815337-08:00","closed_at":"2025-12-03T20:19:37.579815337-08:00"}
|
||||||
{"id":"skills-ebl","title":"Benchmark vision model UI understanding","description":"## Goal\nMeasure how well vision models can answer UI questions from screenshots.\n\n## Test cases\n1. **Element location**: \"Where is the Save button?\" → coordinates\n2. **Element identification**: \"What buttons are visible?\" → list\n3. **State detection**: \"Is the checkbox checked?\" → boolean\n4. **Text extraction**: \"What does the error message say?\" → text\n5. **Layout understanding**: \"What's in the sidebar?\" → structure\n\n## Metrics\n- Accuracy: Does the answer match ground truth?\n- Precision: How close are coordinates to actual element centers?\n- Latency: Time from query to response\n- Cost: Tokens consumed per query\n\n## Prompt engineering questions\n- Does adding a grid overlay help coordinate precision?\n- What prompt format gives most actionable coordinates?\n- Can we get bounding boxes vs point coordinates?\n\n## Comparison baseline\n- Manual annotation of test screenshots\n- AT-SPI data (once enabled) as ground truth\n\n## Depends on\n- Test screenshots from real apps\n- Ground truth annotations","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-17T14:13:10.038933798-08:00","updated_at":"2025-12-29T15:26:19.822655148-05:00","closed_at":"2025-12-29T15:26:19.822655148-05:00","close_reason":"Benchmark complete. Vision models excellent for semantic understanding, approximate for coordinates. Recommend hybrid AT-SPI + vision. See docs/research/vision-ui-benchmark-2025-12-29.md"}
|
{"id":"skills-ebl","title":"Benchmark vision model UI understanding","description":"## Goal\nMeasure how well vision models can answer UI questions from screenshots.\n\n## Test cases\n1. **Element location**: \"Where is the Save button?\" → coordinates\n2. **Element identification**: \"What buttons are visible?\" → list\n3. **State detection**: \"Is the checkbox checked?\" → boolean\n4. **Text extraction**: \"What does the error message say?\" → text\n5. **Layout understanding**: \"What's in the sidebar?\" → structure\n\n## Metrics\n- Accuracy: Does the answer match ground truth?\n- Precision: How close are coordinates to actual element centers?\n- Latency: Time from query to response\n- Cost: Tokens consumed per query\n\n## Prompt engineering questions\n- Does adding a grid overlay help coordinate precision?\n- What prompt format gives most actionable coordinates?\n- Can we get bounding boxes vs point coordinates?\n\n## Comparison baseline\n- Manual annotation of test screenshots\n- AT-SPI data (once enabled) as ground truth\n\n## Depends on\n- Test screenshots from real apps\n- Ground truth annotations","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-17T14:13:10.038933798-08:00","updated_at":"2025-12-29T15:26:19.822655148-05:00","closed_at":"2025-12-29T15:26:19.822655148-05:00","close_reason":"Benchmark complete. Vision models excellent for semantic understanding, approximate for coordinates. Recommend hybrid AT-SPI + vision. See docs/research/vision-ui-benchmark-2025-12-29.md"}
|
||||||
{"id":"skills-f2p","title":"Skills + Molecules Integration","description":"Integrate skills with beads molecules system.\n\nDesign work tracked in dotfiles (dotfiles-jjb).\n\nComponents:\n- Checklist support (lightweight skills)\n- Audit integration (bd audit for skill execution)\n- Skill frontmatter for triggers/tracking\n- Proto packaging alongside skills\n\nSee: ~/proj/dotfiles ADR work","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-23T17:58:55.999438985-05:00","updated_at":"2025-12-23T19:22:38.577280129-05:00","closed_at":"2025-12-23T19:22:38.577280129-05:00","close_reason":"Superseded by skills-4u0 (migrated from dotfiles)","dependencies":[{"issue_id":"skills-f2p","depends_on_id":"skills-vpy","type":"blocks","created_at":"2025-12-23T17:59:17.976956454-05:00","created_by":"daemon"},{"issue_id":"skills-f2p","depends_on_id":"skills-u3d","type":"blocks","created_at":"2025-12-23T17:59:18.015216054-05:00","created_by":"daemon"}]}
|
{"id":"skills-f2p","title":"Skills + Molecules Integration","description":"Integrate skills with beads molecules system.\n\nDesign work tracked in dotfiles (dotfiles-jjb).\n\nComponents:\n- Checklist support (lightweight skills)\n- Audit integration (bd audit for skill execution)\n- Skill frontmatter for triggers/tracking\n- Proto packaging alongside skills\n\nSee: ~/proj/dotfiles ADR work","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-23T17:58:55.999438985-05:00","updated_at":"2025-12-23T19:22:38.577280129-05:00","closed_at":"2025-12-23T19:22:38.577280129-05:00","close_reason":"Superseded by skills-4u0 (migrated from dotfiles)","dependencies":[{"issue_id":"skills-f2p","depends_on_id":"skills-vpy","type":"blocks","created_at":"2025-12-23T17:59:17.976956454-05:00","created_by":"daemon"},{"issue_id":"skills-f2p","depends_on_id":"skills-u3d","type":"blocks","created_at":"2025-12-23T17:59:18.015216054-05:00","created_by":"daemon"}]}
|
||||||
|
|
@ -175,7 +176,7 @@
|
||||||
{"id":"skills-h9f","title":"spec-review: Balance negativity bias in prompts","description":"'Be critical' and 'devil's advocate' can bias toward over-flagging without acknowledging what's good.\n\nAdd:\n- 'List top 3 strongest parts of the document'\n- 'Call out where document is sufficiently clear/testable'\n- Categorize :against concerns as confirmed/plausible/rejected","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:26.418087998-08:00","updated_at":"2025-12-15T14:07:39.520818417-08:00","closed_at":"2025-12-15T14:07:39.520818417-08:00"}
|
{"id":"skills-h9f","title":"spec-review: Balance negativity bias in prompts","description":"'Be critical' and 'devil's advocate' can bias toward over-flagging without acknowledging what's good.\n\nAdd:\n- 'List top 3 strongest parts of the document'\n- 'Call out where document is sufficiently clear/testable'\n- Categorize :against concerns as confirmed/plausible/rejected","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:26.418087998-08:00","updated_at":"2025-12-15T14:07:39.520818417-08:00","closed_at":"2025-12-15T14:07:39.520818417-08:00"}
|
||||||
{"id":"skills-hf1","title":"Cross-agent skill portability and quality gates","description":"Design and implement cross-agent skill portability and quality gates.\n\n## Problem Statement\n\nSkills and quality enforcement must work regardless of which agent is orchestrator, worker, or reviewer. Current agents (Claude, Gemini, OpenCode, Codex) have different capabilities.\n\n## Abstract Architecture\n\n### Layer 1: Message Passing\n**Purpose:** Async agent coordination, session handoffs, status updates\n\n| Requirement | Description |\n|-------------|-------------|\n| Append-only | No overwrites, git-mergeable |\n| Agent-attributed | Know which agent posted |\n| Topic-based | Namespaced conversations |\n| Async | Agents don't block each other |\n\n*Possible implementations:* jwz, beads extensions, simple JSONL files\n\n### Layer 2: Memory \n**Purpose:** Persistent work items, dependencies, review state\n\n| Requirement | Description |\n|-------------|-------------|\n| Cross-session | Survives compaction, restarts |\n| Dependency tracking | Issue X blocks issue Y |\n| Queryable | Find by status, type, assignee |\n| Git-native | Lives in repo, versioned |\n\n*Possible implementations:* beads, tissue, structured markdown\n\n### Layer 3: Enforcement\n**Purpose:** Quality gates that block completion until approved\n\n| Requirement | Description |\n|-------------|-------------|\n| Mechanical where possible | Hooks for Claude/Gemini |\n| Protocol fallback | Orchestrator-enforced for others |\n| Circuit breakers | Prevent infinite loops |\n| Reviewable | Human can inspect decisions |\n\n*Possible implementations:* Stop hooks, orchestrator gates, wrapper scripts\n\n## Goals\n\n1. **Portable skills** - Same SKILL.md works in any agent\n2. **Portable quality gates** - Adversarial review across agents\n3. **Flexible orchestration** - Any agent can play any role\n4. **Implementation-agnostic** - Swap tools without changing patterns\n\n## Completed Work\n- ADR-005: Dual-publish architecture\n- Agent capability matrix\n- Web research on patterns\n- orch integration for multi-model\n\n## Key Decisions Pending\n- Message passing: jwz vs beads vs simple files\n- Enforcement: Hook-first vs orchestrator-first\n- Reviewer: Dedicated skill vs orch consensus","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-09T17:13:48.116438862-08:00","created_by":"dan","updated_at":"2026-01-09T19:34:02.490045488-08:00","dependencies":[{"issue_id":"skills-hf1","depends_on_id":"skills-3gk","type":"blocks","created_at":"2026-01-09T17:14:26.901205948-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-fqu","type":"blocks","created_at":"2026-01-09T17:14:26.940496671-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-3ja","type":"blocks","created_at":"2026-01-09T17:14:26.97832902-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-mjf","type":"blocks","created_at":"2026-01-09T17:14:27.011077849-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-6fu","type":"blocks","created_at":"2026-01-09T17:14:27.045750539-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-bo8","type":"blocks","created_at":"2026-01-09T17:14:27.150392041-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-5kv","type":"blocks","created_at":"2026-01-09T17:14:27.192813254-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-ut4","type":"blocks","created_at":"2026-01-09T17:32:23.828114543-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-thk","type":"blocks","created_at":"2026-01-09T19:01:50.07496376-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-tta","type":"blocks","created_at":"2026-01-09T19:01:50.103539768-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-0tk","type":"blocks","created_at":"2026-01-09T19:01:50.132254456-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-0u9","type":"blocks","created_at":"2026-01-09T19:33:03.317485233-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-4fe","type":"blocks","created_at":"2026-01-09T19:33:03.359026048-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-nto","type":"blocks","created_at":"2026-01-09T19:33:03.385366262-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-8nl","type":"blocks","created_at":"2026-01-09T19:33:03.420512171-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-8sj","type":"blocks","created_at":"2026-01-09T19:33:36.855745049-08:00","created_by":"dan"}]}
|
{"id":"skills-hf1","title":"Cross-agent skill portability and quality gates","description":"Design and implement cross-agent skill portability and quality gates.\n\n## Problem Statement\n\nSkills and quality enforcement must work regardless of which agent is orchestrator, worker, or reviewer. Current agents (Claude, Gemini, OpenCode, Codex) have different capabilities.\n\n## Abstract Architecture\n\n### Layer 1: Message Passing\n**Purpose:** Async agent coordination, session handoffs, status updates\n\n| Requirement | Description |\n|-------------|-------------|\n| Append-only | No overwrites, git-mergeable |\n| Agent-attributed | Know which agent posted |\n| Topic-based | Namespaced conversations |\n| Async | Agents don't block each other |\n\n*Possible implementations:* jwz, beads extensions, simple JSONL files\n\n### Layer 2: Memory \n**Purpose:** Persistent work items, dependencies, review state\n\n| Requirement | Description |\n|-------------|-------------|\n| Cross-session | Survives compaction, restarts |\n| Dependency tracking | Issue X blocks issue Y |\n| Queryable | Find by status, type, assignee |\n| Git-native | Lives in repo, versioned |\n\n*Possible implementations:* beads, tissue, structured markdown\n\n### Layer 3: Enforcement\n**Purpose:** Quality gates that block completion until approved\n\n| Requirement | Description |\n|-------------|-------------|\n| Mechanical where possible | Hooks for Claude/Gemini |\n| Protocol fallback | Orchestrator-enforced for others |\n| Circuit breakers | Prevent infinite loops |\n| Reviewable | Human can inspect decisions |\n\n*Possible implementations:* Stop hooks, orchestrator gates, wrapper scripts\n\n## Goals\n\n1. **Portable skills** - Same SKILL.md works in any agent\n2. **Portable quality gates** - Adversarial review across agents\n3. **Flexible orchestration** - Any agent can play any role\n4. **Implementation-agnostic** - Swap tools without changing patterns\n\n## Completed Work\n- ADR-005: Dual-publish architecture\n- Agent capability matrix\n- Web research on patterns\n- orch integration for multi-model\n\n## Key Decisions Pending\n- Message passing: jwz vs beads vs simple files\n- Enforcement: Hook-first vs orchestrator-first\n- Reviewer: Dedicated skill vs orch consensus","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-09T17:13:48.116438862-08:00","created_by":"dan","updated_at":"2026-01-09T19:34:02.490045488-08:00","dependencies":[{"issue_id":"skills-hf1","depends_on_id":"skills-3gk","type":"blocks","created_at":"2026-01-09T17:14:26.901205948-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-fqu","type":"blocks","created_at":"2026-01-09T17:14:26.940496671-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-3ja","type":"blocks","created_at":"2026-01-09T17:14:26.97832902-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-mjf","type":"blocks","created_at":"2026-01-09T17:14:27.011077849-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-6fu","type":"blocks","created_at":"2026-01-09T17:14:27.045750539-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-bo8","type":"blocks","created_at":"2026-01-09T17:14:27.150392041-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-5kv","type":"blocks","created_at":"2026-01-09T17:14:27.192813254-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-ut4","type":"blocks","created_at":"2026-01-09T17:32:23.828114543-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-thk","type":"blocks","created_at":"2026-01-09T19:01:50.07496376-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-tta","type":"blocks","created_at":"2026-01-09T19:01:50.103539768-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-0tk","type":"blocks","created_at":"2026-01-09T19:01:50.132254456-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-0u9","type":"blocks","created_at":"2026-01-09T19:33:03.317485233-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-4fe","type":"blocks","created_at":"2026-01-09T19:33:03.359026048-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-nto","type":"blocks","created_at":"2026-01-09T19:33:03.385366262-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-8nl","type":"blocks","created_at":"2026-01-09T19:33:03.420512171-08:00","created_by":"dan"},{"issue_id":"skills-hf1","depends_on_id":"skills-8sj","type":"blocks","created_at":"2026-01-09T19:33:36.855745049-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-hgm","title":"Add tests for agent file update logic","description":"File: .specify/scripts/bash/update-agent-context.sh (lines 360-499)\n\nCritical logic with NO test coverage:\n- Malformed agent files (missing sections)\n- Multiple section headers on same line\n- Empty file handling\n- Timestamp update verification\n- State machine correctness\n\nRisk: HIGH - corrupts agent context files on failure\n\nFix:\n- Create test fixtures for various file states\n- Test each state transition\n- Verify idempotency\n\nSeverity: HIGH","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:51:00.793493549-05:00","updated_at":"2026-01-02T02:12:09.368531967-05:00","closed_at":"2026-01-02T02:12:09.368531967-05:00","close_reason":"33 tests added covering all major code paths. Also fixed bug where Recent Changes section was skipped when preceded by Active Technologies."}
|
{"id":"skills-hgm","title":"Add tests for agent file update logic","description":"File: .specify/scripts/bash/update-agent-context.sh (lines 360-499)\n\nCritical logic with NO test coverage:\n- Malformed agent files (missing sections)\n- Multiple section headers on same line\n- Empty file handling\n- Timestamp update verification\n- State machine correctness\n\nRisk: HIGH - corrupts agent context files on failure\n\nFix:\n- Create test fixtures for various file states\n- Test each state transition\n- Verify idempotency\n\nSeverity: HIGH","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:51:00.793493549-05:00","updated_at":"2026-01-02T02:12:09.368531967-05:00","closed_at":"2026-01-02T02:12:09.368531967-05:00","close_reason":"33 tests added covering all major code paths. Also fixed bug where Recent Changes section was skipped when preceded by Active Technologies."}
|
||||||
{"id":"skills-hh2","title":"skill: rename_symbol with LSP + validation","description":"Skill that performs safe renames:\n1. Uses LSP textDocument/rename\n2. Runs formatters\n3. Checks LSP diagnostics post-rename\n4. Opens bead if errors remain\n5. Updates doc references using hover/signatureHelp\n\nInput: new name, scope. Output: clean rename or bead with issues.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-24T02:29:56.87156069-05:00","updated_at":"2025-12-24T02:29:56.87156069-05:00","dependencies":[{"issue_id":"skills-hh2","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.583813579-05:00","created_by":"daemon"}]}
|
{"id":"skills-hh2","title":"skill: rename_symbol with LSP + validation","description":"Skill that performs safe renames:\n1. Uses LSP textDocument/rename\n2. Runs formatters\n3. Checks LSP diagnostics post-rename\n4. Opens bead if errors remain\n5. Updates doc references using hover/signatureHelp\n\nInput: new name, scope. Output: clean rename or bead with issues.","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-24T02:29:56.87156069-05:00","updated_at":"2026-01-15T19:19:23.023615449-08:00","dependencies":[{"issue_id":"skills-hh2","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.583813579-05:00","created_by":"daemon"},{"issue_id":"skills-hh2","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:27.770802335-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-hhz","title":"Add doc-review skill","description":"Create skill for doc-review CLI tool (~/proj/doc-review). Tool lints markdown docs for AI agent consumption using Vale + LLM hybrid architecture. Needs: 1) flake.nix in doc-review project, 2) skill SKILL.md, 3) register in availableSkills","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T11:24:41.321478346-05:00","created_by":"dan","updated_at":"2025-12-31T00:00:30.74314365-05:00","closed_at":"2025-12-31T00:00:30.74314365-05:00","close_reason":"doc-review skill created in skills/doc-review/SKILL.md"}
|
{"id":"skills-hhz","title":"Add doc-review skill","description":"Create skill for doc-review CLI tool (~/proj/doc-review). Tool lints markdown docs for AI agent consumption using Vale + LLM hybrid architecture. Needs: 1) flake.nix in doc-review project, 2) skill SKILL.md, 3) register in availableSkills","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T11:24:41.321478346-05:00","created_by":"dan","updated_at":"2025-12-31T00:00:30.74314365-05:00","closed_at":"2025-12-31T00:00:30.74314365-05:00","close_reason":"doc-review skill created in skills/doc-review/SKILL.md"}
|
||||||
{"id":"skills-hin","title":"ADR: Skills and Molecules Integration Design","description":"Write Architecture Decision Record documenting:\n- Current state (skills via Nix/direnv, molecules via beads)\n- Decision to link via skill: references\n- Wisp trace format spec\n- Elevation pipeline design\n- Anti-patterns to avoid\n\nLocation: docs/adr/001-skills-molecules-integration.md\n\nMigrated from dotfiles-dn8 (was in_progress).\n\n## Current State\n- ADR-001 drafted (high-level integration)\n- ADR-002, 003, 004 drafted and revised (manifest, versioning, security)\n- Orch consensus feedback incorporated\n\n## Parked\nDeferring finalization until we see Steve Yegge's new orchestration work and how it might inform our design.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:47.568903148-05:00","updated_at":"2025-12-28T23:27:42.117722575-05:00","closed_at":"2025-12-28T23:27:42.117722575-05:00","close_reason":"Parked: ADR updated to 'Parked' status. Current simpler approach (skills as standalone, agent judgment) works well. Molecules not actively used. Revisit when orchestration needs grow."}
|
{"id":"skills-hin","title":"ADR: Skills and Molecules Integration Design","description":"Write Architecture Decision Record documenting:\n- Current state (skills via Nix/direnv, molecules via beads)\n- Decision to link via skill: references\n- Wisp trace format spec\n- Elevation pipeline design\n- Anti-patterns to avoid\n\nLocation: docs/adr/001-skills-molecules-integration.md\n\nMigrated from dotfiles-dn8 (was in_progress).\n\n## Current State\n- ADR-001 drafted (high-level integration)\n- ADR-002, 003, 004 drafted and revised (manifest, versioning, security)\n- Orch consensus feedback incorporated\n\n## Parked\nDeferring finalization until we see Steve Yegge's new orchestration work and how it might inform our design.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:47.568903148-05:00","updated_at":"2025-12-28T23:27:42.117722575-05:00","closed_at":"2025-12-28T23:27:42.117722575-05:00","close_reason":"Parked: ADR updated to 'Parked' status. Current simpler approach (skills as standalone, agent judgment) works well. Molecules not actively used. Revisit when orchestration needs grow."}
|
||||||
{"id":"skills-hx1n","title":"Return status from startGlobalHeartbeat when already running","description":"[ERROR] LOW heartbeat.nim:107-108 - startGlobalHeartbeat silently returns if already running. Return bool or log that heartbeat is already active.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:46.122435219-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.031696989-08:00","closed_at":"2026-01-11T15:46:39.031696989-08:00","close_reason":"Closed"}
|
{"id":"skills-hx1n","title":"Return status from startGlobalHeartbeat when already running","description":"[ERROR] LOW heartbeat.nim:107-108 - startGlobalHeartbeat silently returns if already running. Return bool or log that heartbeat is already active.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:46.122435219-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.031696989-08:00","closed_at":"2026-01-11T15:46:39.031696989-08:00","close_reason":"Closed"}
|
||||||
|
|
@ -185,14 +186,14 @@
|
||||||
{"id":"skills-itwv","title":"Optimize isInWorktree to avoid full context parse","description":"[SMELL] LOW context.nim:41 - isInWorktree parses entire JSON just to return bool. Add findContextPath() returning Option[string], use in both places.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.716351254-08:00","created_by":"dan","updated_at":"2026-01-10T20:10:03.716351254-08:00"}
|
{"id":"skills-itwv","title":"Optimize isInWorktree to avoid full context parse","description":"[SMELL] LOW context.nim:41 - isInWorktree parses entire JSON just to return bool. Add findContextPath() returning Option[string], use in both places.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.716351254-08:00","created_by":"dan","updated_at":"2026-01-10T20:10:03.716351254-08:00"}
|
||||||
{"id":"skills-iusu","title":"Evaluate bd comments as message layer","description":"Can bd comments replace the designed message passing layer (skills-ms5)?\n\nEvaluate:\n- Append-only thread per issue ✓\n- JSON output available ✓\n- Context size concerns (many comments = big context)\n- Need --last N filtering?\n- Need summary/archival feature?\n- Cross-agent compatibility (any agent with bd access)\n\nCompare with skills-ms5 JSONL design.\nRecommend: extend bd or keep separate?\n\nIf bd works, can close skills-ms5 as \"solved by bd comments\"","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T21:06:35.055196887-08:00","created_by":"dan","updated_at":"2026-01-11T21:23:19.256166666-08:00","closed_at":"2026-01-11T21:23:19.256166666-08:00","close_reason":"Evaluation complete - orch consensus (flash-or, gemini, gpt, qwen) unanimously supports bd comments with --last N filtering and periodic summarization","comments":[{"id":2,"issue_id":"skills-iusu","author":"dan","text":"ORCH CONSENSUS RESULT (flash-or, gemini, gpt, qwen):\nUnanimous support for Option A - use bd comments as message layer.\n\nKey recommendations:\n- Add --last N filtering for context management\n- Use structured prefixes (status:, agent:, plan:)\n- Periodic summarization comments\n- No need for separate JSONL layer\n\nRecommendation: Close skills-ms5 as 'solved by bd comments' after implementing context management features in bd.","created_at":"2026-01-12T05:12:44Z"}]}
|
{"id":"skills-iusu","title":"Evaluate bd comments as message layer","description":"Can bd comments replace the designed message passing layer (skills-ms5)?\n\nEvaluate:\n- Append-only thread per issue ✓\n- JSON output available ✓\n- Context size concerns (many comments = big context)\n- Need --last N filtering?\n- Need summary/archival feature?\n- Cross-agent compatibility (any agent with bd access)\n\nCompare with skills-ms5 JSONL design.\nRecommend: extend bd or keep separate?\n\nIf bd works, can close skills-ms5 as \"solved by bd comments\"","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T21:06:35.055196887-08:00","created_by":"dan","updated_at":"2026-01-11T21:23:19.256166666-08:00","closed_at":"2026-01-11T21:23:19.256166666-08:00","close_reason":"Evaluation complete - orch consensus (flash-or, gemini, gpt, qwen) unanimously supports bd comments with --last N filtering and periodic summarization","comments":[{"id":2,"issue_id":"skills-iusu","author":"dan","text":"ORCH CONSENSUS RESULT (flash-or, gemini, gpt, qwen):\nUnanimous support for Option A - use bd comments as message layer.\n\nKey recommendations:\n- Add --last N filtering for context management\n- Use structured prefixes (status:, agent:, plan:)\n- Periodic summarization comments\n- No need for separate JSONL layer\n\nRecommendation: Close skills-ms5 as 'solved by bd comments' after implementing context management features in bd.","created_at":"2026-01-12T05:12:44Z"}]}
|
||||||
{"id":"skills-j2a","title":"worklog: consolidate git commands into extract-metrics.sh","description":"Context Gathering section has raw git commands, but extract-metrics.sh also exists. Feature envy - split logic. Move all git context gathering into the script, skill makes single call. Found by smells lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:16.478103649-05:00","updated_at":"2025-12-27T10:11:48.158176684-05:00","closed_at":"2025-12-27T10:11:48.158176684-05:00","close_reason":"Closed"}
|
{"id":"skills-j2a","title":"worklog: consolidate git commands into extract-metrics.sh","description":"Context Gathering section has raw git commands, but extract-metrics.sh also exists. Feature envy - split logic. Move all git context gathering into the script, skill makes single call. Found by smells lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:16.478103649-05:00","updated_at":"2025-12-27T10:11:48.158176684-05:00","closed_at":"2025-12-27T10:11:48.158176684-05:00","close_reason":"Closed"}
|
||||||
{"id":"skills-jbo","title":"Skills: verify symbols via LSP before suggesting","description":"Inversion: let LSP answer facts, let models answer strategy.\n\nBefore Claude suggests using a function/type:\n- Verify existence via workspace/symbol or go-to-definition\n- If not found, propose alternatives that ARE found\n- Gather definition, references, inferred types, diagnostics as context\n\nReduces hallucinated APIs and grounds patches in reality.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-24T02:29:56.391182872-05:00","updated_at":"2025-12-24T02:29:56.391182872-05:00","dependencies":[{"issue_id":"skills-jbo","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.529604354-05:00","created_by":"daemon"}]}
|
{"id":"skills-jbo","title":"Skills: verify symbols via LSP before suggesting","description":"Inversion: let LSP answer facts, let models answer strategy.\n\nBefore Claude suggests using a function/type:\n- Verify existence via workspace/symbol or go-to-definition\n- If not found, propose alternatives that ARE found\n- Gather definition, references, inferred types, diagnostics as context\n\nReduces hallucinated APIs and grounds patches in reality.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-24T02:29:56.391182872-05:00","updated_at":"2026-01-15T19:17:23.854567537-08:00","dependencies":[{"issue_id":"skills-jbo","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.529604354-05:00","created_by":"daemon"},{"issue_id":"skills-jbo","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:28.128364288-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-jeb","title":"Define wisp execution trace format","description":"Design structured format for skill execution traces in wisps:\n- skill_version (git SHA + flake hash)\n- inputs (context refs, env vars)\n- tool_calls [{cmd, args, exit_code, duration}]\n- checkpoints [{step, summary, timestamp}]\n- outputs (file diffs or refs)\n\nEnable: replay, diff traces, regression testing\n\nMigrated from dotfiles-ub9.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:57.896088397-05:00","updated_at":"2025-12-29T13:55:35.797116947-05:00","closed_at":"2025-12-29T13:55:35.797116947-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-jeb","depends_on_id":"skills-hin","type":"blocks","created_at":"2025-12-23T19:21:39.588011474-05:00","created_by":"dan"},{"issue_id":"skills-jeb","depends_on_id":"skills-gq9","type":"blocks","created_at":"2025-12-23T19:50:10.069841366-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-be3","type":"blocks","created_at":"2025-12-23T19:50:10.117400312-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-ty7","type":"blocks","created_at":"2025-12-23T19:50:10.163656807-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-6gw","type":"blocks","created_at":"2025-12-23T19:50:10.202702536-05:00","created_by":"daemon"}]}
|
{"id":"skills-jeb","title":"Define wisp execution trace format","description":"Design structured format for skill execution traces in wisps:\n- skill_version (git SHA + flake hash)\n- inputs (context refs, env vars)\n- tool_calls [{cmd, args, exit_code, duration}]\n- checkpoints [{step, summary, timestamp}]\n- outputs (file diffs or refs)\n\nEnable: replay, diff traces, regression testing\n\nMigrated from dotfiles-ub9.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:57.896088397-05:00","updated_at":"2025-12-29T13:55:35.797116947-05:00","closed_at":"2025-12-29T13:55:35.797116947-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-jeb","depends_on_id":"skills-hin","type":"blocks","created_at":"2025-12-23T19:21:39.588011474-05:00","created_by":"dan"},{"issue_id":"skills-jeb","depends_on_id":"skills-gq9","type":"blocks","created_at":"2025-12-23T19:50:10.069841366-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-be3","type":"blocks","created_at":"2025-12-23T19:50:10.117400312-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-ty7","type":"blocks","created_at":"2025-12-23T19:50:10.163656807-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-6gw","type":"blocks","created_at":"2025-12-23T19:50:10.202702536-05:00","created_by":"daemon"}]}
|
||||||
{"id":"skills-jz5x","title":"worker CLI: spawn requires named arguments --taskId","status":"open","priority":3,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-12T21:03:49.447810213-08:00","created_by":"dan","updated_at":"2026-01-12T21:03:49.447810213-08:00"}
|
{"id":"skills-jz5x","title":"worker CLI: spawn requires named arguments --taskId","status":"open","priority":3,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-12T21:03:49.447810213-08:00","created_by":"dan","updated_at":"2026-01-12T21:03:49.447810213-08:00"}
|
||||||
{"id":"skills-kg7","title":"Desktop automation for Wayland/niri","description":"Explore and implement desktop automation solutions for Wayland (niri compositor).\n\n## The Seeing Problem\n\nHow can an AI agent understand what's on screen?\n\n### Layers (bottom to top)\n1. **Window awareness** - what's open, app_id, title → niri IPC ✅\n2. **Window geometry** - size, position, monitor → niri IPC ✅\n3. **Pixel capture** - screenshots → niri screenshot-window ✅\n4. **Understanding** - UI elements, coordinates, semantics → **GAP**\n\n### Two paths to understanding (layer 4)\n\n**Path A: AT-SPI (structured)**\n- Pros: precise coordinates, semantic element types, states\n- Cons: runtime overhead, requires NixOS config, app compliance varies\n- Coverage: GTK ✅, Qt (with env var), Electron ❓\n\n**Path B: Vision model (visual)**\n- Pros: universal (works on any pixels), no system config needed\n- Cons: API latency, token cost, coordinate precision unclear\n- Coverage: anything visible ✅\n\n### Hybrid approach\nRun both, benchmark tradeoffs:\n- AT-SPI overhead vs query precision\n- Vision model latency/cost vs coverage\n- When to use which (or both for validation)\n\n## What we have\n- niri-window-capture skill (screenshots, window list)\n- niri IPC for window/monitor geometry\n\n## Context\nWayland's security model blocks X11-style automation. Solutions require:\n- Compositor-specific IPC (niri msg)\n- App opt-in via AT-SPI accessibility\n- Or vision model interpretation of pixels","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-17T12:42:17.863074501-08:00","updated_at":"2026-01-15T19:15:46.134464754-08:00","closed_at":"2026-01-15T19:15:46.134464754-08:00","close_reason":"Research phase complete. Deliverables:\n\n**Skills created:**\n- niri-window-capture: Visual screenshots of any window\n- ui-query: AT-SPI semantic queries (list-windows, get-text, find-element, query-state, benchmark)\n\n**Benchmark findings:**\n- AT-SPI: 4.6s enumeration for 792 elements, 1.7s find-by-role. GTK excellent, Firefox needs config, terminals limited.\n- Vision: Works universally but has API latency/cost tradeoffs.\n\n**Hybrid strategy validated:** Use AT-SPI for GTK apps with good coverage, fall back to vision for others. Both complement each other - AT-SPI for precision, vision for universality.\n\nFuture work: actual click/type automation via ydotool or similar.","dependencies":[{"issue_id":"skills-kg7","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T13:59:59.915105471-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-ebl","type":"blocks","created_at":"2025-12-17T14:13:41.679692009-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-bww","type":"blocks","created_at":"2025-12-17T14:13:41.725196677-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-kg7","title":"Desktop automation for Wayland/niri","description":"Explore and implement desktop automation solutions for Wayland (niri compositor).\n\n## The Seeing Problem\n\nHow can an AI agent understand what's on screen?\n\n### Layers (bottom to top)\n1. **Window awareness** - what's open, app_id, title → niri IPC ✅\n2. **Window geometry** - size, position, monitor → niri IPC ✅\n3. **Pixel capture** - screenshots → niri screenshot-window ✅\n4. **Understanding** - UI elements, coordinates, semantics → **GAP**\n\n### Two paths to understanding (layer 4)\n\n**Path A: AT-SPI (structured)**\n- Pros: precise coordinates, semantic element types, states\n- Cons: runtime overhead, requires NixOS config, app compliance varies\n- Coverage: GTK ✅, Qt (with env var), Electron ❓\n\n**Path B: Vision model (visual)**\n- Pros: universal (works on any pixels), no system config needed\n- Cons: API latency, token cost, coordinate precision unclear\n- Coverage: anything visible ✅\n\n### Hybrid approach\nRun both, benchmark tradeoffs:\n- AT-SPI overhead vs query precision\n- Vision model latency/cost vs coverage\n- When to use which (or both for validation)\n\n## What we have\n- niri-window-capture skill (screenshots, window list)\n- niri IPC for window/monitor geometry\n\n## Context\nWayland's security model blocks X11-style automation. Solutions require:\n- Compositor-specific IPC (niri msg)\n- App opt-in via AT-SPI accessibility\n- Or vision model interpretation of pixels","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-17T12:42:17.863074501-08:00","updated_at":"2026-01-15T19:15:46.134464754-08:00","closed_at":"2026-01-15T19:15:46.134464754-08:00","close_reason":"Research phase complete. Deliverables:\n\n**Skills created:**\n- niri-window-capture: Visual screenshots of any window\n- ui-query: AT-SPI semantic queries (list-windows, get-text, find-element, query-state, benchmark)\n\n**Benchmark findings:**\n- AT-SPI: 4.6s enumeration for 792 elements, 1.7s find-by-role. GTK excellent, Firefox needs config, terminals limited.\n- Vision: Works universally but has API latency/cost tradeoffs.\n\n**Hybrid strategy validated:** Use AT-SPI for GTK apps with good coverage, fall back to vision for others. Both complement each other - AT-SPI for precision, vision for universality.\n\nFuture work: actual click/type automation via ydotool or similar.","dependencies":[{"issue_id":"skills-kg7","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T13:59:59.915105471-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-ebl","type":"blocks","created_at":"2025-12-17T14:13:41.679692009-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-bww","type":"blocks","created_at":"2025-12-17T14:13:41.725196677-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-kmj","title":"Orch skill: document or handle orch not in PATH","description":"Skill docs show 'orch consensus' but orch requires 'uv run' from ~/proj/orch. Either update skill to invoke correctly or document installation requirement.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T17:29:48.844997238-08:00","updated_at":"2025-12-01T18:28:11.374048504-08:00","closed_at":"2025-12-01T18:28:11.374048504-08:00"}
|
{"id":"skills-kmj","title":"Orch skill: document or handle orch not in PATH","description":"Skill docs show 'orch consensus' but orch requires 'uv run' from ~/proj/orch. Either update skill to invoke correctly or document installation requirement.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T17:29:48.844997238-08:00","updated_at":"2025-12-01T18:28:11.374048504-08:00","closed_at":"2025-12-01T18:28:11.374048504-08:00"}
|
||||||
{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.754197256-08:00","closed_at":"2026-01-10T20:37:04.754197256-08:00","close_reason":"Implemented consistent error handling strategy"}
|
{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.754197256-08:00","closed_at":"2026-01-10T20:37:04.754197256-08:00","close_reason":"Implemented consistent error handling strategy"}
|
||||||
{"id":"skills-kvdl","title":"Remove unused globalChannel variable in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:37 - globalChannel declared but never used. Compiler warns about this. Delete unused variable.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.125528634-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.733773826-08:00","closed_at":"2026-01-10T20:24:43.733773826-08:00","close_reason":"Fixed: removed unused globalChannel in heartbeat.nim rewrite"}
|
{"id":"skills-kvdl","title":"Remove unused globalChannel variable in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:37 - globalChannel declared but never used. Compiler warns about this. Delete unused variable.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.125528634-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.733773826-08:00","closed_at":"2026-01-10T20:24:43.733773826-08:00","close_reason":"Fixed: removed unused globalChannel in heartbeat.nim rewrite"}
|
||||||
{"id":"skills-le9","title":"beads new --from-cursor: capture symbol context","description":"When creating a bead, auto-capture LSP context:\n- Current symbol FQN (fully qualified name)\n- Definition snippet\n- Top 10 references/callers\n- Current diagnostics for the symbol\n\nMakes beads self-contained without copy/paste archaeology. Symbol URI allows jumping back to exact location even if file moved.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-24T02:29:55.989876856-05:00","updated_at":"2025-12-24T02:29:55.989876856-05:00","dependencies":[{"issue_id":"skills-le9","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.416484732-05:00","created_by":"daemon"}]}
|
{"id":"skills-le9","title":"beads new --from-cursor: capture symbol context","description":"When creating a bead, auto-capture LSP context:\n- Current symbol FQN (fully qualified name)\n- Definition snippet\n- Top 10 references/callers\n- Current diagnostics for the symbol\n\nMakes beads self-contained without copy/paste archaeology. Symbol URI allows jumping back to exact location even if file moved.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-24T02:29:55.989876856-05:00","updated_at":"2026-01-15T19:19:22.836951456-08:00","dependencies":[{"issue_id":"skills-le9","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.416484732-05:00","created_by":"daemon"},{"issue_id":"skills-le9","depends_on_id":"skills-9w1e","type":"blocks","created_at":"2026-01-15T19:19:27.544753088-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-legi","title":"Add Codex per-repo skills support in use-skills.sh","description":"Changes staged locally in skills repo: bin/use-skills.sh now links to /skills when CODEX_HOME is set; docs updated (RFC-SKILLS-MANIFEST.md, PER-REPO-SKILLS.md) to document Codex per-repo flow and .codex/skills/ gitignore. Next steps: commit/push skills repo changes, then update dotfiles flake input to a clean rev (remove dirtyRev) after pull.","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-13T06:50:06.197221856-08:00","created_by":"dan","updated_at":"2026-01-13T06:51:03.17860622-08:00","closed_at":"2026-01-13T06:51:03.17860622-08:00","close_reason":"Committed on integration branch"}
|
{"id":"skills-legi","title":"Add Codex per-repo skills support in use-skills.sh","description":"Changes staged locally in skills repo: bin/use-skills.sh now links to /skills when CODEX_HOME is set; docs updated (RFC-SKILLS-MANIFEST.md, PER-REPO-SKILLS.md) to document Codex per-repo flow and .codex/skills/ gitignore. Next steps: commit/push skills repo changes, then update dotfiles flake input to a clean rev (remove dirtyRev) after pull.","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-13T06:50:06.197221856-08:00","created_by":"dan","updated_at":"2026-01-13T06:51:03.17860622-08:00","closed_at":"2026-01-13T06:51:03.17860622-08:00","close_reason":"Committed on integration branch"}
|
||||||
{"id":"skills-lie","title":"Compare DEPENDENCIES.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:53.925914243-08:00","updated_at":"2025-12-03T20:19:28.665641809-08:00","closed_at":"2025-12-03T20:19:28.665641809-08:00","dependencies":[{"issue_id":"skills-lie","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.9275694-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-lie","title":"Compare DEPENDENCIES.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:53.925914243-08:00","updated_at":"2025-12-03T20:19:28.665641809-08:00","closed_at":"2025-12-03T20:19:28.665641809-08:00","dependencies":[{"issue_id":"skills-lie","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.9275694-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-lr29","title":"review-gate: CI/test gates before approve","description":"**Raised by:** flash-or, gemini, gpt (all three)\n\n**Problem:**\n\"Tests pass\" is vague. HQ is an LLM reviewing text, not behavior. It might approve code that looks correct but fails tests or doesn't build. \"LGTM syndrome.\"\n\n**flash-or:**\n\u003e \"The worker state IN_REVIEW should be unreachable unless a 'worker test' command (or CI check) returns a success code. HQ should see the test logs *before* the diff.\"\n\n**gemini:**\n\u003e \"HQ is reviewing text, not behavior. The review phase *must* include a tool output proving success. 'worker approve' should arguably be blocked unless 'worker test-results' returns PASS.\"\n\n**gpt:**\n\u003e \"'Tests pass' is necessary but not sufficient. Flaky tests will cause thrash. Define test tiers and when each is required. Add a 'post-merge verification' stage.\"\n\n**Suggested fixes:**\n1. worker verify \u003ctask-id\u003e command that runs CI checks\n2. IN_REVIEW requires test pass proof\n3. Approve blocked unless test output verified\n4. Post-merge CI verification before bd close\n5. Test tier definitions (unit, integration, e2e)\n6. Flake handling policy","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:21:27.600572533-08:00","created_by":"dan","updated_at":"2026-01-12T09:42:02.492169038-08:00","comments":[{"id":9,"issue_id":"skills-lr29","author":"dan","text":"[RECLASSIFY:2026-01-12T09:42:02-08:00] Moved from HQ to review-gate layer.\n\nThis is quality enforcement, not orchestration. review-gate should verify tests pass before allowing approve. HQ just respects the gate.","created_at":"2026-01-12T17:42:02Z"}]}
|
{"id":"skills-lr29","title":"review-gate: CI/test gates before approve","description":"**Raised by:** flash-or, gemini, gpt (all three)\n\n**Problem:**\n\"Tests pass\" is vague. HQ is an LLM reviewing text, not behavior. It might approve code that looks correct but fails tests or doesn't build. \"LGTM syndrome.\"\n\n**flash-or:**\n\u003e \"The worker state IN_REVIEW should be unreachable unless a 'worker test' command (or CI check) returns a success code. HQ should see the test logs *before* the diff.\"\n\n**gemini:**\n\u003e \"HQ is reviewing text, not behavior. The review phase *must* include a tool output proving success. 'worker approve' should arguably be blocked unless 'worker test-results' returns PASS.\"\n\n**gpt:**\n\u003e \"'Tests pass' is necessary but not sufficient. Flaky tests will cause thrash. Define test tiers and when each is required. Add a 'post-merge verification' stage.\"\n\n**Suggested fixes:**\n1. worker verify \u003ctask-id\u003e command that runs CI checks\n2. IN_REVIEW requires test pass proof\n3. Approve blocked unless test output verified\n4. Post-merge CI verification before bd close\n5. Test tier definitions (unit, integration, e2e)\n6. Flake handling policy","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T09:21:27.600572533-08:00","created_by":"dan","updated_at":"2026-01-12T09:42:02.492169038-08:00","comments":[{"id":9,"issue_id":"skills-lr29","author":"dan","text":"[RECLASSIFY:2026-01-12T09:42:02-08:00] Moved from HQ to review-gate layer.\n\nThis is quality enforcement, not orchestration. review-gate should verify tests pass before allowing approve. HQ just respects the gate.","created_at":"2026-01-12T17:42:02Z"}]}
|
||||||
|
|
@ -250,7 +251,7 @@
|
||||||
{"id":"skills-ty7","title":"Define trace levels (audit vs debug)","description":"Two trace levels to manage noise vs utility:\n\n1. Audit trace (minimal, safe, always on):\n - skill id/ref, start/end\n - high-level checkpoints\n - artifact hashes/paths\n - exit status\n\n2. Debug trace (opt-in, verbose):\n - tool calls with args\n - stdout/stderr snippets\n - expanded inputs\n - timing details\n\nConsider OpenTelemetry span model as reference.\nGPT proposed this; Gemini focused on rotation/caps instead.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:49:48.514684945-05:00","updated_at":"2025-12-29T13:55:35.838961236-05:00","closed_at":"2025-12-29T13:55:35.838961236-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed."}
|
{"id":"skills-ty7","title":"Define trace levels (audit vs debug)","description":"Two trace levels to manage noise vs utility:\n\n1. Audit trace (minimal, safe, always on):\n - skill id/ref, start/end\n - high-level checkpoints\n - artifact hashes/paths\n - exit status\n\n2. Debug trace (opt-in, verbose):\n - tool calls with args\n - stdout/stderr snippets\n - expanded inputs\n - timing details\n\nConsider OpenTelemetry span model as reference.\nGPT proposed this; Gemini focused on rotation/caps instead.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:49:48.514684945-05:00","updated_at":"2025-12-29T13:55:35.838961236-05:00","closed_at":"2025-12-29T13:55:35.838961236-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed."}
|
||||||
{"id":"skills-u3d","title":"Define skill trigger conditions","description":"How does an agent know WHEN to apply a skill/checklist?\n\nOptions:\n- frontmatter triggers: field with patterns\n- File-based detection\n- Agent judgment from description\n- Beads hooks on state transitions\n- LLM-based pattern detection","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T17:59:09.69468767-05:00","updated_at":"2025-12-28T22:25:38.579989006-05:00","closed_at":"2025-12-28T22:25:38.579989006-05:00","close_reason":"Resolved: agent judgment from description is the standard. Good descriptions + 'When to Use' sections are sufficient. No new trigger mechanism needed - would add complexity without clear benefit."}
|
{"id":"skills-u3d","title":"Define skill trigger conditions","description":"How does an agent know WHEN to apply a skill/checklist?\n\nOptions:\n- frontmatter triggers: field with patterns\n- File-based detection\n- Agent judgment from description\n- Beads hooks on state transitions\n- LLM-based pattern detection","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T17:59:09.69468767-05:00","updated_at":"2025-12-28T22:25:38.579989006-05:00","closed_at":"2025-12-28T22:25:38.579989006-05:00","close_reason":"Resolved: agent judgment from description is the standard. Good descriptions + 'When to Use' sections are sufficient. No new trigger mechanism needed - would add complexity without clear benefit."}
|
||||||
{"id":"skills-uan","title":"worklog: merge Guidelines and Remember sections","description":"Guidelines (8 points) and Remember (6 points) sections overlap significantly - both emphasize comprehensiveness, future context, semantic compression. Consolidate into single principles list. Found by bloat lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:16.148596791-05:00","updated_at":"2025-12-27T10:05:51.527595332-05:00","closed_at":"2025-12-27T10:05:51.527595332-05:00","close_reason":"Closed"}
|
{"id":"skills-uan","title":"worklog: merge Guidelines and Remember sections","description":"Guidelines (8 points) and Remember (6 points) sections overlap significantly - both emphasize comprehensiveness, future context, semantic compression. Consolidate into single principles list. Found by bloat lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:16.148596791-05:00","updated_at":"2025-12-27T10:05:51.527595332-05:00","closed_at":"2025-12-27T10:05:51.527595332-05:00","close_reason":"Closed"}
|
||||||
{"id":"skills-udu","title":"Design: Cross-agent compatibility layer","description":"Make primitives work with Claude, Gemini, Codex, etc.\n\n## Challenge\nDifferent agents have different:\n- CLI interfaces (claude -p, gemini, codex)\n- Permission models\n- Hook support (Claude has Stop hooks, others don't)\n\n## Approach\nworker spawn abstracts the agent:\n worker spawn --agent=claude \"task\"\n worker spawn --agent=gemini \"task\"\n worker spawn --agent=codex \"task\"\n\nEach agent adapter handles:\n- Command-line invocation\n- Output capture\n- Permission prompt detection\n- Completion detection\n\n## File-based coordination\nAll agents can read/write files.\n.worker-state/ is the universal interface.\nNo agent-specific hooks required for coordination.\n\n## Hook-enhanced (optional)\nClaude: Stop hook for hard gating\nOthers: Orchestrator polling for soft gating","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:51.639787315-08:00","created_by":"dan","updated_at":"2026-01-10T12:14:51.639787315-08:00","dependencies":[{"issue_id":"skills-udu","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.2649542-08:00","created_by":"dan"}],"comments":[{"id":16,"issue_id":"skills-udu","author":"dan","text":"[HQ:status:2026-01-12T13:52:39-08:00] Decided against --agent flag. Cross-agent instructions added directly to HQ SKILL.md instead. Simpler approach - HQ just runs bash commands per agent type. See 'Cross-Agent Compatibility' and 'Launch by Agent Type' sections.","created_at":"2026-01-12T21:52:39Z"}]}
|
{"id":"skills-udu","title":"Design: Cross-agent compatibility layer","description":"Make primitives work with Claude, Gemini, Codex, etc.\n\n## Challenge\nDifferent agents have different:\n- CLI interfaces (claude -p, gemini, codex)\n- Permission models\n- Hook support (Claude has Stop hooks, others don't)\n\n## Approach\nworker spawn abstracts the agent:\n worker spawn --agent=claude \"task\"\n worker spawn --agent=gemini \"task\"\n worker spawn --agent=codex \"task\"\n\nEach agent adapter handles:\n- Command-line invocation\n- Output capture\n- Permission prompt detection\n- Completion detection\n\n## File-based coordination\nAll agents can read/write files.\n.worker-state/ is the universal interface.\nNo agent-specific hooks required for coordination.\n\n## Hook-enhanced (optional)\nClaude: Stop hook for hard gating\nOthers: Orchestrator polling for soft gating","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:51.639787315-08:00","created_by":"dan","updated_at":"2026-01-15T19:59:03.838001968-08:00","closed_at":"2026-01-15T19:59:03.838001968-08:00","close_reason":"Superseded. Cross-agent instructions added to HQ SKILL.md directly instead of --agent flag approach.","dependencies":[{"issue_id":"skills-udu","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.2649542-08:00","created_by":"dan"}],"comments":[{"id":16,"issue_id":"skills-udu","author":"dan","text":"[HQ:status:2026-01-12T13:52:39-08:00] Decided against --agent flag. Cross-agent instructions added directly to HQ SKILL.md instead. Simpler approach - HQ just runs bash commands per agent type. See 'Cross-Agent Compatibility' and 'Launch by Agent Type' sections.","created_at":"2026-01-12T21:52:39Z"}]}
|
||||||
{"id":"skills-ut4","title":"Investigate: Sandbox for research-only subagents","description":"Can we ensure research/explore subagents run in a restricted sandbox?\n\n## Context\nWhen spawning subagents for research tasks (codebase exploration, web search, reading files), they should be read-only and sandboxed - no writes, no destructive commands.\n\n## Questions to Answer\n1. Does Claude Code Task tool support sandbox restrictions for subagents?\n2. Can we pass sandbox mode to Gemini CLI subagents?\n3. How does OpenCode's permission system work for subagents?\n4. Can Codex subagents inherit sandbox restrictions?\n\n## Desired Behavior\n- Research subagent can: Read, Grep, Glob, WebFetch, WebSearch\n- Research subagent cannot: Write, Edit, Bash (destructive), delete\n\n## Security Benefit\nPrevents research tasks from accidentally (or maliciously) modifying files or running destructive commands.\n\nRelated: Cross-agent quality gate architecture (skills-3ja)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-09T17:31:05.49739394-08:00","created_by":"dan","updated_at":"2026-01-09T17:31:05.49739394-08:00"}
|
{"id":"skills-ut4","title":"Investigate: Sandbox for research-only subagents","description":"Can we ensure research/explore subagents run in a restricted sandbox?\n\n## Context\nWhen spawning subagents for research tasks (codebase exploration, web search, reading files), they should be read-only and sandboxed - no writes, no destructive commands.\n\n## Questions to Answer\n1. Does Claude Code Task tool support sandbox restrictions for subagents?\n2. Can we pass sandbox mode to Gemini CLI subagents?\n3. How does OpenCode's permission system work for subagents?\n4. Can Codex subagents inherit sandbox restrictions?\n\n## Desired Behavior\n- Research subagent can: Read, Grep, Glob, WebFetch, WebSearch\n- Research subagent cannot: Write, Edit, Bash (destructive), delete\n\n## Security Benefit\nPrevents research tasks from accidentally (or maliciously) modifying files or running destructive commands.\n\nRelated: Cross-agent quality gate architecture (skills-3ja)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-09T17:31:05.49739394-08:00","created_by":"dan","updated_at":"2026-01-09T17:31:05.49739394-08:00"}
|
||||||
{"id":"skills-ux6h","title":"worker spawn: error message lacks step context","description":"## Source\nCode review of uncommitted changes (2026-01-15)\n\n## Finding\n[ERROR] MED `src/worker.nim:54`\n\nError message only shows `e.msg`, losing stack trace and context about which step failed (worktree creation vs context file vs DB insert).\n\n## Suggestion\nAdd step context: \"Error during worktree creation: {e.msg}\" or similar. Consider logging full exception for debugging.","status":"closed","priority":2,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-15T09:28:09.159125356-08:00","created_by":"dan","updated_at":"2026-01-15T10:42:18.49291268-08:00","closed_at":"2026-01-15T10:42:18.49291268-08:00","close_reason":"Fixed in worker v0.1.1"}
|
{"id":"skills-ux6h","title":"worker spawn: error message lacks step context","description":"## Source\nCode review of uncommitted changes (2026-01-15)\n\n## Finding\n[ERROR] MED `src/worker.nim:54`\n\nError message only shows `e.msg`, losing stack trace and context about which step failed (worktree creation vs context file vs DB insert).\n\n## Suggestion\nAdd step context: \"Error during worktree creation: {e.msg}\" or similar. Consider logging full exception for debugging.","status":"closed","priority":2,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-15T09:28:09.159125356-08:00","created_by":"dan","updated_at":"2026-01-15T10:42:18.49291268-08:00","closed_at":"2026-01-15T10:42:18.49291268-08:00","close_reason":"Fixed in worker v0.1.1"}
|
||||||
{"id":"skills-uz4","title":"Compare RESUMABILITY.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:54.897754095-08:00","updated_at":"2025-12-03T20:19:29.384645842-08:00","closed_at":"2025-12-03T20:19:29.384645842-08:00","dependencies":[{"issue_id":"skills-uz4","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:54.899671178-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-uz4","title":"Compare RESUMABILITY.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:54.897754095-08:00","updated_at":"2025-12-03T20:19:29.384645842-08:00","closed_at":"2025-12-03T20:19:29.384645842-08:00","dependencies":[{"issue_id":"skills-uz4","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:54.899671178-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
|
|
@ -272,13 +273,13 @@
|
||||||
{"id":"skills-y0p0","title":"Build scenario harness runner (scripted mode)","description":"Build the core harness that can:\n1. Load scenario definitions\n2. Set up isolated environment (temp git repo from fixture)\n3. Execute scripted agent actions\n4. Collect results\n\nStart with scripted mode - deterministic, fast, for integration testing.\nLive mode (real agents) comes later.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:19:45.197998259-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.529958787-08:00","closed_at":"2026-01-11T16:38:26.529958787-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-y0p0","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.575936533-08:00","created_by":"dan"}]}
|
{"id":"skills-y0p0","title":"Build scenario harness runner (scripted mode)","description":"Build the core harness that can:\n1. Load scenario definitions\n2. Set up isolated environment (temp git repo from fixture)\n3. Execute scripted agent actions\n4. Collect results\n\nStart with scripted mode - deterministic, fast, for integration testing.\nLive mode (real agents) comes later.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:19:45.197998259-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.529958787-08:00","closed_at":"2026-01-11T16:38:26.529958787-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-y0p0","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.575936533-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-y3f2","title":"Agent commands fail when run from worktree (DB path issue)","description":"Agent commands (fail, done, heartbeat) are designed to run from worktrees but openBusDb() uses relative path .worker-state/bus.db which resolves relative to the worktree, not the main repo. Need to either: (1) store main repo path in context, (2) use git to find main worktree, or (3) use absolute paths.","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-11T00:22:52.854016416-08:00","created_by":"dan","updated_at":"2026-01-11T00:25:38.389318829-08:00","closed_at":"2026-01-11T00:25:38.389318829-08:00","close_reason":"Fixed: agent commands now use getMainRepoBusDbPath() to find the DB in the main repo when running from worktrees"}
|
{"id":"skills-y3f2","title":"Agent commands fail when run from worktree (DB path issue)","description":"Agent commands (fail, done, heartbeat) are designed to run from worktrees but openBusDb() uses relative path .worker-state/bus.db which resolves relative to the worktree, not the main repo. Need to either: (1) store main repo path in context, (2) use git to find main worktree, or (3) use absolute paths.","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-11T00:22:52.854016416-08:00","created_by":"dan","updated_at":"2026-01-11T00:25:38.389318829-08:00","closed_at":"2026-01-11T00:25:38.389318829-08:00","close_reason":"Fixed: agent commands now use getMainRepoBusDbPath() to find the DB in the main repo when running from worktrees"}
|
||||||
{"id":"skills-y76g","title":"Extract render() from status() proc in worker.nim","description":"[BLOAT] LOW worker.nim:49-119 - status() is 70 lines with nested render(). Extract render() to module level or split table formatting into helper.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.728628111-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.011202031-08:00","closed_at":"2026-01-11T15:46:39.011202031-08:00","close_reason":"Closed"}
|
{"id":"skills-y76g","title":"Extract render() from status() proc in worker.nim","description":"[BLOAT] LOW worker.nim:49-119 - status() is 70 lines with nested render(). Extract render() to module level or split table formatting into helper.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.728628111-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.011202031-08:00","closed_at":"2026-01-11T15:46:39.011202031-08:00","close_reason":"Closed"}
|
||||||
{"id":"skills-ya3n","title":"worker CLI: Stale worker salvage and recovery","description":"**Raised by:** flash-or, gpt\n\n**Problem:**\n\"Cancel and retry\" throws away valuable progress. Worker spawn should be idempotent - if called on existing task, should resume or reclaim.\n\n**flash-or:**\n\u003e \"If the worker process crashes or the API times out, the worktree stays locked. HQ might try to spawn a new worker on the same Task ID, leading to file system locks or duplicate branches. 'worker spawn' should be idempotent - identify state and either 'resume' or 'reclaim'.\"\n\n**gpt:**\n\u003e \"'Cancel and retry' can throw away valuable progress. Add 'Salvage mode': HQ pulls commits from stale worktree/branch before canceling. 'Nudge mode': automatic prompt/comment asking worker to summarize current state.\"\n\n**Suggested fixes:**\n1. Idempotent worker spawn (resume/reclaim)\n2. Salvage mode - preserve commits before cancel\n3. Nudge mode - prompt stale worker for state\n4. worker reset --hard without killing assignment","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-12T09:25:49.456109078-08:00","created_by":"dan","updated_at":"2026-01-12T09:36:59.989258116-08:00","comments":[{"id":8,"issue_id":"skills-ya3n","author":"dan","text":"[RECLASSIFY:2026-01-12T09:36:59-08:00] Moved from HQ to worker CLI layer.\n\nSalvage/recovery is a worker lifecycle concern. worker CLI should provide 'worker salvage' or make 'worker spawn' idempotent with resume semantics. HQ just decides when to invoke it.","created_at":"2026-01-12T17:37:00Z"}]}
|
{"id":"skills-ya3n","title":"worker CLI: Stale worker salvage and recovery","description":"**Raised by:** flash-or, gpt\n\n**Problem:**\n\"Cancel and retry\" throws away valuable progress. Worker spawn should be idempotent - if called on existing task, should resume or reclaim.\n\n**flash-or:**\n\u003e \"If the worker process crashes or the API times out, the worktree stays locked. HQ might try to spawn a new worker on the same Task ID, leading to file system locks or duplicate branches. 'worker spawn' should be idempotent - identify state and either 'resume' or 'reclaim'.\"\n\n**gpt:**\n\u003e \"'Cancel and retry' can throw away valuable progress. Add 'Salvage mode': HQ pulls commits from stale worktree/branch before canceling. 'Nudge mode': automatic prompt/comment asking worker to summarize current state.\"\n\n**Suggested fixes:**\n1. Idempotent worker spawn (resume/reclaim)\n2. Salvage mode - preserve commits before cancel\n3. Nudge mode - prompt stale worker for state\n4. worker reset --hard without killing assignment","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-12T09:25:49.456109078-08:00","created_by":"dan","updated_at":"2026-01-12T09:36:59.989258116-08:00","comments":[{"id":8,"issue_id":"skills-ya3n","author":"dan","text":"[RECLASSIFY:2026-01-12T09:36:59-08:00] Moved from HQ to worker CLI layer.\n\nSalvage/recovery is a worker lifecycle concern. worker CLI should provide 'worker salvage' or make 'worker spawn' idempotent with resume semantics. HQ just decides when to invoke it.","created_at":"2026-01-12T17:37:00Z"},{"id":19,"issue_id":"skills-ya3n","author":"dan","text":"Merged from skills-1jc (Stuck detection) and skills-7n4 (Rollback strategy):\n\n## Stuck Detection (Rubber Duck)\nTrack non-progress:\n- Repeated tool calls (same command 3x)\n- Identical errors\n- No diff delta\n- No new hypotheses\n\nWhen triggered, force protocol:\n1. Write down 3 hypotheses\n2. Run one discriminating experiment per hypothesis\n3. If no new info → escalate\n\nRubber Duck variant: force agent to explain problem in 200 tokens. Compression reveals the flaw.\n\n## Rollback Strategy\nHandle: stuck workers, rejected reviews, merge conflicts.\n- Branch archive/delete\n- State reset for re-assignment\n- Evidence preservation for debugging\n\n## Combined worker CLI commands\n- worker stuck X - detect non-progress\n- worker salvage X - preserve commits before cancel\n- worker reset X - clean state for retry","created_at":"2026-01-16T04:33:16Z"}]}
|
||||||
{"id":"skills-yak","title":"Design: Human observability (status command)","description":"Design: Human observability (status command)\n\nImplementation: Nim (table formatting, watch mode)\nDesign doc: docs/design/human-observability.md\n\nFeatures:\n- worker status - Dashboard table\n- worker show \u003cid\u003e - Detailed view\n- --watch mode - Refresh every 2s\n- --json output for scripting\n- Stale detection: 30s WARN, 100s STALE, 5m DEAD\n\nSee: skills-q40 for language decision","design":"docs/design/human-observability.md","notes":"Design complete. Kubectl/docker-style CLI observability. Commands: status (dashboard table), show (detail view), logs (message history), stats (metrics). Stale detection: 3x heartbeat=WARN, 10x=STALE. Watch mode with --watch. Color-coded states. MVP: status + show; defer logs/stats/TUI.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T13:55:23.910743917-08:00","created_by":"dan","updated_at":"2026-01-10T21:29:25.675678164-08:00","closed_at":"2026-01-10T21:29:25.675678164-08:00","close_reason":"Implemented in worker CLI - spawn, status, state machine, branch isolation all working","dependencies":[{"issue_id":"skills-yak","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:23.912386443-08:00","created_by":"dan"}]}
|
{"id":"skills-yak","title":"Design: Human observability (status command)","description":"Design: Human observability (status command)\n\nImplementation: Nim (table formatting, watch mode)\nDesign doc: docs/design/human-observability.md\n\nFeatures:\n- worker status - Dashboard table\n- worker show \u003cid\u003e - Detailed view\n- --watch mode - Refresh every 2s\n- --json output for scripting\n- Stale detection: 30s WARN, 100s STALE, 5m DEAD\n\nSee: skills-q40 for language decision","design":"docs/design/human-observability.md","notes":"Design complete. Kubectl/docker-style CLI observability. Commands: status (dashboard table), show (detail view), logs (message history), stats (metrics). Stale detection: 3x heartbeat=WARN, 10x=STALE. Watch mode with --watch. Color-coded states. MVP: status + show; defer logs/stats/TUI.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T13:55:23.910743917-08:00","created_by":"dan","updated_at":"2026-01-10T21:29:25.675678164-08:00","closed_at":"2026-01-10T21:29:25.675678164-08:00","close_reason":"Implemented in worker CLI - spawn, status, state machine, branch isolation all working","dependencies":[{"issue_id":"skills-yak","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:23.912386443-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-ybq","title":"Reorganize lens directory structure","description":"Current structure puts ops lenses as subdirectory of code-review lenses:\n\n```\n~/.config/lenses/ \u003c- code-review lenses\n~/.config/lenses/ops/ \u003c- ops-review lenses\n```\n\nThis is asymmetric. Consider:\n\nOption A: Separate top-level directories\n```\n~/.config/lenses/code-review/\n~/.config/lenses/ops-review/\n```\n\nOption B: Keep flat but with prefixes\n```\n~/.config/lenses/code-*.md\n~/.config/lenses/ops-*.md\n```\n\nOption C: Per-skill lens directories\n```\n~/.claude/skills/code-review/lenses/\n~/.claude/skills/ops-review/lenses/\n```\n\nRequires updating:\n- modules/ai-skills.nix (deployment paths)\n- skills/code-review/SKILL.md (expected paths)\n- skills/ops-review/SKILL.md (expected paths)","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-01T21:57:06.726997606-05:00","created_by":"dan","updated_at":"2026-01-02T00:24:53.647409845-05:00","closed_at":"2026-01-02T00:24:53.647409845-05:00","close_reason":"Reorganized lens directories: code-review → ~/.config/lenses/code/, ops-review → ~/.config/lenses/ops/. Updated ai-skills.nix, SKILL.md, and README references."}
|
{"id":"skills-ybq","title":"Reorganize lens directory structure","description":"Current structure puts ops lenses as subdirectory of code-review lenses:\n\n```\n~/.config/lenses/ \u003c- code-review lenses\n~/.config/lenses/ops/ \u003c- ops-review lenses\n```\n\nThis is asymmetric. Consider:\n\nOption A: Separate top-level directories\n```\n~/.config/lenses/code-review/\n~/.config/lenses/ops-review/\n```\n\nOption B: Keep flat but with prefixes\n```\n~/.config/lenses/code-*.md\n~/.config/lenses/ops-*.md\n```\n\nOption C: Per-skill lens directories\n```\n~/.claude/skills/code-review/lenses/\n~/.claude/skills/ops-review/lenses/\n```\n\nRequires updating:\n- modules/ai-skills.nix (deployment paths)\n- skills/code-review/SKILL.md (expected paths)\n- skills/ops-review/SKILL.md (expected paths)","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-01T21:57:06.726997606-05:00","created_by":"dan","updated_at":"2026-01-02T00:24:53.647409845-05:00","closed_at":"2026-01-02T00:24:53.647409845-05:00","close_reason":"Reorganized lens directories: code-review → ~/.config/lenses/code/, ops-review → ~/.config/lenses/ops/. Updated ai-skills.nix, SKILL.md, and README references."}
|
||||||
{"id":"skills-yc6","title":"Research: Document brainstorm findings","description":"Capture research findings in docs/research/ or docs/design/.\n\n## Sources to document\n1. orch consensus on permission patterns (sonar, gemini)\n2. orch brainstorm on creative patterns (flash-or, qwen, gpt, gemini)\n3. Gastown architecture analysis\n4. Steve Yegge Larry Wall/Perl critique (Lego vs pirate ships)\n5. LangGraph breakpoints pattern\n6. MetaGPT software company pattern\n7. Claude Code permission-based gating\n\n## Key patterns to document\n- Negative permission (exclusion-based)\n- Evidence artifacts (structured handoff)\n- Rubber Duck interrupt (stuck detection)\n- Role + Veto (some block, some do)\n- Circuit breakers (non-progress detection)\n- Capability Provenance Pipeline (GPT)\n\n## Output\ndocs/design/multi-agent-lego-architecture.md","notes":"Research complete. Created docs/design/multi-agent-footguns-and-patterns.md with synthesis of HN discussions, practitioner blogs, and orch consensus. Key findings: Rule of 4 (3-4 agents max), spec-driven development, layered coordination, PostgreSQL advisory locks pattern, git bundles for checkpoints. Validated our SQLite, worktree, and rebase decisions. Identified gaps: structured task specs, role boundaries, review funnel, token budgets.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T12:15:04.476532719-08:00","created_by":"dan","updated_at":"2026-01-10T15:34:24.496673317-08:00","dependencies":[{"issue_id":"skills-yc6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.316852381-08:00","created_by":"dan"}]}
|
{"id":"skills-yc6","title":"Research: Document brainstorm findings","description":"Capture research findings in docs/research/ or docs/design/.\n\n## Sources to document\n1. orch consensus on permission patterns (sonar, gemini)\n2. orch brainstorm on creative patterns (flash-or, qwen, gpt, gemini)\n3. Gastown architecture analysis\n4. Steve Yegge Larry Wall/Perl critique (Lego vs pirate ships)\n5. LangGraph breakpoints pattern\n6. MetaGPT software company pattern\n7. Claude Code permission-based gating\n\n## Key patterns to document\n- Negative permission (exclusion-based)\n- Evidence artifacts (structured handoff)\n- Rubber Duck interrupt (stuck detection)\n- Role + Veto (some block, some do)\n- Circuit breakers (non-progress detection)\n- Capability Provenance Pipeline (GPT)\n\n## Output\ndocs/design/multi-agent-lego-architecture.md","notes":"Research complete. Created docs/design/multi-agent-footguns-and-patterns.md with synthesis of HN discussions, practitioner blogs, and orch consensus. Key findings: Rule of 4 (3-4 agents max), spec-driven development, layered coordination, PostgreSQL advisory locks pattern, git bundles for checkpoints. Validated our SQLite, worktree, and rebase decisions. Identified gaps: structured task specs, role boundaries, review funnel, token budgets.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T12:15:04.476532719-08:00","created_by":"dan","updated_at":"2026-01-15T19:59:03.68032035-08:00","closed_at":"2026-01-15T19:59:03.68032035-08:00","close_reason":"Research complete. Created docs/design/multi-agent-footguns-and-patterns.md","dependencies":[{"issue_id":"skills-yc6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.316852381-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-yxv","title":"worklog: extract hardcoded path to variable","description":"SKILL.md repeats ~/.claude/skills/worklog/ path 4-5 times. Define SKILL_ROOT once, reference throughout. Found by bloat+smells lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:15.831699081-05:00","updated_at":"2025-12-27T10:05:51.532722628-05:00","closed_at":"2025-12-27T10:05:51.532722628-05:00","close_reason":"Closed"}
|
{"id":"skills-yxv","title":"worklog: extract hardcoded path to variable","description":"SKILL.md repeats ~/.claude/skills/worklog/ path 4-5 times. Define SKILL_ROOT once, reference throughout. Found by bloat+smells lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:15.831699081-05:00","updated_at":"2025-12-27T10:05:51.532722628-05:00","closed_at":"2025-12-27T10:05:51.532722628-05:00","close_reason":"Closed"}
|
||||||
{"id":"skills-yylq","title":"worker spawn: rollback may miss partially-created branches","description":"## Source\nCode review of uncommitted changes (2026-01-15)\n\n## Finding\n[ERROR] MED `src/worker.nim:56-62`\n\nRollback checks `worktree != \"\"` and `branch != \"\"` but these are only set AFTER createWorktree succeeds. If createWorktree fails mid-way (after branch created but before worktree), branch won't be cleaned up.\n\n## Evidence\nThe AAR noted \"Partial worktrees and branches were created without worker registry entries\" - this fix may not fully address that.\n\n## Suggestion\nMove variable assignment inside try block to track partial state, or have createWorktree handle its own rollback atomically.","status":"closed","priority":2,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-15T09:28:02.674685905-08:00","created_by":"dan","updated_at":"2026-01-15T10:42:18.486635809-08:00","closed_at":"2026-01-15T10:42:18.486635809-08:00","close_reason":"Fixed in worker v0.1.1"}
|
{"id":"skills-yylq","title":"worker spawn: rollback may miss partially-created branches","description":"## Source\nCode review of uncommitted changes (2026-01-15)\n\n## Finding\n[ERROR] MED `src/worker.nim:56-62`\n\nRollback checks `worktree != \"\"` and `branch != \"\"` but these are only set AFTER createWorktree succeeds. If createWorktree fails mid-way (after branch created but before worktree), branch won't be cleaned up.\n\n## Evidence\nThe AAR noted \"Partial worktrees and branches were created without worker registry entries\" - this fix may not fully address that.\n\n## Suggestion\nMove variable assignment inside try block to track partial state, or have createWorktree handle its own rollback atomically.","status":"closed","priority":2,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-15T09:28:02.674685905-08:00","created_by":"dan","updated_at":"2026-01-15T10:42:18.486635809-08:00","closed_at":"2026-01-15T10:42:18.486635809-08:00","close_reason":"Fixed in worker v0.1.1"}
|
||||||
{"id":"skills-zf6","title":"Design: Evidence artifacts for review handoff","description":"Structured handoff between agents, not chat transcripts.\n\n## Pattern (from GPT brainstorm)\nDon't share chat transcripts between agents.\nShare evidence artifacts:\n- structured issue description\n- failing test output\n- minimal reproduction\n- proposed diff (patch)\n- reasoning trace summary (3 sentences max)\n\n## Implementation\nWorker completion writes to .worker-state/X.json:\n{\n \"status\": \"needs_review\",\n \"evidence\": {\n \"summary\": \"Added rate limiting to auth endpoint\",\n \"diff_file\": \".worker-state/X.diff\",\n \"test_output\": \"...\",\n \"reasoning\": \"Rate limiting needed per issue #123\"\n }\n}\n\nReviewer reads evidence, not full transcript.\n\n## Benefits\n- Reduces cross-contamination of mistakes\n- Faster review (structured, not conversational)\n- Model-agnostic (any agent can produce/consume)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:33.537487043-08:00","created_by":"dan","updated_at":"2026-01-10T12:14:33.537487043-08:00","dependencies":[{"issue_id":"skills-zf6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.105913085-08:00","created_by":"dan"}]}
|
{"id":"skills-zf6","title":"Design: Evidence artifacts for review handoff","description":"Structured handoff between agents, not chat transcripts.\n\n## Pattern (from GPT brainstorm)\nDon't share chat transcripts between agents.\nShare evidence artifacts:\n- structured issue description\n- failing test output\n- minimal reproduction\n- proposed diff (patch)\n- reasoning trace summary (3 sentences max)\n\n## Implementation\nWorker completion writes to .worker-state/X.json:\n{\n \"status\": \"needs_review\",\n \"evidence\": {\n \"summary\": \"Added rate limiting to auth endpoint\",\n \"diff_file\": \".worker-state/X.diff\",\n \"test_output\": \"...\",\n \"reasoning\": \"Rate limiting needed per issue #123\"\n }\n}\n\nReviewer reads evidence, not full transcript.\n\n## Benefits\n- Reduces cross-contamination of mistakes\n- Faster review (structured, not conversational)\n- Model-agnostic (any agent can produce/consume)","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:33.537487043-08:00","created_by":"dan","updated_at":"2026-01-15T20:32:53.916652583-08:00","closed_at":"2026-01-15T20:32:53.916652583-08:00","close_reason":"Merged into skills-du0a (communication templates)","dependencies":[{"issue_id":"skills-zf6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.105913085-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-zp5","title":"Create skills marketplace.json registry","description":"Central registry of all skills for plugin discovery. Follow emes marketplace pattern.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T10:59:24.933190155-08:00","created_by":"dan","updated_at":"2026-01-09T11:21:19.452762097-08:00","closed_at":"2026-01-09T11:21:19.452762097-08:00","close_reason":"Created .claude-plugin/marketplace.json with orch as first plugin. More plugins added as skills are converted.","dependencies":[{"issue_id":"skills-zp5","depends_on_id":"skills-6x1","type":"blocks","created_at":"2026-01-09T10:59:33.223533468-08:00","created_by":"dan"}]}
|
{"id":"skills-zp5","title":"Create skills marketplace.json registry","description":"Central registry of all skills for plugin discovery. Follow emes marketplace pattern.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T10:59:24.933190155-08:00","created_by":"dan","updated_at":"2026-01-09T11:21:19.452762097-08:00","closed_at":"2026-01-09T11:21:19.452762097-08:00","close_reason":"Created .claude-plugin/marketplace.json with orch as first plugin. More plugins added as skills are converted.","dependencies":[{"issue_id":"skills-zp5","depends_on_id":"skills-6x1","type":"blocks","created_at":"2026-01-09T10:59:33.223533468-08:00","created_by":"dan"}]}
|
||||||
{"id":"skills-zws1","title":"Create hello-world script for spike test","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-12T21:06:53.040848941-08:00","created_by":"dan","updated_at":"2026-01-12T21:12:40.790376387-08:00","closed_at":"2026-01-12T21:12:40.790376387-08:00","close_reason":"Closed"}
|
{"id":"skills-zws1","title":"Create hello-world script for spike test","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-12T21:06:53.040848941-08:00","created_by":"dan","updated_at":"2026-01-12T21:12:40.790376387-08:00","closed_at":"2026-01-12T21:12:40.790376387-08:00","close_reason":"Closed"}
|
||||||
{"id":"skills-zxek","title":"Standardize skills on Codex-compatible 'scripts/references/assets' layout","description":"We have decided to adopt the Codex directory structure as our universal standard. It is the most robust format and remains fully compatible with Claude and Gemini.\n\nAction Items:\n1. Delete Legacy Artifacts: Remove the redundant 'skills/' subdirectories found inside 'worklog', 'orch', 'ai-tools-doctor', etc. These are confusing leftovers.\n2. Standardize Folders:\n - 'scripts/': Keep as is (executables).\n - 'references/': Use for documentation/context (move any loose docs here).\n - 'assets/': Rename 'templates/' (in 'worklog') to 'assets/' to match the official Codex spec.\n3. Update Paths: Update the 'SKILL.md' files to point to the new locations (e.g., 'assets/worklog-template.md').","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-14T12:43:29.345107596-08:00","created_by":"dan","updated_at":"2026-01-14T19:02:19.520916349-08:00","closed_at":"2026-01-14T19:02:19.520916349-08:00","close_reason":"Standardized skills directory structure (assets/ references/)"}
|
{"id":"skills-zxek","title":"Standardize skills on Codex-compatible 'scripts/references/assets' layout","description":"We have decided to adopt the Codex directory structure as our universal standard. It is the most robust format and remains fully compatible with Claude and Gemini.\n\nAction Items:\n1. Delete Legacy Artifacts: Remove the redundant 'skills/' subdirectories found inside 'worklog', 'orch', 'ai-tools-doctor', etc. These are confusing leftovers.\n2. Standardize Folders:\n - 'scripts/': Keep as is (executables).\n - 'references/': Use for documentation/context (move any loose docs here).\n - 'assets/': Rename 'templates/' (in 'worklog') to 'assets/' to match the official Codex spec.\n3. Update Paths: Update the 'SKILL.md' files to point to the new locations (e.g., 'assets/worklog-template.md').","status":"closed","priority":2,"issue_type":"task","owner":"dan@delpad","created_at":"2026-01-14T12:43:29.345107596-08:00","created_by":"dan","updated_at":"2026-01-14T19:02:19.520916349-08:00","closed_at":"2026-01-14T19:02:19.520916349-08:00","close_reason":"Standardized skills directory structure (assets/ references/)"}
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
skills-kg7
|
skills-r62
|
||||||
|
|
|
||||||
|
|
@ -188,7 +188,7 @@
|
||||||
{"id":"skills-jbo","title":"Skills: verify symbols via LSP before suggesting","description":"Inversion: let LSP answer facts, let models answer strategy.\n\nBefore Claude suggests using a function/type:\n- Verify existence via workspace/symbol or go-to-definition\n- If not found, propose alternatives that ARE found\n- Gather definition, references, inferred types, diagnostics as context\n\nReduces hallucinated APIs and grounds patches in reality.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-24T02:29:56.391182872-05:00","updated_at":"2025-12-24T02:29:56.391182872-05:00","dependencies":[{"issue_id":"skills-jbo","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.529604354-05:00","created_by":"daemon"}]}
|
{"id":"skills-jbo","title":"Skills: verify symbols via LSP before suggesting","description":"Inversion: let LSP answer facts, let models answer strategy.\n\nBefore Claude suggests using a function/type:\n- Verify existence via workspace/symbol or go-to-definition\n- If not found, propose alternatives that ARE found\n- Gather definition, references, inferred types, diagnostics as context\n\nReduces hallucinated APIs and grounds patches in reality.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-24T02:29:56.391182872-05:00","updated_at":"2025-12-24T02:29:56.391182872-05:00","dependencies":[{"issue_id":"skills-jbo","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.529604354-05:00","created_by":"daemon"}]}
|
||||||
{"id":"skills-jeb","title":"Define wisp execution trace format","description":"Design structured format for skill execution traces in wisps:\n- skill_version (git SHA + flake hash)\n- inputs (context refs, env vars)\n- tool_calls [{cmd, args, exit_code, duration}]\n- checkpoints [{step, summary, timestamp}]\n- outputs (file diffs or refs)\n\nEnable: replay, diff traces, regression testing\n\nMigrated from dotfiles-ub9.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:57.896088397-05:00","updated_at":"2025-12-29T13:55:35.797116947-05:00","closed_at":"2025-12-29T13:55:35.797116947-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-jeb","depends_on_id":"skills-hin","type":"blocks","created_at":"2025-12-23T19:21:39.588011474-05:00","created_by":"dan"},{"issue_id":"skills-jeb","depends_on_id":"skills-gq9","type":"blocks","created_at":"2025-12-23T19:50:10.069841366-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-be3","type":"blocks","created_at":"2025-12-23T19:50:10.117400312-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-ty7","type":"blocks","created_at":"2025-12-23T19:50:10.163656807-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-6gw","type":"blocks","created_at":"2025-12-23T19:50:10.202702536-05:00","created_by":"daemon"}]}
|
{"id":"skills-jeb","title":"Define wisp execution trace format","description":"Design structured format for skill execution traces in wisps:\n- skill_version (git SHA + flake hash)\n- inputs (context refs, env vars)\n- tool_calls [{cmd, args, exit_code, duration}]\n- checkpoints [{step, summary, timestamp}]\n- outputs (file diffs or refs)\n\nEnable: replay, diff traces, regression testing\n\nMigrated from dotfiles-ub9.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:57.896088397-05:00","updated_at":"2025-12-29T13:55:35.797116947-05:00","closed_at":"2025-12-29T13:55:35.797116947-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-jeb","depends_on_id":"skills-hin","type":"blocks","created_at":"2025-12-23T19:21:39.588011474-05:00","created_by":"dan"},{"issue_id":"skills-jeb","depends_on_id":"skills-gq9","type":"blocks","created_at":"2025-12-23T19:50:10.069841366-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-be3","type":"blocks","created_at":"2025-12-23T19:50:10.117400312-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-ty7","type":"blocks","created_at":"2025-12-23T19:50:10.163656807-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-6gw","type":"blocks","created_at":"2025-12-23T19:50:10.202702536-05:00","created_by":"daemon"}]}
|
||||||
{"id":"skills-jz5x","title":"worker CLI: spawn requires named arguments --taskId","status":"open","priority":3,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-12T21:03:49.447810213-08:00","created_by":"dan","updated_at":"2026-01-12T21:03:49.447810213-08:00"}
|
{"id":"skills-jz5x","title":"worker CLI: spawn requires named arguments --taskId","status":"open","priority":3,"issue_type":"bug","owner":"dan@delpad","created_at":"2026-01-12T21:03:49.447810213-08:00","created_by":"dan","updated_at":"2026-01-12T21:03:49.447810213-08:00"}
|
||||||
{"id":"skills-kg7","title":"Desktop automation for Wayland/niri","description":"Explore and implement desktop automation solutions for Wayland (niri compositor).\n\n## The Seeing Problem\n\nHow can an AI agent understand what's on screen?\n\n### Layers (bottom to top)\n1. **Window awareness** - what's open, app_id, title → niri IPC ✅\n2. **Window geometry** - size, position, monitor → niri IPC ✅\n3. **Pixel capture** - screenshots → niri screenshot-window ✅\n4. **Understanding** - UI elements, coordinates, semantics → **GAP**\n\n### Two paths to understanding (layer 4)\n\n**Path A: AT-SPI (structured)**\n- Pros: precise coordinates, semantic element types, states\n- Cons: runtime overhead, requires NixOS config, app compliance varies\n- Coverage: GTK ✅, Qt (with env var), Electron ❓\n\n**Path B: Vision model (visual)**\n- Pros: universal (works on any pixels), no system config needed\n- Cons: API latency, token cost, coordinate precision unclear\n- Coverage: anything visible ✅\n\n### Hybrid approach\nRun both, benchmark tradeoffs:\n- AT-SPI overhead vs query precision\n- Vision model latency/cost vs coverage\n- When to use which (or both for validation)\n\n## What we have\n- niri-window-capture skill (screenshots, window list)\n- niri IPC for window/monitor geometry\n\n## Context\nWayland's security model blocks X11-style automation. Solutions require:\n- Compositor-specific IPC (niri msg)\n- App opt-in via AT-SPI accessibility\n- Or vision model interpretation of pixels","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T12:42:17.863074501-08:00","updated_at":"2025-12-17T14:12:59.143207802-08:00","dependencies":[{"issue_id":"skills-kg7","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T13:59:59.915105471-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-ebl","type":"blocks","created_at":"2025-12-17T14:13:41.679692009-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-bww","type":"blocks","created_at":"2025-12-17T14:13:41.725196677-08:00","created_by":"daemon","metadata":"{}"}]}
|
{"id":"skills-kg7","title":"Desktop automation for Wayland/niri","description":"Explore and implement desktop automation solutions for Wayland (niri compositor).\n\n## The Seeing Problem\n\nHow can an AI agent understand what's on screen?\n\n### Layers (bottom to top)\n1. **Window awareness** - what's open, app_id, title → niri IPC ✅\n2. **Window geometry** - size, position, monitor → niri IPC ✅\n3. **Pixel capture** - screenshots → niri screenshot-window ✅\n4. **Understanding** - UI elements, coordinates, semantics → **GAP**\n\n### Two paths to understanding (layer 4)\n\n**Path A: AT-SPI (structured)**\n- Pros: precise coordinates, semantic element types, states\n- Cons: runtime overhead, requires NixOS config, app compliance varies\n- Coverage: GTK ✅, Qt (with env var), Electron ❓\n\n**Path B: Vision model (visual)**\n- Pros: universal (works on any pixels), no system config needed\n- Cons: API latency, token cost, coordinate precision unclear\n- Coverage: anything visible ✅\n\n### Hybrid approach\nRun both, benchmark tradeoffs:\n- AT-SPI overhead vs query precision\n- Vision model latency/cost vs coverage\n- When to use which (or both for validation)\n\n## What we have\n- niri-window-capture skill (screenshots, window list)\n- niri IPC for window/monitor geometry\n\n## Context\nWayland's security model blocks X11-style automation. Solutions require:\n- Compositor-specific IPC (niri msg)\n- App opt-in via AT-SPI accessibility\n- Or vision model interpretation of pixels","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-17T12:42:17.863074501-08:00","updated_at":"2026-01-15T19:15:46.134464754-08:00","closed_at":"2026-01-15T19:15:46.134464754-08:00","close_reason":"Research phase complete. Deliverables:\n\n**Skills created:**\n- niri-window-capture: Visual screenshots of any window\n- ui-query: AT-SPI semantic queries (list-windows, get-text, find-element, query-state, benchmark)\n\n**Benchmark findings:**\n- AT-SPI: 4.6s enumeration for 792 elements, 1.7s find-by-role. GTK excellent, Firefox needs config, terminals limited.\n- Vision: Works universally but has API latency/cost tradeoffs.\n\n**Hybrid strategy validated:** Use AT-SPI for GTK apps with good coverage, fall back to vision for others. Both complement each other - AT-SPI for precision, vision for universality.\n\nFuture work: actual click/type automation via ydotool or similar.","dependencies":[{"issue_id":"skills-kg7","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T13:59:59.915105471-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-ebl","type":"blocks","created_at":"2025-12-17T14:13:41.679692009-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-bww","type":"blocks","created_at":"2025-12-17T14:13:41.725196677-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||||
{"id":"skills-kmj","title":"Orch skill: document or handle orch not in PATH","description":"Skill docs show 'orch consensus' but orch requires 'uv run' from ~/proj/orch. Either update skill to invoke correctly or document installation requirement.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T17:29:48.844997238-08:00","updated_at":"2025-12-01T18:28:11.374048504-08:00","closed_at":"2025-12-01T18:28:11.374048504-08:00"}
|
{"id":"skills-kmj","title":"Orch skill: document or handle orch not in PATH","description":"Skill docs show 'orch consensus' but orch requires 'uv run' from ~/proj/orch. Either update skill to invoke correctly or document installation requirement.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T17:29:48.844997238-08:00","updated_at":"2025-12-01T18:28:11.374048504-08:00","closed_at":"2025-12-01T18:28:11.374048504-08:00"}
|
||||||
{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.754197256-08:00","closed_at":"2026-01-10T20:37:04.754197256-08:00","close_reason":"Implemented consistent error handling strategy"}
|
{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.754197256-08:00","closed_at":"2026-01-10T20:37:04.754197256-08:00","close_reason":"Implemented consistent error handling strategy"}
|
||||||
{"id":"skills-kvdl","title":"Remove unused globalChannel variable in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:37 - globalChannel declared but never used. Compiler warns about this. Delete unused variable.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.125528634-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.733773826-08:00","closed_at":"2026-01-10T20:24:43.733773826-08:00","close_reason":"Fixed: removed unused globalChannel in heartbeat.nim rewrite"}
|
{"id":"skills-kvdl","title":"Remove unused globalChannel variable in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:37 - globalChannel declared but never used. Compiler warns about this. Delete unused variable.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.125528634-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.733773826-08:00","closed_at":"2026-01-10T20:24:43.733773826-08:00","close_reason":"Fixed: removed unused globalChannel in heartbeat.nim rewrite"}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue