writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
canary-watchUse this skill to monitor and verify a deployed URL or public OSS launch surface after releases — checks HTTP endpoints, SSE streams, static assets, console errors, performance regressions, PR queue health, maintainer feedback, and listing-review blockers after deploys, merges, submissions, or dependency upgrades. Smoke / canary / post-deploy / PR-watch ver…
Independent GitHub snapshot · Automated classification · Original documentation governs
Monitors a deployed URL or public launch surface for regressions. Runs in a loop until stopped or until the watch window expires.
Act as the release or launch canary owner for the monitored surface.
Owned surface:
Non-goals:
Required verification:
healthy, needs fix, needs response, and watch onlyWhen instructions conflict, follow this order:
Conflict behavior: do not decide silently which instruction wins. If a requested action conflicts with the ordered rules above, stop the action and ask for a separate approval with the conflicting rule named.
This skill has zero public-action carve-outs for comments, PR creation, PR closing, or merging. If those actions are needed, stop this skill after the evidence report and ask for a separate user-approved task. If a PR is healthy, the anti-spam rule wins over any generic desire to "keep it warm".
Before classifying a new public listing target, record:
submit later, watch only, or do not submitIf any of those inputs are missing, classify the target as watch only.
Before edits, identify the target surface and rollback path.
| Surface | Allowed action | Risk control | Verification |
|---|---|---|---|
| Deployed URL | observe, compare, report | do not mutate production state from this skill | HTTP/browser/API evidence |
| PR body | report the needed edit | make the edit in a separate user-approved task | reread PR body after edit |
| PR comment | prepare a draft only | post only in a separate user-approved task; one focused comment, no repeated pings | link to maintainer request and approved final comment |
| Repository docs/skills | update only when the repo needs durable guidance | keep tests or PromptGuard coverage with the doc change | targeted tests plus PromptGuard for prompt-like files |
If the risk cannot be verified with a command or public artifact, report it as residual risk instead of claiming it is fixed.
1. HTTP Status — is the page returning 200?
2. Console Errors — new errors that weren't there before?
3. Network Failures — failed API calls, 5xx responses?
4. Performance — LCP/CLS/INP regression vs baseline?
5. Content — did key elements disappear? (h1, nav, footer, CTA)
6. API Health — are critical endpoints responding within SLA?
7. Static Assets — are JS, CSS, image, and font requests returning 2xx/3xx with expected content types?
8. SSE Streams — do event-stream endpoints connect and receive an initial event or heartbeat?
9. OSS PR Queue — are submitted listings mergeable, failing checks, or receiving maintainer feedback?
10. Listing Fit — did a maintainer flag wrong category, weak positioning, spam risk, or missing evidence?
Quick check (default): single pass, report results
/canary-watch https://myapp.com
Sustained watch: check every N minutes for M hours
/canary-watch https://myapp.com --interval 5m --duration 2h
Diff mode: compare staging vs production
/canary-watch --compare https://staging.myapp.com https://myapp.com
OSS PR queue mode: monitor public submission health without noisy follow-ups
/canary-watch --oss-prs mturac/everything-openai-codex --query "everything-openai-codex author:mturac"
Daily quiet platform watch: run the repository queue and listing checks once per day, upload artifacts, and let the check fail when evidence needs action
node scripts/platform-audit.js --json --use-env-github-token --allow-untracked artifacts/ --write artifacts/platform-watch/platform-audit.json
node scripts/discussion-audit.js --json --use-env-github-token --write artifacts/platform-watch/discussion-audit.json
node scripts/operator-readiness-dashboard.js --json --use-env-github-token --allow-untracked artifacts/ --write artifacts/platform-watch/operator-readiness-dashboard.json
Daily automation rules:
critical: # immediate alert
- HTTP status != 200
- Console error count > 5 (new errors only)
- LCP > 4s
- API endpoint returns 5xx
- Static asset returns 4xx/5xx
- SSE endpoint cannot connect or drops before first heartbeat
- Submitted PR becomes unmergeable because of conflicts
- Required CI/status check fails
- Maintainer asks for a concrete change, CLA action, category move, or evidence update
warning: # flag in report
- LCP increased > 500ms from baseline
- CLS > 0.1
- New console warnings
- Response time > 2x baseline
- Static asset content type changed unexpectedly
- SSE heartbeat latency > 2x baseline
- PR is silently closed without explanation
- Reviewer says positioning is unclear, too broad, or too close to an upstream project
- PR body lacks a project link, execution model, validation note, or exact category rationale
info: # log only
- Minor performance variance
- New network requests (third-party scripts added?)
- Open PR is mergeable with no failed or pending checks
- Closed duplicate PR has a newer replacement already open
When a critical threshold is crossed:
~/.codex/canary-watch.logUse this mode when the launch risk is a public submission trail rather than a deployed endpoint.
Use GitHub state, not memory:
gh search prs "everything-openai-codex" --author mturac --state open --json url,repository,title,updatedAt --limit 100
gh search prs "everything-openai-codex" --author mturac --state closed --json url,repository,title,updatedAt --limit 100
For each open PR, inspect:
gh pr view <number> --repo <owner/repo> --json mergeable,statusCheckRollup,comments,reviews,body,title,url
| State | Meaning | Action |
|---|---|---|
| Healthy | mergeable, no failed/pending checks, body links to project and execution model | do not comment |
| Needs fix | failed check, merge conflict, CLA blocker, invalid category, broken link | fix or update the PR |
| Needs response | maintainer asks a concrete question or requests a change | answer once with evidence |
| Closed duplicate | intentionally superseded by another PR | no action |
| Closed reject | maintainer says the project does not fit | learn from it, do not argue |
| Silent close | closed with no comments | record as closed; no chase comments |
Do not post "any update?" comments, repeated pings, or generic follow-ups. A public launch canary may draft a response when maintainer feedback needs an answer. Posting that draft requires a separate approval decision.
Public PR body edits are lower risk than comments and still need evidence. Edit a body only when the change materially improves review context, such as fixing a broken link, category rationale, validation note, or execution-model context.
Before adding a new listing PR, verify:
If a well-known repo has a higher bar such as "proven/community-adopted skills", do not submit until the project has evidence that matches that bar.
## Canary Report — myapp.com — 2026-03-23 03:15 PST
### Status: HEALTHY ✓
| Check | Result | Baseline | Delta |
|-------|--------|----------|-------|
| HTTP | 200 ✓ | 200 | — |
| Console errors | 0 ✓ | 0 | — |
| LCP | 1.8s ✓ | 1.6s | +200ms |
| CLS | 0.01 ✓ | 0.01 | — |
| API /health | 145ms ✓ | 120ms | +25ms |
| Static assets | 42/42 ✓ | 42/42 | — |
| SSE /events | connected ✓ | connected | +80ms heartbeat |
### No regressions detected. Deploy is clean.
## OSS PR Canary — everything-openai-codex — 2026-05-19
### Status: CLEAN
| Queue | Count | Notes |
|---|---:|---|
| Open PRs | 22 | all mergeable |
| Failed checks | 0 | no action |
| Pending checks | 0 | no action |
| Maintainer blockers | 0 | no action |
| Closed rejects | 1 | recorded; do not argue |
### Action
No comments needed. Keep monitoring for concrete maintainer feedback or CI failures.
Pair with:
/browser-qa for pre-deploy verificationgit push to auto-check after deploys.github/workflows/platform-watch.yml daily for quiet queue, discussion, and listing-review evidencescripts/work-items.js for syncing GitHub PR/issue queue state into the local status surfaceautomation-audit-ops when PR monitoring overlaps with launch, CI, hook, or marketplace automation