kuroco-admin-api
Kuroco Admin API Skill
概要
Kuroco管理API(admin_api)を kuroco-admin CLIで操作するスキル。
admin_apiの5つのモード:
- whoami: セッション情報の取得 — member_id, name, group_ids を返す
- discover: 利用可能なモジュール・コントローラの探索
- schema: コントローラ/サービスのリクエスト・レスポンススキーマ取得
- advise: 自然言語でやりたいことを伝えると、呼ぶべきAPIと手順をAIが回答
- execute: APIの実行(GET/POST) —
--columnsでレスポンスカラム選択可能
認証方式: kuroco-admin login でセッションCookieを ~/.kuroco-admin/cookies.txt に永続化。以降のコマンドは自動的にCookieを送信。
前提条件:
- Bun ランタイムがインストール済み
kuroco-adminCLI がビルド済みまたはPATHに追加済みkuroco-admin login --url <管理画面URL>でログイン済み- すべての操作はログイン中ユーザーの権限で実行される
最小操作フロー(読み取り: 2-3回、書き込み: 3-4回の tool call):
Bash: 認証チェック(kuroco-admin whoami --json)Bash: API構造把握(kuroco-admin discover --jsonまたはkuroco-admin advise "やりたいこと" --json)- (書き込み時)
Bash: スキーマ取得(kuroco-admin help topics/topics_edit --json)Bash: API実行(kuroco-admin exec ...)advise が最も効率的。 やりたいことを自然言語で伝えるだけで、呼ぶべきAPI・手順・パラメータをAIが回答する。mt/ctが不明な場合はまず advise を使う。
セットアップ
インストール
# CLI ソースディレクトリ
cd /path/to/admin_cli
# ビルド(スタンドアロンバイナリ)
bun build --compile kuroco-admin.ts --outfile kuroco-admin
# PATHに追加(任意)
cp kuroco-admin /usr/local/bin/
ログイン
kuroco-admin login --url https://example.g.kuroco-mng.app
# → メールアドレスとパスワードを対話的に入力
# → ~/.kuroco-admin/config.json と cookies.txt が保存される
操作フロー
すべてのAPI操作はこのフローに従うこと。
Step 1: 認証チェック
kuroco-admin whoami --json
- 成功(exit 0) →
{"success":true,"data":{"member_id":...}}が返る → Step 2 へ - 失敗(exit 2) → セッション切れ。
kuroco-admin login --url <URL>で再ログイン
Step 2: API構造把握
目的に応じて3つの方法を使い分ける:
方法A: advise(AI支援、推奨)
やりたいことを自然言語で伝えると、呼ぶべきAPIと手順をAIが回答:
kuroco-admin advise "記事を新しく作成したい" --json
レスポンスの steps にmt/ct/http_method/mode/endpointが含まれる。endpoint と api_spec はシステム自動生成(ハルシネーションなし)。summary, description, body_example はAI生成。
方法B: discover(モジュール・コントローラ一覧)
# 全モジュール一覧
kuroco-admin discover --json
# 特定モジュールのコントローラ一覧
kuroco-admin discover --mt topics --json
方法C: help(スキーマ取得)
特定コントローラのリクエスト/レスポンススキーマ:
kuroco-admin help topics/topics_edit --json
使い分け:
方法 用途 advise(推奨) やりたいことからAPI手順をAIが提案(mt/ctが不明な場合) discover プログラム的にモジュール/コントローラを列挙 help 特定コントローラのフィールド定義・型・必須項目を確認
Step 3: スキーマ取得(書き込み操作では必須)
書き込み操作(INSERT/UPDATE)では必ずスキーマを取得してフィールド構造を確認:
kuroco-admin help topics/topics_edit --json
レスポンスはJSON Schema形式。data.request.properties にフィールド定義、data.request.required に必須フィールドが格納される。
ext_colを含むスキーマが必要な場合:
help コマンドでは topics_group_id を指定できないため、exec で直接取得:
kuroco-admin exec --param MODE=schema --mt topics --ct topics_edit --param topics_group_id=99 --json
注意:
topics_group_idを省略すると汎用フィールドのみ(ext_colが含まれない)topics_group_idを指定するとブロックエディタ・拡張項目のフィールド名(ext_1,ext_14等)、型、必須フラグが取得できる- list系コントローラ(
topics_list等)はスキーマが空を返すため、書き込み用コントローラ(topics_edit)を指定すること- レスポンスの
x-kuroco-typeでフィールドの種類(wysiwyg,json,checkbox,file等)がわかる
Step 4: API実行
認証確認・構造把握が完了したら、API実行パターンに従ってAPIを実行する。
Step 5: 認証失敗・セッション切れ対応
exit code 2(AUTH_ERROR / SESSION_EXPIRED / LOGIN_REQUIRED)が返った場合:
- ユーザーに再ログインが必要な旨を伝える
kuroco-admin login --url <URL>を実行- ログイン後に再度操作
複数ステップの操作中に認証エラーが発生した場合:
- 即座に操作を停止
- どこまで成功したかをユーザーに報告
- 再ログインを案内
- 再認証後、未完了の操作から再開
API実行パターン
パラメータ形式
kuroco-admin exec では module/controller のショートハンド形式、または --mt/--ct 個別指定が使える。
| パラメータ | 説明 | 例 |
|---|---|---|
mt |
モジュール名(小文字) | topics, member, inquiry |
ct |
コントローラ名 | topics_list, topics_edit, member_list |
# ショートハンド形式(推奨)
kuroco-admin exec topics/topics_list --json
# 個別指定
kuroco-admin exec --mt topics --ct topics_list --json
注意:
model/method形式は使用しないこと。HTMLが返却される場合がある。必ずmt/ct形式を使用する。
GETリクエスト(一覧取得・検索)
# 基本的な一覧取得(columns + cnt で最小限のレスポンス)
kuroco-admin exec topics/topics_list \
--param "topics_group_id[]=1" \
--param cnt=10 \
--columns topics_id,subject,ymd \
--json
# 検索・フィルタリング
kuroco-admin exec topics/topics_list \
--param "topics_group_id[]=1" \
--param keyword=検索語 \
--param cnt=20 \
--columns topics_id,subject \
--json
# ページネーション
kuroco-admin exec topics/topics_list \
--param "topics_group_id[]=1" \
--param pageID=2 \
--param cnt=20 \
--json
columns原則: GETリクエストでは常に
--columnsを指定。対応エンドポイントではサーバー側フィルタリング、非対応でも無視されるだけなので常に指定して問題ない。
POSTリクエスト(作成・更新・削除)
# 新規作成(INSERT)
kuroco-admin exec topics/topics_edit_api \
--MODE INSERT \
--data '{"subject":"タイトル","contents":"本文","topics_group_id":1}' \
--json
# 更新(UPDATE)
kuroco-admin exec topics/topics_edit_api \
--MODE UPDATE \
--data '{"topics_id":123,"subject":"更新後タイトル"}' \
--json
# 削除(DELETE)
kuroco-admin exec topics/topics_edit_api \
--MODE DELETE \
--data '{"topics_id":123}' \
--json
dry-run(プレビュー)
実行前にリクエスト内容を確認:
kuroco-admin exec topics/topics_edit_api \
--MODE INSERT \
--data '{"subject":"テスト"}' \
--dry-run
サービス呼び出し
コントローラ(小文字開始)とサービス(大文字開始)を自動判別:
# コントローラ: 小文字開始
kuroco-admin exec topics/topics_list --json
# サービス: 大文字開始(PHP側で自動検出)
kuroco-admin exec Email/send --data '{"to":"user@example.com","subject":"件名"}' --json
重要なルール
| ルール | 説明 |
|---|---|
| --json フラグ | AI agent からの呼び出しでは常に --json を指定 |
| GET配列パラメータ | --param "topics_group_id[]=1" のように [] suffix必須 |
| POST配列パラメータ | --data 内でネイティブJSON配列(例: {"topics_group_id": [1]}) |
| 件数制限 | レスポンスが大きい場合は --param cnt=N で制限 |
| columns指定 | --columns col1,col2 でレスポンスカラムを最小限にする |
| 変更操作の確認 | INSERT/UPDATE/DELETEは実行前にユーザーに確認すること |
| dry-run活用 | 書き込み操作の前に --dry-run でリクエスト内容を確認 |
詳細は references/cli-commands.md を参照
レスポンス構造
成功レスポンス(--json)
{
"success": true,
"data": { ... },
"errors": []
}
エラーレスポンス(--json)
{
"success": false,
"data": null,
"errors": [{ "code": "API_ERROR", "message": "..." }]
}
リストレスポンスのキー
レスポンス内のリスト配列のキーは ct に対応:
| ct | レスポンスのリストキー |
|---|---|
topics_list |
data.topics_list |
topics_group_list |
data.topics_group_list |
member_list |
data.member_list |
ページネーション
{
"pageInfo": {
"totalCnt": 150,
"perPage": 20,
"totalPageCnt": 8,
"pageNo": 1
}
}
エラーハンドリング
Exit Codes
| Code | 意味 | 対処 |
|---|---|---|
| 0 | 成功 | — |
| 1 | 一般エラー(INVALID_PARAM, NETWORK_ERROR, API_ERROR) | エラーメッセージ確認、パラメータ修正 |
| 2 | 認証エラー(AUTH_ERROR, SESSION_EXPIRED, LOGIN_REQUIRED) | kuroco-admin login で再ログイン |
詳細は references/error-handling.md を参照
モジュール関係マップ
主要な親子関係。親のIDが子の操作に必須:
TopicsGroup → Topics (topics_group_id 必須)
MemberGroup → Member (group_id 必須)
InquiryForm → InquiryMessage (inquiry_id 必須)
TagCategory → Tag (tag_category_id 必須)
操作前に親のlistで利用可能なグループを確認:
kuroco-admin exec topics/topics_group_list --columns topics_group_id,group_nm --json
詳細は references/api-discovery.md を参照
セキュリティ注意事項
- Cookie値を表示・ログ出力しないこと —
~/.kuroco-admin/cookies.txtはmode 0o600で保護 --verboseの出力をユーザーに見せない — HTTPヘッダーにCookie値が含まれる- 変更操作は必ずユーザー確認後に実行 — INSERT/UPDATE/DELETEは取り消しが困難
--dry-runを活用 — 書き込み前にリクエスト内容をプレビュー- APIレスポンスのファイル保存はユーザー同意必須 — 個人情報を含む可能性
アンチパターン
| やりがち | 問題 | 推奨 |
|---|---|---|
--json を付けずに実行 |
人間向けフォーマットでパースしにくい | AI agentでは常に --json |
--columns を指定せずにGET |
レスポンスが巨大 | 常に --columns を指定 |
| exit code を確認しない | 認証切れに気づかない | exit code 2 なら再ログイン |
| schema なしで書き込み | 必須フィールド漏れ | help でスキーマ確認後に実行 |
--verbose 出力をログに残す |
Cookie値が漏洩する | デバッグ時のみ使用、出力は共有しない |
model/method 形式でAPI指定 |
HTMLが返却される場合がある | 必ず mt/ct 形式を使用 |
並列実行
独立したAPI呼び出しは複数の Bash tool call を同時に発行して並列実行可能:
# 別々のBash tool callで同時発行
kuroco-admin exec topics/topics_group_list --columns topics_group_id,group_nm --json
kuroco-admin exec member/member_group_list --columns group_id,group_nm --json
他スキルとの連携
| スキル | 用途 | 使い分け |
|---|---|---|
/kuroco-api-content |
フロントエンドAPI設計・認証パターン、コンテンツCRUDパターン | エンドユーザー向けAPI |
/kuroco-frontend-integration |
Nuxt.js/Next.js統合、AI自動デプロイ | フロントエンド実装 |
/kuroco-docs |
Kurocoドキュメント参照 | 公式ドキュメント検索 |
本スキルはCLI経由のadmin_api実行に特化。 フロントエンドAPI(*.g.kuroco.app)の操作には上記の関連スキルを使用。
More from diverta/kuroco-skills
kuroco-docs
Kurocoドキュメントの検索・参照ガイド。使用キーワード:「Kurocoドキュメント」「Kuroco公式」「ドキュメント検索」「マニュアル」「チュートリアル」「リファレンス」「使い方」「やり方」「設定方法」「実装方法」「Kurocoヘルプ」「Kuroco仕様」「公式ガイド」「ドキュメント同期」「Kurocoの○○はどうやる」「Kurocoで○○したい」。ドキュメントから情報を探す場合に使用。
20kuroco-frontend-integration
Kurocoとフロントエンドフレームワークの統合パターンおよびAI自動デプロイメント。使用キーワード:「Kuroco Nuxt」「Kuroco Next.js」「フロントエンド連携」「Nuxt3」「Nuxt2」「App Router」「Pages Router」「SSG」「SSR」「静的生成」「コンテンツ表示」「ログイン実装」「会員登録」「signup」「KurocoPages」「フロントエンド環境構築」「Vue」「React」「useAsyncData」「$fetch」「asyncData」「composable」「useAuth」「認証状態」「プロフィール取得」「profile」「generateStaticParams」「動的ルート」「v-html」「dangerouslySetInnerHTML」「XSS対策」「サードパーティCookie」「credentials include」「AI自動デプロイ」「Kuroco自動化」「サイト登録API」「自動ビルド」「自動デプロイ」「temp-upload」「presigned URL」「S3アップロード」「artifact_url」「KurocoFront」「プレビューデプロイ」「stage_url」「add_site」「site_key」「kuroco_front/deploy」「CI/CD」「フロントエンドビルド」「ZIP配備」「自動公開」「nuxt generate」「next build」「vite build」「デプロイAPI」「一時アップロード」「署名付きURL」。Nuxt/Next.jsでのKuroco連携、認証実装、SSG/SSR設定、AI自動デプロイに関する質問で使用。
20kuroco-server-processing
KurocoのSmartyプラグイン・構文リファレンスおよびWebhook・バッチ処理・自動化のベストプラクティス。使用キーワード:「Smartyプラグイン」「Smarty関数」「Smarty修飾子」「Smarty構文」「テンプレート関数」「assign」「foreach」「if」「escape」「date_format」「truncate」「api_internal」「sendmail」「slack_post_message」「fileupload」「rcms_vue_component」「translate」「pager」「rcms_auth」「login」「logout」「ai_completion」「write_file」「put_file」「json_encode」「変数代入」「ループ処理」「条件分岐」「文字列操作」「日付フォーマット」「ファイル操作」「API呼び出し」「メール送信」「Slack通知」「Vue連携」「認証」「ページネーション」「$smarty変数」「セキュリティ設定」「IF_FUNCS」「MODIFIER_FUNCS」「capture」「literal」「section」「Webhook」「バッチ処理」「定期実行」「スケジュール実行」「cron」「15分毎」「1時間毎」「外部連携」「GitHub Actions」「repository_dispatch」「workflow_dispatch」「Slack通知」「slack_send」「Chatwork」「chatwork_send」「メール通知」「send_mail」「SendGrid」「sendgrid_send」「自動処理」「api_request」「外部API」「トリガー」「前処理」「後処理」「Function」「カスタム処理」「CSV出力」「topics変数」「inquiry変数」。Smartyテンプレートの構文・プラグイン、定期実行、外部通知、トリガー処理に関する質問で使用。
13kuroco-api-content
Kuroco API設計・実装およびコンテンツ管理(CRUD操作)のベストプラクティス。使用キーワード:「Kuroco API」「エンドポイント設定」「API設計」「認証」「CORS」「APIセキュリティ」「ログインAPI」「トークン認証」「Cookie認証」「JWT」「StaticToken」「X-RCMS-API-ACCESS-TOKEN」「rcms-api」「g.kuroco.app」「流量制限」「レート制限」「キャッシュ」「credentials include」「fetch」「axios」「HTTPリクエスト」「401エラー」「403エラー」「429エラー」「認証エラー」「権限エラー」「APIレスポンス」「pageInfo」「ページネーション」「アクセストークン」「リフレッシュトークン」「grant_token」「コンテンツ定義」「記事管理」「Topics」「TopicsGroup」「カテゴリ」「WYSIWYG」「ファイルアップロード」「CSVインポート」「コンテンツAPI」「拡張項目」「ext_col」「topics_id」「subject」「contents」「ymd」「topics_flg」「フィルター」「filter」「order_by」「一覧取得」「詳細取得」「list」「details」「insert」「update」「delete」「bulk_upsert」「一括更新」「タグ」「tag」「予約投稿」「open_ymd」「close_ymd」「公開設定」「閲覧制限」「関連コンテンツ」「pageID」「cnt」。APIの設計、呼び出し、認証、エラー処理、コンテンツの作成・取得・更新・削除・フィルタリングに関する質問で使用。
12kuroco-api-integration
Kuroco API設計・実装のベストプラクティス。使用キーワード:「Kuroco API」「エンドポイント設定」「API設計」「認証」「CORS」「APIセキュリティ」「ログインAPI」「トークン認証」「Cookie認証」「JWT」「StaticToken」「X-RCMS-API-ACCESS-TOKEN」「rcms-api」「g.kuroco.app」「流量制限」「レート制限」「キャッシュ」「credentials include」「fetch」「axios」「HTTPリクエスト」「401エラー」「403エラー」「429エラー」「認証エラー」「権限エラー」「APIレスポンス」「pageInfo」「ページネーション」「アクセストークン」「リフレッシュトークン」「grant_token」。APIの設計、呼び出し、認証、エラー処理に関する質問で使用。
6kuroco-content-management
Kurocoコンテンツ管理(CRUD操作)のベストプラクティス。使用キーワード:「コンテンツ定義」「記事管理」「Topics」「TopicsGroup」「カテゴリ」「WYSIWYG」「ファイルアップロード」「CSVインポート」「コンテンツAPI」「拡張項目」「ext_col」「topics_id」「subject」「contents」「ymd」「topics_flg」「フィルター」「filter」「order_by」「一覧取得」「詳細取得」「list」「details」「insert」「update」「delete」「bulk_upsert」「一括更新」「タグ」「tag」「予約投稿」「open_ymd」「close_ymd」「公開設定」「閲覧制限」「関連コンテンツ」「pageID」「cnt」。コンテンツの作成・取得・更新・削除・フィルタリングに関する質問で使用。
6