Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Create Studio is an application that allows publishers and bloggers to create structured data cards (recipes, how-to guides, FAQs) with automatic JSON-LD generation and embeddable, interactive visual cards. Built with Nuxt 3, TypeScript, Tailwind CSS v4, DaisyUI, Clerk Auth, and deployed on NuxtHub/Cloudflare.
Project Plan: See PROJECT_PLAN.md for detailed phased development approach and current progress.
# Development npm run dev # Start development server (http://localhost:3000) npm run dev:setup # Copy .env.example to .env (run once after cloning) # Build & Deploy npm run build # Build for production npm run generate # Generate static site npm run preview # Preview production build # Testing npm test # Run all tests with Vitest npm run test:ui # Run tests with Vitest UI npm run test:e2e # Run E2E tests with Vitest npm run test:unit # Run Unit tests with Vitest npm run test:components # Run Component tests with Vitest # Run specific test files npm test tests/unit/nutrition-api.test.ts
@tailwindcss/viteapp.vue - Root component (entry point)pages/ - File-based routing (create this for pages)components/ - Vue components (auto-imported)composables/ - Vue composables (auto-imported)server/ - Server-side API routes and middlewareassets/ - Processed assets (CSS, images)public/ - Static assets served as-istests/ - Directory for keeping testsnuxt.config.ts - Main Nuxt configurationtsconfig.json - TypeScript configurationvitest.config.ts - Vitest test configurationeslint.config.mjs - ESLint rulesThis project follows Test-Driven Development principles:
CRITICAL: Always start new features by writing tests first. This is non-negotiable.
Example workflow:
# 1. Write test first # 2. Run test to see it fail npm test # 3. Implement feature # 4. Run test to see it pass npm test
Create files in
pages/ directory for automatic routing:
<!-- pages/index.vue --> <template> <div>Home page</div> </template>
DaisyUI classes are available globally:
<button class="btn btn-primary">Click me</button>
Create stores in
stores/ directory:
// stores/counter.ts export const useCounterStore = defineStore('counter', () => { const count = ref(0) const increment = () => count.value++ return { count, increment } })
Create server routes in
server/api/:
// server/api/hello.ts export default defineEventHandler(() => { return { message: 'Hello API' } })
.env.example to .envNUXT_PUBLIC_ for client-side accessThe project uses a comprehensive testing strategy:
tests/unit/ - Unit tests for utilities and functionstests/components/ - Component tests using Vue Test Utilstests/e2e/ - End-to-end tests using Playwright or Nuxt test utilspages/*.test.ts - Page-specific tests can live alongside pagesUnit Tests (Pure functions, utilities):
import { describe, it, expect } from 'vitest' describe('myFunction', () => { it('should return expected value', () => { expect(myFunction(input)).toBe(expectedOutput) }) })
Component Tests (Vue components):
import { mountSuspended } from '@nuxt/test-utils/runtime' import MyComponent from '~/components/MyComponent.vue' describe('MyComponent', () => { it('renders correctly', async () => { const wrapper = await mountSuspended(MyComponent, { props: { /* props */ } }) expect(wrapper.text()).toContain('expected text') }) })
E2E Tests with Nuxt Test Utils:
import { describe, test, expect } from 'vitest' import { createPage, setup, url } from '@nuxt/test-utils/e2e' describe('App E2E', async () => { await setup() test('loads home page', async () => { const page = await createPage(url('/')) const heading = page.locator('h1') const headingText = await heading.textContent() expect(headingText).toBe('Welcome') }) })
mountSuspended() - Mount components in Nuxt environmentmockNuxtImport() - Mock auto-imported composablesmockComponent() - Mock child components$fetch - Test API endpointscreatePage() - Create browser page for E2E testing1. **Nuxt Test Utils** (`@nuxt/test-utils/playwright`) - Integrated with Nuxt, auto-handles build/server