Two unrelated fixes, one session: a post-capture check in social-media-tools's screenshot pipeline (shipped, 0bedc78), and a completeness bar added to plan-agent's ## Context guidance (uncommitted). Both trace back to a plugin review run against an external article on agent-prompting technique.
Two independent fixes landed in one session, unrelated to each other beyond sharing a source: a plugin/skills review run earlier against an external article on agent-prompting technique.
social-media-tools's shared Playwright screenshot pipeline gained a post-capture verification step — it checked the DOM was ready before capture but never checked the output file after, so a blank PNG still counted as success. Committed and pushed (0bedc78, branch claude/project-optimization-review-595e98).
plan-agent's implementation-plan and build-proposal skills, plus the personal global plan-mode skeleton, got an explicit "no follow-up question" completeness bar added to their ## Context section guidance. Still uncommitted in the working tree.
kit/plugins/social-media-tools/references/rendering-pipeline.md is a single shared reference, not duplicated per skill. Ten SKILL.md files read it: share-code, share-react, share-github, share-project, share-session, share-selection, share-explanation, share-blog, share-video, and one more matched by the same grep. One file change reaches all ten with no per-skill edit.
Step 5 is new. A blank or truncated capture now routes to Fallback instead of reaching Deliver.
Three independent copies of the same guidance, no shared code path between them:
kit/plugins/plan-agent/skills/implementation-plan/guidelines/section-catalog.md — the canonical section definitions implementation-plan's Workflow Step 2.2 reads before drafting a spec.kit/plugins/plan-agent/skills/implementation-plan/reference/SKELETON.md — the copyable starter the same step also reads.kit/plugins/plan-agent/skills/build-proposal/references/artifact-shape.md — build-proposal's equivalent: both the prose section-order description (item 4) and its own copyable Skeleton block.~/.claude/reference/SKELETON.md (outside this repo) — the global starter ~/.claude/rules/plan-mode.md Step 2 tells any Claude Code session to copy, in any project.Worth knowing before touching any of these again: implementation-plan already has a ## Decisions section, and build-proposal already has Locked & resolved decisions — both exist specifically so "a resumed session reads this instead of re-deriving" (verbatim from section-catalog.md). Context is the why; Decisions/Locked-decisions is the settled how. Don't merge them.
Not modified, but load-bearing if extending verification-gate patterns elsewhere: kit/plugins/plan-agent/skills/build/references/completion-gates.md is this repo's reference implementation of a mandatory, bounded, escalate-rather-than-fake-success verification gate — the pattern the screenshot check is a lightweight instance of.
wc -c on the output file is free; a real "is this blank" check would need an image-decode dependency the pipeline doesn't have. A solid-color/blank PNG compresses far smaller than a populated card with text and a gradient, so byte count is a reasonable proxy. Marked with an inline ponytail: comment naming the ceiling (a legitimately sparse card could false-positive) and the upgrade path (real pixel sampling).
Step 5 sits after Step 4 (kill $SERVER_PID), so a failed verification never leaves the HTTP server orphaned — cleanup isn't gated on the check succeeding.
The original plan was a heavier rewrite of implementation-plan/build-proposal's Context guidance. After reading section-catalog.md, right-sizing.md, and artifact-shape.md in full — not just implementation-plan/SKILL.md's summary line — it became clear both skills already solve the cold-read problem via ## Decisions/Locked & resolved decisions. The change shipped is one added sentence per file stating the completeness test in words, plus a clause naming the Context/Decisions boundary — not a restructure.
~/.claude/rules/plan-mode.md's own Required Structure gloss for context was left untouched.
It's now slightly thinner than SKELETON.md's copy ("Background and motivation; why this work is needed" vs. the strengthened placeholder). Not fixed because the request named SKELETON.md specifically, and SKELETON.md is the file actually copied into new plans — plan-mode.md's line is reference prose, not copied. Practical fix landed in the higher-leverage file; the inconsistency is flagged in §07, not resolved.
ponytail: comment in rendering-pipeline.md names this as the upgrade path.plan-agent:build's 3-try fix loop. Out of scope for what was asked; on any Step 5 failure the pipeline falls back to the same single Fallback message it already used for other failure modes (Playwright unavailable, capture failure) — consistent, not new.implementation-plan/build-proposal. Would have duplicated or blurred what ## Decisions/Locked & resolved decisions already do. A one-sentence addition was chosen once the existing design was understood.SKILL.md workflow steps can undersell how complete its guidelines//references/ files already are. The Context-section gap was originally diagnosed from implementation-plan/SKILL.md's one-line summary ("Optional by judgment: Context…") without reading guidelines/section-catalog.md or guidelines/right-sizing.md first. Those turned out to already solve the described problem, just under a different section name. Read the deeper files before diagnosing a gap in a mature skill.social-media-tools/references/rendering-pipeline.md is read by ten separate SKILL.md files; the fix didn't need touching any of them. Worth checking for a shared reference before assuming per-skill duplication is needed.test-no-shell-expansion.sh, test-react-card-smoke.sh, test-share-react-registration.sh) confirms no shell-expansion or template-registration regression, but none execute the new Step 5 logic against a real capture. A real coverage gap, not just an unexercised edge case.git fetch origin && BASE_REF=main node scripts/check-plugin-versions.mjs — run after each version bump (social-media-tools 2.23.0→2.23.1, plan-agent 9.4.1→9.4.2). passpython3 -c "json.load(...)" on marketplace.json after each edit — valid JSON. passtests/plugins/test-no-shell-expansion.sh — confirms the new $SAVE_PATH_PNG/$SIZE vars don't introduce a ${VAR}-style expansion (this repo's Bash tool rejects those outright). passtests/social-media-tools/test-react-card-smoke.sh, test-share-react-registration.sh passtests/plugins/test-build-proposal.sh, test-proposal-prompt-pipeline.sh, test-goal-prompt.sh, test-resources-section.sh, test-write-prompt-proposal-type.sh — pass, none assert on the new Context prose specifically (expected — prose-only, no structural or parser-visible effect). passtests/plugins/test-humanized-skeleton.sh — run, passed, confirmed irrelevant on inspection (checks renderer HTML output, not these guideline files). n/a.claude-plugin/marketplace.json, kit/plugins/plan-agent/CHANGELOG.md, kit/plugins/plan-agent/skills/build-proposal/references/artifact-shape.md, kit/plugins/plan-agent/skills/implementation-plan/guidelines/section-catalog.md, kit/plugins/plan-agent/skills/implementation-plan/reference/SKELETON.md. The plan-agent Context-completeness change is not yet committed or pushed.
The screenshot Step 5's 5KB threshold is a documented byte-count heuristic (inline ponytail: comment in rendering-pipeline.md), untested against a real capture. Upgrade path if it misfires: sample actual pixel content instead of byte count.
~/.claude/rules/plan-mode.md's Required Structure line for context still reads "Background and motivation; why this work is needed" — thinner than the strengthened SKELETON.md it points at. Flagged mid-session as optional polish, not applied because it wasn't named in the request.
Three more gaps identified during the earlier plugin-review pass, no action taken beyond the screenshot fix:
plan-agent:build uses an explicit completion-gate/"don't finish until X" pattern; roughly 30 of 63 skills in this repo mention no verification step at all (some legitimately don't need one — routers, display-only skills).code-review-agent doesn't verify its own findings against cited line numbers before reporting them.kit/plugins/social-media-tools/references/rendering-pipeline.md | Added Step 5 (post-capture PNG existence/size check); widened Fallback's trigger to include verification failure. |
kit/plugins/social-media-tools/CHANGELOG.md | New v2.23.1 entry. |
.claude-plugin/marketplace.json | social-media-tools 2.23.0 → 2.23.1. |
.../implementation-plan/guidelines/section-catalog.md | Added the no-follow-up test and the Context/Decisions boundary sentence to the ## Context entry. |
.../implementation-plan/reference/SKELETON.md | Same addition to the copyable Context placeholder. |
.../build-proposal/references/artifact-shape.md | Same addition, two spots: section-order description (item 4) and the copyable Skeleton block. |
kit/plugins/plan-agent/CHANGELOG.md | New 9.4.2 entry. |
.claude-plugin/marketplace.json | plan-agent 9.4.1 → 9.4.2. |
~/.claude/reference/SKELETON.md | Same Context-completeness addition, personal dotfiles. |