Skip to content

plugins(workflow-orchestration): scaffold 4 pipeline plugins (board, backend, blocked, refinement)#26

Closed
MichalOpsAgents wants to merge 3 commits into
mainfrom
card-x5cJZGZB-pipeline-plugins-scaffold
Closed

plugins(workflow-orchestration): scaffold 4 pipeline plugins (board, backend, blocked, refinement)#26
MichalOpsAgents wants to merge 3 commits into
mainfrom
card-x5cJZGZB-pipeline-plugins-scaffold

Conversation

@MichalOpsAgents

Copy link
Copy Markdown
Contributor

Summary

Closes Trello card x5cJZGZB by scaffolding the 4 OpsAgents pipeline skills into the public marketplace.

Why this PR exists: Card x5cJZGZB's AC originally said "mirror the 4 Phase-1 SKILL.md edits to MSApps-Mobile/claude-plugins" — but probing the marketplace showed the destination plugin dirs don't exist (33 existing plugins, none of board-pipeline / backend-pipeline / blocked-pipeline / board-refinement). So the original scope was wrong; the mirror needs a scaffold first. This PR delivers that scaffold + the SKILL.md mirror in one shipping unit, collapsing what was previously split across Cards 6 + p8mN1V2f.

What's in this PR

4 new plugin directories under plugins/, each with:

plugins/<name>/
  .claude-plugin/plugin.json    # v0.2.0, MIT, SOSA level 2
  README.md                     # identity + install + sister-plugin links
  skills/<name>/SKILL.md        # mirror of OpsAgentsAI/skills-and-plugins canonical

The four plugins:

Plugin What it does
board-pipeline Drain every To Do column on a Trello board — do the work, push code, move each card to Code Review. Stops there.
backend-pipeline Backend-flavored sweep: Blocked + In Progress + To Do → Code Review in one run, with the cli-dev safety stack pre-loaded for Cloud Run / Secret Manager work.
blocked-pipeline Walk the Blocked column and decision every card — release / archive / rescope / route to Backlog.
board-refinement Production-grade refinement — PRD gap audit, staging spin-up, QA TDD audit, pre-prod readiness verification. Carries the two adversarial-review dynamic-workflow opt-ins that directly attack rule-#20 / rule-#23 misses before deploy.

Public-stripping

Each skills/<name>/SKILL.md is the canonical from OpsAgentsAI/skills-and-plugins with Cowork-private paths normalized:

  • ~/Documents/Claude/CLAUDE.md~/CLAUDE.md
  • ~/Documents/Claude/OpsAgents/CLAUDE.md<your-project>/CLAUDE.md
  • /Users/michalshatz/.claude/projects/-Users-michalshatz-Documents-Claude/memory/~/.claude/projects/<project>/memory/
  • /Users/michalshatz/.claude/skills/~/.claude/skills/

Grep verified no Documents/Claude / michalshatz references survive in the 4 mirrored SKILL.md files.

Root README callout

Adds a new Workflow Orchestration section under the existing Developer Tools section in the root README, with the AC-required callout sentence linking the architecture doc:

v0.2 adds adversarial-review dynamic-workflow opt-ins per the architecture doc.

Test plan

  • plugin.json is valid JSON for all 4 plugins (jq succeeds)
  • SOSA level + license + author fields populated on all 4
  • Each plugin README links to its canonical home at OpsAgentsAI/skills-and-plugins
  • Each plugin README cross-links its 3 sister plugins
  • Root README "Workflow Orchestration" section renders cleanly with the callout sentence
  • No Cowork-private paths in any mirrored SKILL.md (grep clean)

Linked

What's NOT in this PR

  • CONNECTORS.md per plugin — deferred; existing marketplace plugins don't all carry it. Can be added in a follow-up.
  • Ongoing skill-sync automation — the canonical home (OpsAgentsAI/skills-and-plugins) is where active edits land; this marketplace mirror is updated via the existing skills-sync pattern after future PRs to canonical.

🤖 Generated with Claude Code

…cJZGZB)

Adds the four OpsAgents pipeline skills to the public marketplace:
- board-pipeline — drain To Do → Code Review
- backend-pipeline — Blocked + In Progress + To Do sweep, cli-dev safety stack
- blocked-pipeline — gate-state decision tree for the Blocked column
- board-refinement — production-readiness audit (4 stages, 2 adversarial-review dynamic-workflow opt-ins)

Each plugin is a fresh marketplace directory with the canonical layout:
  plugins/<name>/
    .claude-plugin/plugin.json      v0.2.0, MIT, SOSA level 2
    README.md                       identity + install + sister-plugin links
    skills/<name>/SKILL.md          mirror of OpsAgentsAI/skills-and-plugins canonical

SKILL.md content is the Phase-1 + Card-4 canonical (with Cowork-private
paths normalized: ~/Documents/Claude/CLAUDE.md → ~/CLAUDE.md, memory paths
generalized, /Users/michalshatz/ refs replaced with ~/...).

Root README gains a new "Workflow Orchestration" section above Mobile devs,
with a callout sentence linking the dynamic-workflows architecture doc per
Card 6 AC #2.

This unblocks card x5cJZGZB by giving its mirror push a destination. Once
this PR merges, the OpsAgentsAI/skills-and-plugins#88 SKILL.md edits can
re-mirror to these public skill paths via standard skills-sync.

Card: https://trello.com/c/x5cJZGZB
Architecture: https://www.notion.so/Dynamic-Workflows-in-OpsAgents-Pipelines-Architecture-36f38b5dfb27815480cafb6011f94b0e

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces four new workflow orchestration plugins (backend-pipeline, blocked-pipeline, board-pipeline, and board-refinement) along with their respective skill definitions and documentation, and updates the main README.md. The review feedback highlights several logical contradictions and inconsistencies within the newly added SKILL.md files. These include conflicting instructions on whether still-gated cards can be left in the Blocked column or must be routed to the Backlog, missing recap categories, mismatched stage references between sister pipelines, and a dynamic-workflow prompt that lacks the required adversarial structure.

@@ -0,0 +1,69 @@
---
name: blocked-pipeline
description: "Walk the Blocked column on a Trello board — for each card, verify whether its gate has cleared and either release, leave, archive, or rescope. Loops until every blocked card has been decisioned."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The description states that the pipeline will "either release, leave, archive, or rescope" blocked cards. However, step 5d explicitly states that "Leave in Blocked" is invalid and that still-gated cards must be routed to the Backlog (with minor exceptions for active operator gates). The description should be updated to reflect "route to Backlog" instead of "leave" to avoid contradicting the actual acceptance criteria.

Suggested change
description: "Walk the Blocked column on a Trello board — for each card, verify whether its gate has cleared and either release, leave, archive, or rescope. Loops until every blocked card has been decisioned."
description: "Walk the Blocked column on a Trello board — for each card, verify whether its gate has cleared and either release, archive, rescope, or route to Backlog. Loops until every blocked card has been decisioned."


Board: $ARGUMENTS

You are running Michal's on-demand **Blocked-column pipeline** against the board above. Goal: drain the 🚧 Blocked / 🚫 Blocked list by deciding each card — release the ones whose gates have cleared, archive the ones whose work is now obsolete, leave the ones that are still genuinely gated. Per `~/CLAUDE.md` autonomy rule: make the call and ship.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The goal statement says "leave the ones that are still genuinely gated". This contradicts step 5d, which states that "Leave in Blocked" is invalid and that still-gated cards must be routed to the Backlog. The goal statement should be updated to clarify that still-gated cards are routed to the Backlog.

Suggested change
You are running Michal's on-demand **Blocked-column pipeline** against the board above. Goal: drain the 🚧 Blocked / 🚫 Blocked list by deciding each card — release the ones whose gates have cleared, archive the ones whose work is now obsolete, leave the ones that are still genuinely gated. Per `~/CLAUDE.md` autonomy rule: make the call and ship.
You are running Michal's on-demand **Blocked-column pipeline** against the board above. Goal: drain the 🚧 Blocked / 🚫 Blocked list by deciding each card — release the ones whose gates have cleared, archive the ones whose work is now obsolete, or route still-gated cards to Backlog. Per CLAUDE.md autonomy rule: make the call and ship.


e. **No skipping the LinkedIn ToS cluster.** If the gate references the LinkedIn ToS addendum card (recruiter `jSiJw3oQ` or any future equivalent), only release when that card is in Done — never on memory alone. ToS gates are legal-shaped; the lawyer signoff is the hard requirement.

6. **Recap.** Print a `🔀 BLOCKED PIPELINE` block listing every card touched, one line each, grouped by decision: Released / Archived / Rescoped / Left / Needs Michal. Include shortUrls. **Token spend per dynamic-workflow invocation** is logged in the recap (runtime-sourced — surfaces runaway fan-outs before they eat the day's budget). Mirror the recap to the board's Runner Log card if one exists; otherwise post once on the most-recently-touched card.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The recap groups list Left as a category, but do not include a category for cards that were routed to the Backlog (which is the required action for still-gated cards per step 5d). Consider updating the recap groups to include Backlog or Routed to Backlog to ensure all decisions are properly accounted for.

Suggested change
6. **Recap.** Print a `🔀 BLOCKED PIPELINE` block listing every card touched, one line each, grouped by decision: Released / Archived / Rescoped / Left / Needs Michal. Include shortUrls. **Token spend per dynamic-workflow invocation** is logged in the recap (runtime-sourced — surfaces runaway fan-outs before they eat the day's budget). Mirror the recap to the board's Runner Log card if one exists; otherwise post once on the most-recently-touched card.
6. **Recap.** Print a BLOCKED PIPELINE block listing every card touched, one line each, grouped by decision: Released / Archived / Rescoped / Routed to Backlog / Left / Needs Michal. Include shortUrls. **Token spend per dynamic-workflow invocation** is logged in the recap (runtime-sourced — surfaces runaway fan-outs before they eat the day's budget). Mirror the recap to the board's Runner Log card if one exists; otherwise post once on the most-recently-touched card.


4. **Scope of this pipeline = To Do columns only.** Process every card in `To Do` (and any `To Do — *` splits like `To Do — Core` / `To Do — Front`). Skip 🚧 Blocked entirely. Do NOT touch Code Review, Deploy Staging, QA, Deploy Prod, or Done — cards already in those columns are out of scope and stay where they are. The pipeline's only job is: drain To Do → Code Review.

**Why Code Review is out of scope (isolation rule, 2026-05-29 lesson).** The Claude session that wrote a PR cannot independently review its own PR — same-context = confirmation bias. Fresh-context Task-dispatched review belongs to `/board-refinement` Stage 1.5, which runs in a separate session with no visibility into the authoring transcript. `/board-pipeline` ships cards INTO Code Review; `/board-refinement` drains Code Review OUT. Mixing the two collapses the isolation gap and re-introduces the same-session review failure mode (`/opsagents-cto` Delivery Protocol §3).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This line references /board-refinement Stage 1.5, but the board-refinement skill definition only defines Stages 1 through 5 (with Stage 2 being the CTO deploy-gate verdict). To maintain consistency across skills, this reference should be updated to point to Stage 2.

Suggested change
**Why Code Review is out of scope (isolation rule, 2026-05-29 lesson).** The Claude session that wrote a PR cannot independently review its own PR — same-context = confirmation bias. Fresh-context Task-dispatched review belongs to `/board-refinement` Stage 1.5, which runs in a separate session with no visibility into the authoring transcript. `/board-pipeline` ships cards INTO Code Review; `/board-refinement` drains Code Review OUT. Mixing the two collapses the isolation gap and re-introduces the same-session review failure mode (`/opsagents-cto` Delivery Protocol §3).
**Why Code Review is out of scope (isolation rule, 2026-05-29 lesson).** The Claude session that wrote a PR cannot independently review its own PR — same-context = confirmation bias. Fresh-context Task-dispatched review belongs to /board-refinement Stage 2, which runs in a separate session with no visibility into the authoring transcript. /board-pipeline ships cards INTO Code Review; /board-refinement drains Code Review OUT. Mixing the two collapses the isolation gap and re-introduces the same-session review failure mode (/opsagents-cto Delivery Protocol §3).

Comment on lines +45 to +47
- **Optional: dynamic-workflow stale-bug fan-out.** If the To Do column has 10+ cards and most carry file:line bug citations, prompt Claude to spin up a dynamic workflow:
> "Run a dynamic workflow: one subagent per card in `To Do`. Each subagent fetches the cited file at `?ref=main` via `gh_exec` and greps for the cited pattern. Converge on a verdict per card: STALE (close direct to Done with grep evidence) or LIVE (continue to specialist dispatch). Persist progress per card so an interrupted run resumes from the last verified card."
Honor rule #19 — each subagent prompt must include `ToolSearch select:gh_exec,trello_exec`. Cap at 20 parallel agents (Trello API budget; cli-gateway proxies through one shared token and 429s above ~30 concurrent). Adversarial reviewer required when the fan-out writes (Done-close), not just reads.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The note in line 47 states that an "Adversarial reviewer [is] required when the fan-out writes (Done-close), not just reads." However, the prompt provided in line 46 only spins up "one subagent per card" without any adversarial structure. To satisfy the adversarial requirement, the prompt should be updated to define two adversarial agents per card (one arguing STALE, the other trying to refute).

Suggested change
- **Optional: dynamic-workflow stale-bug fan-out.** If the To Do column has 10+ cards and most carry file:line bug citations, prompt Claude to spin up a dynamic workflow:
> "Run a dynamic workflow: one subagent per card in `To Do`. Each subagent fetches the cited file at `?ref=main` via `gh_exec` and greps for the cited pattern. Converge on a verdict per card: STALE (close direct to Done with grep evidence) or LIVE (continue to specialist dispatch). Persist progress per card so an interrupted run resumes from the last verified card."
Honor rule #19 — each subagent prompt must include `ToolSearch select:gh_exec,trello_exec`. Cap at 20 parallel agents (Trello API budget; cli-gateway proxies through one shared token and 429s above ~30 concurrent). Adversarial reviewer required when the fan-out writes (Done-close), not just reads.
- **Optional: dynamic-workflow stale-bug fan-out.** If the To Do column has 10+ cards and most carry file:line bug citations, prompt Claude to spin up a dynamic workflow:
> "Run a dynamic workflow: two adversarial agents per card in To Do. One argues the bug is STALE (already fixed on main), the other tries to refute by finding the live bug pattern. Converge on a verdict per card: STALE (close direct to Done with grep evidence) or LIVE (continue to specialist dispatch). Persist progress per card so an interrupted run resumes from the last verified card."
Honor rule #19 — each subagent prompt must include ToolSearch select:gh_exec,trello_exec. Cap at 20 parallel agents (Trello API budget; cli-gateway proxies through one shared token and 429s above ~30 concurrent). Adversarial reviewer required when the fan-out writes (Done-close), not just reads.

msmobileapps and others added 2 commits May 29, 2026 13:53
…g rule)

Pulls in the 2026-05-29 rule shipped after PR open: /board-pipeline now
drains To Do AND In Progress / Doing on every run (the rule lives at
canonical OpsAgentsAI/skills-and-plugins:skills/board-pipeline/SKILL.md
step 4, with a 'Why In Progress is in scope' paragraph at step 4 +
loop-until condition at step 6).

Also pulls in board-refinement Stage 1.5 (Code Review drain via
fresh-context Task-dispatched review) and the corresponding
isolation-rule paragraph in board-pipeline step 4.

Card: https://trello.com/c/Qifn7vE6 — rule durable record on opsagents-pipelines

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ective 2026-05-29)

Pulls in the rule shipped via canonical SKILL.md + filed as durable
record on opsagents-pipelines card MyWi01lz: the prior
"operator-gated cred-mint stays in Blocked" carve-out is retired.
Every invocation of /blocked-pipeline ends with 🚧 Blocked empty —
cred-mint, marketplace, ToS, lawyer-signoff gates all route to
🧊 Backlog with explicit unblock command + recap escalation.

Memory file feedback_blocked_pipeline_must_drain.md is already
consistent (says routing to Backlog includes operator-step gates).

Card: https://trello.com/c/MyWi01lz

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@MichalOpsAgents

Copy link
Copy Markdown
Contributor Author

Closing un-merged per Michal directive 2026-05-29 — the SKILL.md content this PR mirrors ships the per-card adversarial-review dynamic-workflow opt-ins that are being rolled back (see OpsAgentsAI/skills-and-plugins#88 closure for the rationale).

The 4 plugin scaffold directories themselves remain independently valuable as marketplace destinations — a clean follow-up PR will land them with the canonical (pre-Phase-1, no-adversarial-opt-ins) SKILL.md content + a root README callout pointing at the new /pipeline-loop orchestration shape instead.

Knowledge: https://trello.com/c/z4KW9hQ0
Decision: https://trello.com/c/ZsElDMuw
Replacement skill: https://trello.com/c/dEtCmTp9

@msmobileapps msmobileapps deleted the card-x5cJZGZB-pipeline-plugins-scaffold branch May 31, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants