Skip to main content

replace-skill-name

Watch Vercel deploys for [REPLACE: VERCEL_PROJECT] — alert on [REPLACE: ALERT_ON] in the last [REPLACE: LOOKBACK_HOURS] hours

설치로 이동

소스 정보

저장소
aeonfun/aeon
최근 소스 활동
2026년 8월 4일 21:01
감지된 SKILL.md 언어
영어
스타
755
포크
264

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
[REPLACE: SKILL_NAME]
description
Watch Vercel deploys for [REPLACE: VERCEL_PROJECT] — alert on [REPLACE: ALERT_ON] in the last [REPLACE: LOOKBACK_HOURS] hours
> **${var}** — Optional. Override the Vercel project slug. If empty, watches `[REPLACE: VERCEL_PROJECT]`. Today is ${today}. Watch Vercel deployments for **[REPLACE: VERCEL_PROJECT]** and alert on **[REPLACE: ALERT_ON]** within the last **[REPLACE: LOOKBACK_HOURS]** hours. ## Required secrets - `VERCEL_TOKEN` — personal access token from https://vercel.com/account/tokens. Read scope is enough. - (optional) `VERCEL_TEAM_ID` — if the project lives under a team, set this so the API queries the right scope. If either secret is missing, log `DEPLOY_WATCH_NO_TOKEN` and exit cleanly — never abort the workflow. ## Steps 1. **Resolve scope**: ```bash PROJECT="${var:-[REPLACE: VERCEL_PROJECT]}" SCOPE_QS="" if [ -n "${VERCEL_TEAM_ID:-}" ]; then SCOPE_QS="&teamId=$VERCEL_TEAM_ID" fi ``` 2. **Fetch recent deploys** — Vercel API v6 lists deployments for a project: ```bash SINCE_MS=$(( $(date -u +%s) * 1000 - [REPLACE: LOOKBACK_HOURS] * 3600 * 1000 )) URL="https://api.vercel.com/v6/deployments?projectId=$PROJECT&since=$SINCE_MS$SCOPE_QS&limit=20" curl -sf -H "Authorization: Bearer $VERCEL_TOKEN" "$URL" > .vercel-deploys.json || \ echo "DEPLOY_WATCH_FETCH_FAIL: $?" ``` Make every Vercel call in-run with `./secretcurl` (write the key as `{VERCEL_TOKEN}` — a bare `$VERCEL_TOKEN` on the line is refused by the Bash permission layer). Read-only status checks and any **irreversible action** (e.g. triggering a deploy) both run in-run — the irreversible one as the skill's final, fail-closed action. Never defer a read. 3. **Parse and classify** — for each deploy, capture: `uid`, `state` (READY / ERROR / CANCELED / BUILDING / QUEUED), `url`, `target` (production / preview), `creator`, `createdAt`, `meta.githubCommitMessage`. 4. **Apply the alert filter** — `[REPLACE: ALERT_ON]` is one of: - `production-failures` → alert when `target=production` AND `state in {ERROR, CANCELED}`. - `any-failures` → alert on any `state in {ERROR, CANCELED}`. - `slow-builds` → alert when build time > 10× the last-week median for this project. - `all` → alert on every state transition (noisy — only useful while debugging the skill). 5. **Compare against last-success baseline** — if alerting on a failure, also fetch the most recent successful production deploy and include in the notification: "last green: [commit] · [N hours] ago". 6. **Dedup** — track alerted deploy UIDs in `memory/topics/[REPLACE: SKILL_NAME]-alerted.json`. Never re-alert for the same UID. 7. **Notify on every new alert** via `./notify`: ``` *Deploy alert — [REPLACE: VERCEL_PROJECT]* ${state}: ${commit_message} ${target} build by ${creator} · ${ago} Last green: ${last_green_commit} · ${last_green_ago} Inspect: https://vercel.com/${owner}/${PROJECT}/${uid} ``` 8. **Write a roll-up** to `output/articles/[REPLACE: SKILL_NAME]-${today}.md`: total deploys, success/fail counts per target, average build time, list of failed UIDs with commit messages. 9. **Log** to `memory/logs/${today}.md`: ``` ## [REPLACE: SKILL_NAME] - **Deploys (${LOOKBACK_HOURS}h)**: total=N, ready=X, error=Y, canceled=Z, building=W - **Alerts fired**: N (deduped from M raw matches) - **Status**: DEPLOY_OK | DEPLOY_QUIET (no deploys) | DEPLOY_ALERT | DEPLOY_DEGRADED ``` ## Network note The Vercel API requires `Authorization: Bearer {VERCEL_TOKEN}`. A bare `$SECRET` on a command line is refused by the Bash permission layer, so make **every** Vercel call in-run with `./secretcurl` (write the key as the `{VERCEL_TOKEN}` placeholder — it keeps the secret off the line). Both the read-only status checks and any **irreversible** action (like triggering a deploy) run in-run; the irreversible one goes last, as the skill's final fail-closed action. Never defer a read. ## Constraints - **Dedup is non-negotiable**. Re-running the same alert for the same deploy will train operators to mute the channel — once alerted, never again unless the deploy changes state. - **Production beats preview** for alerting. A failed preview deploy is interesting but not urgent. Default to `production-failures` until the operator opts into more. - **Compare against baseline**. A failed build means more when paired with "last green was 3 hours ago" than alone.
GitHub에서 보기