用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill retrospective命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
基于 SOC 职业分类
正在显示 SKILL.md
| name | retrospective |
| description | | Use when this capability is needed. |
User signals completion:
Document what DIDN'T work before it fades from memory:
## Failed Attempts
| Approach | Why It Failed | Time Spent |
|----------|---------------|------------|
| [First thing tried] | [Specific reason] | [Estimate] |
| [Second thing tried] | [Specific reason] | [Estimate] |
Be specific about WHY it failed. "Didn't work" is useless. "Race condition between auth callback and state update" is useful.
## What Worked
**Final approach:** [One sentence summary]
**Key insight:** [The "aha" moment that unlocked the solution]
**Implementation:**
1. [Step 1]
2. [Step 2]
3. [Step 3]
## Learnings
**Would do differently:**
- [What you'd change next time]
**Surprised by:**
- [Unexpected discoveries]
**Reusable patterns:**
- [Anything worth extracting into a skill or snippet]
If the learnings are significant, offer to create:
learn-from-this# Retrospective: [Task Name]
## Failed Attempts
| Approach | Why It Failed | Time Spent |
|----------|---------------|------------|
| ... | ... | ... |
## What Worked
**Final approach:** ...
**Key insight:** ...
**Implementation:**
1. ...
## Learnings
**Would do differently:**
- ...
**Surprised by:**
- ...
**Reusable patterns:**
- ...
---
*Generated: [timestamp]*
# Retrospective: Fix Login Race Condition
## Failed Attempts
| Approach | Why It Failed | Time Spent |
|----------|---------------|------------|
| Added setTimeout delay | Worked locally, flaky in prod | 20 min |
| Moved auth check earlier | Still raced with state hydration | 15 min |
| Added loading state | Masked the bug, didn't fix it | 10 min |
## What Worked
**Final approach:** Used auth state machine with explicit "initializing" state
**Key insight:** The bug wasn't timing - it was a missing state. Auth had
three states (logged-in, logged-out, unknown) but code only handled two.
**Implementation:**
1. Added AuthState enum with INITIALIZING state
2. Protected routes check for INITIALIZING, show skeleton
3. Auth callback sets state atomically after validation
## Learnings
**Would do differently:**
- Check for missing states FIRST before adding timing hacks
**Surprised by:**
- The "loading" state we added was actually correct, just incomplete
**Reusable patterns:**
- State machines for auth (avoid boolean flags)
# Retrospective: Add CSV Export
## Failed Attempts
| Approach | Why It Failed | Time Spent |
|----------|---------------|------------|
| Client-side blob generation | Crashed on 10k+ rows | 30 min |
| Streaming response | CORS issues with download | 20 min |
## What Worked
**Final approach:** Server generates CSV, returns signed URL, client redirects
**Key insight:** Don't fight the browser. Redirecting to a file URL is the
native download UX.
**Implementation:**
1. POST /api/export triggers server-side generation
2. CSV written to temp storage with 5-min expiry
3. Return signed URL
4. Client does window.location = url
## Learnings
**Would do differently:**
- Start with server-side for any "export" feature
**Surprised by:**
- Signed URLs are trivial with modern cloud storage
**Reusable patterns:**
- Export pattern: generate server-side, return URL, redirect
Converted and distributed by TomeVault — claim your Tome and manage your conversions.