asc-plugins について
asc-pluginsは、App Store Connectのライフサイクルイベントを自動化するプラグイン管理スキルです。開発者はビルドのアップロードやバージョン提出に反応する実行可能なプラグインを導入し、コマンドラインからテスト、有効化、無効化できます。
主な機能
- 01ローカルディレクトリからのプラグイン導入
- 02ビルドおよびバージョンのイベント処理
- 03プラグインの一覧、実行、有効化、無効化
- 04イベントデータの実行ファイルへの受け渡し
活用シーン
- 01ビルドのアップロード時の通知送信
- 02バージョン提出後のカスタム自動化
- 03ライフサイクルイベントに対するプラグインのテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tddworks/ asc-cli-skills --skill asc-pluginsインストール後、Claude Code で/asc-pluginsを入力して読み込まれたか確認します。
詳細
asc plugins
ASC のライフサイクルイベントを処理する実行可能なプラグインを ~/.asc/plugins/<name>/ にインストールすると、ビルドのアップロード時やバージョンの申請時に、Slack メッセージの送信、Telegram への投稿、Webhook の呼び出し、または任意のカスタム自動化を実行できます。
コマンド
list — インストール済みのすべてのプラグインを表示
asc plugins list [--pretty]
install — ローカルディレクトリからインストール
asc plugins install <path> # directory must contain manifest.json + run executable
uninstall
asc plugins uninstall --name <name>
enable / disable
asc plugins enable --name <name>
asc plugins disable --name <name> # leaves plugin installed, just suppressed
run — プラグインを手動でテスト
asc plugins run --name <name> --event <event> \
[--app-id <id>] [--version-id <id>] [--build-id <id>]
イベント:build.uploaded · version.submitted · version.approved · version.rejected
プラグインプロトコル
次のファイルを含むディレクトリがプラグインです。
| ファイル | 用途 |
|---|---|
manifest.json | 名前、バージョン、説明、購読するイベント |
run | 実行可能ファイル(任意の言語、chmod +x) |
stdin → プラグイン:
{
"event": "build.uploaded",
"payload": {
"event": "build.uploaded",
"appId": "123456789",
"buildId": "upload-42",
"timestamp": "2026-03-01T12:00:00Z",
"metadata": {}
}
}
プラグイン → stdout:
{"success": true, "message": "Slack notification sent"}
終了コード 0 は成功を示します。ゼロ以外の場合は stderr に記録されますが、ほかのプラグインには影響しません。
manifest.json
{
"name": "slack-notify",
"version": "1.0.0",
"description": "Send Slack notifications for App Store events",
"author": "Your Name",
"events": ["build.uploaded", "version.submitted"]
}
一般的なワークフロー — Slack プラグインの作成とインストール
# 1. Create plugin directory
mkdir ~/slack-notify
cat > ~/slack-notify/manifest.json <<'EOF'
{
"name": "slack-notify",
"version": "1.0.0",
"description": "Slack notifications",
"events": ["build.uploaded", "version.submitted"]
}
EOF
cat > ~/slack-notify/run <<'EOF'
#!/bin/bash
INPUT=$(cat)
EVENT=$(echo "$INPUT" | python3 -c "import sys,json; print(json.load(sys.stdin)['event'])")
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-type: application/json' \
--data "{\"text\":\":rocket: ASC event: $EVENT\"}" > /dev/null
echo '{"success": true, "message": "Sent to Slack"}'
EOF
chmod +x ~/slack-notify/run
# 2. Install
asc plugins install ~/slack-notify
# 3. Test (dry-run before uploading a real build)
asc plugins run --name slack-notify --event build.uploaded \
--app-id 123456789 --build-id test-build --pretty
# 4. Get next build number and upload — plugin fires automatically
BUILD_NUMBER=$(asc builds next-number --app-id 123456789 --version 1.0.0 --platform ios)
asc builds upload --app-id 123456789 --file MyApp.ipa --version 1.0.0 --build-number $BUILD_NUMBER
# 5. Manage
asc plugins list
asc plugins disable --name slack-notify
asc plugins enable --name slack-notify
asc plugins uninstall --name slack-notify
自動発火イベント
| コマンド | 発行されるイベント |
|---|---|
asc builds upload(成功時) | build.uploaded — appId、buildId を含む |
asc versions submit(成功時) | version.submitted — appId、versionId を含む |
個々のプラグインの失敗は stderr に記録され、ほかのプラグインやメインコマンドの出力を妨げることはありません。
JSON 出力
{
"data": [
{
"affordances": {
"disable": "asc plugins disable --name slack-notify",
"listPlugins": "asc plugins list",
"run.build.uploaded": "asc plugins run --name slack-notify --event build.uploaded",
"run.version.submitted": "asc plugins run --name slack-notify --event version.submitted",
"uninstall": "asc plugins uninstall --name slack-notify"
},
"author": "Your Name",
"description": "Send Slack notifications for App Store events",
"executablePath": "~/.asc/plugins/slack-notify/run",
"id": "slack-notify",
"isEnabled": true,
"name": "slack-notify",
"subscribedEvents": ["build.uploaded", "version.submitted"],
"version": "1.0.0"
}
]
}
無効なプラグインには、"disable" の代わりに "enable" の操作項目が表示されます。
プラグインの保存場所
~/.asc/plugins/
└── slack-notify/
├── manifest.json
├── run ← executable (chmod +x)
└── .disabled ← optional: present = disabled
関連項目
- 機能の詳細:
docs/features/plugins.md - CAEOAS:
asc plugins listのレスポンスにあるaffordances.listPluginsに従ってください
コメント
Markdown 対応