From skillz
Merge a Pulumi-touching PR and watch its pulumi-up rollout end-to-end. Spawns a background subagent that polls the GitHub Actions `pulumi-up.yml` workflow, surfaces failures with logs, confirms exports showed up in ESC, and reports back. Frees the main agent to continue other work in parallel. Use when: merging an infra PR that triggers `pulumi up` (changes under `infra/platform/`, `infra/core/`, `cloud_sql.py`, `__main__.py`), or any PR where you want CI to be observed end-to-end without blocking on it. Triggers: "merge and watch pulumi", "land this PR (pulumi)", "merge with pulumi watch".
How this skill is triggered — by the user, by Claude, or both
Slash command
/skillz:merge-with-pulumi-watchThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Land a PR that runs `pulumi-up` on merge and have a subagent watch the
Land a PR that runs pulumi-up on merge and have a subagent watch the
deployment so the main session doesn't block.
main that touches infra/** (Pulumi code) — its
merge triggers the pulumi-up.yml GitHub Actions workflow.Skip when:
pulumi-up will fire).Confirm PR is mergeable. Check gh pr view <num> --json mergeStateStatus. State must be CLEAN or UNSTABLE (UNSTABLE is
fine if only non-required checks are red — typically Bugbot
NEUTRAL/SonarCloud).
Merge. gh pr merge <num> --squash --delete-branch. Capture
merge timestamp.
Spawn subagent (background). Use the Agent tool with
run_in_background: true and a self-contained prompt covering:
pulumi-up.yml run that started after the merge
(gh run list --workflow=pulumi-up.yml --limit 5 --json status,conclusion,databaseId,createdAt).status == completed (sleep 30s between polls,
max ~30min).success: report which Pulumi exports/resources changed
(extract from logs if possible). If the PR mentioned new ESC
env vars in its description, verify they're populated.failure: pull failed step logs (gh run view <id> --log-failed), summarize the error in <300 words, and surface
to the user.Continue main work. The main agent moves on; the subagent's completion arrives as an automatic notification.
You are watching the pulumi-up GitHub Actions run that fires after
PR #<NUM> merges to main of teamclara/infrastructure.
Steps:
1. Find the most recent pulumi-up.yml run created after <MERGE_TS> via
`gh run list --workflow=pulumi-up.yml --limit 5 --json
status,conclusion,databaseId,createdAt,headSha`. Match by SHA if
the merge SHA is known.
2. Poll until `status == completed`. Sleep 30s between checks. Cap at
30 minutes; bail with a timeout report if exceeded.
3. On success:
- Run `gh run view <id> --log` and extract the Pulumi summary
(lines mentioning `+ <resource>`, `~ <resource>`, exports, total
duration). Quote the summary block.
- If the PR description mentions new ESC env vars or stack
exports, verify those resolve via `pulumi env get
teamclara/platform/clara <path>`. Report which are live.
4. On failure:
- `gh run view <id> --log-failed | head -200` to capture the
actual error.
- Summarize root cause in 2–3 sentences.
- Suggest a one-line remediation if obvious (e.g. revert PR,
re-run, fix import).
5. Report back in under 250 words: the run conclusion, key changes,
any post-merge ESC verification results, and remediation if
failed.
Constraints:
- Read-only: do not run `pulumi up` yourself, do not edit ESC.
- If `gh run` API rate-limits, fall back to `gh run watch <id>`.
- Do not retry the workflow; just observe.
Agent({
description: "Watch pulumi-up for PR #<NUM>",
subagent_type: "general-purpose",
run_in_background: true,
prompt: <the template above with <NUM> and <MERGE_TS> filled in>,
})
The user gets a <task-notification> when the subagent completes;
their next turn surfaces it automatically.
For high-blast-radius PRs (cloud_sql schema migrations, GKE node config, IAM grants), prefer foreground polling — those are the cases where you want to stop and stare at the rollout.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub northisup/skillz --plugin skillz