adopt
Bootstrap an existing repo for ForgeDock — triage open issues, apply labels, suggest a starter milestone, and identify first…
Pipeline-wide situational awareness — groups open issues by workflow state, shows active PRs, flags stale items, and reports milestone progress
> /plugin marketplace add RapierCraftStudios/ForgeDock > /plugin install forgedock@forgedock
How it fires
How this command gets triggered: by you, by Claude, or both.
/pipeline-statusContext preview
What this command does when you run it.
Pipeline-wide situational awareness — groups open issues by workflow state, shows active PRs, flags stale items, and reports milestone progress
description: Pipeline-wide situational awareness — groups open issues by workflow state, shows active PRs, flags stale items, and reports milestone progress argument-hint: "[--repo <owner/repo> | --stale-days <N>]" install: extras
**Input**: $ARGUMENTS (optional: `--repo <owner/repo>`, `--stale-days <N>`)
Read-only snapshot of the ForgeDock pipeline. Shows open issues grouped by workflow label, active PRs with age, stale items, and milestone progress.
**This command is fully read-only.** It makes no label changes, posts no comments, and creates no issues.
**NEVER use plan mode (EnterPlanMode)** — it breaks execution context.
---
CONFIG_FILE="${FORGE_CONFIG:-forge.yaml}"
GH_REPO=$(yq '.project.owner + "/" + .project.repo' "$CONFIG_FILE")
GH_FLAG="-R $GH_REPO"
STAGING_BRANCH=$(yq '.branches.staging' "$CONFIG_FILE")
# Optional: --repo flag overrides the default repo
if echo "$ARGUMENTS" | grep -q -- "--repo"; then
GH_REPO=$(echo "$ARGUMENTS" | sed 's/.*--repo[[:space:]]\([^[:space:]]*\).*/\1/')
GH_FLAG="-R $GH_REPO"
fi
# Optional: --stale-days flag (default: 7)
STALE_DAYS=7
if echo "$ARGUMENTS" | grep -q -- "--stale-days"; then
STALE_DAYS=$(echo "$ARGUMENTS" | sed 's/.*--stale-days[[:space:]]\([^[:space:]]*\).*/\1/')
fi
STALE_THRESHOLD=$(date -d "${STALE_DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null \
|| date -v-${STALE_DAYS}d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null \
|| echo "")
echo "Repo: $GH_REPO"
echo "Staging branch: $STAGING_BRANCH"
echo "Stale threshold: ${STALE_DAYS} days"---
Fetch all open issues with `workflow:*` labels. Group and count by state.
echo ""
echo "=== Pipeline Issues — $(date +%Y-%m-%d) ==="
echo ""
# Workflow states to display (in pipeline order)
STATES="workflow:investigating workflow:building workflow:in-review workflow:remediating workflow:ready-to-build needs-human"
for LABEL in $STATES; do
ISSUES=$(gh issue list $GH_FLAG \
--state open \
--label "$LABEL" \
--limit 50 \
--json number,title,updatedAt,assignees \
--jq '.[] | "#\(.number) \(.title[:60]) [updated: \(.updatedAt[:10])]"' \
2>/dev/null || echo "")
COUNT=$(echo "$ISSUES" | grep -c '#' 2>/dev/null || echo 0)
[ "$COUNT" = "0" ] && [ -z "$ISSUES" ] && COUNT=0
if [ -n "$ISSUES" ] && [ "$COUNT" -gt 0 ]; then
echo "[$LABEL] ($COUNT open)"
echo "$ISSUES" | while IFS= read -r line; do
echo " $line"
done
echo ""
else
echo "[$LABEL] — none"
fi
done
# Issues with no workflow label (untracked / not yet entered pipeline)
UNTRACKED=$(gh issue list $GH_FLAG \
--state open \
--limit 20 \
--json number,title,labels,createdAt \
--jq '.[] | select(
(.labels | map(.name) | any(startswith("workflow:"))) | not
) | "#\(.number) \(.title[:60]) [created: \(.createdAt[:10])]"' \
2>/dev/null || echo "")
UNTRACKED_COUNT=$(echo "$UNTRACKED" | grep -c '#' 2>/dev/null || echo 0)
if [ -n "$UNTRACKED" ] && [ "$UNTRACKED_COUNT" -gt 0 ]; then
echo "[untracked] ($UNTRACKED_COUNT — not yet in pipeline)"
echo "$UNTRACKED" | while IFS= read -r line; do
echo " $line"
done
echo ""
fi
# Decomposition trackers (workflow:decomposed) are NOT work: they are excluded from every
# work count in this report and listed separately. With decomposition.close_parent a tracker
# is CLOSED at decomposition, so query --state all and keep only trackers with unfinished
# `- [ ]` checklist items. <!-- Added: forge#3736 -->
TRACKERS=$(gh issue list $GH_FLAG \
--state all \
--label "workflow:decomposed" \
--limit 100 \
--json number,title,state,body \
--jq '.[] | select(.body | test("(?m)^[[:space:]]*[-*+] \\[ \\]")) | "#\(.number) \(.title[:60]) [\(.state | ascii_downcase)]"' \
2>/dev/null || echo "")
TRACKER_COUNT=$(printf '%s' "$TRACKERS" | grep -c '#' 2>/dev/null || true)
echo "[trackers] (${TRACKER_COUNT:-0} — decomposed parents awaiting children; not counted as work)"
if [ -n "$TRACKERS" ]; then
echo "$TRACKERS" | while IFS= read -r line; do
echo " $line"
done
fi
echo ""---
Show open PRs targeting `staging` or any `milestone/*` branch, with age and review status.
echo "=== Active PRs ==="
echo ""
gh pr list $GH_FLAG \
--state open \
--limit 30 \
--json number,title,headRefName,baseRefName,createdAt,reviews,isDraft \
--jq '.[] | {
number: .number,
title: .title[:55],
head: .headRefName,
base: .baseRefName,
age_days: (((now - (.createdAt | fromdateiso8601)) / 86400) | floor),
draft: .isDraft,
review_state: (
if (.reviews | length) == 0 then "no review"
elif (.reviews | map(select(.state == "APPROVED")) | length) > 0 then "APPROVED"
elif (.reviews | map(select(.state == "CHANGES_REQUESTED")) | length) > 0 then "CHANGES REQUESTED"
else "COMMENTED"
end
)
} | " PR #\(.number) \(.title) [\(.age_days)d old] [\(.review_state)]\(if .draft then " [DRAFT]" else "" end)\n → \(.head) → \(.base)"' \
2>/dev/null || echo " (none)"
echo ""---
Flag issues and PRs with no activity in the last `$STALE_DAYS` days.
echo "=== Stale Items (no activity > ${STALE_DAYS} days) ==="
echo ""
if [ -z "$STALE_THRESHOLD" ]; then
echo " (skipped — could not compute stale threshold on this platform)"
else
# Stale open issues with workflow labels
STALE_ISSUES=$(gh issue list $GH_FLAG \
--state open \
--limit 100 \
--json number,title,updatedAt,labels \
--jq --arg threshold "$STALE_THRESHOLD" \
'[.[] |
select(
(.updatedAt < $threshold) and
(.labels | map(.name) | any(startswith("workflow:")))ForgeDock — autonomous AI dev pipeline for Claude Code. GitHub as agent memory: issue in, PR out.
Bootstrap an existing repo for ForgeDock — triage open issues, apply labels, suggest a starter milestone, and identify first…
Pull production analytics from GSC, Bing Webmaster, Clarity, Umami, Cloudflare, Stripe, and GA4 — generate insights and create…
Audit agent outputs from an orchestration run — timeline analysis, stall detection, active vs idle time breakdown
Trace a production issue or pipeline failure end-to-end through GitHub artifacts, then file a detailed improvement issue to the…
Autonomous deploy loop — runs until zero open issues remain. Detects pipeline state and resumes from any position. Fully…
Guided idea-to-backlog setup for a brand-new project — interview, defaults, doubts, spike doc, validated orchestrate-ready backlog