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:

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)

.md Documentation

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.

# Project Name A brief description of what this app does. ## Setup 1. Clone the repo 2. Run npm install 3. Copy .env.example to .env

When 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)

.env Configuration

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.

# Database DATABASE_URL=postgresql://localhost:5432/myapp # API Keys STRIPE_SECRET_KEY=sk_test_xxxxx OPENAI_API_KEY=sk-xxxxx # App Settings PORT=3000 NODE_ENV=development

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 Data / Config

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.

{ "name": "my-app", "version": "1.0.0", "scripts": { "dev": "next dev", "build": "next build" }, "dependencies": { "next": "^14.0.0", "react": "^18.0.0" } }

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)

.yml Configuration

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.

# .github/workflows/deploy.yml name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm install - run: npm run build

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)

.txt Simple Text

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.

MIT License Copyright (c) 2026 Bluemoonkey Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files...

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 SEO / Crawling

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.

# Allow all crawlers User-agent: * Allow: / # Block admin and API paths Disallow: /admin Disallow: /api Disallow: /settings # Point to sitemap Sitemap: https://yoursite.com/sitemap.xml

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 AI Discovery

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.

# Bluemoonkey > Visual blueprint canvas for planning AI app architectures. ## Docs - [Cursor Prompt Template](https://www.bluemoonkey.com/cursor-app-prompt-template.html) - [Claude Code Prompt Template](https://www.bluemoonkey.com/claude-code-prompt-template.html) - [Vibe Coding Workflow](https://www.bluemoonkey.com/vibe-coding-workflow.html) ## API Not yet available. ## Links - [Open Canvas](https://www.bluemoonkey.com/app) - [Resources](https://www.bluemoonkey.com/resources.html)

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 SEO / Indexing

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.

<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://yoursite.com/</loc> <priority>1.0</priority> </url> <url> <loc>https://yoursite.com/about</loc> <priority>0.8</priority> </url> </urlset>

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)

config Configuration

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.

// next.config.js module.exports = { reactStrictMode: true, images: { domains: ['cdn.example.com'], }, env: { CUSTOM_KEY: process.env.CUSTOM_KEY, }, }

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)

custom 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.

# schema.graphql type Query { reviews: [Review!]! review(id: ID!): Review } type Review { id: ID! text: String! rating: Int! sentiment: String! }

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:

## File: README.md Type: Markdown (.md) Path: README.md Purpose: Project overview with setup instructions, tech stack, and development commands. Include sections for installation, environment setup, available scripts, and project structure.

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 TypeBest ForFormat
.mdREADME, docs, changelogsPlain text with # headings and - bullets
.envAPI keys, secrets, settingsKEY=value pairs
.jsonPackage config, API data, translations{} for objects, [] for arrays
.ymlCI/CD, Docker, cloud configsIndentation + colons
.txtLicenses, notes, simple textNo formatting
robots.txtSearch engine crawling rulesUser-agent / Disallow directives
llms.txtAI model discoveryMarkdown-like with > summaries
sitemap.xmlSearch engine indexingXML with <url> tags
Config (generic)Tool-specific configsDepends on tool
OtherCustom file typesYou 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.