Part 1: The Command Prompt for Replit Agent Paste this into the Replit Agent chat to set up the logic. Prompt: > "I am building a custom Dart UI framework called 'Neon'. I need to create a build-time script that acts as a transpiler. Setup: Create a directory tools/transpiler. Logic: Write a Dart script (transpile_widgets.dart) that uses the analyzer package to parse any imported Flutter package in pubspec.yaml. Conversion: For every StatelessWidget or StatefulWidget found in the target Flutter package, the script should generate a new file in lib/neon_compat/ that wraps the Flutter widget. Mapping: Replace standard Material widgets with Neon equivalents: Container -> NeonContainer Text -> NeonText ElevatedButton -> NeonButton Integration: Update the .replit file so that when I click 'Run', it first executes dart tools/transpiler/transpile_widgets.dart before running the main app. This ensures user apps can import package:neon/neon_compat.dart to use converted widgets." Part 2: Configuration Files To make this work automatically, ensure your .replit and replit.nix files are configured as follows: 1. .replit (The Execution Logic) This file tells Replit to run your framework's "Conversion" step every time the app starts. Ini, TOML # .replit run = "dart run tools/transpiler/main.dart && flutter run -d web-server --web-port 8080 --web-hostname 0.0.0.0" [entrypoint] path = "lib/main.dart" [modules] modules = ["dart", "flutter"] 2. replit.nix (The Environment) Ensure the analyzer and source_gen dependencies are available in the nix environment if you aren't using standard pub get. Nix { pkgs }: { deps = [ pkgs.flutter pkgs.dart ]; } Part 3: How the Conversion Works (Concept) Your Neon framework needs a "Bridge" logic. Since you want to support existing Flutter packages, your transpiler will perform a Source-to-Source transformation. The Transpiler Logic (tools/transpiler/main.dart): Scan lib/: Look for imports pointing to the external Flutter package. Parse AST: Use the analyzer package to find the build() methods. Recursive Replacement: It looks for return Container(...) It replaces it with return NeonContainer(...) It copies all arguments (like child, color, width) to the new constructor. Output: It writes these "Neon-ified" versions into a hidden folder that the user's app can then access.