name: office-adobe-user-provision description: 统一开通/管理 Microsoft 365(世纪互联)与 Adobe Creative Cloud 用户的自包含工具。创建、授权、重置密码、删除、查询、批量、自检,CLI/HTTP API 共用同一套 provider。USE WHEN 给XX开账号, 新建用户, 新增用户, 入职开账号, 开Office, 加Office, 开Adobe, 加Adobe, 全家桶, All Apps, 重置密码, 删除用户, 批量开户, 查用户, office365, adobe, M365, Creative Cloud, 处理开户审批.
统一的 Python CLI,管理 Microsoft 365(世纪互联版) 与 Adobe Creative Cloud 用户。 本 skill 自带完整代码 + 凭据,解压即用,无需再 clone 原仓库。
pip install -r requirements.txt # 首次:requests / python-dotenv / flask(需 Python 3.9+)
# 方式 A —— 自带 CLI(推荐手敲):oup 会自动定位 skill 目录、加载 .env,可从任意路径调用
./oup adobe inspect zhangsan@example.com
ln -sf "$PWD/oup" /usr/local/bin/oup # 可选:软链到 PATH 后全局 `oup adobe ...`
# 方式 B —— 直接调脚本:必须先 cd 到 skill 目录,且用 python3(非交互 shell 里 python 可能是 py2)
cd <本 skill 所在目录> && python3 main.py adobe inspect zhangsan@example.com
下文示例统一用
oup;等价于python3 main.py。别用裸python——很多机器上它指向 Python 2,会直接 SyntaxError。
.env —— 已随包含真实生产配置(CLIENT_SECRET / ADOBE_CLIENT_SECRET / SMTP_PASSWORD / DEFAULT_PASSWORD 等)。.env 已被 .gitignore 排除。把本 skill 放进任何 git 仓库前,务必确认 .env 不会被 git add。绝不能 commit/push 到 GitHub。.env,代码不动(config.py 是唯一读取处)。./oup office365 init # 检查 .env、拉产品、缓存默认 license
./oup adobe init # 检查 .env、拉 Adobe 产品/profile
两条 init 都正常返回产品列表 = 工具可用。失败先看 .env 与下方 Red Flags。
| 用户说 | provider | 命令 |
|---|---|---|
| "给 XX 开账号 / 新建用户"(未说平台) | 先问 | 用 AskUserQuestion 问 provider/LDAP/姓名 |
| "新员工 / 入职开账号" | both | O365 → Adobe 顺序执行 |
| "给 XX 开 Office / 加 Office" | office365 | 见 §3 |
| "给 XX 开 Adobe / 全家桶 / All Apps" | adobe | 见 §4 |
| "批量开户" | — | 需要列表(CSV/粘贴),逐条执行后汇总 |
./oup office365 create <ldap> --display-name "<中文名>" [--product O365_BUSINESS]
--product → 用 init 缓存的默认 license.env SMTP 发通知邮件(含初始密码)id、userPrincipalName、passwordentra.microsoftonline.cn / partner.onmschina.cn),不是国际版./oup adobe create <ldap>@<domain> [--product cc|ps|acrobat]
--product cc/all=全家桶,ps=Photoshop,acrobat=Acrobat ProaddAdobeID + add group 一次完成邀请与授权{"completed":1,"result":"success"}7w4.net小葱技能站,你的AI助手技能库。
inspect,返回 200/存在 → 用 AskUserQuestion 确认是"重置"还是"跳过",绝不静默覆盖。error.group.license_quota_exceeded)→ 报告用户,不静默降级到其他产品。./oup office365 inspect <ldap> --json
./oup adobe inspect <ldap>@<domain> --json
给用户摘要:账号(LDAP+email)、初始密码/邀请说明、已授权产品、登录入口 (O365: https://portal.partner.microsoftonline.cn · Adobe: https://creativecloud.adobe.com)。
./oup <provider> products [--refresh] # 列/刷新产品
./oup <provider> assign <id> --product <p>
./oup <provider> reset <id> # 重置密码
./oup <provider> delete <id> # 删除
./oup <provider> alias <name> <product> # 设产品别名
./oup <provider> selftest # 端到端自检(会建→授→重置→删临时用户)
python3 -m app.api.server # 起 HTTP API(路由镜像 CLI)
provider 别名:office365/o365/m365 同义;adobe/ps 同义。
| 症状 | 原因 | 处理 |
|---|---|---|
O365 Insufficient privileges |
Entra App 权限未管理员同意 | Entra → API 权限 → 授予管理员同意 |
O365 License not available |
license 池用完 | 购买/回收,不硬删他人 |
Adobe error.group.license_quota_exceeded |
座位不够 | 报告用户,不降级 |
Adobe error.domain.trust.nonexistent |
federatedID 但域名未声明 | 改用 adobeID(默认就是) |
任一 init 报 missing env |
.env 缺字段 |
对照 .env.example 补齐 |
入口(main.py CLI / app/api/server.py Flask) → app/services/user_service.py(统一业务门面) → app/providers/{office365,adobe}/(对接外部 API)。
扩展功能先加到 user_service.py 再让 CLI/API 暴露。详见 README.md、docs/README_ADOBE.md、docs/README_API.md。
这个 Skill 质量不错,文档写得很详细,中英文都有,看一遍就能上手。功能覆盖全面,管理 Office 365 和 Adobe 用户的基本操作都有,支持命令行和网页 API 两种方式。安全方面的提醒也很到位。主要问题是文档里提到的「oup」快捷命令和配置模板文件没在压缩包里,需要自己补上才能正常使用,否则得用完整路径调用,体验打折扣。