Backend Code Review
langgenius/dify
Reviews backend code under api/ for concrete, reproducible defects, routes to rule packs for architecture, schema, repositories and SQLAlchemy, and ranks findings from P0 to P3.
Quick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows.
$ npx skills add LanternOps/breeze --skill agent-info -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LanternOps/breeze agent-info --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/agent-info .claude/skills/agent-info && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .claude/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-infoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LanternOps/breeze --skill agent-info -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LanternOps/breeze agent-info --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/agent-info .agents/skills/agent-info && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .agents/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LanternOps/breeze --skill agent-info -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LanternOps/breeze agent-info --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/agent-info .cursor/skills/agent-info && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .cursor/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LanternOps/breeze.git --path .claude/skills/agent-info--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LanternOps/breeze --skill agent-info -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LanternOps/breeze agent-info --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/agent-info .gemini/skills/agent-info && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .gemini/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LanternOps/breeze agent-infoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LanternOps/breeze --skill agent-info -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/agent-info .github/skills/agent-info && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .github/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LanternOps/breeze --skill agent-info -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LanternOps/breeze agent-info --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LanternOps/breeze.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/agent-info .opencode/skills/agent-info && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agent-info" agent skill from https://github.com/LanternOps/breeze/tree/main/.claude/skills/agent-info into .opencode/skills/agent-info/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-info", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agent-infoQuick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows.
Agent Info is an agent skill from LanternOps/breeze. Quick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows. Use when working on agent code, debugging agent issues, or understanding how the agent communicates with the API.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. The repository describes itself as: The open-source IT platform that comes with the workers. RMM + PSA in one system, with a governed AI operator built in. The licence is AGPL-3.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1f72bb7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makegocurldockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
JWT_SECRETBREEZE_API_KEYAUTH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agent Info loads about 4.7k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,223 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
make dev-push (reads .env.dev for defaults)ion 1: API key (recommended)** — Set in `.env.dev`:# .env.dev (gitignored, at repo root)- Secret: `JWT_SECRET` from `.env` (at repo root)# Easiest — uses .env.dev defaults (API key + device ID):│ # reads .env.dev for API key + device ID │ild & push | `make dev-push` | API key (`.env.dev`) | Upload new binary, trigger agent restart |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LanternOps/breeze at commit 1f72bb7, republished under its AGPL-3.0 licence (© LanternOps). 1,223 words, ~4,729 tokens.
.claude/skills/agent-info/SKILL.md (or your agent's skills folder).The Go agent runs on managed devices (Windows, macOS, Linux) and communicates with the Hono API server.
agent/
cmd/breeze-agent/main.go # Entry point (cobra CLI)
agent.yaml # Config file (auto-generated on enroll)
internal/
config/config.go # Config loading/saving (viper)
heartbeat/heartbeat.go # Main run loop, command dispatch, inventory
websocket/client.go # Real-time WebSocket connection
collectors/ # System data collectors (per-platform)
remote/
tools/ # Command handlers (processes, services, files, etc.)
desktop/ # WebRTC remote desktop
terminal/ # PTY management (per-platform)
updater/ # Self-update mechanism
scripts/ # Script execution runner
pkg/api/client.go # HTTP client for enrollmentbreeze-agent run # Start the agent
breeze-agent enroll <key> --server URL # Enroll with server
breeze-agent version # Print version
breeze-agent status # Check enrollment status
breeze-agent --config /path/to/file # Use custom configagent.yaml)agent_id: <sha256-hash>
auth_token: brz_<hex-token>
org_id: <uuid>
site_id: <uuid>
server_url: http://localhost:3001
heartbeat_interval_seconds: 60
metrics_interval_seconds: 30
enabled_collectors:
- hardware
- software
- metrics
- network/etc/breeze/agent.yaml (Linux), /Library/Application Support/Breeze/agent.yaml (macOS), %ProgramData%\Breeze\agent.yaml (Windows)brz_ prefix, stored as SHA-256 hash in DB (agentTokenHash column)POST /api/v1/agents/:id/heartbeat every 60sAuthorization: Bearer brz_<token>ws(s)://server/api/v1/agent-ws/:agentId/ws?token=brz_<token>PUT /api/v1/agents/:id/software - software inventoryPUT /api/v1/agents/:id/disks - disk inventoryPUT /api/v1/agents/:id/network - network adaptersPUT /api/v1/agents/:id/connections - active connectionsPUT /api/v1/agents/:id/patches - pending + installed patchesPUT /api/v1/agents/:id/eventlogs - event logs (every 5 min)All commands use: {id: string, type: string, payload: map[string]any}
Results use: {type: "command_result", commandId: string, status: string, result: any}
| Type | Handler | Payload |
|---|---|---|
list_processes | ListProcesses | {search, sortBy, sortDir, page, limit} |
get_process | GetProcess | {pid} |
kill_process | KillProcess | {pid} |
| Type | Handler | Payload |
|---|---|---|
list_services | ListServices | {search, page, limit} |
get_service | GetService | {name} |
start_service | StartService | {name} |
stop_service | StopService | {name} |
restart_service | RestartService | {name} |
| Type | Handler | Payload |
|---|---|---|
file_list | ListFiles | {path} |
file_read | ReadFile | {path} (max 1MB) |
file_write | WriteFile | {path, content, encoding} (text or base64) |
file_delete | DeleteFile | {path, recursive} |
file_mkdir | MakeDirectory | {path} |
file_rename | RenameFile | {oldPath, newPath} |
| Type | Handler | Payload |
|---|---|---|
terminal_start | StartTerminal | {sessionId, cols, rows} |
terminal_data | WriteTerminal | {sessionId, data} |
terminal_resize | ResizeTerminal | {sessionId, cols, rows} |
terminal_stop | StopTerminal | {sessionId} |
Terminal output streams via WebSocket: {type: "terminal_output", sessionId, data}
Terminal commands use term- prefix IDs and skip DB persistence.
| Type | Handler | Payload |
|---|---|---|
event_logs_list | ListEventLogs | {} |
event_logs_query | QueryEventLogs | {logName, level, source, eventId, query, page, limit} (query = XPath, exclusive with level/source/eventId) |
event_log_get | GetEventLogEntry | {logName, recordId} |
tasks_list | ListTasks | {folder, page, limit} |
task_get | GetTask | {name, path} |
task_run | RunTask | {name, path} |
task_enable | EnableTask | {name, path} |
task_disable | DisableTask | {name, path} |
registry_keys | ListRegistryKeys | {hive, path} |
registry_values | ListRegistryValues | {hive, path} |
registry_get | GetRegistryValue | {hive, path, name} |
registry_set | SetRegistryValue | {hive, path, name, type, data} |
registry_delete | DeleteRegistryValue | {hive, path, name} |
| Type | Handler | Payload |
|---|---|---|
reboot | Reboot | {delay} |
shutdown | Shutdown | {delay} |
lock | Lock | {} |
collect_software | inline | {} |
start_desktop | desktop.SessionManager | {sessionId, offer} |
stop_desktop | desktop.SessionManager | {sessionId} |
breeze-agent enroll <key> --server <url>collectors.HardwareCollectorPOST /api/v1/agents/enroll with enrollment key + device info{agentId, authToken, orgId, siteId, config}agent.yaml with 0600 permissionsdevices.agentTokenHashAPI creates command (DB) → dispatches via WebSocket (or heartbeat response)
→ Agent receives {id, type, payload}
→ heartbeat.executeCommand() dispatches to handler
→ Handler returns tools.CommandResult {status, stdout, stderr, error}
→ Result sent via WebSocket AND HTTP POST to /agents/:id/commands/:cmdId/resultcd agent
make run # Build and run locally
make build-all # Cross-compile (windows/linux/darwin, amd64/arm64)
go build -o /tmp/breeze-agent-bin ./cmd/breeze-agent/ # Quick build
/tmp/breeze-agent-bin run # Run built binary (needs 'run' subcommand!)github.com/gorilla/websocket - WebSocket clientgithub.com/spf13/cobra - CLI frameworkgithub.com/spf13/viper - Configuration managementgithub.com/shirou/gopsutil - System metrics collectiongithub.com/pion/webrtc - Remote desktop (WebRTC)Many packages have platform-specific implementations:
*_darwin.go - macOS*_linux.go - Linux*_windows.go - Windows*_other.go - Stub for unsupported platformsNotable: Terminal PTY uses cgo on macOS (pty_darwin.go) for posix_openpt/grantpt/unlockpt/ptsname.
Bypasses the full release cycle for rapid agent iteration: build → upload → restart in seconds.
make dev-push (reads .env.dev for defaults)
1. Cross-compile binary (queries device OS/arch from API)
2. Upload binary via POST /api/v1/dev/push (multipart, JWT or API key auth)
3. API saves to temp dir, computes SHA256, creates ephemeral download URL (5-min TTL)
4. API sends `dev_update` command to agent via WebSocket
5. Agent disables auto_update (persisted to config), downloads binary, verifies checksum
6. Agent backs up current binary, replaces, restartsDev-push accepts two auth methods (JWT or API key). Prefer the API key — it doesn't expire hourly.
Option 1: API key (recommended) — Set in .env.dev:
# .env.dev (gitignored, at repo root)
BREEZE_API_KEY=brz_XXXX # from web UI → Settings → API Keys
BREEZE_DEV_DEVICE=<device-uuid>
BREEZE_API_URL=http://localhost:3001Then just cd agent && make dev-push — no extra args needed.
The dev-push route sends X-API-Key header when the token starts with brz_, Authorization: Bearer otherwise.
Option 2: JWT — For endpoints that don't accept API keys (e.g. /devices/:id/diagnostic-logs):
# Generate a 1-hour JWT token:
./agent/scripts/gen-jwt.sh # uses first user in DB
./agent/scripts/gen-jwt.sh todd@olivetech.co # specific user
# Use it:
export TOKEN=$(./agent/scripts/gen-jwt.sh)
curl -H "Authorization: Bearer $TOKEN" http://localhost:3001/api/v1/devices/<id>/diagnostic-logsJWT requirements (if generating manually):
jose (NOT jsonwebtoken)HS256JWT_SECRET from .env (at repo root)iss: "breeze", aud: "breeze-api"sub (real user UUID from users table), email, scope: "system", type: "access"docker exec breeze-postgres-dev psql -U breeze -d breeze -t -c "SELECT id, email FROM users LIMIT 3;"# Easiest — uses .env.dev defaults (API key + device ID):
cd agent && make dev-push
# Override device or token:
make dev-push DEVICE=<deviceId>
make dev-push AUTH_TOKEN=<jwt-or-api-key>
# Manual — build + push separately:
cd agent
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.version=dev-$(date +%s)" \
-o bin/breeze-agent-dev ./cmd/breeze-agent
curl -X POST http://localhost:3001/api/v1/dev/push \
-H "X-API-Key: brz_XXXX" \
-F "agentId=DEVICE_ID" \
-F "binary=@bin/breeze-agent-dev"| Type | Payload | Notes |
|---|---|---|
dev_update | {downloadUrl, checksum, version} | Disables auto_update, triggers UpdateFromURL |
| File | Purpose |
|---|---|
apps/api/src/routes/devPush.ts | Upload endpoint + ephemeral download route |
agent/internal/heartbeat/handlers_devupdate.go | handleDevUpdate — disables auto-update, triggers updater |
agent/internal/updater/updater.go → UpdateFromURL() | Direct URL download (skips version-lookup API) |
agent/internal/config/config.go → SaveTo() | Persists auto_update flag across restarts |
NODE_ENV !== 'production' or DEV_PUSH_ENABLED=truedev_update sets auto_update: false in config to prevent heartbeat from overwriting the dev binaryauto_update: true in agent.yaml or re-enroll the deviceThe intended workflow for debugging/developing agent code: fetch logs → fix code → build & push → check logs.
┌─────────────────────────────────────────────────────────┐
│ 1. FETCH LOGS — see what's happening on the agent │
│ │
│ # Get recent agent logs (shipped from agent → DB) │
│ GET /api/v1/devices/:id/diagnostic-logs │
│ ?level=warn,error │
│ ?component=updater │
│ ?search=keyword │
│ ?since=2026-02-15T00:00:00Z │
│ │
│ # Or bump log level for more detail (auto-reverts) │
│ Send `set_log_level` command: │
│ {level: "debug", durationMinutes: 30} │
│ │
│ # Direct DB query for fastest access: │
│ psql: SELECT * FROM agent_logs │
│ WHERE device_id = '<id>' │
│ ORDER BY timestamp DESC LIMIT 50; │
├─────────────────────────────────────────────────────────┤
│ 2. FIX CODE — edit Go source in agent/internal/... │
├─────────────────────────────────────────────────────────┤
│ 3. BUILD & DEPLOY — push new binary to live agent │
│ │
│ cd agent && make dev-push │
│ # reads .env.dev for API key + device ID │
│ │
│ Agent restarts with new binary in ~5 seconds. │
├─────────────────────────────────────────────────────────┤
│ 4. CHECK LOGS — verify the fix │
│ │
│ GET /api/v1/devices/:id/diagnostic-logs │
│ ?since=<deploy-time> │
│ │
│ Look for: │
│ - New agent version in logs (dev-<timestamp>) │
│ - Error/warn messages resolved │
│ - Expected behavior in component logs │
│ │
│ If not fixed → loop back to step 1 │
└─────────────────────────────────────────────────────────┘API endpoints used in the loop:
| Step | Endpoint | Auth | Purpose |
|---|---|---|---|
| Fetch logs | GET /api/v1/devices/:id/diagnostic-logs | JWT (gen-jwt.sh) | Query shipped agent logs with filters |
| Bump log level | set_log_level command via WS | Agent | Temporarily increase verbosity |
| Build & push | make dev-push | API key (.env.dev) | Upload new binary, trigger agent restart |
| Check logs | GET /api/v1/devices/:id/diagnostic-logs?since=... | JWT (gen-jwt.sh) | Verify fix after deploy |
Log shipping pipeline: Agent logging package → buffer → POST /api/v1/agents/:id/logs → agent_logs table → queryable via /devices/:id/diagnostic-logs
Filters: ?level=, ?component=, ?search=, ?since=, ?until=, ?page=, ?limit= (max 1000)
Tag commit (v*) → GitHub Actions builds all platforms → Assets uploaded to GitHub Releases
→ API syncs versions via POST /api/v1/agent-versions/sync-github
→ Registered in `agent_versions` table with download URLs + SHA256 checksums
→ Agents auto-upgrade via heartbeat response `upgradeTo` fieldThe agent_versions table tracks each binary per platform/arch/component.
| Endpoint | Auth | Purpose |
|---|---|---|
GET /agent-versions/latest?platform=X&arch=Y | None | Get latest version info + download URL |
GET /agent-versions/:version/download?platform=X&arch=Y | None | Get download URL for specific version |
POST /agent-versions | System | Manually register a version |
POST /agent-versions/sync-github?version=vX.Y.Z | System | Sync from GitHub releases |
On each heartbeat, the API compares the agent's reported version against the latest registered version:
0.12.0): upgraded when a newer version exists (compareAgentVersions)dev-*): always offered the latest release version (dev versions can't be semver-compared)upgradeTo: "X.Y.Z" which the agent acts onKey code: apps/api/src/routes/agents/heartbeat.ts lines ~188-198
upgradeTo in heartbeat responseGET /api/v1/agent-versions/{version}/download?platform=X&arch=Y to get URL + checksum.backupsystemctl restart breeze-agentlaunchctl kickstart -k system/com.breeze.agentsyscall.Exec() to replace process.backupKey files: agent/internal/updater/updater.go, agent/internal/heartbeat/heartbeat.go
Dev-push sets auto_update: false in the agent config to prevent heartbeat from overwriting dev binaries. To return a device to the release track:
Option 1 — Edit agent config (on the device):
Set auto_update: true in agent.yaml, then restart the agent. The next heartbeat will trigger upgrade to latest release.
Option 2 — Re-enroll the device (clean slate).
Note: The compareAgentVersions function returns 0 for dev versions (can't parse dev-* as semver), so the heartbeat has special handling: if agentVersion.startsWith('dev-'), it always sets upgradeTo to the latest release regardless of comparison.
Controlled by BINARY_SOURCE env var:
| Mode | Behavior |
|---|---|
github (default) | Redirects agent to GitHub Releases CDN |
local + S3 | Generates presigned S3 URLs |
local (disk) | Serves from ./agent/bin/ (or AGENT_BINARY_DIR) |
| Platform | Script | Binary Location | Service |
|---|---|---|---|
| Linux | agent/scripts/install/install-linux.sh | /usr/local/bin/breeze-agent | systemd (breeze-agent.service) |
| macOS | agent/scripts/install/install-darwin.sh | /usr/local/bin/breeze-agent | launchd (com.breeze.agent.plist) |
| Windows | agent/scripts/install/install-windows.ps1 | C:\Program Files\Breeze\breeze-agent.exe | Windows Service (BreezeAgent) |
Dynamic installer endpoint: GET /api/v1/agents/install.sh — detects OS/arch, downloads binary, enrolls, installs service.
brz_ token in Authorization: Bearer headeractorType: 'agent'© LanternOps, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/agent-info of LanternOps/breeze.
Open the folder on GitHubat commit 1f72bb7
Agent Info next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agent Info this skillLanternOps/breeze | 130 | — | ~4.7k | Automated safety check: Notes | AGPL-3.0 | |
| Backend Code Reviewlanggenius/dify | 158k | — | ~676 | Automated safety check: Pass | Custom licence | |
| Native Data FetchingCherryHQ/cherry-studio-app | 4k | 6 repos | ~2.9k | Automated safety check: Notes | MIT | |
| Twenty App Entity Developmenttwentyhq/twenty | 58k | — | ~1.8k | Automated safety check: Pass | Custom licence | |
| Go Pedantrychromedp/chromedp | 13k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Gumroad Prod Consoleantiwork/gumroad | 9.8k | — | ~2.9k | Automated safety check: Notes | MIT |
langgenius/dify
Reviews backend code under api/ for concrete, reproducible defects, routes to rule packs for architecture, schema, repositories and SQLAlchemy, and ranks findings from P0 to P3.
CherryHQ/cherry-studio-app
A skill your agent uses when implementing or debugging ANY network request, API call, or data fetching.
twentyhq/twenty
Guides changes to an existing Twenty app: adding or editing objects, layouts, logic functions and front components, with a plan stated before multi-entity edits.
chromedp/chromedp
This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…
antiwork/gumroad
Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.
langbot-app/LangBot
Guides building, debugging and testing LangBot plugins: components, SDK calls, README and locale rules, SDK pitfalls and WebSocket-based testing.
LanternOps/breeze
A skill your agent uses when debugging agent issues, investigating agent errors, checking agent connectivity, or reviewing agent diagnostic logs.
LanternOps/breeze
Quick reference for the Breeze RMM AI Agent system architecture, MCP tools, streaming chat, cost tracking, guardrails, and MCP server.
LanternOps/breeze
Quick reference for the Breeze Helper Tauri desktop app — architecture, Rust backend commands, React frontend, config files, IPC with the Go agent, helper chat API routes, tool approval flow, and…
LanternOps/breeze
A skill your agent uses when running a broad manual/AI-driven end-to-end verification of Breeze RMM across many merged PRs or commits — "test everything since the last release", release-readiness…
LanternOps/breeze
A skill your agent uses when orchestrating Breeze implementation work from this seat — dispatching waves or issue fixes to background sessions, deciding whether an open PR gets merged, handling a…
LanternOps/breeze
A skill your agent uses when reviewing, triaging, or managing the incoming GitHub backlog on the Breeze repo — PRs, Discussions, AND Issues.
Categories
Quick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows. Agent Info is an agent skill from LanternOps/breeze. Quick reference for the Breeze RMM Go agent architecture, commands, configuration, build process, and data flows.
Agent Info fits situations like: working on agent code; debugging agent issues; understanding how the agent communicates with the API.
Run `npx skills add LanternOps/breeze --skill agent-info -a claude-code`. Or copy the skill folder (.claude/skills/agent-info in LanternOps/breeze) into .claude/skills/agent-info in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LanternOps/breeze --skill agent-info -a codex`. Or copy the skill folder (.claude/skills/agent-info in LanternOps/breeze) into .agents/skills/agent-info in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LanternOps/breeze --skill agent-info -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-info, .gemini/skills/agent-info, .github/skills/agent-info and .opencode/skills/agent-info in your project.
Going by SKILL.md and its folder, Agent Info needs the command-line tools its instructions call (make, go, curl and docker) and credentials named JWT_SECRET, BREEZE_API_KEY and AUTH_TOKEN. Our summary lists: Docker; A credential in BREEZE_API_KEY; A credential in JWT_SECRET.
SKILL.md contains no URLs. Its commands use curl and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Agent Info is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agent Info: Backend Code Review (langgenius/dify, 158k stars), Native Data Fetching (CherryHQ/cherry-studio-app, 4k stars), Twenty App Entity Development (twentyhq/twenty, 58k stars) and Go Pedantry (chromedp/chromedp, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LanternOps (a GitHub organization) maintains it in LanternOps/breeze, which has 130 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: LanternOps/breeze on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.