rules/product-principles.md
These principles guide feature design decisions in Dyad. Reference them when planning new features (especially via dyad:swarm-to-plan) to ensure consistency with the product's values.
Users should be able to swap out underlying providers and backends without being locked in.
executeSupabaseSql dispatches to either the Management API or local Postgres based on supabaseMode.Test: If removing a single third-party service would break the core product, the design is too coupled.
Users build apps from prototype to production in Dyad. Every feature should support that full lifecycle, not just the demo.
Test: Could a user hand off the generated project to a team that doesn't use Dyad and have them maintain it? If not, the feature creates unacceptable lock-in.
Make the common path effortless. Give advanced users escape hatches.
Test: Can a first-time user accomplish something useful in under 2 minutes? Can a power user customize every aspect of that same workflow?
Show users what's happening. Let them approve consequential actions. No hidden side effects.
Test: If a user asks "what did the AI just do?", can they find the answer without reading source code?
Dyad integrates with the tools developers already use. It doesn't try to own their toolchain.
npm install and custom install commands but doesn't manage node_modules or lock files beyond what the user configures.supabase status but the user runs supabase start themselves.Test: Does the feature work with the user's existing tools, or does it try to replace them? If the answer is replace, reconsider.
Using Dyad should feel good and like it's crafted with care. Small details compound into an experience people love.
Test: After using this feature, does it feel like someone cared about the details? If the interaction feels generic or utilitarian, look for opportunities to add warmth.