@sabhahq/argus
v0.3.1
Published
Argus — the data-engineer general, packaged for the Sabha marketplace. Bundles the argus MCP (dist) so it launches via node ${CLAUDE_PLUGIN_ROOT}/mcp/bin/start.mjs. Depends on sabha-core.
Readme
@sabhahq/argus
The plugin payload for Argus, the data-engineer general, packaged for the Sabha marketplace. Ships the argus MCP server (esbuild-bundled), skills, and a rule. Works in both Cursor and Claude Code — they share ~/.claude/plugins/ as their plugin registry.
Install
From the Sabha marketplace (Cursor or Claude Code):
/plugin marketplace add viveknigam3003/sabha
/plugin install argus@sabha # or: /plugin install sabha@sabha for every general
npx @sabhahq/core auth <[email protected]>sabha-core rides along automatically as a dependency. After install, fully quit + reopen the editor (Cmd+Q in Cursor), then in chat:
argus, seed my config(That calls argus__install and writes ~/.config/argus/{config,registry}.yaml.)
Local development
Argus lives in the Sabha monorepo (packages/generals/argus). From a checkout:
pnpm install
pnpm -r build
pnpm --filter @sabhahq/argus bundle # esbuild-bundles the MCP into mcp/distSource layout
packages/generals/argus/plugin/
├── .cursor-plugin/{plugin,marketplace}.json ← Cursor manifest
├── .claude-plugin/{plugin,marketplace}.json ← Claude Code manifest (identical mirror)
├── .mcp.json ← MCP server config
├── skills/<name>/SKILL.md ← 5 skill dirs (real, not symlinked)
├── rules/argus-tool-use.mdc
├── scripts/validate.mjs ← plugin layout validator
└── README.mdBoth manifest dirs exist because Cursor's loader prefers .cursor-plugin/ and Claude Code's prefers .claude-plugin/; mirroring lets either editor resolve the plugin without auto-discovery quirks. The MCP file is dot-prefixed (.mcp.json) to match the convention used by published plugins like Zoom, Postman, and Atlassian.
What this plugin adds
One MCP server (argus) exposing the core verbs:
argus__install— guided first-run setup (seeds config files + wires one connector)argus__doctor— readiness probe across config, registry, and connectorsargus__validate_registry— structured zod validation of the registryargus__run_query/argus__get_feature_metric/argus__check_kpi_health— connector-agnostic data verbsargus__connect_source/argus__list_connectors— connector lifecycleargus__scan_redash_tables/argus__audit_redash_table/argus__save_redash_query— Redash-specific authoringargus__telemetry_locate— self-telemetry root for theaudit-my-agent-usageskill
Instrumentation audits live as a skill driving the host's native Grep — Argus stopped reimplementing tools the host already provides. Argus is read-only against the configured backends; it queries and investigates, it does not create or mutate dashboards/alerts.
Skills that prime the model on Argus workflows:
| Skill | Triggers when |
|---|---|
| argus | any telemetry / query / KPI-health question — primary workflow primer |
| audit-instrumentation | "is feature X instrumented?" — drives Grep against the registry's codePaths |
| propose-registry-entry | "register this event", "add the orphans" — drafts a customEvents YAML block |
| propose-feature-kpis | "what should I monitor", "suggest KPIs" — drafts 3-6 KPIs with health thresholds |
| judge-event-quality | "is this event useful", "review this recordCustomEvent" — scores across volume/latency/outcome/correlation/dimensionality and flags reserved-column collisions |
| propose-feature-boundary | "register a new feature", "I just shipped X" — drafts the full feature block, then chains into the other skills |
| propose-redash-tables | "register my Redash tables" — drafts the redashTables[] block |
| audit-my-agent-usage | "what skills do I actually use?" — drives jq/duckdb against the telemetry JSONL |
| init-argus | first-time setup |
One rule biasing the model toward Argus tools when the user asks about feature telemetry.
Example flows after install
> how is condense-tool-response doing?
> any KPIs breaching right now?
> what KPIs should I track for the new context-mention feature?
> review the event quality of SkillInvocation in multiToolCallHelper.js
> I just shipped the context-mention feature — register it in argusIn each case the model picks the right skill, calls argus MCP tools to gather data, drafts the proposed YAML or report, and asks for your confirmation before suggesting you paste anything into registry.yaml. Argus never writes to that file itself — it stays your source of truth.
