da64f769da
- Added optional MCP integration settings in project-brief.yaml, allowing for environment-based server configurations. - Introduced conventions for strict package imports to enhance code organization and maintainability. - Updated brief schema to validate new MCP properties and ensure correct usage. - Implemented MCP JSON builder to generate .cursor/mcp.json based on project brief settings. - Enhanced resolver to include MCP configuration in generated files when enabled. This update improves integration capabilities and enforces coding standards across the project.
152 lines
6.7 KiB
YAML
152 lines
6.7 KiB
YAML
# =============================================================================
|
|
# project-brief.yaml — SINGLE REFERENCE EXAMPLE for cursor_gen
|
|
# Copy to your Flutter repo root, edit values, then: cursor_gen
|
|
# Schema / IDE hints: flutter-cursor-templates/generator/brief-schema.json
|
|
# =============================================================================
|
|
#
|
|
# Each section below lists ALLOWED VALUES in comments. Pick ONE value per field
|
|
# (unless the field is a list). Invalid combinations may get validator warnings
|
|
# (e.g. getx_nav without getx).
|
|
#
|
|
# =============================================================================
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Template pin (Pillar 1) — bump when you intentionally upgrade template output
|
|
# -----------------------------------------------------------------------------
|
|
cursor_templates_version: "1.0.4"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# project — identity and rough size (affects rule tone / scaffolding hints)
|
|
# -----------------------------------------------------------------------------
|
|
# scale: small | medium | large
|
|
project:
|
|
name: "Acme Shop"
|
|
package: "com.example.acme_shop"
|
|
description: "Reference e-commerce app — replace with your product summary"
|
|
scale: "large"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# stack — tooling and architecture (drives which .cursor/rules/*.mdc you get)
|
|
# -----------------------------------------------------------------------------
|
|
# state_management: bloc | riverpod | getx | hooks_riverpod
|
|
# routing: gorouter | getx_nav | auto_route
|
|
# (getx_nav is intended with state_management: getx)
|
|
# architecture: clean | feature_first | mvvm | mvc | layered
|
|
# backend: firebase | supabase | rest — or combine with + e.g.:
|
|
# firebase+rest | supabase+rest | firebase+supabase (split on +)
|
|
# auth: firebase_auth | supabase_auth | jwt_rest | oauth2 | none
|
|
# platforms: subset of [ ios, android, web, desktop ]
|
|
# codegen: subset of [ freezed, json_serializable, injectable, retrofit ]
|
|
stack:
|
|
state_management: "bloc"
|
|
routing: "gorouter"
|
|
architecture: "clean"
|
|
backend: "firebase+rest"
|
|
auth: "firebase_auth"
|
|
platforms: ["ios", "android", "web", "desktop"]
|
|
codegen: ["freezed", "json_serializable", "injectable", "retrofit"]
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# environments
|
|
# -----------------------------------------------------------------------------
|
|
# cicd: codemagic | github_actions | fastlane | none
|
|
# flavors: any string names your app uses (e.g. dev, staging, prod)
|
|
environments:
|
|
flavors: ["dev", "staging", "prod"]
|
|
cicd: "github_actions"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# testing
|
|
# -----------------------------------------------------------------------------
|
|
# depth: unit_widget | integration | e2e | full
|
|
# e2e_tool: patrol | maestro
|
|
testing:
|
|
depth: "full"
|
|
e2e_tool: "patrol"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# design — where UI truth lives (referenced in generated project-context rules)
|
|
# -----------------------------------------------------------------------------
|
|
# design.source (validator): figma_mcp | figma_manual | native_ref | html_ref | none
|
|
# figma_url: design file URL when using Figma; can be "" if source is none / native_ref
|
|
design:
|
|
source: "figma_mcp"
|
|
figma_url: "https://www.figma.com/design/REPLACE_ME/Acme-Shop"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# api_docs — machine-readable API contract for agents
|
|
# -----------------------------------------------------------------------------
|
|
# format: openapi | postman | markdown | none
|
|
# path: repo-relative path to spec, or "" if none
|
|
api_docs:
|
|
format: "openapi"
|
|
path: "docs/api/openapi.yaml"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# references — other code the team treats as source of truth
|
|
# -----------------------------------------------------------------------------
|
|
# repos: list of git URLs (can be empty [])
|
|
# local_paths: monorepo packages, e.g. [ "packages/design_system" ]
|
|
references:
|
|
repos:
|
|
- "https://github.com/example/acme-design-tokens"
|
|
local_paths: []
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# app_context — themes & RBAC (mirrored to .cursor/cursor-gen-metadata.json)
|
|
# -----------------------------------------------------------------------------
|
|
# theme_variants: subset of [ light, dark, high_contrast ]; omit section or use [] → loader defaults to [light, dark]
|
|
# roles_enabled / role_names: use named roles when the app has RBAC
|
|
# app_context:
|
|
# theme_variants: ["light", "dark", "high_contrast"]
|
|
# roles_enabled: true
|
|
# role_names: ["customer", "merchant", "admin"]
|
|
|
|
features:
|
|
# modules: high-level feature areas in YOUR lib/ (names are project-specific)
|
|
modules: ["auth", "home", "catalog", "cart", "checkout", "profile", "orders"]
|
|
# special: optional capabilities — include only what you use
|
|
# realtime | push_notifications | deep_linking | offline_first
|
|
special: ["realtime", "push_notifications", "deep_linking", "offline_first"]
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# localization
|
|
# -----------------------------------------------------------------------------
|
|
localization:
|
|
enabled: true
|
|
locales: ["en", "es", "fr"]
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Integrations & conventions (optional)
|
|
# -----------------------------------------------------------------------------
|
|
integrations:
|
|
mcp:
|
|
enabled: false # true → .cursor/mcp.json (secrets only via env vars)
|
|
preset: auto # auto | minimal
|
|
|
|
conventions:
|
|
strict_package_imports: false
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Telemetry (Pillar 6) — local-only generation / usage log under .cursor/
|
|
# -----------------------------------------------------------------------------
|
|
telemetry_opt_in: true
|
|
|
|
# =============================================================================
|
|
# QUICK SWAP CHEATSHEET (same keys; replace values only)
|
|
# =============================================================================
|
|
# Riverpod + feature-first + Supabase:
|
|
# state_management: riverpod
|
|
# routing: gorouter
|
|
# architecture: feature_first
|
|
# backend: supabase
|
|
# auth: supabase_auth
|
|
#
|
|
# GetX + MVC + REST (also enables migration-agent in templates):
|
|
# state_management: getx
|
|
# routing: getx_nav
|
|
# architecture: mvc
|
|
# backend: rest
|
|
# auth: jwt_rest
|
|
# =============================================================================
|