@cloudglab/confluence-cli 0.0.1
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.
- package/AGENTS.md +34 -0
- package/CHANGELOG.md +26 -0
- package/README.md +147 -0
- package/assets/readme/confluence-cli-hero.png +0 -0
- package/assets/readme/confluence-cli-hero.svg +7 -0
- package/assets/readme/prompts/01-cover-confluence-cli.md +61 -0
- package/dist/api/endpoints.d.ts +404 -0
- package/dist/api/endpoints.js +85 -0
- package/dist/api/index.d.ts +148 -0
- package/dist/api/index.js +143 -0
- package/dist/bin/confluence-reader.d.ts +2 -0
- package/dist/bin/confluence-reader.js +8 -0
- package/dist/bin/confluence-writer.d.ts +2 -0
- package/dist/bin/confluence-writer.js +8 -0
- package/dist/bin/confluence.d.ts +2 -0
- package/dist/bin/confluence.js +11 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +154 -0
- package/dist/core/api-provider.d.ts +3 -0
- package/dist/core/api-provider.js +13 -0
- package/dist/core/changelog.d.ts +7 -0
- package/dist/core/changelog.js +42 -0
- package/dist/core/cli-output.d.ts +16 -0
- package/dist/core/cli-output.js +318 -0
- package/dist/core/cli-registry.d.ts +20 -0
- package/dist/core/cli-registry.js +148 -0
- package/dist/core/command-groups.generated.d.ts +2 -0
- package/dist/core/command-groups.generated.js +88 -0
- package/dist/core/config.d.ts +5 -0
- package/dist/core/config.js +108 -0
- package/dist/core/http-error.d.ts +2 -0
- package/dist/core/http-error.js +4 -0
- package/dist/core/http.d.ts +28 -0
- package/dist/core/http.js +124 -0
- package/dist/core/inline-comment.d.ts +23 -0
- package/dist/core/inline-comment.js +27 -0
- package/dist/core/list-result.d.ts +14 -0
- package/dist/core/list-result.js +81 -0
- package/dist/core/manifest.d.ts +11 -0
- package/dist/core/manifest.js +42 -0
- package/dist/core/pagination.d.ts +26 -0
- package/dist/core/pagination.js +45 -0
- package/dist/core/roles.d.ts +4 -0
- package/dist/core/roles.js +12 -0
- package/dist/core/tool-registry.d.ts +9 -0
- package/dist/core/tool-registry.js +60 -0
- package/dist/core/validation.d.ts +2 -0
- package/dist/core/validation.js +10 -0
- package/dist/core/value.d.ts +2 -0
- package/dist/core/value.js +19 -0
- package/dist/core/write-guard.d.ts +25 -0
- package/dist/core/write-guard.js +49 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/install.d.ts +3 -0
- package/dist/install.js +407 -0
- package/dist/manifest.json +122 -0
- package/dist/tools/attachments.d.ts +2 -0
- package/dist/tools/attachments.js +46 -0
- package/dist/tools/content.d.ts +2 -0
- package/dist/tools/content.js +45 -0
- package/dist/tools/convert.d.ts +2 -0
- package/dist/tools/convert.js +63 -0
- package/dist/tools/init.d.ts +2 -0
- package/dist/tools/init.js +24 -0
- package/dist/tools/install.d.ts +2 -0
- package/dist/tools/install.js +52 -0
- package/dist/tools/labels.d.ts +2 -0
- package/dist/tools/labels.js +22 -0
- package/dist/tools/metadata.d.ts +2 -0
- package/dist/tools/metadata.js +26 -0
- package/dist/tools/rest.d.ts +2 -0
- package/dist/tools/rest.js +52 -0
- package/dist/tools/spaces.d.ts +2 -0
- package/dist/tools/spaces.js +18 -0
- package/dist/tools/transfer.d.ts +2 -0
- package/dist/tools/transfer.js +407 -0
- package/dist/types/common.d.ts +17 -0
- package/dist/types/common.js +2 -0
- package/dist/update-probe.d.ts +2 -0
- package/dist/update-probe.js +142 -0
- package/dist/utils/mark-metadata.d.ts +9 -0
- package/dist/utils/mark-metadata.js +16 -0
- package/dist/utils/markdown.d.ts +9 -0
- package/dist/utils/markdown.js +220 -0
- package/dist/utils/result.d.ts +3 -0
- package/dist/utils/result.js +7 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +2 -0
- package/docs/confluence-7.13.7-api.md +183 -0
- package/docs/index.html +608 -0
- package/docs/release.md +41 -0
- package/package.json +63 -0
- package/skills/confluence-cli/SKILL.md +63 -0
- package/skills/confluence-cli/reference/cli.md +36 -0
- package/skills/confluence-cli/reference/commands.md +41 -0
- package/skills/confluence-cli/reference/content.md +23 -0
- package/skills/confluence-cli/reference/overview.md +23 -0
- package/skills/confluence-cli/reference/rest.md +19 -0
- package/skills/confluence-cli/reference/transfer.md +27 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# confluence-cli
|
|
2
|
+
|
|
3
|
+
面向 Agent 和本地自动化的 Confluence REST CLI。整体结构参考 `zentao-cli`:命令注册表、工具分层、REST API 封装、结果统一为 JSON content。
|
|
4
|
+
|
|
5
|
+
## 开发约定
|
|
6
|
+
|
|
7
|
+
- README 面向用户,AGENTS 放实现细节。
|
|
8
|
+
- 真实写操作必须显式传 `confirm=true`;没有确认时只返回预览或 dry-run 信息。
|
|
9
|
+
- 不要提交代码,除非用户明确要求。
|
|
10
|
+
- 优先运行轻量验证:`pnpm typecheck`、`pnpm build`。
|
|
11
|
+
|
|
12
|
+
## 常用命令
|
|
13
|
+
|
|
14
|
+
- `pnpm install`
|
|
15
|
+
- `pnpm dev list`
|
|
16
|
+
- `pnpm dev:reader list`
|
|
17
|
+
- `pnpm dev:writer list`
|
|
18
|
+
- `pnpm dev searchContent --cql 'space = "DEV" AND text ~ "API"'`
|
|
19
|
+
- `pnpm typecheck`
|
|
20
|
+
- `pnpm build`
|
|
21
|
+
- `pnpm test`
|
|
22
|
+
- `pnpm release:smoke-query --dry-run`
|
|
23
|
+
|
|
24
|
+
## 配置来源
|
|
25
|
+
|
|
26
|
+
凭证发现顺序:显式 `envFile`、环境变量、当前/父目录 `.env*`、Home `.env*`、MCP 配置。
|
|
27
|
+
|
|
28
|
+
支持变量:
|
|
29
|
+
|
|
30
|
+
- `CONFLUENCE_URL`
|
|
31
|
+
- `CONFLUENCE_API_BASE_URL`
|
|
32
|
+
- `CONFLUENCE_PAT` 或 `CONFLUENCE_PERSONAL_TOKEN`(Confluence 7.13.7 推荐,Bearer)
|
|
33
|
+
- `CONFLUENCE_USERNAME` + `CONFLUENCE_PASSWORD` 或 `CONFLUENCE_API_TOKEN`(Basic 兼容)
|
|
34
|
+
- `CONFLUENCE_DISABLE_WRITE=true` 可禁用所有真实写操作,即使传了 `confirm=true` 也只返回预览/诊断。
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## 0.0.1 - 2026-06-15
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- 初始 Confluence REST CLI,覆盖配置发现、CQL 搜索、页面读取、REST API 通用调用、Markdown/HTML 上传、附件、标签、评论和页面下载。
|
|
10
|
+
- Markdown/HTML 上传支持 Mermaid 默认 PNG 附件渲染、双 TOC 宏、dry-run 预览与 `confirm=true` 写入保护。
|
|
11
|
+
- Skill 与 README 记录完整页面发布默认携带 `--toc` 的标准流程。
|
|
12
|
+
- 工程化补齐 Vitest、release smoke、bin 权限修复、lefthook、GitHub Pages、npm publish、安装/更新命令、更新探针、角色 bin、静态文档页和 README 封面资产。
|
|
13
|
+
- 顶层内置 `install` / `update` / `upgrade` / `uninstall` / `remove` 命令(`npx -y @cloudglab/confluence-cli@latest install`),对齐 `zentao-cli`:
|
|
14
|
+
- `runUninstallCommand` 支持 `--confirm`、`--keep-config`、`--cli-only`、`--skill-only` 预览与真实执行。
|
|
15
|
+
- `install` / `update` 链路上增加 npm 全局残留目录与 `~/.npm/_npx` 缓存的清理与重试,应对 `ENOTEMPTY` / `directory not empty` 失败。
|
|
16
|
+
- `npx -y skills add` 采用 `npx -y skills add <source> --yes` 形式,支持 `npx -y skills remove confluence-cli --yes`。
|
|
17
|
+
- 安装 / 更新成功后写入 `~/.confluence/update-check.json`;后台版本检查改为解绑子进程。
|
|
18
|
+
- ZenTao 风格的 `.opencode/opencode.json` 项目级 OpenCode 命令:包含 `release` 发布流程与 `smoke` 烟测提示。
|
|
19
|
+
- `skills/confluence-cli/SKILL.md` 自带合规 YAML frontmatter(`name` + `description`),可直接 `npx -y skills add` 安装。
|
|
20
|
+
- 单元测试覆盖:`uninstall` 预览、新版 update probe 缓存命中与 `writeUpdateCacheAfterInstall` 写盘路径、SKILL.md frontmatter 回归校验。
|
|
21
|
+
|
|
22
|
+
### Notes
|
|
23
|
+
|
|
24
|
+
- 0.0.1 是项目对外的第一个版本,发布前已通过 `pnpm check`(lint / typecheck / 61 项 vitest)与 `pnpm release:smoke-query --dry-run`(40 通过、6 跳过、0 失败),并本地真实调用 `npx -y skills add <source> --yes` 验证 install 链路。
|
|
25
|
+
- `.github/workflows/publish.yml` 只负责 tag push 后的 `npm publish --provenance --access public`,不创建 GitHub Release。
|
|
26
|
+
- tarball 用 `!dist/**/*.map` 排除 source map,发布前 `npm pack --dry-run` 仅 100 个文件、1.3 MB。
|
package/README.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# confluence-cli
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Confluence REST CLI,提炼自 `confluence-skill` 的常用能力,并按 `zentao-cli` 的 TypeScript CLI 架构实现。
|
|
6
|
+
|
|
7
|
+
## 安装与开发
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm install
|
|
11
|
+
pnpm build
|
|
12
|
+
pnpm dev help
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
常用工程命令:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm typecheck
|
|
19
|
+
pnpm build
|
|
20
|
+
pnpm test
|
|
21
|
+
pnpm release:smoke-query --dry-run
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
安装/更新入口:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
confluence install --skip-config-check true
|
|
28
|
+
confluence update --skip-config-check true
|
|
29
|
+
npx -y @cloudglab/confluence-cli@latest install
|
|
30
|
+
npx -y @cloudglab/confluence-cli@latest update
|
|
31
|
+
confluence-reader list
|
|
32
|
+
confluence-writer list
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
卸载入口(默认仅打印卸载计划,真实执行需显式确认):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
confluence uninstall
|
|
39
|
+
confluence uninstall --confirm true
|
|
40
|
+
confluence uninstall --confirm true --keep-config true
|
|
41
|
+
npx -y @cloudglab/confluence-cli@latest uninstall --confirm true
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
本地命令速查页:`docs/index.html`。
|
|
45
|
+
|
|
46
|
+
## 配置
|
|
47
|
+
|
|
48
|
+
推荐使用环境变量或 `.env.confluence`:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
CONFLUENCE_URL=https://confluence.example.com
|
|
52
|
+
CONFLUENCE_PAT=your-personal-access-token
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Confluence Server/Data Center 7.13.7 的 Personal Access Token 使用 `Authorization: Bearer <token>`。CLI 也保留 Basic 兼容模式:`CONFLUENCE_USERNAME` + `CONFLUENCE_PASSWORD` 或 `CONFLUENCE_API_TOKEN`。
|
|
56
|
+
|
|
57
|
+
CLI 会按顺序查找:显式 `envFile`、环境变量、当前/父目录 `.env`、`.env.confluence`、`.env.jira`、`.env.atlassian`、Home 目录同名文件、MCP 配置。
|
|
58
|
+
|
|
59
|
+
## 命令示例
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
confluence list
|
|
63
|
+
confluence searchContent --cql 'space = "DEV" AND text ~ "API"'
|
|
64
|
+
confluence getContent --id 123456
|
|
65
|
+
confluence listRestApis --group content
|
|
66
|
+
confluence listRestApis --group content --limit 20
|
|
67
|
+
confluence callRestApi --method GET --path '/content/{id}' --pathParams '{"id":"123456"}' --query '{"expand":"body.storage,version"}'
|
|
68
|
+
confluence convertMarkdownToWiki --file docs/page.md
|
|
69
|
+
confluence convertMermaidToDrawio --file docs/diagram.md
|
|
70
|
+
confluence convertMermaidToDrawio --text 'graph TD\n A-->B' --output /tmp/demo.drawio
|
|
71
|
+
confluence generateMarkMetadata --file docs/page.md --space DEV --title "API Guide"
|
|
72
|
+
confluence uploadMarkdown --file docs/page.md --space DEV --toc --confirm false
|
|
73
|
+
confluence uploadMarkdown --file docs/page.md --id 123456 --attachments '["docs/a.png"]' --toc --confirm true
|
|
74
|
+
confluence uploadMarkdown --file docs/page.md --id 123456 --mermaid png --toc --confirm true
|
|
75
|
+
confluence downloadPage --id 123456 --outputDir exports --downloadAttachments true --downloadChildren true
|
|
76
|
+
confluence getPageChildren --id 123456 --type page
|
|
77
|
+
confluence getLabels --id 123456
|
|
78
|
+
confluence addLabels --id 123456 --labels '["api","docs"]' --confirm true
|
|
79
|
+
confluence listAttachments --id 123456
|
|
80
|
+
confluence uploadAttachment --id 123456 --file docs/a.png --confirm true
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Confluence 7.13.7 REST API 对齐
|
|
84
|
+
|
|
85
|
+
`docs/confluence-7.13.7-api.md` 记录了从官方 `https://docs.atlassian.com/ConfluenceServer/rest/7.13.7/` 提取的全量 REST API。
|
|
86
|
+
|
|
87
|
+
CLI 通过两个通用命令对齐所有端点:
|
|
88
|
+
|
|
89
|
+
- `listRestApis`:按 `method`、`group`、`write` 过滤官方端点模板。
|
|
90
|
+
- `callRestApi`:按官方端点模板调用 API;所有写接口仍必须显式传 `confirm=true`。
|
|
91
|
+
|
|
92
|
+
## 写操作保护
|
|
93
|
+
|
|
94
|
+
`uploadMarkdown`、`deleteContent`、`addComment`、`addLabels`、`deleteLabel`、`uploadAttachment`、`updateAttachment` 默认不会写入 Confluence。只有传入 `confirm=true` 时才会执行真实写操作。
|
|
95
|
+
|
|
96
|
+
如需在自动化环境中临时禁止所有真实写操作,可设置:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
CONFLUENCE_DISABLE_WRITE=true
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
如需关闭启动时的每日更新探针,可设置:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
CONFLUENCE_SKIP_UPDATE_CHECK=true
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
发布前可先运行 `pnpm release:smoke-query --dry-run` 检查 CLI 命令面;需要真实查询时先 `pnpm build`,再按需设置 `CONFLUENCE_SMOKE_CONTENT_ID`、`CONFLUENCE_SMOKE_SPACE`、`CONFLUENCE_SMOKE_TITLE` 等变量。
|
|
109
|
+
|
|
110
|
+
## MCP / Python 能力的 TS CLI 对应
|
|
111
|
+
|
|
112
|
+
| 原 skill 能力 | 当前 CLI 命令 |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| `confluence_search` | `searchContent` |
|
|
115
|
+
| `confluence_get_page` | `getContent`, `findContent` |
|
|
116
|
+
| `confluence_create_page` / `confluence_update_page` | `uploadMarkdown` |
|
|
117
|
+
| `confluence_delete_page` | `deleteContent` |
|
|
118
|
+
| `confluence_get_page_children` | `getPageChildren` |
|
|
119
|
+
| `confluence_get_comments` / `confluence_add_comment` | `getComments`, `addComment` |
|
|
120
|
+
| `confluence_get_labels` / `confluence_add_label` | `getLabels`, `addLabels`, `deleteLabel` |
|
|
121
|
+
| Python Markdown 上传脚本 | `uploadMarkdown --attachments ...` |
|
|
122
|
+
| Python 下载脚本 | `downloadPage --downloadAttachments true --downloadChildren true` |
|
|
123
|
+
| Python 附件处理 | `listAttachments`, `uploadAttachment`, `updateAttachment`, `downloadAttachment` |
|
|
124
|
+
| mark metadata 脚本 | `generateMarkMetadata` |
|
|
125
|
+
|
|
126
|
+
## 已迁移能力
|
|
127
|
+
|
|
128
|
+
- Confluence 凭证发现
|
|
129
|
+
- CQL 搜索与页面读取
|
|
130
|
+
- Confluence 7.13.7 全量 REST API 端点注册与通用调用
|
|
131
|
+
- MCP 页面/子页/评论/标签能力的语义化 CLI 命令
|
|
132
|
+
- Markdown 转 Confluence Wiki Markup
|
|
133
|
+
- Markdown/HTML 上传时默认用 `mermaid-cli` 将 Mermaid 渲染为 PNG 附件并以内置图片宏展示,必要时可用 `--mermaid none` 保留原代码块
|
|
134
|
+
- mark 风格 metadata 生成
|
|
135
|
+
- Markdown 上传预览、确认写入和附件上传
|
|
136
|
+
- 页面下载为带 frontmatter 的 Markdown,并可下载附件和一层子页
|
|
137
|
+
- 工程化脚本:Vitest 单元测试、发布前查询 smoke、bin 权限修复、CHANGELOG 和 lefthook 检查入口
|
|
138
|
+
- 安装/更新命令、每日更新探针、角色 bin 入口、静态命令速查页和 README 封面资产
|
|
139
|
+
|
|
140
|
+
## 项目级 OpenCode 命令
|
|
141
|
+
|
|
142
|
+
`.opencode/opencode.json` 提供了两个项目级 OpenCode 命令:
|
|
143
|
+
|
|
144
|
+
- `release`:复刻 zentao-cli 的 `/release` 流程,按 12 步固定顺序准备发布;默认手动发包,**未经再次授权不会执行 `npm publish`、`git push`、打 tag 或创建 GitHub Release**。
|
|
145
|
+
- `smoke`:检查当前 CLI 的烟测与验证入口(`pnpm release:smoke-query --dry-run`、`pnpm typecheck`、`pnpm build` 等)。
|
|
146
|
+
|
|
147
|
+
修改 `.opencode/opencode.json` 后,需要退出并重启 OpenCode 才能生效。
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 720" role="img" aria-label="Confluence CLI">
|
|
2
|
+
<rect width="1440" height="720" fill="#fbfaf7"/>
|
|
3
|
+
<rect x="32" y="32" width="1376" height="656" fill="none" stroke="#161616" stroke-width="4"/>
|
|
4
|
+
<path d="M140 502L376 234h132L272 502H140Zm244 0L620 234h132L516 502H384Zm244 0L864 234h132L760 502H628Zm244 0L1108 234h132L1004 502H872Z" fill="#161616"/>
|
|
5
|
+
<text x="140" y="180" fill="#161616" font-family="Inter,Arial,sans-serif" font-size="96" font-weight="800" letter-spacing="-6">Confluence CLI</text>
|
|
6
|
+
<text x="140" y="258" fill="#606060" font-family="Inter,Arial,sans-serif" font-size="34">install · update · docs · release · tests</text>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: confluence-cli
|
|
3
|
+
aspect: 16:9
|
|
4
|
+
provider: openai
|
|
5
|
+
model: gpt-image-2
|
|
6
|
+
quality: 2k
|
|
7
|
+
output: assets/readme/confluence-cli-hero.png
|
|
8
|
+
references: []
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
为 `confluence-cli` 生成一张 README / 官网首屏 hero banner,严格保留参考图的整体视觉语言与版式气质,不要自由发挥到别的方向。
|
|
12
|
+
|
|
13
|
+
核心视觉要求:
|
|
14
|
+
- bright, white glassmorphism, premium SaaS, clean, modern, airy, translucent panels, soft blue glow, subtle depth, elegant spacing, readable typography, product marketing hero banner
|
|
15
|
+
- 整体必须是明亮、科技感、白色玻璃拟态、高端 SaaS 官网横幅风格
|
|
16
|
+
- 不要暗色,不要黑底终端风格,不要霓虹赛博黑背景
|
|
17
|
+
- 背景以大面积白色和浅蓝色为主,带柔和蓝色光晕、半透明玻璃卡片、细腻阴影、空气感留白
|
|
18
|
+
- 主品牌色明确使用 `#1075F1`
|
|
19
|
+
|
|
20
|
+
构图要求:
|
|
21
|
+
- 宽屏 16:9,标准 hero banner 构图,左文右图
|
|
22
|
+
- 左侧为大标题、简洁 slogan、1 到 2 行描述、以及 3 到 4 个核心数据模块
|
|
23
|
+
- 右侧为 3 到 4 个明亮玻璃卡片,展示真实使用场景示例
|
|
24
|
+
- 整体版式要像成熟 SaaS 官网首屏,均匀、整洁、克制,留白充足
|
|
25
|
+
- 文字显著更大、更清晰、更规整,避免过小、拥挤、难读
|
|
26
|
+
|
|
27
|
+
左侧文案内容:
|
|
28
|
+
- 顶部品牌标题:`CONFLUENCE-CLI`
|
|
29
|
+
- 主 slogan:`让 Confluence 工作流,直接进入命令行。`
|
|
30
|
+
- 描述文案:`面向 CLI / AI Skill 的 Confluence 工具链,覆盖内容发布、任务协作、测试校验与发布流程,让文档工作流更稳定、更可复用。`
|
|
31
|
+
- 核心数据做成 3 到 4 个分层清晰的标签或玻璃卡片:
|
|
32
|
+
- `30+ 命令`
|
|
33
|
+
- `AI Skill Ready`
|
|
34
|
+
- `Docs / Task / Bug / Test / Release`
|
|
35
|
+
- `Reader / Writer / Full`
|
|
36
|
+
|
|
37
|
+
右侧场景卡片内容:
|
|
38
|
+
- 卡片 1:`内容发布 workflow` / `Markdown → Confluence 页面 / 附件 / 标签`
|
|
39
|
+
- 卡片 2:`任务与 Bug 同步` / `聚合任务、Bug、页面评论与上下文`
|
|
40
|
+
- 卡片 3:`测试与校验` / `typecheck、smoke query、发布前检查`
|
|
41
|
+
- 卡片 4:`Release automation` / `构建、文档、版本发布流程`
|
|
42
|
+
- 这些卡片必须像真实产品能力示例,不要堆抽象词,不要出现 MCP、server、agent marketplace
|
|
43
|
+
|
|
44
|
+
视觉细节:
|
|
45
|
+
- 右侧卡片是白色半透明玻璃拟态,圆角较大,浅蓝描边,轻微发光与柔和阴影
|
|
46
|
+
- 卡片之间留白均匀,排列整洁,不能拥挤
|
|
47
|
+
- 可以加入极浅的抽象蓝色流体形状、柔和发光球体、细线框或轻量数据图形作为背景支撑,但不能喧宾夺主
|
|
48
|
+
- 整体更像高端产品营销图,而不是技术架构图
|
|
49
|
+
- 保持可读性优先,中文文字要清晰,不要糊成装饰
|
|
50
|
+
|
|
51
|
+
避免事项:
|
|
52
|
+
- 不要暗色背景
|
|
53
|
+
- 不要黑色终端窗口作为主视觉
|
|
54
|
+
- 不要写太多小字
|
|
55
|
+
- 不要出现无关概念或复杂 UI 噪音
|
|
56
|
+
- 不要照片感、真人、写实 3D 角色
|
|
57
|
+
|
|
58
|
+
输出要求:
|
|
59
|
+
- 直接生成适合作为 GitHub README 顶部横幅和官网首屏的成品
|
|
60
|
+
- 四周保留安全边距,避免裁切文字
|
|
61
|
+
- 最终观感要尽量贴近参考图的明亮白蓝玻璃拟态横幅气质
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
export type RestMethod = "GET" | "POST" | "PUT" | "DELETE";
|
|
2
|
+
export interface RestEndpoint {
|
|
3
|
+
method: RestMethod;
|
|
4
|
+
path: string;
|
|
5
|
+
group: string;
|
|
6
|
+
write: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const CONFLUENCE_7_13_7_ENDPOINTS: readonly [{
|
|
9
|
+
readonly method: "GET";
|
|
10
|
+
readonly path: "/accessmode";
|
|
11
|
+
readonly group: "accessmode";
|
|
12
|
+
readonly write: false;
|
|
13
|
+
}, {
|
|
14
|
+
readonly method: "GET";
|
|
15
|
+
readonly path: "/audit";
|
|
16
|
+
readonly group: "audit";
|
|
17
|
+
readonly write: false;
|
|
18
|
+
}, {
|
|
19
|
+
readonly method: "POST";
|
|
20
|
+
readonly path: "/audit";
|
|
21
|
+
readonly group: "audit";
|
|
22
|
+
readonly write: true;
|
|
23
|
+
}, {
|
|
24
|
+
readonly method: "GET";
|
|
25
|
+
readonly path: "/audit/export";
|
|
26
|
+
readonly group: "audit";
|
|
27
|
+
readonly write: false;
|
|
28
|
+
}, {
|
|
29
|
+
readonly method: "GET";
|
|
30
|
+
readonly path: "/audit/retention";
|
|
31
|
+
readonly group: "audit";
|
|
32
|
+
readonly write: false;
|
|
33
|
+
}, {
|
|
34
|
+
readonly method: "PUT";
|
|
35
|
+
readonly path: "/audit/retention";
|
|
36
|
+
readonly group: "audit";
|
|
37
|
+
readonly write: true;
|
|
38
|
+
}, {
|
|
39
|
+
readonly method: "GET";
|
|
40
|
+
readonly path: "/audit/since";
|
|
41
|
+
readonly group: "audit";
|
|
42
|
+
readonly write: false;
|
|
43
|
+
}, {
|
|
44
|
+
readonly method: "GET";
|
|
45
|
+
readonly path: "/content";
|
|
46
|
+
readonly group: "content";
|
|
47
|
+
readonly write: false;
|
|
48
|
+
}, {
|
|
49
|
+
readonly method: "POST";
|
|
50
|
+
readonly path: "/content";
|
|
51
|
+
readonly group: "content";
|
|
52
|
+
readonly write: true;
|
|
53
|
+
}, {
|
|
54
|
+
readonly method: "GET";
|
|
55
|
+
readonly path: "/content/search";
|
|
56
|
+
readonly group: "content";
|
|
57
|
+
readonly write: false;
|
|
58
|
+
}, {
|
|
59
|
+
readonly method: "POST";
|
|
60
|
+
readonly path: "/content/blueprint/instance/{draftId}";
|
|
61
|
+
readonly group: "content";
|
|
62
|
+
readonly write: true;
|
|
63
|
+
}, {
|
|
64
|
+
readonly method: "PUT";
|
|
65
|
+
readonly path: "/content/blueprint/instance/{draftId}";
|
|
66
|
+
readonly group: "content";
|
|
67
|
+
readonly write: true;
|
|
68
|
+
}, {
|
|
69
|
+
readonly method: "PUT";
|
|
70
|
+
readonly path: "/content/{contentId}";
|
|
71
|
+
readonly group: "content";
|
|
72
|
+
readonly write: true;
|
|
73
|
+
}, {
|
|
74
|
+
readonly method: "GET";
|
|
75
|
+
readonly path: "/content/{id}";
|
|
76
|
+
readonly group: "content";
|
|
77
|
+
readonly write: false;
|
|
78
|
+
}, {
|
|
79
|
+
readonly method: "DELETE";
|
|
80
|
+
readonly path: "/content/{id}";
|
|
81
|
+
readonly group: "content";
|
|
82
|
+
readonly write: true;
|
|
83
|
+
}, {
|
|
84
|
+
readonly method: "GET";
|
|
85
|
+
readonly path: "/content/{id}/child";
|
|
86
|
+
readonly group: "content-child";
|
|
87
|
+
readonly write: false;
|
|
88
|
+
}, {
|
|
89
|
+
readonly method: "GET";
|
|
90
|
+
readonly path: "/content/{id}/child/attachment";
|
|
91
|
+
readonly group: "attachment";
|
|
92
|
+
readonly write: false;
|
|
93
|
+
}, {
|
|
94
|
+
readonly method: "POST";
|
|
95
|
+
readonly path: "/content/{id}/child/attachment";
|
|
96
|
+
readonly group: "attachment";
|
|
97
|
+
readonly write: true;
|
|
98
|
+
}, {
|
|
99
|
+
readonly method: "PUT";
|
|
100
|
+
readonly path: "/content/{id}/child/attachment/{attachmentId}";
|
|
101
|
+
readonly group: "attachment";
|
|
102
|
+
readonly write: true;
|
|
103
|
+
}, {
|
|
104
|
+
readonly method: "POST";
|
|
105
|
+
readonly path: "/content/{id}/child/attachment/{attachmentId}/data";
|
|
106
|
+
readonly group: "attachment";
|
|
107
|
+
readonly write: true;
|
|
108
|
+
}, {
|
|
109
|
+
readonly method: "GET";
|
|
110
|
+
readonly path: "/content/{id}/child/comment";
|
|
111
|
+
readonly group: "content-child";
|
|
112
|
+
readonly write: false;
|
|
113
|
+
}, {
|
|
114
|
+
readonly method: "GET";
|
|
115
|
+
readonly path: "/content/{id}/child/{type}";
|
|
116
|
+
readonly group: "content-child";
|
|
117
|
+
readonly write: false;
|
|
118
|
+
}, {
|
|
119
|
+
readonly method: "GET";
|
|
120
|
+
readonly path: "/content/{id}/descendant";
|
|
121
|
+
readonly group: "content-descendant";
|
|
122
|
+
readonly write: false;
|
|
123
|
+
}, {
|
|
124
|
+
readonly method: "GET";
|
|
125
|
+
readonly path: "/content/{id}/descendant/{type}";
|
|
126
|
+
readonly group: "content-descendant";
|
|
127
|
+
readonly write: false;
|
|
128
|
+
}, {
|
|
129
|
+
readonly method: "GET";
|
|
130
|
+
readonly path: "/content/{id}/history";
|
|
131
|
+
readonly group: "content-history";
|
|
132
|
+
readonly write: false;
|
|
133
|
+
}, {
|
|
134
|
+
readonly method: "GET";
|
|
135
|
+
readonly path: "/content/{id}/history/{version}/macro/hash/{hash}";
|
|
136
|
+
readonly group: "content-macro";
|
|
137
|
+
readonly write: false;
|
|
138
|
+
}, {
|
|
139
|
+
readonly method: "GET";
|
|
140
|
+
readonly path: "/content/{id}/history/{version}/macro/id/{macroId}";
|
|
141
|
+
readonly group: "content-macro";
|
|
142
|
+
readonly write: false;
|
|
143
|
+
}, {
|
|
144
|
+
readonly method: "GET";
|
|
145
|
+
readonly path: "/content/{id}/label";
|
|
146
|
+
readonly group: "label";
|
|
147
|
+
readonly write: false;
|
|
148
|
+
}, {
|
|
149
|
+
readonly method: "POST";
|
|
150
|
+
readonly path: "/content/{id}/label";
|
|
151
|
+
readonly group: "label";
|
|
152
|
+
readonly write: true;
|
|
153
|
+
}, {
|
|
154
|
+
readonly method: "DELETE";
|
|
155
|
+
readonly path: "/content/{id}/label";
|
|
156
|
+
readonly group: "label";
|
|
157
|
+
readonly write: true;
|
|
158
|
+
}, {
|
|
159
|
+
readonly method: "DELETE";
|
|
160
|
+
readonly path: "/content/{id}/label/{label}";
|
|
161
|
+
readonly group: "label";
|
|
162
|
+
readonly write: true;
|
|
163
|
+
}, {
|
|
164
|
+
readonly method: "GET";
|
|
165
|
+
readonly path: "/content/{id}/property";
|
|
166
|
+
readonly group: "content-property";
|
|
167
|
+
readonly write: false;
|
|
168
|
+
}, {
|
|
169
|
+
readonly method: "POST";
|
|
170
|
+
readonly path: "/content/{id}/property";
|
|
171
|
+
readonly group: "content-property";
|
|
172
|
+
readonly write: true;
|
|
173
|
+
}, {
|
|
174
|
+
readonly method: "POST";
|
|
175
|
+
readonly path: "/content/{id}/property/{key}";
|
|
176
|
+
readonly group: "content-property";
|
|
177
|
+
readonly write: true;
|
|
178
|
+
}, {
|
|
179
|
+
readonly method: "GET";
|
|
180
|
+
readonly path: "/content/{id}/property/{key}";
|
|
181
|
+
readonly group: "content-property";
|
|
182
|
+
readonly write: false;
|
|
183
|
+
}, {
|
|
184
|
+
readonly method: "PUT";
|
|
185
|
+
readonly path: "/content/{id}/property/{key}";
|
|
186
|
+
readonly group: "content-property";
|
|
187
|
+
readonly write: true;
|
|
188
|
+
}, {
|
|
189
|
+
readonly method: "DELETE";
|
|
190
|
+
readonly path: "/content/{id}/property/{key}";
|
|
191
|
+
readonly group: "content-property";
|
|
192
|
+
readonly write: true;
|
|
193
|
+
}, {
|
|
194
|
+
readonly method: "GET";
|
|
195
|
+
readonly path: "/content/{id}/restriction/byOperation";
|
|
196
|
+
readonly group: "restriction";
|
|
197
|
+
readonly write: false;
|
|
198
|
+
}, {
|
|
199
|
+
readonly method: "GET";
|
|
200
|
+
readonly path: "/content/{id}/restriction/byOperation/{operationKey}";
|
|
201
|
+
readonly group: "restriction";
|
|
202
|
+
readonly write: false;
|
|
203
|
+
}, {
|
|
204
|
+
readonly method: "POST";
|
|
205
|
+
readonly path: "/contentbody/convert/{to}";
|
|
206
|
+
readonly group: "contentbody";
|
|
207
|
+
readonly write: true;
|
|
208
|
+
}, {
|
|
209
|
+
readonly method: "GET";
|
|
210
|
+
readonly path: "/group";
|
|
211
|
+
readonly group: "group";
|
|
212
|
+
readonly write: false;
|
|
213
|
+
}, {
|
|
214
|
+
readonly method: "GET";
|
|
215
|
+
readonly path: "/group/{groupName}";
|
|
216
|
+
readonly group: "group";
|
|
217
|
+
readonly write: false;
|
|
218
|
+
}, {
|
|
219
|
+
readonly method: "GET";
|
|
220
|
+
readonly path: "/group/{groupName}/member";
|
|
221
|
+
readonly group: "group";
|
|
222
|
+
readonly write: false;
|
|
223
|
+
}, {
|
|
224
|
+
readonly method: "GET";
|
|
225
|
+
readonly path: "/longtask";
|
|
226
|
+
readonly group: "longtask";
|
|
227
|
+
readonly write: false;
|
|
228
|
+
}, {
|
|
229
|
+
readonly method: "GET";
|
|
230
|
+
readonly path: "/longtask/{id}";
|
|
231
|
+
readonly group: "longtask";
|
|
232
|
+
readonly write: false;
|
|
233
|
+
}, {
|
|
234
|
+
readonly method: "GET";
|
|
235
|
+
readonly path: "/search";
|
|
236
|
+
readonly group: "search";
|
|
237
|
+
readonly write: false;
|
|
238
|
+
}, {
|
|
239
|
+
readonly method: "GET";
|
|
240
|
+
readonly path: "/space";
|
|
241
|
+
readonly group: "space";
|
|
242
|
+
readonly write: false;
|
|
243
|
+
}, {
|
|
244
|
+
readonly method: "POST";
|
|
245
|
+
readonly path: "/space";
|
|
246
|
+
readonly group: "space";
|
|
247
|
+
readonly write: true;
|
|
248
|
+
}, {
|
|
249
|
+
readonly method: "POST";
|
|
250
|
+
readonly path: "/space/_private";
|
|
251
|
+
readonly group: "space";
|
|
252
|
+
readonly write: true;
|
|
253
|
+
}, {
|
|
254
|
+
readonly method: "GET";
|
|
255
|
+
readonly path: "/space/{spaceKey}";
|
|
256
|
+
readonly group: "space";
|
|
257
|
+
readonly write: false;
|
|
258
|
+
}, {
|
|
259
|
+
readonly method: "PUT";
|
|
260
|
+
readonly path: "/space/{spaceKey}";
|
|
261
|
+
readonly group: "space";
|
|
262
|
+
readonly write: true;
|
|
263
|
+
}, {
|
|
264
|
+
readonly method: "DELETE";
|
|
265
|
+
readonly path: "/space/{spaceKey}";
|
|
266
|
+
readonly group: "space";
|
|
267
|
+
readonly write: true;
|
|
268
|
+
}, {
|
|
269
|
+
readonly method: "GET";
|
|
270
|
+
readonly path: "/space/{spaceKey}/content";
|
|
271
|
+
readonly group: "space-content";
|
|
272
|
+
readonly write: false;
|
|
273
|
+
}, {
|
|
274
|
+
readonly method: "GET";
|
|
275
|
+
readonly path: "/space/{spaceKey}/content/{type}";
|
|
276
|
+
readonly group: "space-content";
|
|
277
|
+
readonly write: false;
|
|
278
|
+
}, {
|
|
279
|
+
readonly method: "GET";
|
|
280
|
+
readonly path: "/space/{spaceKey}/property";
|
|
281
|
+
readonly group: "space-property";
|
|
282
|
+
readonly write: false;
|
|
283
|
+
}, {
|
|
284
|
+
readonly method: "POST";
|
|
285
|
+
readonly path: "/space/{spaceKey}/property";
|
|
286
|
+
readonly group: "space-property";
|
|
287
|
+
readonly write: true;
|
|
288
|
+
}, {
|
|
289
|
+
readonly method: "POST";
|
|
290
|
+
readonly path: "/space/{spaceKey}/property/{key}";
|
|
291
|
+
readonly group: "space-property";
|
|
292
|
+
readonly write: true;
|
|
293
|
+
}, {
|
|
294
|
+
readonly method: "GET";
|
|
295
|
+
readonly path: "/space/{spaceKey}/property/{key}";
|
|
296
|
+
readonly group: "space-property";
|
|
297
|
+
readonly write: false;
|
|
298
|
+
}, {
|
|
299
|
+
readonly method: "PUT";
|
|
300
|
+
readonly path: "/space/{spaceKey}/property/{key}";
|
|
301
|
+
readonly group: "space-property";
|
|
302
|
+
readonly write: true;
|
|
303
|
+
}, {
|
|
304
|
+
readonly method: "DELETE";
|
|
305
|
+
readonly path: "/space/{spaceKey}/property/{key}";
|
|
306
|
+
readonly group: "space-property";
|
|
307
|
+
readonly write: true;
|
|
308
|
+
}, {
|
|
309
|
+
readonly method: "GET";
|
|
310
|
+
readonly path: "/user";
|
|
311
|
+
readonly group: "user";
|
|
312
|
+
readonly write: false;
|
|
313
|
+
}, {
|
|
314
|
+
readonly method: "GET";
|
|
315
|
+
readonly path: "/user/anonymous";
|
|
316
|
+
readonly group: "user";
|
|
317
|
+
readonly write: false;
|
|
318
|
+
}, {
|
|
319
|
+
readonly method: "GET";
|
|
320
|
+
readonly path: "/user/current";
|
|
321
|
+
readonly group: "user";
|
|
322
|
+
readonly write: false;
|
|
323
|
+
}, {
|
|
324
|
+
readonly method: "GET";
|
|
325
|
+
readonly path: "/user/memberof";
|
|
326
|
+
readonly group: "user";
|
|
327
|
+
readonly write: false;
|
|
328
|
+
}, {
|
|
329
|
+
readonly method: "POST";
|
|
330
|
+
readonly path: "/user/watch/content/{contentId}";
|
|
331
|
+
readonly group: "watch";
|
|
332
|
+
readonly write: true;
|
|
333
|
+
}, {
|
|
334
|
+
readonly method: "GET";
|
|
335
|
+
readonly path: "/user/watch/content/{contentId}";
|
|
336
|
+
readonly group: "watch";
|
|
337
|
+
readonly write: false;
|
|
338
|
+
}, {
|
|
339
|
+
readonly method: "DELETE";
|
|
340
|
+
readonly path: "/user/watch/content/{contentId}";
|
|
341
|
+
readonly group: "watch";
|
|
342
|
+
readonly write: true;
|
|
343
|
+
}, {
|
|
344
|
+
readonly method: "POST";
|
|
345
|
+
readonly path: "/user/watch/space/{spaceKey}";
|
|
346
|
+
readonly group: "watch";
|
|
347
|
+
readonly write: true;
|
|
348
|
+
}, {
|
|
349
|
+
readonly method: "GET";
|
|
350
|
+
readonly path: "/user/watch/space/{spaceKey}";
|
|
351
|
+
readonly group: "watch";
|
|
352
|
+
readonly write: false;
|
|
353
|
+
}, {
|
|
354
|
+
readonly method: "DELETE";
|
|
355
|
+
readonly path: "/user/watch/space/{spaceKey}";
|
|
356
|
+
readonly group: "watch";
|
|
357
|
+
readonly write: true;
|
|
358
|
+
}, {
|
|
359
|
+
readonly method: "GET";
|
|
360
|
+
readonly path: "/webhooks";
|
|
361
|
+
readonly group: "webhooks";
|
|
362
|
+
readonly write: false;
|
|
363
|
+
}, {
|
|
364
|
+
readonly method: "POST";
|
|
365
|
+
readonly path: "/webhooks";
|
|
366
|
+
readonly group: "webhooks";
|
|
367
|
+
readonly write: true;
|
|
368
|
+
}, {
|
|
369
|
+
readonly method: "GET";
|
|
370
|
+
readonly path: "/webhooks/{webhookId}";
|
|
371
|
+
readonly group: "webhooks";
|
|
372
|
+
readonly write: false;
|
|
373
|
+
}, {
|
|
374
|
+
readonly method: "PUT";
|
|
375
|
+
readonly path: "/webhooks/{webhookId}";
|
|
376
|
+
readonly group: "webhooks";
|
|
377
|
+
readonly write: true;
|
|
378
|
+
}, {
|
|
379
|
+
readonly method: "DELETE";
|
|
380
|
+
readonly path: "/webhooks/{webhookId}";
|
|
381
|
+
readonly group: "webhooks";
|
|
382
|
+
readonly write: true;
|
|
383
|
+
}, {
|
|
384
|
+
readonly method: "GET";
|
|
385
|
+
readonly path: "/webhooks/{webhookId}/latest";
|
|
386
|
+
readonly group: "webhooks";
|
|
387
|
+
readonly write: false;
|
|
388
|
+
}, {
|
|
389
|
+
readonly method: "GET";
|
|
390
|
+
readonly path: "/webhooks/{webhookId}/statistics";
|
|
391
|
+
readonly group: "webhooks";
|
|
392
|
+
readonly write: false;
|
|
393
|
+
}, {
|
|
394
|
+
readonly method: "GET";
|
|
395
|
+
readonly path: "/webhooks/{webhookId}/statistics/summary";
|
|
396
|
+
readonly group: "webhooks";
|
|
397
|
+
readonly write: false;
|
|
398
|
+
}, {
|
|
399
|
+
readonly method: "POST";
|
|
400
|
+
readonly path: "/webhooks/test";
|
|
401
|
+
readonly group: "webhooks";
|
|
402
|
+
readonly write: true;
|
|
403
|
+
}];
|
|
404
|
+
export declare function findEndpoint(method: RestMethod, path: string): RestEndpoint | undefined;
|