# Account Deletion Source: https://docs.workshop.ai/account-deletion How to request deletion of your Workshop account. To request deletion of your Workshop account and associated data, please contact us at [help@workshop.ai](mailto:help@workshop.ai). Please send your request from the email address associated with your account so we can verify and process it. ## Considerations for paid accounts Before deleting a Workshop account with a paid subscription: 1. Cancel your subscription from your [Account](https://account.workshop.ai) page. 2. Wait until the end of your current subscription period. 3. Once the subscription lapses, proceed with account deletion. # Agent Engineering Essentials Source: https://docs.workshop.ai/best-practices/index Master the art of agent engineering — the skill of getting the most out of your AI development partner. ## Understanding Agent Engineering Just like "prompt engineering" helps you get better results from language models, "agent engineering" is a set of best practices to maximize your success with Workshop. While Workshop is powerful and intuitive, following these practices will significantly improve your outcomes, especially for complex projects. Agent engineering is about designing thoughtful interactions with AI systems to ensure they operate reliably, efficiently, and successfully. Even as AI models become more sophisticated, these practices help guide them toward the results you want. ## The Five Pillars of Successful Building ### 1. Separate Planning from Execution Before diving into code, make sure you have clear requirements. If your project needs are still forming, start with collaborative planning: ``` I'm not sure about all the requirements for my project. I want to build a data dashboard for my team, but I need help working through the details. Don't start building until I give you the go-ahead. ``` Use **Plan Mode** to work through requirements systematically. This mode acts like an experienced technical product manager, asking the right questions and helping you scope appropriately. Plan Mode is especially valuable at the start of a project. It helps you avoid the most common mistake: jumping into code before requirements are clear. ### 2. Build Incrementally The most common mistake is asking for too much at once. Break your project into small, achievable steps: **Instead of this:** ``` Build me a complete e-commerce website with user authentication, payment processing, inventory management, and order tracking. ``` **Try this approach:** ``` Let's start by setting up a basic product catalog that displays items with images and prices. ``` Then continue step by step: ``` Great! Now let's add a shopping cart where users can add items. ``` ``` Perfect. Now let's add a simple checkout form (no payments yet). ``` This incremental approach has multiple benefits: * Higher success rate for each step * Easier to debug when issues arise * Natural checkpoints to save progress * Flexibility to change direction based on results ### 3. Verify Understanding Before Making Changes When working with existing code, always ensure Workshop understands the current system before asking for modifications. **The wrong approach:** ``` Change the color scheme to dark mode with blue accents. ``` **The right approach:** ``` First, examine the existing CSS structure and explain how the current styling system works. Then show me the key files that control the color scheme. ``` ``` Now that you understand the structure, update it to use a dark mode theme with blue accents. ``` This pattern is crucial for success with existing codebases. Just like human developers study code before modifying it, Workshop needs guided exploration to understand how things work. ### 4. Manage Task Execution Some tasks require multiple iterations. Instead of micromanaging every step, you can give Workshop more autonomy: **For ongoing work:** ``` Keep working on this until it's fully functional, but check with me if you hit any major roadblocks. ``` **For quick iterations:** ``` Proceed ``` **When things get complex:** ``` Take your time with this. Make sure each step works before moving to the next one, and commit your progress after each successful change. ``` ### 5. Handle Errors Effectively When Workshop gets stuck or makes mistakes, use these recovery strategies: **For spinning wheels or repeated failures:** ``` Stop. Let's step back and reconsider our approach. Is there a simpler way to achieve this goal? ``` **For dependency or environment issues:** ``` Let's try a different approach. Can we use Docker, or is there an alternative library that might work better? ``` **For complex debugging:** ``` Let's break this down. First, create a minimal test case that reproduces the issue, then we can fix it step by step. ``` ## Using `.workshop/rules.md` for Project-Specific Instructions Workshop automatically reads a `.workshop/rules.md` file in your project root, making it the ideal place to document project-specific context: ```markdown theme={null} # Project: E-commerce Dashboard ## Architecture - React frontend with TypeScript - Node.js backend (Express) - MongoDB database - Authentication via Auth0 ## Core Files - src/api/auth.ts: Authentication middleware - src/components/common/: Reusable UI components - src/pages/: Main application views ## Style Guidelines - Use functional components with hooks - Use CSS modules for styling - Follow Airbnb JavaScript style guide ## Testing - Jest for unit tests - React Testing Library for component tests ``` You do not need to write this file manually. Ask Workshop to create it: ``` Please create a .workshop/rules.md file for this project that documents our code style, architecture, and main files. ``` Treat `.workshop/rules.md` as a living document. Update it as your project evolves. Focus on what is unique or non-obvious about your project — Workshop already understands common frameworks and patterns. ## Context Management Best Practices As projects grow, help Workshop maintain context effectively: **Start new conversations for new topics.** Credit cost per message increases as conversations get longer because each new message includes the full context of prior messages. Starting fresh conversations for distinct tasks is both cheaper and more effective. **Use the `/compact` command.** When a conversation gets long but you are not ready to start fresh, the `/compact` command summarizes the conversation to reduce context size while preserving key information. **Reference files explicitly.** When you need Workshop to focus on specific parts of your codebase, point it to the relevant files rather than expecting it to search the entire project. **Keep `.workshop/rules.md` focused.** Add emphasis like "IMPORTANT:" or "NOTE:" for critical information. Avoid dumping massive amounts of context — prioritize what is most unique about your project. ## Common Success Patterns ### The MVP-First Pattern Always start with the minimum viable version: 1. **Core functionality only** — Get the basics working 2. **Add one feature at a time** — Build on a solid foundation 3. **Enhance the user experience** — Polish after functionality is proven ### The Version Control Pattern Establish good practices early: ``` Initialize git with a sensible .gitignore file and commit our initial setup. ``` ``` Great progress! Let's commit this working version before we add the next feature. ``` Regular commits create safety nets and clear progress markers. Workshop's built-in checkpointing provides an additional layer of safety for within-session changes. ### The Testing Pattern Build confidence in your code: ``` Create some basic tests to verify the core functionality works correctly. ``` ``` Before we deploy this, let's test it thoroughly to make sure everything works as expected. ``` ## Common Anti-Patterns to Avoid | Anti-Pattern | What Happens | What to Do Instead | | - | - | - | | **"Do Everything"** | Asking for a complex multi-part app in a single request | Break it into smaller, focused steps | | **"No Verification"** | Not testing or verifying work at each step | Ask Workshop to test after each change | | **"Context Overload"** | Dumping massive context all at once | Introduce complexity gradually | | **"No Progress Saves"** | Forgetting to commit working versions | Use git checkpoints at logical milestones | | **"Too Specific"** | Over-prescribing implementation details | Give Workshop room to make good decisions | ## Measuring Success Good agent engineering leads to: * **Higher success rates** for complex tasks * **Fewer iterations** needed to achieve goals * **More maintainable** project outcomes * **Better project continuity** across conversations * **Reduced frustration** with debugging and errors Agent engineering is a skill that improves with practice. Start with these patterns, experiment with your own approaches, and share what works in our [Discord community](https://discord.gg/ggqJkUN3vx). # Refactoring AI-Generated Projects Source: https://docs.workshop.ai/best-practices/refactoring A practical guide to cleaning up, organizing, and improving code quality in projects built with Workshop. One of the most powerful aspects of building with AI is the ability to rapidly create functional software through natural language. But as your projects grow, you may encounter a common challenge: managing accumulated files, potential duplicates, and maintaining a clean codebase. This guide walks you through the process of refactoring your projects to keep them organized and maintainable. ## What Is Refactoring? Refactoring means improving your code's structure and organization without changing what it does. Think of it like reorganizing your kitchen — you are not adding new ingredients, just making everything easier to find and use. Refactoring is essential for: * Making your code easier to understand * Reducing complexity * Preparing for future enhancements * Fixing potential issues before they cause problems ## Common Challenges with AI-Generated Code ### File Duplication AI assistants sometimes create new files instead of modifying existing ones, especially when fixing errors. You might find both `database.py` and `database_fixed.py` in your project, with small differences between them. ### Inconsistent Naming Conventions AI-generated code may use various naming styles across different files, making your codebase less consistent and harder to navigate. ### Unused Code and Dependencies As your project evolves through multiple iterations, you may accumulate code that is no longer needed or dependencies that are not being used. ## Step-by-Step Refactoring Guide ### Step 1: Set Up Version Control Before making any changes, set up version control as a safety net: ``` Help me set up git for version control in this project. Ensure all necessary files are tracked. ``` Workshop initializes the repository, creates an initial commit, and explains basic git commands. Use git throughout the refactoring process: ``` Show me the git status to see what files I've changed ``` ``` Commit my changes to git with a descriptive message ``` ``` Create a new git branch where I can try removing files safely ``` ### Step 2: Perform a Code Audit Review your entire project to understand the purpose of each file: ``` Review all files in this project and explain what each one does. Identify any duplicate or unused files. ``` Workshop analyzes your codebase and provides a comprehensive overview of each file's purpose, potential duplicates, obsolete files, and style inconsistencies. ### Step 3: Create a Refactoring Checklist For anything beyond a small project, create a checklist to track progress: ``` Based on the code audit, create a markdown file called "refactor_checklist.md" that includes: 1. A list of tests that need to be created before removing files 2. A list of duplicate or unused files that can be removed after testing 3. Instructions on how to use this checklist ``` Refactoring larger projects may require multiple conversations. When starting a new conversation, reference your checklist: *"Let's continue refactoring. Here's my current checklist: refactor\_checklist.md"* ### Step 4: Implement Testing Before removing files or making significant changes, ensure you can verify your application still works: ``` Help me create tests that verify the core functionality. Reference refactor_checklist.md for a list of tests to perform. Choose a lightweight testing framework that ensures coverage. ``` Run tests to establish a baseline. Throughout refactoring, use these tests to ensure changes do not break functionality. If a test fails, you know exactly what stopped working and can fix it or revert to your previous git commit. ### Step 5: Clean Up Duplicate Files With version control and tests in place, start cleaning up: ``` Let's consolidate the duplicate files you identified. For each pair of duplicates, help me determine which to keep and update any references to the removed file. ``` Workshop compares duplicates, identifies the most complete version, updates imports and references, commits changes, and runs tests to verify everything works. ### Step 6: Final Verification and Documentation Once refactoring is complete, verify everything and document your project: ``` Run all tests to verify the application works correctly. Update .workshop/rules.md to document the project structure, tests, and how to run them. ``` ## Preventing Issues in New Projects ### Establish Clear Rules Create a `.workshop/rules.md` file with explicit instructions before starting development: ```markdown theme={null} # Workshop Project Rules 1. Always edit existing files rather than creating new versions 2. Use git for version control with meaningful commit messages 3. Follow consistent naming conventions 4. Keep file organization according to feature/functionality ``` ### Regular Housekeeping Incorporate periodic cleanup sessions into your workflow. After every few development sessions, ask: ``` Review the project and check what every file does. Identify any outdated, obsolete, or unnecessary files. Get my authorization before removing anything. ``` ### Commit Early and Often Make git commits a regular part of your workflow. After each significant milestone, commit with a descriptive message. This creates checkpoints and makes it easy to track how your project evolves. ## Using Workshop to Refactor Its Own Code One of Workshop's strengths is its ability to improve code it previously generated. You can ask Workshop to: * **Audit its own work**: *"Review all the code you've generated in this project and identify areas for improvement."* * **Consolidate patterns**: *"We have three different ways of handling API calls. Can you consolidate them into one consistent pattern?"* * **Improve architecture**: *"This project has grown organically. Can you suggest a better file organization and help me restructure?"* * **Remove dead code**: *"Find and remove any functions, imports, or files that are no longer used."* ## When to Refactor Refactoring is not a one-time task — it is an ongoing process. Consider refactoring when: * **After rapid prototyping**: You have built quickly and now want to clean up before continuing * **Before adding major features**: A clean codebase makes new features easier to implement * **When onboarding collaborators**: Clean code is easier for others to understand * **When you notice patterns**: Repeated code or inconsistent structure signals a need for cleanup * **Before deployment**: Production code should be clean and well-organized ## Strategies for Improving Code Quality Over Time 1. **Set standards early** with `.workshop/rules.md` and stick to them 2. **Refactor incrementally** rather than attempting massive rewrites 3. **Test before and after** every refactoring change 4. **Use version control** as a safety net at every step 5. **Document decisions** so future conversations have context 6. **Review regularly** — schedule periodic housekeeping sessions The greatest benefit of building with Workshop is the speed of development. By combining that speed with disciplined maintenance practices, you get the best of both worlds: fast iteration and sustainable code quality. # Using Credits Effectively Source: https://docs.workshop.ai/best-practices/using-credits-effectively How to manage conversations, project context, caching, and model choice without wasting credits. The simplest way to avoid unnecessary credit use is to start a new conversation when the goal changes or you return after a long break. **When should you leave a long conversation behind?** When you begin a different task, or return after more than an hour of inactivity—even if you are continuing the same work. The usual cache window is about one hour, so reopening an older conversation can mean paying for the model to process its full history again. Start a new conversation, or switch to a lower-cost model, use `/compact`, then return to the capable model if you need to continue the same task. ## What should I do? ### While actively working | Situation | Best action | | - | - | | Continuing the same focused task while the cache is warm | Keep the same conversation and model | | Starting a different feature, bug, or topic | Start a new conversation; before leaving the current one, run `/context` if it contains lasting knowledge | | Continuing the same task without a long break, but with a long history | Run `/compact` to shorten the history carried into later turns; if needed, say what the summary should preserve | | Changing the main model | If needed, first run `/context` to save lasting knowledge or `/compact` to continue the same task; then select the new model in the fresh or compacted conversation | | The agent is repeating unsuccessful attempts | Interrupt it, narrow the goal, or return to planning | ### Before taking a long break Prepare the handoff while the cache is still warm. | What you need later | Best action | | - | - | | Knowledge that future conversations should know | Run `/context`; if needed, say what project knowledge it should preserve | | The ability to continue the same task | Run `/compact` to create a shorter continuation | You can view or edit the saved project context in `.workshop/context.md`. If both apply, run `/context` first, then `/compact`. ### When you come back | Situation | Best action | | - | - | | You saved the important knowledge with `/context` before leaving | Start a new conversation and state the next goal | | You shortened the history with `/compact` before leaving | Continue from that shortened conversation | | The old conversation is cold but contains unsaved knowledge | **Start fresh:** switch to a lower-cost model, run `/context`, then use the capable model in a new conversation.

**Continue the task:** switch to a lower-cost model, run `/compact`, then use the capable model in the shortened conversation | | You do not need anything from the old conversation | Start a new conversation instead of continuing it | ## Three things that affect credit use | | What it is | How to manage it | | - | - | - | | **Project context** | Stable knowledge shared across conversations | Use `/context` to save important project knowledge in `.workshop/context.md` for future conversations | | **Conversation context** | Messages, file reads, commands, and agent responses in one conversation | Keep it focused; use `/compact` to shorten the history carried into later turns, or start fresh | | **Prompt cache** | A temporary copy of input the model has already processed | Keep the same model while the cache is warm; assume it is cold after a long break | ## Why long conversations cost more Each new turn includes the context needed to continue the conversation. As messages, file reads, and tool results accumulate, there is more history to process on every turn. A warm prompt cache makes repeated history cheaper, but it does not make the conversation smaller. Output, new input, agent turns, and delegated work still consume credits. **Why a fresh conversation saves credits.** It leaves the old chat history behind while keeping the project's files, sources, and saved project context. The agent starts with the durable information it needs, without carrying every earlier message and tool result. Use one conversation for one clear purpose. When the purpose changes, start a new one. ## Use `/context` to save knowledge for future conversations `/context` saves important project knowledge from the current conversation in `.workshop/context.md` so future conversations can use it. ```text theme={null} /context focus on architecture decisions, the current migration status, and the commands used to verify the project ``` Run it after a milestone or lasting decision. Keep the saved context concise, and never include secrets. You can view or edit it in `.workshop/context.md`. See [Context and Memory](/core-concepts/context-and-memory). ## Use `/compact` to shorten history for the same task `/compact` replaces a long working history with a shorter summary. Use it when you want to continue the same task but no longer need every intermediate step. ```text theme={null} /compact focus on the authentication bug, attempted fixes, and remaining verification ``` Compaction requires a summarization turn and usually starts a new cache. The saving comes from carrying the shorter summary on later turns. Workshop also compacts automatically near the context limit. See [Working with the Agent](/core-concepts/working-with-the-agent#auto-compaction). ## Why caching and model switching matter A prompt cache lets a model reuse conversation history at a discounted rate. The usual TTL is **one hour**. Think of this as an idle timer: using the cache can refresh it, but the exact behavior varies by model and provider. | What happens | Result | | - | - | | Continue with the same model while the cache is warm | Matching history can use the lower cache rate | | Return after the cache expires | The model must process the history again | | Switch the main model or provider | The new model cannot use the old model's cache | **Why a cold premium turn can be surprisingly expensive.** Think of two prices multiplying. A premium model can cost around **10× more** than a lower-cost model. If the cache is cold, rereading the same long conversation can cost around **10× more** than reading it from a warm cache. Together, the conversation-history part of the first cold turn on a premium model can cost around **100× more** than a warm turn on a lower-cost model. The exact difference varies, and the 100× comparison does not apply to the entire turn. The practical rule is simple: do not make a premium model process a long, cold history. Use a lower-cost model for `/context` or `/compact`, then use the capable model in the fresh or shortened conversation. ## Choose the model for the task The cheapest turn is not always the cheapest completed task. Repeated corrections can cost more than using a stronger model once. | Work | Model strategy | | - | - | | Routine edits, searches, and straightforward tasks | Use ARC or a lower-cost model | | Everyday implementation | Use a balanced model | | Difficult debugging, migrations, or architecture work | Choose a premium model deliberately | [ARC](/core-concepts/settings#arc) is the simplest default when you do not want to pick a model yourself. ## Related reading * [Context and Memory](/core-concepts/context-and-memory) * [When to Start Fresh vs. Persist](/troubleshooting/when-to-start-fresh) * [Working with the Agent](/core-concepts/working-with-the-agent) * [Plans and credits](/pricing/plans) # Patterns from 10,000+ Projects Source: https://docs.workshop.ai/best-practices/vibe-coding-from-10k-projects Proven strategies for effective agentic coding, distilled from thousands of real-world Workshop projects. Workshop is the everything builder that enables agentic coding through natural language. This guide covers proven strategies distilled from over 10,000 projects across various tech stacks and environments. Workshop is intentionally flexible and unopinionated, providing a natural language interface to create any type of software without forcing specific workflows. This design philosophy creates a powerful tool that adapts to your needs. While powerful, this flexibility presents a learning curve — at least until you develop your own best practices. Nothing in this guide is set in stone nor universally applicable. Consider these suggestions as starting points, and experiment to find what works best for you. ## 1. Customize Your Environment ### Create `.workshop/rules.md` Files `.workshop/rules.md` is a special file that Workshop automatically pulls into context when working with your project. This is the single most impactful thing you can do to improve Workshop's output. Document: * Project architecture and structure * Core files and utility functions * Code style guidelines * Testing frameworks and methodologies * Environment setup instructions * Deployment processes You do not need to write this file manually: ``` Please create a rules.md file for this project that documents our code style, architecture, and main files. ``` ### Optimize Your Rules Files Your `.workshop/rules.md` files become part of Workshop's understanding of your project. Treat them as living documents: * Focus on what is most unique or non-obvious about your project * Keep documentation minimal for projects with standard frameworks * Add emphasis like "IMPORTANT:" or "NOTE:" for critical constraints * Update the file as your project evolves ### Configure Secrets Management Workshop includes built-in secrets management for sensitive information like API keys. Configure secrets in Settings, then reference them by name: ``` Connect to the OpenAI API using the OPENAI_API_KEY secret. ``` Workshop stores secrets in your system's keychain, keeping them protected while making them available for your projects. ### Control Workshop's Autonomy Three controls let you tune how independently Workshop works: * **Code Execution Approval** — Review and approve each code block before it runs * **Turns Control** — Set a maximum number of autonomous turns between your messages * **Thinking Mode** — Enable visible step-by-step reasoning for complex problems **Thinking Mode tends to reduce overall credit consumption.** Although it may increase credit usage per message, the structured reasoning produces more focused, accurate results — reducing wasted iterations. ## 2. Give Workshop More Context ### Start with Clear High-Level Vision Begin by describing the overall picture, not technical details: ``` I want to build a personal expense tracker app that helps me categorize my spending and visualize trends over time. It should: - Import transactions from CSV bank statements - Automatically categorize transactions based on patterns - Show monthly spending breakdowns by category - Generate reports I can export to PDF - Work offline without requiring cloud services ``` ### Use Multimodal Input Workshop supports text, wireframes, screenshots, diagrams, and reference images. For visual elements like UIs, providing visual references dramatically improves output. Drag and drop images directly into the conversation. ### Reference External Documentation Provide links to relevant docs when working with specific libraries or APIs: ``` I want to build a React Native app that uses the Stripe API. Search for the relevant docs. ``` Workshop fetches and incorporates external documentation into its understanding of your project. ### Use Project Templates Browse available templates when starting a new project. Templates provide pre-configured projects with appropriate structure, dependencies, and starter code. They save time and ensure your project follows established patterns from the start. ## 3. Effective Workflows ### Separate Design from Execution Clearly separate planning from building: 1. **Discuss requirements first**: *"I want to build a dashboard that shows analytics from our API, but I need help working through the details. Don't jump to execution until I instruct you to."* 2. **Refine together**: Use Workshop as a collaborative partner to explore options 3. **Signal when to build**: Once satisfied with the plan, explicitly tell Workshop to start ### Take Incremental Steps 1. **Start with the simplest version** that demonstrates core functionality 2. **Verify each step works** before moving to the next 3. **Build progressively** once the foundation is solid This incremental approach significantly increases success rates by avoiding complexity too early. ### Iterate Through Conversation 1. Describe your initial idea in simple terms 2. Let Workshop build a minimal implementation 3. Refine through natural language feedback: *"Make the activity feed more compact"* 4. Use visual input when possible — attach screenshots with feedback This conversational approach yields far better results than specifying everything in a single prompt. ### Switch Modes as Needed * **Higher autonomy** for rapid development when you want quick results * **Manual approval** when you need precise control over specific features * **Extended execution**: *"Keep working until you really need my input"* ## 4. Optimize Your Prompting ### Be Specific and Prioritize | Less Effective | More Effective | | - | - | | Make me a weather app | Create a weather app showing the 5-day forecast for the user's current location. Display temperature, precipitation chance, and wind speed. Use React and the OpenWeatherMap API. Clean, minimalist UI with a blue color scheme. | | Fix the authentication bugs | Debug the authentication flow in auth.js. Users are logged out after 10 minutes even though JWT expiration is set to 24 hours. Check for token refresh issues. | | Make this code better | Refactor for performance. The database query loads all records instead of paginating. Implement pagination with 20 items per page using indexed fields for sorting. | ### Use the Right Level of Guidance * **High-level**: *"Build a shopping cart component for an e-commerce site"* — good for standard patterns * **Directed**: *"Build a shopping cart with these specific requirements: \[list]"* — when you have specific needs * **Step-by-step**: *"First create a CartContext, then CartItem and CartSummary components"* — for precise control Start with high-level guidance and become more specific if results do not match expectations. ### Show Examples When you have a specific style in mind, reference existing code: ``` I need a user profile page similar to the product detail page in products.js, but focused on user information. Use the same styling approach but adapt the layout for user data. ``` ## 5. Leverage Workshop's Tools ### File System Tools Workshop can create, read, edit, and search files in your project. Explicitly tell it which files to focus on for best results. Its file editing is especially powerful for targeted changes to large codebases. ### CLI / Shell Tools Workshop runs shell commands, package managers, build tools, version control, and deployment scripts. It can determine the right commands for a task or execute specific commands you provide. ### Search Tools Workshop searches both your local codebase and the web for relevant patterns, documentation, error solutions, and reference materials. ## 6. Guide Workshop's Learning ### Understand Before Modifying Before asking Workshop to change existing code: 1. **Ask it to explain** how the existing code works 2. **Verify its understanding** is correct 3. **Then make changes** with confidence This dramatically improves success rates with established codebases. ### Embrace Iteration Over Perfection 1. Start small with minimal functionality 2. Get feedback early 3. Add features incrementally 4. Commit working versions regularly ## 7. Use Checkpoints for Safety Workshop automatically saves checkpoints of your project at key moments during each conversation. This gives you a "time machine": * **Experiment freely** — if something does not work out, restore to a previous state * **Track changes** — see exactly when file modifications occurred * **Go back in time** — revert your project to any earlier point in the conversation Checkpoints work alongside your existing Git repository without interference — they do not create `.git` files, they respect `.gitignore`, and your own commits remain unaffected. ## 8. Share Your Work Workshop lets you share conversations privately via unique links or publicly through Workshop Universe. Share your process, showcase ideas, and let others learn from your approach. Ensure publicly shared conversations do not contain sensitive information, API keys, or proprietary code. ## Real-World Application Patterns Describe your product vision in plain language. Let Workshop build a basic prototype. Gather feedback from stakeholders. Iterate quickly through natural language — dramatically reducing time from idea to testable prototype. Set up a data analysis environment, describe your goals, request specific visualizations, and create reproducible notebooks — combining your domain expertise with Workshop's technical capabilities. Describe the business problem, specify integrations with existing systems, start with core functionality, and deploy internally. Create tailored solutions without diverting engineering resources. Identify systems that need to communicate, provide credentials securely via secrets management, describe the desired workflow, and test with sample data. Workshop builds APIs, webhooks, and data transformations to connect disparate systems. *** Mastering agentic coding is about finding the right balance between clear direction and creative freedom. The most successful Workshop users view the process as a collaboration between human creativity and AI implementation, with each iteration bringing the project closer to their vision. Keep exploring, experimenting, and sharing your experiences with the [Workshop community](https://discord.gg/ggqJkUN3vx). # Build AI-Powered Apps Source: https://docs.workshop.ai/build-guides/ai-apps Ship full-stack AI applications with Anthropic, OpenAI, and Google models built in — not wrappers, real apps with intelligent backends. ## What you'll build A complete, deployable AI-powered application — with a frontend, backend, and AI model integration — that you can publish and share with a link. ## Before you start Sign up at [app.workshop.ai](https://app.workshop.ai). Both Workshop Cloud and Workshop Desktop support AI app development. Your app needs access to an AI model to power its intelligent features. You have two options: Managed connectors for Anthropic, OpenAI, and Gemini are **on by default** — no API keys, no setup required. Usage is billed to your Workshop credits. To use one, just reference it in your prompt using the **@** mention selector or the **Add Functionality** button. Workshop handles the rest — model selection, API calls, streaming, and error handling. Managed connectors support everything the underlying models do. For example: * *"Add image generation using @Gemini"* — Workshop will use Gemini's image capabilities * *"Use @Anthropic to analyze this document and return structured data"* * *"Build a voice transcription feature powered by @OpenAI"* If you have your own API key from a provider, you can connect it directly instead. This bills usage directly to your provider account. 1. Get an API key from [Anthropic](https://console.anthropic.com/), [OpenAI](https://platform.openai.com/api-keys), or [Google AI Studio](https://aistudio.google.com/apikey) 2. Open the **Hub** → **Connectors** 3. Search for the provider (e.g., "OpenAI (your API key)") 4. Enter your API key and save ## Step-by-step flow Start a new conversation and describe the application. Mention the AI capabilities you want — don't worry about the implementation details, Workshop handles that. **Example prompts:** * *"Build an AI writing assistant that lets users paste text and rewrite it in different tones — professional, casual, concise, persuasive. Include a side-by-side comparison view."* * *"Create a document Q\&A app where users upload PDFs and ask questions about the content. Use Claude for accurate answers with source citations."* * *"Build a customer support chatbot with an admin panel to manage FAQ entries and a chat interface with conversation history."* Workshop generates the full stack: frontend UI, backend API routes, and AI model integration. It uses whichever AI connector you enabled and writes the code to call it correctly — prompt engineering, streaming responses, error handling, and all. Use the live preview to test the AI features. Send real inputs and verify the responses make sense. Refine as needed: * *"Make the AI responses stream in word by word instead of appearing all at once."* * *"Add a system prompt field in the admin panel so I can customize the AI's behavior."* * *"Limit response length to 500 words and add a regenerate button."* Click **Publish** and Workshop handles hosting and compute. Your app gets a live URL with built-in authentication. You can make it public or limit access to specific people or teams — Workshop handles the access control as part of the same flow. ## Tips and best practices Instead of *"add AI to my app,"* describe exactly what the AI should do: *"When a user uploads a CSV, have the AI analyze the data and generate a summary with three key insights and a recommended next step."* Managed connectors are the fastest way to get started — no API key setup, no billing configuration, no rate limit management. Switch to BYOK later if you need to. Reference the specific connector when it matters: *"Use the Anthropic connector for the analysis — I want Claude's reasoning capabilities for this."* Workshop will route to the right model. If your app sorts, routes, moderates or scores inputs rather than generating text, Workshop suggests the [Jev](/connectors/jev) decision model. It returns calibrated probabilities in well under a second, billed to your Workshop credits or your own OpenRouter or TypeSafe key. Workshop's strength is building full applications around AI — with forms, databases, visualizations, and user accounts. Don't just build a chatbot; build the complete tool your users need. Try empty inputs, very long inputs, and adversarial prompts. Ask Workshop to add input validation and error handling: *"Add a 10,000 character limit on the input field and show a friendly error if the AI call fails."* ## Next steps * [AI Providers reference](/connectors/managed-ai-connectors) — Deep dive on managed vs. BYOK connectors * [Publishing](/workshop-cloud/publishing) — Deploy your app with authentication and custom domains * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop * [Checkpoints](/workshop-desktop/checkpoints) — Save working versions before experimenting (Workshop Desktop only) *** Ship AI apps, not wrappers. Describe your app and go. # Build Trusted Dashboards Source: https://docs.workshop.ai/build-guides/dashboards Connect your databases and build interactive, governed dashboards with natural language. Native dbt integration keeps your metrics trustworthy. ## What you'll build An interactive, data-connected dashboard — with charts, KPI cards, filters, and drill-downs — deployed as a shareable web app with built-in authentication. ## Before you start Sign up at [app.workshop.ai](https://app.workshop.ai). Workshop Cloud is the recommended platform for dashboards. Dashboards need data. Workshop supports a wide range of data connectors — connect at least one before you start building. Connect directly to your production or analytics database: * **PostgreSQL**, **MySQL**, **Microsoft SQL Server**, **MongoDB** * **Supabase**, **Neon** (managed Postgres) * **TiDB**, **TigerGraph** Go to **Hub** → **Connectors**, select your database type, and enter the connection credentials. Connect to your warehouse for analytics-scale queries: * **BigQuery** (GCP service account) * **Snowflake** (account, user, password, optional warehouse/schema) These are ideal for large datasets and complex analytical queries. For lighter data needs: * **Google Sheets** (public or private with service account) * **CSV / Excel uploads** — paste data or upload files directly into the conversation Great for quick dashboards or when your data isn't in a database yet. ## Step-by-step flow Open the **Hub** → **Connectors** and set up a connection to your database, warehouse, or spreadsheet. Workshop stores credentials securely and makes the data available to your projects. You can also mention connectors inline: type `@` in the chat and select a connector to reference it directly in your prompt. Tell Workshop what metrics and visualizations you need. Reference the connected data source. **Example prompts:** * *"Build a sales analytics dashboard from my Postgres database showing revenue trends over time, top customers, regional performance on a heatmap, and key KPI cards with quarter-over-quarter comparisons."* * *"Create a financial reporting dashboard with P\&L statement, cash flow analysis, budget vs. actuals, and drill-down by department."* * *"Build a product analytics dashboard with user cohort retention heatmap, feature adoption funnel, and daily/weekly active users with date range filtering."* Refine specific charts, add filters, or change the layout: * *"Change the revenue chart to a stacked area chart broken down by product line."* * *"Add a date range picker that filters all charts on the page."* * *"Replace the table with a bar chart for the regional breakdown."* * *"Add a row of KPI cards at the top: total revenue, new customers, average deal size, and churn rate."* Click **Publish** and Workshop handles hosting and compute. Anyone you share it with gets a live, interactive view — not a static screenshot. Make it public or limit access to specific people or teams. Built-in authentication controls who can see the data. ## Tips and best practices You don't need to know SQL. Say *"Show me monthly recurring revenue by customer segment"* and Workshop will write the queries for you. If you do know SQL, you can paste queries directly for more precise control. If your organization uses dbt, Workshop can read your dbt models, metrics, and documentation natively. This means your dashboards are built on governed, version-controlled metric definitions — not ad-hoc queries that drift over time. For even deeper governance, compile your dbt project into a structured agent skill using [dbt-skillz](https://github.com/atlasfutures/dbt-skillz) — an open-source compiler available on [PyPI](https://pypi.org/project/dbt-skillz/): ```bash theme={null} pip install dbt-skillz dbt-skillz compile --project-dir ./analytics --output ./skills/data ``` Push the compiled skill to a GitHub repo and import it into Workshop. The agent will use your metric definitions, column documentation, and lineage graph to write correct queries from the start. See [Skills](/core-concepts/skills) for import instructions. Begin with the 3-5 key numbers your audience cares about. Once those are right, add supporting charts and drill-downs. This keeps the dashboard focused. Ask for date range pickers, dropdown filters, and search bars: *"Add filters for date range, region, and product category that affect all charts."* Interactive dashboards are far more useful than static reports. If your production database has millions of rows, tell Workshop: *"This table has 10M+ rows — make sure the queries are performant and use appropriate aggregations."* Workshop will optimize accordingly. ## Trusted dashboards lifecycle Building the dashboard is step one. Keeping it accurate as your data model evolves is the real challenge. Workshop supports a full trusted dashboards lifecycle — from grounded creation through automated review and maintenance. Automated review on deploy, downstream impact analysis, and dashboard maintenance when your dbt models change. ## Next steps * [Connectors](/connectors) — Full list of supported data sources and setup guides * [Publishing](/workshop-cloud/publishing) — Deploy and share your dashboard * [Sharing and teams](/workshop-cloud/sharing-and-teams) — Control access to your dashboards * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop * [Skills](/core-concepts/skills) — Import data skills from GitHub to ground your dashboards * [Trusted Dashboards](/solutions/trusted-dashboards) — The full lifecycle for keeping dashboards accurate *** Connect your data and build a dashboard you can trust. # Build Guides Source: https://docs.workshop.ai/build-guides/index Step-by-step guides for building real, working software with Workshop. Workshop builds real, deployed software — not mockups, not prototypes, not chat transcripts. You describe what you want in plain English and Workshop writes the code, sets up the infrastructure, and deploys the result. These guides walk you through the most common types of projects people build with Workshop — from websites, AI-powered apps, and dashboards to mobile apps and local utilities that run directly on your machine. ## Choose your build type Build and deploy responsive, accessible websites. Landing pages, portfolios, e-commerce storefronts, and more — from description to live URL. Ship full-stack applications with Anthropic, OpenAI, and Google AI models built in. Real backends, not API wrappers. Connect your databases and build interactive, trusted dashboards. Native dbt integration for governed metrics. Admin panels, CRMs, and operational tools connected to your existing databases and APIs. Deploy with built-in authentication. Build iOS and Android apps with Expo, React Native, Swift, or Kotlin using Workshop Desktop's terminal and filesystem access. Build native utilities that run directly on your machine — keyboard tools, transcription, file organization, data processing, and other ad hoc tasks. Workshop Desktop only. ## Workshop Cloud vs. Desktop Not every project type works on every platform. Here's a quick guide: | Build type | Workshop Cloud | Workshop Desktop | | - | - | - | | Websites | Yes | Yes | | AI-powered apps | Yes | Yes | | Dashboards | Yes | Yes | | Internal tools | Yes | Yes | | Mobile apps | — | Yes | | Local apps | — | Yes | Workshop Cloud runs entirely in your browser. No downloads, no local setup — just describe what you want and Workshop builds it. Workshop Desktop gives you full filesystem access and terminal control on your local machine. It's required for projects that need native toolchains — mobile development, desktop apps, or anything that must run locally. If you're not sure which platform to use, start with [Workshop Cloud](https://app.workshop.ai). You can always move to Desktop later if your project requires it. # Build Internal Tools Source: https://docs.workshop.ai/build-guides/internal-tools Build admin panels, CRMs, and operational tools connected to your databases and APIs. Deploy securely with built-in authentication. ## What you'll build A custom internal tool — an admin panel, CRM, operations dashboard, or workflow tracker — connected to your real data and deployed with authentication so only your team can access it. ## Before you start Sign up at [app.workshop.ai](https://app.workshop.ai). Workshop Cloud is recommended for internal tools — it handles hosting, auth, and deployment. Internal tools are most useful when connected to your existing systems. Set up the connectors you need: * **Databases**: PostgreSQL, MySQL, MongoDB, Supabase, Neon, Microsoft SQL Server, TiDB * **Data warehouses**: BigQuery, Snowflake * **Cloud storage**: AWS S3, Google Drive * **APIs**: Use the custom connector to store API keys and secrets for any third-party service * **Spreadsheets**: Google Sheets (public or private) Go to **Hub** → **Connectors** to set them up. ## Step-by-step flow Open the **Hub** → **Connectors** and add connections to the systems your tool needs to read from or write to. For custom APIs, use the **Custom Connector** to securely store API keys and endpoints. Tell Workshop what the tool should do, who will use it, and what data it needs. **Example prompts:** * *"Build a customer support admin panel with ticket management, customer lookup, response templates, and performance metrics. Connect to my Postgres database for ticket and customer data."* * *"Create an inventory management tool with product catalog, stock level tracking, low-stock alerts, and purchase order generation. Include search, filtering, and CSV export."* * *"Build a sales CRM with a Kanban pipeline view, contact management, activity logging, and deal forecasting."* * *"Create an employee onboarding tracker with task checklists, progress visualization, and an admin view."* Internal tools typically need to read and write data. Ask Workshop to add the operations your team needs: * *"Add a form to create new customers with validation on the email field."* * *"Let users change the ticket status by clicking a dropdown in the table row."* * *"Add a bulk action to mark selected orders as shipped."* * *"Add CSV export for the filtered table view."* Click **Publish** and Workshop handles hosting and compute. Built-in authentication means your team members sign in to access the tool — no one else can see the data. You can restrict access to specific people or teams without building a login system yourself. ## Tips and best practices Tell Workshop who will use this: *"This is for our customer success team — they need to quickly look up a customer by email, see their subscription status, recent tickets, and usage metrics."* Context about the user produces better UX decisions. Don't try to build the entire tool at once. Start with the single most important workflow — e.g., *"I need to be able to search for a customer and see all their orders"* — and expand from there. Connect to your actual database (or a staging copy) so you can validate that queries return correct results. Dummy data hides schema mismatches and edge cases. Internal tools handle real business data. Ask Workshop for safeguards: *"Add a confirmation dialog before deleting a record. Validate that the email format is correct before saving. Show an error message if the database update fails."* If different team members need different access levels, describe it: *"Managers can edit and delete records. Regular users can only view and create."* Workshop can build role-based access into the tool. ## Next steps * [Connectors](/connectors) — Set up database and API connections * [Publishing](/workshop-cloud/publishing) — Deploy your tool with authentication * [Sharing and teams](/workshop-cloud/sharing-and-teams) — Control who can access the tool * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop *** No more waiting on engineering backlogs. Describe the tool and deploy it today. # Build Local Apps Source: https://docs.workshop.ai/build-guides/local-apps Build native utilities and tools that run directly on your machine — from keyboard tools and transcription to file processors and ad hoc tasks. Workshop Desktop only. ## What you'll build A native app or utility that runs directly on your machine — no browser, no server, no deployment step. Local apps can be anything from a keyboard remapper or transcription tool to a file organizer, video resizer, CSV processor, or any task you find yourself doing repeatedly. Local app development requires **Workshop Desktop**. Workshop Cloud does not have access to your local file system, hardware, or system APIs. ## Before you start Install Workshop Desktop from [workshop.ai/download](https://workshop.ai/download). No other setup is required — Workshop handles everything else, including downloading libraries and installing dependencies. Workshop Desktop gives you the option to build with local models running on your own machine. Workshop will help you select the best fit based on your hardware. Building with a local model means no API costs, nothing leaving your machine, and no internet connection required. If you prefer to build with an online model, that works too — just select one from the model picker in the toolbar. See [Local Models](/workshop-desktop/local-models) to get set up. Think about what system resources your app will use — files and folders, keyboard input, microphone, camera, clipboard, or system APIs. Having this in mind before you start helps Workshop make the right architecture decisions from the beginning. ## Step-by-step flow Start a new conversation and tell Workshop what the app should do. Be specific about what it needs to access on your system. **Example prompts:** * *"Build a menu bar app for macOS that transcribes whatever I'm listening to in real time and shows it as scrolling text."* * *"Create a folder watcher that automatically renames files in a target directory using a date-prefix format I can configure."* * *"Build a desktop app that takes a folder of videos, lets me pick a resolution and format, and batch-converts them."* * *"Make a utility that reads a CSV, lets me preview it, apply simple transformations, and export the result."* * *"Build a global keyboard shortcut tool that expands text snippets as I type — e.g., typing `;addr` expands to my full address."* Workshop installs the right libraries and frameworks for your platform — whether that's a Python script with a native UI, an Electron app, a Swift app on macOS, or a system tray utility. You don't need to install dependencies or configure toolchains manually. Tell Workshop your platform upfront if it matters: *"This should be a macOS app"* or *"It needs to work on both Windows and macOS."* Workshop will choose the right approach. Local apps run directly on your machine as soon as they're built — no deployment, no server, no URL to visit. Workshop launches the app so you can test it right away. Iterate naturally: ``` The file picker doesn't show hidden folders — can you include those? Add a progress bar while it's processing. Make the window remember its position between launches. ``` Workshop has full access to your file system and terminal, so it can fix issues, install missing packages, and make changes without any manual steps on your part. Workshop can style your app to match the platform it runs on — native macOS window chrome, Windows controls, or Linux conventions. If you want it to feel at home on your desktop rather than like a generic tool, just ask. * *"Make this look like a native macOS app with a proper menu bar and dark mode support."* * *"Add a system tray icon so it runs in the background."* * *"Use the platform's native file picker instead of a custom one."* ## Tips and best practices Tell Workshop what system resources your app requires — files, keyboard, microphone, camera, clipboard, network. This lets it make the right architecture and permissions decisions from the start, rather than retrofitting them later. Don't try to pre-install libraries or frameworks. Give Workshop the task and let it choose and install what's needed. It will resolve errors and missing packages as part of the build process. Workshop Desktop lets you power the agent with a local model running on your machine — no API costs, fully private, works offline. This is especially useful when you're iterating heavily and want to keep costs at zero. Switch to a frontier model when you want maximum capability. Start with the core function, run it, verify it works, then add features: 1. *"Build the basic folder watcher that prints file names to the console"* 2. *"Add the rename logic with the date prefix"* 3. *"Add a config file so I can change the format without editing code"* 4. *"Add a simple UI so I can toggle it on and off"* Workshop knows the conventions for each platform. If you want your app to feel native — launch at startup, live in the menu bar or system tray, use native dialogs — just describe it. You don't need to know the implementation details. ## Next steps * [Local Models](/workshop-desktop/local-models) — Run Ollama or llama.cpp for private, offline AI features * [AI Providers](/connectors/managed-ai-connectors) — Add cloud-powered AI features to your app * [File System and Terminals](/workshop-desktop/file-system-and-terminals) — How Workshop Desktop interacts with your local environment * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop * [Checkpoints](/workshop-desktop/checkpoints) — Save and restore project states *** Build local apps that run natively on your machine — no deployment required. # Build Mobile Apps Source: https://docs.workshop.ai/build-guides/mobile-apps Build iOS and Android apps with Workshop Desktop. Expo and React Native for cross-platform, or native Swift and Kotlin for platform-specific development. ## What you'll build A mobile application for iOS, Android, or both — from project scaffolding through development to store-ready builds — using Workshop Desktop's terminal access and filesystem control. Mobile app development requires **Workshop Desktop**. Workshop Cloud does not have access to the native toolchains (Xcode, Android Studio, simulators) needed for mobile development. ## Before you start Install Workshop Desktop from [workshop.ai/download](https://workshop.ai/download). Workshop Desktop runs on your local machine with full filesystem and terminal access. Workshop supports multiple mobile development paths. Choose based on your needs: | Framework | Platforms | Best for | | - | - | - | | **Expo / React Native** | iOS + Android | Cross-platform apps, fastest path to both stores | | **Swift / SwiftUI** | iOS only | Native iOS performance, Apple ecosystem features | | **Kotlin / Jetpack Compose** | Android only | Native Android performance, Google ecosystem features | ## Recommended path: Expo / React Native Expo is the recommended starting point for most mobile apps. It gives you a single codebase that runs on both iOS and Android, with a fast development cycle and straightforward path to the app stores. Open Workshop Desktop, start a new conversation, and ask Workshop to set up your Expo project: *"Help me set up Expo CLI and create a new React Native project with TypeScript, React Navigation, and a tab-based layout."* Workshop will install the necessary tools, scaffold the project, and configure the development environment. Once the project is set up, describe what you want to build: **Example prompts:** * *"Build a task management app with categories, due dates, push notifications for reminders, and a dark mode toggle."* * *"Create a recipe app with a searchable catalog, favorites list, grocery list generator, and offline support."* * *"Build a fitness tracker with workout logging, progress charts, and a calendar view."* Ask Workshop to launch the app in the iOS Simulator or Android Emulator: * *"Run this in the iOS Simulator."* * *"Start the Expo development server so I can test on my phone."* Use the Expo Go app on your physical device for the fastest testing loop. Refine specific screens, add features, and polish the UI: * *"Add pull-to-refresh on the home screen."* * *"Make the navigation transitions smoother with shared element animations."* * *"Add camera access for the profile photo feature."* * *"Implement offline data persistence so the app works without internet."* When your app is ready, ask Workshop to prepare it for the stores: *"Help me configure EAS Build for both iOS and Android, generate app icons and splash screens, and prepare for App Store and Google Play submission."* ## Alternative: Native iOS with Swift For apps that need deep Apple ecosystem integration (HealthKit, ARKit, Watch connectivity), native Swift development is the way to go. *"Help me set up an iOS development environment with Xcode. Create a new SwiftUI project with a tab-based navigation structure."* Xcode is required and only runs on macOS. Make sure you have it installed from the Mac App Store before starting. Describe your screens, data models, and interactions. Workshop writes Swift/SwiftUI code and can help with Core Data, CloudKit, notifications, and other Apple frameworks. *"Create a SwiftUI app with a list view of items from Core Data, a detail view with editing, and iCloud sync."* *"Help me prepare my iOS app for App Store submission — code signing, app icons, screenshots, and review guidelines."* ## Alternative: Native Android with Kotlin For apps that need deep Android platform features (widgets, background services, Wear OS), native Kotlin is the best choice. *"Help me configure Android Studio and create a new Kotlin project with Jetpack Compose, navigation, and Material Design 3."* Workshop writes Kotlin code with Jetpack Compose and can help with Room database, WorkManager, Firebase integration, and other Android frameworks. *"Build an Android app with a Compose UI showing a list from Room database, with search, swipe-to-delete, and a floating action button to add items."* *"Help me prepare my Android app for Google Play — generate signed APK, create store listing assets, and configure the release track."* ## Tips and best practices Expo handles the build system, native module linking, and over-the-air updates. It covers the vast majority of mobile app use cases. Only go native if you need a specific platform API that Expo doesn't support. Mobile development environments are notoriously tricky to configure. Give Workshop the full setup task — it will handle dependency installation, SDK configuration, and emulator setup, resolving errors along the way. Simulators are great for rapid iteration, but real-device testing catches performance issues, gesture behavior, and hardware-specific bugs that simulators miss. Ask Workshop to help you set up device testing. Say *"Build a settings screen with toggles for notifications, dark mode, and data sync, plus an account section with profile photo, name, and logout button"* rather than specifying components. Workshop knows which UI primitives to use for each platform. Mobile apps have complex state. Before adding a major feature or refactoring navigation, ask Workshop to create a checkpoint so you can roll back if needed. If your app includes AI features, you can develop and test against a local model running on your machine — zero API costs, fully private, no internet required. Switch to a managed AI connector when you're ready to ship. ## Next steps * [Workshop Desktop overview](/workshop-desktop/index) — Learn more about Desktop's capabilities * [File system and terminals](/workshop-desktop/file-system-and-terminals) — How Workshop Desktop interacts with your local environment * [Checkpoints](/workshop-desktop/checkpoints) — Save and restore project states * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop *** Build mobile apps with full terminal access and native toolchain support. # Build and Deploy Websites Source: https://docs.workshop.ai/build-guides/websites Build responsive, accessible websites from a description and publish them to a live URL — no templates, no page builders. ## What you'll build A fully responsive, production-ready website — deployed to a live URL with a custom domain — built entirely by describing what you want in natural language. ## Before you start Sign up at [app.workshop.ai](https://app.workshop.ai) (free tier available). Workshop Cloud is the fastest path for websites, but Workshop Desktop works too. Screenshots, URLs of sites you admire, brand colors, logos, and copy. The more context you give Workshop, the better the result. ## Step-by-step flow Start a new conversation and tell Workshop what you want. Be specific about the type of site, its sections, and the audience. **Example prompts:** * *"Build a SaaS landing page with a hero section, feature grid, pricing table with monthly/annual toggle, testimonials, and an email waitlist form."* * *"Create a portfolio site with a filterable project gallery, about page, blog with markdown support, and a contact form. Use a minimal, modern design."* * *"Build a restaurant website with a browseable food menu organized by category, reservation booking form, photo gallery, and location map."* Review the live preview and refine. You can ask Workshop to change specific sections without rebuilding the whole site. * *"Make the hero section taller with more whitespace."* * *"Change the color scheme to navy and gold."* * *"Add a dark mode toggle."* * *"Make the pricing cards stack vertically on mobile."* Go beyond static pages. Workshop can wire up forms, animations, and third-party services. * *"Connect the contact form to send emails via a backend endpoint."* * *"Add smooth scroll animations when sections come into view."* * *"Add a blog section that loads posts from markdown files."* When you're happy with the result, click **Publish**. Workshop handles hosting and compute — you get a shareable URL immediately. You can make the site public or limit access to specific people or teams. Custom domains are available in settings. ## Tips and best practices Tell Workshop about sites you like: *"I want the layout to feel like Linear's homepage — clean, lots of whitespace, monospace accents."* References give Workshop a strong design direction. Don't try to perfect the whole site in one prompt. Get the overall structure right first, then refine individual sections. This gives you more control and better results. Ask Workshop to show you the mobile view: *"Show me how this looks on a phone."* Catching layout issues early is much easier than fixing them at the end. Workshop can generate placeholder text, but your site will be much stronger if you provide real headlines, descriptions, and CTAs. Paste your copy directly into the chat. Ask Workshop to follow accessibility best practices: *"Make sure all images have alt text, use semantic HTML, and ensure the contrast ratio meets WCAG AA."* ## Next steps * [Publishing and custom domains](/workshop-cloud/publishing) — Learn how to deploy and connect your domain * [Sharing and teams](/workshop-cloud/sharing-and-teams) — Control who can access your site * [Connectors](/connectors) — Connect databases, APIs, and more * [Working with the Agent](/core-concepts/working-with-the-agent) — Prompting tips and communicating with Workshop * [Checkpoints](/workshop-desktop/checkpoints) — Save and restore versions of your project (Workshop Desktop only) *** Describe the website you want and watch it come to life. # Anthropic (BYOK) Source: https://docs.workshop.ai/connectors/anthropic Connect your own Anthropic API key to Workshop for direct Claude model access. ## Overview The Anthropic BYOK connector lets you use your own Anthropic API key with Workshop. Usage is billed directly to your Anthropic account. **Published apps use your API key.** If you publish a Workshop app that uses this connector, visitors make requests using your key. You will be billed by Anthropic for all usage. **Don't have an API key?** The [managed Anthropic connector](/connectors/managed-ai-connectors) is enabled by default — no API key needed, usage billed to your Workshop credits. ## What You'll Need | Credential | Description | Format | | - | - | - | | **API Key** | Anthropic API authentication key | `sk-ant-...` | ## Getting an API Key Go to [console.anthropic.com](https://console.anthropic.com) and sign up or sign in. Navigate to **Settings > Billing**, add a payment method, and purchase credits. The minimum purchase is \$5, which places you in Tier 1. Go to **Settings > API Keys** and click **Create Key**. Give it a descriptive name (e.g., "Workshop Access"). Optionally assign it to a workspace. Copy your API key immediately. Anthropic only shows the key once — if you lose it, you'll need to generate a new one. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **Anthropic (your API key)** card. Enter a **Connection Name** (e.g., "My Anthropic API") and paste your **API Key**. Click **Add Connection**. Your Anthropic API is now connected and available across all conversations. ## Verifying Your Connection Ask Workshop: ``` Use my Anthropic connection to summarize the key points of this text: [paste any text] ``` If Workshop returns a Claude-generated summary, your connection is working. ## Security Best Practices * Your API key is stored in Workshop's encrypted storage — never shared with the AI agent directly * Rotate keys periodically in the [Anthropic console](https://console.anthropic.com) * Use Anthropic workspaces to organize keys by project or environment * If you suspect a key is compromised, delete it immediately in the Anthropic console and create a new one, then update your Workshop connection ## Troubleshooting | Issue | Solution | | - | - | | "Invalid API Key" | Re-enter the key from your Anthropic console. Ensure no extra spaces. | | "Insufficient credits" | Add more credits in Anthropic billing settings. | | "Rate limit exceeded" | Wait and retry. Check your usage tier in the Anthropic console. | ## Learn More * [Anthropic Console](https://console.anthropic.com) * [Anthropic API Documentation](https://docs.anthropic.com) * [Rate Limits and Pricing](https://docs.anthropic.com/en/api/rate-limits) # AWS S3 Source: https://docs.workshop.ai/connectors/aws-s3 Connect your Amazon S3 buckets to Workshop for cloud storage access. ## Overview Amazon Simple Storage Service (S3) is a cloud object storage service for storing and retrieving any amount of data. Once connected, Workshop can help you explore buckets, list objects, and work with your S3 data through natural conversation. ## What You'll Need | Credential | Description | Example | | - | - | - | | **Access Key ID** | AWS access key identifier | `AKIAIOSFODNN7EXAMPLE` | | **Secret Access Key** | AWS secret access key | `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` | | **Default Region** | AWS region for your buckets | `us-east-1` | ## Creating AWS Credentials Log in to the [AWS Management Console](https://console.aws.amazon.com/) and navigate to **IAM** (Identity and Access Management). Go to **Users** in the sidebar. Either select an existing user or click **Create user** to create one specifically for Workshop. Attach the **AmazonS3ReadOnlyAccess** managed policy for read-only access. For access to specific buckets only, create a custom IAM policy. Select your user, go to the **Security credentials** tab, click **Create access key**, and select **Application running outside AWS**. Copy both the **Access Key ID** and **Secret Access Key** immediately. The secret is only shown once. For security, create a dedicated IAM user for Workshop with only the permissions needed to access your S3 buckets. Avoid using root account credentials. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **AWS S3** card. Enter a **Connection Name** (e.g., "Production S3"), your **Access Key ID**, **Secret Access Key**, and **Default Region**. Click **Add Connection**. ## Verifying Your Connection Ask Workshop: ``` List all buckets in my S3 connection ``` If Workshop returns your bucket list, the connection is working. ## Using Your Connection ``` Show me all objects in my "data-exports" bucket ``` ``` What files were uploaded to my S3 bucket in the last 7 days? ``` ``` List all CSV files in the "reports" folder of my analytics bucket ``` ``` What's the total size of objects in my backup bucket? ``` ## Security Best Practices * **Least privilege:** Use `AmazonS3ReadOnlyAccess` for read-only operations. For specific buckets, create a custom policy. * **Dedicated users:** Create a dedicated IAM user for Workshop. Never use root credentials. * **Key rotation:** Rotate access keys regularly. Create a new key, update Workshop, then delete the old key. * **Never share keys:** Don't commit credentials to version control or share them publicly. If you suspect your access key has been compromised, immediately deactivate it in the IAM console and create a new one. ## Troubleshooting | Issue | Solution | | - | - | | Invalid access key | Verify the Access Key ID was copied correctly. Check it's active in IAM (not deactivated). | | Access denied | Verify the IAM user has S3 permissions. Check bucket policies. Ensure the correct region is specified. | | Bucket not found | Verify the bucket name (case-sensitive). Ensure it exists in the specified region. | ## Learn More * [AWS S3 Documentation](https://docs.aws.amazon.com/s3/) * [IAM Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) * [S3 Security Best Practices](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) # Data Warehouse Connectors Source: https://docs.workshop.ai/connectors/data-warehouses Connect BigQuery, Snowflake, and Tableau to Workshop for enterprise analytics. ## Overview Workshop supports three data warehouse and business intelligence connectors for enterprise-scale analytics: | Platform | Authentication | Best For | | - | - | - | | [BigQuery](#bigquery) | GCP Service Account JSON | Petabyte-scale analytics on Google Cloud | | [Snowflake](#snowflake) | Account + User/Password | Cloud data warehousing with separated storage and compute | | [Tableau](#tableau) | Personal Access Token | Business intelligence dashboards and data visualization | ## General Setup All data warehouse connectors follow the same workflow: Open the **Workshop Hub** from the sidebar and click the **Connectors** tab. Find and click the card for your data warehouse. Fill in the connection fields described for your platform below. Give your connection a memorable name and click **Add Connection**. *** ## BigQuery BigQuery is Google Cloud's serverless data warehouse. Workshop connects via a GCP service account with read-only access. ### What You'll Need | Credential | Description | | - | - | | **Service Account JSON** | A JSON key file from Google Cloud Platform | ### Setting Up Access Go to the [Google Cloud Console](https://console.cloud.google.com) and create or select a project with BigQuery data. Go to **APIs & Services > Library**, search for **"BigQuery API"**, and enable it (most projects have it enabled by default). Go to **IAM & Admin > Service Accounts**, click **Create Service Account**, and enter a name (e.g., "Workshop BigQuery Access"). Add two roles: * **BigQuery Data Viewer** — read access to tables and views * **BigQuery Job User** — permission to run queries Click **Continue**, then **Done**. Click on the service account, go to the **Keys** tab, click **Add Key > Create new key**, select **JSON**, and click **Create**. The file downloads automatically. ### Connecting to Workshop 1. Click the **BigQuery** card in the Connectors tab 2. Enter a **Connection Name** (e.g., "Analytics Warehouse") 3. Open the JSON key file in a text editor, copy the entire contents, and paste into the **Service Account JSON** field 4. Click **Add Connection** ### Limiting Access to Specific Datasets For finer control, grant permissions at the dataset level instead of the project level: 1. Go to **BigQuery** in the Cloud Console 2. Click on a dataset, then **Sharing > Permissions** 3. Add the service account email with the **BigQuery Data Viewer** role ### Troubleshooting | Issue | Solution | | - | - | | "Permission denied" | Verify both **BigQuery Data Viewer** and **BigQuery Job User** roles are assigned. | | "Invalid JSON" | Ensure you copied the entire JSON file contents without extra characters. | | "Project not found" | Confirm the project ID in the JSON matches an existing project with BigQuery API enabled. | | Can't see datasets | Grant BigQuery Data Viewer on specific datasets if using dataset-level permissions. | Keep your service account key file secure. Don't share it or commit it to version control. If compromised, delete the key in the Cloud Console and create a new one. **Learn more:** [BigQuery Documentation](https://cloud.google.com/bigquery/docs) | [BigQuery IAM Roles](https://cloud.google.com/bigquery/docs/access-control) ## Snowflake Snowflake is a cloud data warehouse with separated storage and compute. Workshop connects using your account identifier and user credentials. ### What You'll Need | Field | Required | Description | Example | | - | - | - | - | | Account | Yes | Account identifier | `xy12345.us-east-1` | | User | Yes | Snowflake username | `WORKSHOP_USER` | | Password | Yes | Snowflake password | — | | Role | No | Snowflake role | `ANALYST` | | Warehouse | No | Compute warehouse | `COMPUTE_WH` | | Database | No | Default database | `ANALYTICS` | | Schema | No | Default schema | `PUBLIC` | Role, warehouse, database, and schema are optional. If omitted, Snowflake uses the defaults configured for your user. ### Finding Your Account Identifier Your account identifier comes from your Snowflake URL: * If your URL is `https://xy12345.us-east-1.snowflakecomputing.com`, the identifier is `xy12345.us-east-1` * For `app.snowflakecomputing.com` URLs, go to **Settings > Accounts**, click `...` next to your account, and select **Manage URLs** to find the full URL ### Read-Only Role Setup ```sql theme={null} CREATE ROLE WORKSHOP_READER; GRANT USAGE ON DATABASE ANALYTICS TO ROLE WORKSHOP_READER; GRANT USAGE ON SCHEMA ANALYTICS.PUBLIC TO ROLE WORKSHOP_READER; GRANT SELECT ON ALL TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE WORKSHOP_READER; ``` ### Warehouse Cost Considerations Warehouses incur costs when running. For Workshop: * Use a smaller warehouse (X-SMALL) for most queries * Enable auto-suspend to pause the warehouse after inactivity * Monitor query costs through Snowflake's usage dashboard ### Troubleshooting | Issue | Solution | | - | - | | Invalid account identifier | Verify the format matches your Snowflake URL. Include the region identifier. | | Authentication failed | Check username/password. Verify user is not locked. Check if MFA is blocking access. | | Warehouse not found | Verify warehouse name. Check the role has USAGE permission on the warehouse. | | Access denied | Ensure the role has USAGE on the database/schema and SELECT on tables. | Create a dedicated service account for Workshop rather than using personal credentials. If MFA is required, you may need a service account without MFA for programmatic access. **Learn more:** [Snowflake Documentation](https://docs.snowflake.com/) | [Access Control](https://docs.snowflake.com/en/user-guide/security-access-control-overview) ## Tableau Tableau is a business intelligence platform for interactive dashboards and reports. Workshop connects using a Personal Access Token. ### What You'll Need | Field | Description | Example | | - | - | - | | Token Name | Name of your Personal Access Token | `workshop-integration` | | Token Secret | Secret value of the token | `dGhpcyBpcyBhIHNlY3JldA==...` | | Server URL | Tableau Server or Online URL | `https://10ax.online.tableau.com/` | | Site ID | Your Tableau site identifier | `mycompanysite` | The **Site ID** is found in your Tableau URL. For example, in `https://10ax.online.tableau.com/#/site/mycompanysite/home`, the Site ID is `mycompanysite`. ### Creating a Personal Access Token Log in to Tableau Server or Online. Click your profile icon and select **My Account Settings**. Scroll to **Personal Access Tokens**, enter a descriptive name (e.g., `workshop-integration`), and click **Create new token**. Copy both the **Token Name** and **Token Secret** immediately. The secret is only shown once. ### Token Expiration Personal Access Tokens expire if not used for **15 consecutive days**. You must use the token at least once every 15 days to keep it active. If it expires, create a new token and update your Workshop connection. ### Token Permissions Tokens inherit the permissions of your Tableau user account. For limited access, consider creating a dedicated Tableau user with restricted permissions. ### Example Queries ``` List all workbooks in my Tableau connection ``` ``` What data sources are available in my Tableau site? ``` ``` Show me the views in the "Sales Dashboard" workbook ``` ### Troubleshooting | Issue | Solution | | - | - | | Invalid token | Verify Token Name and Token Secret were copied correctly. | | Token expired | Create a new token if unused for 15+ days. | | Site not found | Verify Site ID matches the URL path. For the Default site, try empty or `default`. | | Server connection failed | Verify the Server URL includes `https://` and is accessible externally. | **Learn more:** [Tableau Personal Access Tokens](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm) | [Tableau REST API](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm) ## Verifying Any Data Warehouse Connection After connecting, ask Workshop: ``` What datasets are available in my data warehouse? ``` ``` Show me the schema of my analytics database ``` ``` List all tables I have access to ``` If Workshop returns your data, the connection is working. # Database Connectors Source: https://docs.workshop.ai/connectors/databases Connect PostgreSQL, MySQL, SQL Server, MongoDB, Supabase, Neon, TiDB, and TigerGraph databases to Workshop. ## Overview Workshop supports eight database connectors covering relational, document, distributed, and graph databases. Once connected, Workshop can query your databases, explore schemas, and help you analyze data through natural conversation. | Database | Type | Default Port | Required Fields | | - | - | - | - | | [PostgreSQL](#postgresql) | Relational | 5432 | Host, Port, Database, Username, Password | | [MySQL](#mysql) | Relational | 3306 | Host, Port, Database, Username, Password | | [Microsoft SQL Server](#microsoft-sql-server) | Relational | 1433 | Server, Database, Username, Password | | [MongoDB](#mongodb) | Document (NoSQL) | 27017 | Host, Port, Username, Password | | [Supabase](#supabase) | PostgreSQL backend | — | API URL, API Key | | [Neon](#neon) | Serverless PostgreSQL | — | Connection URL | | [TiDB](#tidb) | Distributed SQL | 4000 | Host, Port, Database, Username, Password | | [TigerGraph](#tigergraph) | Graph | — | Host URL, Username, Password, Graph Name | ## General Setup All database connectors follow the same workflow: Open the **Workshop Hub** from the sidebar and click the **Connectors** tab. Find and click the card for your database type. Fill in the connection fields described for your database below. Give your connection a memorable name and click **Add Connection**. ## General Security Recommendations These apply to all database connectors: * **Create a dedicated read-only user** for Workshop — avoid admin or superuser accounts * **Use SSL/TLS connections** when available (most cloud providers enable this by default) * **Restrict network access** via firewalls, IP allowlists, or VPC/private networking * **Rotate credentials** periodically and update your Workshop connection when you do Never use superuser or admin accounts (`postgres`, `root`, `sa`, etc.) for Workshop connections. Always follow the principle of least privilege. *** ## PostgreSQL PostgreSQL is a powerful, open-source relational database. Workshop connects using standard host-based credentials. If you're using **Neon** (serverless PostgreSQL) or **Supabase**, use their dedicated connectors for a simpler setup. ### Required Fields | Field | Description | Example | | - | - | - | | Host | Server hostname or IP | `postgres.example.com` | | Port | Server port | `5432` | | Database | Database name | `myapp_production` | | Username | PostgreSQL user | `app_user` | | Password | User password | — | ### Finding Credentials by Provider * **Amazon RDS:** Endpoint and Port in the Connectivity section of your instance * **Google Cloud SQL:** Public/Private IP in the instance overview * **Azure Database:** Server name in the Overview page * **Self-hosted:** Contact your database administrator ### Read-Only User Setup ```sql theme={null} CREATE USER workshop_reader WITH PASSWORD 'YourSecurePassword'; GRANT CONNECT ON DATABASE your_database TO workshop_reader; GRANT USAGE ON SCHEMA public TO workshop_reader; GRANT SELECT ON ALL TABLES IN SCHEMA public TO workshop_reader; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO workshop_reader; ``` ### Troubleshooting | Issue | Solution | | - | - | | Connection refused | Verify host/port. Check `listen_addresses` and `pg_hba.conf`. Verify firewall rules. | | Authentication failed | Check username/password. Verify `pg_hba.conf` auth method (`md5` or `scram-sha-256`). | | Database does not exist | Verify exact database name (case-sensitive). Run `\l` in psql to list databases. | | SSL required | Ensure `sslmode=require` is used. Most cloud providers require SSL by default. | **Learn more:** [PostgreSQL Documentation](https://www.postgresql.org/docs/) ## MySQL MySQL is one of the world's most popular open-source relational databases. Workshop connects using standard host-based credentials. ### Required Fields | Field | Description | Example | | - | - | - | | Host | Server hostname or IP | `mysql.example.com` | | Port | Server port | `3306` | | Database | Database name | `myapp_production` | | Username | MySQL user | `app_user` | | Password | User password | — | ### Finding Credentials by Provider * **Amazon RDS:** Endpoint and Port in the Connectivity section * **Google Cloud SQL:** IP address in the instance overview * **PlanetScale / other managed:** Check provider dashboard for connection details ### Read-Only User Setup ```sql theme={null} CREATE USER 'workshop_reader'@'%' IDENTIFIED BY 'YourSecurePassword'; GRANT SELECT ON your_database.* TO 'workshop_reader'@'%'; FLUSH PRIVILEGES; ``` ### Troubleshooting | Issue | Solution | | - | - | | Connection refused | Verify host/port. Check `bind-address` in my.cnf. Verify firewall rules on port 3306. | | Access denied | Check username/password. Verify user host part (`'user'@'%'` vs `'user'@'localhost'`). | | Unknown database | Verify database name spelling and that the user has access. | **Learn more:** [MySQL Documentation](https://dev.mysql.com/doc/) ## Microsoft SQL Server SQL Server is Microsoft's enterprise relational database. Workshop connects using SQL Authentication (username/password). Windows Authentication is not supported through Workshop. Use SQL Authentication mode. ### Required Fields | Field | Description | Example | | - | - | - | | Server | Hostname or IP | `myserver.database.windows.net` | | Database | Database name | `SalesDB` | | Username | SQL login | `app_user` | | Password | SQL password | — | ### Finding Credentials by Provider * **Azure SQL Database:** Server name in the Overview section of the Azure Portal * **On-premises:** Contact your database administrator ### Read-Only User Setup ```sql theme={null} CREATE LOGIN workshop_reader WITH PASSWORD = 'YourSecurePassword'; USE YourDatabase; CREATE USER workshop_reader FOR LOGIN workshop_reader; ALTER ROLE db_datareader ADD MEMBER workshop_reader; ``` ### Troubleshooting | Issue | Solution | | - | - | | Connection refused | Verify server address. Check firewall rules on port 1433. For Azure, verify IP is allowed. | | Login failed | Check credentials. Ensure SQL Authentication is enabled (mixed mode). | | Database not found | Verify database name (case-sensitive on some configs). Check user permissions. | **Learn more:** [SQL Server Documentation](https://docs.microsoft.com/en-us/sql/sql-server/) ## MongoDB MongoDB is a NoSQL document database that stores data in flexible, JSON-like documents. ### Required Fields | Field | Description | Example | | - | - | - | | Host | Server hostname | `cluster0.abc123.mongodb.net` | | Port | Server port | `27017` | | Username | Database user | `app_user` | | Password | User password | — | For MongoDB Atlas (cloud), the host is your cluster address. The default port is typically handled automatically. ### Finding Credentials (Atlas) 1. Log in to [MongoDB Atlas](https://cloud.mongodb.com/) 2. Navigate to your cluster and click **Connect > Connect your application** 3. Use the cluster address as the host and credentials from the **Database Access** section ### Read-Only User Setup ```javascript theme={null} use admin db.createUser({ user: "workshop_reader", pwd: "YourSecurePassword", roles: [ { role: "read", db: "yourDatabase" } ] }) ``` ### Troubleshooting | Issue | Solution | | - | - | | Connection refused | Verify host/port. For Atlas, ensure your IP is in the **Network Access** allowlist. | | Authentication failed | Check username/password. Ensure user is in the correct auth database (`admin`). | | No collections found | Verify the user has read permissions. Check you're connecting to the correct database. | **Learn more:** [MongoDB Documentation](https://docs.mongodb.com/) ## Supabase Supabase is an open-source PostgreSQL backend with authentication, storage, and real-time capabilities. Workshop connects via the Supabase API. ### Required Fields | Field | Description | Example | | - | - | - | | API URL | Your project's API URL | `https://abcdefgh.supabase.co` | | API Key | Your project's anon or service role key | `eyJhbGciOiJIUzI1NiIs...` (JWT) | ### Finding Credentials 1. Go to [supabase.com](https://supabase.com) and open your project 2. Click **Settings > API** for the project URL and API keys **Which key?** The **anon (public) key** respects Row Level Security (RLS). The **service role key** bypasses RLS and gives full database access. Use the service role key only when you need to bypass RLS. ### Troubleshooting | Issue | Solution | | - | - | | "Invalid API key" | Verify the key and ensure it's from the correct project. | | "Connection refused" | Confirm the project is active (free-tier projects pause after 7 days of inactivity). | | Can't see tables | If using the anon key, check RLS policies. Try the service role key to verify tables exist. | **Learn more:** [Supabase Documentation](https://supabase.com/docs) ## Neon Neon provides serverless PostgreSQL with on-demand scaling and instant database branching. Workshop connects via a PostgreSQL connection string. ### Required Fields | Field | Description | Example | | - | - | - | | Connection URL | Full PostgreSQL connection string | `postgresql://user:pass@ep-cool-darkness-123456.us-east-2.aws.neon.tech/neondb?sslmode=require` | ### Finding Your Connection String 1. Go to [console.neon.tech](https://console.neon.tech) and select your project 2. Click the **Connect** button 3. Select your Branch, Database, and Role 4. Copy the connection string **Default database:** New Neon projects create a database called `neondb` with a role called `neondb_owner`. **Pooled vs. Direct:** Pooled connections (hostname includes `-pooler`) support up to 10,000 connections and work well for most Workshop use cases. ### Troubleshooting | Issue | Solution | | - | - | | "Connection refused" | Verify the connection string is complete. Check the project is active. Ensure `sslmode=require`. | | Slow initial queries | Normal if the compute has scaled to zero. First query triggers a cold start. | | "Authentication failed" | Verify username/password in the connection string. Try regenerating the password in the Neon console. | **Learn more:** [Neon Documentation](https://neon.tech/docs) ## TiDB TiDB is an open-source, MySQL-compatible distributed SQL database designed for HTAP workloads. TiDB uses port **4000** by default, not 3306 like standard MySQL. ### Required Fields | Field | Description | Example | | - | - | - | | Host | Cluster hostname | `gateway01.us-east-1.prod.aws.tidbcloud.com` | | Port | Server port | `4000` | | Database | Database name | `myapp` | | Username | TiDB user | `app_user` | | Password | User password | — | ### Finding Credentials (TiDB Cloud) 1. Log in to [TiDB Cloud](https://tidbcloud.com/) and navigate to your cluster 2. Click **Connect** and choose **General** connection type 3. Copy the Host and Port from the connection string ### Read-Only User Setup ```sql theme={null} CREATE USER 'workshop_reader'@'%' IDENTIFIED BY 'YourSecurePassword'; GRANT SELECT ON your_database.* TO 'workshop_reader'@'%'; FLUSH PRIVILEGES; ``` ### Troubleshooting | Issue | Solution | | - | - | | Connection refused | Verify host/port. Remember TiDB uses port **4000**. For TiDB Cloud, check IP allowlist. | | Authentication failed | Check credentials. Verify user exists and has the correct password. | | Slow first query | TiDB Cloud Serverless may have cold start latency. Subsequent queries will be faster. | **Learn more:** [TiDB Documentation](https://docs.pingcap.com/tidb/stable) ## TigerGraph TigerGraph is a native parallel graph database for advanced analytics and machine learning on connected data. ### Required Fields | Field | Description | Example | | - | - | - | | Host | Server or Cloud URL | `https://myinstance.i.tgcloud.io/` | | Username | TigerGraph user | `tigergraph` | | Password | User password | — | | Graph Name | Graph to connect to | `MyGraph` | ### Finding Credentials (TigerGraph Cloud) 1. Log in to [TigerGraph Cloud](https://tgcloud.io/) and select your instance 2. Copy the instance URL from the dashboard 3. Open GraphStudio to find available graph names in the top-left dropdown 4. Use the credentials set during instance creation ### Troubleshooting | Issue | Solution | | - | - | | Connection failed | Verify Host URL includes `https://`. Ensure the instance is running. | | Authentication failed | Check username/password. Verify the user has access to the specified graph. | | Graph not found | Verify graph name (case-sensitive). Check user permissions for the graph. | | Timeout | Large graph traversals take time. Add limits to queries or check instance resources. | **Learn more:** [TigerGraph Documentation](https://docs.tigergraph.com/) ## Verifying Any Database Connection After connecting, ask Workshop: ``` Show me all tables in my database ``` ``` What columns are in the users table? ``` ``` How many rows are in each table? ``` If Workshop returns your data, the connection is working. # Google Gemini (BYOK) Source: https://docs.workshop.ai/connectors/gemini Connect your own Google API key to Workshop for direct Gemini model access. ## Overview The Gemini BYOK connector lets you use your own Google API key with Workshop. Usage is billed directly by Google. **Published apps use your API key.** If you publish a Workshop app that uses this connector, visitors make requests using your key. You will be billed by Google for all usage. **Don't have an API key?** The [managed Gemini connector](/connectors/managed-ai-connectors) is enabled by default — no API key needed, usage billed to your Workshop credits. ## What You'll Need | Credential | Description | Format | | - | - | - | | **Google API Key** | API key for Google Gemini access | `AIza...` | ## Getting an API Key Go to [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) and sign in with your Google account. Click **Create API key**. Select an existing Google Cloud project or create a new one. Copy your API key immediately. It starts with `AIza` followed by a string of characters. While you can view keys again in Google AI Studio, store it securely right away. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **Gemini (your API key)** card. Enter a **Connection Name** (e.g., "My Gemini API") and paste your **Google API Key**. Click **Add Connection**. Your Gemini connection is now active and available across all conversations. ## Verifying Your Connection Ask Workshop: ``` Use Gemini to explain the concept of machine learning in simple terms ``` If Workshop returns a Gemini-generated response, your connection is working. ## Security Best Practices * Your API key is stored in Workshop's encrypted storage — never shared with the AI agent directly * Restrict your key in the [Google Cloud Console](https://console.cloud.google.com/apis/credentials): limit it to only the Generative Language API and add IP or referrer restrictions if needed * If you suspect a key is compromised, delete it in [Google AI Studio](https://aistudio.google.com/app/apikey) and create a new one **Free tier data usage:** Content processed through the free tier may be used by Google to improve their products. If you're working with sensitive data, consider using a paid tier. ## Troubleshooting | Issue | Solution | | - | - | | "API key not valid" | Verify the full key was copied and starts with `AIza`. Check it hasn't been deleted. | | "Permission denied" | Check API restrictions in Google Cloud Console. Ensure the Generative Language API is enabled. | | "Quota exceeded" | Wait for limits to reset or upgrade your tier. Monitor usage in the Cloud Console. | ## Learn More * [Google AI Studio](https://aistudio.google.com/) * [Gemini API Documentation](https://ai.google.dev/docs) * [API Key Best Practices](https://ai.google.dev/gemini-api/docs/api-key) * [Pricing and Rate Limits](https://ai.google.dev/pricing) # GitHub Source: https://docs.workshop.ai/connectors/github Connect your GitHub account to Workshop for repository access and API operations. ## Overview The GitHub connector lets you link your GitHub account to Workshop using a Personal Access Token. Once connected, you can access repositories, analyze code, clone repos, and perform API operations through natural conversation. **This is different from GitHub Integration.** The GitHub *connector* gives the Workshop agent API access to your repositories and issues via a Personal Access Token. [GitHub Integration](/workshop-cloud/github-integration) is the app-level feature for push/pull syncing between your Workshop project and a GitHub repo — it uses a GitHub App OAuth flow, not a PAT. ## What You'll Need | Credential | Description | Format | | - | - | - | | **Personal Access Token** | Fine-grained or classic GitHub token | `ghp_...` (classic) or `github_pat_...` (fine-grained) | ## Creating a Personal Access Token Sign in to [github.com](https://github.com), click your profile photo, and select **Settings**. Scroll down the sidebar and click **Developer settings > Personal access tokens > Fine-grained tokens**. Click **Generate new token**. Enter a **Token name** (e.g., "Workshop Access"), set an **Expiration** date, and choose the **Resource owner** (your account or an organization). Under **Repository access**, select which repositories the token can access. Under **Permissions**, grant the access you need: * **Contents:** Read (to view files) * **Metadata:** Read (required for all tokens) * **Issues:** Read and write (if you want Workshop to create/manage issues) * **Pull requests:** Read and write (if you want Workshop to create PRs) Click **Generate token** and copy it immediately. GitHub only shows the token once. **Organization tokens may require approval.** If you select an organization as the resource owner, the organization may need to approve the token before it becomes active. Check with your organization administrator if the token isn't working. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **GitHub** card. Enter a **Connection Name** (e.g., "My GitHub Account") and paste your **Personal Access Token**. Click **Add Connection**. ## Using Your Connection Once connected, you can ask Workshop to work with your GitHub data: ``` Using my GitHub connection, list all my repositories ``` ``` Show me the README from my project-name repository ``` ``` What are the open issues in my app repository? ``` ``` Using my GitHub connection, clone my website repo and help me understand its structure ``` ## Security Best Practices * Use **fine-grained tokens** with the minimum permissions needed * Set an **expiration date** on all tokens * Create separate tokens for different integrations * If you suspect a token is compromised, revoke it immediately in **GitHub Settings > Developer settings > Personal access tokens** GitHub automatically scans for leaked tokens and may revoke them. Never commit tokens to version control or share them publicly. ## Troubleshooting | Issue | Solution | | - | - | | "Bad credentials" | Verify the token was copied correctly and hasn't expired or been revoked. | | "Not Found" for repos | Ensure the token has access to the target repository. | | Rate limiting | GitHub limits API requests to 5,000/hour for authenticated users. Wait for the limit to reset. | ## Learn More * [GitHub Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) * [Fine-grained Token Permissions](https://docs.github.com/en/rest/overview/permissions-required-for-fine-grained-personal-access-tokens) # Google Drive Source: https://docs.workshop.ai/connectors/google-drive Browse and access your Google Drive files directly within Workshop conversations. ## Overview The Google Drive connector uses OAuth to link your Google account to Workshop. Once connected, you can browse your Drive files from within conversations using the **@** mention popup — no API keys or service accounts required. This connector is ideal for: * Accessing documents stored in Drive without downloading them first * Referencing Google Docs, Sheets, and Slides in conversations * Working with files across personal and shared drives ## What You'll Need | Credential | Description | | - | - | | **Google Account** | Your Google account with access to the Drive files you want to use | **No API keys or service accounts required.** Google Drive uses OAuth — you sign in with your Google account and authorize Workshop to access your files. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **Google Drive** card. Click **Connect with Google**, sign in to your Google account, review the permissions, and click **Allow**. Give your connection a memorable name (e.g., "My Drive" or "Work Drive") and click **Add Connection**. **Published apps use your credentials.** When you publish an app that uses your Google Drive connection, it accesses files using your authorization. Be mindful of what files you reference in publicly shared apps. ## Using Your Connection ### Browsing Files with @ Mentions The primary way to use Google Drive is through the **@** popup: 1. Type **@** in the message input 2. Select your Google Drive connection 3. Browse folders or search for files 4. Click a file to attach it to your message Workshop reads the file contents and includes them in the conversation context. ### Supported File Types | File Type | How Workshop Reads It | | - | - | | **Google Docs** | Extracted as plain text | | **Google Sheets** | Exported as CSV data | | **Google Slides** | Extracted as plain text | | **Regular files** (PDF, TXT, etc.) | Downloaded directly | Workshop requests access only to files you explicitly select or reference. Your entire Drive is not automatically indexed or accessed. ### Example Prompts ``` Summarize the key points from this document ``` ``` Extract all the action items from this meeting notes document ``` ``` Convert this spreadsheet data into a chart showing monthly trends ``` ## Security ### OAuth Permissions Workshop **can**: * View files you select or reference in conversations * Read file contents for files you explicitly attach Workshop **cannot**: * Modify or delete your files * Access files you don't explicitly select * Browse your Drive in the background ### Revoking Access **From Workshop:** Delete the connection in the Connectors tab. **From Google:** Go to [Google Account Security](https://myaccount.google.com/security), click **Third-party apps with account access**, find Workshop, and click **Remove Access**. ## Troubleshooting | Issue | Solution | | - | - | | "Authorization failed" | Try reconnecting. Ensure popups aren't blocked. | | Can't see files in @ popup | Verify the connection is listed in the Connectors tab. Try refreshing the page. | | "Access token expired" | Delete and reconnect your Google Drive. | | File content not loading | Very large files may take longer. Binary files (videos, executables) can't be read as text. | ## Learn More * [Google Drive Help Center](https://support.google.com/drive) * [Managing Third-Party App Access](https://support.google.com/accounts/answer/3466521) # Google Sheets Source: https://docs.workshop.ai/connectors/google-sheets Connect public or private Google Sheets to Workshop for spreadsheet data access. ## Overview Workshop supports two modes for connecting Google Sheets: | Mode | Authentication | Best For | | - | - | - | | **Public Sheet** | Sheet URL only | Non-sensitive data shared via "Anyone with the link" | | **Private Sheet** | GCP Service Account JSON | Confidential data restricted to specific accounts | Choose the tab below that matches your use case. ## Public Google Sheet Use this mode when your sheet is shared with **"Anyone with the link"** and contains non-sensitive data. No API keys or service accounts required — just the URL. ### What You'll Need | Credential | Description | | - | - | | **Spreadsheet URL** | The sharing link to your public Google Sheet | ### Making Your Sheet Public Navigate to your Google Sheet in the browser. Click the **Share** button in the top-right corner. Under **General access**, change from "Restricted" to **"Anyone with the link"**. Set permission to **Viewer**. Click **Done**. Copy the URL from your browser's address bar. It looks like: ``` https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit#gid=0 ``` ### Connecting to Workshop Open the **Workshop Hub** and click **Connectors**. Click the **Public Google Sheet** card. Enter a **Connection Name** (e.g., "Product Catalog") and paste your **Spreadsheet URL**. Click **Add Connection**. Workshop accepts URLs in any standard Google Sheets format (`/edit`, `/view`, or just the sheet ID path). ### Security Considerations When you make a sheet public, anyone with the URL can view all data in it. Treat the URL as a credential. Public sheets are appropriate for sample datasets, publicly available information, and shared reference materials. Avoid making sheets public if they contain personal information, financial data, or business-sensitive content. To revoke public access, change the sheet back to **Restricted** in sharing settings. ## Private Google Sheet Use this mode when your sheet is restricted to specific users and contains sensitive or confidential data. Requires a Google Cloud Platform (GCP) service account. **Requires a Google Cloud project.** Accessing private sheets requires a GCP service account, which involves creating a project and sharing your sheet with the service account email. If you prefer simpler setup, consider making your sheet public and using the Public mode instead. ### What You'll Need | Credential | Description | | - | - | | **Spreadsheet URL** | The full URL of your Google Sheet | | **Service Account JSON** | A JSON key file from Google Cloud Platform | ### Setting Up Access Go to the [Google Cloud Console](https://console.cloud.google.com). Click **Select a project > New Project**, enter a name (e.g., "Workshop Sheets Access"), and click **Create**. Go to **APIs & Services > Library**, search for **"Google Sheets API"**, and click **Enable**. Go to **IAM & Admin > Service Accounts**, click **Create Service Account**, enter a name (e.g., "Workshop Sheets Reader"), and click **Create and Continue**. Select the **Viewer** role, then click **Done**. Click on the service account, go to the **Keys** tab, click **Add Key > Create new key**, select **JSON**, and click **Create**. The file downloads automatically. Note the `client_email` field inside it. Open your Google Sheet, click **Share**, paste the service account's `client_email` (looks like `name@project.iam.gserviceaccount.com`), set permission to **Viewer**, uncheck "Notify people", and click **Share**. The `client_email` in your JSON file looks like: `your-service-account@your-project.iam.gserviceaccount.com`. You must share your sheet with this email for the connection to work. ### Connecting to Workshop Open the **Workshop Hub** and click **Connectors**. Click the **Private Google Sheet** card. Enter a **Connection Name**, paste the **Spreadsheet URL**, and paste the full contents of your **Service Account JSON** key file. Click **Add Connection**. ### Security Considerations * The service account only has access to sheets explicitly shared with it * Share with **Viewer** permission unless Workshop needs to write data * Once connected, you can delete the JSON key file from your downloads — Workshop stores credentials securely * To revoke access, remove the service account email from the sheet's sharing settings ## Using Your Connection Once connected (either mode), ask Workshop to work with your spreadsheet data: ``` Show me the first few rows from my spreadsheet ``` ``` Using my Google Sheet connection, create a summary of all entries in column A ``` ``` Create a chart from my Google Sheet data showing sales by month ``` ### Working with Multiple Tabs If your spreadsheet has multiple tabs, specify which one: ``` Show me data from the "Sales Q4" tab in my spreadsheet ``` By default, Workshop reads from the first sheet if no tab name is specified. Workshop works best with spreadsheets under 10,000 rows. For very large datasets, consider using a [database connector](/connectors/databases) or [BigQuery](/connectors/data-warehouses) instead. ## Troubleshooting | Issue | Solution | | - | - | | "Unable to access spreadsheet" (public) | Verify the sheet is set to "Anyone with the link". Try opening the URL in an incognito window. | | "Permission denied" (private) | Ensure the sheet is shared with the service account `client_email`. | | "Invalid JSON" (private) | Verify you copied the entire JSON file contents without extra characters. | | "Google Sheets API not enabled" (private) | Enable the Google Sheets API in your GCP project and wait a few minutes. | ## Learn More * [Google Sheets API Documentation](https://developers.google.com/sheets/api) * [Creating Service Accounts](https://cloud.google.com/iam/docs/service-accounts-create) * [Sharing Google Sheets](https://support.google.com/docs/answer/2494822) # Connectors Source: https://docs.workshop.ai/connectors/index Connect AI providers, databases, and external services to Workshop. ## What Are Connectors? Connectors link external services to Workshop. Once connected, Workshop can use AI models, query your databases, and access your files across all your conversations — no need to manually copy data or explain your setup each time. ## AI Providers Workshop includes three built-in AI providers — **Anthropic** (Claude), **OpenAI** (GPT), and **Google Gemini**. Enable them per project via **Add-Ons** in project settings or during project creation. When enabled, Workshop provisions a managed connector that handles API keys, authentication, and billing through your Workshop credits — no setup required. If you prefer to manage billing directly with a provider, BYOK (Bring Your Own Key) connectors are available for each. How managed connectors work, what each provider offers, and when to use BYOK instead. ### BYOK Setup Guides Use your own Claude API key Use your own GPT API key Use your own Gemini API key ### Decision Models Classify, route and score inputs with TypeSafe's decision model, billed to Workshop credits or your own OpenRouter or TypeSafe key. ## Database Providers Workshop can provision a managed **Neon** serverless Postgres database for your project. Enable it via **Add-Ons** in project settings or during project creation. Workshop handles provisioning, credentials, and cleanup automatically — including **Neon Auth**, a built-in authentication service that keeps your app's auth domains in sync as you publish and add custom domains. How managed databases work, what gets provisioned, and Neon Auth. If you already have your own Neon database (or another database), connect it manually: Connect PostgreSQL, MySQL, SQL Server, MongoDB, Supabase, Neon, TiDB, or TigerGraph with your own credentials. ## Data Connectors Connect Workshop to your databases, cloud storage, and productivity tools. You provide credentials once, and Workshop can access and query your data in any conversation. | Connector | Type | Authentication | | - | - | - | | [PostgreSQL, MySQL, SQL Server, MongoDB, Supabase, Neon, TiDB, TigerGraph](/connectors/databases) | Databases | Host + credentials or connection URL | | [BigQuery, Snowflake, Tableau](/connectors/data-warehouses) | Data warehouses | Service account or credentials | | [Google Sheets](/connectors/google-sheets) | Spreadsheets | URL (public) or Service Account (private) | | [Google Drive](/connectors/google-drive) | Cloud storage | OAuth | | [AWS S3](/connectors/aws-s3) | Cloud storage | Access Key + Secret | | [GitHub](/connectors/github) | Source control API | Personal Access Token | ## Custom Connector Use a Custom Connector for any API or service that doesn't have a built-in connector, such as your own or a partner's API. It keeps all the credentials for one service together under a single name, and each key/value pair becomes a secret the agent can use. Open the **Hub** from the sidebar, click the **Connectors** tab, and choose **Custom Connector**. Enter a **Connection Name**, for example `Inventory API`. This is the name you'll see in the @ mention popup. Enter each credential as a **Key** and **Value**, for example `API_KEY` and its value. Click **Add Field** for more, then click **Create Connection**. Mention the connector with **@** in a conversation and the agent will use its credentials to authenticate on your behalf. ## How Connectors Work When you add a data connector: 1. **Your credentials are stored securely** in Workshop's encrypted storage 2. **Workshop's agent receives a reference** to your connection, not the raw credentials 3. **Data stays in your source** — Workshop queries it on-demand rather than copying it You maintain full control over your data while giving Workshop the ability to help you work with it. ## Adding a Data Connector Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Select the connector type you want to add from the card list, or search by name. Fill in the required connection details for that connector. Click **Add Connection**. Workshop tests the connection and saves it. Once connected, reference your connection by name or type in any conversation: * *"Using my **Production Database** connection, show me all users who signed up last week"* * *"Query my **Supabase** data for the top 10 products by revenue"* ## Managing Connections Your active connections appear in the **Active Connections** table in the Connectors tab. From there you can: * View connection details and status * Edit connection credentials * Delete connections you no longer need Deleting a connection removes both the connector configuration and its stored credentials from Workshop. ## Security * **Credentials are encrypted** at rest and in transit * **Connections use SSL/TLS** for all data transmission * **Data is queried on demand** — Workshop queries your sources directly and does not store your data separately * **You control access** — delete connections anytime to revoke access Published apps use the same connector credentials you configure in development. Be mindful of which connectors you attach to apps you plan to publish. # Jev Source: https://docs.workshop.ai/connectors/jev Connect Jev, TypeSafe's decision model, to classify, route and score inputs in your Workshop apps. ## Overview [Jev](https://typesafe.ai) is a decision model by TypeSafe. It is not a chat model: instead of generating text, it answers typed questions about an input with calibrated probabilities, in well under a second. Use it in your apps for classification, routing, triage, moderation and scoring. The Jev connector works in one of three ways, depending on the API key you give it: | API key | Billing | | - | - | | **None** (leave the field empty) | Workshop credits | | **OpenRouter API key** (`sk-or-...`) | Billed by OpenRouter | | **TypeSafe API key** | Billed by TypeSafe | **Published apps use the connector's key.** If you publish a Workshop app that uses this connector, visitors make requests using it — billed to your Workshop credits, or to your OpenRouter or TypeSafe account. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **Jev** card. Enter a **Connection Name** (e.g., "My Jev"). Leave **API Key** empty to use Workshop credits, or paste an OpenRouter or TypeSafe API key. Click **Add Connection**. Your Jev connection is now active and available across all conversations. When you leave the key empty, Workshop creates a Workshop API key for the connection. Deleting the connection, or switching it to your own key, revokes that key. ## Verifying Your Connection Ask Workshop: ``` Build an app that uses Jev to flag incoming support emails as spam or not spam ``` If the app returns a spam probability for each email, your connection is working. ## How Jev Answers Each request sends an input (the `state`) and one or more named questions. There are three question types: | Type | Asks | Answer | | - | - | - | | `noul` | A yes-or-no question | The probability of yes | | `choice` | Which of several options fits | The chosen option, with a probability for each | | `score` | Where the input sits on an ordered scale | A score from 0 (the first level) to the last level's index, with a probability for each level | Workshop's agent knows how to write these requests; describe the decision you want in plain language. ## When Workshop Uses Jev When you ask for classification, routing, triage, moderation or scoring that needs no generated text, and don't name an AI provider, Workshop suggests the Jev connector instead of Gemini. Tasks that also generate text, such as drafting a reply to a classified ticket, still default to Gemini. Naming a provider (for example, "use OpenAI") overrides both. Jev runs in your app's backend, so it isn't available in **Static React App** projects. Use a template with a backend, such as **Dynamic React App**. ## Troubleshooting | Issue | Solution | | - | - | | "Invalid API key" | Check that the full key was copied. OpenRouter keys start with `sk-or-`. | | Requests fail with 402 | You are out of Workshop credits. Add credits, or switch the connector to your own key. | | Requests fail with 400 | A question is malformed; the error message names the field. All instructions and criteria must be strings. | ## Learn More * [TypeSafe](https://typesafe.ai) * [OpenRouter](https://openrouter.ai) # Managed AI Connectors Source: https://docs.workshop.ai/connectors/managed-ai-connectors Add AI capabilities to your Workshop apps — enabled by default, no API keys or setup required. ## How It Works Workshop includes managed connectors for **Anthropic** (Claude), **OpenAI** (GPT), and **Google Gemini**. Enable them per project via the **Add-Ons** panel in project settings, or during project creation — some templates (Dynamic React App, Static React App, Dynamic HTML App) auto-enable Gemini by default. No accounts to create, no API keys to manage, no setup steps. Usage is billed to your Workshop credits. You reference a connector via the **@** mention selector or the **Add Functionality** button in your conversation, and Workshop handles authentication, rate limits, and billing behind the scenes. Managed AI connectors add AI features **to the apps you build**. They are separate from the model that powers the Workshop agent (which you select in [Settings](/core-concepts/settings)). ## What Each Provider Offers All three providers are available simultaneously. You can use multiple providers in the same app. Strong at careful reasoning, long-form writing, and nuanced instruction following. **Capabilities:** Extended thinking, PDF and image analysis, structured JSON output, tool use. Workshop provides access to the latest Claude models, from fast and cost-effective to most capable. [Anthropic Models Documentation →](https://docs.anthropic.com/en/docs/about-claude/models) Broad general-purpose capabilities including image generation and function calling. **Capabilities:** Image generation (DALL-E), JSON mode, function calling, embeddings. Workshop provides access to the latest GPT models across the efficiency-to-capability spectrum. [OpenAI API Documentation →](https://platform.openai.com/docs) Excellent at multimodal tasks, very long context windows, and grounded responses. **Capabilities:** Image generation, video understanding, very long context, grounding. Workshop provides access to the latest Gemini models, including Flash (fast) and Pro (capable) variants. [Google Gemini API Documentation →](https://ai.google.dev/docs) ## Using AI Connectors in Your Apps Reference a connector in your conversation and Workshop handles the rest: ``` Add an AI summary feature to the dashboard using Claude. ``` ``` Use OpenAI to generate product descriptions from the database fields. ``` ``` Add Gemini image generation — let users describe what they want and generate it. ``` Workshop writes the integration code, manages the API calls, and injects credentials automatically — including when you publish the app. ## Disabling a Managed Connector If you want to disable an AI provider for a project: 1. Open your project and go to **Settings** → **Resources** 2. Under **Add-Ons** → **AI Providers**, toggle off the provider you want to disable The connector is removed from the project and your app will no longer be able to call that provider. You can re-enable it at any time by toggling it back on. ## Bring Your Own Key (BYOK) If you prefer to use your own API keys — to manage billing directly with a provider, access models not available through managed connectors, or meet compliance requirements — BYOK connectors are available for each provider: * [Anthropic (BYOK)](/connectors/anthropic) — Use your own Claude API key * [OpenAI (BYOK)](/connectors/openai) — Use your own GPT API key * [Google Gemini (BYOK)](/connectors/gemini) — Use your own Gemini API key You can have both managed and BYOK connectors enabled for the same provider simultaneously. * You want zero setup — just start building * You don't have accounts with each provider * You're publishing apps where you want Workshop to handle the API key lifecycle * You already have a provider account with credits or a billing agreement * You need access to specific models not available through managed connectors * You want usage billed directly to your provider account * Your organization requires direct provider relationships for compliance ## Security Workshop handles API key management for managed connectors automatically: * Keys are generated securely on your behalf * Keys are stored encrypted and never exposed to the AI agent directly * Keys are automatically revoked when you delete a connector * You never need to manage or rotate keys manually ## Troubleshooting Verify your internet connection. Try deleting and re-enabling the connector. Check your Workshop credit balance in **Settings > Usage and Billing**. # Managed Database Source: https://docs.workshop.ai/connectors/managed-database Add a serverless Postgres database with built-in authentication to your Workshop project — one click, no setup required. ## How It Works Workshop can provision a managed **Neon** serverless Postgres database for your project. Enable it via the **Add-Ons** panel in project settings, or during project creation — some templates (Dynamic React App, Static React App, Dynamic HTML App) auto-enable Neon by default. No accounts to create, no credentials to manage, no setup steps. When you enable the database, Workshop provisions: * A **Neon serverless Postgres** instance with a dedicated project and branch * **Neon Auth** — a built-in authentication service powered by Better Auth * **Connection credentials** injected automatically into your app's environment The managed database is available to the apps you build and publish. Workshop's agent can query it, create tables, and write data on your behalf during development. ## What You Get ### Serverless Postgres A full PostgreSQL database that scales to zero when idle and wakes on demand. No capacity planning, no cold start management — Workshop handles it. Your app receives these environment variables automatically: | Variable | Description | | - | - | | `DATABASE_URL` | Pooled connection string (recommended for most use cases) | | `DIRECT_URL` | Direct connection string (for migrations and schema changes) | ### Neon Auth Every managed database comes with **Neon Auth** enabled — a hosted authentication service that gives your app user sign-up, sign-in, and session management out of the box. Your app receives: | Variable | Description | | - | - | | `NEON_AUTH_URL` | Base URL for the authentication service | Workshop automatically keeps your app's **trusted domains** in sync — when you publish your app, rename its slug, or add a custom domain, Workshop updates the Neon Auth configuration so authentication works seamlessly across all your app's URLs. ## Using the Database in Your Apps Reference the database in your conversation and Workshop handles the rest: ``` Create a users table and add a registration form that saves to the database. ``` ``` Add authentication to my app using Neon Auth. ``` ``` Query the database and show a chart of signups by month. ``` Workshop writes the integration code, manages the connection, and injects credentials automatically — including when you publish the app. ## Disabling the Database If you want to remove the database from a project: 1. Open your project and go to **Settings** → **Resources** 2. Under **Add-Ons** → **Database Providers**, toggle off **Neon** 3. Confirm the removal in the dialog Removing the database **permanently destroys** the Neon database instance and all its data. This action cannot be undone. Make sure to export any data you need before disabling. ## Bring Your Own Database If you already have a Neon database — or prefer to use another database provider — you can connect it manually instead: * [Neon, PostgreSQL, MySQL, and more](/connectors/databases) — Connect using your own credentials You can have both a managed database and manually connected databases in the same project. ## Security Workshop handles database credentials for managed databases automatically: * Credentials are generated securely on your behalf * Credentials are stored encrypted and never exposed to the AI agent directly * Credentials are automatically cleaned up when you remove the database * Neon Auth trusted domains are kept in sync with your app's published URLs ## Troubleshooting Try toggling the database off and back on in Add-Ons. If the issue persists, check your internet connection and try again. Workshop syncs trusted domains automatically when you publish or update your app's URL. If auth isn't working, try re-publishing your app to trigger a domain sync. Normal if the database has scaled to zero. The first query triggers a cold start — subsequent queries are fast. # OpenAI (BYOK) Source: https://docs.workshop.ai/connectors/openai Connect your own OpenAI API key to Workshop for direct GPT model access. ## Overview The OpenAI BYOK connector lets you use your own OpenAI API key with Workshop. Usage is billed directly to your OpenAI account. **Published apps use your API key.** If you publish a Workshop app that uses this connector, visitors make requests using your key. You will be billed by OpenAI for all usage. **Don't have an API key?** The [managed OpenAI connector](/connectors/managed-ai-connectors) is enabled by default — no API key needed, usage billed to your Workshop credits. ## What You'll Need | Credential | Description | Format | | - | - | - | | **API Key** | OpenAI API authentication key | `sk-proj-...` | ## Getting an API Key Go to [platform.openai.com](https://platform.openai.com) and sign in or create an account. Click **Settings > Billing**, add a payment method, and add credits (minimum \$5). Billing is required before the API key will work. Click **API keys** in the sidebar, or go directly to [platform.openai.com/api-keys](https://platform.openai.com/api-keys). Click **Create new secret key**, enter a name (e.g., "Workshop Access"), and optionally select a project. Copy your key immediately. OpenAI only shows it once — if you lose it, you'll need to generate a new one. ## Connecting to Workshop Open the **Workshop Hub** from the sidebar. Click the **Connectors** tab. Click the **OpenAI (your API key)** card. Enter a **Connection Name** (e.g., "My OpenAI Account") and paste your **API Key**. Click **Add Connection**. Your OpenAI account is now connected and available across all conversations. ## Verifying Your Connection Ask Workshop: ``` List the available OpenAI models ``` If Workshop returns a list of models, your connection is working. ## Security Best Practices * Your API key is stored in Workshop's encrypted storage — never shared with the AI agent directly * Rotate keys periodically at [platform.openai.com/api-keys](https://platform.openai.com/api-keys) * Use OpenAI projects to organize keys by application * If you suspect a key is compromised, delete it immediately in your OpenAI settings and create a new one ## Troubleshooting | Issue | Solution | | - | - | | "Invalid API key" | Verify the full key was copied. Ensure format is `sk-proj-...`. | | "Insufficient quota" | Check billing at [platform.openai.com](https://platform.openai.com/settings/organization/billing). Add credits if needed. | | "Rate limit exceeded" | Wait and retry. Check rate limits in your OpenAI dashboard. | | "Model not found" | Verify model access. Some models require special access or are in limited beta. | ## Learn More * [OpenAI API Documentation](https://platform.openai.com/docs) * [API Key Best Practices](https://platform.openai.com/docs/guides/production-best-practices) * [Rate Limits Guide](https://platform.openai.com/docs/guides/rate-limits) * [OpenAI Pricing](https://openai.com/pricing) # Context and Memory Source: https://docs.workshop.ai/core-concepts/context-and-memory How Workshop remembers your project — the .workshop/ directory, context files, rules, skills, and how context carries across conversations. ## How Workshop knows your project Every conversation starts fresh in terms of the AI context window — but Workshop doesn't start from zero. It reads project context files at the beginning of each conversation, giving it persistent knowledge about your project's architecture, conventions, and current state. This context lives in the `.workshop/` directory at your project root. ## The `.workshop/` directory ``` your-project/ ├── .workshop/ │ ├── context.md # Project context — what Workshop should know │ ├── rules.md # Project rules — how Workshop should behave │ └── skills/ # Custom skills for specialized tasks ├── src/ ├── README.md └── ... ``` ### `context.md` The primary project context file. Workshop reads this at the start of every conversation to understand your project's architecture, current state, and conventions. **How to update it:** * **Using `/context`:** Type `/context` in any conversation. Workshop analyzes your project files and conversation history, then updates `context.md` with an intelligent summary. * **With custom focus:** Type `/context focus on API patterns` to steer what gets emphasized. * **Manually:** Edit `.workshop/context.md` directly to add or correct information. **When to update:** * After completing a major feature or milestone * Before starting a new conversation in an existing project * When Workshop seems to have forgotten important project details ### `rules.md` Project-specific rules that guide Workshop's behavior. Use this for coding standards, naming conventions, framework preferences, and any guidelines Workshop should follow consistently. ```markdown theme={null} # Project Rules - Use TypeScript for all new files - Follow BEM naming for CSS classes - All API endpoints must include input validation - Write tests for every new utility function ``` Rules are different from context: context describes *what your project is*, rules describe *how Workshop should behave* when working on it. ### `skills/` directory Custom skills are reusable instruction sets for specialized tasks. They extend Workshop's capabilities for project-specific workflows like deployment, testing patterns, or domain operations. ## Context file precedence Workshop checks for context files in a specific order, using the first one found: | Priority | File | Description | | - | - | - | | 1 (highest) | `.workshop/context.md` | Workshop's native context format | | 2 | `.workshop/rules.md` | Workshop's rules file | | 3 | `.cursor/rules/*.mdc` | Cursor-compatible rules (all `.mdc` files concatenated) | | 4 (lowest) | `.cursorrules` | Legacy Cursor rules file | Only the highest-priority file found is loaded — they are not merged. If you have both `.workshop/context.md` and `.cursorrules`, only `context.md` is used. If you're migrating from another AI coding tool, Workshop automatically picks up your existing `.cursorrules` or `.cursor/rules/` files — no changes needed. ## Custom instructions Custom Instructions are global preferences set in **Settings** (wrench icon) that Workshop follows across **all** conversations and projects. Think of them as your personal defaults. ``` Every visualization should have a transparent background and white labels. ``` ``` When building web applications, prioritize clean, accessible design and responsive layouts. ``` ``` Always commit working code after each major milestone. ``` Custom Instructions differ from `rules.md` in scope: custom instructions apply everywhere, rules apply to a specific project. For details on where to set them, see [Settings](/core-concepts/settings). ## Context window management AI models have limited context windows — the amount of information they can process at once. As you use more of the window, costs increase, latency increases, and response quality can degrade. ### Keep conversations focused Each conversation should have a clear purpose — one feature, one bug fix, one exploration thread. Starting new conversations for different tasks keeps context clean and relevant. ### Use `/compact` proactively Don't wait for Workshop to warn you. If a conversation has been going for a while and you've completed a logical milestone, compact and continue. See [Working with the Agent](/core-concepts/working-with-the-agent) for details on the `/compact` command. ### Maintain your `context.md` A well-maintained `context.md` means Workshop starts every conversation with a solid understanding of your project. This reduces the need to re-explain architecture, conventions, and current state. ### Provide files strategically There are two ways to give Workshop files, and they serve different purposes: **Inline attachments (content)** — Drag and drop files into the chat, paste images, or use the upload button in the message toolbar. These files are sent as part of your message. Use this for material Workshop should *work with directly* — images to display, CSVs to process, reference screenshots, or code files you want modified. **Project sources (context)** — Add files, connectors, and secrets through the **Sources panel** in the sidebar. These become persistent project context that Workshop reads across all conversations. Use this for material Workshop should *understand and reference* — design specs, API documentation, data schemas, or configuration files. | Method | When to use | Persists across conversations? | | - | - | - | | **Attach in chat** (drag/paste/upload) | Workshop should act on this file *now* | No — scoped to the current message | | **Sources panel** (sidebar) | Workshop should *know about* this file in every conversation | Yes — part of project context | If you find yourself re-attaching the same file in multiple conversations, add it to your project sources instead. Workshop will reference it automatically. ### Auto-compaction When your conversation approaches the context window limit, Workshop automatically compacts it — summarizing the conversation so far and continuing seamlessly. You don't need to do anything; long conversations stay fast without manual intervention. See [Working with the Agent](/core-concepts/working-with-the-agent#auto-compaction) for details. # Conversations and Projects Source: https://docs.workshop.ai/core-concepts/conversations-and-projects How Workshop organizes your work into projects and conversations for a structured, productive development experience. ## Conversations Conversations are the primary way you interact with Workshop. They follow a chat structure and are made up of pairs of user-Workshop interactions called *turns*. Each conversation lives within a project and maintains its own history, context, and state. You can have multiple conversations within the same project — useful for separating different features, debugging sessions, or exploration threads. ### Starting a new conversation in a new project Click the **Home** button at the top of the left panel, then type your prompt. Starting a conversation from the Home screen creates a new project and assigns the conversation to it. ### Starting a new conversation in an existing project Navigate to the project you want from the Home screen, then write your prompt in the input field. The new conversation will be associated with that project, sharing its files, context, and settings. A conversation can only belong to a single project, but a project can contain many conversations. ### When to start a new conversation Start a **new conversation** when you: * Begin working on a separate feature or task * Want a clean context window after a long session * Need to explore an alternative approach without affecting your current thread * Have used `/compact` to condense and continue (the parent becomes read-only) **Continue an existing conversation** when you: * Are iterating on the same feature * Need Workshop to remember recent decisions and context * Are debugging something discussed earlier in the thread ## Projects A project is a structured container for your work with Workshop. It groups conversations, files, settings, and context around a specific goal or codebase. On your file system, a project corresponds to a specific directory. Projects ensure that all actions, code, and files are associated with the correct context. The environment you set up in one conversation is available to other conversations in the same project. ### The project screen Each project has its own page with the following sections: A description rendered from the `README.md` file in the project directory. A list of all conversations in the project. Click any conversation to navigate to it. Project-specific rules rendered from `.workshop/rules.md` that guide Workshop's behavior. A browser for all assets in the project directory. ### Creating a new project Click **"+ New Project"** on the Home screen. You will be prompted to choose between: 1. **Create new project** under the Workspace directory — use this when starting from scratch. Provide a project name and Workshop creates the directory for you. 2. **Select existing folder** (Workshop Desktop only) — use this when you have an existing codebase or directory on your machine you want Workshop to work on. 3. **Import from Git** — use this when your code is in a repository. Paste the repository URL and Workshop clones it for you. See [GitHub integration](/workshop-desktop/github-integration). On Workshop Cloud the same option appears in the template picker as **Import from GitHub**, and clones into your cloud project — see [Templates](/workshop-cloud/templates#import-from-github). ### Creating a project from a template Workshop Templates are ready-made starting points. Browse them under **Templates** on the Home screen. When you select a template, Workshop clones it into your local environment and it becomes available as one of your projects. ### Renaming a project Rename a project from the **top bar breadcrumb** — click the project name and select **Rename**, or use the project dropdown menu (⋯). You can also rename via the desktop menu bar under **Project → Rename Project**. ### Renaming a conversation Click the conversation name in the top bar or open the conversation dropdown menu (⋯) and select **Rename**. Giving conversations descriptive names makes it easier to find them later — especially in projects with many threads. ## Project context Every Workshop project can include a `.workshop/` directory at its root containing project-level configuration that Workshop reads automatically — including context files, rules, and custom skills. For details on the `.workshop/` directory structure, context file precedence, and how project memory works, see [Context and Memory](/core-concepts/context-and-memory). ## Working across environments **Workshop Cloud** — Projects live on a cloud virtual machine. You can sync projects to Workshop Desktop using [Web ↔ Desktop Sync](/core-concepts/web-desktop-sync) to continue working locally. **Workshop Desktop** — A project corresponds to a directory in your Workspace folder on your computer. Workshop has direct access to your local file system. You can push changes back to Workshop Cloud using Web ↔ Desktop Sync. Projects created with **Create new project** go into your Workspace folder, which by default lives in your home directory: | Platform | Location | | - | - | | **Windows** | `%USERPROFILE%\Workspace` | | **macOS** | `~/Workspace` | | **Linux** | `~/Workspace` | Projects created with **Select existing folder** stay where they already are and are not moved into Workspace. To open the folder for the project you are working on, whichever way it was created, see [Opening the project folder](/workshop-desktop/file-system-and-terminals#opening-the-project-folder). Both environments share the same project structure and conversation model, so your workflow stays consistent regardless of where you build. # Settings Source: https://docs.workshop.ai/core-concepts/settings Configure how Workshop's agent behaves and how the platform operates — from model selection to secrets management. Workshop has two categories of settings: **Agent Settings** control how the AI behaves during conversations, and **App Settings** configure platform-level capabilities and integrations. ## Agent Settings Access Agent Settings in either of two ways: click the **gear icon** in the left sidebar to open Settings, then select the **Agent** tab; or click the **+ button** in the message input box and choose **Agent Settings**. These affect how Workshop operates during conversations. ### Custom instructions Custom Instructions set consistent guidelines that Workshop follows across **all** your conversations. They act as extensions to Workshop's system prompt, reflecting your personal preferences. ``` Every visualization should have a transparent background and white labels. ``` ``` When building web applications, prioritize clean, accessible design and responsive layouts. Use TypeScript for all JavaScript projects. ``` ``` Always commit working code after each major milestone. ``` **Best practices:** * **Be specific but not restrictive.** `"Include proper error handling in APIs"` is good. `"Only use Express 4.18.2 with these exact middleware packages"` is too rigid. * **Focus on consistent preferences.** Instructions that apply across conversations work best — project-specific rules belong in `.workshop/rules.md`. * **Match your skill level.** Beginners: `"Explain technical concepts in simple terms."` Advanced: `"Focus on efficiency and assume familiarity with development tools."` ### Model selector Choose which AI model powers your conversations. The model selector appears as a chip in the message input toolbar. Models are grouped by provider. Each model shows interactive ratings for speed, intelligence, reliability, and cost so you can pick the right tradeoff for your task. **Anthropic (Claude)** | Model | Best for | Relative cost | | - | - | - | | **Claude Haiku 4.5** | Fast tasks, rapid iteration | \$ | | **Claude Sonnet 5** | Everyday development — the default | \$\$\$\$ | | **Claude Opus 4.7** | Complex problems requiring deep reasoning | \$\$\$\$\$ | | **Claude Opus 4.6** | Deep reasoning with high reliability | \$\$\$\$\$ | **OpenAI (GPT)** | Model | Best for | Relative cost | | - | - | - | | **GPT-5.4 Nano** | Lightweight, low-cost text tasks | \$ | | **GPT-5.4 Mini** | Balanced speed and capability | \$\$ | | **GPT-5.4** | Complex tasks requiring high intelligence | \$\$\$\$ | **Google (Gemini)** | Model | Best for | Relative cost | | - | - | - | | **Gemini 3.1 Flash-Lite** | Fastest option, great for simple tasks | \$ | | **Gemini 3.1 Pro** | Capable reasoning with strong intelligence | \$\$\$\$ | **Open Source** | Model | Best for | Relative cost | | - | - | - | | **GLM-5.1** | High-intelligence open-source (text only) | \$ | | **GLM-5** | Capable open-source alternative (text only) | \$ | | **GLM-5 Turbo** | Fast open-source option (text only) | \$ | | **GLM-5V Turbo** | Open-source with image understanding | \$ | | **Kimi K2.6** | Multimodal open-source — attach screenshots | \$\$ | Open Source models are significantly cheaper than premium models — 4–8× lower cost per turn. They're a good choice for straightforward tasks where you want to conserve credits. #### ARC **ARC** — at the top of the model selector — is the simplest way to keep your credit use down. Instead of committing to one fixed model, it matches your work to a model suited to it: a lighter, cheaper model for routine tasks, and a more capable one for harder ones. Because it avoids running the most expensive model on work that doesn't need it, ARC stretches your credits further — and it means you don't have to pick a model for every task. ARC is powered by [Rayline](https://rayline.ai), which handles the model routing behind the scenes. You can switch between ARC and a specific model at any time during a conversation — a common pattern is a fast, cheaper model for exploration, a balanced model for building, and a top-tier model for hard problems. ### Code execution control Control when Workshop executes code on your system. Workshop executes code blocks automatically without asking. Recommended once you're comfortable with Workshop's behavior. Workshop shows you each code block before execution. You choose to **Run** or **Skip**. Useful for sensitive systems, learning, or reviewing implementation steps. ### Max turns Limit how many autonomous actions Workshop takes before stopping for your input. By default, Workshop continues working until it completes your request. When enabled, use the slider to set a limit from 1 to 25 turns. | Use case | Turns | Why | | - | - | - | | Learning / reviewing | 1–3 | See each step of the implementation | | Moderate oversight | 5–10 | Regular check-ins without micromanagement | | Full automation (default) | Off | Let Workshop complete tasks without interruption | ### Thinking mode When enabled, Workshop works through problems step-by-step before jumping to solutions, showing its reasoning process. | Level | Label | Description | | - | - | - | | 1 | **Light** | Simple problem breakdown, quick decision explanations | | 2 | **Balanced** | Thorough analysis, multiple approaches considered | | 3 | **Deep** | Comprehensive exploration, detailed trade-off analysis | | 4 | **Max** | Extensive reasoning, multiple solution paths explored | Despite using more tokens per message, Thinking Mode often reduces overall credit consumption by producing more accurate solutions on the first attempt. For complex problems, pairing **Genius** model with **Thinking Level 3–4** produces exceptional results, though at higher credit cost. ### Local model setup (Desktop only) Connect Workshop Desktop to a local Anthropic Messages API-compatible server, such as llama.cpp or Ollama with an adapter. Provide the URL of your local model server (e.g., `http://127.0.0.1:8080`). Enter a display name for the model (e.g., `qwen3-coder-30b`). This is for your reference only. Click **Test Connection** to verify Workshop can reach your local server. On success, the local model is automatically enabled. For a full guide on setting up and using local models, see [Local Models](/workshop-desktop/local-models). ### Skills Skills are a cross-platform core concept in Workshop. In Desktop, use the **Skills** tab in Settings to install, enable, disable, and import skills that extend the agent's capabilities. For the complete skills guide (concept + Desktop workflows), see [Core Concepts → Skills](/core-concepts/skills). ### Sub Agents The **Sub Agents** tab lets you set a persistent default model for each built-in sub-agent. This is the durable alternative to overriding a model [mid-conversation](/core-concepts/sub-agents#choosing-models-for-sub-agents) — set it once and it applies to **every new conversation**, instead of just the current delegation. Each built-in sub-agent (`explore`, `plan`, `verification`, `reviewer`, `web-search`, `frontend`, and `visual-qa`) has a dropdown: * Leave it on **Default** to use the agent's recommended model. * Pick any available model to override it. Overridden agents are highlighted so you can see your customizations at a glance. * Agents that require vision (such as **visual-qa**) only list vision-capable models. Click **Save Settings** to apply your overrides, or **Reset All to Defaults** to clear them. Changes take effect on new conversations. For the full list of built-in agents and the models you can route them to, see [Core Concepts → Sub-agents](/core-concepts/sub-agents). ### Task Management When enabled, Workshop creates and maintains structured task lists when implementing project plans. Workshop automatically breaks down plans into discrete, trackable tasks, updating their status as work progresses. Task lists and plans are stored as files in your project directory (for example `tasks.json` and `plan.md`, sometimes grouped under subfolders like `tasks/` or `plans/`), so you can review progress at any time — even outside of Workshop. ### Quick reference by experience level * **Custom Instructions:** `"Explain technical concepts clearly and provide step-by-step guidance"` * **Code Execution:** Manual approval for learning * **Max Turns:** 3–5 for oversight * **Thinking Mode:** Level 2 for educational benefit * **Custom Instructions:** Focus on tech stack preferences and coding standards * **Code Execution:** Automatic for speed * **Max Turns:** 10+ or off * **Thinking Mode:** Level 3–4 for complex problems only * **Custom Instructions:** Include team coding standards and review practices * **Code Execution:** Manual for shared environments * **Max Turns:** 5–7 for reviewable progress * **Context management:** Workshop [automatically compacts](/core-concepts/working-with-the-agent#auto-compaction) when your context window fills up, but you can also `/compact` proactively at milestones *** ## App Settings Access App Settings through the main **Settings** menu (gear icon). These apply across all projects and conversations. ### Secrets management Secrets are sensitive values like API keys, database passwords, or access tokens that your applications need. Workshop provides a built-in system to store and use them securely. We recommend defining secrets through a [Custom Connector](/connectors#custom-connector). It keeps all the credentials for a service together under one name that you can @-mention in conversations. **How secrets work:** * **Workshop Cloud:** Secrets are encrypted, stored securely, and available to the agent in your dedicated isolated environment. * **Workshop Desktop:** Workshop uses your operating system's native keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service) to store values. Raw values are never stored in Workshop's own files, and secrets remain on your machine. * **Key tracking:** Workshop maintains a list of secret *names* you've stored, but actual values are encrypted and kept in secure storage. **Managing secrets:** Click **Hub** in the left sidebar and select the **Secrets** tab. In Workshop Cloud you can also go straight to [app.workshop.ai/hub?tab=secrets](https://app.workshop.ai/hub?tab=secrets). Enter a descriptive key name (e.g., `OPENAI_API_KEY`, `DATABASE_PASSWORD`), enter the value, and click **Add Secret**. Click the **Edit secret** icon next to the secret, paste the new value, and click **Update Secret**. Reference secrets by their key name in your prompts: ``` Use the API key stored as 'STRIPE_API_KEY' to configure the payment gateway. ``` **Security details:** * **Case insensitive:** Workshop finds secrets regardless of case — `OPENAI_API_KEY`, `openai_api_key`, and `OpenAI_API_Key` all work. * **Permission prompts (Desktop):** The first time Workshop accesses a secret, your OS may ask for permission. You can approve permanently or per-session. * **Scope (Desktop):** Secrets are available to all projects within Workshop on that machine. ### MCP servers (Desktop only) The [Model Context Protocol](https://modelcontextprotocol.io/introduction) is a standard for connecting AI models to tools, data sources, and services. Workshop supports both **using** and **building** MCP servers. **Managing MCP servers:** Go to **Settings** (gear icon) > **MCP** tab to browse three sections: | Section | Description | | - | - | | **Configured Servers** | View, enable/disable, and manage your installed MCP servers | | **Server Directory** | Browse and install curated, Workshop-tested servers (Neon, Netlify, GitHub, Context7, and more) | | **Add Custom Server** | Install any MCP server from the broader ecosystem via GitHub URL or local path | **Using MCP in conversations:** Workshop integrates with enabled MCP servers naturally — often requiring no special instructions: ``` Use playwright to check if this website loads correctly and take a screenshot. ``` ``` Use the Neon MCP to create a new table for user profiles in our database. ``` **Building MCP servers:** Workshop can build MCP servers from natural language descriptions, test them, and add them to your available tools — all in a single conversation. **Best practices:** * Only enable servers you're actively using to reduce context overhead * Test new servers in non-critical projects first * Use Secrets for server authentication credentials * Disable unused tools within servers to keep context focused ### Control Center The Control Center provides quick-action buttons for common development tasks, accessible from within your project. **Version control** — Initialize Git, make commits, and manage your repository with single clicks. Workshop often handles this automatically during development; the Control Center lets you trigger it at specific moments. **Application management** — Start, stop, and monitor your applications. Workshop analyzes your project structure and creates custom startup scripts, handling environment activation, dependency loading, and complex startup sequences. **Documentation generation** — Generate or improve your project's `README.md` from the current project structure with one click. **Interactive Terminal** — Workshop handles command-line tools that require interactive input — scaffolding wizards, interactive installers, deployment setup. Terminal sessions are visible in the Control Center. ### Privacy Mode Your code is never stored anywhere other than your machine. With **Privacy Mode** enabled, your conversations are also never stored externally. When disabled, Workshop may collect usage and telemetry data to improve the product. Privacy Mode is available to Build, Scale, and Max plan users. Manage it from **Settings** > **Other**. ### Sound settings Toggle whether Workshop plays a sound notification when the agent finishes a task. Useful for knowing when a long-running operation completes while you're doing other work. # Skills Source: https://docs.workshop.ai/core-concepts/skills Skills are reusable instruction sets that give the Workshop agent domain expertise. Import skills from GitHub, compile them from your data layer, or write them by hand. ## What are skills? Skills are structured context documents that give the Workshop agent specialized knowledge about a domain, codebase, or dataset. When a skill is loaded, the agent reads it at the start of each conversation — giving it persistent expertise that goes beyond general knowledge. Think of skills as "expert briefings" — they tell the agent what your data means, how your APIs work, what your design system looks like, or how your deployment pipeline runs. ## Managing skills in Settings Skills work the same way in Workshop Cloud and Workshop Desktop. In both products, open **Settings → Skills** to manage what capabilities are installed and enabled. ![Skills tab in Settings](https://static.workshop.ai/docs-site/skills/skills-tab-overview.webp) *Skills are managed from Settings with search, filtering, and quick install actions.* **What you can do in Skills settings:** * **Browse installed skills** and read each skill's description * **Search** by name or description * **Filter to Official** skills only * **Enable/disable** skills with the toggle on each card * **Install official skills** to your user space * **Remove custom skills** (user or project/plugin, depending on source) * **Add custom skills** from ZIP, official catalog, or GitHub Workshop shows a warning before disabling an official skill because it can reduce your agent's baseline capabilities. ### Adding skills Use **+ Add** in the Skills tab to choose how you want to install a skill. ![Add skill menu](https://static.workshop.ai/docs-site/skills/skills-add-menu.webp) *Add from ZIP, from official skills, or by importing from GitHub.* **Option 1: Upload `.zip`** — Choose this when you already have a packaged skill archive. Click **+ Add → Upload .zip**, select your file, and Workshop installs it. **Option 2: Add from official** — Choose this for curated, Workshop-maintained skills. Click **+ Add → Add from official**, pick from the modal list, and click **Install**. **Option 3: Import from GitHub** — Choose this when your skill lives in a GitHub repository. Click **+ Add → Import from GitHub**, then paste a public repo URL or connect GitHub to browse your repos (including private ones). ![Import skill from GitHub modal](https://static.workshop.ai/docs-site/skills/skills-import-github-modal.webp) *The GitHub import flow supports both direct public URLs and connected-account repository browsing.* ### Skill sources In practice, you'll encounter these source types: * **Official/system**: Workshop-maintained defaults * **User**: installed into your personal skill space * **Project/plugin**: tied to project/plugin context If you're not sure where to install a skill, start with **user-level** so it's available across your work. ## The `.workshop/skills/` directory Skills live in your project's `.workshop/skills/` directory: ``` your-project/ ├── .workshop/ │ ├── context.md │ ├── rules.md │ └── skills/ │ ├── data/ │ │ ├── SKILL.md # Entry point │ │ └── ref/ │ │ ├── sources.md │ │ ├── staging.md │ │ └── marts.md │ └── design-system/ │ └── SKILL.md ├── src/ └── ... ``` Each skill is a directory containing a `SKILL.md` entry point and optional reference files. The agent reads `SKILL.md` first and follows references as needed. ## Importing skills from GitHub Workshop supports importing skills directly from GitHub repositories — both public and private. Push your skill files to a GitHub repository. The repository should contain the skill directory structure with a `SKILL.md` entry point. If the repository is private, connect your GitHub account in Workshop via **Hub** → **Connectors** → **GitHub**. In your Workshop project, import the skill from the repository. Workshop downloads the skill files and makes them available to the agent. Skills imported from GitHub can be updated when the source repository changes. In the future, Workshop will support automatic pulling of the latest version. ## dbt-skillz: compiling data skills The most common use of skills today is grounding agents in your data warehouse schema. [dbt-skillz](https://github.com/atlasfutures/dbt-skillz) is an open-source compiler that turns your dbt project into a structured agent skill. ```bash theme={null} # Install pip install dbt-skillz # Compile your dbt project into a skill dbt-skillz compile --project-dir ./analytics --output ./skills/data ``` The compiled skill includes: * **Model descriptions** — what each table represents * **Column types and documentation** — field-level context * **Metric definitions** — governed calculations * **Test constraints** — data quality rules * **Lineage graph** — how models depend on each other When the agent builds a dashboard or writes a query, it reads these definitions instead of guessing. See [Trusted Dashboards](/solutions/trusted-dashboards) for the full lifecycle. dbt-skillz works with any coding agent — Claude, Cursor, Windsurf, and more. It's not Workshop-specific, but Workshop provides the deepest integration. ## Other skill use cases Skills aren't limited to data. Common examples include: Provide your API documentation as a skill so the agent writes correct integrations, uses the right endpoints, and handles authentication properly. Give the agent your component library documentation, color tokens, and layout conventions so it generates UI that matches your brand. Document your team's conventions — naming patterns, testing requirements, architectural decisions — so the agent follows them from the first line of code. Describe business logic, regulatory requirements, or industry-specific terminology so the agent understands your domain context. ## Skills vs. context vs. rules | Feature | `context.md` | `rules.md` | Skills | | - | - | - | - | | **Purpose** | What the project is | How to behave | Domain expertise | | **Scope** | Entire project | Entire project | Specific domain | | **Updated by** | `/context` command or manual | Manual | Compiler or manual | | **Example** | "This is a Next.js e-commerce app" | "Use TypeScript strict mode" | "Here are all dbt metric definitions" | ## Writing skills by hand You can create skills manually for any domain: 1. Create a directory under `.workshop/skills/` (e.g., `.workshop/skills/my-skill/`) 2. Add a `SKILL.md` file as the entry point 3. Optionally add reference files in subdirectories ```markdown theme={null} # My Skill ## Overview This skill provides context about [domain]. ## Key Concepts - Concept A: explanation - Concept B: explanation ## Reference See [detailed reference](ref/details.md) for more. ``` Keep skills focused — one domain per skill. The agent can load multiple skills simultaneously. *** Open-source data skill compiler. Apache 2.0. The full lifecycle for data-grounded dashboards. Step-by-step guide to building dashboards with Workshop. # Sub-agents Source: https://docs.workshop.ai/core-concepts/sub-agents Orchestrate multiple AI models — across providers and environments — in a single workflow. ## What are sub-agents? Workshop's main agent can spin up helper agents to handle specific tasks inside the same workflow. These are called **sub-agents**. Each sub-agent runs in its own separate context window. It reads files, runs tools, and does its work without consuming the main agent's context. When it's done, only a short summary comes back to your main conversation. Sub-agents don't all need to use the same model. They can use different models, from different providers — and in Workshop Desktop, they can even run in different environments, including local models on your device. ![Three sub-agents researching weather APIs, React patterns, and Tailwind layouts in parallel — each running on Claude Haiku 4.5 with live activity feeds](https://static.workshop.ai/docs-site/subagents/subagents-parallel-active.webp) *Three sub-agents researching in parallel, each with a live progress indicator.* ## Why this matters You no longer need one model to do everything. Different parts of a workflow can be delegated to the models best suited for those parts. Some models are better at certain types of tasks than others. By delegating subtasks to better-fit models, the overall workflow produces better results than any single model could. Not every task needs a top-tier model. Simpler or narrower subtasks can be routed to more affordable models, reducing overall cost without sacrificing quality where it matters. Some tasks benefit more from speed than from maximum intelligence — reading large volumes of text, scanning files, repetitive processing. These can be delegated to faster models to keep things moving. Sub-agents work without consuming the main agent's context in the same way. You can keep building in the same conversation without hitting limits as quickly. ### Privacy and control Workshop can combine cloud models with local models. That means you can keep your main workflow powered by a frontier cloud model, but route a sensitive task to a local model running on your device. This is especially useful when a task involves: * Private data or sensitive internal files * Content you don't want sent to an external inference provider * Compliance requirements around data residency Local model routing requires [Workshop Desktop](/workshop-desktop/local-models). Workshop Cloud uses cloud-hosted models only. ### The real differentiator It's not just "multiple models." Workshop lets you orchestrate multiple models, from multiple providers, across cloud and local environments, in the same workflow — frontier cloud models, open-source models, and local models working together in one product experience. Use the best AI for each part of the job, instead of forcing one model to do everything. *** ## How sub-agents work As conversations grow longer, the agent's performance gradually declines — it may lose track of earlier decisions, repeat work, or miss details it would have caught earlier. This happens because every AI conversation has a **context window**: the total amount of information the agent can work with at once. Everything counts — your messages, files it reads, tool outputs, its own responses. You can see the context window filling up as a percentage in the UI. As it fills, quality drops. Eventually, you'll need to either start fresh or use `/compact` to summarize and continue. Sub-agents solve this by working outside your main conversation — each one gets its own fresh context window, does its work, and returns only a short summary. That keeps your main conversation lean and focused. ### Why sub-agents matter Without sub-agents, every file read and tool call fills your context window, limiting how complex a task can be. Sub-agents handle the heavy lifting in their own space, so your main conversation stays focused on the big picture and stays sharp for longer. A sub-agent with a single clear objective — "review this diff for security issues" or "explore how the payment flow works" — dedicates its full attention to that one job, without being distracted by the rest of your conversation. Up to 3 sub-agents run simultaneously, each potentially on a different model. A quick search uses a fast model; a thorough code review uses a more capable one. You get speed and specialization without managing any of it. ### Built-in agents Workshop includes six specialized agents, each with a focused toolset: | Agent | What it does | Default model | Why | Best for | | - | - | - | - | - | | **explore** | Searches code, reads files, traces call chains. Read-only. | Haiku 4.5 | Fast read-only searches don't need a heavy model | "Where is this defined?", "How does auth work?", pattern searches | | **plan** | Analyzes codebase, produces structured implementation plans with steps, critical files, and risks. | Inherits yours | Benefits from the same model you're reasoning with | Planning before coding — especially multi-step features | | **verification** | Adversarial checker that reviews your changes for regressions, missing tests, and edge cases. Returns PASS/FAIL verdict. | Inherits yours | Should match the reasoning depth of your main workflow | Sanity check after implementation, before you move on | | **reviewer** | Code review specialist. Hunts for bugs, security issues, correctness problems. Can run linters and tests. | GPT-5.4 | Strong at code review and reasoning about diffs | PR-style review of a diff or changed files | | **web-search** | Searches the web for docs, best practices, API references, error solutions. | Haiku 4.5 | Speed matters more than depth for lookups | Looking up documentation, debugging error messages | | **frontend** | Full-stack frontend dev. Can read, write, edit files and run dev servers/build tools. | GLM-5.1 | Optimized for frontend and long-horizon UI tasks | Building or fixing UI components, CSS, frontend code | You can override the default model for any built-in agent mid-conversation — see [Choosing models](#choosing-models-for-sub-agents) below. ### How to trigger sub-agents Tell Workshop to use sub-agents in your prompt. The key phrase is **"use sub-agents"** or **"delegate"** — Workshop will recognize the intent and spin up the right agents: ``` Build me a landing page. Use sub-agents to research color palette trends, look up hero section best practices, and find open-source icon libraries — all in parallel before you start coding. ``` You can also name specific agents: ``` Have the reviewer agent check the changes we just made. ``` ``` Use the explore agent to trace how the payment flow works. ``` Workshop may also delegate on its own when it judges a task benefits from specialization — but being explicit gives you more control over what gets delegated and how. Multiple sub-agents can run simultaneously. Each one appears as a collapsible card in your chat with a live progress indicator. ![All 3 agents complete in 73.9s — the main agent immediately synthesizes the research into a plan](https://static.workshop.ai/docs-site/subagents/subagents-parallel-complete.webp) *All three research agents finished in 73.9 seconds. The main agent synthesizes the results and starts building.* ### Limits * Sub-agents **cannot spawn their own sub-agents** (depth limit of 1) * Each sub-agent starts fresh — it cannot see your conversation history, so include everything it needs in the delegation prompt * Sub-agents complete autonomously — they cannot ask you questions mid-task ## Choosing models for sub-agents Each built-in agent has a default model chosen for its task type — shown in the Built-in agents table above. You can override any of them two ways: **mid-conversation** by just asking, or **persistently** in Settings. To set a default model for a built-in agent that applies to **every new conversation**, open the **Sub Agents** tab in [Settings](/core-concepts/settings#sub-agents). The mid-conversation method below is best for one-off overrides. ### Changing a model mid-conversation You don't need to configure anything upfront. Just tell Workshop which model you want a sub-agent to use, and it will apply that for the delegation: ``` Have the reviewer agent check these changes, but use Gemini 3.1 Pro. ``` ``` Run the explore agent on Sonnet for this one — I need deeper analysis. ``` ``` Use Claude Opus for the plan agent on this refactor. ``` Workshop passes the model assignment through to the sub-agent when it delegates. The available models are: | Model | Provider | Best for | Speed | Cost | | - | - | - | - | - | | `haiku` | Anthropic | Fast, focused tasks — searches, file scans, checklists | Fastest | Low | | `sonnet` | Anthropic | Balanced — code review, refactoring, documentation | Fast | Medium | | `opus` | Anthropic | Complex reasoning — architecture, multi-file analysis | Slower | Highest | | `gpt-5.4` | OpenAI | Backend coding, code review, general-purpose reasoning | Fast | Medium | | `gpt-5.4-mini` | OpenAI | Lighter tasks at lower cost | Fast | Low | | `gpt-5.4-nano` | OpenAI | Simple tasks, lowest cost | Fastest | Lowest | | `gemini-3.1-pro` | Google | Frontend dev, long-context analysis (1M token window) | Fast | Medium | | `gemini-3.1-flash` | Google | Fast general-purpose tasks, large context | Fastest | Low | | `glm-5.1` | Z.ai | Frontend dev, long-horizon tasks, cost-efficient coding | Fast | Lowest | | `glm-5` | Z.ai | General-purpose coding | Fast | Low | | `glm-5-turbo` | Z.ai | Fast coding tasks | Fastest | Lowest | | `glm-5v-turbo` | Z.ai | Vision + coding tasks | Fast | Low | | `kimi-k2.6` | Moonshot | Coding, reasoning, multilingual tasks | Fast | Low | *** ## Create your own agents Workshop's six built-in agents handle most workflows out of the box — you don't need to create custom agents to use sub-agents. This section is for teams who want to define their own reusable agents for specialized or repeated tasks. Beyond the built-in agents, you can define **custom agents** — reusable markdown files that give Workshop specialized personas, toolsets, and instructions for tasks you run repeatedly. Workshop implements the [Agent Skills](https://agentskills.io) open standard — the same format used by Claude Code, Cursor, GitHub Copilot, Gemini CLI, OpenAI Codex, and [many other tools](https://agentskills.io/home). Agents you create for Workshop work in any compatible client, and vice versa. ### Quick start Create an `agents/` directory in one of the supported paths and add a markdown file: ``` your-project/ ├── .workshop/agents/ # Workshop-native (recommended) ├── .agents/agents/ # Cross-client standard path (works in all compatible tools) └── .claude/agents/ # Claude Code compatible ``` Pick whichever path fits your team. If you want your agents to work across Workshop, Claude Code, Cursor, and other tools, use `.agents/agents/`. If you only use Workshop, `.workshop/agents/` is the simplest choice. Each file is one agent. The filename (minus `.md`) becomes the agent name. ```markdown theme={null} --- description: Reviews code changes for quality, test coverage, and common pitfalls. model: haiku tools: - Read - Grep - Bash --- You are a QA reviewer. When given a branch or set of changes: 1. Read every changed file 2. Check for missing error handling, edge cases, and test coverage gaps 3. Verify naming conventions match the surrounding code 4. Report findings as a numbered list with file:line references ``` ``` Have the qa-reviewer agent check the changes on this branch. ``` Workshop matches your request to the agent by its **description** field and delegates the task with the specified model and tools. ### Agent file format Each agent file uses YAML frontmatter followed by markdown instructions: ```markdown theme={null} --- description: What this agent does (required — this is how Workshop decides when to use it) model: haiku tools: - Read - Grep - Bash maxTurns: 10 --- Your detailed instructions go here. This is the agent's system prompt — tell it what role to play, what steps to follow, and what output format to use. ``` **Frontmatter fields:** | Field | Required | Description | | - | - | - | | `description` | Yes | What the agent does. Workshop uses this to match your requests to the right agent. Be specific. | | `model` | No | Model to use: `haiku`, `sonnet`, or `opus`. Defaults to your conversation's model. Use `haiku` for fast, focused tasks. | | `tools` | No | List of tools the agent can use (e.g., `Read`, `Bash`, `Grep`, `Edit`). Defaults to all tools. | | `maxTurns` | No | Maximum number of turns before the agent stops. Useful for keeping agents focused. | | `disallowedTools` | No | Tools the agent cannot use, even if otherwise available. | | `hidden` | No | If `true`, the agent won't appear in the agent list but can still be used by name. | | `memory` | No | Memory scope: `user`, `project`, or `local`. Controls where the agent stores learned context. | The `description` field is crucial — it's how Workshop decides which agent to delegate to. Write it like a job title and responsibility summary, not a vague label. ### Where to put agents Place agents in `.workshop/agents/` at your project root. These are shared with your team via version control — great for project-specific workflows like deployment checks, code review standards, or domain-specific analysis. ``` your-project/ └── .workshop/ └── agents/ ├── deploy-check.md ├── api-reviewer.md └── db-migration-validator.md ``` Place agents in `~/.workshop/agents/` (your home directory). These are available in every project but aren't shared with your team — useful for personal productivity agents. ``` ~/.workshop/ └── agents/ ├── commit-message-writer.md └── research-assistant.md ``` Project agents take precedence over personal agents when names conflict. ### Cross-client compatibility Workshop implements the [Agent Skills](https://agentskills.io) open standard, which means your custom agents are portable across a growing ecosystem of AI development tools — including Claude Code, Cursor, GitHub Copilot, Gemini CLI, OpenAI Codex, Roo Code, and more. Workshop discovers agents from three directory paths in priority order: | Path | Purpose | | - | - | | `.workshop/agents/` | Workshop-native (recommended) | | `.agents/agents/` | Cross-client standard path — works in any [compatible tool](https://agentskills.io/clients) | | `.claude/agents/` | Claude Code compatibility | If the same agent name exists in multiple directories, the first match wins. If your team uses multiple AI tools, put your agents in `.agents/agents/` — they'll be discovered by Workshop, Claude Code, Cursor, and every other tool that supports the [Agent Skills standard](https://agentskills.io). One set of agents, every tool. ### Writing effective agents The quality of your agent depends on three things: a precise description, the right model, and clear instructions. #### Descriptions that trigger reliably The `description` field is how Workshop decides which agent to delegate to. Front-load the key action and context: ```yaml theme={null} # Too vague — when would Workshop use this? description: Helps with code # Too broad — matches everything description: A general purpose assistant for development tasks # Missing the "when" — what triggers it? description: Knows about our API conventions ``` ```yaml theme={null} # Specific action + clear trigger description: Reviews code changes for security vulnerabilities, injection risks, and auth bypass. Use when reviewing PRs or before merging. # Domain + action + scope description: Validates database migrations for safety, rollback paths, and index impact. Use before applying migrations to production. # Clear capability boundary description: Generates TypeScript types from OpenAPI specs. Use when API contracts change or when adding new endpoints. ``` #### Choosing the right model Workshop supports models from multiple providers. Refer to the [full model table](#choosing-models-for-sub-agents) above for the complete list with speed and cost guidance. When setting the `model` field in your agent file: * Use `haiku` for fast, focused tasks (searches, file scans, checklists) * Use `sonnet` for balanced tasks (code review, refactoring, documentation) * Use `opus` for complex reasoning (architecture decisions, multi-file analysis) * For frontend-heavy agents, `glm-5.1` or `gemini-3.1-pro` are strong choices * For backend code review, `gpt-5.4` excels If you omit `model`, the agent inherits your conversation's current model. #### Structuring instructions Write instructions like you're briefing a capable colleague who has no context. Include: 1. **Role** — Who the agent is and what lens it uses 2. **Steps** — Numbered sequence of what to do 3. **Constraints** — What to avoid or what boundaries to respect 4. **Output format** — How to structure the response ```markdown theme={null} --- description: Reviews PRs for security issues including injection, auth bypass, and data exposure. model: haiku tools: - Read - Grep - Bash maxTurns: 12 --- You are a security reviewer. For each changed file: 1. Read the diff with `git diff main...HEAD` 2. Check for: - SQL injection (string concatenation in queries) - XSS (unescaped user input in templates) - Auth bypass (missing permission checks) - Secret exposure (hardcoded keys, tokens, passwords) 3. For each finding, cite the exact file and line ## Output Return findings as: | Severity | File:Line | Issue | Fix | |----------|-----------|-------|-----| | HIGH | src/api.ts:42 | Raw SQL interpolation | Use parameterized query | If no issues found, say "No security issues detected" — don't fabricate findings. ``` ### Agents vs skills Workshop supports both **agents** and **[skills](/core-concepts/skills)**. They serve different purposes: | | Agents | Skills | | - | - | - | | **What they are** | Autonomous sub-conversations with their own model, tools, and context window | Instruction documents loaded into your current conversation | | **How they run** | In a separate context — can't see your chat history | Inline — become part of your conversation | | **Best for** | Delegated tasks: "review this", "check that", "research X" | Persistent knowledge: conventions, patterns, reference material | | **File format** | Single `.md` file with frontmatter | Directory with `SKILL.md` and optional supporting files | | **Location** | `.workshop/agents/`, `.agents/agents/`, `.claude/agents/` | `.workshop/skills/`, `.agents/skills/`, `.claude/skills/` | Use an **agent** when you want to hand off a complete task. Use a **skill** when you want Workshop to know something while working with you. ### Example agents An agent that runs pre-deployment safety checks with a structured PASS/FAIL verdict: ```markdown theme={null} --- description: Runs pre-deployment safety checks including test status, migration review, and environment variable validation. model: haiku tools: - Read - Grep - Bash maxTurns: 15 --- You are a deployment readiness checker. Run through this checklist and report a PASS/FAIL verdict for each item: ## Checklist 1. **Tests passing** — Run the test suite and confirm 0 failures 2. **No debugger statements** — Grep for `debugger`, `binding.pry`, `console.log` in changed files 3. **Migration safety** — If any new migrations exist, verify they have a rollback path 4. **Environment variables** — Check that any new env vars referenced in code are documented in `.env.example` 5. **No secrets in code** — Scan for hardcoded API keys, tokens, or passwords ## Output format Return a summary table: | Check | Status | Details | |-------|--------|---------| | Tests | PASS/FAIL | ... | | ... | ... | ... | End with a clear **DEPLOY** or **DO NOT DEPLOY** recommendation. ``` An agent that reads your code and generates API documentation: ````markdown theme={null} --- description: Generates API documentation from source code. Reads route handlers, extracts endpoints, parameters, and response shapes, and produces markdown documentation. model: sonnet tools: - Read - Grep maxTurns: 20 --- You are an API documentation writer. Given a codebase: 1. Find all route/endpoint definitions (look for decorators like @app.get, @router.post, or framework-specific patterns) 2. For each endpoint, extract: - HTTP method and path - Request parameters (path, query, body) - Response shape and status codes - Authentication requirements 3. Organize by resource (e.g., /users/*, /projects/*) ## Output format For each endpoint: ### `METHOD /path` > Brief description **Auth:** Required / Public **Parameters:** | Name | In | Type | Required | Description | |------|----|------|----------|-------------| **Response:** `200 OK` ```json { "example": "response" } ```` Sort endpoints alphabetically within each resource group. ```` A read-only agent that helps new team members understand a codebase: ```markdown --- description: Explores and explains a codebase for new team members. Maps architecture, identifies key patterns, and answers questions about how things work. model: haiku tools: - Read - Grep maxTurns: 25 --- You are a codebase guide helping a new team member get oriented. Start by understanding the project structure: 1. Read the top-level directory and key config files 2. Identify the tech stack (languages, frameworks, build tools) 3. Map the main modules and their responsibilities 4. Find the entry points (main files, route definitions, etc.) Then answer the user's specific questions with: - File paths and line numbers for every claim - Diagrams (ASCII) for complex relationships - "I don't know" when you genuinely can't determine something Never guess. If you're unsure, say so and suggest where to look. ```` An agent that generates tests for existing code: ```markdown theme={null} --- description: Writes tests for existing code. Reads the implementation, identifies edge cases, and generates comprehensive test files following the project's testing conventions. model: sonnet tools: - Read - Grep - Edit - Bash maxTurns: 20 --- You are a test engineer. When asked to write tests: 1. Read the target file and understand its public interface 2. Grep for existing test files to learn the project's testing conventions (framework, assertion style, file naming) 3. Identify test cases: - Happy path for each public function/method - Edge cases (empty input, null, boundary values) - Error cases (invalid input, missing dependencies) 4. Write the test file following the project's existing patterns 5. Run the tests to verify they pass ## Rules - Match the existing test style exactly (don't introduce new patterns) - Use real implementations over mocks when possible - Each test should be independent — no shared mutable state - Name tests descriptively: what's being tested and what's expected ``` ### Best practices One agent, one job. An agent that "reviews code, writes tests, and deploys" will do all three poorly. Create separate agents for each concern. Most custom agents don't need the most powerful model. `haiku` is fast, cheap, and capable enough for grep-and-report tasks. Save `sonnet` and `opus` for complex reasoning. Set `maxTurns` to prevent agents from spiraling. A focused agent should finish in 10-15 turns. If it needs more, the instructions probably aren't specific enough. Only give agents the tools they need. A read-only reviewer doesn't need `Edit` or `Bash`. Fewer tools means fewer ways to go wrong. Tell the agent exactly how to structure its response — tables, checklists, JSON. Without this, you'll get inconsistent free-form text. Commit project agents to your repo. They're documentation of your team's workflows, reviewable in PRs, and automatically available to anyone who clones the project. # Web ↔ Desktop Sync Source: https://docs.workshop.ai/core-concepts/web-desktop-sync Sync project files between Workshop Cloud and Workshop Desktop so you can work on the same project from either environment. Workshop Cloud and Workshop Desktop can sync project files directly, without a separate GitHub repository. This lets you start a project on the web, continue on desktop, and push changes back — or the other way around. Web ↔ Desktop Sync is separate from [GitHub Integration](/workshop-desktop/github-integration). GitHub sync connects your project to your own repository for version control and collaboration. Web ↔ Desktop Sync moves files between Workshop's two environments — no GitHub account required. ## How It Works Push and pull to move your project files between Workshop Cloud and Workshop Desktop: | Action | What happens | | - | - | | **Push from Desktop** | Sends your local project files to Workshop Cloud | | **Pull to Desktop** | Downloads the latest files from Workshop Cloud into your local project | | **Push from Cloud** | Sends your cloud project files to Workshop Desktop | | **Pull to Cloud** | Downloads the latest files from Workshop Desktop into your cloud project | Syncing is manual — you decide when to push and pull. Nothing happens automatically. ## Getting Started ### Starting from Workshop Cloud Build your project on the web as usual. Your files are stored in the cloud workspace. Open the project settings and click **Push** in the **Web ↔ Desktop Sync** section. This sends your project files so Desktop can download them. In Workshop Desktop, go to the **Projects** page. Cloud projects that haven't been downloaded yet appear at the top. Click the **download** button to pull the project files to your machine. Your project is now on Desktop with all its files. Push and pull as needed to keep both sides up to date. ### Starting from Workshop Desktop The **Web ↔ Desktop Sync** section only appears for a project that was downloaded from Workshop Cloud. A project created directly in Workshop Desktop does not have this section. To move a Desktop-created project to Workshop Cloud or another machine, use [GitHub Integration](/workshop-desktop/github-integration) instead. For a project that was originally downloaded from Workshop Cloud, you can push local changes back up: Navigate to your project and open the settings panel. The **Web ↔ Desktop Sync** section appears under **Integrations**. Click the **Push to web** button (up arrow). This sends your local project files so Workshop Cloud can access them. Sign in to Workshop Cloud with the same account. Your project appears in the project list. Open it and pull the latest changes. ## Using the Sync Controls The **Web ↔ Desktop Sync** section appears in the project settings panel under **Integrations**. In Workshop Cloud it is always available; in Workshop Desktop it appears only for projects that were downloaded from Workshop Cloud. It shows: * The last push and pull timestamps * Sync status (when refreshed) * Three action buttons: | Button | Action | | - | - | | **Up arrow** | Push your changes to the other environment | | **Down arrow** | Pull changes from the other environment | | **Refresh** | Check the current sync status | ### Sync Status After clicking **Refresh**, the status indicator shows: | Status | Meaning | | - | - | | **In sync** | Both sides have the same files | | **Local ahead** | You have unpushed local changes | | **Remote ahead** | The other side has changes you haven't pulled | | **Diverged** | Both sides have independent changes | ## Handling Conflicts If both Workshop Cloud and Desktop have made independent changes to the same project, a pull may result in a merge conflict. Workshop detects this and prompts you: * **Force pull** overwrites your local files with the other side's version. Workshop asks for confirmation before proceeding. Force pull is a destructive operation. The overwritten local changes cannot be recovered. Make sure you know which version you want to keep before confirming. ## Web ↔ Desktop Sync vs GitHub Integration Both features sync project files, but they serve different purposes: | | Web ↔ Desktop Sync | GitHub Integration | | - | - | - | | **Purpose** | Move files between Workshop Cloud and Desktop | Version control with your own GitHub repo | | **GitHub account required** | No | Yes | | **Collaboration** | Between your own Cloud and Desktop environments | With anyone who has access to the repo | | **Use together** | Yes — both can be active on the same project | Yes | # Working with the Agent Source: https://docs.workshop.ai/core-concepts/working-with-the-agent How to communicate with Workshop, scope your work, and get the best results — from first prompt to iterative refinement. ## How Workshop builds Workshop defaults to **Build Mode** — you describe what you want, and it starts building. For most tasks, this is all you need. Describe the goal, provide context, and iterate on the results. When a project needs more upfront thinking, **Plan Mode** is available as a scoping tool. It acts like an experienced technical product manager — asking questions, pushing back on scope, and producing a structured plan before any code gets written. Neither mode is "the right way." Build Mode is the default because most interactions are iterative. Plan Mode is there when you need it. ## Model selector Workshop is multi-model and multi-provider — you choose which model powers your main agent. Open the model selector in the top-left of the conversation to switch at any time. **For most projects, we recommend a strong orchestrator model** like Claude Sonnet 4.6, GLM-5.1, or GPT-5.4. These models are especially good at breaking down complex tasks, using tools effectively, and delegating work to [sub-agents](/core-concepts/sub-agents) when needed. If you need maximum performance on a complex project, top-tier models like Claude Opus will produce excellent results — just note they consume more credits. A strong orchestrator will also delegate simpler subtasks to faster, cheaper models automatically, so you're not paying top-tier rates for everything. **Smaller models like Gemini 3.1 Flash or Claude Haiku 4.5** are a good choice for quick, focused tasks that aren't part of a larger project — reading a document, summarizing something, or answering a question. They're fast and cost-efficient, but may underperform on multi-step builds or complex orchestration. If you're using Workshop Desktop, local models are also available in the selector — see [Local Models](/workshop-desktop/local-models) to set them up. To keep credit use down without picking a model yourself, choose **ARC** at the top of the selector — Workshop routes your work to a suitable model, using a cheaper one for routine tasks and a stronger one for harder ones. See [ARC in Settings](/core-concepts/settings#arc). Open the model selector and click **"What's this?"** at the top for a detailed breakdown of what each model is best at. The currently available models are: | Model | Provider | Best for | Speed | Cost | | - | - | - | - | - | | Claude Sonnet 4.6 | Anthropic | Balanced — code, review, orchestration | Fast | Medium | | Claude Haiku 4.5 | Anthropic | Fast, focused tasks — searches, scans, checklists | Fastest | Low | | Claude Opus 4 | Anthropic | Complex reasoning — architecture, multi-file analysis | Slower | Highest | | GPT-5.4 | OpenAI | Backend coding, code review, general-purpose reasoning | Fast | Medium | | GPT-5.4 Mini | OpenAI | Lighter tasks at lower cost | Fast | Low | | GPT-5.4 Nano | OpenAI | Simple tasks, lowest cost | Fastest | Lowest | | Gemini 3.1 Pro | Google | Frontend dev, long-context analysis (1M token window) | Fast | Medium | | Gemini 3.1 Flash | Google | Fast general-purpose tasks, large context | Fastest | Low | | GLM-5.1 | Z.ai | Frontend dev, long-horizon tasks, cost-efficient coding | Fast | Lowest | | GLM-5 | Z.ai | General-purpose coding | Fast | Low | | GLM-5 Turbo | Z.ai | Fast coding tasks | Fastest | Lowest | | GLM-5v Turbo | Z.ai | Vision + coding tasks | Fast | Low | | Kimi K2.6 | Moonshot | Coding, reasoning, multilingual tasks | Fast | Low | This list is updated regularly as new models become available. For the latest, check the model selector in the app. For more on how different models work together in a single workflow, see [Sub-agents](/core-concepts/sub-agents). ## Communicating effectively The clearer you are about what you want, the better Workshop can deliver. Think of it as a collaborative conversation. ### Be specific and descriptive Vague prompts produce generic results. Specificity gives Workshop the information it needs to make the right decisions. ``` Make me a website. ``` ``` Create a responsive website for my consulting business with a home page, services page, about page, and contact form. Use a professional design with navy blue and gold. Include a sticky navigation menu. ``` ### Provide context and purpose Tell Workshop *why* you're building something, not just *what*. Context about your situation, audience, and constraints leads to better decisions. ``` Build a database. ``` ``` I need a database to track inventory for my small retail business. Store information about products (name, SKU, price, quantity, category, supplier), suppliers (name, contact info, payment terms), and sales transactions. ``` ### Iterate and refine Building software is iterative. Instead of expecting perfection on the first try, guide Workshop through incremental improvements with specific feedback. ``` This isn't right. Fix it. ``` ``` The layout looks good, but I'd like three changes: 1) Make the navigation menu more prominent, 2) Add email validation to the contact form, and 3) Add a gallery section to showcase past projects. ``` ## Prompting by intent ### Starting a project Give Workshop a clear picture of what you're building, who it's for, and what success looks like. ``` I'd like to create a fitness tracking app called "FitTracker". The goal is to monitor workouts, nutrition, and progress toward specific goals. Users should see a dashboard summarizing their activity, calorie intake, and workout history. Include data visualization for tracking progress. ``` ### Describing design and UI Reference specific styles, colors, layouts, and interaction patterns rather than abstract adjectives. ``` The interface should follow a minimalist design with navy, white, and light gray. Use subtle shadows and rounded corners for a modern feel. ``` ``` Add a navigation menu with Home, Products, Services, About, and Contact. Fixed at the top, collapses into a hamburger on mobile. Highlight the active page. ``` ### Defining functionality Describe user interactions as specific scenarios — what the user does, what should happen, and what edge cases to handle. ``` When a user clicks "Submit", validate all form fields. If validation fails, show error messages below the problematic fields. On success, send the data and show a confirmation. ``` ### Backend and API work Specify data models, integrations, performance requirements, and security considerations. ``` Connect to the OpenWeatherMap REST API. Authenticate with our API key, fetch current weather and 5-day forecast, and cache responses for 30 minutes. ``` ### Debugging and troubleshooting Describe what you expected, what actually happened, and any relevant context about when the issue occurs. ``` The contact form fails silently when attachments exceed 5MB. Instead of a blank error page, show a user-friendly message with the file size limit. ``` ### Requesting changes Be specific about *what* to change, *where* to change it, and *why*. ``` On the product detail page: 1) Move description above specifications, 2) Make images larger with a zoom feature, 3) Add a "Frequently bought together" section at the bottom. ``` ## Plan Mode Plan Mode is an optional scoping tool for when you want structured requirements gathering before building. It's especially useful when starting a new project from scratch or when you're not sure exactly what you need. ### What Plan Mode does * **Asks probing questions** to understand your true needs — typically 2–3 structured questions per turn * **Scopes down to an MVP** before expanding — build something valuable first * **Pushes back** when you're over-engineering or adding unnecessary complexity * **Produces a plan document** that Build Mode can follow step by step ### How it works Plan Mode asks questions to understand your needs using structured multiple-choice for clear, efficient communication. Based on your answers, Plan Mode identifies the smallest version that delivers real value. It steers away from scope creep. Before generating the plan, Plan Mode presents a concise summary of scope and technical decisions. You review and approve — or request adjustments. Plan Mode creates a structured `plan.md` file saved in your project under `./plans/[timestamp_topic-name]/`. ### The plan document Each plan is append-only — new plans never overwrite existing ones, preserving your decision history. The plan includes: * **Spec Header** — Name, smallest scope, non-goals * **Decision Snapshot** — Key technical and product decisions * **Architecture at a Glance** — Recommended stack and structure * **Implementation Plan** — Step-by-step development phases * **Verification & Demo Script** — How to test each phase * **Deploy** — Deployment strategy Plan Mode is read-only — it cannot modify files or execute code. Planning stays separate from implementation. ### Switching between modes Open the **+** menu to the left of the conversation input and choose **Mode: Build** to reveal the mode picker, then select **Plan** or **Build**. You can also just type "Use Plan mode." (or "Switch to Build mode.") — Workshop will flip the toggle for you. The mode persists across sessions and defaults to Build Mode. ![Plan Mode menu under the + button, with Build and Plan options](https://static.workshop.ai/docs-site/plan-mode/plan-mode-menu-v2.webp) A common workflow for new projects: 1. **Plan Mode** — Define requirements, scope the MVP, create a plan 2. **Build Mode** — Implement Phase 1 3. **Plan Mode** — Evaluate results, plan Phase 2 4. **Build Mode** — Continue implementation For existing projects or clear requirements, skip Plan Mode entirely and work in Build Mode. ## Voice input Workshop supports voice dictation — speak your prompt instead of typing it. Your speech is transcribed and inserted into the message input. **How to use it:** * Click the **microphone icon** in the message input toolbar, or press ⌘⇧D (Mac) / Ctrl⇧D (Windows/Linux) * Speak your prompt — the button pulses while recording * Click the microphone again (or press the shortcut again) to stop — Workshop transcribes your audio and inserts the text * Edit the transcription if needed, then send as usual Voice input works in both Workshop Cloud and Desktop. Audio is sent to a transcription service for processing — it is not stored after transcription completes. Voice input is especially useful for describing UI changes, explaining bugs, or dictating long prompts where typing would be slower. ## Files and attachments You can attach files directly in the message input — but how you attach a file determines what Workshop can do with it. **Attaching in the input box (drag-and-drop, paste, or clipboard)** The model can read and understand the file — useful for showing Workshop a design reference, a screenshot of a bug, or a spec to follow. The file is *not* stored anywhere your app can access, so it won't appear in what gets built. **Uploading a file for your app to use** If you want Workshop to use a file inside your app — a logo, a background image, a data file — you need to upload it first: 1. Click the **+** button in the message input and choose **Files & Uploads**, or go to Workshop Hub → **Uploads** 2. Type **@** in the message input and select the file by name 3. Tell Workshop how to use it — e.g. *"Use @logo.png as the logo in the header"* **Context vs content — when it matters:** * **Context** files help Workshop *understand* your project — reference material, design specs, data schemas, or documentation it should read but not directly include in output. Add files to your project's context through the sidebar Sources panel. * **Content** files are material Workshop should *use directly* — images to display, data files to process, CSVs to transform. Upload these and reference with @ in your message. For persistent context across conversations, use the Sources panel in the sidebar or the `.workshop/` directory structure described in [Context and Memory](/core-concepts/context-and-memory). ## Message queuing You can keep typing while Workshop is responding. Messages you send during an active response are queued and delivered automatically once the current response completes. This means you don't need to wait for the agent to finish before giving your next instruction — just type and send as you think of things. Queued messages appear above the input so you can review or remove them before they're sent. ### Send now If you want your queued messages sent immediately without waiting for the current response to finish, click **Send now**. This interrupts the agent's current response and delivers your queued messages as a single combined prompt. ## Managing long conversations Every conversation has a finite context window — the amount of information Workshop can hold in memory at once. As a conversation grows, responses can slow down and quality can degrade toward the end of the window. Workshop handles this automatically so you can focus on building. ### Auto-compaction When your conversation approaches the context window limit, Workshop automatically compacts it. This creates an intelligent summary of the conversation so far and continues seamlessly — no action needed from you. Here's what happens: 1. Workshop detects that the conversation is nearing its context limit 2. It generates a focused summary that preserves the key decisions, code context, and current task state 3. Your conversation continues in a new child conversation, carrying forward the essential context 4. The original conversation becomes read-only history you can review anytime Auto-compaction is always active. You don't need to configure or enable anything — long conversations stay fast without manual intervention. ### The `/compact` command You can also compact manually at any time using the `/compact` command. This is useful when you want to start a fresh context on your own terms — for example, after completing a milestone. When a conversation nears the context limit, a banner appears suggesting compaction: ![Workshop suggests compaction when context is running low](https://static.workshop.ai/docs-site/compact/compact-banner.png) You can click **Compact conversation and continue** in the banner, or type `/compact` in the chat input at any time. ``` /compact ``` Summarizes everything and continues in a new conversation. ``` /compact focus on the authentication flow ``` Prioritizes specific context in the summary. Workshop analyzes the full conversation and distills it into a structured summary — capturing your original request, key decisions, current project state, and what to do next.