This document provides guidelines for agentic coding agents operating in the Flowify repository. Flowify is a UML diagram editor with AI-powered assistance built with Vue 3, Vite, and Mermaid.js.
npm run dev # Start development server with HMRnpm run build # Type-check and build for production
npm run build-only # Build without type checking
npm run preview # Preview production build locallynpm run format # Format code with Prettier
npm run type-check # Run TypeScript type checkingNo specific test commands found. The project uses Vue 3 with TypeScript and follows standard conventions for component testing.
- Use
@/alias for imports fromsrc/ - Follow Vue 3 Composition API with
<script setup>syntax - Import types using
import type { ... } from '@/types'
- Prettier with single quotes, no semicolons, print width 100
- Use consistent spacing and indentation (2 spaces)
- Prefer arrow functions for short functions
- Use TypeScript interfaces and types for all components and stores
- Define interfaces in
src/types/ - Use Composition API style Pinia stores
- All Vue components must use
<script setup>syntax
- Component names: PascalCase (e.g.,
MyComponent.vue) - File names: kebab-case (e.g.,
my-component.vue) - Variables and functions: camelCase
- Constants: UPPER_CASE
- Component props: camelCase with
prop:prefix in types
- Use try/catch blocks for asynchronous operations
- Handle errors gracefully with user-friendly messages
- Implement custom error classes when needed
-
Always use
<script setup>syntax with Composition API -
Pinia stores should be used for state management
-
Follow Vue 3 component structure:
<script setup lang="ts"> import { ref, computed } from 'vue' import { useMyStore } from '@/stores/myStore' const store = useMyStore() const count = ref(0) const doubled = computed(() => count.value * 2) function increment() { count.value++ } </script> <template> <div>{{ count }} × 2 = {{ doubled }}</div> </template>
- All components should be in
src/components/ - Use single file components with
.vueextension - Follow Vue 3 Composition API patterns
- Components should be self-contained and reusable
-
Pinia stores should be used for state management
-
Stores should follow Composition API style:
import { defineStore } from 'pinia' import { ref, computed } from 'vue' export const useMyStore = defineStore('myStore', () => { const count = ref(0) const doubled = computed(() => count.value * 2) function increment() { count.value++ } return { count, doubled, increment } })
- Parent-child communication via props and emits
- Use provide/inject for deeply nested components
- Pinia stores for global state sharing
<script setup>with Composition API<style>with scoped or module styles- Follow the pattern of template -> script -> style
- Use strict typing throughout
- Define interfaces in
src/types/ - Use type inference where appropriate
- Avoid any types unless necessary
- Components:
src/components/ - Stores:
src/stores/ - Types:
src/types/ - Composables:
src/composables/ - Services:
src/services/ - Utilities:
src/utils/
- Follow the existing pattern for AI service classes
- All AI services extend AIServiceBase
- Implement both streaming and non-streaming response methods
- Handle rate limiting and network errors gracefully
- Use Vue 3 Composition API with
<script setup> - Pinia for state management
- TypeScript for type safety
- Mermaid.js for diagram rendering
- CodeMirror 6 for code editing
- Splitpanes for resizable panels
- Vite for build tooling
No specific Cursor or Copilot rules found in this repository.