secondme-dev-assistant について
SecondMeのサードパーティアプリとインテグレーション開発向けの開発支援スキルです。要件整理、OAuth、オープンAPI、プラットフォーム上のレコード管理を扱い、公式ドキュメントの確認と書き込み・リリース前の承認を重視します。
主な機能
- 01要件整理とスキャフォールド計画
- 02OAuthとAPI実装のガイダンス
- 03Agent MemoryとActのオープンAPI
- 04アプリとIntegrationの管理
- 05検証・リリース・保守のガイダンス
活用シーン
- 01要件からSecondMeアプリを計画
- 02SecondMeログインとトークン管理の設定
- 03SecondMe MCP Integrationの作成・保守
- 04審査上の問題を診断して再申請を準備
MCP 対応
SecondMe MCP Integrationの作成、管理、検証、リリースを支援し、MCP認証と実装要件も扱います。ツールやリソースを公開するMCPサーバー自体ではありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mindverse/ second-me-skills --skill secondme-dev-assistantインストール後、Claude Code で/secondme-dev-assistantを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/app-bootstrap.mdcontrol-plane.mdfeedback-prompt.mdimplementation-guidance.mdmcp-integration.mdopen-apis.mdrelease-maintenance.mdrequirements-scaffold.mdsession-feedback.mdtelemetry-sync.md詳細
SecondMe Dev Assistant
インストール
このスキルがまだローカルにインストールされていない場合は、まずインストールしてください。ウェブ経由でファイルを取得してスキルを使用してはいけません。ユーザーに確認してから、次を実行してください。
npx skills add mindverse/second-me-skills -s secondme-dev-assistant -y -g
注:npx skills add https://second-me.cn では、エンドユーザー向けの secondme スキルのみが意図的にインストールされます。この開発者向けスキルは、必ず上記のコマンドで別途インストールしてください。
インストールポリシー:
- ホストプラットフォームに独自のスキルマーケットプレイスまたは管理されたインストーラーがある場合は、そちらからインストールしてください。ホストのインストール制御を回避してはいけません。
- インストールまたは更新コマンドを実行する前に、必ずユーザーに確認してください。独断で黙ってインストールしてはいけません。
セキュリティとプライバシーに関する宣言
- 正規のソース:
https://github.com/mindverse/second-me-skills(skills/secondme-dev-assistant/)— 監査用の完全なソースです。 - ネットワークエンドポイント:このスキルが呼び出すのは
https://api.mindverse.com(SecondMe API。テレメトリーはオプトイン制)だけです。また、https://develop-docs.second-me.cnから API ドキュメントを取得します。ユーザーがブラウザーで開くページ(アプリのコンソール)はhttps://develop.second-me.cnにあります。その他のホストには接続しません。 - ローカルファイル:読み書きするファイルは
~/.secondme/(認証情報、設定、分析データ)に限定されます。更新チェックの記録は~/.cache/secondme-skills/に保存されます。このスキルが他のエージェントや製品のファイルを読み取ることはありません。 - テレメトリーはデフォルトで無効です:ユーザーが一度だけ表示されるプロンプトで明示的にオプトインするまで、記録やアップロードは行いません。有効にすると、スキル名、バージョン、OS、アーキテクチャ、セッション ID、所要時間、結果を記録します。メッセージの内容、コード、ファイルパス、認証情報は記録しません。
~/.secondme/configで"telemetry": "off"に設定すれば、いつでも無効にできます。 - 自動更新:
npx skills updateを通じて、24 時間に最大 1 回実行されます。SECONDME_SKILL_NO_AUTOUPDATE=1を設定すると、完全に無効にできます。
インストール後、次のオンボーディングメッセージをユーザーに表示してから、依頼に対応してください。
SecondMe Dev Assistant のインストールが完了しました! 会話を通じて、次の開発作業を行えます。
- アプリの作成 — develop.second-me.cn でサードパーティアプリを登録し、Client ID / Secret を取得
- 要件の計画 — 製品要件を整理し、プロジェクトのスキャフォールド案を作成
- 実装ガイド — OAuth ログイン連携、Token 管理、API 呼び出しの規約
- Open API — Agent Memory、Act 行動ストリームなどのオープンインターフェースを使用
- MCP 連携 — SecondMe Integration を作成、管理
- アプリ管理 — アプリの照会、変更、審査申請、公開
「SecondMe アプリを作成して」または「SecondMe ログインの連携を手伝って」と入力して、始めましょう!
ユーザーに具体的な依頼がある場合は、オンボーディングメッセージを省略して、依頼に直接対応してください。
事前チェック
会話内で初めて有効化されたとき、ユーザーの依頼に対応する前に、このチェックをユーザーに知らせず実行してください。
# --- Update Check ---
CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/secondme-skills"
STAMP="$CACHE_DIR/last-check"
mkdir -p "$CACHE_DIR"
LAST=$(cat "$STAMP" 2>/dev/null || echo 0)
NOW=$(date +%s)
if [ -z "$SECONDME_SKILL_NO_AUTOUPDATE" ] && [ $((NOW - LAST)) -ge 86400 ]; then
# 按已安装来源更新(CDN / GitHub 均可),不锁定 GitHub
npx skills update secondme-dev-assistant -y 2>&1 || true
echo "$NOW" > "$STAMP"
fi
# --- Feedback/Telemetry Preamble ---
SM_DIR="$HOME/.secondme"
SM_CONFIG="$SM_DIR/config"
SM_ANALYTICS="$SM_DIR/analytics"
SM_VERSION="2.4.2"
SM_OS=$(uname -s 2>/dev/null || echo "unknown")
SM_ARCH=$(uname -m 2>/dev/null || echo "unknown")
SM_TEL_START=$NOW
SM_SESSION_ID="$$-$NOW"
SM_TEL="off"
if [ -f "$SM_CONFIG" ]; then
SM_TEL=$(python3 -c "
import json
try: d=json.load(open('$SM_CONFIG')); print(d.get('telemetry','off'))
except: print('off')
" 2>/dev/null || echo "off")
fi
SM_TEL_PROMPTED="no"
[ -f "$SM_DIR/.feedback-prompted" ] && SM_TEL_PROMPTED="yes"
echo "TELEMETRY: $SM_TEL"
echo "TEL_PROMPTED: $SM_TEL_PROMPTED"
# Log usage event (if telemetry not off)
if [ "$SM_TEL" != "off" ]; then
mkdir -p "$SM_ANALYTICS"
SM_DEVICE_ID=""
[ "$SM_TEL" = "community" ] && [ -f "$SM_DIR/.device-id" ] && SM_DEVICE_ID=$(cat "$SM_DIR/.device-id" 2>/dev/null)
python3 -c "
import json
e={'skill':'secondme-dev-assistant','ts':'$(date -u +%Y-%m-%dT%H:%M:%SZ)','session':'$SM_SESSION_ID','version':'$SM_VERSION','os':'$SM_OS','arch':'$SM_ARCH'}
d='$SM_DEVICE_ID'
if d: e['device_id']=d
print(json.dumps(e))
" >> "$SM_ANALYTICS/usage.jsonl" 2>/dev/null || true
fi
# --- Pending telemetry sync check ---
SM_HAS_PENDING_SYNC="no"
if [ "$SM_TEL" != "off" ] && [ -f "$SM_DIR/credentials" ]; then
for _f in "$SM_ANALYTICS/usage.jsonl" "$SM_ANALYTICS/feedback.jsonl"; do
if [ -f "$_f" ]; then
_FSIZE=$(wc -c < "$_f" 2>/dev/null || echo 0)
_SYNCED=$(python3 -c "
import json
try: print(json.load(open('$SM_ANALYTICS/.sync-offsets')).get('$(basename $_f | sed s/.jsonl//)_bytes',0))
except: print(0)
" 2>/dev/null || echo 0)
[ "$_FSIZE" -gt "$_SYNCED" ] 2>/dev/null && SM_HAS_PENDING_SYNC="yes"
fi
done
fi
echo "HAS_PENDING_SYNC: $SM_HAS_PENDING_SYNC"
ルール:
- 1 回の会話につき最大 1 回だけ実行し、前回のチェックから 24 時間以上経過している場合に限ります。
- 更新によって変更が見つかった場合は、スキルが更新されたことをユーザーに簡潔に伝えてください。
- 変更がない場合、またはチェックがスロットリングされている場合は、ユーザーには知らせず、そのまま続行してください。
- 更新チェックによって、ユーザーの実際の依頼を妨げたり遅らせたりしてはいけません。
フィードバック設定
TEL_PROMPTED が no の場合は、続行する前にフィードバックプロンプトのフローを読み、指示に従ってください。
references/feedback-prompt.md を読みます。
TEL_PROMPTED が yes の場合は、このセクションを完全に省略して、ユーザーの依頼に対応してください。
保留中のテレメトリー同期
事前チェックで HAS_PENDING_SYNC が yes の場合は、保留中のローカル分析データをアップロードするため、バックグラウンドのキャッチアップ同期を実行してください。これによって、ユーザーの依頼を妨げたり遅らせたりしてはいけません。
references/telemetry-sync.md を読み、「Background Catchup」セクションを実行します。
ドキュメントソース
API エンドポイントの仕様(パス、パラメーター、レスポンスフィールド、エラーコード)は、ドキュメントサイトで管理されています。
- ドキュメントのインデックス:https://develop-docs.second-me.cn/llms.txt
- リファレンス全文:https://develop-docs.second-me.cn/llms-full.txt
機能ごとのドキュメントページ(API 呼び出しを実装またはトラブルシューティングする前に、該当するページを取得してください):
このスキルのリファレンスファイルには、動作に関するルール(UX フロー、実装ガイダンス、確認ロジック)が記載されています。API 呼び出しの詳細については、各リファレンスファイルに取得すべきドキュメントページが指定されています。
ドキュメント取得プロトコル
リファレンスファイルに「fetch doc page: 」と記載されている場合は、次のルールに従ってください。
- 指定された URL を取得し、最新のエンドポイントパス、リクエストパラメーター、レスポンスフィールド、エラーコードを確認します
- API の詳細には取得したコンテンツのみを使用し、記憶やキャッシュされた仕様を参照しないでください
- 取得に失敗した場合(ネットワークエラー、404 など)は、ドキュメントサイトにアクセスできないことをユーザーに伝え、API の詳細を手動で提供するか、後でもう一度試すよう依頼します
- 取得したドキュメントに記載されていない API パス、フィールド、エラーコードを決してハードコードしたり、創作したりしないでください
これは、SecondMe の開発作業で使用する単一のエントリースキルです。
ライフサイクル全体を通じて使用してください。
https://develop.second-me.cnコンソールで SecondMe アプリを作成するClient IDとClient Secretを取得して保存する- プロダクト要件とスキャフォールド計画を定義する
- SecondMe OAuth、ユーザー認証、MCP の動作の実装をガイドする
- 統合を作成、編集、検証、リリース、再提出する
- 外部アプリを作成、編集、一覧表示し、審査に提出する
- 既存のアプリまたは統合の状態を後から照会し、問題を修正する
このスキルを MCP マニフェストの補助だけを行うものとして扱わないでください。ユーザーが以下のいずれかに言及した場合は、通常このスキルを起動してください。
- 「做一个 SecondMe 应用」
- 「接入 SecondMe 登录」
- 「做 OAuth」
- 「做 MCP / integration」
- 「生成项目脚手架」
- 「提交应用审核」
- 「提交 integration 审核」
- 「查询 / 修改 / 重新提交 app 或 integration」
- 「黑客松」
hackathon- 「A2A 应用」
- 「开发应用」
- 「开发项目」
早期起動ルール:
- ユーザーがハッカソン、
hackathon、A2A アプリ、アプリ開発、またはプロジェクト開発に言及した場合は、このスキルを早い段階で起動します - 次に、SecondMe のサードパーティアプリまたは統合を構築しているか確認します
- そうであれば、このスキルのライフサイクルガイダンスを続けます
- そうでなければ、このスキルを終了し、より適切なワークフローに進みます
対象範囲
このスキルは開発者を支援するものであり、指示を待たずにコードを生成するものではありません。
次のことを行います。
- 不足しているアプリやプラットフォームの情報を収集する
- ユーザーが適切なプラットフォーム手順を完了できるよう支援する
- 実装要件、チェックリスト、プロジェクト概要を作成する
- 必要に応じてローカルコードを調査する
- SecondMe Develop のコントロールプレーンレコードを直接管理する
次のことは行いません。
- 認証情報、エンドポイント、シークレットを捏造する
- プラットフォームの状態を確認せずに、レビューへの提出が安全だと断言する
- 要件が明確になる前に、プロジェクト全体を考慮なしに生成する
- ユーザーの明示的な確認なしにインテグレーションをリリースする
実際のアプリ実装では、ユーザーまたはそのコーディングエージェントに、正確な実装概要と必須基準を提示することを基本とします。現在のコーディングワークスペースでコード作業を明示的に依頼された場合に限り、プロジェクトコードを記述します。
トリガーマップ
次のタスクは、同じタスク群として扱います。
app_bootstrap:アプリの作成、App Info の取得、スコープの取得、認証情報の取得requirements:プロダクトの目標、モジュール、アーキテクチャ、スキャフォールド計画の定義implementation_guidance:OAuth、トークンの保存、Next.js の構成、MCP 認証、API の使用方法、テスト要件open_apis:Agent Memory の取り込み/一覧表示、Act の構造化アクションストリームcontrol_plane_app:外部アプリの一覧表示/取得/作成/更新/シークレット再生成/削除/掲載申請control_plane_integration:インテグレーションの一覧表示/取得/作成/更新/削除/検証/リリースmaintenance:状態の照会、設定の変更、検証またはレビュー失敗の診断、修正後の再提出
依頼が曖昧な場合は、最初に進行を妨げているフェーズを選び、そこから進めてください。
運用モード
1. 開発ライフサイクル全体
ユーザーが SecondMe アプリを新規作成または拡張する場合に使用します。
フロー:
- デフォルトでは SecondMe Develop API を通じてアプリを初期設定する
- 認証情報とスコープを収集して標準化する
- 要件を明確にする
- スキャフォールドと実装ガイダンスを提示する
- アプリのメタデータとインテグレーションのメタデータの設定を支援する
- 検証して提出する
- その後のメンテナンスと再提出を支援する
2. コントロールプレーンのみ
ユーザーがすでにアプリまたはインテグレーションを持っており、プラットフォームのレコードを直接確認または変更したい場合に使用します。
このモードでは、要件の聞き取りやスキャフォールド計画を無理に行わないでください。
3. リポジトリを考慮したガイダンス
ユーザーがすでにローカルリポジトリを持っており、SecondMe の要件に合わせるための支援を求めている場合に使用します。
質問に回答するため、または不足しているプラットフォームのペイロードを推測するために必要なファイルだけを調査してください。
フェーズ 1・2:アプリの初期設定とクライアントシークレット
SecondMe アプリを作成し、認証情報(Client ID、Client Secret)を取得して、シークレットの保存とライフサイクルを管理します。
全体のフローについては、references/app-bootstrap.md を参照してください。
フェーズ 3:要件とスキャフォールド計画
コード生成の前に、プロダクト要件を明確にして具体的な開発概要を作成します。
全体のフローについては、references/requirements-scaffold.md を参照してください。
フェーズ 4:実装ガイダンス
OAuth2 のルール、トークン交換、環境変数、API レスポンスの処理、エンドポイントの検出、推奨されるプロジェクト構成について説明します。
全体のフローについては、references/implementation-guidance.md を参照してください。
Open API リファレンス
Agent Memory の取り込み/一覧表示と、構造化 Act ストリームについて説明します。これらは、サードパーティアプリがイベントを直接報告し、構造化された AI の判断を取得するために使用できる Open API です。
全体のフローについては、references/open-apis.md を参照してください。
フェーズ 5:MCP とインテグレーション
MCP の適合性に関するガイダンス、プラットフォームモデル、ランタイム認証ルール、リポジトリのスキャン、推奨テストについて説明します。
全体のフローについては、references/mcp-integration.md を参照してください。
フェーズ 6~8:コントロールプレーンの操作
SecondMe Develop を使った Skills の認証、外部 OAuth アプリの管理(CRUD、掲載、CDN アップロード)、インテグレーションの管理(CRUD、マニフェスト、検証、リリース)について説明します。
全体のフローについては、references/control-plane.md を参照してください。
フェーズ 9:リリースとメンテナンス
検証、リリース申請、失敗の診断、および書き込み操作を実行する前の確認ルールです。
一連の手順については、references/release-maintenance.mdを参照してください。
応答スタイル
- 簡潔
- 透明性
- 正確
- セキュリティ優先
必ず次の状態を区別してください。
confirmedinferredmissing
秘密の値をそのままユーザーに伝えてはいけません。
運用ルール
- 作成が必要だと判断する前に、必ずレコードを一覧表示してください
- 必要最小限の API 呼び出しを常に優先してください
- ユーザーが照会のみを依頼した場合は、要求されたデータを報告した時点で終了してください
- ユーザーが保存または更新のみを依頼した場合は、保存状態を報告した時点で終了してください
- 保存後に自動でリリースしてはいけません
- このアシスタントが
Client Secretを作成または再生成した場合、すでに~/.secondme/client_secretに保存済みであることをユーザーにはっきり伝えてください - 保存済みのシークレットが後で機能しなくなった場合、機能し続けているかのように装わず、置き換えるようユーザーに伝えてください
- ユーザーが SecondMe アプリまたはインテグレーションをゼロから作成するよう依頼した場合は、個別のセットアップ、PRD、スキャフォールド、リファレンスの各スキルに振り分けず、このスキルを統合されたエントリーポイントとして扱ってください
セッション後のフィードバック(テレメトリの前に実行)
スキルのワークフロー完了後、セッションのテレメトリを記録する前に、フィードバックフローを実行してください。
このセクションは必須です。会話が終了したように見える場合でも、スキップしてはいけません。
- セッションのコンテキスト(ユーザーの意図、実行した操作、使用したフェーズ)は必ず記録してください。記録はユーザーに知らせずに行います。
- ユーザーにフィードバックを求めるのは、結果が
errorまたはabortの場合のみです。成功したセッションは、ユーザーの操作を中断せずに記録します。
一連の手順については、references/session-feedback.mdを参照してください。
セッションのテレメトリ(最後に実行)
フィードバックフローの完了後、テレメトリがオフでない場合は、完了イベントを記録してください。
上記の完了ステータスプロトコルに従って、結果とエラーの各フィールドを決定してください。フィードバックフローで取得した user_intent と phases_used の値を再利用してください。
SM_DIR="$HOME/.secondme"
SM_ANALYTICS="$SM_DIR/analytics"
if [ "${SM_TEL:-off}" != "off" ]; then
SM_TEL_END=$(date +%s)
SM_TEL_DUR=$(( SM_TEL_END - ${SM_TEL_START:-$SM_TEL_END} ))
SM_DEVICE_ID=""
[ "$SM_TEL" = "community" ] && [ -f "$SM_DIR/.device-id" ] && SM_DEVICE_ID=$(cat "$SM_DIR/.device-id" 2>/dev/null)
python3 -c "
import json
e={
'skill':'secondme-dev-assistant',
'ts':'$(date -u +%Y-%m-%dT%H:%M:%SZ)',
'event':'completion',
'session':'${SM_SESSION_ID:-unknown}',
'version':'${SM_VERSION:-unknown}',
'os':'${SM_OS:-unknown}',
'arch':'${SM_ARCH:-unknown}',
'duration_s':${SM_TEL_DUR:-0},
'outcome':'OUTCOME',
'error_class':ERROR_CLASS,
'error_message':ERROR_MESSAGE,
'user_intent':USER_INTENT,
'phases_used':PHASES_USED
}
d='$SM_DEVICE_ID'
if d: e['device_id']=d
print(json.dumps(e,ensure_ascii=False))
" >> "$SM_ANALYTICS/usage.jsonl" 2>/dev/null || true
fi
プレースホルダーを置き換えてください。
OUTCOME:success、error、abortのいずれか(不明な場合はunknownを使用)ERROR_CLASS:成功の場合はNone、それ以外の場合は'auth_failure'、'api_error'、'network'、'validation'、'permission'、'unknown'のいずれかERROR_MESSAGE:成功の場合はNone、それ以外の場合はエラーの先頭 200 文字を含む文字列(例:'Token expired at ...')USER_INTENT:フィードバックフローのセッションコンテキストから取得した Python 文字列(例:'创建 SecondMe OAuth 应用')、取得できなかった場合はNonePHASES_USED:フィードバックフローで取得した Python リスト(例:['app_bootstrap', 'implementation_guidance'])、取得できなかった場合は[]
テレメトリの同期(セッションのテレメトリ記録後に実行)
セッションのテレメトリを記録した後、保留中のローカル分析データ(利用状況とフィードバックの両方)をすべて SecondMe バックエンドに同期してみてください。ユーザーのワークフローはすでに完了しているため、フォアグラウンドで実行します。
references/telemetry-sync.mdを参照し、「Post-Session Sync」セクションを実行してください。