ops-dash

GitHub

交互式像素艺术运维指挥看板,并行采集CI、PR、营收、部署等12项数据,提供实时状态监控、告警及快捷操作入口。

claude-ops/skills/ops-dash/SKILL.md Lifecycle-Innovations-Limited/claude-ops

Trigger Scenarios

需要查看综合运维状态仪表盘 快速导航至各项运维命令或报告

Install

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-dash -g -y
More Options

Non-standard path

npx skills add https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-dash -g -y

Use without installing

npx skills use Lifecycle-Innovations-Limited/claude-ops@ops-dash

指定 Agent (Claude Code)

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-dash -a claude-code -g -y

安装 repo 全部 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --all -g -y

预览 repo 内 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --list

SKILL.md

Frontmatter
{
    "name": "ops-dash",
    "effort": "low",
    "maxTurns": 15,
    "description": "Interactive pixel-art command center dashboard. Visual business HQ with instant hotkey navigation to all ops commands, live status indicators, fire alerts, C-suite reports, settings, sharing, and FAQ.",
    "allowed-tools": [
        "Bash",
        "Read",
        "Grep",
        "Glob",
        "Skill",
        "Agent",
        "TeamCreate",
        "SendMessage",
        "AskUserQuestion",
        "CronCreate",
        "CronList",
        "CronDelete"
    ],
    "argument-hint": "[back|settings|share|faq]",
    "disallowedTools": [
        "Edit",
        "Write",
        "NotebookEdit"
    ]
}

OPS > DASH — Interactive Command Center

Runtime Context

Before rendering, load available context:

  1. Preferences: Read ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json

    • owner — personalize the dashboard header greeting
    • timezone — display timestamps correctly in status indicators
  2. Daemon health: Read ${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json

    • If action_needed is not null → show a warning banner at the top of the dashboard before the menu

CLI/API Reference

bin/ops-dash

Command Usage Output
${CLAUDE_PLUGIN_ROOT}/bin/ops-dash Render hybrid live command center 12-section live dashboard
${CLAUDE_PLUGIN_ROOT}/bin/ops-dash 2>/dev/null || echo "DASH_RENDER_FAILED" Render with failure detection Dashboard or DASH_RENDER_FAILED sentinel
OPS_MOBILE=1 ${CLAUDE_PLUGIN_ROOT}/bin/ops-dash Plain-text compact mode (SSH/mobile) No ANSI boxes, single-line sections

The bin script fires all 12 data probes in parallel (background subshells writing to a tmpdir), renders an animated loading bar while they run, then renders sections sequentially top-to-bottom. Each section degrades to (no data) if its probe fails — the script never crashes.

Live data rendered per section:

  1. HERO — pixel-art logo (gradient cyan→violet), vitals strip: fires · unread · PRs · MRR · GSD active
  2. FIRES — CI failures across registry repos (via gh run list --repo)
  3. INBOX — WhatsApp recent_chats, Email inbox_count, Slack workspaces, Telegram, Notion
  4. OPEN PRs — all orgs via GraphQL (gh api graphql), no git-cwd required; shows age, CI state, review state
  5. PORTFOLIO — git dirty/ahead status per registered project path
  6. REVENUE & COSTS — FinOps dashboard (requires FINOPS_DASHBOARD_URL + FINOPS_OPS_API_TOKEN), Shopify health
  7. MARKETINGbin/ops-marketing-dash health score per project
  8. LINEAR — in-progress + urgent issues (requires LINEAR_API_KEY)
  9. DEPLOYS — ECS Fargate desired/running/pending per cluster (requires AWS CLI)
  10. COMPETITOR INTEL — latest report from ${OPS_DATA_DIR}/reports/competitor-intel/
  11. YOLO REPORTS/tmp/yolo-*/ directories with verdict summaries
  12. QUICK ACTIONS — keyboard shortcuts 1-9, 0, a-h (where h = smart-home if home_automation is configured in $PREFS_PATH; FAQ moves to ?). Status indicator next to h: green if all Homey devices online and no alarms, yellow if any device offline, red if active critical alarm. Hidden entirely if home_automation is not configured.

Schema fixes vs previous version:

  • Unread: was reading .whatsapp.count / .email.count (always 0). Now reads .channels.whatsapp.recent_chats / .channels.email.inbox_count.
  • PRs: was using gh pr list without --repo (fails outside git cwd). Now uses gh api graphql — works from any directory.

The skill reads preferences.json separately to check for warnings before invoking the script.


Agent Teams support

If CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 is set, use Agent Teams when loading dashboard data in parallel. This enables:

  • Agents share context and can coordinate mid-flight
  • You can steer priorities in real-time
  • Agents report progress as they complete

Team setup (only when flag is enabled):

TeamCreate("dash-team")
Agent(team_name="dash-team", name="infra-loader", prompt="Gather ECS health, Vercel status, and CI pipeline state")
Agent(team_name="dash-team", name="comms-loader", prompt="Gather unread counts across all configured channels")
Agent(team_name="dash-team", name="projects-loader", prompt="Gather GSD phase, git status, and PRs for all projects")
Agent(team_name="dash-team", name="business-loader", prompt="Gather revenue, Linear sprint, and fire alerts")

If the flag is NOT set, use standard fire-and-forget subagents.

Render dashboard instantly

${CLAUDE_PLUGIN_ROOT}/bin/ops-dash 2>/dev/null || echo "DASH_RENDER_FAILED"

Your task

The dashboard has already rendered above via the shell script — the user can see the full colored ANSI output directly. Your job is to route user input to the right skill.

DO NOT re-render, re-print, summarize, transcribe, or describe the dashboard output. The user sees the rich colored render above; any plain-text re-statement is duplicate noise and destroys the visual quality.

Skip straight to AskUserQuestion for the next action — no preamble, no recap, no "vitals" summary line. The dashboard speaks for itself.

Routing table

Input Route Description
1, go, morning, briefing /ops:ops-go Morning briefing
2, inbox, unread, messages /ops:ops-inbox Inbox zero
3, fires, incidents, down /ops:ops-fires Fire check
4, projects, portfolio /ops:ops-projects Project dashboard
5, next, priority, what /ops:ops-next What's next
6, revenue, costs, money /ops:ops-revenue Revenue & costs
7, linear, sprint, board /ops:ops-linear Linear sprint
8, deploy, ship /ops:ops-deploy Deploy status
9, triage, issues /ops:ops-triage Triage issues
0, speedup, clean, optimize /ops:ops-speedup System speedup
a, yolo /ops:ops-yolo YOLO mode
b, merge, prs /ops:ops-merge Auto-merge PRs
c, setup, configure /ops:setup Setup wizard
d, send, comms /ops:ops-comms Send message
e, report, csuite Read latest YOLO report C-suite report
f, settings, prefs, config Settings sub-menu Interactive config
g, share Share sub-menu Share your setup
h, home, homey, house /ops:ops-home Smart-home control (only if home_automation configured in $PREFS_PATH)
?, faq, help, wiki FAQ sub-menu Help & FAQ
back, dash Re-render dashboard Return to dash

C-suite report access (option e)

When user selects e:

  1. Find latest YOLO session: ls -td /tmp/yolo-*/ 2>/dev/null | head -1
  2. If found, show a sub-menu:

Display the C-suite header, then use batched AskUserQuestion (max 4 options per call):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > C-SUITE REPORTS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AskUserQuestion call 1:

  [CEO — Strategic analysis]
  [CTO — Technical health]
  [CFO — Financial analysis]
  [More...]

AskUserQuestion call 2 (only if "More..."):

  [COO — Operations review]
  [All — Full Hard Truths report]
  [Back to dashboard]

Read the selected file and display it. After display, offer [Back to dashboard].

  1. If no YOLO reports exist:
No C-suite reports yet. Run /ops:ops-yolo to generate one.

 b) Back to dashboard

Settings sub-menu (option f)

When user selects f, read current preferences and present an interactive config editor.

PREFS="${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"
cat "$PREFS" 2>/dev/null || echo '{}'
cat "${CLAUDE_PLUGIN_ROOT}/scripts/registry.json" 2>/dev/null || echo '{}'

Display the full settings menu as text (for reference), then use batched AskUserQuestion calls (max 4 options each) to let the user pick a category:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SETTINGS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 PROFILE:       Owner=[value] | TZ=[value] | Style=[value]
 CHANNELS:      Email=[✓/✗] | WA=[✓/✗] | Slack=[N workspaces/✗] | Telegram=[✓/✗]
 INTEGRATIONS:  AWS=[value] | Sentry=[value] | Linear=[value]
 PROJECTS:      [N] registered
 PLUGIN:        v[version]
──────────────────────────────────────────────────────

Use AskUserQuestion (max 4 options):

What would you like to configure?
  [Profile (name/timezone/style)]
  [Channels (email/WA/slack/telegram)]
  [Integrations & Projects]
  [Back to dashboard]

On "Profile": use AskUserQuestion with [Owner name], [Timezone], [Briefing style], [Back]. On "Channels": use AskUserQuestion with the 4 channel names (fits in one call). On "Integrations & Projects": use AskUserQuestion with [AWS/Sentry/Linear], [View registry], [Add/remove project], [Update plugin / Re-run setup].

For each option, use AskUserQuestion to get the new value, then write to preferences.json or registry.json.

Writing preferences:

PREFS="${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"
# Read existing, merge update, write back
jq --arg key "owner" --arg val "$NEW_VALUE" '.[$key] = $val' "$PREFS" > "${PREFS}.tmp" && mv "${PREFS}.tmp" "$PREFS"

After each change, confirm success and return to the settings menu. User can keep making changes or press b to go back.


Share sub-menu (option g)

When user selects g, generate a shareable summary of their ops setup:

Display the share header, then use batched AskUserQuestion (max 4 options per call):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SHARE YOUR SETUP
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AskUserQuestion call 1:

  [Share on X (Twitter)]
  [Share via Slack]
  [Share via Email]
  [More...]

AskUserQuestion call 2 (only if "More..."):

  [Copy to clipboard]
  [Export setup guide (markdown)]
  [Back to dashboard]

Share content generation

Generate a share-ready message. Never include secrets, tokens, or private project names. Only share:

  • Plugin version
  • Number of integrations configured
  • Number of projects managed
  • OS and system info
  • Feature highlights used

Template:

I'm running my business from Claude Code with claude-ops v0.3.1

Setup: [N] projects | [N] channels | [OS]
Features: Morning briefing, inbox zero, fire alerts, C-suite AI analysis, system optimizer

Try it: /plugin marketplace add ops-marketplace

#ClaudeCode #DevOps #AI

Share actions

Option Action
X/Twitter Copy text to clipboard + open https://twitter.com/intent/tweet?text=... via open (macOS) or xdg-open (Linux)
Slack Send via /ops:ops-comms slack with generated message
Email Draft via gog gmail send or copy to clipboard
Clipboard pbcopy (macOS) / xclip -selection clipboard (Linux) / clip.exe (WSL)
Export Write a ~/.claude-ops-setup.md file with full (sanitized) setup guide for sharing with teammates

FAQ sub-menu (option ?)

When user selects ? (or faq/help/wiki):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > HELP & FAQ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 QUICK START
 1) What is claude-ops?
 2) How do I set up channels?
 3) How does YOLO mode work?
 4) What data does ops collect?

 COMMANDS
 5) Full command reference
 6) Keyboard shortcuts

 TROUBLESHOOTING
 7) MCP server disconnected
 8) WhatsApp not connecting
 9) Telegram auth issues
 10) Channel not showing unread

 LINKS
 w) Wiki — github.com/Lifecycle-Innovations-Limited/claude-ops/wiki
 r) README — github.com/Lifecycle-Innovations-Limited/claude-ops
 i) Issues — github.com/Lifecycle-Innovations-Limited/claude-ops/issues
 c) Changelog

──────────────────────────────────────────────────────
 b) Back to dashboard
──────────────────────────────────────────────────────

FAQ answers

# Question Answer
1 What is claude-ops? Business operations OS for Claude Code. Manages inbox, fires, deploys, PRs, revenue, and can run your business autonomously via YOLO mode.
2 Channel setup Run /ops:setup — interactive wizard detects installed CLIs and walks you through each channel.
3 YOLO mode Spawns 4 AI agents (CEO, CTO, CFO, COO) to analyze your business. Type YOLO to hand over controls — it processes inbox, fixes fires, merges PRs, and advances GSD phases.
4 Data collection All data stays local. No telemetry. Registry and preferences are gitignored. Tokens stored in macOS keychain or env vars.
5 Command reference List all /ops:* commands with descriptions
6 Shortcuts 1-9, 0 for actions, a-h for power/comms/settings, b always goes back, q exits
7 MCP disconnected Wait 5s and retry (auto-reconnect hook). After 3 fails, falls back to CLI tools.
8 WhatsApp Check bridge liveness: `lsof -i :8080
9 Telegram Needs user-auth (not bot). Run /ops:setup → Telegram section. API ID + hash from my.telegram.org.
10 Unread Channel must be configured in /ops:setup. Check ops-unread script output for errors.
11 Smart-home (Homey) Run /ops:setup --section home to configure Homey Pro. Once set, hotkey h and /ops:ops-home are routable. Status dot on the dashboard: green = all devices online + no alarms, yellow = device offline, red = active critical alarm.

For links (w, r, i): open in browser via open (macOS) or xdg-open (Linux).

For changelog (c): read and display ${CLAUDE_PLUGIN_ROOT}/CHANGELOG.md.

After each FAQ answer, offer b) Back to dashboard or h) Back to FAQ.


Return-to-dash loop

After ANY skill completes and returns control, re-render the dashboard by running the bin script again and re-entering the routing loop. This creates the "app within an app" experience — the user always comes back to the command center.

To re-render:

${CLAUDE_PLUGIN_ROOT}/bin/ops-dash 2>/dev/null

Then AskUserQuestion again for the next action.

Exception: If user types q, quit, or exit, end the session gracefully:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SESSION ENDED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

If $ARGUMENTS is back

Re-render the dashboard and enter routing loop.

If $ARGUMENTS is settings

Jump directly to settings sub-menu (skip dashboard render).

If $ARGUMENTS is share

Jump directly to share sub-menu.

If $ARGUMENTS is faq

Jump directly to FAQ sub-menu.

Setup gate

If the dashboard script outputs DASH_RENDER_FAILED or the preferences file doesn't exist, show:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SETUP REQUIRED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 Run /ops:setup to configure your integrations first.

Then invoke /ops:setup directly.

Windsor.ai (optional live data)

If Windsor.ai is connected (mcp__*Windsor*__* or a windsor_api_key), use it as the live cross-channel source for all live KPIs (spend, ROAS, CAC, sessions, social reach) for the command-center tiles, flagging deviations vs 7d/30d. Map accounts per project via registry.json.projects[].windsor. Prefer blended ROAS (store/analytics revenue ÷ total ad spend) over platform-reported ROAS. See docs/integrations/windsor-ai.md for the full playbook (REST + MCP modes, registry mapping, analysis mandate, and caveats). Data sanity: if Windsor returns only zeros across sources (Meta + Google spend/impressions and Instagram reach all exactly 0 over 30d while accounts are connected), treat the data as unavailable — the plan may be expired (check get_current_useris_paid) — warn the user, and never present zeros as real metrics. scripts/windsor-data-sanity.sh automates the check.

Windsor is optional. If Windsor is not connected, returns errors, or returns the all-zero pattern, fall back to the free direct libraries: scripts/lib/ad-spend-aggregator.sh (paid), scripts/lib/ga4-data-api.sh (analytics), and scripts/lib/organic-metrics-aggregator.sh (organic + merchant). See docs/integrations/direct-channel-wiring.md. Never present zeros from a dead source as real metrics.

Version History

  • 64bad13 Current 2026-08-12 09:00

Same Skill Collection

claude-ops/skills/boss/SKILL.md
claude-ops/skills/flow/SKILL.md
claude-ops/skills/ledger/SKILL.md
claude-ops/skills/ops-accounts/SKILL.md
claude-ops/skills/ops-ar/SKILL.md
claude-ops/skills/ops-aws-audit/SKILL.md
claude-ops/skills/ops-comms/SKILL.md
claude-ops/skills/ops-competitors/SKILL.md
claude-ops/skills/ops-credentials/SKILL.md
claude-ops/skills/ops-daemon/SKILL.md
claude-ops/skills/ops-deploy-fix/SKILL.md
claude-ops/skills/ops-deploy/SKILL.md
claude-ops/skills/ops-desktop/SKILL.md
claude-ops/skills/ops-doctor/SKILL.md
claude-ops/skills/ops-ecom/SKILL.md
claude-ops/skills/ops-feature-dev/SKILL.md
claude-ops/skills/ops-fires/SKILL.md
claude-ops/skills/ops-fleet/SKILL.md
claude-ops/skills/ops-go/SKILL.md
claude-ops/skills/ops-gtm/SKILL.md
claude-ops/skills/ops-home/SKILL.md
claude-ops/skills/ops-inbox/SKILL.md
claude-ops/skills/ops-integrate/SKILL.md
claude-ops/skills/ops-leadgen/SKILL.md
claude-ops/skills/ops-linear/SKILL.md
claude-ops/skills/ops-mac/SKILL.md
claude-ops/skills/ops-marketing/SKILL.md
claude-ops/skills/ops-mcp/SKILL.md
claude-ops/skills/ops-merge/SKILL.md
claude-ops/skills/ops-monitor/SKILL.md
claude-ops/skills/ops-next/SKILL.md
claude-ops/skills/ops-orchestrate/SKILL.md
claude-ops/skills/ops-package/SKILL.md
claude-ops/skills/ops-pocket/SKILL.md
claude-ops/skills/ops-projects/SKILL.md
claude-ops/skills/ops-recap/SKILL.md
claude-ops/skills/ops-release/SKILL.md
claude-ops/skills/ops-resume/SKILL.md
claude-ops/skills/ops-revenue/SKILL.md
claude-ops/skills/ops-rotate-setup/SKILL.md
claude-ops/skills/ops-rotate/SKILL.md
claude-ops/skills/ops-secret-sync/SKILL.md
claude-ops/skills/ops-settings/SKILL.md
claude-ops/skills/ops-ship/SKILL.md
claude-ops/skills/ops-speedup/SKILL.md
claude-ops/skills/ops-status/SKILL.md
claude-ops/skills/ops-triage/SKILL.md
claude-ops/skills/ops-unifi/SKILL.md
claude-ops/skills/ops-update/SKILL.md

Metadata

Files
0
Version
2dbf8cb
Hash
3d7baf07
Indexed
2026-08-12 09:00

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-13 06:14
浙ICP备14020137号-1 $Гость$