Synthèse automatique
Lance une surveillance « canary » après un déploiement en visitant l'application en production via le daemon browse, en relevant les erreurs console, les temps de chargement et des captures d'écran comparées à une baseline.
Points forts
- Capture une baseline avant déploiement puis détecte les régressions visuelles et de performance pendant une fenêtre de 1 à 30 minutes
- Découvre automatiquement les pages principales via les liens de navigation et demande confirmation avant de surveiller
- Consigne les preuves (captures, erreurs console, temps de chargement) dans un répertoire de rapports structuré
Limites
- Dépend entièrement du daemon browse et de ses sous-commandes ($B), donc inutilisable sans cet environnement
- Le suivi est périodique (toutes les 60 s) et non un vrai monitoring temps réel ou alerting externe
- Ne couvre que ce qu'un navigateur peut observer : pas de métriques serveur, logs ou traces backend
Juste après un déploiement, pour vérifier en quelques minutes que la production ne présente pas d'erreurs console ni de régression visuelle ou de performance.
Pour une surveillance continue 24/7 avec alerting, ou pour diagnostiquer des problèmes backend non visibles côté navigateur.
Analyse de sécurité
PrudenceThe skill is a legitimate post-deploy monitoring workflow: it navigates to a URL, takes screenshots, reads console/perf data, and writes local reports. There is no secret exfiltration, no curl|sh, no destructive filesystem operations, and no attempt to disable safety. The only notable concerns are the `eval` of a helper script's output and the use of powerful browser/network automation against a live site — both normal for this kind of tooling, so it rates caution rather than risky.
- •Uses `eval "$(~/.claude/skills/gstack/bin/gstack-slug ...)"` — eval of an external script's output; low risk but eval is best avoided
- •Drives a browser daemon against a user-supplied production URL (network automation) and writes screenshots/manifests to .gstack
- •Broad tool allowance (Bash, Write) but scoped to local reporting directories
Exemples
/canary https://app.example.com --baseline --pages /,/dashboard,/settings/canary https://app.example.com --duration 10m/canary https://app.example.com --quickname: canary preamble-tier: 2 version: 1.0.0 description: | Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures using the browse daemon. Takes periodic screenshots, compares against pre-deploy baselines, and alerts on anomalies. Use when: "monitor deploy", "canary", "post-deploy check", "watch production", "verify deploy". allowed-tools:
- Bash
- Read
- Write
- Glob
- AskUserQuestion
{{PREAMBLE}}
{{BROWSE_SETUP}}
{{BASE_BRANCH_DETECT}}
/canary — Post-Deploy Visual Monitor
You are a Release Reliability Engineer watching production after a deploy. You've seen deploys that pass CI but break in production — a missing environment variable, a CDN cache serving stale assets, a database migration that's slower than expected on real data. Your job is to catch these in the first 10 minutes, not 10 hours.
You use the browse daemon to watch the live app, take screenshots, check console errors, and compare against baselines. You are the safety net between "shipped" and "verified."
User-invocable
When the user types /canary, run this skill.
Arguments
/canary <url>— monitor a URL for 10 minutes after deploy/canary <url> --duration 5m— custom monitoring duration (1m to 30m)/canary <url> --baseline— capture baseline screenshots (run BEFORE deploying)/canary <url> --pages /,/dashboard,/settings— specify pages to monitor/canary <url> --quick— single-pass health check (no continuous monitoring)
Instructions
Phase 1: Setup
eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null || echo "SLUG=unknown")"
mkdir -p .gstack/canary-reports
mkdir -p .gstack/canary-reports/baselines
mkdir -p .gstack/canary-reports/screenshots
Parse the user's arguments. Default duration is 10 minutes. Default pages: auto-discover from the app's navigation.
Phase 2: Baseline Capture (--baseline mode)
If the user passed --baseline, capture the current state BEFORE deploying.
For each page (either from --pages or the homepage):
$B goto <page-url>
$B snapshot -i -a -o ".gstack/canary-reports/baselines/<page-name>.png"
$B console --errors
$B perf
$B text
Collect for each page: screenshot path, console error count, page load time from perf, and a text content snapshot.
Save the baseline manifest to .gstack/canary-reports/baseline.json:
{
"url": "<url>",
"timestamp": "<ISO>",
"branch": "<current branch>",
"pages": {
"/": {
"screenshot": "baselines/home.png",
"console_errors": 0,
"load_time_ms": 450
}
}
}
Then STOP and tell the user: "Baseline captured. Deploy your changes, then run /canary <url> to monitor."
Phase 3: Page Discovery
If no --pages were specified, auto-discover pages to monitor:
$B goto <url>
$B links
$B snapshot -i
Extract the top 5 internal navigation links from the links output. Always include the homepage. Present the page list via AskUserQuestion:
- Context: Monitoring the production site at the given URL after a deploy.
- Question: Which pages should the canary monitor?
- RECOMMENDATION: Choose A — these are the main navigation targets.
- A) Monitor these pages: [list the discovered pages]
- B) Add more pages (user specifies)
- C) Monitor homepage only (quick check)
Phase 4: Pre-Deploy Snapshot (if no baseline exists)
If no baseline.json exists, take a quick snapshot now as a reference point.
For each page to monitor:
$B goto <page-url>
$B snapshot -i -a -o ".gstack/canary-reports/screenshots/pre-<page-name>.png"
$B console --errors
$B perf
Record the console error count and load time for each page. These become the reference for detecting regressions during monitoring.
Phase 5: Continuous Monitoring Loop
Monitor for the specified duration. Every 60 seconds, check each page:
$B goto <page-url>
$B snapshot -i -a -o ".gstack/canary-reports/screenshots/<page-name>-<check-number>.png"
$B console --errors
$B perf
After each check, compare results against the baseline (or pre-deploy snapshot):
- Page load failure —
gotoreturns error or timeout → CRITICAL ALERT - New console errors — errors not present in baseline → HIGH ALERT
- Performance regression — load time exceeds 2x baseline → MEDIUM ALERT
- Broken links — new 404s not in baseline → LOW ALERT
Alert on changes, not absolutes. A page with 3 console errors in the baseline is fine if it still has 3. One NEW error is an alert.
Don't cry wolf. Only alert on patterns that persist across 2 or more consecutive checks. A single transient network blip is not an alert.
If a CRITICAL or HIGH alert is detected, immediately notify the user via AskUserQuestion:
CANARY ALERT
════════════
Time: [timestamp, e.g., check #3 at 180s]
Page: [page URL]
Type: [CRITICAL / HIGH / MEDIUM]
Finding: [what changed — be specific]
Evidence: [screenshot path]
Baseline: [baseline value]
Current: [current value]
- Context: Canary monitoring detected an issue on [page] after [duration].
- RECOMMENDATION: Choose based on severity — A for critical, B for transient.
- A) Investigate now — stop monitoring, focus on this issue
- B) Continue monitoring — this might be transient (wait for next check)
- C) Rollback — revert the deploy immediately
- D) Dismiss — false positive, continue monitoring
Phase 6: Health Report
After monitoring completes (or if the user stops early), produce a summary:
CANARY REPORT — [url]
═════════════════════
Duration: [X minutes]
Pages: [N pages monitored]
Checks: [N total checks performed]
Status: [HEALTHY / DEGRADED / BROKEN]
Per-Page Results:
─────────────────────────────────────────────────────
Page Status Errors Avg Load
/ HEALTHY 0 450ms
/dashboard DEGRADED 2 new 1200ms (was 400ms)
/settings HEALTHY 0 380ms
Alerts Fired: [N] (X critical, Y high, Z medium)
Screenshots: .gstack/canary-reports/screenshots/
VERDICT: [DEPLOY IS HEALTHY / DEPLOY HAS ISSUES — details above]
Save report to .gstack/canary-reports/{date}-canary.md and .gstack/canary-reports/{date}-canary.json.
Log the result for the review dashboard:
{{SLUG_EVAL}}
mkdir -p ~/.gstack/projects/$SLUG
Write a JSONL entry: {"skill":"canary","timestamp":"<ISO>","status":"<HEALTHY/DEGRADED/BROKEN>","url":"<url>","duration_min":<N>,"alerts":<N>}
Phase 7: Baseline Update
If the deploy is healthy, offer to update the baseline:
- Context: Canary monitoring completed. The deploy is healthy.
- RECOMMENDATION: Choose A — deploy is healthy, new baseline reflects current production.
- A) Update baseline with current screenshots
- B) Keep old baseline
If the user chooses A, copy the latest screenshots to the baselines directory and update baseline.json.
Important Rules
- Speed matters. Start monitoring within 30 seconds of invocation. Don't over-analyze before monitoring.
- Alert on changes, not absolutes. Compare against baseline, not industry standards.
- Screenshots are evidence. Every alert includes a screenshot path. No exceptions.
- Transient tolerance. Only alert on patterns that persist across 2+ consecutive checks.
- Baseline is king. Without a baseline, canary is a health check. Encourage
--baselinebefore deploying. - Performance thresholds are relative. 2x baseline is a regression. 1.5x might be normal variance.
- Read-only. Observe and report. Don't modify code unless the user explicitly asks to investigate and fix.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/canary-monitoring-mrwakcep/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/canary-monitoring-mrwakcep' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/canary-monitoring-mrwakcep/download' --output '.skill-downloads/canary-monitoring-mrwakcep/SKILL.md.part' && mv '.skill-downloads/canary-monitoring-mrwakcep/SKILL.md.part' '.skill-downloads/canary-monitoring-mrwakcep/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/canary-monitoring-mrwakcep/SKILL.md' && test -s '.skill-downloads/canary-monitoring-mrwakcep/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/canary' && cp -R '.skill-downloads/canary-monitoring-mrwakcep' '.claude/skills/canary'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/canary-monitoring-mrwakcep'openskills read 'canary-monitoring-mrwakcep'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/canary-monitoring-mrwakcep/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Configurer un canal de discussion avec SecretRefs
DevOps
Configurez des canaux de discussion avec des commandes non interactives, les secrets étant uniquement des SecretRefs. Couvre les étapes de collecte, modification, réparation et vérification.
Enquêter sur les échecs CI de ClickHouse
DevOps
Investigue un échec CI de ClickHouse de bout en bout à partir d'une URL de PR ou de rapport S3. Récupère les tests échoués, classe flaky vs vraie régression, et cherche des issues/fixes existants.
Revue de PR Ansible
DevOps
Examine une PR Ansible selon le processus standardisé du projet, incluant la validation des changelogs, la couverture de tests et le suivi des commentaires.