Skip to content
Mobile
Skill

/create-project

Scaffold a new Dart or Flutter project from a Very Good CLI template, covering the flutter_app, dart_package, flutter_package, flutter_plugin, dart_cli, flame_game, and docs_site templates, inferring the right one from what the user wants to build and then installing

BOOST
From plugin
vgv-ai-flutter-plugin
17315 skills1 agent3 hooks2 MCP
Install
$ npx -y skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill create-project --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/create-project

Context preview

The summary Claude sees to decide when to auto-load this skill.

Scaffold a new Dart or Flutter project from a Very Good CLI template, covering the flutter_app, dart_package, flutter_package, flutter_plugin, dart_cli, flame_game, and docs_site templates, inferring the right one from what the user wants to build and then installing

SKILL.md

create-project.SKILL.md
name: create-project
description: >
  Scaffold a new Dart or Flutter project from a Very Good CLI template, covering the
  flutter_app, dart_package, flutter_package, flutter_plugin, dart_cli, flame_game, and
  docs_site templates, inferring the right one from what the user wants to build and then
  installing dependencies. Use when the user says "create a new project", "start a new flutter
  app", "scaffold a package", "create a new package", "initialize a dart cli", "new flame
  game", or "generate a plugin". Use it for bare, vague, or under-specified scaffolding
  requests too — "create a new package for me", "make me a new app", "I need a new project",
  "set one up" — including ones that name no template, no project name, and no organization,
  or that only hint at what is being built. Missing or ambiguous details are a reason to use
  this skill, not a reason to skip it: it asks the clarifying questions and picks the
  template.
allowed-tools: mcp__very-good-cli__create mcp__very-good-cli__packages_get
argument-hint: "[template] [project-name]"

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 …` and `very_good packages get` commands directly. On a host without `AskUserQuestion`, 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 `AskUserQuestion` only 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

1. Create the project using the Very Good CLI MCP server 2. Install dependencies using the Very Good CLI MCP server — pass `directory: '<path-to-created-project>'` to `packages_get` so it runs against the new project, not the workspace root

---

Key Domain Knowledge

  • Use `dart_package` (not `flutter_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_get` fails after creation, check that `directory` points at the new project and that the Dart SDK is on `PATH`

---

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 |

Read more
Ships withvgv-ai-flutter-plugin

A Claude Code plugin that accelerates Flutter & Dart development with best-practices skills from Very Good Ventures. Developed with 💙 by Very Good Ventures 🦄

Get the whole plugin

Other skills on vgv-ai-flutter-plugin.