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.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
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.
Planning Framework
When to Use
Before starting ANY significant coding task:
New features (> 50 lines of code)
Refactoring existing components
Architectural changes
Debugging complex issues
Musk's 5-Step Algorithm
Step 1: Make Requirements Less Dumb
Question everything:
Who requested this feature? Why?
What problem does it actually solve?
Is there a simpler way to achieve the same outcome?
What happens if we don't build this?
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
Step 2: Delete the Part or Process
What can we eliminate?
Remove features that serve no clear purpose
Cut unnecessary steps in workflows
Simplify data structures
Delete unused dependencies
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)
Applied Step 2: Identified what can be deleted/simplified
Calculated ICE score (for features > 100 lines)
Confirmed simpler solution doesn't exist
Identified which components/hooks will be affected
Checked for existing similar functionality in codebase
Reviewed related code to understand context
After planning:
Written approach in 3-5 bullet points
Identified potential issues/edge cases
Estimated time realistically (multiply initial guess by 2)
Confirmed TypeScript types are planned (no any)
Verified component won't exceed 200 lines
Portfolio Buddy 2 Planning Examples
Example: Adding Sortino Ratio (Completed Feature)
Step 1 - Requirements:
Users need Sortino Ratio alongside Sharpe Ratio
Sortino focuses on downside risk (more relevant for traders)
Requires risk-free rate input
Step 2 - Delete:
Don't need separate page for advanced metrics
Don't need tutorial/help text (formula is standard)
Step 3 - Simplify:
Add single risk-free rate input (not per-strategy)
Calculate in existing calculateMetrics() function
Add column to existing MetricsTable
ICE Score: 50.4 (High Priority)
Approach:
Add calculateSortino() to dataUtils.ts
Include Sortino in metrics calculation
Add risk-free rate input to PortfolioSection
Add Sortino column to MetricsTable
Test with sample data
Time 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: