@tinkcarlos/skillora 0.2.0
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/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Context Isolation Protocol
|
|
2
|
+
|
|
3
|
+
## 核心原则
|
|
4
|
+
|
|
5
|
+
**多技能编排时,必须防止上下文污染,确保计划准确执行。**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 上下文污染的表现
|
|
10
|
+
|
|
11
|
+
| 问题 | 表现 | 后果 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| **目标漂移** | 调用 skill A 后,忘记原始任务目标 | 偏离用户需求 |
|
|
14
|
+
| **计划丢失** | 执行到一半,忘记后续步骤 | 任务不完整 |
|
|
15
|
+
| **状态混乱** | 多个 skill 输出混在一起 | 无法追踪进度 |
|
|
16
|
+
| **重复执行** | 忘记已完成的任务 | 浪费时间 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 隔离机制 (3 层防护)
|
|
21
|
+
|
|
22
|
+
### Layer 1: Subagent 隔离
|
|
23
|
+
|
|
24
|
+
**每个 skill 在独立的 subagent 中执行,天然隔离上下文。**
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
主 Agent (fullstack-developer)
|
|
28
|
+
│
|
|
29
|
+
├── Task(subagent_type="general-purpose") → product-requirements
|
|
30
|
+
│ └── 返回: 需求文档
|
|
31
|
+
│
|
|
32
|
+
├── Task(subagent_type="general-purpose") → database-migrations
|
|
33
|
+
│ └── 返回: 迁移文件
|
|
34
|
+
│
|
|
35
|
+
├── Task(subagent_type="general-purpose") → api-scaffolding
|
|
36
|
+
│ └── 返回: API 代码
|
|
37
|
+
│
|
|
38
|
+
└── Task(subagent_type="superpowers:code-reviewer") → code-review
|
|
39
|
+
└── 返回: 审查报告
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**调用模板**:
|
|
43
|
+
```
|
|
44
|
+
Task(
|
|
45
|
+
subagent_type="general-purpose",
|
|
46
|
+
prompt="执行 [skill-name] 技能,任务: [具体任务描述]",
|
|
47
|
+
description="[3-5 字描述]"
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Layer 2: 计划锚点
|
|
52
|
+
|
|
53
|
+
**每次调用 skill 前后,重新读取计划文档。**
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
57
|
+
│ Before Skill Call │
|
|
58
|
+
│ ───────────────────────────────────────────────────────── │
|
|
59
|
+
│ 1. 读取计划文档 (确认当前任务) │
|
|
60
|
+
│ 2. 读取进度追踪 (确认已完成任务) │
|
|
61
|
+
│ 3. 输出: "开始执行 Task X: [任务描述]" │
|
|
62
|
+
└─────────────────────────────────────────────────────────────┘
|
|
63
|
+
↓
|
|
64
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
65
|
+
│ Skill Execution (in Subagent) │
|
|
66
|
+
│ ───────────────────────────────────────────────────────── │
|
|
67
|
+
│ 独立上下文,不受主 Agent 干扰 │
|
|
68
|
+
└─────────────────────────────────────────────────────────────┘
|
|
69
|
+
↓
|
|
70
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
71
|
+
│ After Skill Call │
|
|
72
|
+
│ ───────────────────────────────────────────────────────── │
|
|
73
|
+
│ 1. 记录 skill 输出到进度追踪 │
|
|
74
|
+
│ 2. 重新读取计划文档 (确认下一任务) │
|
|
75
|
+
│ 3. 输出: "完成 Task X,下一步: Task Y" │
|
|
76
|
+
└─────────────────────────────────────────────────────────────┘
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Layer 3: 进度追踪文档
|
|
80
|
+
|
|
81
|
+
**维护一个进度追踪文档,记录每个 skill 的输入/输出。**
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# Development Progress Tracker
|
|
85
|
+
|
|
86
|
+
## Session Info
|
|
87
|
+
- **Session ID**: DEV-{YYYYMMDD}-{HHmm}
|
|
88
|
+
- **Original Goal**: [用户原始需求]
|
|
89
|
+
- **Plan File**: [计划文档路径]
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Task Progress
|
|
94
|
+
|
|
95
|
+
| # | Task | Skill | Status | Input | Output |
|
|
96
|
+
|---|------|-------|--------|-------|--------|
|
|
97
|
+
| 1 | 需求分析 | `product-requirements` | ✅ Done | 用户需求 | PRD 文档 |
|
|
98
|
+
| 2 | 数据库设计 | `database-migrations` | ✅ Done | PRD | 迁移文件 |
|
|
99
|
+
| 3 | API 开发 | `api-scaffolding` | 🔄 In Progress | - | - |
|
|
100
|
+
| 4 | 前端页面 | `frontend-design` | ⏳ Pending | - | - |
|
|
101
|
+
|
|
102
|
+
**Current Task**: 3 - API 开发
|
|
103
|
+
**Progress**: 2/4 (50%)
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Skill Outputs (Evidence)
|
|
108
|
+
|
|
109
|
+
### Task 1: 需求分析
|
|
110
|
+
- **Skill**: `product-requirements`
|
|
111
|
+
- **Input**: 用户需求描述
|
|
112
|
+
- **Output**: `docs/prd/feature-x.md`
|
|
113
|
+
- **Key Points**: [核心需求摘要]
|
|
114
|
+
|
|
115
|
+
### Task 2: 数据库设计
|
|
116
|
+
- **Skill**: `database-migrations`
|
|
117
|
+
- **Input**: PRD 文档
|
|
118
|
+
- **Output**: `migrations/001_create_users.py`
|
|
119
|
+
- **Key Points**: [表结构摘要]
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Goal Alignment Check
|
|
124
|
+
|
|
125
|
+
| Check | Status |
|
|
126
|
+
|-------|--------|
|
|
127
|
+
| 当前任务与原始目标一致 | ✅ |
|
|
128
|
+
| 已完成任务符合计划 | ✅ |
|
|
129
|
+
| 无遗漏任务 | ✅ |
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 执行流程
|
|
135
|
+
|
|
136
|
+
### Step 1: 创建进度追踪文档
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
开始开发前:
|
|
140
|
+
1. 创建 `.dev/progress-{timestamp}.md`
|
|
141
|
+
2. 记录原始目标
|
|
142
|
+
3. 记录计划文档路径
|
|
143
|
+
4. 初始化任务列表
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Step 2: 每个任务执行前
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
执行任务前:
|
|
150
|
+
1. 读取进度追踪文档
|
|
151
|
+
2. 确认当前任务
|
|
152
|
+
3. 输出: "🔄 开始 Task X: [任务描述]"
|
|
153
|
+
4. 输出: "📋 调用 Skill: [skill-name]"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Step 3: 使用 Subagent 执行 Skill
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
调用 Task 工具:
|
|
160
|
+
- subagent_type: "general-purpose" 或特定类型
|
|
161
|
+
- prompt: 包含完整任务描述 + 输入数据
|
|
162
|
+
- description: 简短描述
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Step 4: 每个任务执行后
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
执行任务后:
|
|
169
|
+
1. 记录 skill 输出到进度追踪
|
|
170
|
+
2. 更新任务状态
|
|
171
|
+
3. 输出: "✅ 完成 Task X"
|
|
172
|
+
4. 读取计划,确认下一任务
|
|
173
|
+
5. 输出: "📋 下一步: Task Y"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Step 5: 目标对齐检查
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
每 2-3 个任务后:
|
|
180
|
+
1. 重新读取原始目标
|
|
181
|
+
2. 检查已完成任务是否符合目标
|
|
182
|
+
3. 检查是否有遗漏
|
|
183
|
+
4. 输出: "🎯 目标对齐检查: ✅/⚠️"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Subagent 调用模板
|
|
189
|
+
|
|
190
|
+
### 需求分析
|
|
191
|
+
```
|
|
192
|
+
Task(
|
|
193
|
+
subagent_type="general-purpose",
|
|
194
|
+
prompt="执行 product-requirements 技能分析以下需求:\n\n[需求描述]\n\n输出需求文档。",
|
|
195
|
+
description="需求分析"
|
|
196
|
+
)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 数据库设计
|
|
200
|
+
```
|
|
201
|
+
Task(
|
|
202
|
+
subagent_type="general-purpose",
|
|
203
|
+
prompt="执行 database-migrations 技能,根据以下需求设计数据库:\n\n[需求摘要]\n\n输出迁移文件。",
|
|
204
|
+
description="数据库设计"
|
|
205
|
+
)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### API 开发
|
|
209
|
+
```
|
|
210
|
+
Task(
|
|
211
|
+
subagent_type="general-purpose",
|
|
212
|
+
prompt="执行 api-scaffolding 技能,根据以下需求开发 API:\n\n[需求摘要]\n[数据库结构]\n\n输出 API 代码。",
|
|
213
|
+
description="API 开发"
|
|
214
|
+
)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 代码审查
|
|
218
|
+
```
|
|
219
|
+
Task(
|
|
220
|
+
subagent_type="superpowers:code-reviewer",
|
|
221
|
+
prompt="审查以下代码变更:\n\n[变更文件列表]\n\n按照 code-review 技能标准审查。",
|
|
222
|
+
description="代码审查"
|
|
223
|
+
)
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 回归检查清单
|
|
229
|
+
|
|
230
|
+
每个 skill 完成后,检查:
|
|
231
|
+
|
|
232
|
+
| 检查项 | 问题 |
|
|
233
|
+
|--------|------|
|
|
234
|
+
| 目标一致 | 当前任务是否与原始目标一致? |
|
|
235
|
+
| 计划符合 | 执行的是计划中的任务吗? |
|
|
236
|
+
| 无遗漏 | 是否跳过了任何任务? |
|
|
237
|
+
| 输出正确 | skill 输出是否符合预期? |
|
|
238
|
+
| 下一步明确 | 下一个任务是什么? |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 与 SKILL.md 集成
|
|
243
|
+
|
|
244
|
+
在 fullstack-developer 的 Phase 4 中添加:
|
|
245
|
+
|
|
246
|
+
```markdown
|
|
247
|
+
### Phase 4: 开发执行 (Context Isolated)
|
|
248
|
+
|
|
249
|
+
**每个任务使用 Subagent 隔离执行:**
|
|
250
|
+
|
|
251
|
+
1. 读取进度追踪 → 确认当前任务
|
|
252
|
+
2. Task(subagent) → 执行 skill
|
|
253
|
+
3. 记录输出 → 更新进度
|
|
254
|
+
4. 读取计划 → 确认下一任务
|
|
255
|
+
5. 每 2-3 任务 → 目标对齐检查
|
|
256
|
+
```
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Database Migration Guide
|
|
2
|
+
|
|
3
|
+
> Schema changes are the most dangerous operations. Handle with extreme care.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
1. **Migration before code** — Schema must exist before code that uses it
|
|
8
|
+
2. **Always reversible** — Every migration must have a rollback
|
|
9
|
+
3. **Zero downtime** — Production migrations should not lock tables
|
|
10
|
+
4. **Verify after migrate** — Always check data integrity post-migration
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Migration Workflow
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
18
|
+
│ MIGRATION FLOW │
|
|
19
|
+
├─────────────────────────────────────────────────────────────┤
|
|
20
|
+
│ │
|
|
21
|
+
│ 1. Create migration file │
|
|
22
|
+
│ 2. Write up() and down() functions │
|
|
23
|
+
│ 3. Test locally (up + down + up) │
|
|
24
|
+
│ 4. Review ORM model matches schema │
|
|
25
|
+
│ 5. Test with production data snapshot │
|
|
26
|
+
│ 6. Deploy to staging, verify │
|
|
27
|
+
│ 7. Deploy to production with backup │
|
|
28
|
+
│ 8. Verify data integrity │
|
|
29
|
+
│ │
|
|
30
|
+
└─────────────────────────────────────────────────────────────┘
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Common Migration Bugs
|
|
36
|
+
|
|
37
|
+
### 1. Schema-Model Mismatch
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
# 🔴 BUG: ORM model has field, database doesn't
|
|
41
|
+
class User(Base):
|
|
42
|
+
__tablename__ = 'users'
|
|
43
|
+
id = Column(Integer, primary_key=True)
|
|
44
|
+
email = Column(String)
|
|
45
|
+
avatar_url = Column(String) # 💀 Not in database!
|
|
46
|
+
|
|
47
|
+
# Error: column "avatar_url" does not exist
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Prevention**:
|
|
51
|
+
```bash
|
|
52
|
+
# Always check schema matches model
|
|
53
|
+
# Python/SQLAlchemy
|
|
54
|
+
alembic check
|
|
55
|
+
|
|
56
|
+
# Compare ORM with actual DB
|
|
57
|
+
python -c "from app.models import *; Base.metadata.create_all(engine, checkfirst=True)"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Missing Migration
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
# 🔴 BUG: Added field to model, forgot migration
|
|
64
|
+
class User(Base):
|
|
65
|
+
phone = Column(String) # Added in code
|
|
66
|
+
|
|
67
|
+
# But no migration file exists
|
|
68
|
+
# Works locally (dev DB recreated), fails in production
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Prevention**:
|
|
72
|
+
- Auto-generate migrations: `alembic revision --autogenerate`
|
|
73
|
+
- Never manually edit DB without migration
|
|
74
|
+
- CI check: Compare model with migration history
|
|
75
|
+
|
|
76
|
+
### 3. Non-Reversible Migration
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
# 🔴 BUG: Can't rollback
|
|
80
|
+
def upgrade():
|
|
81
|
+
op.drop_column('users', 'legacy_field') # Data lost!
|
|
82
|
+
|
|
83
|
+
def downgrade():
|
|
84
|
+
op.add_column('users', sa.Column('legacy_field', sa.String))
|
|
85
|
+
# 💀 Data is gone, can't restore
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Prevention**:
|
|
89
|
+
```python
|
|
90
|
+
# ✅ CORRECT: Backup before destructive operations
|
|
91
|
+
def upgrade():
|
|
92
|
+
# 1. First migration: Add new column, copy data
|
|
93
|
+
op.add_column('users', sa.Column('new_field', sa.String))
|
|
94
|
+
op.execute("UPDATE users SET new_field = legacy_field")
|
|
95
|
+
|
|
96
|
+
def downgrade():
|
|
97
|
+
op.drop_column('users', 'new_field')
|
|
98
|
+
|
|
99
|
+
# 2. Second migration (after verification): Drop old column
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 4. Field Type Mismatch
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
# 🔴 BUG: Frontend expects number, DB stores string
|
|
106
|
+
# Migration
|
|
107
|
+
op.add_column('products', sa.Column('price', sa.String)) # String!
|
|
108
|
+
|
|
109
|
+
# Frontend
|
|
110
|
+
interface Product {
|
|
111
|
+
price: number; // Expects number
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
# Result: price = "99.99" not 99.99, calculations fail
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Prevention**:
|
|
118
|
+
- Define types in API schema first (Swagger/OpenAPI)
|
|
119
|
+
- Generate types from schema for both ends
|
|
120
|
+
- Add conversion layer if needed
|
|
121
|
+
|
|
122
|
+
### 5. Null Constraint on Existing Data
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
# 🔴 BUG: Adding NOT NULL to column with existing NULLs
|
|
126
|
+
def upgrade():
|
|
127
|
+
op.alter_column('users', 'email', nullable=False)
|
|
128
|
+
# 💀 Fails if any email is NULL
|
|
129
|
+
|
|
130
|
+
# ✅ CORRECT: Handle existing data first
|
|
131
|
+
def upgrade():
|
|
132
|
+
# 1. Update NULLs
|
|
133
|
+
op.execute("UPDATE users SET email = 'unknown@temp.com' WHERE email IS NULL")
|
|
134
|
+
# 2. Then add constraint
|
|
135
|
+
op.alter_column('users', 'email', nullable=False)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Field Consistency Checklist
|
|
141
|
+
|
|
142
|
+
### Frontend-Backend-Database Alignment
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
## Field: [field_name]
|
|
146
|
+
|
|
147
|
+
| Layer | Name | Type | Nullable | Default |
|
|
148
|
+
|-------|------|------|----------|---------|
|
|
149
|
+
| Database | created_at | TIMESTAMP | NO | NOW() |
|
|
150
|
+
| ORM Model | created_at | DateTime | NO | func.now() |
|
|
151
|
+
| API Schema | createdAt | string | NO | - |
|
|
152
|
+
| Frontend | createdAt | string | NO | - |
|
|
153
|
+
|
|
154
|
+
Issues:
|
|
155
|
+
- [ ] Naming: snake_case → camelCase (handled by serializer?)
|
|
156
|
+
- [ ] Type: DateTime → string (ISO format?)
|
|
157
|
+
- [ ] Nullable mismatch?
|
|
158
|
+
- [ ] Default mismatch?
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Detection Commands
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Find all model fields
|
|
165
|
+
grep -rn "Column\|Field" --include="*.py" models/
|
|
166
|
+
|
|
167
|
+
# Find all API schema fields
|
|
168
|
+
grep -rn "class.*Schema\|Field(" --include="*.py" schemas/
|
|
169
|
+
|
|
170
|
+
# Find all frontend types
|
|
171
|
+
grep -rn "interface\|type " --include="*.ts" types/
|
|
172
|
+
|
|
173
|
+
# Compare (manual or script)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Migration Safety Checklist
|
|
179
|
+
|
|
180
|
+
### Before Migration
|
|
181
|
+
|
|
182
|
+
- [ ] Migration file has both `up()` and `down()`
|
|
183
|
+
- [ ] Tested rollback locally: `migrate up` → `migrate down` → `migrate up`
|
|
184
|
+
- [ ] No data loss in destructive operations
|
|
185
|
+
- [ ] Large table? Use batched operations
|
|
186
|
+
- [ ] Adding NOT NULL? Default value provided
|
|
187
|
+
- [ ] Adding index? Will it lock table?
|
|
188
|
+
- [ ] ORM model updated to match schema
|
|
189
|
+
|
|
190
|
+
### During Migration (Production)
|
|
191
|
+
|
|
192
|
+
- [ ] Database backup taken
|
|
193
|
+
- [ ] Maintenance window scheduled (if needed)
|
|
194
|
+
- [ ] Team notified
|
|
195
|
+
- [ ] Monitoring dashboard open
|
|
196
|
+
- [ ] Rollback command ready
|
|
197
|
+
|
|
198
|
+
### After Migration
|
|
199
|
+
|
|
200
|
+
- [ ] Data integrity verified
|
|
201
|
+
- [ ] Application tested
|
|
202
|
+
- [ ] No errors in logs
|
|
203
|
+
- [ ] Performance acceptable
|
|
204
|
+
- [ ] Rollback tested (in staging)
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Common Patterns
|
|
209
|
+
|
|
210
|
+
### Adding a New Field
|
|
211
|
+
|
|
212
|
+
```python
|
|
213
|
+
# 1. Migration
|
|
214
|
+
def upgrade():
|
|
215
|
+
op.add_column('users', sa.Column('phone', sa.String, nullable=True))
|
|
216
|
+
|
|
217
|
+
def downgrade():
|
|
218
|
+
op.drop_column('users', 'phone')
|
|
219
|
+
|
|
220
|
+
# 2. ORM Model
|
|
221
|
+
class User(Base):
|
|
222
|
+
phone = Column(String, nullable=True)
|
|
223
|
+
|
|
224
|
+
# 3. API Schema
|
|
225
|
+
class UserSchema(BaseModel):
|
|
226
|
+
phone: Optional[str] = None
|
|
227
|
+
|
|
228
|
+
# 4. Frontend Type
|
|
229
|
+
interface User {
|
|
230
|
+
phone?: string;
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Renaming a Field (Zero Downtime)
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
# Phase 1: Add new column, copy data
|
|
238
|
+
def upgrade_phase1():
|
|
239
|
+
op.add_column('users', sa.Column('full_name', sa.String))
|
|
240
|
+
op.execute("UPDATE users SET full_name = name")
|
|
241
|
+
|
|
242
|
+
# Phase 2: Update code to use new column (deploy)
|
|
243
|
+
|
|
244
|
+
# Phase 3: Drop old column
|
|
245
|
+
def upgrade_phase3():
|
|
246
|
+
op.drop_column('users', 'name')
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Changing Field Type
|
|
250
|
+
|
|
251
|
+
```python
|
|
252
|
+
# 🔴 DANGEROUS: Direct type change
|
|
253
|
+
op.alter_column('products', 'price', type_=sa.Integer) # Data loss!
|
|
254
|
+
|
|
255
|
+
# ✅ SAFE: Create new column, migrate data
|
|
256
|
+
def upgrade():
|
|
257
|
+
op.add_column('products', sa.Column('price_cents', sa.Integer))
|
|
258
|
+
op.execute("UPDATE products SET price_cents = CAST(price * 100 AS INTEGER)")
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Framework-Specific Commands
|
|
264
|
+
|
|
265
|
+
### Python (Alembic)
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Generate migration
|
|
269
|
+
alembic revision --autogenerate -m "add phone to users"
|
|
270
|
+
|
|
271
|
+
# Apply migration
|
|
272
|
+
alembic upgrade head
|
|
273
|
+
|
|
274
|
+
# Rollback
|
|
275
|
+
alembic downgrade -1
|
|
276
|
+
|
|
277
|
+
# Check current version
|
|
278
|
+
alembic current
|
|
279
|
+
|
|
280
|
+
# Show history
|
|
281
|
+
alembic history
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Node.js (Prisma)
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# Generate migration
|
|
288
|
+
npx prisma migrate dev --name add_phone_to_users
|
|
289
|
+
|
|
290
|
+
# Apply to production
|
|
291
|
+
npx prisma migrate deploy
|
|
292
|
+
|
|
293
|
+
# Reset (DANGEROUS)
|
|
294
|
+
npx prisma migrate reset
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Node.js (TypeORM)
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# Generate migration
|
|
301
|
+
npm run typeorm migration:generate -- -n AddPhoneToUsers
|
|
302
|
+
|
|
303
|
+
# Run migrations
|
|
304
|
+
npm run typeorm migration:run
|
|
305
|
+
|
|
306
|
+
# Revert last
|
|
307
|
+
npm run typeorm migration:revert
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Data Integrity Verification
|
|
313
|
+
|
|
314
|
+
```sql
|
|
315
|
+
-- After migration, verify data
|
|
316
|
+
|
|
317
|
+
-- Check no NULLs where not expected
|
|
318
|
+
SELECT COUNT(*) FROM users WHERE email IS NULL;
|
|
319
|
+
|
|
320
|
+
-- Check type conversion worked
|
|
321
|
+
SELECT * FROM products WHERE price_cents IS NULL AND price IS NOT NULL;
|
|
322
|
+
|
|
323
|
+
-- Check no orphaned records
|
|
324
|
+
SELECT * FROM orders WHERE user_id NOT IN (SELECT id FROM users);
|
|
325
|
+
|
|
326
|
+
-- Check counts match
|
|
327
|
+
SELECT
|
|
328
|
+
(SELECT COUNT(*) FROM old_table) as old_count,
|
|
329
|
+
(SELECT COUNT(*) FROM new_table) as new_count;
|
|
330
|
+
```
|
|
331
|
+
|