skills/dev-ci-ifttt-notify/SKILL.md
Add IFTTT webhook notification to a GitHub Actions CI/CD workflow. Use when: (1) User wants CI deploy notifications via IFTTT, (2) User says 'add IFTTT notify', 'CI notification', or 'deploy notification', (3) User wants webhook notifications for build/deploy status.
npx skillsauth add takazudo/claude-resources dev-ci-ifttt-notifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add an IFTTT webhook notification job to a GitHub Actions workflow. The notification reports deploy status (succeeded, failed with reason, cancelled) along with a link to the workflow run.
https://maker.ifttt.com/trigger/<event>/with/key/<key>)gh CLI must be available for setting the repo secretIFTTT notifications (especially mobile push) typically only show value1 prominently. Put all critical info in value1 so the notification is self-explanatory at a glance:
| Field | Content | Example |
| --- | --- | --- |
| value1 | <project>: <emoji> <status> | my-app: ✅ Deploy succeeded |
| value2 | Run URL for tapping through | https://github.com/.../runs/123 |
| value3 | (unused / empty) | "" |
Do NOT split project name and status across value1/value2 — the user should see the full picture from the notification title alone.
This is the canonical IFTTT payload contract (convention C2) shared by every skill that posts to IFTTT_PROD_NOTIFY. /dev-gha-ifttt-notify follows this same layout.
Read .github/workflows/ to find the target workflow (typically the production deploy workflow). Identify all job names and their dependency chain.
Add a notify job at the end of the workflow with this pattern:
notify:
name: Notify
needs: [<all-prior-jobs>]
runs-on: ubuntu-latest
timeout-minutes: 2
if: always()
steps:
- name: Send IFTTT notification
env:
IFTTT_PROD_NOTIFY: ${{ secrets.IFTTT_PROD_NOTIFY }}
run: |
if [ -z "$IFTTT_PROD_NOTIFY" ]; then
echo "IFTTT_PROD_NOTIFY not set, skipping notification"
exit 0
fi
JOB1_RESULT="${{ needs.<job1>.result }}"
JOB2_RESULT="${{ needs.<job2>.result }}"
DEPLOY_RESULT="${{ needs.<deploy-job>.result }}"
# ... one variable per job in needs
# Determine status — check deploy success first, then failures in pipeline order
if [ "$DEPLOY_RESULT" = "success" ]; then
STATUS="✅ Deploy succeeded"
elif [ "$JOB1_RESULT" = "failure" ]; then
STATUS="❌ <Job1 description> failed"
elif [ "$JOB2_RESULT" = "failure" ]; then
STATUS="❌ <Job2 description> failed"
elif [ "$DEPLOY_RESULT" = "failure" ]; then
STATUS="❌ Deploy failed"
else
STATUS="⚠️ Deploy result: job1=$JOB1_RESULT job2=$JOB2_RESULT deploy=$DEPLOY_RESULT"
fi
curl -s -o /dev/null \
-H "Content-Type: application/json" \
-d "{\"value1\":\"<project-name>: $STATUS\",\"value2\":\"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\",\"value3\":\"\"}" \
"$IFTTT_PROD_NOTIFY"
Key design points:
value1 contains project name + status — notification is readable without opening it✅, ❌, ⚠️) for instant visual scanning on mobileneeds lists ALL prior jobs so status of each can be checkedif: always() ensures notification runs regardless of success/failureIFTTT_PROD_NOTIFY allows silent skip if secret not configuredcurl -s -o /dev/null to suppress output noise in CI logsgh secret set IFTTT_PROD_NOTIFY --body "<webhook-url>"
Verify with gh secret list.
Add a line to the workflow's header comment describing the notification step.
tools
Acceptance gate for a branch produced by an OpenAI Codex CLI run — usually Codex implementing a /big-plan epic that was handed off to it. Codex reports the work 'done' (or the user flags it WIP with corrections); this skill confirms the branch actually fulfils the original spec, fixes what falls short, and routes larger discoveries into GitHub issues. Use when: (1) User says '/finalize-codex-work', 'finalize codex work', 'confirm the codex work', 'check the codex branch', or 'codex said it's done', (2) A branch is the result of a Codex CLI session and needs verification against its spec issue/PR, (3) After assigning a /big-plan epic to Codex CLI. Pass -m/--merge to run /pr-complete -c at the end.
tools
Read a Figma design node directly from a share URL via the Figma REST API — no Dev Mode subscription, no MCP, no desktop app. Renders the node to PNG and dumps its full style/layout JSON so the design can be described, compared, or implemented. Use whenever the user gives a Figma design URL (figma.com/design/... or /file/...) and wants to see, read, inspect, reference, or implement that node — including `/fig-url-refer <url>`. This is the URL-based counterpart to `/figrefer` (which needs a Dev-plan desktop MCP); prefer this one when the input is a URL rather than a live desktop selection.
tools
Sync the user's Claude Code workflow skills into the OpenAI Codex CLI settings repo ($HOME/.codex) as Codex-native ports, fix the Codex .gitignore for new local state, then commit and push. Use when: (1) user says '/dev-codex-sync-settings-from-claude', 'sync codex settings', 'sync claude skills to codex', 'port skills to codex', or 'update codex from claude'; (2) after updating ~/.claude workflow skills (big-plan, x, x-as-pr, x-wt-teams) and Codex should catch up; (3) the $HOME/.codex repo has drifted behind $HOME/.claude. The ports are condensed Codex-native REWRITES, never file copies.
development
Analyze a video file (mov, mp4, webm, etc.) or a YouTube video by extracting still frames with ffmpeg and reading them chronologically with vision — Claude cannot ingest video files directly. Use whenever the user provides a video file path or YouTube URL and wants to know what happens in it: "read this video", "watch this video", "check this recording", "what happens in this .mov/.mp4", analyzing a screen recording of a UI bug, or verifying UI behavior captured in a video, even if they don't name this skill.