Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/skills-il/developer-toolsnpx agentmods add skills/skills-il/developer-tools/github-actions-ilWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/skills-il/developer-tools/github-actions-il)<a href="https://agentmods.dev/skills/skills-il/developer-tools/github-actions-il"><img src="https://agentmods.dev/badge/skills/skills-il/developer-tools/github-actions-il/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/skills-il/developer-tools/github-actions-il"><img src="https://agentmods.dev/badge/skills/skills-il/developer-tools/github-actions-il.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 9 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Privilege Escalation · line 563 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- medium Data Exfiltration · line 261 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 297 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 346 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 346 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 673 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium MCP Rug Pull · line 473 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 474 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 475 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00193 | $0.09327 |
| Opus 5.5 | $0.00077 | $0.03731 |
| Sonnet 5.5 | $0.00039 | $0.01865 |
| Haiku 4.5 | $0.00019 | $0.00933 |
Grade B, and why
github-actions-il scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 21d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Sends data to an external URLmediumData exfiltration
A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.
| curl -s -X POST "$SLACK_WEBHOOK" -H 'Content-Type: application/json' -d @- Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
allowed-tools: Bash(gh:*) Bash(git:*) Bash(curl:*) Bash(node:*) Bash(act:*) How it starts
The opening of the file, as written. The whole thing — 627 lines — stays where its author put it; the contents beside it link to each section on GitHub.
GitHub Actions for Israeli Teams
Instructions
Step 1: Choose the Right Workflow Pattern
Match the team's need to a workflow template, then adapt it to the stack.
| Israeli Dev Need | Workflow Template | Key Actions / Tools |
|---|---|---|
| Shabbat/holiday deploy freeze | shabbat-deploy-freeze.yml |
hebcal API, cron schedule, environment protection rules |
| Hebrew Slack notifications | hebrew-notifications.yml |
Slack Incoming Webhook, RTL text payload |
| Hebrew Teams notifications | hebrew-notifications.yml |
Teams Workflows webhook, Adaptive Card |
| IS-5568 accessibility check | compliance-checks.yml |
axe-core, pa11y, custom IS-5568 rules |
| Privacy compliance (GDPR-IL) | compliance-checks.yml |
custom scanner, dependency audit |
| Monday.com issue sync | monday-sync.yml |
Monday.com GraphQL API |
| Vercel fra1 deployment | deploy-vercel.yml |
vercel CLI with --regions fra1 |
| Supabase migration CI | supabase-ci.yml |
supabase CLI, migration diff |
| Hebrew i18n validation | i18n-validation.yml |
custom script, JSON/YAML schema check |
| Israeli work week scheduling | Any workflow | Cron with Sun-Thu schedule |
If the team has multiple needs, compose workflows by reusing composite actions from references/workflow-templates.md.
Step 2: Set Up Shabbat/Holiday-Aware Scheduling
Israeli teams need deployment schedules that respect Shabbat (Friday afternoon through Saturday night) and Jewish holidays. This is not just cultural preference; deploying during Shabbat means no one is available to respond to incidents.
Approach: Hebcal API + Environment Protection Rules
- Create a reusable workflow that checks whether the current time falls within a freeze window:
# .github/actions/shabbat-check/action.yml
name: 'Shabbat/Holiday Check'
description: 'Check if current time is during Shabbat or Israeli holiday'
outputs:
is_frozen:
description: 'true if deploys should be frozen'
value: ${{ steps.check.outputs.frozen }}
reason:
description: 'Why deploys are frozen (e.g., Shabbat, Yom Kippur)'
value: ${{ steps.check.outputs.reason }}
runs:
using: 'composite'
steps:
- id: check
shell: bash
run: |
# ONE feed covers Shabbat AND holidays. The /shabbat endpoint honours maj=on and
# returns `holiday` items together with their candle-lighting times, including the
# EREV entries (Erev Yom Kippur, Erev Sukkot), so one small call has everything.
# Pass TODAY in Israel time explicitly: runners are UTC, so a bare `date` is still
# yesterday between 00:00 and 03:00 Israel time and would miss the chag.
export TZ=Asia/Jerusalem
CURL_OK=0
FEED=$(curl -sf --max-time 10 --retry 2 \
"https://www.hebcal.com/shabbat?cfg=json&geonameid=281184&M=on&maj=on&gy=$(date +%Y)&gm=$(date +%-m)&gd=$(date +%-d)") || CURL_OK=$?
# Fail CLOSED: a deploy freeze is a safety gate, so an unreachable API means frozen.
if [ "$CURL_OK" -ne 0 ] || [ -z "$FEED" ]; then
echo "frozen=true" >> $GITHUB_OUTPUT
echo "reason=Could not reach hebcal to verify the Shabbat/holiday window; failing closed. Override with force_deploy." >> $GITHUB_OUTPUT
exit 0
fi
# Walk the feed in order, pairing each candle-lighting with the havdalah that follows
# it, and compare in EPOCH SECONDS. hebcal returns offset-aware times (+03:00 summer,
# +02:00 winter); comparing those as strings against a UTC clock is wrong by exactly
# the offset and leaves the gate open for the first hours of every Shabbat.
# A 200 with an unexpected shape must freeze too: pipefail does not propagate out
# of the process substitution below, so an empty item list would silently open the gate.
# A real feed always has a candle-lighting or a havdalah (not always both: the week
# before Rosh Hashana returns only the two candle-lightings), so require one of them.
ITEM_COUNT=$(echo "$FEED" | jq -r '[.items[]? | select(.category=="candles" or .category=="havdalah")] | length' 2>/dev/null || echo 0)
if [ -z "$ITEM_COUNT" ] || [ "$ITEM_COUNT" = "0" ] || [ "$ITEM_COUNT" = "null" ]; then
echo "frozen=true" >> $GITHUB_OUTPUT
echo "reason=hebcal returned no calendar items; failing closed. Override with force_deploy." >> $GITHUB_OUTPUT
exit 0
fi
# Rule 1: any FULL yom tov dated today. A feed requested for the chag itself starts
# that morning, so the previous evening's candle-lighting is outside its range and the
# window walk below cannot see it. `yomtov: true` marks exactly the days on which work
# is prohibited (Yom Kippur, Shavuot, both days of Rosh Hashana, Sukkot I, Shmini
# Atzeret) and is absent on chol hamoed, fast days and Shabbat Shuva.
TODAY=$(date +%Y-%m-%d)
YOMTOV=$(echo "$FEED" | jq -r --arg d "$TODAY" '[.items[] | select(.yomtov == true and (.date | startswith($d)))] | first | .title // empty')
if [ -n "$YOMTOV" ]; then
# The chag ends at havdalah, not at midnight. If today's closing havdalah has
# already passed, fall through to rule 2 rather than freezing until 00:00.
END_TODAY=$(echo "$FEED" | jq -r --arg d "$TODAY" '[.items[] | select(.category=="havdalah" and (.date | startswith($d)))] | first | .date // empty')
END_EPOCH=""
[ -n "$END_TODAY" ] && END_EPOCH=$(date -d "$END_TODAY" +%s 2>/dev/null || echo "")
# No havdalah today, or we could not parse it, means still yom tov: freeze.
if [ -z "$END_EPOCH" ] || [ "$(date +%s)" -le "$END_EPOCH" ]; then
echo "frozen=true" >> $GITHUB_OUTPUT
echo "reason=$YOMTOV (yom tov)" >> $GITHUB_OUTPUT
exit 0
fi
fi
# Rule 2: inside a candle-lighting to havdalah window (Shabbat, and the evening a chag
# begins, which is dated the day BEFORE the yom tov and so is not caught by rule 1).
NOW_EPOCH=$(date +%s)
FROZEN=false
REASON=none
START=""
LABEL="Shabbat"
PENDING="Shabbat"
while IFS=$'\t' read -r CAT WHEN TITLE; do
case "$CAT" in
holiday) PENDING="$TITLE" ;;
candles)
# Keep the EARLIEST unclosed candle-lighting. A two-day yom tov (Rosh Hashana,
# or any chag adjacent to Shabbat) emits TWO candle-lightings before a single
# havdalah; overwriting here would test only the second night and leave the
# gate open for the whole of day one.
if [ -z "$START" ]; then
START="$WHEN"
LABEL="$PENDING"
fi
;;
havdalah)
EE=$(date -d "$WHEN" +%s)
if [ -z "$START" ]; then
# A havdalah with no candle-lighting before it means the window opened
# before this feed's range started, i.e. we are already inside it. This is
# the chag-daytime case (querying on Yom Kippur itself returns the closing
# havdalah but not the previous evening's candles). Freeze.
if [ "$NOW_EPOCH" -le "$EE" ]; then
FROZEN=true
REASON="$PENDING (in progress, ends $WHEN)"
break
fi
else
SE=$(date -d "$START" +%s)
if [ "$NOW_EPOCH" -ge "$SE" ] && [ "$NOW_EPOCH" -le "$EE" ]; then
FROZEN=true
REASON="$LABEL (frozen from $START until $WHEN)"
break
fi
fi
START=""
LABEL="Shabbat"
PENDING="Shabbat"
;;
esac
done < <(echo "$FEED" | jq -r '.items[] | [.category, .date, .title] | @tsv')
# A candle-lighting with no havdalah after it in this feed: the window runs past the
# feed's range. If it has started, we are inside it, so freeze.
if [ "$FROZEN" = false ] && [ -n "$START" ] && [ "$NOW_EPOCH" -ge "$(date -d "$START" +%s)" ]; then
FROZEN=true
REASON="$LABEL (from $START, end not in feed)"
fi
echo "frozen=$FROZEN" >> $GITHUB_OUTPUT
echo "reason=$REASON" >> $GITHUB_OUTPUT
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 21d ago Changed · -69 lines scan A → B 69bb20ace182
- 1mo ago First seen · 696 lines · 193 tokens per session scan A 91be629de66c
github-actions-il is a skill published in the GitHub repository skills-il/developer-tools (13 stars, last pushed 3d ago), licensed MIT. It adds 193 tokens to every session and 9,327 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it B with 2 findings (sends data to an external url, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
chinese-git-workflow
A reference for configuring Git with Chinese code-hosting services such as Gitee, Coding.net, GitLab China, and CNB, including SSH, HTTPS, credentials, CI, and repository mirroring.
atmos-profiles
Atmos profiles: profile directories, --profile and ATMOSPROFILE activation, profile merge behavior, environment switching, and routing profile-specific auth/toolchain/config overrides.
webhook-management
Configure and validate CCAM webhook targets across supported chat, incident, automation, and generic providers. Use when listing provider requirements, creating or updating a target, scoping it to alert rules, sending a test notification, reviewing delivery history, or deleting a target.
monorepo-management
Master monorepo management with Turborepo, Nx, and pnpm workspaces to build efficient, scalable multi-package repositories with optimized builds and dependency management. Use when setting up monorepos, optimizing builds, or managing shared dependencies.
deployment-engineer
Expert deployment engineer specializing in modern CI/CD pipelines, GitOps workflows, and advanced deployment automation. Masters GitHub Actions, ArgoCD/Flux, progressive delivery, container security, and platform engineering. Handles zero-downtime deployments, security scanning, and developer experience optimization.…
ci-fixer
CI failures - read error, minimal fix, verify.