Loading...
Loading...
Extract learning before restarting. Code is a draft; learning is the asset. Use when work is drifting, approach has reversed 3+ times, or scope is expanding while "done" keeps fuzzing.
npx skill4agent add open-horizon-labs/skills salvage/salvage"This session/approach is being salvaged because [reason]. The original aim was [aim]. What actually happened was [reality]."
"I thought X, but actually Y."
Guardrail: [boundary]
Reason: [why this matters]
Trigger: [when to revisit this constraint]"If I had known about [X], I would have [Y] instead."
## Salvage Summary
### Original Aim
[What we were trying to achieve]
### Why Salvaged
[Direct statement of what went wrong]
### Key Learnings
1. [Learning 1]
2. [Learning 2]
3. [Learning 3]
### New Guardrails
- [Guardrail 1]
- [Guardrail 2]
### Context for Restart
[What the next attempt should know before starting]
### Reusable Fragments
[Any code, patterns, or approaches worth keeping]## Salvage Report
**Salvaged:** [date/session identifier]
**Reason:** [why this work is being salvaged]
**Original Aim:** [what we were trying to do]
### Learnings
[Numbered list of key insights]
### New Guardrails
[Explicit constraints with reason and trigger]
### Missing Context
[What would have helped]
### Local Practices
[Hard-won wisdom to encode]
### Reusable Fragments
[Code or patterns worth keeping]
### Fresh Start Recommendation
[How to approach this next time]/salvage
The auth refactor has changed direction 4 times. Originally simplifying
the flow, now it's more complex than before.## Salvage Report
**Salvaged:** Auth refactor session
**Reason:** Approach reversed 4 times, complexity increased not decreased
**Original Aim:** Simplify authentication flow
### Learnings
1. The complexity isn't in the auth code—it's in the 6 different OAuth providers
2. Each provider has subtly different token refresh behavior
3. The "simple" unified flow breaks provider-specific error handling
### New Guardrails
- Guardrail: Don't abstract OAuth providers into single interface
- Reason: Provider differences are semantic, not syntactic
- Trigger: Revisit if we drop to 2 providers or less
### Missing Context
- The original auth was complex for a reason (provider edge cases)
- Should have read the PR that introduced each provider
### Local Practices
OAuth providers aren't interchangeable. The abstraction leak is the feature.
### Fresh Start Recommendation
Instead of unifying the flow, document each provider's quirks explicitly.
Consider: is "simplify" the right aim? Maybe "make visible" is better./salvage
Started as "add dark mode toggle." Now touching 14 files and the
theme system doesn't exist yet.## Salvage Report
**Salvaged:** Dark mode implementation
**Reason:** Scope expanded from toggle to theme system
**Original Aim:** Add dark mode toggle to settings
### Learnings
1. No theme system exists—colors are hardcoded across components
2. A toggle without infrastructure is meaningless
3. This is actually two tasks: (1) build theme system, (2) add toggle
### New Guardrails
- Guardrail: UI feature requests need infrastructure check first
- Reason: "Add X" often implies "build system for X"
- Trigger: Any request that touches visual consistency
### Missing Context
- Should have grepped for color usage before starting
- No design tokens or CSS variables in codebase
### Local Practices
"Add [feature]" is not the same as "build [feature]." Check if the
infrastructure exists before estimating.
### Reusable Fragments
- Color mapping I started: styles/colors.js (incomplete but useful)
- Component audit list: 14 files that hardcode colors
### Fresh Start Recommendation
1. First: Create theme system (CSS variables, ThemeContext)
2. Then: Add dark mode as first theme variant
3. The toggle is the easy part—do it last.oh/<session>.md/salvage auth-refactor.oh/auth-refactor.md/salvage"Save to session? [suggested-name] [custom] [skip]"
## Salvage
**Updated:** <timestamp>
**Outcome:** [extracted learnings, ready for restart]
[salvage report: learnings, guardrails, context for fresh start].oh/<session>.md/review/execute/aim/problem-space/aim/problem-space