Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Apply structured thinking before coding. Use when: starting new features, making architectural decisions, refactoring large components, or evaluating implementation approaches. Includes Musk's 5-step algorithm and ICE scoring framework.
.claude/skills/aiskillstore-planning-framework/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 128% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 182% | 0% |
Before starting ANY significant coding task:
Question everything:
Portfolio Buddy 2 Example: > Request: "Add sortable columns to metrics table" > > Questions: > - Why? Users want to find best/worst performing strategies quickly > - Simpler solution? Just default sort by Sharpe Ratio (most important metric) > - Alternative? Add "Top 3" and "Bottom 3" highlight sections > > Decision: Implemented full multi-column sorting via useSorting hook because: > - Different users care about different metrics (Sharpe vs Sortino vs Max DD) > - Sorting is O(n log n) - negligible for <100 strategies > - Reusable hook can be used in future tables
What can we eliminate?
Rule: If you don't add back 10% of what you deleted, you didn't delete enough.
Portfolio Buddy 2 Example: > Discovery: Recharts library (11.5KB) installed but never imported > > Questions: > - Is it used anywhere? NO - search reveals zero imports > - Why was it installed? Probably initial plan, switched to Chart.js > - Can we delete it? YES - nothing depends on it > > Action: npm uninstall recharts (saves 11.5KB in bundle) > > Result: Cleaner dependency tree, faster installs, smaller bundle
Only after deleting:
Portfolio Buddy 2 Example: > Problem: PortfolioSection.tsx is 591 lines (3x the 200-line limit) > > Before Optimization: > typescript > function PortfolioSection() { > // 50 lines of contract multiplier logic > // 40 lines of date filtering logic > // 100 lines of Chart.js configuration > // 80 lines of statistics calculations > // 300+ lines of JSX rendering > } > > > After Simplification: > typescript > // Extract hooks > const portfolio = usePortfolio(files, dateRange) > const contracts = useContractMultipliers(strategies) > > // Extract components > <ContractControls {...contracts} /> > <EquityChartSection data={portfolio.equity} /> > <PortfolioStats metrics={portfolio.metrics} /> > > > Result: Main component < 100 lines, logic encapsulated, reusable
Portfolio Buddy 2 Example: > Before: Create React App build time: ~30 seconds > > Action: Migrated to Vite > > After: Vite build time: ~2 seconds (15x faster) > > Impact: Developer can iterate 15x more per hour
Last step only - automate what's proven necessary.
Portfolio Buddy 2 Example: > Don't automate yet: CI/CD pipeline > - Manual Cloudflare deployments work fine for now > - Only deploying 2-3x per month > - Setting up GitHub Actions would take 2-4 hours > - Wait until deployment frequency increases > > Should automate: TypeScript checking on commit > - Would catch any type violations before merge > - Git pre-commit hook: tsc --noEmit > - Saves debugging time later
Evaluate solutions using:
ICE Score = (Impact × Confidence × Ease) / 10
Feature: Add React error boundaries around risky components
Decision: Should implement soon. Quick win, high impact.
Feature: Add Excel export button for metrics table
Decision: Worth implementing. Clear user value, reasonable effort.
Feature: Split 591-line component into smaller pieces
Decision: Important for code health, but not urgent. Do after user-facing features.
Feature: Live market data updates in charts
Decision: Skip for now. Doesn't fit core use case (historical analysis).
Feature: Uninstall unused Recharts library
npm uninstall recharts)Decision: Easy quick win. Do it next time touching package.json.
Feature: Add Sortino Ratio metric (already completed)
Result: Successfully implemented in commits 258ba3a & 9f25040.
| ICE Score Range | Priority | Action | |-----------------|----------|--------| | 40+ | High | Do soon, within 1-2 sprints | | 25-39 | Medium-High | Plan for next 2-3 sprints | | 15-24 | Medium | Backlog, do when capacity available | | 10-14 | Low | Consider if very easy or strategic | | < 10 | Very Low | Probably skip unless requirements change |
Before coding:
After planning:
any)Step 1 - Requirements:
Step 2 - Delete:
Step 3 - Simplify:
calculateMetrics() functionICE Score: 50.4 (High Priority)
Approach:
calculateSortino() to dataUtils.tsTime Estimate: 3-4 hours
Result: Completed successfully, but found calculation bug (commit 9f25040 fixed it).
Implementation Note: Sortino was implemented inline in PortfolioSection.tsx (lines 133-158) rather than in dataUtils.ts. This decision was made because:
Step 1 - Requirements:
Step 2 - Delete:
Step 3 - Simplify:
ContractControls.tsx (contract multiplier UI)EquityChartSection.tsx (Chart.js config)PortfolioStats.tsx (statistics display)ICE Score: 19.2 (Medium Priority)
Approach:
Time Estimate: 4-6 hours (tedious but straightforward)
Risks:
Decision: Medium priority. Do after more urgent user-facing features.
Step 1 - Requirements:
Step 2 - Delete:
Step 3 - Simplify:
ICE Score: 24 (Medium Priority)
Approach:
npm install -D vitestdataUtils.test.tsTime Estimate: 6-8 hours (learning curve + writing tests)
Tests to Write:
calculateSharpe() with known datacalculateSortino() with known datacalculateCorrelation() edge casesparseCSV() error handlingany types for now" (technical debt accumulates)any type violationsWhen you're about to start coding, ask:
Then write your plan as:
Finally:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | pass→pass | 12,209 | 9,402 | -23% | 1 | 1 | 0% | 1,816 | 4,875 | +168% | 0 | 0 | — |
case-01 | fail→pass | 29,610 | 13,500 | -54% | 1 | 1 | 0% | 2,801 | 5,540 | +98% | 0 | 0 | — |
case-02 | fail→fail | 17,159 | 18,985 | +11% | 1 | 1 | 0% | 2,901 | 6,807 | +135% | 0 | 0 | — |
case-03 | fail→pass | 21,337 | 18,135 | -15% | 1 | 1 | 0% | 3,295 | 6,395 | +94% | 0 | 0 | — |
case-04 | fail→pass | 10,553 | 4,734 | -55% | 1 | 1 | 0% | 1,826 | 4,160 | +128% | 0 | 0 | — |
case-05 | fail→pass | 8,780 | 3,216 | -63% | 1 | 1 | 0% | 1,611 | 3,896 | +142% | 0 | 0 | — |
case-06 | fail→pass | 8,400 | 3,744 | -55% | 1 | 1 | 0% | 1,394 | 3,938 | +182% | 0 | 0 | — |
case-07 | fail→pass | 8,227 | 3,430 | -58% | 1 | 1 | 0% | 1,417 | 3,892 | +175% | 0 | 0 | — |
case-08 | pass→pass | 11,836 | 2,948 | -75% | 1 | 1 | 0% | 1,820 | 3,820 | +110% | 0 | 0 | — |
case-09 | pass→pass | 19,380 | 6,698 | -65% | 1 | 1 | 0% | 1,520 | 4,413 | +190% | 0 | 0 | — |
case-10 | fail→pass | 12,395 | 2,946 | -76% | 1 | 1 | 0% | 1,805 | 3,729 | +107% | 0 | 0 | — |
case-11 | fail→pass | 12,257 | 3,647 | -70% | 1 | 1 | 0% | 1,903 | 3,938 | +107% | 0 | 0 | — |
case-13 | pass→fail | 13,198 | 12,033 | -9% | 1 | 1 | 0% | 1,978 | 5,222 | +164% | 0 | 0 | — |
case-14 | fail→pass | 9,420 | 2,509 | -73% | 1 | 1 | 0% | 1,620 | 3,830 | +136% | 0 | 0 | — |
case-15 | pass→pass | 10,195 | 3,297 | -68% | 1 | 1 | 0% | 1,557 | 3,854 | +148% | 0 | 0 | — |
case-16 | fail→pass | 18,830 | 2,706 | -86% | 1 | 1 | 0% | 1,577 | 3,693 | +134% | 0 | 0 | — |
case-17 | fail→pass | 9,398 | 5,382 | -43% | 1 | 1 | 0% | 1,392 | 4,158 | +199% | 0 | 0 | — |
case-18 | pass→pass | 7,229 | 6,323 | -13% | 1 | 1 | 0% | 1,089 | 4,289 | +294% | 0 | 0 | — |
case-19 | fail→pass | 9,447 | 6,843 | -28% | 1 | 1 | 0% | 1,426 | 4,372 | +207% | 0 | 0 | — |
case-20 | fail→pass | 8,401 | 2,326 | -72% | 1 | 1 | 0% | 1,268 | 3,662 | +189% | 0 | 0 | — |
case-21 | fail→pass | 11,533 | 1,885 | -84% | 1 | 1 | 0% | 1,339 | 3,575 | +167% | 0 | 0 | — |
case-22 | pass→pass | 16,509 | 14,511 | -12% | 1 | 1 | 0% | 3,261 | 6,333 | +94% | 0 | 0 | — |
case-23 | pass→fail | 10,809 | 9,223 | -15% | 1 | 1 | 0% | 1,641 | 4,927 | +200% | 0 | 0 | — |
case-24 | pass→pass | 3,613 | 4,257 | +18% | 1 | 1 | 0% | 551 | 3,865 | +601% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 24 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.