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