About create-project
create-project is a skill for developers scaffolding Dart or Flutter projects from Very Good CLI templates. It infers an appropriate template from the requested project, gathers missing details, creates the project through the Very Good CLI MCP server, and installs dependencies.
Key features
- 01Infer a project template from the request
- 02Ask for missing project parameters
- 03Create projects through the Very Good CLI MCP server
- 04Install dependencies after creation
- 05Handle Dart package naming and organization requirements
Use cases
- 01Bootstrap a Dart package or Flutter app from a template
- 02Create data-layer or repository-layer packages for layered architecture
- 03Install dependencies after scaffolding a project
MCP support
The skill uses the Very Good CLI MCP server to create projects and install dependencies. If the server is unavailable, it can use the equivalent very_good commands.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ verygoodopensource/ vgv-ai-flutter-plugin --skill create-projectAfter installing, type/create-projectin Claude Code to confirm it loaded.
Bundled filesagents/openai.yaml
Details
From the project READMECreate 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.
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 |