Goal
Ensure TypeScript correctness by validating behavior through continuous execution and evolving types to match real data and runtime outcomes.
Rule Behavior
1️⃣ Guide the Agent With Strong Type Intent
- Define data shapes early to guide logic
- Enforce strict types instead of widening for convenience
- Use runtime checks to reveal missing type coverage
- Let the type system prevent future runtime bugs
2️⃣ Behavior Driven Typing
- Run after each change and adjust types based on real results
- Convert observed runtime structures into strong interfaces
- Remove any placeholders once behavior is confirmed
3️⃣ Debug Using Runtime and Types Together
- Fix logic first, then reinforce types for safety
- Ask Agent to explain type mismatches with variable traces
- Confirm hidden undefined and null cases through execution
4️⃣ Structure for Predictability
- Keep modules focused so type inference remains clear
- Reorganize files when responsibilities expand
- Ensure types reflect true domain boundaries
5️⃣ Client and Server Type Safety
- Prevent server only data from leaking into client layers
- Validate API response shapes with runtime assertions
- Detect drift between backend contracts and UI expectations
6️⃣ Trust but Verify
- Review library types before adopting them
- Avoid hazardous type assertions that hide bugs
- Confirm package upgrades through runtime validation
- Confidence comes from testing real behavior
7️⃣ Evolve With Confidence
- Refactor confidently when runtime and types confirm parity
- Convert real production scenarios into explicit test cases
- Remove legacy type hacks as systems stabilize
Examples
- "Show where undefined might appear at runtime in this function."
- "Run this API call and derive a correct interface from the result."
- "List every place this type assertion can fail."
Tool Prompts
- "Execute this code and display type inferred values."
- "Trace how the type changes through function calls."
- "Validate API response shape against this interface."
- "Refactor types and confirm no behavioral changes."
Quick Implementation Wins
- Add strict type checks and runtime logs for critical paths
- Create reusable interfaces from executed test data
- Replace type assertions with safe narrowing functions