autoship-discord-webhook
Parse GitHub webhook events from Discord channel and route to AutoShip event queue
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Parse GitHub webhook events from Discord channel and route to AutoShip event queue
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Delegate GitHub issue-to-PR orchestration to the AutoShip OpenCode plugin.
Implementer role — writes code to implement features or fixes
AutoShip orchestration for OpenCode-only workers
Display current AutoShip orchestration status — running agents, quota bars, progress, token usage
Interactive setup wizard for AutoShip on OpenCode — model selection, tool detection, concurrency tuning
Post-completion verification pipeline for OpenCode — review, simplify, re-verify, PR creation, CI monitoring, cleanup
| name | autoship-discord-webhook |
| description | Parse GitHub webhook events from Discord channel and route to AutoShip event queue |
| platform | opencode |
| tools | ["Read","Write","Bash"] |
Poll Discord for GitHub webhook embeds, parse into events, write to .autoship/event-queue.json.
last_ts=$(jq -r '.discord_last_poll // empty' .autoship/state.json)
if [[ -z "$last_ts" ]]; then
last_ts=$(date -u -d '5 minutes ago' +%Y-%m-%dT%H:%M:%SZ)
fi
Use Discord MCP:
mcp__discord__fetch_messages(since: "<last_ts>")
Filter to messages with embeds (GitHub webhook deliveries).
Accept messages only if:
webhook_id in .autoship/discord-auth.json under allowed_webhook_idsgithub.com{
"allowed_webhook_ids": ["123456789012345678"]
}
Fail closed if auth file missing.
GitHub webhook embeds:
[repo] Issue #N: <title>github.com/<owner>/<repo>/issues/<N>Extract:
#N| Signal | Event Type |
|---|---|
| Title contains "opened" | new_issue |
| Title contains "closed" | closed_issue |
| Title contains "reopened" | reopened_issue |
| Label mentioned | issue_labeled |
| Body changed | issue_edited |
Priority: 1=urgent, 2=normal, 3=low
jq --arg issue "<N>" --arg type "<event_type>" \
'[.[] | select(.issue == $issue and .type == $type)] | length' \
.autoship/event-queue.json
Skip if identical event queued in last 5 minutes.
{
"type": "new_issue",
"issue": "42",
"priority": 3,
"data": {
"source": "discord-webhook",
"title": "<title>",
"actor": "<username>",
"labels": ["enhancement"]
},
"queued_at": "2026-04-15T12:00:00Z"
}
jq --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
'.discord_last_poll = $ts' \
.autoship/state.json > .autoship/state.tmp && mv .autoship/state.tmp .autoship/state.json
Discord Webhook [<timestamp>]
Fetched: N messages, M webhook embeds
Queued: N events
Skipped: N duplicates