mcpbeat Sign in

Ops Next Skill for Claude

Business-level "what should I do next". Priority stack — fires > unread comms > ready-to-merge PRs > Linear sprint > revenue-generating GSD work. Uses pre-gathered data and routes to the right skill.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
3248
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/davepoon/buildwithclaude --skill ops-next

What it tells the agent to use

found in the instruction text
WebFetch fetches pages from the network
Task spawns other agents

The instruction itself

21 sections, as written by the author

Runtime Context

Before advising, load:

  • Preferences: cat ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json — read owner, primary_project, default_channels
  • Daemon health: cat ${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json — flag any action_needed as priority
  • Ops memories: Check ${CLAUDE_PLUGIN_DATA_DIR}/memories/topics_active.md for ongoing work context

OPS ► NEXT ACTION

CLI/API Reference

gh CLI (GitHub)

| Command | Usage | Output |

|---------|-------|--------|

| gh pr list --state open --json number,title,statusCheckRollup,reviewDecision | Open PRs with CI/review status | JSON array |


Agent Teams support

If CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 is set, use Agent Teams when gathering priority 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("next-team")
Agent(team_name="next-team", name="fires-checker", prompt="Check infra health and CI for production fires")
Agent(team_name="next-team", name="comms-checker", prompt="Check unread messages across all channels")
Agent(team_name="next-team", name="prs-checker", prompt="Find PRs ready to merge — CI green, reviews approved")
Agent(team_name="next-team", name="sprint-checker", prompt="Check Linear sprint for highest-priority in-progress issues")

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

Pre-gathered data

Infrastructure & fires

${CLAUDE_PLUGIN_ROOT}/bin/ops-infra 2>/dev/null || echo '{"clusters":[]}'

Git & PRs

${CLAUDE_PLUGIN_ROOT}/bin/ops-prs 2>/dev/null || echo '[]'

CI status

${CLAUDE_PLUGIN_ROOT}/bin/ops-ci 2>/dev/null || echo '[]'

Unread messages

${CLAUDE_PLUGIN_ROOT}/bin/ops-unread 2>/dev/null || echo '{}'

GSD active phases

for d in $(jq -r '.projects[] | select(.gsd == true) | .paths[]' "${CLAUDE_PLUGIN_ROOT}/scripts/registry.json" 2>/dev/null); do
  expanded="${d/#\~/$HOME}"
  if [ -f "$expanded/.planning/STATE.md" ]; then
    alias=$(basename "$expanded")
    cat "$expanded/.planning/STATE.md" 2>/dev/null | head -30
    echo "---NEXT---"
  fi
done

Your task

Apply the priority stack to all pre-gathered data:

Priority 1 — FIRES

Check infra data for: unhealthy ECS tasks, stopped services, failed deployments.

Check CI for: broken main or dev branches.

If any fires exist → recommend /ops-fires immediately.

Priority 2 — URGENT COMMS

Check unread counts. If WhatsApp or email has unread messages from humans (not automated):

  • Estimate urgency from sender/preview if available
  • If urgent comms → recommend /ops-inbox [channel]

Priority 3 — READY-TO-MERGE PRs

Check PRs for: CI green + no unresolved review comments + not draft.

If any ready → recommend reviewing that PR now.

Check: gh pr list --state open --json number,title,statusCheckRollup,reviewDecision 2>/dev/null

Priority 4 — LINEAR SPRINT

Fetch current sprint issues: use mcp__linear__list_issues filtered to current cycle (use Linear GraphQL fallback for cycle queries if needed).

Find highest-priority issue that is in progress or unstarted.

Priority 5 — GSD WORK

From GSD state, find the highest revenue-impact active phase across all projects.

Revenue weighting: read revenue.stage and priority from scripts/registry.json — projects with lower priority numbers (higher priority) and revenue stage of growth or active outrank pre-launch or development. Within the same tier, prioritize closest-to-done phases.


Output format

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS ► NEXT ACTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 TOP PRIORITY: [fires|comms|PR|sprint|gsd]
 ▶ [specific action in one sentence]

 WHY: [1-2 sentence rationale]

──────────────────────────────────────────────────────
 Full priority stack:
 1. [action] — [why] → [/skill or command]
 2. [action] — [why] → [/skill or command]
 3. [action] — [why] → [/skill or command]
 4. [action] — [why] → [/skill or command]
 5. [action] — [why] → [/skill or command]

──────────────────────────────────────────────────────
 a) Do #1 now
 b) Do #2 now
 c) Show me everything (/ops-go)
 d) I'll decide — just show the briefing

 → Pick or describe what you want
──────────────────────────────────────────────────────

Use AskUserQuestion. When user selects an option, invoke the corresponding skill directly — don't describe it, do it.

If $ARGUMENTS contains context (e.g., "focus on <project-alias>"), constrain the analysis to that context.


Native tool usage

Tasks — action tracking

After the user selects an action, use TaskCreate to track it. When routing to the corresponding skill, the task persists as a reminder of what the user chose to focus on.

WebFetch — enrichment fallback

When pre-gathered data is stale or incomplete, use WebFetch to pull fresh data from APIs (Linear GraphQL, Sentry, GitHub) directly.

Other skills for the same job

different authors, same section of the catalogue
Skill Creator
by anthropics
vendor ×10

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.

56k tokens scripts
Skill Creator
by vercel-labs
vendor ×10

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

12k tokens scripts
Skill Creator
by JayZeeDesign
×9

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

10k tokens scripts
Template Skill
by JayZeeDesign
×7

Replace with description of the skill and when Claude should use it.

35 tokens
Dispatching Parallel Agents
by ZhanlinCui
×5

Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies

2k tokens
Skill Development
by anthropics
vendor ×4

This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.

9k tokens
Find Skills
by sanity-io
vendor ×4

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

1k tokens
Writing Skills
by ZhanlinCui
×4

Use when creating new skills, editing existing skills, or verifying skills work before deployment

26k tokens scripts

How to use it

Copy the folder

Take davepoon/ops-next from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.