execute-plan
npx skills add https://github.com/penkzhou/swiss-army-knife-plugin --skill execute-plan
Agent 安装分布
Skill 文档
Execute Plan Skill
æ¬ Skill æä¾è®¡åæ§è¡å·¥ä½æµçæ ¸å¿ç¥è¯ï¼å æ¬è®¡åæ ¼å¼è§èãä»»å¡è§£æè§åãä¾èµåæç®æ³åæ¹æ¬¡æ§è¡çç¥ã
1. è®¡åæ ¼å¼è§è
1.1 æ¯æçæ ¼å¼
| æ ¼å¼ | æä»¶æ©å±å | æ£æµæ¹å¼ |
|---|---|---|
| Markdown | .md |
æä»¶æ©å±å + 任塿¨¡å¼æ£æµ |
| YAML | .yaml, .yml |
æä»¶æ©å±å + tasks: 鮿£æµ |
1.2 Markdown è®¡åæ ¼å¼
任塿 记模å¼ï¼æä¼å çº§æ£æµï¼ï¼
## Task 1: å®ç°ç¨æ·è®¤è¯æ¨¡å
æè¿°ï¼å®ç°åºäº JWT çç¨æ·è®¤è¯...
## Task 2: æ·»å æ°æ®åºè¿ç§»
æè¿°ï¼...
### 1. å建 API 端ç¹
æè¿°ï¼...
### 2. æ·»å åå
æµè¯
æè¿°ï¼...
- [ ] éæè®¤è¯ä¸é´ä»¶
- [ ] æ·»å é误å¤ç
- [ ] æ´æ°ææ¡£
1. **åå»ºç¨æ·æå¡**
- æä»¶: `src/services/user.ts`
- æè¿°: ...
2. **æ·»å æ°æ®éªè¯**
- æä»¶: `src/validators/user.ts`
- æè¿°: ...
1.3 YAML è®¡åæ ¼å¼
title: "ç¨æ·è®¤è¯ç³»ç»å®ç°"
description: "å®ç°å®æ´çç¨æ·è®¤è¯æµç¨"
tasks:
- id: T-001
title: "åå»ºç¨æ·æ¨¡å"
description: "å®ä¹ User æ°æ®æ¨¡ååç¸å
³ç±»å"
files:
- src/models/user.ts
- src/types/user.ts
dependencies: []
complexity: low
- id: T-002
title: "å®ç°è®¤è¯æå¡"
description: "å®ç°ç»å½ã注åãToken å·æ°é»è¾"
files:
- src/services/auth.ts
dependencies:
- T-001
complexity: medium
1.4 ä»»å¡å段è§è
| åæ®µ | å¿ å¡« | ç±»å | 说æ |
|---|---|---|---|
id |
å¦ | string | ä»»å¡ IDï¼èªå¨çæå¦ T-001ï¼ |
title |
æ¯ | string | 任塿 é¢ |
description |
å¦ | string | ä»»å¡æè¿° |
files |
å¦ | string[] | æ¶åçæä»¶å表 |
dependencies |
å¦ | string[] | ä¾èµçä»»å¡ ID |
complexity |
å¦ | enum | low/medium/high |
test_files |
å¦ | string[] | ç¸å ³æµè¯æä»¶ |
2. ä»»å¡è§£æè§å
2.1 Markdown 任塿å
è§£æä¼å 级ï¼
## Task N:模å¼### N.模å¼- [ ]模å¼N. **xxx**模å¼
示ä¾è§£æï¼
## Task 1: åå»ºç¨æ·æå¡
å®ç°ç¨æ· CRUD æä½çæå¡å±ã
**æä»¶**ï¼
- `src/services/user.ts`
- `src/types/user.ts`
**ä¾èµ**ï¼æ
**æµè¯**ï¼
- `tests/services/user.test.ts`
è§£æç»æï¼
{
"id": "T-001",
"title": "åå»ºç¨æ·æå¡",
"description": "å®ç°ç¨æ· CRUD æä½çæå¡å±ã",
"files": ["src/services/user.ts", "src/types/user.ts"],
"dependencies": [],
"test_files": ["tests/services/user.test.ts"],
"complexity": "medium"
}
2.2 å¤æåº¦æ¨æ
å¦æè®¡åæªæ¾å¼æå®å¤æåº¦ï¼æ ¹æ®ä»¥ä¸è§åæ¨æï¼
| æ¡ä»¶ | å¤æåº¦ |
|---|---|
| æ¶åæä»¶ ⤠2 䏿 ä¾èµ | low |
| æ¶åæä»¶ 3-5 ææ 1-2 个ä¾èµ | medium |
| æ¶åæä»¶ > 5 ææ > 2 个ä¾èµ | high |
2.3 ID èªå¨çæ
妿任塿 IDï¼æé¡ºåºçæï¼
T-001,T-002,T-003, …
3. ä¾èµåæç®æ³
3.1 æ¾å¼ä¾èµ
计åä¸éè¿ dependencies åæ®µå£°æçä¾èµå
³ç³»ã
3.2 éå¼ä¾èµæ£æµ
èªå¨æ£æµä»¥ä¸éå¼ä¾èµï¼
- åæä»¶ä¿®æ¹ï¼å¤ä¸ªä»»å¡ä¿®æ¹å䏿件æ¶ï¼æä»»å¡é¡ºåºå½¢æä¾èµé¾
- ç±»å/æ¥å£ä¾èµï¼ä»»å¡ A å建类åï¼ä»»å¡ B 使ç¨è¯¥ç±»å
- å¯¼å ¥ä¾èµï¼ä»»å¡ A å建模åï¼ä»»å¡ B å¯¼å ¥è¯¥æ¨¡å
3.3 æææåº
ä½¿ç¨ Kahn ç®æ³è¿è¡æææåºï¼
def topological_sort(tasks, dependencies):
in_degree = {t.id: 0 for t in tasks}
for deps in dependencies.values():
for dep in deps:
in_degree[dep] += 1
queue = [t for t in tasks if in_degree[t.id] == 0]
result = []
while queue:
task = queue.pop(0)
result.append(task)
for t in tasks:
if task.id in dependencies.get(t.id, []):
in_degree[t.id] -= 1
if in_degree[t.id] == 0:
queue.append(t)
if len(result) != len(tasks):
raise CyclicDependencyError("æ£æµå°å¾ªç¯ä¾èµ")
return result
3.4 循ç¯ä¾èµæ£æµ
å¦ææ£æµå°å¾ªç¯ä¾èµï¼
- 忢æ§è¡
- æ¥åå¾ªç¯æ¶åçä»»å¡
- å»ºè®®è§£å³æ¹æ¡ï¼æå任塿鿰æåºï¼
4. æ¹æ¬¡æ§è¡çç¥
4.1 æ¹æ¬¡åååå
- ä¾èµä¼å ï¼å䏿¹æ¬¡å çä»»å¡ä¸åºæä¾èµå ³ç³»
- å¤æåº¦å¹³è¡¡ï¼æ¯æ¹å å«ç high å¤æåº¦ä»»å¡ä¸è¶ è¿ 1 个
- 大å°éå¶ï¼æ¯æ¹ä»»å¡æ°ä¸è¶
è¿é
ç½®ç
batch_size
4.2 æ¹æ¬¡çæç®æ³
def generate_batches(sorted_tasks, batch_size, max_parallel):
batches = []
current_batch = []
completed = set()
for task in sorted_tasks:
# æ£æ¥ä¾èµæ¯å¦å·²å®æ
deps_satisfied = all(d in completed for d in task.dependencies)
# æ£æ¥æ¯å¦å¯ä»¥å¹¶è¡ï¼æ åæä»¶ä¿®æ¹ï¼
can_parallel = not any(
set(task.files) & set(t.files)
for t in current_batch
)
if deps_satisfied and can_parallel and len(current_batch) < batch_size:
current_batch.append(task)
else:
if current_batch:
batches.append(current_batch)
completed.update(t.id for t in current_batch)
current_batch = [task]
if current_batch:
batches.append(current_batch)
return batches
4.3 æ¹æ¬¡å å¹¶è¡
å䏿¹æ¬¡å çä»»å¡å¯ä»¥å¹¶è¡æ§è¡ï¼æ¡ä»¶ï¼
- ä»»å¡ä¹é´æ ä¾èµ
- ä»»å¡ä¸ä¿®æ¹å䏿件
- å¹¶è¡æ°ä¸è¶
è¿
max_parallel
5. 置信度è¯ä¼°æ å
5.1 ä»»å¡ç½®ä¿¡åº¦
æ¯ä¸ªä»»å¡ç置信度åºäºä»¥ä¸å ç´ ï¼
| å ç´ | æé | è¯åæ å |
|---|---|---|
| æä»¶å卿§ | 30% | ç®æ æä»¶/ç®å½æ¯å¦å卿å¯å建 |
| æè¿°æ¸ æ°åº¦ | 25% | ä»»å¡æè¿°æ¯å¦æç¡®å¯æ§è¡ |
| ä¾èµå¯æ»¡è¶³ | 25% | ä¾èµä»»å¡æ¯å¦å·²å®ä¹ä¸æ å¾ªç¯ |
| å¤æåº¦åç | 20% | å¤æåº¦è¯ä¼°æ¯å¦åç |
5.2 è®¡åæ´ä½ç½®ä¿¡åº¦
æ´ä½ç½®ä¿¡åº¦ = ææä»»å¡ç½®ä¿¡åº¦çå æå¹³å
æéï¼
- high å¤æåº¦ä»»å¡ï¼æé 3
- medium å¤æåº¦ä»»å¡ï¼æé 2
- low å¤æåº¦ä»»å¡ï¼æé 1
5.3 置信度å³ç
| æ´ä½ç½®ä¿¡åº¦ | è¡ä¸º |
|---|---|
| ⥠80 | èªå¨ç»§ç»æ§è¡ |
| 60-79 | å±ç¤ºéªè¯ç»æï¼è¯¢é®ç¨æ·æ¯å¦ç»§ç» |
| 40-59 | å»ºè®®è°æ´è®¡ååéè¯ |
| < 40 | åæ¢ï¼æ¥åè®¡åæ æ³æ§è¡ |
6. TDD æ§è¡æµç¨
6.1 æ¯ä¸ªä»»å¡ç TDD 卿
1. RED Phase
ââ è¯å«æå建æµè¯æä»¶
ââ ç¼åå¤±è´¥çæµè¯ç¨ä¾
ââ è¿è¡æµè¯ç¡®è®¤å¤±è´¥
2. GREEN Phase
ââ å®ç°æå°ä»£ç 使æµè¯éè¿
ââ è¿è¡æµè¯ç¡®è®¤éè¿
3. REFACTOR Phase
ââ éæä»£ç ï¼ä¿ææµè¯éè¿ï¼
ââ è¿è¡ lint æ£æ¥
ââ è¿è¡ç±»åæ£æ¥
6.2 TDD è·³è¿æ¡ä»¶
以䏿 åµå¯è·³è¿ TDDï¼
- 纯é ç½®æä»¶ä¿®æ¹
- ææ¡£æ´æ°
- æ ·å¼/æ ¼å¼è°æ´
7. 常è§é®é¢å¤ç
7.1 è®¡åæ ¼å¼æ æ³è§£æ
çç¶ï¼æ æ³è¯å«ä»»å¡å表
è§£å³ï¼
- æ£æ¥æ¯å¦ä½¿ç¨æ¯æçæ ¼å¼ï¼Markdown/YAMLï¼
- ç¡®è®¤ä»»å¡æ 记符åè§è
- æä¾ç¤ºä¾æ ¼å¼ä¾åè
7.2 循ç¯ä¾èµ
çç¶ï¼æææåºå¤±è´¥
è§£å³ï¼
- è¯å«å¾ªç¯æ¶åçä»»å¡
- 建议æåä»»å¡æè°æ´ä¾èµ
- æ¯æç¨æ·æå¨æç ´å¾ªç¯
7.3 æä»¶å²çª
çç¶ï¼å¤ä¸ªä»»å¡ä¿®æ¹å䏿件䏿 æ³ç¡®å®é¡ºåº
è§£å³ï¼
- æ£æµåæä»¶ä¿®æ¹çä»»å¡
- å»ºè®®æ·»å æ¾å¼ä¾èµ
- ä¸²è¡æ§è¡å²çªä»»å¡
7.4 置信度è¿ä½
çç¶ï¼æ´ä½ç½®ä¿¡åº¦ < 40
å¯è½åå ï¼
- ä»»å¡æè¿°ä¸æ¸ æ°
- ç®æ æä»¶ä¸åå¨
- ä¾èµå ³ç³»å¤æææå¾ªç¯
è§£å³ï¼
- æ¥åå ·ä½çä½ç½®ä¿¡åº¦ä»»å¡
- ååºå½±å置信度çå ç´
- 建议æ¹è¿æªæ½
8. è¾åºæ ¼å¼è§è
8.1 init_ctx æ ¼å¼
{
"config": {
"test_command": "make test",
"lint_command": "make lint",
"typecheck_command": "make typecheck",
"batch_size": 3,
"docs": {
"bugfix_dir": "docs/bugfix",
"best_practices_dir": "docs/best-practices"
}
},
"plan_info": {
"source": "file",
"path": "docs/plans/feature-auth.md",
"title": "ç¨æ·è®¤è¯ç³»ç»å®ç°",
"format": "markdown",
"total_tasks": 5
},
"tasks": [...],
"project_info": {
"plugin_root": "/path/to/project",
"git": {
"branch": "feature/auth",
"modified_files": []
},
"detected_stack": "mixed"
}
}
8.2 éªè¯ç»ææ ¼å¼
{
"validation_results": [...],
"execution_order": ["T-001", "T-002", "T-003"],
"batches": [
{
"batch_id": 1,
"tasks": ["T-001", "T-002"],
"can_parallel": true
}
],
"overall_confidence": 85,
"recommendation": "proceed"
}
8.3 æ§è¡æ¥åæ ¼å¼
{
"execution_results": [
{
"task_id": "T-001",
"status": "completed",
"tdd_cycles": 1,
"changes": [...],
"duration_seconds": 120
}
],
"summary": {
"total": 5,
"completed": 4,
"skipped": 1,
"failed": 0
},
"review_results": {...},
"knowledge_extracted": [...]
}