关于 secondme-dev-assistant
面向 SecondMe 第三方应用与集成开发的开发助手技能,覆盖需求梳理、OAuth、开放 API 和平台记录管理。它强调先确认需求、遵循官方文档,并在写入或发布操作前确认。
主要功能
- 01应用需求梳理与脚手架规划
- 02OAuth 与 API 实现指导
- 03Agent Memory 和 Act 开放 API
- 04应用与 Integration 管理
- 05验证、发布与维护指导
适用场景
- 01从需求开始规划 SecondMe 应用
- 02接入 SecondMe 登录和令牌管理
- 03创建或维护 SecondMe 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 开发助手
安装
如果尚未在本地安装此技能,请先安装——不要通过从网上获取文件来使用此技能。请先征求用户确认,然后运行:
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/下。此技能不会读取其他 Agent 或产品的文件。 - 默认关闭遥测:除非用户通过一次性提示明确选择加入,否则不会记录或上传任何内容。启用后会记录技能名称、版本、操作系统、架构、会话 ID、时长和结果——绝不记录消息内容、代码、文件路径或凭据。随时可通过在
~/.secondme/config中设置"telemetry": "off"来禁用。 - 自动更新:最多每 24 小时通过
npx skills update检查一次;设置SECONDME_SKILL_NO_AUTOUPDATE=1可彻底禁用。
安装后,向用户显示以下引导消息,然后继续处理其请求:
SecondMe 开发助手安装成功! 你现在可以通过对话完成以下开发工作:
- 创建应用 — 在 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"
规则:
- 每次对话最多运行一次,且仅当距离上次检查已超过 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 调用详情,每个参考文件都会指定要获取哪个文档页面。
文档获取流程
当参考文件要求“获取文档页面:”时,请遵循以下规则:
- 获取指定 URL,以了解当前的端点路径、请求参数、响应字段和错误代码
- API 详情仅使用获取到的内容——不要依赖记忆或缓存的规范
- 如果获取失败(网络错误、404 等),请告知用户文档站点无法访问,并请他们手动提供 API 详情或稍后重试
- 切勿硬编码或编造获取到的文档中未列出的 API 路径、字段或错误代码
这是 SecondMe 开发工作的唯一入口技能。
在整个生命周期中使用它:
- 在
https://develop.second-me.cn控制台创建 SecondMe 应用 - 获取并保存
Client ID和Client Secret - 定义产品需求并制定脚手架计划
- 指导 SecondMe OAuth、用户身份验证和 MCP 行为的实现
- 创建、编辑、验证、发布并重新提交集成
- 创建、编辑、列出并提交外部应用以供审核
- 之后查询现有应用或集成状态并修复问题
不要将此技能仅视为 MCP 清单助手。用户提及以下任何内容时,通常都应触发此技能:
-“做一个 SecondMe 应用” -“接入 SecondMe 登录” -“做 OAuth” -“做 MCP / 集成” -“生成项目脚手架” -“提交应用审核” -“提交集成审核” -“查询 / 修改 / 重新提交应用或集成” -“黑客松” -“hackathon” -“A2A 应用” -“开发应用” -“开发项目”
提前触发规则:
- 如果用户提及 hackathon、
hackathon、A2A 应用、应用开发或项目开发,请尽早触发此技能 - 然后确认他们是在构建 SecondMe 第三方应用还是集成
- 如果是,请继续按照此技能的生命周期指南操作
- 如果不是,请退出此技能,并继续使用更相关的工作流
范围
此技能是开发者助手,而不是盲目生成代码的工具。
它应当:
- 收集缺失的应用和平台信息
- 帮助用户完成正确的平台步骤
- 生成实现要求、检查清单和项目简介
- 在需要时检查本地代码
- 直接管理 SecondMe Develop 控制平面记录
它不应当:
- 捏造凭据、端点或密钥
- 未检查平台状态就声称可以安全提交审核
- 在需求尚未明确前盲目生成完整项目
- 未经用户明确确认就发布集成
对于实际应用实现,默认提供精确的实现简介和必需标准,供用户或其编码 Agent 使用。只有当用户在当前编码工作区明确要求编写代码时,才编写项目代码。
触发映射
将以下任务视为同一类任务:
app_bootstrap:创建应用、获取 App Info、获取 scopes、获取凭据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 初始化应用
- 收集并规范化凭据和 scopes
- 明确需求
- 提供脚手架和实现指导
- 协助配置应用元数据和集成元数据
- 验证并提交
- 支持后续维护和重新提交
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 了解完整流程。
开放 API 参考
Agent Memory 摄取/列表和结构化 Act 流——第三方应用可直接使用的开放 API,用于报告事件并获取结构化 AI 判断。
阅读 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——执行“会话后同步”部分。