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