Skip to content

Add deploy-verification skill - #257

Merged
blarghmatey merged 2 commits into
mainfrom
claude/deploy-verification-skill
Aug 20, 2026
Merged

Add deploy-verification skill#257
blarghmatey merged 2 commits into
mainfrom
claude/deploy-verification-skill

Conversation

@blarghmatey

Copy link
Copy Markdown
Member

What are the relevant tickets?

N/A

Description (What does it do?)

  • Adds a new deploy-verification skill (skills/process/deploy-verification/SKILL.md) that walks the checklist for confirming a merged config/infra change actually took effect, not just that it merged:
    • CD pipeline ran and succeeded after the merge SHA
    • Pods actually rolled (age vs. deploy time, not just a green pipeline)
    • Config read out of the running process, not the manifest
    • Before/after metric comparison via the appropriate toolhive-swe-{ci,qa,prod} Grafana/Prometheus MCP tier, with an explicit fair-comparison window
    • Scope check across sibling Pulumi stacks to catch a change that leaked into an unintended environment
  • Each step demands raw evidence (pod age, rollout status, query + numbers, preview diff) rather than inferring success from the previous step.
  • Registers the skill in agent-config.toml ([skills], plus the process and infrastructure profiles) and adds it to both skills/README.md and skills/process/README.md per the skill-authoring checklist in AGENTS.md.

How can this be tested?

  • Validated frontmatter with npx skills-ref validate ./skills/process/deploy-verification — passes.
  • Ran agent-kit validate agent-config.toml — no drift beyond the expected "not yet installed locally" entries for a brand-new skill.
  • Ran prek run --files agent-config.toml skills/README.md skills/process/README.md skills/process/deploy-verification/SKILL.md — all checks pass (markdownlint, TOML, secrets, etc.).
  • No functional test suite for skill markdown.

A merged config/infra change isn't done at the merge — pods can fail to
roll on a ConfigMap change with no restart trigger, a query window can be
too narrow to mean anything, and a stack-scoped change can leak into an
unintended environment. This has repeatedly cost follow-up work after a
deploy was assumed complete. Codify the checklist: CD pipeline status,
pod rollout confirmation, config read from the running process (not the
manifest), a fair before/after metric comparison, and a scope check across
sibling stacks.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XqAaVVSbbp412kVEYbKY1K
Copilot AI balanced review requested due to automatic review settings August 19, 2026 15:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds a reusable skill for validating that infrastructure and configuration changes reached live environments.

Changes:

  • Adds a five-step deployment verification workflow.
  • Registers the skill in process and infrastructure profiles.
  • Updates both skill catalogs.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
agent-config.toml Registers the skill and profile membership.
skills/README.md Adds the skill to the main catalog.
skills/process/README.md Adds the process-category listing.
skills/process/deploy-verification/SKILL.md Defines the deployment verification procedure.
Suppressed comments (4)

skills/process/deploy-verification/SKILL.md:63

  • The skill is triggered for any config/Pulumi/Helm change, but many valid changes do not require replacing pods (for example, Service/Ingress changes or config handled by a live reloader). Treating an older pod as a silent failure gives false negatives; first establish whether this change was expected to roll the workload, and otherwise verify the relevant live resource or reload path.
If pod `AGE` predates the pipeline run, the workload did not restart. This
is the single most common silent failure in this checklist: a
`ConfigMap`/`Secret` change with no checksum/annotation-based restart
trigger on the pod template is inert until something else causes a restart.

skills/process/deploy-verification/SKILL.md:98

  • The literal mcp__<server>__... form is client-specific, while this repository installs skills for Claude Code, Pi, GitHub Copilot, and OpenCode; the server prefix can also depend on the user's MCP configuration. Agents on other clients may therefore look for a nonexistent tool. Name the server and its unprefixed tool instead, allowing each client to resolve its exposed invocation name.
mcp__toolhive-swe-<tier>__grafana_query_prometheus

skills/process/deploy-verification/SKILL.md:128

  • A Pulumi preview reports differences between the current stack state and what a future update would deploy; it cannot prove that a sibling environment already received this change. In fact, a sibling diff usually means that stack has not applied the new desired state. Distinguish an actual leak (sibling update history/live state changed after the merge) from a latent scope bug (preview says a future sibling update would change it).
`"0 changes"` on every stack except the intended target confirms scope. Any
unexpected diff on an unrelated stack is a blocker, not a footnote — surface
it before calling the deploy verified.

skills/process/deploy-verification/SKILL.md:83

  • This skill explicitly covers Secret changes, but these commands print environment variables or mounted files into the agent transcript and logs. That can disclose production credentials. Keep plaintext inspection only for non-sensitive config; for secret-backed values, compare an approved expected checksum with a checksum computed inside the container so the value never leaves it.
kubectl exec -n <namespace> <pod> -- env | grep <VAR>
# or, for a file-mounted config:
kubectl exec -n <namespace> <pod> -- cat <mounted-path>

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread skills/process/deploy-verification/SKILL.md Outdated
…anging

kubectl documents --timeout's default as 0s, "zero means never" (verified
against kubectl rollout status --help), so the unbounded watch would hang
the verification agent on exactly the stalled rollout this checklist is
meant to catch, producing no step result at all.

Bound it at 5m and treat the non-zero exit as evidence the rollout did not
complete, rather than a slow command to retry with a longer wait.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CqvGU3ssvASjwcfFGExNPL
@blarghmatey
blarghmatey merged commit c4c5795 into main Aug 20, 2026
5 checks passed
@blarghmatey
blarghmatey deleted the claude/deploy-verification-skill branch August 20, 2026 21:19
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