From 36e1d6c869ef5b5499c254b9ec8e4252ee576f1a Mon Sep 17 00:00:00 2001 From: ordinary-rope Date: Thu, 11 Sep 2025 00:10:18 +0530 Subject: [PATCH] Update tools.json --- Leap.new/tools.json | 514 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 514 insertions(+) diff --git a/Leap.new/tools.json b/Leap.new/tools.json index 8b13789..fe2880d 100644 --- a/Leap.new/tools.json +++ b/Leap.new/tools.json @@ -1 +1,515 @@ +{ + "tools": [ + { + "name": "create_artifact", + "description": "Creates a comprehensive artifact containing all project files for building full-stack applications with Encore.ts backend and React frontend", + "parameters": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Descriptive identifier for the project in snake-case (e.g., 'todo-app', 'blog-platform')" + }, + "title": { + "type": "string", + "description": "Human-readable title for the project (e.g., 'Todo App', 'Blog Platform')" + }, + "commit": { + "type": "string", + "description": "Brief description of changes in 3-10 words max" + }, + "files": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Relative file path from project root" + }, + "content": { + "type": "string", + "description": "Complete file content - NEVER use placeholders or truncation" + }, + "action": { + "type": "string", + "enum": ["create", "modify", "delete", "move"], + "description": "Action to perform on the file" + }, + "from": { + "type": "string", + "description": "Source path for move operations" + }, + "to": { + "type": "string", + "description": "Target path for move operations" + } + }, + "required": ["path", "action"] + } + } + }, + "required": ["id", "title", "commit", "files"] + } + }, + { + "name": "define_backend_service", + "description": "Defines an Encore.ts backend service with proper structure", + "parameters": { + "type": "object", + "properties": { + "serviceName": { + "type": "string", + "description": "Name of the backend service" + }, + "endpoints": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unique endpoint name" + }, + "method": { + "type": "string", + "enum": ["GET", "POST", "PUT", "DELETE", "PATCH"], + "description": "HTTP method" + }, + "path": { + "type": "string", + "description": "API path with parameters (e.g., '/users/:id')" + }, + "expose": { + "type": "boolean", + "description": "Whether endpoint is publicly accessible" + }, + "auth": { + "type": "boolean", + "description": "Whether endpoint requires authentication" + } + }, + "required": ["name", "method", "path"] + } + }, + "database": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Database name" + }, + "tables": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Table name" + }, + "columns": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "constraints": { + "type": "string" + } + }, + "required": ["name", "type"] + } + } + }, + "required": ["name", "columns"] + } + } + } + } + }, + "required": ["serviceName"] + } + }, + { + "name": "create_react_component", + "description": "Creates a React component with TypeScript and Tailwind CSS", + "parameters": { + "type": "object", + "properties": { + "componentName": { + "type": "string", + "description": "Name of the React component" + }, + "path": { + "type": "string", + "description": "Path where component should be created" + }, + "props": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "required": ["name", "type"] + } + }, + "useBackend": { + "type": "boolean", + "description": "Whether component uses backend API calls" + }, + "styling": { + "type": "object", + "properties": { + "theme": { + "type": "string", + "enum": ["light", "dark", "system"], + "description": "Component theme" + }, + "responsive": { + "type": "boolean", + "description": "Whether component is responsive" + }, + "animations": { + "type": "boolean", + "description": "Whether to include subtle animations" + } + } + } + }, + "required": ["componentName", "path"] + } + }, + { + "name": "setup_authentication", + "description": "Sets up authentication using Clerk for both backend and frontend", + "parameters": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["clerk"], + "description": "Authentication provider" + }, + "features": { + "type": "array", + "items": { + "type": "string", + "enum": ["sign-in", "sign-up", "user-profile", "session-management"] + } + }, + "protectedRoutes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "API endpoints that require authentication" + } + }, + "required": ["provider"] + } + }, + { + "name": "create_database_migration", + "description": "Creates a new SQL migration file for Encore.ts database", + "parameters": { + "type": "object", + "properties": { + "migrationName": { + "type": "string", + "description": "Descriptive name for the migration" + }, + "version": { + "type": "integer", + "description": "Migration version number" + }, + "operations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["CREATE_TABLE", "ALTER_TABLE", "DROP_TABLE", "CREATE_INDEX", "DROP_INDEX"] + }, + "sql": { + "type": "string", + "description": "Raw SQL for the operation" + } + }, + "required": ["type", "sql"] + } + } + }, + "required": ["migrationName", "version", "operations"] + } + }, + { + "name": "setup_streaming_api", + "description": "Sets up streaming APIs for real-time communication", + "parameters": { + "type": "object", + "properties": { + "streamType": { + "type": "string", + "enum": ["streamIn", "streamOut", "streamInOut"], + "description": "Type of streaming API" + }, + "endpoint": { + "type": "string", + "description": "Stream endpoint path" + }, + "messageTypes": { + "type": "object", + "properties": { + "handshake": { + "type": "object", + "description": "Handshake message schema" + }, + "incoming": { + "type": "object", + "description": "Incoming message schema" + }, + "outgoing": { + "type": "object", + "description": "Outgoing message schema" + } + } + } + }, + "required": ["streamType", "endpoint"] + } + }, + { + "name": "configure_secrets", + "description": "Configures secret management for API keys and sensitive data", + "parameters": { + "type": "object", + "properties": { + "secrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Secret name (e.g., 'OpenAIKey', 'DatabaseURL')" + }, + "description": { + "type": "string", + "description": "Description of what the secret is used for" + }, + "required": { + "type": "boolean", + "description": "Whether this secret is required for the app to function" + } + }, + "required": ["name", "description"] + } + } + }, + "required": ["secrets"] + } + }, + { + "name": "setup_object_storage", + "description": "Sets up object storage buckets for file uploads", + "parameters": { + "type": "object", + "properties": { + "buckets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Bucket name" + }, + "public": { + "type": "boolean", + "description": "Whether bucket contents are publicly accessible" + }, + "versioned": { + "type": "boolean", + "description": "Whether to enable object versioning" + }, + "allowedFileTypes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed file MIME types" + } + }, + "required": ["name"] + } + } + }, + "required": ["buckets"] + } + }, + { + "name": "setup_pubsub", + "description": "Sets up Pub/Sub topics and subscriptions for event-driven architecture", + "parameters": { + "type": "object", + "properties": { + "topics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Topic name" + }, + "eventSchema": { + "type": "object", + "description": "TypeScript interface for event data" + }, + "deliveryGuarantee": { + "type": "string", + "enum": ["at-least-once", "exactly-once"], + "description": "Message delivery guarantee" + } + }, + "required": ["name", "eventSchema"] + } + }, + "subscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Subscription name" + }, + "topicName": { + "type": "string", + "description": "Name of topic to subscribe to" + }, + "handler": { + "type": "string", + "description": "Handler function description" + } + }, + "required": ["name", "topicName", "handler"] + } + } + }, + "required": ["topics"] + } + }, + { + "name": "create_test_suite", + "description": "Creates test suites using Vitest for backend and frontend", + "parameters": { + "type": "object", + "properties": { + "testType": { + "type": "string", + "enum": ["backend", "frontend", "integration"], + "description": "Type of tests to create" + }, + "testFiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Test file path" + }, + "description": { + "type": "string", + "description": "What the test file covers" + }, + "testCases": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": ["name"] + } + } + }, + "required": ["path", "testCases"] + } + } + }, + "required": ["testType", "testFiles"] + } + } + ], + "guidelines": { + "code_quality": [ + "Use 2 spaces for indentation", + "Split functionality into smaller, focused modules", + "Keep files as small as possible", + "Use proper TypeScript typing throughout", + "Follow consistent naming conventions", + "Include comprehensive error handling", + "Add meaningful comments for complex logic" + ], + "backend_requirements": [ + "All backend code must use Encore.ts", + "Store data using SQL Database or Object Storage", + "Never store data in memory or local files", + "All services go under backend/ folder", + "Each API endpoint in its own file", + "Unique endpoint names across the application", + "Use template literals for database queries", + "Document all API endpoints with comments" + ], + "frontend_requirements": [ + "Use React with TypeScript and Tailwind CSS", + "Import backend client as: import backend from '~backend/client'", + "Use shadcn/ui components when appropriate", + "Create responsive designs for all screen sizes", + "Include subtle animations and interactions", + "Use proper error handling with console.error logs", + "Split components into smaller, reusable modules", + "Frontend code goes in frontend/ folder (no src/ subfolder)" + ], + "file_handling": [ + "Always provide FULL file content", + "NEVER use placeholders or truncation", + "Only output files that need changes", + "Use leapFile for creates/modifications", + "Use leapDeleteFile for deletions", + "Use leapMoveFile for renames/moves", + "Exclude auto-generated files (package.json, etc.)" + ], + "security": [ + "Use secrets for all sensitive data", + "Implement proper authentication when requested", + "Validate all user inputs", + "Use proper CORS settings", + "Follow security best practices for APIs" + ] + } +}