yuque-cli 0.2.0__tar.gz → 1.0.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. yuque_cli-1.0.12/.claude/settings.json +15 -0
  2. yuque_cli-1.0.12/.claude/settings.local.json +30 -0
  3. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage/SKILL.md +99 -0
  4. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage/evals/evals.json +29 -0
  5. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/benchmark.json +370 -0
  6. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/benchmark.md +13 -0
  7. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/eval_metadata.json +11 -0
  8. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/with_skill/outputs/answer.md +14 -0
  9. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/with_skill/run-1/grading.json +30 -0
  10. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/with_skill/run-1/timing.json +1 -0
  11. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/with_skill/timing.json +1 -0
  12. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/without_skill/outputs/answer.md +20 -0
  13. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/without_skill/run-1/grading.json +30 -0
  14. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/without_skill/run-1/timing.json +1 -0
  15. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-1-create-doc/without_skill/timing.json +1 -0
  16. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/eval_metadata.json +11 -0
  17. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/with_skill/outputs/answer.md +23 -0
  18. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/with_skill/run-1/grading.json +30 -0
  19. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/with_skill/run-1/timing.json +1 -0
  20. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/with_skill/timing.json +1 -0
  21. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/without_skill/outputs/answer.md +27 -0
  22. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/without_skill/run-1/grading.json +30 -0
  23. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/without_skill/run-1/timing.json +1 -0
  24. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-2-auth-login/without_skill/timing.json +1 -0
  25. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/eval_metadata.json +11 -0
  26. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/with_skill/outputs/answer.md +9 -0
  27. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/with_skill/run-1/grading.json +30 -0
  28. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/with_skill/run-1/timing.json +1 -0
  29. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/with_skill/timing.json +1 -0
  30. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/without_skill/outputs/answer.md +18 -0
  31. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/without_skill/run-1/grading.json +30 -0
  32. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/without_skill/run-1/timing.json +1 -0
  33. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-3-update-doc/without_skill/timing.json +1 -0
  34. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/eval_metadata.json +11 -0
  35. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/with_skill/outputs/answer.md +15 -0
  36. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/with_skill/run-1/grading.json +30 -0
  37. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/with_skill/run-1/timing.json +1 -0
  38. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/with_skill/timing.json +1 -0
  39. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/without_skill/outputs/answer.md +36 -0
  40. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/without_skill/run-1/grading.json +30 -0
  41. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/without_skill/run-1/timing.json +1 -0
  42. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-1/eval-4-comment-selection/without_skill/timing.json +1 -0
  43. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/benchmark.json +370 -0
  44. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/benchmark.md +13 -0
  45. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/eval_metadata.json +1 -0
  46. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/with_skill/outputs/answer.md +13 -0
  47. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/with_skill/run-1/grading.json +30 -0
  48. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/with_skill/run-1/timing.json +1 -0
  49. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/with_skill/timing.json +1 -0
  50. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/without_skill/outputs/answer.md +52 -0
  51. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/without_skill/run-1/grading.json +30 -0
  52. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/without_skill/run-1/timing.json +1 -0
  53. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-1-create-doc/without_skill/timing.json +1 -0
  54. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/eval_metadata.json +1 -0
  55. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/with_skill/outputs/answer.md +95 -0
  56. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/with_skill/run-1/grading.json +30 -0
  57. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/with_skill/run-1/timing.json +1 -0
  58. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/with_skill/timing.json +1 -0
  59. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/without_skill/outputs/answer.md +70 -0
  60. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/without_skill/run-1/grading.json +30 -0
  61. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/without_skill/run-1/timing.json +1 -0
  62. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-2-auth-login/without_skill/timing.json +1 -0
  63. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/eval_metadata.json +1 -0
  64. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/with_skill/outputs/answer.md +15 -0
  65. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/with_skill/run-1/grading.json +30 -0
  66. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/with_skill/run-1/timing.json +1 -0
  67. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/with_skill/timing.json +1 -0
  68. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/without_skill/outputs/answer.md +22 -0
  69. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/without_skill/run-1/grading.json +30 -0
  70. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/without_skill/run-1/timing.json +1 -0
  71. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-3-update-doc/without_skill/timing.json +1 -0
  72. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/eval_metadata.json +1 -0
  73. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/with_skill/outputs/answer.md +36 -0
  74. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/with_skill/run-1/grading.json +30 -0
  75. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/with_skill/run-1/timing.json +1 -0
  76. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/with_skill/timing.json +1 -0
  77. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/without_skill/outputs/answer.md +68 -0
  78. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/without_skill/run-1/grading.json +30 -0
  79. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/without_skill/run-1/timing.json +1 -0
  80. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/iteration-2/eval-4-comment-selection/without_skill/timing.json +1 -0
  81. yuque_cli-1.0.12/.claude/skills/yuque-cli-usage-workspace/review.html +1325 -0
  82. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/PKG-INFO +3 -3
  83. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/README.md +2 -2
  84. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/pyproject.toml +1 -1
  85. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/cli.py +15 -14
  86. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/urls.py +21 -5
  87. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_cli.py +5 -5
  88. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_urls.py +33 -9
  89. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/uv.lock +1 -1
  90. yuque_cli-0.2.0/.claude/settings.local.json +0 -21
  91. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/.gitignore +0 -0
  92. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/.python-version +0 -0
  93. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/.vscode/extensions.json +0 -0
  94. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/.vscode/settings.json +0 -0
  95. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/AGENTS.md +0 -0
  96. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/CLAUDE.md +0 -0
  97. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/CONTEXT.md +0 -0
  98. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/docs/adr/0001-use-internal-web-api-with-cookie-auth.md +0 -0
  99. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/docs/adr/0002-cookie-acquisition-cdp-with-manual-fallback.md +0 -0
  100. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/docs/adr/0003-doc-update-fetch-then-merge.md +0 -0
  101. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/docs/internal-api.md +0 -0
  102. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/main.py +0 -0
  103. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/mise.toml +0 -0
  104. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/__init__.py +0 -0
  105. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/__main__.py +0 -0
  106. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/appdata.py +0 -0
  107. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/auth.py +0 -0
  108. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/client.py +0 -0
  109. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/config.py +0 -0
  110. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/errors.py +0 -0
  111. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/inputs.py +0 -0
  112. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/output.py +0 -0
  113. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/src/yuque_cli/session.py +0 -0
  114. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_appdata.py +0 -0
  115. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_auth.py +0 -0
  116. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_client.py +0 -0
  117. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_config.py +0 -0
  118. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_inputs.py +0 -0
  119. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_output.py +0 -0
  120. {yuque_cli-0.2.0 → yuque_cli-1.0.12}/test/test_session.py +0 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "Stop": [
4
+ {
5
+ "matcher": "EDIT|Write",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "if git diff --name-only HEAD 2>/dev/null | grep -q '^src/\\|^pyproject.toml'; then current=$(grep '^version = ' pyproject.toml | head -1 | sed 's/version = \"\\(.*\\)\"/\\1/'); IFS='.' read -r major minor patch <<< \"$current\"; new=\"$major.$minor.$((patch + 1))\"; sed -i '' \"s/^version = \\\".*\\\"/version = \\\"$new\\\"/\" pyproject.toml && echo \"[版本升级] $current → $new (patch)\"; fi"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "mcp__chrome-devtools__new_page",
5
+ "Bash(uv run *)",
6
+ "mcp__context7__resolve-library-id",
7
+ "mcp__context7__query-docs",
8
+ "Bash(uv pip *)",
9
+ "Bash(uv add *)",
10
+ "Bash(ps -p 46455 -o command=)",
11
+ "Bash(curl --noproxy '*' -sS -m 3 -i http://127.0.0.1:9222/)",
12
+ "Bash(curl --noproxy '*' -sS -m 3 http://127.0.0.1:9222/json)",
13
+ "Bash(curl --noproxy '*' -sS -m 3 http://127.0.0.1:9222/json/list)",
14
+ "Bash(python *)",
15
+ "mcp__chrome-devtools__take_snapshot",
16
+ "mcp__chrome-devtools__navigate_page",
17
+ "mcp__chrome-devtools__list_pages",
18
+ "WebSearch",
19
+ "Bash(mkdir *)",
20
+ "Write(/Users/liyujun/w/paykka/devops/yuque-cli/.claude/skills/yuque-cli-usage-workspace/*)",
21
+ "Bash(PYTHONPATH=/Users/liyujun/.claude/plugins/cache/claude-plugins-official/skill-creator/0d82eac145a5/skills/skill-creator python *)",
22
+ "Bash(mkdir -p __TRACKED_VAR__/__TRACKED_VAR__/run-1)",
23
+ "Bash([ -f \"$d/$c/grading.json\" ])",
24
+ "Bash(mv __TRACKED_VAR__/__TRACKED_VAR__/grading.json __TRACKED_VAR__/__TRACKED_VAR__/run-1/)",
25
+ "Bash([ -f \"$d/$c/timing.json\" ])",
26
+ "Bash(cp __TRACKED_VAR__/__TRACKED_VAR__/timing.json __TRACKED_VAR__/__TRACKED_VAR__/run-1/)",
27
+ "Bash(python3 -c ' *)"
28
+ ]
29
+ }
30
+ }
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: yuque-cli-usage
3
+ description: >
4
+ 提供 yuque-cli(语雀命令行客户端)的用法指导。当用户询问语雀 CLI 工具的使用方法、命令语法、认证配置、
5
+ 文档/评论/知识库的增删改查操作、或者询问"怎么用 yuque-cli""yuque 命令怎么用""语雀命令行"等相关问题时,
6
+ 使用此 skill。即使用户没有明确说 "yuque-cli",只要提到语雀的 CLI/命令行操作就应该触发。
7
+ ---
8
+
9
+ # yuque-cli 用法指导
10
+
11
+ 你是语雀命令行客户端(yuque-cli)的用法顾问。你的职责是**简洁准确地**回答用户关于 yuque-cli 的使用问题。
12
+
13
+ ## 信息来源
14
+
15
+ 项目文档位于当前仓库,是回答问题的权威来源:
16
+
17
+ | 文档 | 内容 | 何时查阅 |
18
+ | --- | --- | --- |
19
+ | `README.md` | 安装、快速开始、全部命令和选项 | 命令语法、安装问题 |
20
+ | `CONTEXT.md` | 术语定义(space/repo/doc/comment/slug/namespace) | 术语混淆时 |
21
+ | `docs/internal-api.md` | 内部 API 参考 | 底层 API 行为时 |
22
+ | `docs/adr/` | 关键设计决策 | 为什么这样设计 |
23
+
24
+ **回答前务必先读取相关文档**,确保信息准确。
25
+
26
+ ## 回答风格
27
+
28
+ - 直接给可用命令,不啰嗦背景
29
+ - 用代码块展示命令示例
30
+ - 如果问题超出已文档化的范围,诚实说明并建议查看源码
31
+ - 术语使用参考 CONTEXT.md:空间(space)、知识库(repo)、文档(doc)、评论(comment)、slug
32
+
33
+ ## 核心用法速查
34
+
35
+ 以下是最常见场景的快速参考,详细参数请查 README.md。
36
+
37
+ **安装**:`uvx --from yuque-cli@latest yuque`(一键运行,需 uv);或 `uv tool install yuque-cli`(持久安装)。Python ≥ 3.10 即可。
38
+
39
+ **登录**:`yuque auth login`(自动 CDP 抓 cookie);也可 `--cookie` 直接传入、`--manual` 交互粘贴。
40
+
41
+ **常用命令**:
42
+ ```bash
43
+ yuque auth status # 查看登录身份
44
+ yuque repo list # 列出我的知识库
45
+ yuque doc list <space>/<repo> # 列出文档
46
+ yuque doc get <space>/<repo>/<slug> # 取文档 Markdown
47
+ yuque doc create <space>/<repo> -t "标题" --body "正文" # 创建文档
48
+ yuque doc update <space>/<repo>/<slug> -t "新标题" # 更新文档
49
+ yuque doc delete <space>/<repo>/<slug> # 删除文档(软删)
50
+ yuque comment list <space>/<repo>/<slug> # 列出评论
51
+ yuque comment create <space>/<repo>/<slug> -b "评论内容" # 添加评论
52
+ ```
53
+
54
+ ## 评论(comment)与划词评论
55
+
56
+ **普通评论**(文档级,不关联具体文字):
57
+
58
+ ```bash
59
+ yuque comment create <space>/<repo>/<slug> -b "评论内容"
60
+ ```
61
+
62
+ **划词评论**(关联到文档中某段具体文字),需额外传 `--selection` / `-s` 一个 JSON:
63
+
64
+ ```bash
65
+ yuque comment create <space>/<repo>/<slug> -b "评论内容" -s '<json>'
66
+ ```
67
+
68
+ ### selection JSON 的结构
69
+
70
+ ```json
71
+ {
72
+ "paragraph_id": "u-pid",
73
+ "text": "选中的文字",
74
+ "text_offset": 0,
75
+ "selection_range": {
76
+ "start": {"id": "u-eid", "text": "...", "offset": 0, "paragraphId": "u-pid", "paragraphOffset": 0},
77
+ "end": {"id": "u-eid", "text": "...", "offset": 3, "paragraphId": "u-pid", "paragraphOffset": 3}
78
+ },
79
+ "doc_version_id": 123
80
+ }
81
+ ```
82
+
83
+ 这些 ID 来自语雀文档内部的 Lake 格式结构,**不能凭空编造**。
84
+
85
+ ### 获取 selection JSON 所需 ID
86
+
87
+ 先用 `--json` 模式拉取文档段落结构:
88
+
89
+ ```bash
90
+ yuque --json doc get <space>/<repo>/<slug>
91
+ ```
92
+
93
+ 输出中的 `paragraphs` 数组包含每个段落的 `id`(即 `paragraph_id`)和内部 `spans` 的 `id`,顶层 `doc_version_id` 即为文档版本号。从其中提取需要的值,拼出上方的 selection JSON。
94
+
95
+ ### 重要说明
96
+
97
+ - 不带 `--selection` 就是普通文档级评论,绝大多数场景够用
98
+ - `--selection` 的 JSON 必须是合法 JSON,格式错误会直接报错退出
99
+ - 如果只需要给文档加一条评论、不需要关联到具体文字,直接用普通评论即可
@@ -0,0 +1,29 @@
1
+ {
2
+ "skill_name": "yuque-cli-usage",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "我想在语雀的团队空间(team)里的 handbook 知识库中创建一篇新文档,标题叫「新人入职指南」,内容从本地文件 onboarding.md 读取,不想公开。用 yuque-cli 怎么操作?",
7
+ "expected_output": "给出完整的 yuque doc create 命令,包含 -t 标题、-F 文件读入、--private 选项",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 2,
12
+ "prompt": "yuque auth login 一直卡在等待 Chrome 远程调试,我的 Chrome 没有开那个调试端口,也不想手动粘贴 cookie,有没有其他办法?",
13
+ "expected_output": "说明三种登录方式:CDP 自动(需 Chrome 9222 端口)、--cookie 直接传入、--manual 手动粘贴,给出具体操作",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 3,
18
+ "prompt": "我需要把一个语雀文档更新一下,只改标题不改正文。文档地址是 https://www.yuque.com/myteam/myproject/api-docs。命令行怎么写?",
19
+ "expected_output": "给出 yuque doc update 命令,用 URL 定位文档、-t 改标题,说明 doc update 未给的字段保持原值的合并语义",
20
+ "files": []
21
+ },
22
+ {
23
+ "id": 4,
24
+ "prompt": "我想给语雀上 team/project/design-doc 这篇文档添加一条划词评论,评论内容是「这里需要再确认一下」,用 yuque-cli 的命令行怎么操作?",
25
+ "expected_output": "说明普通评论用 comment create -b,划词评论需额外加 --selection 传 JSON,解释 selection JSON 的作用并给出命令示例",
26
+ "files": []
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,370 @@
1
+ {
2
+ "metadata": {
3
+ "skill_name": "yuque-cli-usage",
4
+ "skill_path": "<path/to/skill>",
5
+ "executor_model": "<model-name>",
6
+ "analyzer_model": "<model-name>",
7
+ "timestamp": "2026-06-02T00:55:22Z",
8
+ "evals_run": [
9
+ 1,
10
+ 2,
11
+ 3,
12
+ 4
13
+ ],
14
+ "runs_per_configuration": 3
15
+ },
16
+ "runs": [
17
+ {
18
+ "eval_id": 1,
19
+ "configuration": "with_skill",
20
+ "run_number": 1,
21
+ "result": {
22
+ "pass_rate": 1.0,
23
+ "passed": 4,
24
+ "failed": 0,
25
+ "total": 4,
26
+ "time_seconds": 23.2,
27
+ "tokens": 23406,
28
+ "tool_calls": 0,
29
+ "errors": 0
30
+ },
31
+ "expectations": [
32
+ {
33
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque doc create",
34
+ "passed": true,
35
+ "evidence": "\u7ed9\u51fa yuque doc create team/handbook -t \"\u65b0\u4eba\u5165\u804c\u6307\u5357\" -F onboarding.md --private"
36
+ },
37
+ {
38
+ "text": "\u5305\u542b\u5fc5\u8981\u53c2\u6570: -t \u6807\u9898, -F \u8bfb\u6587\u4ef6, --private",
39
+ "passed": true,
40
+ "evidence": "\u547d\u4ee4\u4e2d -t\u3001-F\u3001--private \u4e09\u4e2a\u53c2\u6570\u9f50\u5168"
41
+ },
42
+ {
43
+ "text": "\u4f4d\u7f6e\u53c2\u6570\u6b63\u786e: team/handbook",
44
+ "passed": true,
45
+ "evidence": "\u6b63\u786e\u4f7f\u7528 team/handbook \u4f5c\u4e3a\u4f4d\u7f6e\u53c2\u6570"
46
+ },
47
+ {
48
+ "text": "\u56de\u7b54\u7b80\u6d01\uff0c\u65e0\u5197\u4f59\u80cc\u666f\u4ecb\u7ecd",
49
+ "passed": true,
50
+ "evidence": "\u4ec5 15 \u884c\uff0c\u76f4\u63a5\u7ed9\u547d\u4ee4\u548c\u53c2\u6570\u8bf4\u660e"
51
+ }
52
+ ],
53
+ "notes": []
54
+ },
55
+ {
56
+ "eval_id": 2,
57
+ "configuration": "with_skill",
58
+ "run_number": 1,
59
+ "result": {
60
+ "pass_rate": 1.0,
61
+ "passed": 4,
62
+ "failed": 0,
63
+ "total": 4,
64
+ "time_seconds": 48.6,
65
+ "tokens": 33688,
66
+ "tool_calls": 0,
67
+ "errors": 0
68
+ },
69
+ "expectations": [
70
+ {
71
+ "text": "\u63d0\u5230\u4e86 --cookie \u4f5c\u4e3a\u767b\u5f55\u66ff\u4ee3\u65b9\u6848",
72
+ "passed": true,
73
+ "evidence": "\u660e\u786e\u6307\u51fa --cookie \u9009\u9879\uff0c\u7ed9\u51fa\u5b8c\u6574\u547d\u4ee4\u793a\u4f8b"
74
+ },
75
+ {
76
+ "text": "\u8bf4\u660e\u4e86 CDP \u9700\u8981 Chrome 9222 \u7aef\u53e3\u7684\u524d\u63d0",
77
+ "passed": true,
78
+ "evidence": "\u5728\u5907\u9009\u65b9\u6848\u4e2d\u7ed9\u51fa Chrome --remote-debugging-port=9222 \u547d\u4ee4"
79
+ },
80
+ {
81
+ "text": "\u63d0\u5230\u4e86 --manual \u9009\u9879",
82
+ "passed": true,
83
+ "evidence": "\u63d0\u5230 --manual \u65b9\u5f0f\u4f1a\u63d0\u793a\u4ea4\u4e92\u5f0f\u7c98\u8d34 cookie"
84
+ },
85
+ {
86
+ "text": "\u56de\u7b54\u7b80\u6d01\uff0c\u805a\u7126\u4e8e\u89e3\u51b3\u7528\u6237\u95ee\u9898",
87
+ "passed": true,
88
+ "evidence": "24 \u884c\uff0c\u76f4\u63a5\u63a8\u8350 --cookie \u65b9\u6848\u5e76\u6709\u5907\u9009"
89
+ }
90
+ ],
91
+ "notes": []
92
+ },
93
+ {
94
+ "eval_id": 3,
95
+ "configuration": "with_skill",
96
+ "run_number": 1,
97
+ "result": {
98
+ "pass_rate": 1.0,
99
+ "passed": 4,
100
+ "failed": 0,
101
+ "total": 4,
102
+ "time_seconds": 20.8,
103
+ "tokens": 22872,
104
+ "tool_calls": 0,
105
+ "errors": 0
106
+ },
107
+ "expectations": [
108
+ {
109
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque doc update",
110
+ "passed": true,
111
+ "evidence": "yuque doc update myteam/myproject/api-docs -t \"\u65b0\u6807\u9898\""
112
+ },
113
+ {
114
+ "text": "\u53ea\u7528 -t \u6539\u6807\u9898\uff0c\u4e0d\u52a0 -b/-F \u6539\u6b63\u6587",
115
+ "passed": true,
116
+ "evidence": "\u660e\u786e\u6307\u51fa\u4e0d\u52a0 -b/-F \u5c31\u4e0d\u4f1a\u52a8\u6b63\u6587"
117
+ },
118
+ {
119
+ "text": "\u8bf4\u660e\u4e86\u672a\u7ed9\u5b57\u6bb5\u4fdd\u6301\u539f\u503c\u7684\u5408\u5e76\u8bed\u4e49",
120
+ "passed": true,
121
+ "evidence": "\u5148\u53d6\u540e\u5408\u5e76\uff1a\u672a\u7ed9\u7684\u5b57\u6bb5\u4fdd\u6301\u539f\u503c"
122
+ },
123
+ {
124
+ "text": "\u6b63\u786e\u89e3\u6790 URL \u5f97\u5230 space/repo/slug",
125
+ "passed": true,
126
+ "evidence": "\u89e3\u6790\u51fa myteam/myproject/api-docs"
127
+ }
128
+ ],
129
+ "notes": []
130
+ },
131
+ {
132
+ "eval_id": 4,
133
+ "configuration": "with_skill",
134
+ "run_number": 1,
135
+ "result": {
136
+ "pass_rate": 1.0,
137
+ "passed": 4,
138
+ "failed": 0,
139
+ "total": 4,
140
+ "time_seconds": 75.8,
141
+ "tokens": 29844,
142
+ "tool_calls": 0,
143
+ "errors": 0
144
+ },
145
+ "expectations": [
146
+ {
147
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque comment create",
148
+ "passed": true,
149
+ "evidence": "yuque comment create team/project/design-doc -b ... -s ..."
150
+ },
151
+ {
152
+ "text": "\u63d0\u5230\u4e86 --selection/-s \u7528\u4e8e\u5212\u8bcd\u8bc4\u8bba",
153
+ "passed": true,
154
+ "evidence": "\u660e\u786e\u8bf4\u660e --selection / -s \u4f20\u5165\u9009\u4e2d\u533a\u57df\u7684 JSON"
155
+ },
156
+ {
157
+ "text": "\u8bf4\u660e\u4e86 selection JSON \u9700\u4ece --json doc get \u83b7\u53d6\u6bb5\u843d\u7ed3\u6784",
158
+ "passed": true,
159
+ "evidence": "\u9700\u8981\u7528 yuque --json doc get \u5148\u83b7\u53d6\u6bb5\u843d\u7ed3\u6784\u540e\u624d\u80fd\u6784\u9020"
160
+ },
161
+ {
162
+ "text": "\u7ed9\u51fa\u4e86\u65e0 --selection \u7684\u666e\u901a\u8bc4\u8bba\u4f5c\u4e3a\u53d8\u901a\u65b9\u6848",
163
+ "passed": true,
164
+ "evidence": "\u4e0d\u5e26 --selection \u5373\u4e3a\u666e\u901a\u6587\u6863\u7ea7\u8bc4\u8bba\uff0c\u7ed9\u51fa\u4e86\u5b8c\u6574\u547d\u4ee4"
165
+ }
166
+ ],
167
+ "notes": []
168
+ },
169
+ {
170
+ "eval_id": 1,
171
+ "configuration": "without_skill",
172
+ "run_number": 1,
173
+ "result": {
174
+ "pass_rate": 1.0,
175
+ "passed": 4,
176
+ "failed": 0,
177
+ "total": 4,
178
+ "time_seconds": 45.7,
179
+ "tokens": 31002,
180
+ "tool_calls": 0,
181
+ "errors": 0
182
+ },
183
+ "expectations": [
184
+ {
185
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque doc create",
186
+ "passed": true,
187
+ "evidence": "\u7ed9\u51fa yuque doc create team/handbook -t \"\u65b0\u4eba\u5165\u804c\u6307\u5357\" -F onboarding.md --private"
188
+ },
189
+ {
190
+ "text": "\u5305\u542b\u5fc5\u8981\u53c2\u6570: -t \u6807\u9898, -F \u8bfb\u6587\u4ef6, --private",
191
+ "passed": true,
192
+ "evidence": "\u547d\u4ee4\u5305\u542b -t\u3001-F\u3001--private"
193
+ },
194
+ {
195
+ "text": "\u4f4d\u7f6e\u53c2\u6570\u6b63\u786e: team/handbook",
196
+ "passed": true,
197
+ "evidence": "\u6b63\u786e\u4f7f\u7528 team/handbook"
198
+ },
199
+ {
200
+ "text": "\u56de\u7b54\u7b80\u6d01\uff0c\u65e0\u5197\u4f59\u80cc\u666f\u4ecb\u7ecd",
201
+ "passed": true,
202
+ "evidence": "21 \u884c\uff0c\u6709\u989d\u5916\u7684\u7ba1\u9053\u793a\u4f8b\u4f46\u7b97\u8865\u5145\u5b9e\u7528\u4fe1\u606f"
203
+ }
204
+ ],
205
+ "notes": []
206
+ },
207
+ {
208
+ "eval_id": 2,
209
+ "configuration": "without_skill",
210
+ "run_number": 1,
211
+ "result": {
212
+ "pass_rate": 0.75,
213
+ "passed": 3,
214
+ "failed": 1,
215
+ "total": 4,
216
+ "time_seconds": 90.1,
217
+ "tokens": 35760,
218
+ "tool_calls": 0,
219
+ "errors": 0
220
+ },
221
+ "expectations": [
222
+ {
223
+ "text": "\u63d0\u5230\u4e86 --cookie \u4f5c\u4e3a\u767b\u5f55\u66ff\u4ee3\u65b9\u6848",
224
+ "passed": true,
225
+ "evidence": "\u65b9\u6848 1 \u5c31\u662f --cookie\uff0c\u7ed9\u51fa\u5b8c\u6574\u7684 control+f \u8fc7\u6ee4\u5f0f\u83b7\u53d6 cookie \u7684 JS \u4ee3\u7801"
226
+ },
227
+ {
228
+ "text": "\u8bf4\u660e\u4e86 CDP \u9700\u8981 Chrome 9222 \u7aef\u53e3\u7684\u524d\u63d0",
229
+ "passed": true,
230
+ "evidence": "\u65b9\u6848 3 \u7ed9\u51fa Chrome \u8c03\u8bd5\u7aef\u53e3\u542f\u52a8\u547d\u4ee4"
231
+ },
232
+ {
233
+ "text": "\u63d0\u5230\u4e86 --manual \u9009\u9879",
234
+ "passed": false,
235
+ "evidence": "\u7528\u6237\u8bf4\u4e0d\u60f3\u624b\u52a8\u7c98\u8d34\uff0cwithout_skill \u5b8c\u5168\u6ca1\u63d0 --manual\uff0c\u4f46\u8fd9\u662f\u5408\u7406\u7684\u56e0\u4e3a\u7528\u6237\u6392\u9664\u4e86\u8fd9\u4e2a\u9009\u9879"
236
+ },
237
+ {
238
+ "text": "\u56de\u7b54\u7b80\u6d01\uff0c\u805a\u7126\u4e8e\u89e3\u51b3\u7528\u6237\u95ee\u9898",
239
+ "passed": true,
240
+ "evidence": "28 \u884c\uff0c\u4e09\u79cd\u65b9\u6848\u6e05\u6670\u5f52\u7c7b"
241
+ }
242
+ ],
243
+ "notes": []
244
+ },
245
+ {
246
+ "eval_id": 3,
247
+ "configuration": "without_skill",
248
+ "run_number": 1,
249
+ "result": {
250
+ "pass_rate": 1.0,
251
+ "passed": 4,
252
+ "failed": 0,
253
+ "total": 4,
254
+ "time_seconds": 46.5,
255
+ "tokens": 31306,
256
+ "tool_calls": 0,
257
+ "errors": 0
258
+ },
259
+ "expectations": [
260
+ {
261
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque doc update",
262
+ "passed": true,
263
+ "evidence": "yuque doc update myteam/myproject/api-docs -t \"\u65b0\u7684\u6807\u9898\""
264
+ },
265
+ {
266
+ "text": "\u53ea\u7528 -t \u6539\u6807\u9898\uff0c\u4e0d\u52a0 -b/-F \u6539\u6b63\u6587",
267
+ "passed": true,
268
+ "evidence": "\u660e\u786e\u8bf4\u53ea\u7ed9 -t \u5c31\u884c\uff0c\u4e0d\u8981\u7ed9 -b \u6216 -F"
269
+ },
270
+ {
271
+ "text": "\u8bf4\u660e\u4e86\u672a\u7ed9\u5b57\u6bb5\u4fdd\u6301\u539f\u503c\u7684\u5408\u5e76\u8bed\u4e49",
272
+ "passed": true,
273
+ "evidence": "\u6ca1\u7ed9\u7684\u5b57\u6bb5\u4fdd\u6301\u539f\u503c"
274
+ },
275
+ {
276
+ "text": "\u6b63\u786e\u89e3\u6790 URL \u5f97\u5230 space/repo/slug",
277
+ "passed": true,
278
+ "evidence": "\u89e3\u6790\u51fa myteam\u3001myproject\u3001api-docs"
279
+ }
280
+ ],
281
+ "notes": []
282
+ },
283
+ {
284
+ "eval_id": 4,
285
+ "configuration": "without_skill",
286
+ "run_number": 1,
287
+ "result": {
288
+ "pass_rate": 1.0,
289
+ "passed": 4,
290
+ "failed": 0,
291
+ "total": 4,
292
+ "time_seconds": 80.1,
293
+ "tokens": 37902,
294
+ "tool_calls": 0,
295
+ "errors": 0
296
+ },
297
+ "expectations": [
298
+ {
299
+ "text": "\u547d\u4ee4\u4f7f\u7528 yuque comment create",
300
+ "passed": true,
301
+ "evidence": "yuque comment create team/project/design-doc --body ... --selection ..."
302
+ },
303
+ {
304
+ "text": "\u63d0\u5230\u4e86 --selection/-s \u7528\u4e8e\u5212\u8bcd\u8bc4\u8bba",
305
+ "passed": true,
306
+ "evidence": "--selection \u9009\u9879\uff0c\u8be6\u7ec6\u8bf4\u660e\u4e86 selection JSON \u7ed3\u6784"
307
+ },
308
+ {
309
+ "text": "\u8bf4\u660e\u4e86 selection JSON \u9700\u4ece --json doc get \u83b7\u53d6\u6bb5\u843d\u7ed3\u6784",
310
+ "passed": true,
311
+ "evidence": "\u64cd\u4f5c\u6b65\u9aa4\u7b2c 1 \u6b65\u5c31\u662f\u7528 --json doc get \u83b7\u53d6\u6bb5\u843d\u7ed3\u6784"
312
+ },
313
+ {
314
+ "text": "\u7ed9\u51fa\u4e86\u65e0 --selection \u7684\u666e\u901a\u8bc4\u8bba\u4f5c\u4e3a\u53d8\u901a\u65b9\u6848",
315
+ "passed": true,
316
+ "evidence": "\u6ce8\u610f\u4e2d\u8bf4\u660e\u4e0d\u9700\u8981\u5173\u8054\u5230\u5177\u4f53\u6587\u5b57\u76f4\u63a5\u7528\u666e\u901a\u8bc4\u8bba"
317
+ }
318
+ ],
319
+ "notes": []
320
+ }
321
+ ],
322
+ "run_summary": {
323
+ "with_skill": {
324
+ "pass_rate": {
325
+ "mean": 1.0,
326
+ "stddev": 0.0,
327
+ "min": 1.0,
328
+ "max": 1.0
329
+ },
330
+ "time_seconds": {
331
+ "mean": 42.1,
332
+ "stddev": 25.7478,
333
+ "min": 20.8,
334
+ "max": 75.8
335
+ },
336
+ "tokens": {
337
+ "mean": 27452.5,
338
+ "stddev": 5226.7222,
339
+ "min": 22872,
340
+ "max": 33688
341
+ }
342
+ },
343
+ "without_skill": {
344
+ "pass_rate": {
345
+ "mean": 0.9375,
346
+ "stddev": 0.125,
347
+ "min": 0.75,
348
+ "max": 1.0
349
+ },
350
+ "time_seconds": {
351
+ "mean": 65.6,
352
+ "stddev": 22.8861,
353
+ "min": 45.7,
354
+ "max": 90.1
355
+ },
356
+ "tokens": {
357
+ "mean": 33992.5,
358
+ "stddev": 3394.5358,
359
+ "min": 31002,
360
+ "max": 37902
361
+ }
362
+ },
363
+ "delta": {
364
+ "pass_rate": "+0.06",
365
+ "time_seconds": "-23.5",
366
+ "tokens": "-6540"
367
+ }
368
+ },
369
+ "notes": []
370
+ }
@@ -0,0 +1,13 @@
1
+ # Skill Benchmark: yuque-cli-usage
2
+
3
+ **Model**: <model-name>
4
+ **Date**: 2026-06-02T00:55:22Z
5
+ **Evals**: 1, 2, 3, 4 (3 runs each per configuration)
6
+
7
+ ## Summary
8
+
9
+ | Metric | With Skill | Without Skill | Delta |
10
+ |--------|------------|---------------|-------|
11
+ | Pass Rate | 100% ± 0% | 94% ± 12% | +0.06 |
12
+ | Time | 42.1s ± 25.7s | 65.6s ± 22.9s | -23.5s |
13
+ | Tokens | 27452 ± 5227 | 33992 ± 3395 | -6540 |
@@ -0,0 +1,11 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "create-doc",
4
+ "prompt": "我想在语雀的团队空间(team)里的 handbook 知识库中创建一篇新文档,标题叫「新人入职指南」,内容从本地文件 onboarding.md 读取,不想公开。用 yuque-cli 怎么操作?",
5
+ "assertions": [
6
+ {"text": "命令使用 yuque doc create", "passed": null},
7
+ {"text": "包含必要参数: -t 标题, -F 读文件, --private", "passed": null},
8
+ {"text": "位置参数正确: team/handbook", "passed": null},
9
+ {"text": "回答简洁,无冗余背景介绍", "passed": null}
10
+ ]
11
+ }
@@ -0,0 +1,14 @@
1
+ ## 命令
2
+
3
+ ```bash
4
+ yuque doc create team/handbook -t "新人入职指南" -F onboarding.md --private
5
+ ```
6
+
7
+ ## 参数
8
+
9
+ - `team/handbook` — 团队空间 team 下的 handbook 知识库
10
+ - `-t "新人入职指南"` — 文档标题(必填)
11
+ - `-F onboarding.md` — 从本地文件读 Markdown 正文
12
+ - `--private` — 设为不公开
13
+
14
+ 前置:确保已登录 `yuque auth login`。
@@ -0,0 +1,30 @@
1
+ {
2
+ "expectations": [
3
+ {
4
+ "text": "命令使用 yuque doc create",
5
+ "passed": true,
6
+ "evidence": "给出 yuque doc create team/handbook -t \"新人入职指南\" -F onboarding.md --private"
7
+ },
8
+ {
9
+ "text": "包含必要参数: -t 标题, -F 读文件, --private",
10
+ "passed": true,
11
+ "evidence": "命令中 -t、-F、--private 三个参数齐全"
12
+ },
13
+ {
14
+ "text": "位置参数正确: team/handbook",
15
+ "passed": true,
16
+ "evidence": "正确使用 team/handbook 作为位置参数"
17
+ },
18
+ {
19
+ "text": "回答简洁,无冗余背景介绍",
20
+ "passed": true,
21
+ "evidence": "仅 15 行,直接给命令和参数说明"
22
+ }
23
+ ],
24
+ "summary": {
25
+ "passed": 4,
26
+ "failed": 0,
27
+ "total": 4,
28
+ "pass_rate": 1.0
29
+ }
30
+ }
@@ -0,0 +1 @@
1
+ {"total_tokens": 23406, "duration_ms": 23225, "total_duration_seconds": 23.2}
@@ -0,0 +1 @@
1
+ {"total_tokens": 23406, "duration_ms": 23225, "total_duration_seconds": 23.2}
@@ -0,0 +1,20 @@
1
+ ## 前提
2
+
3
+ 登录:`yuque auth login`,验证:`yuque auth status`。
4
+
5
+ ## 命令
6
+
7
+ ```bash
8
+ yuque doc create team/handbook -t "新人入职指南" -F onboarding.md --private
9
+ ```
10
+
11
+ ## 参数说明
12
+
13
+ | 参数 | 含义 |
14
+ |------|------|
15
+ | `team/handbook` | 团队空间 + 知识库名 |
16
+ | `-t "新人入职指南"` | 文档标题(必填) |
17
+ | `-F onboarding.md` | 从本地文件读正文 |
18
+ | `--private` | 不公开 |
19
+
20
+ 也可用管道:`cat onboarding.md | yuque doc create team/handbook -t "新人入职指南" --private`
@@ -0,0 +1,30 @@
1
+ {
2
+ "expectations": [
3
+ {
4
+ "text": "命令使用 yuque doc create",
5
+ "passed": true,
6
+ "evidence": "给出 yuque doc create team/handbook -t \"新人入职指南\" -F onboarding.md --private"
7
+ },
8
+ {
9
+ "text": "包含必要参数: -t 标题, -F 读文件, --private",
10
+ "passed": true,
11
+ "evidence": "命令包含 -t、-F、--private"
12
+ },
13
+ {
14
+ "text": "位置参数正确: team/handbook",
15
+ "passed": true,
16
+ "evidence": "正确使用 team/handbook"
17
+ },
18
+ {
19
+ "text": "回答简洁,无冗余背景介绍",
20
+ "passed": true,
21
+ "evidence": "21 行,有额外的管道示例但算补充实用信息"
22
+ }
23
+ ],
24
+ "summary": {
25
+ "passed": 4,
26
+ "failed": 0,
27
+ "total": 4,
28
+ "pass_rate": 1.0
29
+ }
30
+ }