mcpField
H
huawei-cloud-activity-submit

huawei-cloud-activity-submit

github.com/huaweicloudその他5942 回インストール2 日前に更新
リポジトリ

huawei-cloud-activity-submit について

huawei-cloud-activity-submit は、華為クラウドの本番 API を通じてオープン能力チャレンジに作品リンクを提出するスキルです。リンクを検証し、サンドボックスと ECS の手順を順に提出して、成功後に獲得ポイントを伝えます。

主な機能

  1. 01本番 API による作品提出
  2. 02Huawei Cloud AK/SK 認証
  3. 03提出前の手順リンク検証
  4. 04サンドボックス、ECS の順で提出
  5. 05成功後の獲得ポイント通知

活用シーン

  1. 01チャレンジへのサンドボックスデプロイリンク提出
  2. 02サンドボックス完了後の ECS 公開 URL 提出
  3. 03送信前の手順リンク形式の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-activity-submit

インストール後、Claude Code で/huawei-cloud-activity-submitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

submit.mjs
references/
acceptance-criteria.md
iam-policies.md
verification-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 Key
  • X-HW-SK(必須):華為雲 Secret Key
  • X-HW-Security-Token(任意):STS 一時認証情報を使用する場合は必須

ECS ステップの追加リクエストヘッダー(intermediate(ECS 永続デプロイ)の提出時のみ付加):

  • X-HW-PROJECT-ID:ECS の Project ID
  • X-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_link
ECS 永続デプロイ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 が実行)

  1. リンクを収集:サンドボックスステップでは公開サンドボックスドメイン(https://xxx.devbridge-s2.hwtunnel.com。デプロイ後、まず curl -sI <URL> で 200 を確認します)を使用します。ECS ステップでは ECS のパブリック HTML アドレス(http://<EIP>/)を使用します。
  2. 現在のステップを判断:フローに従って判断します。まずサンドボックス(beginner)を提出し、合格後に ECS(intermediate)を提出します。現在完了しているステップのみを提出します。
  3. リンク形式を検証:スクリプトが提出前に自動検証します(サンドボックスドメイン、http(s):// プレフィックスと index.html、説明が 500 文字以下)。検証に失敗すると理由が表示されるので、修正してから再提出します。
  4. 提出を実行:submit.mjs を実行します(下記参照)。引数とステップのフィールドを対応させます(このスキルでは本番環境のインターフェースを固定で使用します)。
  5. ユーザーに結果を報告:
    • 成功: 「提出成功。{サンドボックスデプロイ/ECS 永続デプロイ}に対応するポイント {1000/2000} 点を獲得しました」と伝え、そのステップが完了し、次のステップに進めることを説明します。
    • 失敗:インターフェースから返された message(例:里程碑参数不合法、当前里程碑需提交接口地址、作品链接无效、缺少请求头 X-HW-AK)をそのまま伝えます。
  6. 作品ギャラリーに公開(ユーザーが選択可能。次のセクションを参照):beginner(サンドボックスデプロイ)の提出成功後、作品を開発者作品ギャラリーのチャレンジイベントに公開するか、必ずユーザーに確認します(スクリプトはこの時点で公開状態を false にリセットします)。ユーザーが公開しなかった場合は、intermediate(ECS 永続デプロイ)の提出成功後にもう一度確認します。サンドボックス段階で公開済み(galleryPublished=true)の場合、ECS 段階では再確認しません。公開成功後、node submit.mjs --gallery-published を実行して状態を記録します。
  7. リソースのクリーンアップ(すべてのステップ完了後):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
  1. ユーザーに確認します(question ツールを使用):作品を開発者作品ギャラリーのチャレンジイベントに提出して公開しますか?(ユーザー選択可。明確な同意があった場合のみ続行し、同意がなければ終了します。無理に勧めないでください)
  2. ユーザーの同意後、次を実行します:
    npx skills add https://gitcode.com/Lingxi-HandsOn/gallery.git --skill publish-work-to-gallery -y 2>&1
    
  3. このコマンドは publish-work-to-gallery スキルをインストールします。その後、このスキルの手順に従って、ユーザーがローカルでチャレンジタスクを実施して作成したコード(フロントエンド、バックエンドなどのプロジェクトの実際のディレクトリ)を収集し、開発者作品ギャラリーのチャレンジイベントにプッシュします。公開時はデフォルトで trainingCampId=47d6ba99-fca0-4797-947d-a8776f506df1(チャレンジイベント)を使用します。トレーニングキャンプを再度選択する必要はありません。コードディレクトリ名は固定ではありません。今回ユーザーが実際に生成・使用したディレクトリを基準とし、特定のリポジトリ名を想定しないでください。
  4. ユーザーが同意しない場合はこの手順をスキップし、そのまま終了します。

注意事項:

  • 確認するタイミング: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 を提出すると、そのアカウントに紐付けられます。同じリンクを重複して提出しないでください。

参考資料

コメント