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.
Yawn is a data workflow platform with a polyglot architecture:
ui/ directory)library/ directory)Testing:
# Run all tests go test ./... # Run tests with verbose output go test -v ./... # Run specific test file go test -v ./internal/domain/services # Run single test go test -v ./internal/domain/services -run TestProjectService_Create # Generate tests for a file (as specified in tech-stack.md) gotests -all -use_go_cmp -w -parallel <file_name>.go
Building & Running:
# Build the application go build ./... # Run the server go run main.go serve # Run with hot reload (using air) air
Code Quality:
# Format code gofmt -s -w . goimports -w . # Run linter golangci-lint run # Run linter on specific files golangci-lint run ./internal/domain/services ./internal/interfaces/handlers
Dependencies:
# Tidy modules go mod tidy # Download dependencies go mod download
Install UI components (Shadcn):
pnpx shadcn@latest add <component_name>
The Go backend follows DDD principles with clear layer separation:
Domain Layer (
internal/domain/):
Infrastructure Layer (
internal/infrastructure/):
Interface Layer (
internal/interfaces/):
App Layer (
internal/app/):
Dependency Injection: All dependencies are wired through fx providers in
app.go. New services, repositories, or handlers must be registered as providers.
Authentication & Authorization:
Database:
DeletedAt fieldTesting Strategy:
Type Generation: TypeScript interfaces are generated from Go model structs to ensure type safety across the frontend-backend boundary.
Build Process: In production, the React frontend is embedded in the Go binary using Go's
embed directive, creating a single executable.
Code Standards:
MCP Integration: Use context7, browsermcp, mcp-gopls, and serena for code maintenance, documentation lookup, and debugging assistance.
Project Structure: Respect domain boundaries - business logic stays in services, data access in repositories, HTTP concerns in handlers.
Adding New Features:
internal/domain/models/app.goError Handling: Use structured error returns with proper context. Service layer returns business errors, handlers translate to HTTP status codes.
Testing Approach: Write table-driven tests covering success cases, validation errors, and edge cases. Use deterministic UUIDs and proper mock setup for reliable tests.