File Types in App Development
Every app needs more than code — it needs config files, documentation, and metadata. This guide explains each file type in the Bluemoonkey File node, what it does, and when to use it. No coding experience required.
What is the File node?
The File node is a node type in Bluemoonkey's blueprint canvas. It lets you declare a static file that your app needs — like a README, a configuration file, or a robots.txt. When you export your blueprint as a prompt for Cursor or Claude Code, the File node tells the AI exactly what file to create, what type it is, and what it should contain.
Each File node has three fields:
- File path — where the file lives in your project (e.g.,
README.md,.env.example,public/robots.txt) - File type — what kind of file it is, selected from a dropdown
- Purpose — a plain English description of what the file does and what it should contain
When you pick a file type from the dropdown, the AI coder knows the format, structure, and conventions for that file type. This prevents Cursor from guessing and creating files with the wrong structure.
New to app architecture? Read our App Architecture for Beginners guide first — it explains the five core components every app needs. The File node is a supporting piece that sits alongside those components.
Markdown (.md)
Markdown is a lightweight formatting language. You write plain text with simple symbols like # for headings and - for bullet points. It renders as formatted text on GitHub, in editors, and in most documentation tools.
Use it for: README files, documentation, changelogs, API docs, contribution guides, and any file that humans will read.
npm install
3. Copy .env.example to .envWhen to use in Bluemoonkey: Add a File node with type Markdown whenever your app needs a README, a docs folder, or any human-readable documentation file. Cursor will generate properly formatted Markdown with headings, lists, and code blocks.
Environment config (.env)
A .env file stores environment variables — secrets and settings that your app reads at startup. This includes API keys, database connection strings, and feature flags. The file is loaded into process.env in Node.js, so your code can access values without hardcoding them.
Never commit your real .env file to Git. Create a .env.example with fake values for other developers to copy. Add .env to your .gitignore file.
Use it for: API keys (Stripe, OpenAI, Supabase), database URLs, port numbers, environment names (development, production), and feature flags.
When to use in Bluemoonkey: Add a File node with type .env whenever your blueprint references external services that need API keys. In the Purpose field, list every variable the app needs. Cursor will generate the .env file with the correct variable names and placeholder values.
JSON (.json)
JSON (JavaScript Object Notation) is a structured data format. It uses curly braces {} for objects, square brackets [] for arrays, and key-value pairs separated by colons. It is the most common data format in web development — APIs return JSON, package managers use it, and most configuration tools accept it.
Use it for: package.json (Node.js dependencies), tsconfig.json (TypeScript config), API response fixtures, translation files, and any structured data that needs to be machine-readable.
When to use in Bluemoonkey: Add a File node with type JSON for any structured data file your app needs. This is especially common for config files like tsconfig.json, tailwind.config.json, or manifest.json for PWA setups. Cursor will generate valid JSON with the correct structure.
YAML (.yml / .yaml)
YAML is another structured data format, like JSON but more readable. Instead of braces and quotes, it uses indentation and colons. It is the standard format for CI/CD pipelines (GitHub Actions, GitLab CI), Docker Compose files, and many cloud deployment configs.
Use it for: GitHub Actions workflows, Docker Compose files, Kubernetes configs, CI/CD pipeline definitions, and cloud service configurations.
When to use in Bluemoonkey: Add a File node with type YAML when your app needs CI/CD pipelines, Docker configurations, or cloud deployment files. Cursor will generate properly indented YAML that passes validation.
Plain text (.txt)
Plain text is the simplest file type — no formatting, no structure, just text. Use it when you need a file that any system can read without parsing. It is a catch-all for files that do not fit a more specific type.
Use it for: License files (LICENSE.txt), simple notes, seed data, placeholder content, and any file that does not need structure or formatting.
When to use in Bluemoonkey: Add a File node with type Plain text for simple files that do not need formatting or structure. If the file needs headings or formatting, use Markdown instead. If it needs key-value pairs, use .env or JSON.
robots.txt
robots.txt is a file that lives at the root of your website (yoursite.com/robots.txt). It tells search engine crawlers (Google, Bing, etc.) which pages they are allowed to index and which they should ignore. Without it, Google may crawl pages you do not want in search results, or may waste time crawling duplicate or private pages.
Use it for: Any public website. If your app has pages that should not appear in Google search results (admin panels, user dashboards, API endpoints), robots.txt is where you block them.
When to use in Bluemoonkey: Add a File node with type robots.txt whenever your app is a public website. In the Purpose field, specify which paths should be allowed and which should be blocked. Cursor will generate a valid robots.txt with the correct directives.
llms.txt
llms.txt is a newer standard — it is like robots.txt but for AI models instead of search engines. You place it at the root of your site (yoursite.com/llms.txt), and it gives AI assistants a structured summary of your project, documentation, and API. When someone asks an AI about your product, the AI can read your llms.txt to understand what you do.
Use it for: Any app with a public API, documentation, or a product that people might ask AI assistants about. If you want AI tools to accurately describe your app, llms.txt helps them get it right.
When to use in Bluemoonkey: Add a File node with type llms.txt when your app is a public product with documentation. In the Purpose field, describe what your app does and list the key documentation links. Cursor will generate a properly formatted llms.txt following the standard structure.
sitemap.xml
sitemap.xml is a file that lists every URL on your website that you want search engines to index. Google reads your sitemap to discover pages it might miss during normal crawling. Without a sitemap, Google relies on links — if a page is not linked from anywhere, Google may never find it.
Use it for: Any public website with more than a few pages. If your app generates content dynamically (blog posts, user profiles, product pages), your sitemap should be generated dynamically too.
When to use in Bluemoonkey: Add a File node with type sitemap.xml when your app is a public website with multiple pages. In the Purpose field, list the main URLs the app should include. Cursor will generate a valid XML sitemap with the correct schema.
Config file (generic)
The generic config file type is a catch-all for configuration files that do not fit a specific format. Use it when your app needs a config file but the format is specific to a tool or framework — like .eslintrc, .prettierrc, next.config.js, or docker-compose.yml (if you prefer not to use the YAML type).
Use it for: Linter configs, formatter configs, framework-specific configs, build configs, and any file that configures a tool rather than storing app data.
When to use in Bluemoonkey: Add a File node with type Config file (generic) when your app needs a tool-specific configuration file. In the Purpose field, name the tool and describe what the config should do. Cursor will generate a config file in the correct format for that tool.
Other (user-defined)
When none of the preset file types fit, select "Other" and type your own. This gives you full flexibility — you can specify any file extension or format your app needs.
Use it for: Specialized file types like .graphql (GraphQL schema files), .prisma (Prisma schema), .sql (database migrations), .svg (vector graphics), or any custom format specific to your stack.
When to use in Bluemoonkey: Select "Other" whenever your app needs a file type that is not in the dropdown. Type the extension or format name in the free-text field. Cursor will treat it as a custom file type and generate it based on your Purpose description.
How file types export into your prompt
When you export your blueprint, every File node becomes a section in the prompt that looks like this:
The AI coder reads this and creates the file with the correct format, structure, and content. Because you specified the file type, Cursor knows whether to use Markdown formatting, JSON syntax, YAML indentation, or plain text — no guessing involved.
This is why the File Type dropdown matters: it controls the format and conventions the AI uses when generating the file. If you pick Markdown, Cursor adds headings and lists. If you pick JSON, Cursor adds braces and valid syntax. If you pick YAML, Cursor uses indentation and colons. The file type tells the AI how to structure the output.
Quick reference table
| File Type | Best For | Format |
|---|---|---|
| .md | README, docs, changelogs | Plain text with # headings and - bullets |
| .env | API keys, secrets, settings | KEY=value pairs |
| .json | Package config, API data, translations | {} for objects, [] for arrays |
| .yml | CI/CD, Docker, cloud configs | Indentation + colons |
| .txt | Licenses, notes, simple text | No formatting |
| robots.txt | Search engine crawling rules | User-agent / Disallow directives |
| llms.txt | AI model discovery | Markdown-like with > summaries |
| sitemap.xml | Search engine indexing | XML with <url> tags |
| Config (generic) | Tool-specific configs | Depends on tool |
| Other | Custom file types | You define it |
Plan your files before Cursor guesses
Add File nodes to your blueprint and tell the AI exactly what files to create — no more missing README files or broken config files.
Open Canvas — Free →FAQ
What is the File node in Bluemoonkey?
The File node lets you declare a static file that your app needs — like a README, a config file, or a robots.txt. You set the file path, choose a file type from the dropdown, and describe what the file is for. When you export your blueprint, the File node tells the AI coder exactly what file to create and what it should contain.
What is the difference between .json and .yaml?
Both are structured data formats. JSON uses curly braces and quotes. YAML uses indentation and colons. JSON is more common in APIs and web apps. YAML is more common in CI/CD pipelines and configuration files. Either works — pick the one your tools expect.
What is llms.txt and why does my app need it?
llms.txt is a file you place at the root of your site that gives AI models a structured summary of your project, documentation, or API. It is like robots.txt but for AI crawlers instead of search engines. It helps AI tools understand your app when someone asks about it.
Do I need a robots.txt file?
If your app is a public website, yes. robots.txt tells search engine crawlers which pages they can and cannot index. Without it, Google may crawl pages you do not want indexed, or may not crawl pages you do want indexed.
What is a .env file?
A .env file stores environment variables — secrets like API keys, database URLs, and feature flags. It is never committed to version control. Your app reads it at startup to load configuration without hardcoding secrets into the code.
What happens when I select "Other" as the file type?
When you select "Other," a free-text input appears where you type your own file type or extension. This is useful for specialized file types like .graphql, .prisma, .sql, or any custom format. Whatever you type flows into the exported prompt alongside the path and purpose fields.
Does the file type affect how Cursor generates the file?
Yes. The file type tells Cursor what format and conventions to use. If you pick Markdown, Cursor adds headings and bullet points. If you pick JSON, Cursor generates valid JSON syntax. If you pick YAML, Cursor uses indentation and colons. The file type controls the structure of the generated output.