Scaffold a new Dart or Flutter project using Very Good CLI templates.
Cross-harness fallbacks. This skill drives the Very Good CLI MCP server and asks the user structured questions. On a host without this plugin's Bash hooks and without that MCP server connected, run the equivalent
very_good create …andvery_good packages getcommands directly. On a host withoutAskUserQuestion, invoke whatever equivalent user-question tool the host provides; if it has none, ask the same questions as plain numbered text.
Core Standards
- Use the Very Good CLI MCP server to scaffold projects and install dependencies
- Infer the template from context — determine the right template based on what the user wants to build, not by asking them to pick a subcommand name
- Use
AskUserQuestiononly for information you cannot infer — project name and organization are the most common missing pieces - Install dependencies after creation
Workflow
Step 1: Understand What the User Wants to Build
Infer the subcommand from the user's description — the available subcommands and their descriptions are defined by the Very Good CLI MCP server.
If the intent is ambiguous, use AskUserQuestion to clarify with a high-level question about what they're building — not which subcommand they want.
Step 2: Gather Missing Parameters
Use AskUserQuestion for what you cannot infer, in one call. Leave optional parameters (description, output directory, application ID) at their defaults unless the user raises them.
Step 3: Create and Set Up
- Create the project using the Very Good CLI MCP server
- Install dependencies using the Very Good CLI MCP server — pass
directory: '<path-to-created-project>'topackages_getso it runs against the new project, not the workspace root
Key Domain Knowledge
- Use
dart_package(notflutter_package) for data layer and repository layer packages in the layered-architecture pattern — these must not depend on Flutter SDK - If a user provides a project name with dashes, convert to underscores — Dart package names only allow lowercase letters, numbers, and underscores
- Templates that produce apps, plugins, or games require an organization name — do not skip this or it defaults to a placeholder value
- If
packages_getfails after creation, check thatdirectorypoints at the new project and that the Dart SDK is onPATH
Anti-Patterns
| Anti-Pattern | Problem | Correct Approach |
|---|---|---|
| Asking user to pick a template name | Users think in terms of what they're building, not CLI subcommands | Infer the template from context |
| Over-asking for optional parameters | Slows down the workflow | Only ask for what you cannot infer |
Using flutter_package for a data layer |
Adds unnecessary Flutter SDK dependency | Use dart_package for data and repository layer packages |
| Skipping organization name for apps/plugins | Defaults to a placeholder value | Ask when the template requires it |