Create Project
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. Do NOT ask users to pick a subcommand name — figure it out from context.
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 to collect only what you cannot infer. Batch questions into a single call when possible. Do NOT ask for optional parameters (description, output directory, application ID, etc.) unless the user brings them up.
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
Examples
User says "Create a new Flutter app"
- Infer:
flutter_app - Ask for project name and organization
- Create and install dependencies
User says "I need a package for my weather API client, put it in packages/"
- Infer: "API client" → pure Dart →
dart_package, nameweather_api_client, outputpackages/ - Everything is clear — no questions needed
- Create and install dependencies
User says "I want to build something for iOS and Android with bluetooth"
- Ambiguous: app or plugin? Ask to clarify
- Gather remaining parameters based on answer
- Create and install dependencies
User says "Create a new package"
- Ambiguous: Flutter or pure Dart? Ask to clarify
- Ask for project name
- Create and install dependencies
Troubleshooting
Invalid project name error
- Names must be valid Dart package names: lowercase letters, numbers, underscores only
- Dashes are not allowed — convert
my-apptomy_app
Dependencies fail to install after creation
- Verify the Dart SDK is installed and on PATH
- Pass
directory: '<path-to-created-project>'topackages_getso it targets the new project
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 |