skills/small-safe-steps/SKILL.md
--- name: small-safe-steps description: Small Safe Steps (S3): breaks work into 1-3h increments with zero downtime. Use when asking "how do I implement/migrate/refactor", "what steps to do X", "plan safe migration", or handling risky DB/API changes. Applies expand-contract pattern for migrations, refactorings, schema changes. allowed-tools: - Read - AskUserQuestion --- STARTER_CHARACTER = 🪜⚡ # Small Safe Steps ## Mission Help you divide **ANY work** into the smallest, safest, most valua
npx skillsauth add envy-7z/mobile-agent-skillpack skills/small-safe-stepsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
STARTER_CHARACTER = 🪜⚡
Help you divide ANY work into the smallest, safest, most valuable steps possible — ideally 1-3 hours each.
Core belief: Risk grows faster than the size of the change.
Automatic activation - just ask:
Manual invocation:
/small-safe-steps + describe your work/small-safe-steps Migrate authentication from Auth0 to KeycloakIn workflow with other skills:
Use when:
Do NOT use when:
Clarify the goal by asking:
🚨 Identify if this is a risky/breaking change:
Red flags for risky changes:
If risky change detected → Apply Expand-Contract Pattern
See "Quick Reference: Risky Changes" below and REFERENCE.md for detailed examples.
Identify 3-5 major phases, each independently valuable:
Example: "Improve API performance"
Example: "Migrate from SendGrid to AWS SES" (risky change)
For EACH phase, force division into tiny steps.
Mandatory criteria for each step:
If a step fails these criteria, it's too big.
Flag steps by type:
Learning steps (time-boxed research/investigation):
Earning steps (deliver value):
Key principle: Learning before earning. Don't build before you understand.
Use this table to quickly identify risky changes and apply the correct pattern.
| Change Type | Example | Expand-Contract Phases | Typical Duration |
|-------------|---------|----------------------|------------------|
| Rename DB column | email → email_address | 1. Add new column + dual-write<br>2. Switch reads to new<br>3. Drop old column | 2-3 weeks |
| Change data type | String → JSON object | 1. Add new column + parse/backfill<br>2. Switch to new format<br>3. Drop old column | 2-4 weeks |
| API field rename | userName → username | 1. Return both fields<br>2. Deprecate old, notify consumers<br>3. Remove old field | 2-3 months |
| Replace service | SendGrid → AWS SES | 1. Add new service + dual-call<br>2. Route traffic % to new<br>3. Remove old service | 1 month |
| Replace library | Lodash → Native JS | 1. Add new code alongside old<br>2. Migrate callers incrementally<br>3. Remove old library | 1-2 weeks |
| Refactor logic | calculate_v1 → calculate_v2 | 1. Implement new alongside old<br>2. Compare outputs, migrate callers<br>3. Remove old function | 1-2 weeks |
For detailed step-by-step examples, see REFERENCE.md.
When you detect a risky/breaking change, use the Expand-Contract pattern to maintain zero downtime:
Goal: System supports BOTH old and new
Pattern:
Key principle: Zero users are affected yet. System continues working with old.
Goal: Gradually migrate reads/usage from old to new
Pattern:
Key principle: System now uses new, but still maintains old as backup.
Goal: Clean up by removing old implementation
Pattern:
Key principle: Only remove after old path has ZERO usage for days/weeks.
✅ Before MIGRATE phase:
✅ Before CONTRACT phase:
| Work Type | Primary Pattern | Phases | Key Considerations | |-----------|----------------|--------|-------------------| | Refactoring | Expand-Contract | Add new → Dual-call → Migrate → Remove old | Compare outputs if possible | | Performance | Baseline → Fix → Verify | Measure → Identify → Implement → Measure again | Always measure before optimizing | | Migration | Expand-Contract | Add new → Route % → Remove old | Use feature flags for gradual rollout | | Debugging | Linear investigation | Reproduce → Log → Analyze → Fix → Verify | Time-box investigation steps | | Research/Spike | Time-boxed learning | Define questions → Evaluate options → Decide | Max 2h per option, document findings | | DB Schema | Expand-Contract | Add column → Dual-write → Migrate reads → Drop old | Never drop columns immediately | | API Changes | Expand-Contract | Return both → Deprecate → Remove | Long migration period (months) |
For detailed examples of each pattern, see REFERENCE.md.
Watch for these signs:
When you spot these, force more slicing.
This skill works in sequence with other skills:
Typical workflow:
Use this skill when:
Integration examples:
Do NOT use this skill when:
After applying this skill, verify:
If any checkbox fails, revisit the breakdown.
Red flags that I didn't do this right:
Risk grows faster than the size of the change
Every step must be deployable
Every step must be reversible
Zero downtime is non-negotiable
Learning before earning
1-3 hours per step, no exceptions
For detailed step-by-step examples of expand-contract pattern across different contexts (database changes, API migrations, service replacements, refactorings), see REFERENCE.md in this skill directory.
Examples included:
Author: Eduardo Ferro (expand-contract pattern applied to micro-steps) Source: https://www.eferro.net/
development
Use when you have a spec or requirements for a multi-step task, before touching code
data-ai
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
tools
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
testing
Applies Kent Beck's Thinkies—pattern-based thinking habits that generate ideas. Use when stuck, exploring alternatives, or reframing decisions.