SuperAPI AI 工具集

frappe-wiki-skill

通用与其它

查看项目

更新于 10-15 21:47

技能介绍

用途:在 Frappe Wiki 中撰写与发布页面。变更请求(CR)相当于一个分支,页面写入其中,再提交、审批、合并后发布。需要 Wiki v3(Wiki Document、Wiki Change Request、Wiki Revision),旧版 v2 的 Wiki Page 不支持变更请求。

主要能力:scripts/wikictl.py 封装 frappectl,仅用标准库,需 Python 3.10+。页面以空间根下的 slug 路径寻址(如 guides/setup/install),也支持 doc_key。工具负责版本记录、临时键与 stdin 传输,无需手写 apply_cr_operations JSON。

使用方式:先定义 shell 函数 wikictl() { python3 <技能目录>/scripts/wikictl.py "$@"; },并设置 export WIKI_SITE=<frappectl profile> 或每次调用加 -s。用 frappectl -s <profile> auth whoami 检查用户自己的 profile;多 profile 且未指定站点时询问用户,无 profile 则停止。所有站点操作都经工具或 frappectl,不直接读写数据库、文件或 bench。

工作流:用 wikictl space "buzz" 解析空间并回显;git-synced 空间拒绝写入,应改 GitHub 仓库;无 contribute 权限则停止;无 write 权限可撰写并提交,需说明审批人。用 wikictl cr new 创建 CR 并 export WIKI_CR,或用 cr draft 复用最新草稿。用 tree 查看结构、cat 读取页面。用 write 创建或替换页面,sync 同步文件夹(先 -n 预览),set 修改属性,mv 移动。内容为原始 markdown,HTML 会按字面显示;页面标题由 Wiki 显示,正文不要以 # 开头。用 cr show 与 diff 审阅,publish 先打印变更列表,publish --yes 才提交、审批、合并并验证。

限制与风险:合并(publish --yes)、删除(rm --yes,级联)与冲突解决不可撤销,须先询问用户。main 在 CR 开始后变动会触发三方合并,冲突按整页解决且命名与 git 相反:ours 是已发布的 main,theirs 是 CR 的改动,解决 ours 会丢弃作者编辑,应交给用户决定。sync 不覆盖他人编辑过的页面,冲突时列出并以退出码 1 结束,仅在用户同意时用 --force。错误处理可重跑命令、缩小改动,仍失败则给出确切命令与错误,并先用 --debug 重跑 frappectl。常见失败包括 version_conflict、slug 错误、缺父级、无变更可提交、git_synced 权限错误、无 Write 权限、合并冲突、HTML 字面显示、null 字段被丢弃(可设为空字符串)。