fecify admin skill文件结构
17 个模块,137 个 API。三层路由:SKILL.md → docs/<模块>.md → docs/<模块>/
.md 所有脚本以 skill 根目录为工作目录执行。
fecify_admin_skills/
│
├── SKILL.md ← 入口文件
│ frontmatter: name/version/description
│ §0 文件路径说明
│ §1 工作流(前置检查→配置→init→执行用户指令)
│ §2 通用 API 调用(api-call.js + api-doc.js 用法)
│ §3 模块路由(17 模块一览,含 API 数和功能说明)
│ §4 临时文件规则(temp/ 用后即清)
│ §5 铁律(5 条硬约束)
│ §6 打包分发(排除规则 + 平台命令)
│
├── config/
│ └── fecify_admin_skills-config.json
│ 记录项目名称、版本号和描述
│
├── docs/
│ │
│ ├── account.md ← 操作员管理入口 (5 APIs)
│ │ └── 操作员是登录服务端后台的管理账号(type=4),区别于商户用户。含创建/列表/详情/更新/删除 5 个 API 的总览表、使用流程、6 条注意事项(参数名不一致、password≥8、username 唯一等)
│ ├── addons.md ← 应用管理入口 (8 APIs)
│ │ └── 管理插件和模版的上架/下架状态。含 9 种类型枚举、3 种安装状态、shoptypes 字段说明、按 addons_type/status/install_status 多维筛选逻辑、批量上架规则
│ ├── base-image.md ← 图片管理入口 (3 APIs)
│ │ └── 服务端图片库的列表/上传/删除。上传使用 Base64 编码(去 data:image 前缀),删除传 image_ids 数组支持批量,列表返回 upload_img_max_size 和 allow_types 元数据
│ ├── base.md ← 系统管理入口 (9 APIs)
│ │ └── 系统初始化、授权信息、版本升级、店铺统计、语言列表、队列检测、缓存刷新。分三大类(系统环境/系统状态/运维工具),init 建议缓存,队列检查需轮询
│ ├── notice.md ← 通知管理入口 (13 APIs)
│ │ └── 短信和邮件通知的配置+模板管理。均采用 get→改→set 全量覆盖模式,key 和 password 返回时脱敏,email-info 含 liquid_variables 变量列表,reload 会重置所有模板不可逆
│ ├── package.md ← 套餐管理入口 (5 APIs)
│ │ └── 套餐是插件+模版的组合包,店铺绑定后自动获得内容。shop_type 必传(B2C/B2B 各自独立),create 需传 10 个必填字段含 product_max_count,addons_info 只能选付费应用
│ ├── proxy.md ← 代理管理入口 (12 APIs)
│ │ └── HTTP/SOCKS5 代理服务器的 CRUD+全局配置+日志。三大功能域,create/update 全量传参,delete 用 ids 数组,proxy-get/set 全量覆盖,loglist 含 proxy 子对象和 curl_info
│ ├── role.md ← 角色权限入口 (6 APIs)
│ │ └── 角色绑定三类权限资源(admin/b2c/b2b)。create/update 全量传参(5 必填字段),info 返回完整权限树供选取,delete 用 role_ids 数组支持批量,select-list 是 POST
│ ├── store-customer.md ← 店铺顾客入口 (4 APIs)
│ │ └── 管理跨店铺的顾客数据+留言。顾客列表支持 email/phone/shop_id/customer_type 等多维筛选,留言详情含 client_details 浏览器信息,email 参数中 @ 需编码
│ ├── store-inquire.md ← 店铺询盘入口 (4 APIs)
│ │ └── B2C 和 B2B 店铺的客户询盘消息管理。列表支持 shop_id/status 筛选,详情返回关联商品+客户端环境,shop_id 分别从 B2C-select 和 B2B-select 获取
│ ├── store-order.md ← 店铺订单入口 (3 APIs)
│ │ └── 待处理订单(已创建/待发货)vs 未完成订单(弃购/支付失败)。含处理状态枚举(1-4)、支付状态枚举(1-5)、订单详情对两种订单通用、items[].image 为相对路径需拼接
│ ├── store.md ← 店铺管理入口 (28 APIs)
│ │ └── 店铺全生命周期:创建/审核/编辑/回收/套餐/插件绑定。分 5 组 API 表(列表/CRUD/审核/套餐变更/插件/下拉工具),type 与 package 必须匹配,audit 的 shop_id 必须来自待审核列表
│ ├── system-settings.md ← 系统配置入口 (10 APIs)
│ │ └── 全局配置 5 组 get/set 配对(基础/验证码/附件/店铺导航/日志)。全量覆盖模式,quick_links 支持 {shop_id} 变量,附件大小单位 KB,site_enable=2 会关闭所有店铺
│ ├── task-admin.md ← 服务端 Task 入口 (5 APIs)
│ │ └── 服务端异步任务监控,5 种状态/44 种类型。先获取枚举再查列表,info 用 task_id,end-task 用 id 终止
│ ├── task-manager.md ← 商家端 Task 入口 (5 APIs)
│ │ └── 商家端异步任务监控,列表返回含 shop 子对象(id/name/domain)。同 task-admin 参数名模式,2071 条任务
│ ├── theme-diy-lib.md ← 模版装修库入口 (4 APIs)
│ │ └── 预设店铺装修样式管理。49 个 B2C 模版,添加到店铺时模版 type 必须与店铺 type 一致,删除不影响已应用店铺
│ ├── user.md ← 用户管理入口 (13 APIs)
│ │ └── 商户用户全生命周期(审核流+回收站)。type=2 主账户/type=3 子账户,password≥8,info 返回 shops 数组含关联店铺。参数名不一致:info/update 用 id,recover/audit 用 manager_id
│ │
│ ├── account/ ← 操作员管理 (5 个 API 文档)
│ │ ├── list.md 分页查询所有操作员
│ │ ├── info.md 查看操作员详情(含绑定的 role_id)
│ │ ├── create.md 新建操作员(username 唯一,password ≥8 字符,需指定角色)
│ │ ├── update.md 修改操作员信息(昵称/状态/角色等)
│ │ └── delete.md 硬删除操作员(参数名 manager_id,不可恢复)
│ │
│ ├── addons/ ← 应用管理 (8 个 API 文档)
│ │ ├── types.md 查询插件类型枚举列表(9 种:基础应用→AI-人工智能)
│ │ ├── install-status.md 查询插件安装状态枚举(已安装/未安装/安装中)
│ │ ├── enabled-list.md 按店铺类型获取已上架应用(分 themes 和 extensions 两组)
│ │ ├── list.md 分页查询应用列表,支持 addons_type/type/status/install_status 多维筛选
│ │ ├── info.md 查看单个应用详情
│ │ ├── update.md 修改应用信息(上架/下架等)
│ │ ├── extensions-all-enable.md 一键批量上架所有插件
│ │ └── theme-all-enable.md 一键批量上架所有模版
│ │
│ ├── base-image/ ← 图片管理 (3 个 API 文档)
│ │ ├── image-list.md 分页查询服务端图片库,支持时间筛选
│ │ ├── image-upload.md Base64 方式上传图片(去 data:image 前缀)
│ │ └── image-delete.md 批量删除图片(传 image_ids 数组)
│ │
│ ├── base/ ← 系统管理 (9 个 API 文档)
│ │ ├── init.md 获取系统基本信息(插件列表/店铺类型/base_image_url 等),建议缓存
│ │ ├── auth-info.md 查询系统授权信息(域名/到期时间/站点编号)
│ │ ├── version-info.md 查询当前版本和升级状态
│ │ ├── shop_types.md 获取 B2C/B2B 店铺类型可用状态
│ │ ├── shop-and-addons-statistics.md 查询店铺总数/激活数/插件总数
│ │ ├── languages.md 获取系统支持的 26 种语言列表(含货币/国家编码)
│ │ ├── redis-queue-send.md 向 Redis 队列投递测试任务,返回 job_key
│ │ ├── redis-queue-check-result.md 轮询队列处理结果(需每秒 1 次,最多 10 次)
│ │ └── reflush-cache.md 刷新系统缓存(不刷新 Cloudflare CDN)
│ │
│ ├── notice/ ← 通知管理 (13 个 API 文档)
│ │ ├── sms-get.md 获取阿里云短信配置(AccessKey 脱敏返回)
│ │ ├── sms-set.md 保存短信配置(需填明文 Key)
│ │ ├── sms-theme-get.md 获取短信验证码模板(含 captcha_expire_time)
│ │ ├── sms-theme-set.md 保存短信验证码模板
│ │ ├── email-get.md 获取 SMTP 邮件配置(password 脱敏返回)
│ │ ├── email-set.md 保存 SMTP 配置(需填明文 password)
│ │ ├── email-categorys.md 获取邮件模板分类列表
│ │ ├── email-types.md 获取邮件模板类型列表(欢迎/忘记密码/激活等)
│ │ ├── email-theme-list.md 分页查询邮件模板列表
│ │ ├── email-theme-info.md 查看模板详情(含 HTML + liquid_variables 变量列表)
│ │ ├── email-theme-set.md 修改并保存邮件模板
│ │ ├── email-theme-test-send.md 对指定邮箱测试发送邮件
│ │ └── email-theme-reload.md 全部模板恢复默认(不可逆)
│ │
│ ├── package/ ← 套餐管理 (5 个 API 文档)
│ │ ├── list.md 按 shop_type 分页查询套餐(B2C 和 B2B 各自独立)
│ │ ├── info.md 查看套餐完整详情(含插件/模版清单和价格方案)
│ │ ├── create.md 新建套餐(10 个必填字段,类型 1 付费/类型 2 体验)
│ │ ├── update.md 修改套餐(全量覆盖,在创建参数基础上增加 id 字段)
│ │ └── delete.md 批量删除套餐(传 ids 数组,确认无店铺绑定)
│ │
│ ├── proxy/ ← 代理管理 (12 个 API 文档)
│ │ ├── select-arr.md 获取代理下拉选项(店铺绑定时用)
│ │ ├── list.md 分页查询代理列表
│ │ ├── info.md 查看代理详情
│ │ ├── create.md 新建代理(name/type/ip/port/user/password 全必填)
│ │ ├── update.md 修改代理配置(全量传参)
│ │ ├── delete.md 删除代理(传 ids 数组)
│ │ ├── http-type.md 获取协议类型列表(HTTP=1/SOCKS5=2)
│ │ ├── test-ip.md 测试代理是否可用(需 shop_id + proxy_id)
│ │ ├── config-get.md 获取全局代理配置
│ │ ├── config-set.md 保存全局代理配置(全量覆盖)
│ │ ├── loglist.md 分页查询代理日志(含 proxy 子对象和 curl_info)
│ │ └── log-info.md 查看某条代理日志详情
│ │
│ ├── role/ ← 角色权限 (6 个 API 文档)
│ │ ├── list.md 分页查询角色列表,支持名称模糊搜索
│ │ ├── select-list.md 获取角色下拉选项(创建操作员时填充 role_id)
│ │ ├── info.md 查看角色详情(含完整权限树:admin/b2c/b2b 三类 resources)
│ │ ├── create.md 新建角色(全量传参:name + 三类 resources + shop_type)
│ │ ├── update.md 修改角色(同样全量覆盖)
│ │ └── delete.md 删除角色(传 role_ids 数组,支持批量)
│ │
│ ├── schemas/ ← api-doc.js 查询用 Schema (17 个 JSON)
│ │ ├── account.json
│ │ ├── addons.json
│ │ ├── base-image.json
│ │ ├── base.json
│ │ ├── notice.json
│ │ ├── package.json
│ │ ├── proxy.json
│ │ ├── role.json
│ │ ├── store.json
│ │ ├── store-customer.json
│ │ ├── store-inquire.json
│ │ ├── store-order.json
│ │ ├── system-settings.json
│ │ ├── task-admin.json
│ │ ├── task-manager.json
│ │ ├── theme-diy-lib.json
│ │ └── user.json
│ │
│ ├── store/ ← 店铺管理 (28 个 API 文档)
│ │ ├── enable-list.md 分页查询激活中的店铺(支持 name/shop_type/domain 筛选)
│ │ ├── experience-list.md 分页查询体验套餐店铺
│ │ ├── waiting-create-list.md 分页查询待创建状态的店铺
│ │ ├── waiting-audit-list.md 分页查询待审核状态的店铺
│ │ ├── audit-refuse-list.md 分页查询审核被拒绝的店铺
│ │ ├── soft-delete-list.md 分页查询回收站中的店铺
│ │ ├── info.md 查看店铺完整详情
│ │ ├── create.md 创建店铺(需匹配店铺类型和套餐的 shop_type)
│ │ ├── update.md 修改店铺信息(参数名 id,字符串类型)
│ │ ├── soft-delete.md 软删除店铺(移入回收站,可恢复)
│ │ ├── recover.md 从回收站恢复店铺
│ │ ├── audit-accept.md 审核通过(shop_id 必须来自待审核列表)
│ │ ├── audit-refuse.md 审核拒绝(shop_id 必须来自待审核列表)
│ │ ├── change-package.md 更换店铺套餐(先 info 拿 type,再 get-packages 获取同类型套餐)
│ │ ├── change-main-account.md 更换店铺主账号
│ │ ├── change-expire-date.md 修改应用过期时间
│ │ ├── package-list.md 获取可用套餐列表(必须传 shop_type)
│ │ ├── addons-list.md 查看店铺已绑定的插件列表
│ │ ├── all-addons.md 查看系统所有可用插件(按 10 种类型分组)
│ │ ├── add-addons.md 为店铺增加插件
│ │ ├── unbind-addons.md 从店铺解绑插件
│ │ ├── b2c-select-list.md 获取 B2C 店铺下拉选项
│ │ ├── b2b-select-list.md 获取 B2B 店铺下拉选项
│ │ ├── select-list.md 获取全部店铺下拉选项
│ │ ├── test-ip.md 测试店铺绑定 IP 是否可用
│ │ ├── test-proxy-ip.md 测试店铺代理 IP 是否可用
│ │ ├── storage-base-url.md 获取店铺图片存储基础 URL
│ │ └── get-session-key.md 获取店铺临时 session key
│ │
│ ├── store-customer/ ← 店铺顾客 (4 个 API 文档)
│ │ ├── list.md 分页查询顾客列表(支持 email/phone/shop_id/customer_type/国家/时间筛选)
│ │ ├── info.md 查看顾客完整信息(含历史订单和首次进店 URL)
│ │ ├── contacts-list.md 分页查询顾客留言列表
│ │ └── contacts-info.md 查看留言详情(含客户端 browser_ip/UA/来源页等信息)
│ │
│ ├── store-inquire/ ← 店铺询盘 (4 个 API 文档)
│ │ ├── b2c-list.md 分页查询 B2C 店铺的客户询盘列表
│ │ ├── b2c-info.md 查看 B2C 询盘详情(含关联商品和客户端环境)
│ │ ├── b2b-list.md 分页查询 B2B 店铺的客户询盘列表
│ │ └── b2b-info.md 查看 B2B 询盘详情(含关联商品和客户端环境)
│ │
│ ├── store-order/ ← 店铺订单 (3 个 API 文档)
│ │ ├── processing-list.md 查询已创建订单(支持 order_processing_status 筛选:待发货/已发货/已完成/已存档)
│ │ ├── pending-list.md 查询未完成/弃购订单(order_status=1,顾客未完成结账流程)
│ │ └── info.md 查询订单完整详情(对两种订单类型通用,含商品/地址/支付/顾客/操作标识)
│ │
│ ├── system-settings/ ← 系统配置 (10 个 API 文档)
│ │ ├── base-get.md 获取基础配置(站点开关/品牌 Logo/主题色/订单 ID 显示等)
│ │ ├── base-set.md 保存基础配置
│ │ ├── captcha-get.md 获取验证码配置(开关/图片参数)
│ │ ├── captcha-set.md 保存验证码配置
│ │ ├── attachment-get.md 获取附件配置(文件类型白名单和大小限制)
│ │ ├── attachment-set.md 保存附件配置
│ │ ├── store-navigation-get.md 获取商家端后台快捷导航链接
│ │ ├── store-navigation-set.md 保存导航链接(URL 支持 {shop_id} 变量)
│ │ ├── log-config-get.md 获取系统日志记录策略
│ │ └── log-config-set.md 保存日志设置
│ │
│ ├── task-admin/ ← 服务端 Task (5 个 API 文档)
│ │ ├── status-list.md 获取 Task 5 种状态码及含义
│ │ ├── type-list.md 获取 Task 44 种类型码及含义
│ │ ├── list.md 分页查询服务端 Task 列表
│ │ ├── info.md 查看 Task 详细信息和执行参数(参数名 task_id)
│ │ └── end.md 终止运行中的 Task(参数名 id)
│ │
│ ├── task-manager/ ← 商家端 Task (5 个 API 文档)
│ │ ├── status-list.md 获取 Task 状态码
│ │ ├── type-list.md 获取 Task 类型码
│ │ ├── list.md 分页查询商家端 Task(含 shop 子对象)
│ │ ├── info.md 查看商家端 Task 详情(参数名 task_id)
│ │ └── end.md 终止运行中的 Task(参数名 id)
│ │
│ ├── theme-diy-lib/ ← 模版装修库 (4 个 API 文档)
│ │ ├── list.md 分页查询装修模版列表(含 type 字段,10=B2C/20=B2B)
│ │ ├── info.md 查看模版详情
│ │ ├── add-to-shop.md 将模版添加到店铺(模版 type 必须与店铺 type 一致)
│ │ └── delete.md 从库中删除模版
│ │
│ └── user/ ← 用户管理 (13 个 API 文档)
│ ├── enable-list.md 分页查询正常用户
│ ├── waiting-audit-list.md 分页查询待审核用户
│ ├── audit-refuse-list.md 分页查询审核被拒绝的用户
│ ├── disable-list.md 分页查询未激活用户
│ ├── soft-delete-list.md 分页查询回收站中的用户
│ ├── info.md 查看用户完整详情(含关联店铺 shops 数组)
│ ├── select-list.md 获取用户下拉选项(创建店铺时选主账号)
│ ├── create.md 新建用户(password≥8,type 区分主/子账户)
│ ├── update.md 修改用户信息
│ ├── soft-delete.md 软删除用户(移入回收站)
│ ├── soft-deleted-recover.md 从回收站恢复用户(参数名 manager_id)
│ ├── register-audit-accept.md 审核通过注册申请(参数名 manager_id)
│ └── register-audit-refuse.md 审核拒绝注册申请(参数名 manager_id)
│
├── prompts/
│ └── preflight.md ← 站点未配置时展示的提示模板
│ 引导用户提供 URL 和 Access Token
│
├── scripts/
│ ├── base/ ← 配置/鉴权底层模块
│ │ ├── site-config.js ← 站点配置管理核心
│ │ │ 凭据存储在 skill 目录外部(<agent_data>/fecify_admin_skills-shared/sessions/)
│ │ │ 通过 FECIFY_SESSION 环境变量实现会话隔离
│ │ │ 提供域名绑定、配置读写、初始化数据缓存等功能
│ │ ├── api-client.js ← 通用 HTTP 客户端
│ │ │ 自动从 site-config 读取当前会话的 URL 和 Token
│ │ │ 统一拦截常见错误码(Token 无效、权限不足等)
│ │ │ 导出 get/post/put/del/patch 方法
│ │ ├── save-config.js ← 保存站点配置
│ │ │ 用法:node scripts/base/save-config.js "<URL>" "<Token>"
│ │ │ 自动从 URL 提取域名作为存储 key,绑定当前会话
│ │ ├── save-init-data.js ← 保存 base/init 返回的初始化数据
│ │ │ 用法:node scripts/base/save-init-data.js --data <文件>
│ │ │ 缓存 base_image_url、enable_addons 等系统环境信息
│ │ ├── check-config.js ← 检查当前会话是否已配置
│ │ │ 输出 JSON:{ configured, domain, url, token(脱敏) }
│ │ └── preflight-check.js ← 会话前置检查入口
│ │ 检查 URL+Token 和 init-data 两部分是否就绪
│ │ 输出 JSON:{ code: 200/400, checks: [...] }
│ │
│ └── proxy/ ← API 代理/文档查询
│ ├── api-call.js ← 通用 API 调用入口
│ │ 支持 GET/POST/PUT/DELETE/PATCH 五种方法
│ │ --query <文件> 查询参数从 JSON 文件读取
│ │ --data <文件> 请求体从 JSON 文件读取
│ │ --header K:V 附加请求头(可重复使用)
│ │ stdin 管道 Linux/Mac 传请求体(Windows 不适用)
│ │ 响应判断:code==200 成功 / code==-1 错误 / 其他读 message
│ └── api-doc.js ← API 文档查询工具
│ 无参数 列出所有模块
│ --module=<模块名> 列出某模块所有 API
│ --api=<模块>/<API> 查看某 API 详细参数
│ --search=<关键词> 搜索模块或 API
│
└── temp/ ← 临时文件目录
--query/--data 临时 JSON、调试脚本、临时数据等
完成后必须清理,打包 zip 时排除