https://github.com/probelabs/probelabs-assistant
ProbeLabs AI Assistant - AI-powered assistant for exploring and working with ProbeLabs projects
https://github.com/probelabs/probelabs-assistant
Last synced: 2 months ago
JSON representation
ProbeLabs AI Assistant - AI-powered assistant for exploring and working with ProbeLabs projects
- Host: GitHub
- URL: https://github.com/probelabs/probelabs-assistant
- Owner: probelabs
- Created: 2026-02-11T15:32:08.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-03-12T16:52:46.000Z (5 months ago)
- Last Synced: 2026-03-12T18:41:34.925Z (5 months ago)
- Language: Python
- Size: 175 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ProbeLabs Assistant
This 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.
We 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.
> **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.
## What We Use It For
- **Code exploration** — our team asks questions about implementation details across all ProbeLabs projects and gets answers with file paths and line numbers
- **GitHub browsing** — check PRs, issues, releases, and activity across the `probelabs` org without leaving Slack
- **CI/CD debugging** — paste a failed pipeline link and get a root cause analysis with the relevant code context
- **Code changes** — describe what needs to change and the assistant explores the code, implements the fix, and opens a PR
- **Thread summaries** — catch up on long Slack discussions
## Running It
### CLI
```bash
git clone https://github.com/probelabs/probelabs-assistant.git
cd probelabs-assistant
cp .env.example .env
# Edit .env with your API keys
npx -y @probelabs/visor@latest run probelabs-assistant.yaml --tui
```
### Slack
```bash
npx -y @probelabs/visor@latest run probelabs-assistant.yaml --slack
```
Requires Slack tokens in `.env` — see [Environment Variables](#environment-variables) below.
## How It Works
A message goes through this pipeline:
1. **Intent classification** — is this `chat` or `code_help`?
2. **Skill selection** — which skills match the request?
3. **Dependency expansion** — `engineer` requires `code-explorer`, so both activate
4. **Knowledge injection** — each active skill injects its docs and tools into the AI context
5. **Execution** — the AI responds, calling code-talk, `gh` CLI, or Claude Code as needed
Everything is declared in YAML. No application code.
## Project Structure
```
probelabs-assistant.yaml ← Main config: Slack, scheduler, system prompt
│
├── config/
│ ├── intents.yaml ← Intent routing (chat, code_help)
│ └── skills.yaml ← All skills with knowledge + tools
│
├── docs/ ← Knowledge files injected into skills at runtime
│ ├── probelabs-architecture.md ← How our products fit together
│ ├── github-tools.md ← gh CLI patterns for all repos
│ ├── github-actions-debugging.md
│ ├── code-exploration-tool.md
│ ├── code-help-mode.md
│ ├── engineer-tool.md
│ └── capabilities.md
│
└── workflows/
└── engineer.yaml ← Code changes + PR creation via Claude Code
```
## Skills
| Skill | When It Activates | What It Does |
|-------|-------------------|--------------|
| `github` | PRs, issues, releases, branches | Runs `gh` CLI commands across all ProbeLabs repos |
| `github-actions` | CI/CD failures, pipeline debugging | Fetches logs, greps for errors, identifies root cause |
| `code-explorer` | Code questions, implementation details | Semantic search across 15 repos via code-talk |
| `code-help` | General code Q&A | Injects coding conventions and project context |
| `engineer` | Code changes, PR requests | Explores code, implements changes, opens PRs via Claude Code |
| `capabilities` | "What can you do?" | Describes available skills |
| `thread-summary` | "Summarize this thread" | Condenses Slack conversations |
## Repositories
The 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`.
| Repo | Language | Description |
|------|----------|-------------|
| [probe](https://github.com/probelabs/probe) | Rust | Semantic code search engine (ripgrep + tree-sitter) |
| [visor](https://github.com/probelabs/visor) | TypeScript | AI code review — GitHub Action + CLI |
| [visor-ee](https://github.com/probelabs/visor-ee) | TypeScript | Workflow engine powering this assistant |
| [goreplay](https://github.com/probelabs/goreplay) | Go | HTTP traffic capture and replay |
| [logoscope](https://github.com/probelabs/logoscope) | TypeScript | AI log analysis CLI + MCP server |
| [maid](https://github.com/probelabs/maid) | TypeScript | Mermaid diagram linter |
| [docs-mcp](https://github.com/probelabs/docs-mcp) | TypeScript | Turn any GitHub repo into an MCP server |
| [memaris](https://github.com/probelabs/memaris) | TypeScript | Persistent memory for Claude Code sessions |
| [afk](https://github.com/probelabs/afk) | Node.js | Remote control for Claude Code via Telegram |
| [big-brain](https://github.com/probelabs/big-brain) | TypeScript | MCP server for fresh AI insights when stuck |
| [vow](https://github.com/probelabs/vow) | TypeScript | Accountability gates for AI agents |
| [SandboxJS](https://github.com/probelabs/SandboxJS) | JavaScript | Safe eval runtime |
| [probelabs.com](https://github.com/probelabs/probelabs.com) | Web | Company website |
| [probe-quickstart](https://github.com/probelabs/probe-quickstart) | YAML | Quickstart template for building assistants |
| [company-data](https://github.com/probelabs/company-data) | — | Internal knowledge base — commercial docs, ideas, strategy (private) |
| [ground-control](https://github.com/probelabs/ground-control) | — | AI chat interface (private) |
## Example Conversations
```
"How does Probe's tree-sitter integration work?"
→ code-explorer activates, searches probelabs/probe, returns explanation with file paths
"Show me recent PRs on visor"
→ github activates, runs gh pr list --repo probelabs/visor
"Why is CI failing on probe PR #42?"
→ github-actions activates, fetches logs, identifies the failing test and root cause
"Add a --verbose flag to the probe CLI"
→ engineer + code-explorer activate, explores the code, implements the change, opens a PR
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `GOOGLE_API_KEY` | Yes | Google AI API key (Gemini) |
| `SLACK_APP_TOKEN` | For Slack | App-level token (`xapp-...`) for Socket Mode |
| `SLACK_BOT_TOKEN` | For Slack | Bot token (`xoxb-...`) for messages and API |
| `SLACK_SIGNING_SECRET` | For Slack | Webhook request verification |
### Slack App Setup
1. Create app at [api.slack.com/apps](https://api.slack.com/apps)
2. Enable **Socket Mode**
3. Add **Bot Token Scopes**: `app_mentions:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `chat:write`, `reactions:read`, `reactions:write`
4. Subscribe to **Bot Events**: `app_mention`, `message.channels`, `message.groups`, `message.im`
5. Install to workspace, copy tokens to `.env`
## Tests
```bash
npx -y @probelabs/visor@latest test
```
## Building Your Own
This repo is our production config. If you want to build something similar for your team:
1. Start with [probe-quickstart](https://github.com/probelabs/probe-quickstart) — a working assistant in one YAML file
2. Add your repos to the `code-explorer` skill's `projects` list
3. Add skills for your tools (Jira, Confluence, etc.) using MCP servers
4. Write knowledge docs in `docs/` and reference them with `{% readfile %}`
5. Use this repo as a reference for how skills, routing, and workflows fit together at scale
## Related
- [probe-quickstart](https://github.com/probelabs/probe-quickstart) — Start here to build your own assistant
- [probe](https://github.com/probelabs/probe) — The semantic code search engine underneath
- [visor](https://github.com/probelabs/visor) — Workflow engine and code review tool
- [visor-ee](https://github.com/probelabs/visor-ee) — Enterprise assistant workflows (code-talk, engineer, intent routing)
## License
MIT