[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7EC3FHM91CE3MSPXN2P3XCC":3,"skill-same:01M7EC3FHM91CE3MSPXN2P3XCC":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M7EC3FHM91CE3MSPXN2P3XCC","canary-watch",null,"Use this skill to monitor and verify a deployed URL after releases — checks HTTP endpoints, SSE streams, static assets, console errors, and performance regressions after deploys, merges, or dependency upgrades. Smoke \u002F canary \u002F post-deploy verification.","syedmehedihussain\u002Fcherry","syedmehedihussain","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F183754033?v=4","01M7EC34EA312J2XV37SD5C840","Syed Mehedi Hussain","01M7EC34EZR59ARY7C75C41EKJ",3,"MIT","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Fdeployment\u002Fskills\u002Fcanary-watch\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Fdeployment\u002Fskills\u002Fcanary-watch\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: canary-watch\ndescription: Use this skill to monitor and verify a deployed URL after releases — checks HTTP endpoints, SSE streams, static assets, console errors, and performance regressions after deploys, merges, or dependency upgrades. Smoke \u002F canary \u002F post-deploy verification.\nmetadata:\n  origin: ECC\n---\n\n# Canary Watch — Post-Deploy Monitoring\n\n## When to Use\n\n- After deploying to production or staging\n- After merging a risky PR\n- When you want to verify a fix actually fixed it\n- Continuous monitoring during a launch window\n- After dependency upgrades\n\n## How It Works\n\nMonitors a deployed URL for regressions. Runs in a loop until stopped or until the watch window expires.\n\n### What It Watches\n\n```\n1. HTTP Status — is the page returning 200?\n2. Console Errors — new errors that weren't there before?\n3. Network Failures — failed API calls, 5xx responses?\n4. Performance — LCP\u002FCLS\u002FINP regression vs baseline?\n5. Content — did key elements disappear? (h1, nav, footer, CTA)\n6. API Health — are critical endpoints responding within SLA?\n7. Static Assets — are JS, CSS, image, and font requests returning 2xx\u002F3xx with expected content types?\n8. SSE Streams — do event-stream endpoints connect and receive an initial event or heartbeat?\n```\n\n### Watch Modes\n\n**Quick check** (default): single pass, report results\n```\n\u002Fcanary-watch https:\u002F\u002Fmyapp.com\n```\n\n**Sustained watch**: check every N minutes for M hours\n```\n\u002Fcanary-watch https:\u002F\u002Fmyapp.com --interval 5m --duration 2h\n```\n\n**Diff mode**: compare staging vs production\n```\n\u002Fcanary-watch --compare https:\u002F\u002Fstaging.myapp.com https:\u002F\u002Fmyapp.com\n```\n\n### Alert Thresholds\n\n```yaml\ncritical:  # immediate alert\n  - HTTP status != 200\n  - Console error count > 5 (new errors only)\n  - LCP > 4s\n  - API endpoint returns 5xx\n  - Static asset returns 4xx\u002F5xx\n  - SSE endpoint cannot connect or drops before first heartbeat\n\nwarning:   # flag in report\n  - LCP increased > 500ms from baseline\n  - CLS > 0.1\n  - New console warnings\n  - Response time > 2x baseline\n  - Static asset content type changed unexpectedly\n  - SSE heartbeat latency > 2x baseline\n\ninfo:      # log only\n  - Minor performance variance\n  - New network requests (third-party scripts added?)\n```\n\n### Notifications\n\nWhen a critical threshold is crossed:\n- Desktop notification (macOS\u002FLinux)\n- Optional: Slack\u002FDiscord webhook\n- Log to `~\u002F.claude\u002Fcanary-watch.log`\n\n## Output\n\n```markdown\n## Canary Report — myapp.com — 2026-03-23 03:15 PST\n\n### Status: HEALTHY ✓\n\n| Check | Result | Baseline | Delta |\n|-------|--------|----------|-------|\n| HTTP | 200 ✓ | 200 | — |\n| Console errors | 0 ✓ | 0 | — |\n| LCP | 1.8s ✓ | 1.6s | +200ms |\n| CLS | 0.01 ✓ | 0.01 | — |\n| API \u002Fhealth | 145ms ✓ | 120ms | +25ms |\n| Static assets | 42\u002F42 ✓ | 42\u002F42 | — |\n| SSE \u002Fevents | connected ✓ | connected | +80ms heartbeat |\n\n### No regressions detected. Deploy is clean.\n```\n\n## Integration\n\nPair with:\n- `\u002Fbrowser-qa` for pre-deploy verification\n- Hooks: add as a PostToolUse hook on `git push` to auto-check after deploys\n- CI: run in GitHub Actions after deploy step\n","# Canary Watch — Post-Deploy Monitoring\n\n## When to Use\n\n- After deploying to production or staging\n- After merging a risky PR\n- When you want to verify a fix actually fixed it\n- Continuous monitoring during a launch window\n- After dependency upgrades\n\n## How It Works\n\nMonitors a deployed URL for regressions. Runs in a loop until stopped or until the watch window expires.\n\n### What It Watches\n\n```\n1. HTTP Status — is the page returning 200?\n2. Console Errors — new errors that weren't there before?\n3. Network Failures — failed API calls, 5xx responses?\n4. Performance — LCP\u002FCLS\u002FINP regression vs baseline?\n5. Content — did key elements disappear? (h1, nav, footer, CTA)\n6. API Health — are critical endpoints responding within SLA?\n7. Static Assets — are JS, CSS, image, and font requests returning 2xx\u002F3xx with expected content types?\n8. SSE Streams — do event-stream endpoints connect and receive an initial event or heartbeat?\n```\n\n### Watch Modes\n\n**Quick check** (default): single pass, report results\n```\n\u002Fcanary-watch https:\u002F\u002Fmyapp.com\n```\n\n**Sustained watch**: check every N minutes for M hours\n```\n\u002Fcanary-watch https:\u002F\u002Fmyapp.com --interval 5m --duration 2h\n```\n\n**Diff mode**: compare staging vs production\n```\n\u002Fcanary-watch --compare https:\u002F\u002Fstaging.myapp.com https:\u002F\u002Fmyapp.com\n```\n\n### Alert Thresholds\n\n```yaml\ncritical:  # immediate alert\n  - HTTP status != 200\n  - Console error count > 5 (new errors only)\n  - LCP > 4s\n  - API endpoint returns 5xx\n  - Static asset returns 4xx\u002F5xx\n  - SSE endpoint cannot connect or drops before first heartbeat\n\nwarning:   # flag in report\n  - LCP increased > 500ms from baseline\n  - CLS > 0.1\n  - New console warnings\n  - Response time > 2x baseline\n  - Static asset content type changed unexpectedly\n  - SSE heartbeat latency > 2x baseline\n\ninfo:      # log only\n  - Minor performance variance\n  - New network requests (third-party scripts added?)\n```\n\n### Notifications\n\nWhen a critical threshold is crossed:\n- Desktop notification (macOS\u002FLinux)\n- Optional: Slack\u002FDiscord webhook\n- Log to `~\u002F.claude\u002Fcanary-watch.log`\n\n## Output\n\n```markdown\n## Canary Report — myapp.com — 2026-03-23 03:15 PST\n\n### Status: HEALTHY ✓\n\n| Check | Result | Baseline | Delta |\n|-------|--------|----------|-------|\n| HTTP | 200 ✓ | 200 | — |\n| Console errors | 0 ✓ | 0 | — |\n| LCP | 1.8s ✓ | 1.6s | +200ms |\n| CLS | 0.01 ✓ | 0.01 | — |\n| API \u002Fhealth | 145ms ✓ | 120ms | +25ms |\n| Static assets | 42\u002F42 ✓ | 42\u002F42 | — |\n| SSE \u002Fevents | connected ✓ | connected | +80ms heartbeat |\n\n### No regressions detected. Deploy is clean.\n```\n\n## Integration\n\nPair with:\n- `\u002Fbrowser-qa` for pre-deploy verification\n- Hooks: add as a PostToolUse hook on `git push` to auto-check after deploys\n- CI: run in GitHub Actions after deploy step\n",{"name":5,"metadata":25,"description":7},{"origin":26},"ECC","main","adb38ff1e06b1bb57c84131717dd3d9c01292a8b","packages\u002Fdaemon\u002Fstages\u002Fdeployment\u002Fskills\u002Fcanary-watch",0,"https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry","https:\u002F\u002Fsyedmehedihussain.github.io\u002Fcherry\u002F","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain","https:\u002F\u002Fsyedmehedihussain.codes\u002F","What should I say?","2026-11-10 02:42:31",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add syedmehedihussain\u002Fcherry --skill canary-watch",{"tool":43,"command":44},"bunx","bunx skills add syedmehedihussain\u002Fcherry --skill canary-watch",{"tool":46,"command":47},"pnpm","pnpm dlx skills add syedmehedihussain\u002Fcherry --skill canary-watch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Fdeployment\u002Fskills\u002Fcanary-watch\u002FSKILL.md",true,[51],{"path":52,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":16},"LICENSE","许可证",1071,[56,64,72,80,88,96],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":60,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":20},"01M7ECBMEN6N02N2NGHMYTJTY1","verification-loop","Run a six-phase verification of a Claude Code session's work — build, type check, lint, tests with coverage, security grep, and diff review — then produce a PASS\u002FFAIL verification report. Use when verifying work after completing a feature or refactor, before creating a PR, or when quality gates must pass.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fverification-loop\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":68,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":20},"01M7ECBFBZ3GJEWJJHKRPCYX8J","e2e-testing","Playwright E2E testing patterns, Page Object Model, configuration, CI\u002FCD integration, artifact management, and flaky test strategies. Use when writing Playwright tests, structuring page objects, or fixing flaky E2E runs in CI.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fe2e-testing\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fe2e-testing\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":76,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":20},"01M7ECB8WD04GN1SF0J7XM0252","browser-qa","Run automated post-deploy UI verification with a browser automation MCP (claude-in-chrome, Playwright, or Puppeteer): console-error and Core Web Vitals smoke checks, form and auth-flow interaction tests, screenshot visual regression across three breakpoints, and axe-core accessibility audits ending in a SHIP \u002F DO-NOT-SHIP verdict. Use when testing a deployed feature on staging or preview, before shipping frontend changes, reviewing a frontend PR, or checking responsive layout and accessibility.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fbrowser-qa\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fbrowser-qa\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":84,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":20},"01M7ECB2QHYKHYT9EJV089FVT4","ai-regression-testing","Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fai-regression-testing\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Ftesting\u002Fskills\u002Fai-regression-testing\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":92,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":20},"01M7ECAXS1W69TNH9MV1J1WHM2","story-lifecycle","Manage a file-based epic → story → sprint development loop without requiring an external project management tool. Creates and tracks epics, breaks them into user stories, assigns them to sprints, and drives implementation story by story. Use when starting a new feature initiative or when the team has no Jira\u002FLinear\u002FTaiga but needs structured delivery tracking.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Frequirements\u002Fskills\u002Fstory-lifecycle\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Frequirements\u002Fskills\u002Fstory-lifecycle\u002FSKILL.md",[],[],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":100,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":20},"01M7ECAQVHTTS6M1T62XYAP9NP","intent-driven-development","Turn ambiguous or high-impact product and engineering changes into scoped, verifiable acceptance criteria before or alongside implementation. Use when a user asks to clarify a feature, define acceptance criteria, de-risk a security\u002Fdata\u002Fmigration\u002Fintegration change, prepare implementation requirements for another agent, or make a complex request testable. Do not trigger for trivial edits, straightforward fixes, active debugging, code review, or implementation requests whose acceptance conditions are already clear unless the user explicitly invokes this skill.","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Frequirements\u002Fskills\u002Fintent-driven-development\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsyedmehedihussain\u002Fcherry\u002Fblob\u002Fmain\u002Fpackages\u002Fdaemon\u002Fstages\u002Frequirements\u002Fskills\u002Fintent-driven-development\u002FSKILL.md",[],[]]