{"id":50603023,"url":"https://github.com/probelabs/probelabs-assistant","last_synced_at":"2026-06-05T20:01:27.401Z","repository":{"id":337845630,"uuid":"1155502216","full_name":"probelabs/probelabs-assistant","owner":"probelabs","description":"ProbeLabs AI Assistant - AI-powered assistant for exploring and working with ProbeLabs projects","archived":false,"fork":false,"pushed_at":"2026-03-12T16:52:46.000Z","size":179,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-12T18:41:34.925Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/probelabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-11T15:32:08.000Z","updated_at":"2026-03-12T16:52:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/probelabs/probelabs-assistant","commit_stats":null,"previous_names":["probelabs/probelabs-assistant"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/probelabs/probelabs-assistant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probelabs%2Fprobelabs-assistant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probelabs%2Fprobelabs-assistant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probelabs%2Fprobelabs-assistant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probelabs%2Fprobelabs-assistant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/probelabs","download_url":"https://codeload.github.com/probelabs/probelabs-assistant/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probelabs%2Fprobelabs-assistant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33957499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-05T20:01:26.619Z","updated_at":"2026-06-05T20:01:27.395Z","avatar_url":"https://github.com/probelabs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProbeLabs Assistant\n\nThis is the AI assistant that ProbeLabs runs internally. It's how we use [Probe](https://github.com/probelabs/probe) and [Visor](https://github.com/probelabs/visor) ourselves — a real-world, production implementation that covers our entire codebase of 16 repositories spanning Rust, TypeScript, Go, and Node.js.\n\nWe open-sourced it so you can see exactly how a Probe-based assistant works at scale: how skills are structured, how code-talk explores multiple repos, how GitHub integration feeds context into conversations, and how the engineer workflow turns questions into pull requests.\n\n\u003e **Want to build your own?** Use [probe-quickstart](https://github.com/probelabs/probe-quickstart) — a minimal template you can clone and customize in minutes. Come back here when you want to see how a full production setup looks.\n\n## What We Use It For\n\n- **Code exploration** — our team asks questions about implementation details across all ProbeLabs projects and gets answers with file paths and line numbers\n- **GitHub browsing** — check PRs, issues, releases, and activity across the `probelabs` org without leaving Slack\n- **CI/CD debugging** — paste a failed pipeline link and get a root cause analysis with the relevant code context\n- **Code changes** — describe what needs to change and the assistant explores the code, implements the fix, and opens a PR\n- **Thread summaries** — catch up on long Slack discussions\n\n## Running It\n\n### CLI\n\n```bash\ngit clone https://github.com/probelabs/probelabs-assistant.git\ncd probelabs-assistant\ncp .env.example .env\n# Edit .env with your API keys\n\nnpx -y @probelabs/visor@latest run probelabs-assistant.yaml --tui\n```\n\n### Slack\n\n```bash\nnpx -y @probelabs/visor@latest run probelabs-assistant.yaml --slack\n```\n\nRequires Slack tokens in `.env` — see [Environment Variables](#environment-variables) below.\n\n## How It Works\n\nA message goes through this pipeline:\n\n1. **Intent classification** — is this `chat` or `code_help`?\n2. **Skill selection** — which skills match the request?\n3. **Dependency expansion** — `engineer` requires `code-explorer`, so both activate\n4. **Knowledge injection** — each active skill injects its docs and tools into the AI context\n5. **Execution** — the AI responds, calling code-talk, `gh` CLI, or Claude Code as needed\n\nEverything is declared in YAML. No application code.\n\n## Project Structure\n\n```\nprobelabs-assistant.yaml          ← Main config: Slack, scheduler, system prompt\n│\n├── config/\n│   ├── intents.yaml              ← Intent routing (chat, code_help)\n│   └── skills.yaml               ← All skills with knowledge + tools\n│\n├── docs/                         ← Knowledge files injected into skills at runtime\n│   ├── probelabs-architecture.md ← How our products fit together\n│   ├── github-tools.md           ← gh CLI patterns for all repos\n│   ├── github-actions-debugging.md\n│   ├── code-exploration-tool.md\n│   ├── code-help-mode.md\n│   ├── engineer-tool.md\n│   └── capabilities.md\n│\n└── workflows/\n    └── engineer.yaml             ← Code changes + PR creation via Claude Code\n```\n\n## Skills\n\n| Skill | When It Activates | What It Does |\n|-------|-------------------|--------------|\n| `github` | PRs, issues, releases, branches | Runs `gh` CLI commands across all ProbeLabs repos |\n| `github-actions` | CI/CD failures, pipeline debugging | Fetches logs, greps for errors, identifies root cause |\n| `code-explorer` | Code questions, implementation details | Semantic search across 15 repos via code-talk |\n| `code-help` | General code Q\u0026A | Injects coding conventions and project context |\n| `engineer` | Code changes, PR requests | Explores code, implements changes, opens PRs via Claude Code |\n| `capabilities` | \"What can you do?\" | Describes available skills |\n| `thread-summary` | \"Summarize this thread\" | Condenses Slack conversations |\n\n## Repositories\n\nThe code-explorer skill covers all ProbeLabs projects with smart routing — it knows that \"search engine\" means `probe`, \"code review\" means `visor`, and \"workflow engine\" means `visor-ee`.\n\n| Repo | Language | Description |\n|------|----------|-------------|\n| [probe](https://github.com/probelabs/probe) | Rust | Semantic code search engine (ripgrep + tree-sitter) |\n| [visor](https://github.com/probelabs/visor) | TypeScript | AI code review — GitHub Action + CLI |\n| [visor-ee](https://github.com/probelabs/visor-ee) | TypeScript | Workflow engine powering this assistant |\n| [goreplay](https://github.com/probelabs/goreplay) | Go | HTTP traffic capture and replay |\n| [logoscope](https://github.com/probelabs/logoscope) | TypeScript | AI log analysis CLI + MCP server |\n| [maid](https://github.com/probelabs/maid) | TypeScript | Mermaid diagram linter |\n| [docs-mcp](https://github.com/probelabs/docs-mcp) | TypeScript | Turn any GitHub repo into an MCP server |\n| [memaris](https://github.com/probelabs/memaris) | TypeScript | Persistent memory for Claude Code sessions |\n| [afk](https://github.com/probelabs/afk) | Node.js | Remote control for Claude Code via Telegram |\n| [big-brain](https://github.com/probelabs/big-brain) | TypeScript | MCP server for fresh AI insights when stuck |\n| [vow](https://github.com/probelabs/vow) | TypeScript | Accountability gates for AI agents |\n| [SandboxJS](https://github.com/probelabs/SandboxJS) | JavaScript | Safe eval runtime |\n| [probelabs.com](https://github.com/probelabs/probelabs.com) | Web | Company website |\n| [probe-quickstart](https://github.com/probelabs/probe-quickstart) | YAML | Quickstart template for building assistants |\n| [company-data](https://github.com/probelabs/company-data) | — | Internal knowledge base — commercial docs, ideas, strategy (private) |\n| [ground-control](https://github.com/probelabs/ground-control) | — | AI chat interface (private) |\n\n## Example Conversations\n\n```\n\"How does Probe's tree-sitter integration work?\"\n→ code-explorer activates, searches probelabs/probe, returns explanation with file paths\n\n\"Show me recent PRs on visor\"\n→ github activates, runs gh pr list --repo probelabs/visor\n\n\"Why is CI failing on probe PR #42?\"\n→ github-actions activates, fetches logs, identifies the failing test and root cause\n\n\"Add a --verbose flag to the probe CLI\"\n→ engineer + code-explorer activate, explores the code, implements the change, opens a PR\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `GOOGLE_API_KEY` | Yes | Google AI API key (Gemini) |\n| `SLACK_APP_TOKEN` | For Slack | App-level token (`xapp-...`) for Socket Mode |\n| `SLACK_BOT_TOKEN` | For Slack | Bot token (`xoxb-...`) for messages and API |\n| `SLACK_SIGNING_SECRET` | For Slack | Webhook request verification |\n\n### Slack App Setup\n\n1. Create app at [api.slack.com/apps](https://api.slack.com/apps)\n2. Enable **Socket Mode**\n3. Add **Bot Token Scopes**: `app_mentions:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `chat:write`, `reactions:read`, `reactions:write`\n4. Subscribe to **Bot Events**: `app_mention`, `message.channels`, `message.groups`, `message.im`\n5. Install to workspace, copy tokens to `.env`\n\n## Tests\n\n```bash\nnpx -y @probelabs/visor@latest test\n```\n\n## Building Your Own\n\nThis repo is our production config. If you want to build something similar for your team:\n\n1. Start with [probe-quickstart](https://github.com/probelabs/probe-quickstart) — a working assistant in one YAML file\n2. Add your repos to the `code-explorer` skill's `projects` list\n3. Add skills for your tools (Jira, Confluence, etc.) using MCP servers\n4. Write knowledge docs in `docs/` and reference them with `{% readfile %}`\n5. Use this repo as a reference for how skills, routing, and workflows fit together at scale\n\n## Related\n\n- [probe-quickstart](https://github.com/probelabs/probe-quickstart) — Start here to build your own assistant\n- [probe](https://github.com/probelabs/probe) — The semantic code search engine underneath\n- [visor](https://github.com/probelabs/visor) — Workflow engine and code review tool\n- [visor-ee](https://github.com/probelabs/visor-ee) — Enterprise assistant workflows (code-talk, engineer, intent routing)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobelabs%2Fprobelabs-assistant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprobelabs%2Fprobelabs-assistant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobelabs%2Fprobelabs-assistant/lists"}