crontap-replace-github-actions-cron — скилл для Claude Code
Переносит запуск GitHub Actions со встроенного cron на диспетчер Crontap с учётом часовых поясов. Помогает избавиться от задержек расписания и дублей.
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a claude-codeЧто делает crontap-replace-github-actions-cron
Скилл переводит запуск пайплайнов GitHub Actions со встроенного блока schedule на вызовы через repository_dispatch. Сами раннеры, логи и шаги остаются внутри репозитория GitHub. Скилл помогает переписать YAML воркфлоу, настроить обработку событий scheduled-run и удалить старый cron-триггер. Это решает проблему дрифта расписания.
Внутри используются функции create_schedule, pause_schedule и resume_schedule. Подключение работает через сервер MCP https://mcp.crontap.com/mcp на любом тарифе сервиса. Для отправки запросов напрямую к REST API нужен тариф Ultra. Заранее подготовьте токен GitHub с ограниченными правами на отправку dispatches в целевой репозиторий.
Какие задачи решает
- устранить задержки и дрифт стандартного cron в GitHub Actions
- настроить запуск воркфлоу по локальному часовому поясу IANA
- перевести триггер расписания на защищённый
repository_dispatch - приостановить периодический запуск пайплайна на время регламентных работ
Примеры запросов агенту
- Замени cron в воркфлоу
.github/workflows/daily.ymlна вызов через Crontap - Настрой запуск пайплайна через Crontap MCP каждый будний день в 09:00 Europe/London
- Поставь на паузу расписание Crontap для нашего репозитория
Как установить crontap-replace-github-actions-cron
1Через Skills CLI (Vercel)
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a claude-code2Вручную: положить файлы
~/.claude/skills/crontap-replace-github-actions-cron/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/crontap-replace-github-actions-cron/
1Через Skills CLI (Vercel)
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a codex2Вручную: положить файлы
.agents/skills/crontap-replace-github-actions-cron/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a cursor2Вручную: положить файлы
.cursor/skills/crontap-replace-github-actions-cron/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Crontap/skills crontap-replace-github-actions-cron2Вручную: положить файлы
.github/skills/crontap-replace-github-actions-cron/SKILL.md1Через Skills CLI (Vercel)
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a gemini-cli2Командой платформы
gemini skills install https://github.com/Crontap/skills --path skills/crontap-replace-github-actions-cronВручную: положить файлы
.devin/skills/crontap-replace-github-actions-cron/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о crontap-replace-github-actions-cron
Как установить crontap-replace-github-actions-cron в Claude Code?
Выполните команду npx skills add Crontap/skills --skill crontap-replace-github-actions-cron -a claude-code. Конфигурация навыка сохранится в ~/.claude/skills/crontap-replace-github-actions-cron/SKILL.md.
Что делает crontap-replace-github-actions-cron?
Скилл помогает заменить внутренний cron GitHub Actions на внешние HTTP-вызовы repository_dispatch из Crontap. Выполнение задач и хранение логов при этом остаются на стороне GitHub.
Какие требования нужны для работы со скиллом?
Нужен fine-grained токен GitHub с правами на dispatch и доступ к Crontap. Подключение через MCP https://mcp.crontap.com/mcp доступно на всех тарифах, а прямой REST API требует подписку Ultra.
Исходный текст
SKILL.md · MIT
---
name: crontap-replace-github-actions-cron
description: >
Replace a GitHub Actions schedule trigger with a Crontap HTTP dispatch while
keeping the workflow, runner, and logs on GitHub. Use when a user needs a
timezone-aware external clock or wants to avoid scheduled-workflow drift.
license: MIT
metadata:
version: "1.0.0"
group: patterns-migrations
order: 9
title: Replace GitHub Actions cron
summary: Replace drifting repository schedules with a protected dispatch endpoint and evidence for every triggered run.
bestFor: Repository dispatch, drift, and timezone-safe triggers
guide: https://crontap.com/blog/github-actions-cron-drift-problem
guideTitle: GitHub Actions cron drift
tools: create_schedule,pause_schedule,resume_schedule
---
# Replace GitHub Actions cron
Crontap sends a repository dispatch request. GitHub still runs the workflow.
## Prerequisites
Before using the required tools, check whether they are available. If any are
missing, stop and offer the user exactly two choices:
1. Connect Crontap MCP at `https://mcp.crontap.com/mcp`. MCP access works on
every Crontap tier.
2. Configure `$CRONTAP_CLIENT_ID` and `$CRONTAP_API_KEY` for the raw API. Raw
API access requires Ultra.
Do not silently choose a path or continue until the user selects one.
- Make the workflow safe to dispatch more than once.
- Create a fine-grained GitHub token restricted to the target repository with
the permission required by the repository dispatch endpoint.
- Store the token in a secure store and plan its expiration and rotation.
- Confirm the desired IANA timezone.
## Change the workflow
Replace the scheduled trigger with manual and repository dispatch triggers:
```yaml
on:
workflow_dispatch:
repository_dispatch:
types: [scheduled-run]
```
Keep `workflow_dispatch` for manual operation. Crontap calls
`repository_dispatch`. Do not leave `on.schedule` enabled after cutover.
## Workflow
1. Commit and deploy the dispatch-capable workflow.
2. Test a repository dispatch with a non-production-safe workflow path.
3. Remove the old `schedule` trigger at the agreed cutover time.
4. Create the Crontap schedule.
5. Verify GitHub returns 204 and one workflow run appears.
6. Pause the Crontap schedule during maintenance or rollback.
## MCP examples
Create the external dispatch:
```json
{
"tool": "create_schedule",
"arguments": {
"url": "https://api.github.com/repos/example-org/example-repo/dispatches",
"text": "every weekday at 09:00",
"timezone": "Europe/London",
"method": "POST",
"headers": {
"Authorization": "Bearer <fine-grained-token-from-secure-store>",
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
"Content-Type": "application/json"
},
"body": {
"event_type": "scheduled-run"
},
"label": "GitHub scheduled run"
}
}
```
Pause:
```json
{
"tool": "pause_schedule",
"arguments": {
"scheduleId": "<schedule-id>"
}
}
```
Resume:
```json
{
"tool": "resume_schedule",
"arguments": {
"scheduleId": "<schedule-id>"
}
}
```
## REST fallback
REST creation requires Ultra API access:
```bash
curl --fail-with-body https://api.crontap.com/v1/schedule \
-X POST \
-H "ClientId: $CRONTAP_CLIENT_ID" \
-H "ApiKey: $CRONTAP_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"url": "https://api.github.com/repos/example-org/example-repo/dispatches",
"interval": "0 9 * * 1-5",
"timezone": "Europe/London",
"verb": "POST",
"headers": {
"Authorization": "Bearer <fine-grained-token-from-secure-store>",
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
"Content-Type": "application/json"
},
"data": {"event_type": "scheduled-run"},
"label": "GitHub scheduled run"
}'
```
## Verification
- Confirm the deployed workflow no longer contains `on.schedule`.
- Confirm `event_type` matches the workflow's dispatch type exactly.
- Verify one Crontap run corresponds to one GitHub workflow run.
- Confirm a non-expired token is scoped only to the required repository and
operation.
## Safety and plan limits
- Never use a broad classic token when a restricted fine-grained token works.
- Avoid top-of-hour assumptions when comparing old GitHub timing evidence.
- Make downstream workflow writes idempotent.
- If the Crontap create call hits a cap or cadence floor, present the returned
four-option ladder and smallest viable option.
## Troubleshooting
- GitHub 401 means the token is invalid or expired.
- GitHub 403 usually means repository access or permissions are insufficient.
- GitHub 404 can intentionally hide a repository the token cannot access.
- GitHub 422 often means the event type or request body is invalid.
- Duplicate runs usually mean both the old schedule trigger and Crontap remain
active.
## References
- [Crontap Agent Skills catalogue](https://crontap.com/skills)
- [GitHub Actions cron drift](https://crontap.com/blog/github-actions-cron-drift-problem)
- [Crontap vs GitHub Actions cron](https://crontap.com/alternatives/github-actions-cron)
- [GitHub repository dispatch API](https://docs.github.com/en/rest/repos/repos#create-a-repository-dispatch-event)
- [Cron troubleshooting](https://crontap.com/guides/cron-troubleshooting)
© Crontap · MIT · Crontap/skills