Files
Nexus/.cursor/skills/executing-plans/SKILL.md
T
Your Name cdd0be328a fix: 六轮深度扫描 — 47项Bug修复、安全加固、死代码清理
Critical runtime bugs:
- terminal.html WebSSH完全不可用(URL前缀/JSON解析/Content-Type三处错误)
- servers.py路由遮蔽:/logs被/{id}拦截,3个前端页面同步日志查询失败
- scripts.html startExecPoll()→startExecPolling(),长任务快速执行崩溃
- agent.py {value!r!s:.50}格式串非法,agent发非数值时ValueError
- alerts.html d.daily.reduce()无null检查,API返回空数据时TypeError

Resource leak / stability:
- websocket.py僵尸连接未关闭TCP,文件描述符泄漏
- websocket.py _last_alert_time字典无限增长(加1小时过期清理)
- asyncssh_pool.py全忙时超过MAX_CONNECTIONS无限增长
- self_monitor.py Telegram告警无冷却,宕机时每30秒刷屏
- schedule_runner.py一次性调度执行超60秒会重复触发
- 限速脚本EXPIRE每次重置窗口可绕过(改用Lua原子脚本)

Security:
- JWT access token加token_version声明,改密码后旧token立失效(零宽限)
- INSTALL_MODE导入时常量→动态函数,安装后JWT认证不再残留禁用
- install.py /lock端点加管理员存在性验证,防止阻断安装
- ServerUpdate schema移除connectivity只读字段,防止伪造连接状态

Frontend fixes:
- doExec()缺r.ok检查、commands.html null检查
- _server_to_dict()补last_checked_at+ssh_key_public
- _field_match()逗号cron表达式修复
- alerts类型显示、SSH会话名称、搜索高亮定位
- 一次性/循环定时任务(run_mode+fire_at+自动禁用)

Dead code removed (400+ lines):
- SyncService batch_push/_push_single等5个方法(零调用者)
- 5个未使用schema(SyncCommands/SyncConfig/SyncSftp/FileDeploy/PaginatedResponse)
- 6个零调用service方法、3个无前端API端点
- 4个未使用import

Schema migrations:
- push_schedules: run_mode + fire_at列,cron_expr改NULL
- servers: 7个新列 + ssh_key_private/public VARCHAR(500)→TEXT

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-24 16:26:40 +08:00

176 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: executing-plans
description: 当你有一份书面实现计划需要在单独的会话中执行,并设有审查检查点时使用
---
# 执行计划
## 概述
加载计划,批判性审查,执行所有任务,完成后报告。
**开始时宣布:** "我正在使用 executing-plans 技能来实现此计划。"
**注意:** 告诉你的人类伙伴,Superpowers 在有子代理支持时效果好得多。如果在支持子代理的平台上运行(如 Claude Code 或 Codex),其工作质量会显著提高。如果子代理可用,请使用 superpowers:subagent-driven-development 而非此技能。
## 流程
### 步骤 1:加载并审查计划
1. 读取计划文件
2. 批判性审查——识别计划中的任何问题或疑虑
3. 如果有疑虑:在开始之前向你的人类伙伴提出
4. 如果没有疑虑:创建 TodoWrite 并继续
**审查时重点检查:**
- 步骤之间是否有依赖遗漏?(A 依赖 B,但 B 排在 A 之后)
- 验证条件是否明确?("确认可用"不算,"运行 `npm test` 全部通过"才算)
- 是否有隐含的环境假设?(Node 版本、数据库连接、API Key)
**审查示例:**
```
计划文件:docs/plan.md
任务清单:5 个任务
审查发现:
- 任务 3(添加数据库迁移)应在任务 2(编写数据模型)之后,顺序正确 ✓
- 任务 4 的验证条件写的是"确认功能正常"→ 需澄清:具体跑什么测试?
- 计划未提及 Python 版本要求 → 需确认
向伙伴提出:
"计划整体可执行。有两个问题:(1) 任务 4 的验证条件不够具体,建议改为
'运行 pytest tests/test_api.py 全部通过'(2) 需要确认 Python 版本要求。"
```
### 步骤 2:执行任务
对于每个任务:
1. **标记为进行中** — 更新 TodoWrite
2. **理解目标** — 重读任务描述,明确完成标准
3. **执行实现** — 严格按照计划步骤执行(计划已有小步骤)
4. **运行验证** — 按要求运行测试或检查
5. **提交变更** — 每完成一个任务提交一次,commit message 引用任务编号
6. **标记为已完成** — 更新 TodoWrite
**每个任务的节奏:**
```
--- 任务 2/5:添加用户验证 ---
[标记进行中]
目标:为 /api/users 添加输入验证
完成标准:所有验证测试通过,无效输入返回 400
[实现]
- 添加 validateUser() 中间件
- 编写 3 个验证规则(email 格式、密码强度、用户名长度)
[验证]
$ npm test -- --grep "validation"
✓ 拒绝无效 email (12ms)
✓ 拒绝弱密码 (8ms)
✓ 拒绝过长用户名 (5ms)
3 passing
[提交]
$ git add src/middleware/validate.js tests/validation.test.js
$ git commit -m "feat: 添加用户输入验证(任务 2/5"
[标记完成]
--- 任务 2/5 完成 ---
```
**批量审查检查点:**
- 每完成 3 个任务后,暂停回顾:整体方向还对吗?有没有偏离计划?
- 如果发现前面的实现有问题,先修复再继续,不要带着问题往下走
### 步骤 3:处理常见异常
**测试失败:**
1. 读错误信息,定位失败原因
2. 区分:是实现 bug?还是测试本身有问题?还是计划描述有误?
3. 实现 bug → 修复并重跑
4. 测试有问题 → 修复测试,向伙伴说明
5. 计划有误 → 停下来,向伙伴报告并建议修正
**依赖缺失:**
```
任务 3 需要 Redis 连接,但计划中没有提及 Redis 配置。
→ 停止执行
→ 向伙伴报告:"任务 3 需要 Redis,计划中未包含配置步骤。
建议:在任务 3 前插入 '配置 Redis 连接' 步骤。"
```
**指令不清:**
- 不要猜测意图,不要"合理推断"
- 列出你的理解和困惑,让伙伴澄清
- 等待回复后再继续
### 步骤 4:完成开发
所有任务完成并验证后:
- 宣布:"我正在使用 finishing-a-development-branch 技能来完成此工作。"
- **必需子技能:** 使用 superpowers:finishing-a-development-branch
- 按照该技能的指引验证测试、展示选项、执行选择
**完成报告模板:**
```
## 执行报告
**计划:** docs/plan.md
**分支:** feature/user-validation
**任务:** 5/5 已完成
### 完成的任务
1. ✅ 初始化项目结构
2. ✅ 添加用户验证
3. ✅ 添加数据库迁移
4. ✅ 实现 API 端点
5. ✅ 添加集成测试
### 验证结果
- 单元测试:23/23 通过
- 集成测试:8/8 通过
- lint 检查:0 个警告
### 偏离计划的地方
- 任务 3Redis 配置从 env 改为 config.yaml(经伙伴同意)
### 下一步
按 finishing-a-development-branch 技能处理合并/PR
```
## 何时停下来求助
**在以下情况立即停止执行:**
- 遇到阻塞(缺少依赖、测试失败、指令不清)
- 计划有严重缺陷导致无法开始
- 你不理解某条指令
- 验证反复失败(同一测试失败 2 次以上)
**不确定时就问,不要猜测。**
## 何时回到之前的步骤
**回到审查(步骤 1)当:**
- 伙伴根据你的反馈更新了计划
- 根本性的方案需要重新考虑
**不要硬闯阻塞** — 停下来问。
## 注意事项
- 先批判性审查计划
- 严格按照计划步骤执行
- 不要跳过验证
- 每个任务单独提交,commit message 引用任务编号
- 计划要求时引用相应技能
- 遇到阻塞时停下来,不要猜测
- 未经用户明确同意,绝不在 main/master 分支上开始实现
## 集成
**必需的工作流技能:**
- **superpowers:using-git-worktrees** - 必需:开始前建立隔离的工作空间
- **superpowers:writing-plans** - 创建此技能要执行的计划
- **superpowers:finishing-a-development-branch** - 所有任务完成后收尾开发