huawei-cloud-activity-submit について
huawei-cloud-activity-submit は、華為クラウドの本番 API を通じてオープン能力チャレンジに作品リンクを提出するスキルです。リンクを検証し、サンドボックスと ECS の手順を順に提出して、成功後に獲得ポイントを伝えます。
主な機能
- 01本番 API による作品提出
- 02Huawei Cloud AK/SK 認証
- 03提出前の手順リンク検証
- 04サンドボックス、ECS の順で提出
- 05成功後の獲得ポイント通知
活用シーン
- 01チャレンジへのサンドボックスデプロイリンク提出
- 02サンドボックス完了後の ECS 公開 URL 提出
- 03送信前の手順リンク形式の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-activity-submitインストール後、Claude Code で/huawei-cloud-activity-submitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
submit.mjsreferences/acceptance-criteria.mdiam-policies.mdverification-method.md詳細
华为云オープン機能チャレンジ · 作品提出スキル(本番環境)
Agent がイベントの Agent 提出インターフェース(AK/SK 認証)を直接呼び出して成果を提出し(ページ/ブラウザー操作は一切行いません)、提出成功後にユーザーへ該当ステップで獲得したポイントを知らせます。
概要
このスキルでは、Agent が華為雲「オープン機能チャレンジ」(activity_code = open-capability-2026-1024)の Agent 提出インターフェース(AK/SK 認証)を直接呼び出し、イベントで作成した作品リンクを該当ステップに自動提出して、成功後に獲得したポイントを報告します。
主な特徴:
- 純粋な API 呼び出し:ページ/ブラウザー操作は一切行わず、提出インターフェースに直接 POST します。
- 本番環境固定:このスキルは本番環境のインターフェースを固定で使用し、環境を切り替えません。
- 2 ステップを順番に提出:
beginner(サンドボックスデプロイ、1000 点)→intermediate(ECS 永続デプロイ、2000 点)。 - AK/SK 認証:リクエストヘッダー
X-HW-AK/X-HW-SK/X-HW-Security-Tokenで認証し、hcloud CLI に依存しません。 - ECS ステップの追加リクエストヘッダー:
intermediateの提出時にX-HW-PROJECT-ID/X-HW-REGIONを付加します。 - 純粋な Node.js スクリプト:
submit.mjs(Node ≥ 18、外部依存なし)を使用し、KooCLI は使用しません。 - 作品ギャラリーへの公開は任意:サンドボックスデプロイ後は必ず確認します。公開されていない場合は、ECS の後にもう一度確認します。公開済みの場合は再確認しません。
- リソースのクリーンアップ通知:ECS の提出成功後に、従量課金リソースのクリーンアップをユーザーに促します。
使用するタイミング
- ユーザーが「作品/成果/サンドボックスリンクをイベントに提出して」「チャレンジの成果提出を手伝って」「サンドボックスのドメイン/パブリックアドレスを提出して」などと言った場合。
- イベントでサンドボックス作品リンク(フロントエンドサイト)や ECS パブリックアドレスが生成され、該当ステップに提出する必要がある場合。
- 対象はイベント
activity_code = open-capability-2026-1024のみです。
提出インターフェース
| 項目 | 値 |
|---|---|
| ベースアドレス(本番、固定) | https://open-dataset.huaweicloud.com/api/v1/hdopenservice/agent |
| 提出 | POST {base}/submit-activity-work |
フロントエンドページでは
/user/...(SSO ログインセッション)を使用し、Agent では/agent/...(AK/SK リクエストヘッダー)を使用します。両者のリクエストボディとレスポンスは同一です。このスキルでは、本番環境のベースアドレスを固定で使用し、環境を切り替えません。
認証(AK/SK リクエストヘッダー):
X-HW-AK(必須):華為雲 Access KeyX-HW-SK(必須):華為雲 Secret KeyX-HW-Security-Token(任意):STS 一時認証情報を使用する場合は必須
ECS ステップの追加リクエストヘッダー(intermediate(ECS 永続デプロイ)の提出時のみ付加):
X-HW-PROJECT-ID:ECS の Project IDX-HW-REGION:ECS の region(例:cn-north-4)
認証情報の優先順位:コマンドライン引数 > 環境変数(
HW_ACCESS_KEY/HW_SECRET_KEY/HW_SECURITY_TOKEN、HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK/HUAWEICLOUD_SDK_SECURITY_TOKEN、HW_AK/HW_SKにも対応)。認証情報をリポジトリに書き込まないでください。
提出リクエストボディ(Content-Type: application/json、/user/submit-activity-work と同一):
{
"activity_code": "open-capability-2026-1024",
"milestone": "beginner | intermediate",
"work_link": "https://xxx.devbridge-s2.hwtunnel.com",
"api_link": "http://<ECS_EIP>/hc-activity/index.html",
"summary": "作品说明(可选,≤500 字)"
}
ステップに応じたフィールド:
beginner(サンドボックスデプロイ):work_link(サンドボックスサイトのリンク)のみを渡しますintermediate(ECS 永続デプロイ):api_link(ECS パブリックアクセスアドレス、index.htmlを含める必要があります。例:http://<EIP>/hc-activity/index.html)のみを渡します
レスポンス:{ "code": "success", "message": "..." }。code === "success" なら提出成功です。
ステップ、対応するフィールド、検証、ポイント
2 つのステップを順番に提出する必要があります:beginner(サンドボックスデプロイ)→ intermediate(ECS 永続デプロイ)。前のステップに合格してから、次のステップを提出できます。
フィールド/値の対応(重要):バックエンドの
milestoneの値は旧版のままbeginner/intermediateを使用します(ページ上の文言は「サンドボックスデプロイ/ECS 永続デプロイ」に変更済みです)。旧advancedステップは廃止済みで、存在しません。
ページ上のステップ milestoneの値提出フィールド サンドボックスデプロイ beginnerwork_linkECS 永続デプロイ intermediateapi_link
--milestoneは別名も受け付けます:sandbox→beginner、ecs→intermediate(スクリプトが自動で正規化します)。
サンドボックスドメインの正規表現(フロントエンドの SANDBOX_RE と同じ):^https:\/\/[^/]*devbridge-s2\.hwtunnel\.com(\/|$)
| ステップ | milestone | 提出内容 | 検証 | 成功時のポイント |
|---|---|---|---|---|
| サンドボックスデプロイ | beginner | サンドボックスサイトのリンク(work_link) | サンドボックスドメイン | 1000 点(¥100) |
| ECS 永続デプロイ | intermediate | パブリックアクセスアドレス(api_link) | http(s):// で始まり、index.html を含む(例:http://<EIP>/hc-activity/index.html) | 2000 点(¥200) |
操作手順(Agent が実行)
- リンクを収集:サンドボックスステップでは公開サンドボックスドメイン(
https://xxx.devbridge-s2.hwtunnel.com。デプロイ後、まずcurl -sI <URL>で 200 を確認します)を使用します。ECS ステップでは ECS のパブリック HTML アドレス(http://<EIP>/)を使用します。 - 現在のステップを判断:フローに従って判断します。まずサンドボックス(
beginner)を提出し、合格後に ECS(intermediate)を提出します。現在完了しているステップのみを提出します。 - リンク形式を検証:スクリプトが提出前に自動検証します(サンドボックスドメイン、
http(s)://プレフィックスとindex.html、説明が 500 文字以下)。検証に失敗すると理由が表示されるので、修正してから再提出します。 - 提出を実行:
submit.mjsを実行します(下記参照)。引数とステップのフィールドを対応させます(このスキルでは本番環境のインターフェースを固定で使用します)。 - ユーザーに結果を報告:
- 成功: 「提出成功。{サンドボックスデプロイ/ECS 永続デプロイ}に対応するポイント {1000/2000} 点を獲得しました」と伝え、そのステップが完了し、次のステップに進めることを説明します。
- 失敗:インターフェースから返された
message(例:里程碑参数不合法、当前里程碑需提交接口地址、作品链接无效、缺少请求头 X-HW-AK)をそのまま伝えます。
- 作品ギャラリーに公開(ユーザーが選択可能。次のセクションを参照):
beginner(サンドボックスデプロイ)の提出成功後、作品を開発者作品ギャラリーのチャレンジイベントに公開するか、必ずユーザーに確認します(スクリプトはこの時点で公開状態を false にリセットします)。ユーザーが公開しなかった場合は、intermediate(ECS 永続デプロイ)の提出成功後にもう一度確認します。サンドボックス段階で公開済み(galleryPublished=true)の場合、ECS 段階では再確認しません。公開成功後、node submit.mjs --gallery-publishedを実行して状態を記録します。 - リソースのクリーンアップ(すべてのステップ完了後):
intermediate(ECS 永続デプロイ)の提出成功でallCompleted=trueになります。questionツールを使用して、今回のイベントで作成した従量課金リソースをクリーンアップするか、必ずユーザーに確認します(選択肢:すべてクリーンアップ/ECS のみ削除/今回はクリーンアップしない)。ユーザーの選択に従って実行するか、スキップします。スクリプトも成功時の出力でクリーンアップを促します。
スクリプトの使い方
スクリプトはこのスキルのディレクトリにあります:submit.mjs(純粋な Node、Node ≥ 18、追加の依存関係は不要です)。
# 1) 沙箱部署:提交沙箱域名 URL(milestone=beginner)
node submit.mjs --milestone beginner \
--work-link https://abcd1234-3000.devbridge-s2.hwtunnel.com \
--summary "2048 单文件小游戏"
# 2) ECS 持久化部署:提交公网访问地址(milestone=intermediate;链接需含 index.html;带 ECS 的 Project ID / region)
node submit.mjs --milestone intermediate \
--api-link http://<ECS_EIP>/hc-activity/index.html \
--project-id <PROJECT_ID> --region cn-north-4
認証情報はコマンドライン引数または環境変数で指定できます:
# PowerShell
$env:HW_ACCESS_KEY = "<AK>"
$env:HW_SECRET_KEY = "<SK>"
$env:HW_SECURITY_TOKEN = "<使用 STS 临时凭证时填写>" # 可选
# 或直接:node submit.mjs --ak <AK> --sk <SK> [--security-token <token>]
成功時の出力例(実際には複数行の JSON です):
{
"ok": true,
"milestone": "intermediate",
"label": "ECS 持久化部署",
"points": 2000,
"message": "...",
"allCompleted": true
}
提交成功,已获得ECS 持久化部署对应积分 2000 分。
開発者作品ギャラリーのチャレンジイベントへの作品公開(ユーザー選択可)
確認するタイミング:
beginner(サンドボックスデプロイ)の提出成功後は、必ず作品ギャラリーに公開するかユーザーに確認します(スクリプトはこの時点でgalleryPublishedを false にリセットします)。- サンドボックス段階で公開済み(
node submit.mjs --gallery-publishedを実行済み、つまりgalleryPublished=true)の場合、intermediate(ECS 永続化デプロイ)段階では再確認しません。 - サンドボックス段階で未公開(false のまま)の場合、
intermediate(ECS)の提出成功後にもう一度確認します。
公開するかどうかはユーザーが決定します。同意した場合のみ公開し、拒否された場合はスキップします。無理に勧めないでください。公開成功後は**node submit.mjs --gallery-published を実行して状態を記録します**。
このイベントにはデフォルトで直接提出します:作品はデフォルトで作品ギャラリーの「チャレンジイベント」に提出されます。トレーニングキャンプの選択はスキップし、ユーザーにキャンプを選ばせることはありません。
- イベント名:
チャレンジイベントtrainingCampId:47d6ba99-fca0-4797-947d-a8776f506df1
- ユーザーに確認します(
questionツールを使用):作品を開発者作品ギャラリーのチャレンジイベントに提出して公開しますか?(ユーザー選択可。明確な同意があった場合のみ続行し、同意がなければ終了します。無理に勧めないでください) - ユーザーの同意後、次を実行します:
npx skills add https://gitcode.com/Lingxi-HandsOn/gallery.git --skill publish-work-to-gallery -y 2>&1 - このコマンドは
publish-work-to-galleryスキルをインストールします。その後、このスキルの手順に従って、ユーザーがローカルでチャレンジタスクを実施して作成したコード(フロントエンド、バックエンドなどのプロジェクトの実際のディレクトリ)を収集し、開発者作品ギャラリーのチャレンジイベントにプッシュします。公開時はデフォルトでtrainingCampId=47d6ba99-fca0-4797-947d-a8776f506df1(チャレンジイベント)を使用します。トレーニングキャンプを再度選択する必要はありません。コードディレクトリ名は固定ではありません。今回ユーザーが実際に生成・使用したディレクトリを基準とし、特定のリポジトリ名を想定しないでください。 - ユーザーが同意しない場合はこの手順をスキップし、そのまま終了します。
注意事項:
- 確認するタイミング:
beginner(サンドボックスデプロイ)の提出成功後は必ず確認します。ユーザーが未公開の場合は、intermediate(ECS 永続化デプロイ)の提出成功後にもう一度確認します。サンドボックス段階で公開済み(galleryPublished=true)の場合は、ECS 段階では再確認しません(操作手順の第 6 ステップおよび上記の「確認するタイミング」と同じです)。 - ギャラリーに提出するかどうかは完全にユーザーが決定します。ユーザーが拒否した場合はスキップし、ユーザーに代わって決定してはいけません。
- 実行前に、チャレンジタスクで実際に生成されたコードディレクトリ(フロントエンド、バックエンドのプロジェクト、ディレクトリ名は固定ではありません)をユーザーに確認するか、特定してください。関連するコードのみをプッシュし、無関係なファイルを含めないようにしてください。ユーザーに指定してもらうか、今回のワークスペースで生成されたプロジェクトディレクトリをスキャンして特定できます。
npx skills addにネットワーク接続またはインストールが必要な場合、失敗した際はエラーを正確に伝え、再試行するかどうかユーザーに確認してください。
前提条件
- Node.js ≥ 18:このスキルの提出スクリプト
submit.mjsはネイティブのfetch()を使用するため、Node 18 以降が必要です。 - Huawei Cloud の AK/SK:API リクエストヘッダーの認証に使用する有効な Access Key と Secret Key が必要です。STS の一時的な SecurityToken も使用できます。
- 認証情報の優先順位:コマンドライン引数 > 環境変数(
HW_ACCESS_KEY/HW_SECRET_KEY/HW_SECURITY_TOKEN。HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK/HW_AK/HW_SKにも対応)。
- 認証情報の優先順位:コマンドライン引数 > 環境変数(
- ECS 手順の追加パラメーター:
intermediate(ECS 永続化デプロイ)の提出時には、--project-idと--region(または環境変数HW_PROJECT_ID/HW_REGION、または hcloud の設定)が必要です。 - ネットワークアクセス:提出 API のベース URL(
https://open-dataset.huaweicloud.com)にアクセスできる必要があります。 - 作品のリンク:
- サンドボックスデプロイ手順(
beginner):デプロイ済みのサンドボックスドメインが必要です(形式:https://xxx.devbridge-s2.hwtunnel.com)。 - ECS 永続化デプロイ手順(
intermediate):ECS のパブリックアクセス URL が必要です(index.htmlを含む。例:http://<EIP>/hc-activity/index.html)。
- サンドボックスデプロイ手順(
- KooCLI は使用しません:このスキルは HTTP リクエストヘッダーを使って認証し、イベント API を呼び出します。hcloud CLI に依存しないため、
--cli-regionパラメーターは不要です。
注意事項
- API の呼び出しのみ行い、ページを操作しないでください:ブラウザーを操作したり、ページ上のフォームのクリックをシミュレートしたりしないでください。
- 環境は固定で、切り替えません:このスキルは常に本番環境を使用します。
--env/--baseなどの環境パラメーターを渡しても無視され(エラーにはならず、効果もありません)、ほかの環境には切り替わりません(テスト環境ではhuawei-activity-submit-testを使用してください)。 - 順番に提出:手順は
beginner(サンドボックス)→intermediate(ECS)の順に提出する必要があります。API は順序を検証します。 - ECS 手順の追加リクエストヘッダー:
intermediate(ECS 永続化デプロイ)の提出時には、X-HW-PROJECT-ID(ECS の Project ID)とX-HW-REGION(ECS の region)を含める必要があります。スクリプトは--project-id/--region(または環境変数HW_PROJECT_ID/HW_REGION、または hcloud の設定)から値を取得します。値がない場合はエラーになります。 - サンドボックスドメインの厳密な検証:
beginner手順のリンクは、https://xxx.devbridge-s2.hwtunnel.com形式のサンドボックスドメインである必要があります。intermediate手順で提出するパブリックアドレスはhttp(s)://で始まる必要があります(例:http://<EIP>/hc-activity/index.html)。index.htmlがない場合、スクリプトが自動的に補完します。 - 認証情報の安全性:AK/SK(および一時的な認証情報の SecurityToken)は今回のセッションでのみ使用してください。リポジトリに書き込んだり、バージョン管理にコミットしたりしないでください。コマンドライン履歴に平文で残らないよう、環境変数を使って渡すことを推奨します。
- SK の平文送信について:
X-HW-SKをリクエストヘッダーで平文送信するのは、イベント API 自体の仕様です(/agent/*API では AK/SK ヘッダーが必要です)。HTTPS による通信の暗号化に依存しています。SK をリポジトリやログに書き込んだり、外部に共有したりしないでください。 - 提出は再利用できません:同じ URL を提出すると、そのアカウントに紐付けられます。同じリンクを重複して提出しないでください。
参考資料
- references/iam-policies.md — IAM 権限の説明(このスキルは AK/SK リクエストヘッダーで認証し、IAM ポリシーには依存しません)
- references/verification-method.md — 検証方法(提出機能をエンドツーエンドで検証する方法)
- references/acceptance-criteria.md — 受け入れ基準(本番環境で使用できることを確認するための客観的な条件)