mcpField
S
secondme-dev-assistant

secondme-dev-assistant

github.com/mindverse開発2172 回インストール14 週間前に更新
リポジトリ

secondme-dev-assistant について

SecondMeのサードパーティアプリとインテグレーション開発向けの開発支援スキルです。要件整理、OAuth、オープンAPI、プラットフォーム上のレコード管理を扱い、公式ドキュメントの確認と書き込み・リリース前の承認を重視します。

主な機能

  1. 01要件整理とスキャフォールド計画
  2. 02OAuthとAPI実装のガイダンス
  3. 03Agent MemoryとActのオープンAPI
  4. 04アプリとIntegrationの管理
  5. 05検証・リリース・保守のガイダンス

活用シーン

  1. 01要件からSecondMeアプリを計画
  2. 02SecondMeログインとトークン管理の設定
  3. 03SecondMe MCP Integrationの作成・保守
  4. 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.md
control-plane.md
feedback-prompt.md
implementation-guidance.md
mcp-integration.md
open-apis.md
release-maintenance.md
requirements-scaffold.md
session-feedback.md
telemetry-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 エンドポイントの仕様(パス、パラメーター、レスポンスフィールド、エラーコード)は、ドキュメントサイトで管理されています。

機能ごとのドキュメントページ(API 呼び出しを実装またはトラブルシューティングする前に、該当するページを取得してください):

機能ドキュメント URL
クイックスタートhttps://develop-docs.second-me.cn/zh/docs
認証の概要https://develop-docs.second-me.cn/zh/docs/authentication
OAuth2 ガイドhttps://develop-docs.second-me.cn/zh/docs/authentication/oauth2
エラーコードhttps://develop-docs.second-me.cn/zh/docs/errors
エージェントメモリhttps://develop-docs.second-me.cn/zh/docs/secondme/agent-memory
Act(構造化アクション)https://develop-docs.second-me.cn/zh/docs/secondme/act
チャットhttps://develop-docs.second-me.cn/zh/docs/secondme/chat
ノートhttps://develop-docs.second-me.cn/zh/docs/secondme/note
プラザhttps://develop-docs.second-me.cn/zh/docs/secondme/plaza
TTShttps://develop-docs.second-me.cn/zh/docs/secondme/tts
ユーザー情報https://develop-docs.second-me.cn/zh/docs/secondme/user
ビジターチャットhttps://develop-docs.second-me.cn/zh/docs/secondme/visitor-chat
MCP 統合https://develop-docs.second-me.cn/zh/docs/mcp-integration
変更履歴https://develop-docs.second-me.cn/zh/docs/changelog

このスキルのリファレンスファイルには、動作に関するルール(UX フロー、実装ガイダンス、確認ロジック)が記載されています。API 呼び出しの詳細については、各リファレンスファイルに取得すべきドキュメントページが指定されています。

ドキュメント取得プロトコル

リファレンスファイルに「fetch doc page: 」と記載されている場合は、次のルールに従ってください。

  1. 指定された URL を取得し、最新のエンドポイントパス、リクエストパラメーター、レスポンスフィールド、エラーコードを確認します
  2. API の詳細には取得したコンテンツのみを使用し、記憶やキャッシュされた仕様を参照しないでください
  3. 取得に失敗した場合(ネットワークエラー、404 など)は、ドキュメントサイトにアクセスできないことをユーザーに伝え、API の詳細を手動で提供するか、後でもう一度試すよう依頼します
  4. 取得したドキュメントに記載されていない 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 アプリを新規作成または拡張する場合に使用します。

フロー:

  1. デフォルトでは SecondMe Develop API を通じてアプリを初期設定する
  2. 認証情報とスコープを収集して標準化する
  3. 要件を明確にする
  4. スキャフォールドと実装ガイダンスを提示する
  5. アプリのメタデータとインテグレーションのメタデータの設定を支援する
  6. 検証して提出する
  7. その後のメンテナンスと再提出を支援する
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を参照してください。

応答スタイル

  • 簡潔
  • 透明性
  • 正確
  • セキュリティ優先

必ず次の状態を区別してください。

  • confirmed
  • inferred
  • missing

秘密の値をそのままユーザーに伝えてはいけません。

運用ルール

  • 作成が必要だと判断する前に、必ずレコードを一覧表示してください
  • 必要最小限の 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 应用')、取得できなかった場合は None
  • PHASES_USED:フィードバックフローで取得した Python リスト(例:['app_bootstrap', 'implementation_guidance'])、取得できなかった場合は []

テレメトリの同期(セッションのテレメトリ記録後に実行)

セッションのテレメトリを記録した後、保留中のローカル分析データ(利用状況とフィードバックの両方)をすべて SecondMe バックエンドに同期してみてください。ユーザーのワークフローはすでに完了しているため、フォアグラウンドで実行します。

references/telemetry-sync.mdを参照し、「Post-Session Sync」セクションを実行してください。

コメント