mcpField
O
ops

ops

github.com/adobeクラウド・DevOps316768 回インストール今日更新
リポジトリ

ops について

AEM Edge Delivery Services プロジェクトの管理者向けに、自然言語で運用タスクを実行するスキルです。コンテンツや設定、アクセス権、インデックスなどを扱い、機密操作には認証と確認手順を設けています。

主な機能

  1. 01自然言語による管理コマンド
  2. 02コンテンツとキャッシュの操作
  3. 03コード、インデックス、サイトマップ管理
  4. 04ユーザー、ジョブ、サイト設定
  5. 05シークレット、APIキー、トークン管理
  6. 06破壊的操作の確認

活用シーン

  1. 01コンテンツパスのプレビューや公開
  2. 02サイトユーザーとロールの管理
  3. 03ジョブ、ログ、インデックス済みページの確認
  4. 04設定や認証情報の更新

インストール

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

$npx skills add https://github.com/adobe/skills --skill ops

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

同梱ファイル

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

.releaserc.json
CHANGELOG.md
package.json
README.md
resources/
apikeys.md
cache.md
code.md
config-api.md
config.md
content.md
da.md
errors.md
index-config.md
index.md
jobs.md
logs.md
pages.md
profiles.md
secrets.md
security.md
sensitive.md
sitemap-config.md
sitemap.md
sites.md
snapshots.md
tokens.md
users.md
versioning.md

詳細

Edge Delivery Services の管理操作

自然言語コマンドを使用して、AEM Edge Delivery Services プロジェクトの管理操作を実行します。

クイックリファレンス

カテゴリ例
コンテンツpreview /path、publish /path、unpublish /path、status /path
キャッシュclear cache /path、force clear cache
コードsync code、deploy code
インデックスreindex /path、remove from index
サイトマップgenerate sitemap
スナップショットcreate snapshot X、publish snapshot X、approve snapshot X
ログshow logs、show logs last hour
ユーザーadd user@email as author/publish/develop、remove admin user@email、who am i
ジョブlist jobs、job status X、stop job X
サイトlist sites、switch to site-X、use branch feature-X
設定show org config、show site config、update robots.txt
シークレットlist secrets、create secret、delete secret
API キーlist API keys、create API key、revoke API key
トークンlist tokens、create token、revoke token
プロファイルshow profile config、create profile、delete profile
インデックス設定show index config、update index config (query.yaml)
サイトマップ設定show sitemap config、update sitemap config (sitemap.yaml)
バージョン管理list versions、restore version、rollback config
ページlist pages、list all pages、show indexed pages
DA(ドキュメント作成)da list、da source /path、da copy、da move、da delete、da config、da update config、da versions、da create version、da upload media、da auth

コミュニケーションガイドライン

  • どのような応答でも、Edge Delivery Services の略語として「EDS」を絶対に使用しないでください
  • 常に正式名称「Edge Delivery Services」または「AEM Edge Delivery Services」を使用してください
  • 操作が失敗した場合は、明確で実行可能なエラーメッセージを表示してください
  • 破壊的な操作を実行する前に確認してください。resources/security.md を参照してください

ウェルカムメッセージ

ユーザーが特定のコマンドを指定せずにスキルを呼び出した場合(例:/ops のみ、または「opsについて教えて」)、次を表示します。

Edge Delivery Services Operations

Quick commands to try:
  list pages       - Show all indexed pages
  who am i         - Check your user profile
  list sites       - Show available sites
  show site config - View site configuration
  preview /path    - Preview a content path
  show logs        - View recent activity

For the full command list: type help, /ops help, or what can you do?

クロスプラットフォームに関する注意

シェルコマンドは POSIX 互換の構文を使用します(macOS/Linux で動作します)。Windows では、Git Bash または WSL をそのまま使用できます。エージェントはユーザーの環境に合わせて構文を調整してください。


インテントルーター

Step 0:組織とサイトを取得する(最初に必ず実行)

以前に保存した組織とサイトを ~/.aem/ops-config.json で確認します。

eval $(node -e "
  const fs = require('fs');
  try {
    const c = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ops-config.json', 'utf8'));
    console.log('ORG=' + JSON.stringify(c.org || ''));
    console.log('SITE=' + JSON.stringify(c.site || ''));
  } catch(e) {
    console.log('ORG='); console.log('SITE=');
  }
")
echo "org=${ORG:-NOT SET} site=${SITE:-NOT SET}"

ORG と SITE の両方が設定されている場合は、ユーザーに確認します。

"以前に使用した値:org={ORG}、site={SITE}。これらを引き続き使用しますか?使用しない場合は、別のサイト URL を指定してください(例:https://main--mysite--myorg.aem.page/)。"

  • ユーザーが確認した場合 → 続行します
  • ユーザーが URL を指定した場合 → URL から org と site を解析し、新しい値を保存します

ORG または SITE が空の場合は、次のように尋ねます。

"操作を実行するサイトのプレビュー URL またはライブ URL を入力してください(例:https://main--mysite--myorg.aem.page/)。"

URL から org と site を解析します。

URL="$USER_INPUT"
if echo "$URL" | grep -q '\.aem\.page\|\.aem\.live'; then
  HOST_PART=$(echo "$URL" | cut -d'/' -f3 | cut -d'.' -f1)
  ORG=$(echo "$HOST_PART" | awk -F'--' '{print $NF}')
  SITE=$(echo "$HOST_PART" | awk -F'--' '{print $(NF-1)}')
  echo "Parsed from URL: org=$ORG site=$SITE"
fi

ユーザーが有効な .aem.page または .aem.live URL 以外を指定した場合は、もう一度尋ねます。

org と site を保存します。

mkdir -p "${HOME}/.aem"
node -e "
  const fs = require('fs');
  const p = process.env.HOME + '/.aem/ops-config.json';
  let c = {};
  try { c = JSON.parse(fs.readFileSync(p, 'utf8')); } catch(e) {}
  c.org = '${ORG}';
  c.site = '${SITE}';
  fs.writeFileSync(p, JSON.stringify(c, null, 2));
"

org/site には、~/.aem/ops-config.json またはユーザーから直接入力された値のみを使用します。git remote、fstab.yaml、フォルダー名やリポジトリ名から推測しないでください。

org と site の両方が確認されるまで、続行しないでください。

Step 1:認証する(必須)

API 呼び出しを行う前に必ず、認証トークンがあるか確認します。

AUTH_TOKEN=$(node -e "
  const fs = require('fs');
  try {
    const t = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ims-token.json', 'utf8'));
    if (t.authToken && t.authTokenExpiry > Math.floor(Date.now()/1000) + 60) {
      process.stdout.write(t.authToken);
    }
  } catch (e) {}
")
echo "auth=${AUTH_TOKEN:+set}"

AUTH_TOKEN が空の場合は、続行する前に認証スキルを呼び出します。

Skill({ skill: "aem-project-management:auth" })

すべての admin.hlx.page API 呼び出しに、-H "x-auth-token: ${AUTH_TOKEN}" ヘッダーを使用します。

機密性の高いエンドポイントや破壊的な操作については、続行する前に resources/security.md と resources/sensitive.md を読んでください。

ステップ 2:完全な設定を読み込み、ロールを確認する
eval $(node -e "
  const fs = require('fs');
  try {
    const c = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ops-config.json', 'utf8'));
    console.log('ORG=' + JSON.stringify(c.org || ''));
    console.log('SITE=' + JSON.stringify(c.site || ''));
    console.log('REF=' + JSON.stringify(c.ref || 'main'));
  } catch(e) {
    console.log('ORG='); console.log('SITE='); console.log('REF=main');
  }
")
AUTH_TOKEN=$(node -e "
  const fs = require('fs');
  try {
    const t = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ims-token.json', 'utf8'));
    process.stdout.write(t.authToken || '');
  } catch (e) {}
")
echo "Config: org=$ORG site=$SITE ref=$REF auth=${AUTH_TOKEN:+set}"

認証を確認し、ユーザーの本人情報を記録するため、プロフィールを取得します。

PROFILE_RESPONSE=$(curl -s -w "\n%{http_code}" \
  -H "x-auth-token: ${AUTH_TOKEN}" \
  "https://admin.hlx.page/profile")
HTTP_CODE=$(echo "$PROFILE_RESPONSE" | tail -n1)
PROFILE=$(echo "$PROFILE_RESPONSE" | sed '$d')

if [ "$HTTP_CODE" = "401" ]; then
  echo "Auth token expired. Need to re-authenticate..."
  echo "REAUTH_REQUIRED"
  exit 1
elif [ "$HTTP_CODE" != "200" ]; then
  echo "Failed to fetch profile (HTTP $HTTP_CODE). Check network/API status."
  exit 1
fi

eval $(echo "$PROFILE" | node -e "
  const d = require('fs').readFileSync(0,'utf8');
  try {
    const p = JSON.parse(d).profile || {};
    console.log('USER_EMAIL=' + JSON.stringify(p.email || ''));
    console.log('USER_NAME=' + JSON.stringify(p.name || ''));
  } catch(e) { console.log('USER_EMAIL=\"\"'); console.log('USER_NAME=\"\"'); }
")

echo "Authenticated as: $USER_EMAIL ($USER_NAME)"

REAUTH_REQUIRED が返された場合は、認証スキルを呼び出して再試行します。

サイト上でのユーザーのロールを確認するには、サイトのアクセス設定を確認します。

curl -s -H "x-auth-token: ${AUTH_TOKEN}" \
  "https://admin.hlx.page/config/${ORG}/sites/${SITE}.json"

操作で 403 が返された場合は、必要なロールをユーザーに伝えます。

権限必要なロール
プレビューbasic_author、author、publish、または admin
ライブ環境への公開basic_publish、publish、または admin
公開の取り消しpublish または admin
コードの同期develop または admin
設定の読み取りconfig、config_admin、または admin
設定の書き込みconfig_admin または admin
スナップショットの管理author、publish、または admin

今後使用するため、email を ~/.aem/ops-config.json に保存します。

サイトやその他の値が不足している場合は、resources/config.md を読みます。

ステップ 3:意図に応じて振り分ける
ユーザーの意図リソースモジュール
プレビュー、公開、公開の取り消し、ステータス、プレビューの削除resources/content.md
キャッシュ、パージ、キャッシュのクリア、無効化resources/cache.md
コードの同期、コードのデプロイ、コードの更新resources/code.md
再インデックス、インデックス、インデックスからの削除、検索resources/index.md
サイトマップ、サイトマップの生成resources/sitemap.md
スナップショット、ステージング済みリリース、バンドルresources/snapshots.md
ログ、監査、アクティビティresources/logs.md
ユーザー、アクセス、権限、自分のユーザー情報、ユーザーの追加、ユーザーの削除resources/users.md
ジョブ、一括操作、ジョブの停止resources/jobs.md
サイト、ブランチ、切り替え、サイト一覧resources/sites.md
組織設定、サイト設定、robots.txtresources/config-api.md
シークレット、シークレットの作成、シークレットの削除resources/secrets.md
API キー、apikey、キーの作成、キーの取り消しresources/apikeys.md
トークン、アクセストークンresources/tokens.md
プロフィール設定、プロフィールの設定resources/profiles.md
インデックス設定、helix-index、検索設定resources/index-config.md
サイトマップ設定、helix-sitemap、サイトマップルールresources/sitemap-config.md
バージョン、履歴、ロールバック、復元resources/versioning.md
ページ、ページ一覧、インデックス済みページ、すべてのページresources/pages.md
da、da の一覧、da のソース、da のコピー、da の移動、da の削除、da の設定、da のバージョンresources/da.md
破壊的操作、確認が必要な操作resources/security.md
機密性の高いエンドポイント(メールアドレス、認証情報、API キー)resources/sensitive.md
ステップ 4:リソースを読み、実行する
  1. resources/ から適切なリソースファイルを読みます
  2. そのリソースの指示に従います
  3. 設定を更新する場合:必ず最初に現在の設定を GET で取得し、変更する前にユーザーに表示します
  4. コードを同期する場合:同期する前に必ず repoless のステータスを確認します(code.md を参照)
  5. 破壊的操作を行う場合:resources/security.md を読み、確認プロトコルに必ず従います(例外なし。操作を述べ、影響を説明し、「yes/no」と尋ね、「yes」の後にのみ実行します)
  6. API 呼び出しを実行します
  7. 以下の完了基準に従って応答を処理します
完了基準
HTTP レスポンス意味必須の対応
200/201成功完全な URL(https://{ref}--{site}--{org}.aem.page{path})とともに結果を表示します
202非同期ジョブを開始ジョブ名を伝え、進捗を追跡するには check job status {jobName} と入力するよう案内します
204成功(レスポンス本文なし)「{path} の {action} が完了しました」と確認します
4xx/5xxエラーAPI エラーをそのまま表示し、resources/errors.md に従って解決策を提案します

成功を報告する前に:

  • コンテンツ操作の場合:該当する場合はプレビュー URL とライブ URL の両方を含めます
  • 一括操作の場合:ジョブが完了するまでは「公開しました」や「プレビューしました」と言わず、「ジョブを開始しました」と伝えます
  • 破壊的操作の場合:何が削除され、何が残っているかを確認します

URL 解析ヘルパー

ユーザーが組織/サイト/パスの値を個別に指定せず、AEM URL を指定した場合:

# Pattern: https://{ref}--{site}--{org}.aem.page{path}
URL="$USER_INPUT"
if echo "$URL" | grep -q '\.aem\.page\|\.aem\.live'; then
  DOMAIN=$(echo "$URL" | cut -d'/' -f3)
  HOST_PART=$(echo "$DOMAIN" | cut -d'.' -f1)
  REF=$(echo "$HOST_PART" | awk -F'--' '{print $1}')
  ORG=$(echo "$HOST_PART" | awk -F'--' '{print $NF}')
  SITE=$(echo "$HOST_PART" | awk -F'--' '{
    r=""; for(i=2;i<NF;i++) r=(r==""?"":r"--")$i; print r
  }')
  URL_PATH=$(echo "$URL" | sed 's|https://[^/]*||')
  URL_PATH=${URL_PATH:-/}
  echo "Parsed from URL: org=$ORG site=$SITE ref=$REF path=$URL_PATH"
fi

例:uat--hmns-uat-kw--alshaya-axp.aem.page → ref=uat、site=hmns-uat-kw、org=alshaya-axp。


前提条件

  1. Admin Service へのオンボーディング済み — プロジェクトに admin.hlx.page へのアクセス権が必要です
  2. ユーザーがアカウントを持っている — 認証に必要です(フェデレーションログインに対応)
  3. ユーザーにサイトロールがある — サイト設定(access.admin.role)で定義されるロールです。ロールは 8 種類あります:admin、author、publish、develop、basic_author、basic_publish、config、config_admin。ユーザーにロールがない場合、API は 403 を返します。
  4. ネットワークアクセス — admin.hlx.page に接続できること

ヘルプレスポンス

ユーザーがコマンド一覧を求めた場合(トリガー:help、what can you do?、/ops help、list commands):

Content Operations:
  preview /path          - Update preview
  publish /path          - Publish to live
  unpublish /path        - Remove from live
  status /path           - Check preview/live status

Cache Operations:
  clear cache /path      - Purge CDN cache
  force clear cache      - Force purge

Code Operations:
  sync code              - Deploy latest code

Index Operations:
  reindex /path          - Re-index for search

Sitemap:
  generate sitemap       - Create sitemap.xml

Snapshots:
  create snapshot {name} - Create staged release
  publish snapshot {name}- Publish all in snapshot

Logs:
  show logs              - View recent logs
  show logs last hour    - Filtered by time

Users:
  add user@email as role - Grant access
  remove role user@email - Revoke access
  who am i               - Current user

Jobs:
  list jobs              - Show bulk operations
  stop job {name}        - Cancel job

Sites:
  list sites             - Show all sites
  switch to site-x       - Change active site
  use branch feat-x      - Set branch

Config:
  show org config        - View org settings
  show site config       - View site settings
  update robots.txt      - Modify crawler rules

Secrets:
  list secrets           - Show secrets
  create secret {name}   - Add new secret
  delete secret {name}   - Remove secret

API Keys:
  list API keys          - Show API keys
  create API key {name}  - Generate new key
  revoke API key {id}    - Delete key

Profiles:
  show profile config    - View profile settings
  create profile {id}    - Create profile config
  delete profile {id}    - Remove profile config

Index Config:
  show index config      - View query.yaml
  update index config    - Modify indexing rules

Sitemap Config:
  show sitemap config    - View sitemap.yaml
  update sitemap config  - Modify sitemap rules

Versioning:
  list versions          - Show config history
  restore version {id}   - Rollback to version

Pages:
  list pages             - Show all indexed pages
  list pages /blog       - Filter by path prefix

Document Authoring (DA):
  da auth                - Authenticate with DA
  da list                - List DA organizations
  da list /path          - List files in DA path
  da source /path        - Get file content from DA
  da copy /src to /dest  - Copy file/folder in DA
  da move /src to /dest  - Move/rename in DA
  da delete /path        - Delete from DA
  da upload /path        - Upload content to DA
  da upload media /path  - Upload image/media to DA
  da config              - View DA site config
  da update config       - Update DA site config
  da versions /path      - List file versions
  da create version      - Create labeled version snapshot
  da restore version X   - Restore a previous version
  da preview /path       - Preview DA content
  da publish /path       - Publish DA content

コメント