- **agent-browser** (48 docs): agent-browser is a Vercel Labs browser automation CLI that provides accessibility tree snapshots for AI agents to interact with web apps via ref-based selectors.
- **agentskills** (12 docs): Agent Skills is an open format for creating reusable skill packages (instructions, scripts, and resources) that agents can discover and apply across platforms. Maintained by Anthropic, it includes a spec, reference implementations, and example skills.
- **ai-elements** (63 docs, 88 examples): AI Elements is a Vercel React component library built on shadcn/ui providing pre-built, customizable UI components for AI-native applications including chat, code, voice, and workflow interfaces.
- **aisdk** (236 docs, 5 examples): The Vercel AI SDK is a TypeScript toolkit providing a unified API for LLMs with streaming, tool calling, and UI components for React, Vue, and Svelte.
- **appkit-panels** (1 docs, 9 examples): NSPa
maestroctl is an async daemon that maintains per-session state for Claude Code agent sessions. Events from multiple sources flow through a pure reducer per session, producing synthetic effects from state transitions.
It is consume-only — it ingests events from three sources but does not publish outbound events. Effects are logged internally. Adding a ZMQ PUB socket for outbound events is a one-line change when a consumer exists.
| label: after | |
| timestamp: 20260320T070514Z | |
| host: artbird.taile9945f.ts.net | |
| query_count: 13 | |
| error_count: 0 | |
| queries: | |
| - category: keyword | |
| label: click group commands | |
| endpoint: search | |
| latency_ms: 484 |
| label: after | |
| timestamp: 20260320T065406Z | |
| host: artbird.taile9945f.ts.net | |
| query_count: 13 | |
| error_count: 3 | |
| queries: | |
| - category: keyword | |
| label: click group commands | |
| endpoint: search | |
| latency_ms: 383 |
qmdctl-watch-collections on artbird calls qmd update which runs git operations against GitHub for the content-topics collection. The artbird user's SSH key is missing or not registered as a deploy key, causing git@github.com: Permission denied (publickey). Syncthing is also retrying failed deletes in the same folder - a secondary symptom that should resolve once sync recovers.
All steps are remote ops via SSH to artbird. No code changes.
On greybird, claudectl sync-sessions chunks session markdown, embeds it via vectorctl, and stores in ChromaDB for semantic search. Separately, claudectl mirror-sessions renders sessions to ~/code/content/sessions/ as plain markdown files. Two other content directories (content/links, content/topics) already sync to artbird via Syncthing and get indexed by qmd. Sessions are the missing piece — the markdown exists, it just isn't syncing or indexed.
The arthack codebase has a centralized vector daemon (vectorctl) that manages all ChromaDB operations via ZMQ IPC. Two major consumers — knowctl and claudectl — delegate all embedding, ingestion, and search through this daemon. The QMD server on artbird is a completely different system: a Bun/TypeScript search engine (@tobilu/qmd) with BM25 + vector + HyDE search, file-based collections, and its own GGUF embedding model. knowctl still uses vectorctl's ChromaDB backend for embeddings and search. The migration means replacing the vectorctl daemon + local ChromaDB stack with QMD as the universal search backend.
Goal: Every project should have a description in its pyproject.toml or package.json so choosectl list-project-descriptions returns real descriptions instead of CLAUDE.md fallbacks.
10 projects across ~/code/ and ~/experiment/ have manifest files but are missing proper descriptions. 3 have no description field at all in pyproject.toml, 4 have the placeholder "Add your description here", and 3 package.json projects are missing the field entirely. Many other directories (banking, dotfiles, email, etc.) have no manifest file and are out of scope.
| - type: queue-operation | |
| operation: enqueue | |
| timestamp: '2026-03-16T20:32:05.258Z' | |
| sessionId: a23a7fd6-46c0-4c4c-bddd-1d7ada3546f7 | |
| content: "Task: add a new CLI flag\n\nBudget: 24000 tokens\n\n<FileTree>\n<FileTree>\ncodectl/\n __init__.py\n api.py\n\ | |
| \ bands.py\n cli.py\n context.py\n formatting.py\n git_context.py\n ignore.py\n kit_adapter.py\n probe.py\n selection.py\n\ | |
| tests/\n __init__.py\n test_api.py\n test_bands.py\n test_context.py\n test_formatting.py\n test_git_context.py\n\ | |
| \ test_ignore.py\n test_kit_adapter.py\n test_probe.py\n test_selection.py\n.gitignore\n.pre-commit-config.yaml\n\ | |
| README.md\ncodectl-v1.md\npyproject.toml\nuv.lock\nv1-epic-brief.md\nv1-epic.md\n</FileTree>\n</FileTree>\n\n<Outline>\n\ | |
| <Outline>\ntests/test_ignore.py:\n - def _clear_lru_cache():\n - class TestLoadPatterns:\n - def test_reads_patterns(self,\ |
| { | |
| "description": "contextctl hooks — inject codebase context via codectl", | |
| "hooks": { | |
| "SessionStart": [ | |
| { | |
| "matcher": "startup", | |
| "command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.py" | |
| }, | |
| { | |
| "matcher": "clear", |