@liangjie559567/ultrapower 5.2.3 → 5.2.6
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/.claude-plugin/plugin.json +1 -1
- package/agents/AGENTS.md +60 -0
- package/bridge/AGENTS.md +51 -0
- package/bridge/codex-server.cjs +3 -3
- package/bridge/gemini-server.cjs +2 -2
- package/commands/AGENTS.md +47 -0
- package/dist/__tests__/auto-update.test.js +195 -2
- package/dist/__tests__/auto-update.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/release-local.test.d.ts +2 -0
- package/dist/__tests__/release-local.test.d.ts.map +1 -0
- package/dist/__tests__/release-local.test.js +19 -0
- package/dist/__tests__/release-local.test.js.map +1 -0
- package/dist/__tests__/release-steps.test.d.ts +2 -0
- package/dist/__tests__/release-steps.test.d.ts.map +1 -0
- package/dist/__tests__/release-steps.test.js +82 -0
- package/dist/__tests__/release-steps.test.js.map +1 -0
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +23 -1
- package/dist/features/auto-update.js.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +19 -2
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +11 -9
- package/dist/installer/hooks.js.map +1 -1
- package/dist/lib/__tests__/plugin-registry.test.d.ts +2 -0
- package/dist/lib/__tests__/plugin-registry.test.d.ts.map +1 -0
- package/dist/lib/__tests__/plugin-registry.test.js +241 -0
- package/dist/lib/__tests__/plugin-registry.test.js.map +1 -0
- package/dist/team/__tests__/bridge-entry.test.js +62 -0
- package/dist/team/__tests__/bridge-entry.test.js.map +1 -1
- package/dist/team/__tests__/inbox-outbox.test.js +4 -3
- package/dist/team/__tests__/inbox-outbox.test.js.map +1 -1
- package/dist/team/__tests__/mcp-team-bridge.test.d.ts +2 -0
- package/dist/team/__tests__/mcp-team-bridge.test.d.ts.map +1 -0
- package/dist/team/__tests__/mcp-team-bridge.test.js +458 -0
- package/dist/team/__tests__/mcp-team-bridge.test.js.map +1 -0
- package/dist/team/__tests__/permissions.test.js +86 -1
- package/dist/team/__tests__/permissions.test.js.map +1 -1
- package/dist/team/__tests__/task-file-ops.test.js +43 -0
- package/dist/team/__tests__/task-file-ops.test.js.map +1 -1
- package/dist/team/mcp-team-bridge.d.ts +28 -1
- package/dist/team/mcp-team-bridge.d.ts.map +1 -1
- package/dist/team/mcp-team-bridge.js +2 -0
- package/dist/team/mcp-team-bridge.js.map +1 -1
- package/docs/CLAUDE.md +1 -1
- package/docs/agent-templates/AGENTS.md +29 -0
- package/docs/design/AGENTS.md +26 -0
- package/docs/issues/AGENTS.md +20 -0
- package/docs/partials/AGENTS.md +24 -0
- package/docs/plans/2026-02-27-release-cicd-pipeline-design.md +265 -0
- package/docs/plans/2026-02-27-release-cicd-pipeline-impl.md +519 -0
- package/docs/plans/AGENTS.md +33 -0
- package/docs/prd/AGENTS.md +22 -0
- package/docs/reviews/AGENTS.md +20 -0
- package/docs/reviews/ultrapower-standards/AGENTS.md +30 -0
- package/docs/shared/AGENTS.md +24 -0
- package/docs/standards/AGENTS.md +40 -0
- package/docs/standards/templates/AGENTS.md +28 -0
- package/docs/superpowers/AGENTS.md +26 -0
- package/docs/superpowers/plans/AGENTS.md +26 -0
- package/docs/superpowers/specs/AGENTS.md +26 -0
- package/docs/tasks/AGENTS.md +20 -0
- package/docs/tasks/ultrapower-standards/AGENTS.md +27 -0
- package/docs/windows/AGENTS.md +25 -0
- package/hooks/AGENTS.md +33 -0
- package/package.json +4 -2
- package/scripts/AGENTS.md +66 -0
- package/scripts/hooks/AGENTS.md +28 -0
- package/scripts/lib/AGENTS.md +25 -0
- package/scripts/plugin-setup.mjs +25 -4
- package/scripts/release-local.mjs +27 -0
- package/scripts/release-steps.mjs +121 -0
- package/skills/AGENTS.md +37 -0
- package/skills/analyze/AGENTS.md +28 -0
- package/skills/autopilot/AGENTS.md +28 -0
- package/skills/ax-analyze-error/AGENTS.md +28 -0
- package/skills/ax-context/AGENTS.md +28 -0
- package/skills/ax-decompose/AGENTS.md +28 -0
- package/skills/ax-draft/AGENTS.md +28 -0
- package/skills/ax-evolution/AGENTS.md +28 -0
- package/skills/ax-evolve/AGENTS.md +28 -0
- package/skills/ax-export/AGENTS.md +28 -0
- package/skills/ax-implement/AGENTS.md +28 -0
- package/skills/ax-knowledge/AGENTS.md +28 -0
- package/skills/ax-knowledge/SKILL.md +10 -10
- package/skills/ax-reflect/AGENTS.md +28 -0
- package/skills/ax-review/AGENTS.md +28 -0
- package/skills/ax-rollback/AGENTS.md +28 -0
- package/skills/ax-status/AGENTS.md +28 -0
- package/skills/ax-suspend/AGENTS.md +28 -0
- package/skills/brainstorming/AGENTS.md +28 -0
- package/skills/build-fix/AGENTS.md +28 -0
- package/skills/cancel/AGENTS.md +28 -0
- package/skills/ccg/AGENTS.md +28 -0
- package/skills/code-review/AGENTS.md +28 -0
- package/skills/configure-discord/AGENTS.md +28 -0
- package/skills/configure-telegram/AGENTS.md +28 -0
- package/skills/deepinit/AGENTS.md +28 -0
- package/skills/deepsearch/AGENTS.md +28 -0
- package/skills/dispatching-parallel-agents/AGENTS.md +28 -0
- package/skills/executing-plans/AGENTS.md +28 -0
- package/skills/external-context/AGENTS.md +28 -0
- package/skills/finishing-a-development-branch/AGENTS.md +28 -0
- package/skills/frontend-ui-ux/AGENTS.md +28 -0
- package/skills/git-master/AGENTS.md +28 -0
- package/skills/hud/AGENTS.md +28 -0
- package/skills/learn-about-omc/AGENTS.md +28 -0
- package/skills/learner/AGENTS.md +28 -0
- package/skills/mcp-setup/AGENTS.md +28 -0
- package/skills/next-step-router/AGENTS.md +28 -0
- package/skills/nexus/AGENTS.md +35 -0
- package/skills/nexus/nexus-evolve/AGENTS.md +28 -0
- package/skills/nexus/nexus-review/AGENTS.md +28 -0
- package/skills/nexus/nexus-status/AGENTS.md +28 -0
- package/skills/note/AGENTS.md +28 -0
- package/skills/omc-doctor/AGENTS.md +28 -0
- package/skills/omc-help/AGENTS.md +28 -0
- package/skills/omc-setup/AGENTS.md +28 -0
- package/skills/pipeline/AGENTS.md +28 -0
- package/skills/plan/AGENTS.md +28 -0
- package/skills/project-session-manager/AGENTS.md +28 -0
- package/skills/project-session-manager/lib/AGENTS.md +37 -0
- package/skills/project-session-manager/lib/providers/AGENTS.md +32 -0
- package/skills/project-session-manager/templates/AGENTS.md +29 -0
- package/skills/psm/AGENTS.md +28 -0
- package/skills/ralph/AGENTS.md +28 -0
- package/skills/ralph-init/AGENTS.md +28 -0
- package/skills/ralplan/AGENTS.md +28 -0
- package/skills/receiving-code-review/AGENTS.md +28 -0
- package/skills/release/AGENTS.md +28 -0
- package/skills/release/SKILL.md +19 -3
- package/skills/requesting-code-review/AGENTS.md +28 -0
- package/skills/review/AGENTS.md +28 -0
- package/skills/sciomc/AGENTS.md +28 -0
- package/skills/security-review/AGENTS.md +28 -0
- package/skills/skill/AGENTS.md +28 -0
- package/skills/subagent-driven-development/AGENTS.md +28 -0
- package/skills/swarm/AGENTS.md +28 -0
- package/skills/systematic-debugging/AGENTS.md +28 -0
- package/skills/team/AGENTS.md +28 -0
- package/skills/test-driven-development/AGENTS.md +28 -0
- package/skills/trace/AGENTS.md +28 -0
- package/skills/ultrapilot/AGENTS.md +28 -0
- package/skills/ultraqa/AGENTS.md +28 -0
- package/skills/ultrawork/AGENTS.md +28 -0
- package/skills/using-git-worktrees/AGENTS.md +28 -0
- package/skills/using-superpowers/AGENTS.md +28 -0
- package/skills/using-superpowers/references/AGENTS.md +26 -0
- package/skills/verification-before-completion/AGENTS.md +28 -0
- package/skills/wizard/AGENTS.md +28 -0
- package/skills/writer-memory/AGENTS.md +28 -0
- package/skills/writer-memory/lib/AGENTS.md +30 -0
- package/skills/writer-memory/templates/AGENTS.md +27 -0
- package/skills/writing-plans/AGENTS.md +28 -0
- package/skills/writing-skills/AGENTS.md +28 -0
- package/skills/writing-skills/examples/AGENTS.md +26 -0
- package/templates/AGENTS.md +28 -0
- package/templates/axiom/AGENTS.md +32 -0
- package/templates/axiom/scripts/AGENTS.md +26 -0
- package/templates/hooks/AGENTS.md +38 -0
- package/templates/hooks/keyword-detector.mjs +1 -2
- package/templates/hooks/lib/AGENTS.md +21 -0
- package/templates/rules/AGENTS.md +35 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# 插件发布 CI/CD 流水线设计
|
|
2
|
+
|
|
3
|
+
**日期**:2026-02-27
|
|
4
|
+
**状态**:已批准
|
|
5
|
+
**方案**:C(GitHub Actions 主导 + 本地脚本备用,共享核心逻辑)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 背景与目标
|
|
10
|
+
|
|
11
|
+
### 问题陈述
|
|
12
|
+
|
|
13
|
+
当前 ultrapower 发布流程依赖手动执行 `skills/release/SKILL.md` 中的步骤:
|
|
14
|
+
- 手动更新版本号(多个文件)
|
|
15
|
+
- 手动运行 `npm publish`
|
|
16
|
+
- 手动创建 GitHub Release
|
|
17
|
+
- 手动更新 `marketplace.json`
|
|
18
|
+
|
|
19
|
+
这导致:
|
|
20
|
+
- 发布步骤容易遗漏(如 REFERENCE.md 双重数量声明 — k-047)
|
|
21
|
+
- 发布者机器环境依赖(NPM_TOKEN 本地配置)
|
|
22
|
+
- 无法并行执行独立步骤
|
|
23
|
+
|
|
24
|
+
### 目标
|
|
25
|
+
|
|
26
|
+
从 `git tag v*` 推送到完整发布,全自动化,同时保留本地执行能力用于调试和紧急发布。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. 架构概览
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
发布触发
|
|
34
|
+
└── git tag v5.3.0 && git push --tags
|
|
35
|
+
│
|
|
36
|
+
├── GitHub Actions(主路径)
|
|
37
|
+
│ .github/workflows/release.yml
|
|
38
|
+
│ └── 调用 scripts/release-steps.mjs
|
|
39
|
+
│
|
|
40
|
+
└── 本地脚本(备用路径)
|
|
41
|
+
scripts/release-local.mjs
|
|
42
|
+
└── 调用 scripts/release-steps.mjs
|
|
43
|
+
|
|
44
|
+
共享核心
|
|
45
|
+
scripts/release-steps.mjs
|
|
46
|
+
├── validateBuild()
|
|
47
|
+
├── publishNpm()
|
|
48
|
+
├── createGithubRelease()
|
|
49
|
+
└── syncMarketplace()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 文件变更清单
|
|
53
|
+
|
|
54
|
+
| 操作 | 文件 | 说明 |
|
|
55
|
+
|------|------|------|
|
|
56
|
+
| 新增 | `.github/workflows/release.yml` | GitHub Actions 主流程 |
|
|
57
|
+
| 新增 | `scripts/release-steps.mjs` | 共享核心逻辑 |
|
|
58
|
+
| 新增 | `scripts/release-local.mjs` | 本地执行入口 |
|
|
59
|
+
| 修改 | `skills/release/SKILL.md` | 更新:说明 CI 接管后续步骤 |
|
|
60
|
+
| 修改 | `package.json` | 新增 `release:local` / `release:dry-run` scripts |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. 共享核心:`scripts/release-steps.mjs`
|
|
65
|
+
|
|
66
|
+
### 接口设计
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
/**
|
|
70
|
+
* 步骤 1:构建验证
|
|
71
|
+
* 执行 tsc --noEmit && npm run build && npm test
|
|
72
|
+
*/
|
|
73
|
+
export async function validateBuild(opts = {})
|
|
74
|
+
// opts: { skipTests?: boolean }
|
|
75
|
+
// 返回: { success: boolean, output: string }
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 步骤 2:npm 发布
|
|
79
|
+
* 执行 npm publish --access public
|
|
80
|
+
*/
|
|
81
|
+
export async function publishNpm(opts = {})
|
|
82
|
+
// opts: { dryRun?: boolean, tag?: string }
|
|
83
|
+
// 返回: { success: boolean, version: string }
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 步骤 3:GitHub Release 创建
|
|
87
|
+
* 执行 gh release create v{version} --generate-notes
|
|
88
|
+
*/
|
|
89
|
+
export async function createGithubRelease(opts = {})
|
|
90
|
+
// opts: { version: string, notes?: string, dryRun?: boolean }
|
|
91
|
+
// 返回: { success: boolean, url: string }
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 步骤 4:市场版本同步
|
|
95
|
+
* 更新 .claude-plugin/marketplace.json version 字段 + git commit + push
|
|
96
|
+
*/
|
|
97
|
+
export async function syncMarketplace(opts = {})
|
|
98
|
+
// opts: { version: string, dryRun?: boolean }
|
|
99
|
+
// 返回: { success: boolean }
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* 完整流水线(顺序执行全部 4 步)
|
|
103
|
+
*/
|
|
104
|
+
export async function runReleasePipeline(opts = {})
|
|
105
|
+
// opts: {
|
|
106
|
+
// dryRun?: boolean,
|
|
107
|
+
// skipTests?: boolean,
|
|
108
|
+
// startFrom?: 'validate' | 'publish' | 'release' | 'sync'
|
|
109
|
+
// }
|
|
110
|
+
// 任一步骤失败则停止并以非零退出码退出
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 错误处理原则
|
|
114
|
+
|
|
115
|
+
- 每步失败输出明确错误信息(步骤名 + 错误内容 + 建议操作)
|
|
116
|
+
- 支持 `--start-from` 从失败步骤重试(跳过已完成步骤)
|
|
117
|
+
- dry-run 模式:打印将执行的命令,不实际执行
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 4. GitHub Actions Workflow
|
|
122
|
+
|
|
123
|
+
### 触发条件
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
on:
|
|
127
|
+
push:
|
|
128
|
+
tags:
|
|
129
|
+
- 'v*'
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Job 依赖图
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
build-test
|
|
136
|
+
│
|
|
137
|
+
└── publish
|
|
138
|
+
│
|
|
139
|
+
├── github-release
|
|
140
|
+
└── marketplace-sync
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- `build-test` → `publish`:串行(确保验证通过才发布)
|
|
144
|
+
- `publish` → `github-release`:串行(确保 npm 包存在才创建 Release)
|
|
145
|
+
- `publish` → `marketplace-sync`:并行(与 github-release 独立)
|
|
146
|
+
|
|
147
|
+
### Secrets 需求
|
|
148
|
+
|
|
149
|
+
| Secret | 用途 | 配置位置 |
|
|
150
|
+
|--------|------|---------|
|
|
151
|
+
| `NPM_TOKEN` | npm publish 权限 | GitHub repo Settings → Secrets |
|
|
152
|
+
| `GITHUB_TOKEN` | GitHub Release 创建 | Actions 内置,无需手动配置 |
|
|
153
|
+
|
|
154
|
+
### 关键配置
|
|
155
|
+
|
|
156
|
+
```yaml
|
|
157
|
+
jobs:
|
|
158
|
+
build-test:
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
steps:
|
|
161
|
+
- uses: actions/checkout@v4
|
|
162
|
+
- uses: actions/setup-node@v4
|
|
163
|
+
with:
|
|
164
|
+
node-version: '20'
|
|
165
|
+
cache: 'npm'
|
|
166
|
+
- run: npm ci
|
|
167
|
+
- run: node scripts/release-steps.mjs validate
|
|
168
|
+
|
|
169
|
+
publish:
|
|
170
|
+
needs: build-test
|
|
171
|
+
runs-on: ubuntu-latest
|
|
172
|
+
steps:
|
|
173
|
+
- uses: actions/checkout@v4
|
|
174
|
+
- uses: actions/setup-node@v4
|
|
175
|
+
with:
|
|
176
|
+
node-version: '20'
|
|
177
|
+
registry-url: 'https://registry.npmjs.org'
|
|
178
|
+
- run: npm ci
|
|
179
|
+
- run: node scripts/release-steps.mjs publish
|
|
180
|
+
env:
|
|
181
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
182
|
+
|
|
183
|
+
github-release:
|
|
184
|
+
needs: publish
|
|
185
|
+
runs-on: ubuntu-latest
|
|
186
|
+
steps:
|
|
187
|
+
- uses: actions/checkout@v4
|
|
188
|
+
- run: node scripts/release-steps.mjs release
|
|
189
|
+
env:
|
|
190
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
191
|
+
|
|
192
|
+
marketplace-sync:
|
|
193
|
+
needs: publish
|
|
194
|
+
runs-on: ubuntu-latest
|
|
195
|
+
steps:
|
|
196
|
+
- uses: actions/checkout@v4
|
|
197
|
+
with:
|
|
198
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
199
|
+
- run: node scripts/release-steps.mjs sync
|
|
200
|
+
env:
|
|
201
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 5. 本地脚本
|
|
207
|
+
|
|
208
|
+
### `scripts/release-local.mjs`
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
// 用法:
|
|
212
|
+
// node scripts/release-local.mjs
|
|
213
|
+
// node scripts/release-local.mjs --dry-run
|
|
214
|
+
// node scripts/release-local.mjs --start-from=publish
|
|
215
|
+
// npm run release:local
|
|
216
|
+
// npm run release:dry-run
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### `package.json` 新增 scripts
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"scripts": {
|
|
224
|
+
"release:local": "node scripts/release-local.mjs",
|
|
225
|
+
"release:dry-run": "node scripts/release-local.mjs --dry-run"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 6. 与现有 Release Skill 的分工
|
|
233
|
+
|
|
234
|
+
| 步骤 | 负责方 | 工具 |
|
|
235
|
+
|------|--------|------|
|
|
236
|
+
| 版本号更新(package.json、CHANGELOG、文档) | release skill(手动) | 编辑文件 |
|
|
237
|
+
| git commit + tag + push | release skill(手动) | git |
|
|
238
|
+
| npm publish | **GitHub Actions(自动)** | release-steps.mjs |
|
|
239
|
+
| GitHub Release 创建 | **GitHub Actions(自动)** | release-steps.mjs |
|
|
240
|
+
| marketplace.json 版本同步 | **GitHub Actions(自动)** | release-steps.mjs |
|
|
241
|
+
|
|
242
|
+
**`skills/release/SKILL.md` 更新说明**:在"发布步骤"末尾添加:
|
|
243
|
+
> 执行 `git push --tags` 后,GitHub Actions 自动接管后续步骤(npm 发布、GitHub Release、市场同步)。如需手动执行,运行 `npm run release:local`。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 7. 测试策略
|
|
248
|
+
|
|
249
|
+
| 测试类型 | 覆盖内容 |
|
|
250
|
+
|---------|---------|
|
|
251
|
+
| 单元测试 | `release-steps.mjs` 各函数(mock exec) |
|
|
252
|
+
| dry-run 测试 | 验证 dry-run 模式不执行实际命令 |
|
|
253
|
+
| 集成测试 | GitHub Actions workflow 语法验证(`actionlint`) |
|
|
254
|
+
| 手动验证 | 首次发布时使用 `--dry-run` 预检 |
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 8. 风险与缓解
|
|
259
|
+
|
|
260
|
+
| 风险 | 缓解措施 |
|
|
261
|
+
|------|---------|
|
|
262
|
+
| NPM_TOKEN 过期 | CI 失败时发邮件通知,本地脚本作为备用 |
|
|
263
|
+
| marketplace-sync 提交冲突 | 使用 `git pull --rebase` 后再 push |
|
|
264
|
+
| 版本号不一致 | validateBuild 步骤检查 package.json vs git tag 一致性 |
|
|
265
|
+
| 网络超时 | 每步设置 timeout,失败后支持 `--start-from` 重试 |
|