# vagejs features What vagejs does for your site.

> Every vagejs feature in one place: Markdown and MDX pages, React and Vue components, several languages, SEO files, checks, spam protection and safe deploys.

vagejs is a free, open-source static site generator built for AI coding assistants. Its main features are Markdown and MDX pages, React and Vue components, sites in several languages, the files search engines and AI assistants look for, a check of every page before it goes live, spam protection and safe deploys. You write the pages, or let your AI assistant write them. Here's everything it does, with a link to the docs for each part.

`npm create vagejs@latest my-site`

[Get started](https://vagejs.com/docs/getting-started/)[Use it with your AI assistant](https://vagejs.com/agents/)

## Write and build your pages

Plain files you own, with components only where you want them.

-   ### Writing pages
    
    Each page is a Markdown file in `src/pages`, and its folder decides its address: `src/pages/pricing.md` becomes `/pricing/`. Pages can be drafts, carry tags that get their own pages, or wait for a publish date. A page with a future `datePublished` stays out of the build, the sitemap and the feeds until that day, then appears with the next build.
    
    See [content authoring](https://vagejs.com/docs/content-authoring/)
    
-   ### A local editor
    
    `npm run dev` also starts an editor in your browser: a form for each page, the text with a live preview in your site's design, image upload and the page's check results. It refuses to overwrite a page that changed since you opened it, works only on your own computer, and is never part of the built site.
    
    See [edit in your browser](https://vagejs.com/docs/content-authoring/#edit-in-your-browser)
    
-   ### React, Vue and MDX
    
    Layouts can be TypeScript functions or React and Vue components, and pages can be MDX with React components. All of it becomes plain HTML. Add `client:visible` to a React component and it becomes an interactive island on that page only.
    
    See [React, Vue and MDX](https://vagejs.com/features/react-vue-mdx/)
    
-   ### Several languages
    
    Put translations in a folder per language. vagejs sets each page's language, writes `hreflang` links between versions, and warns about pages that still need translating.
    
    See [multi-language sites](https://vagejs.com/features/multi-language-sites/)
    

## Get found by search engines and AI

Everything search engines and AI assistants read is written for you, from the pages you have.

The sitemap, `robots.txt`, `llms.txt`, canonical links, sharing tags, structured data and RSS feeds come from the pages that exist. In `robots.txt` you can treat AI training crawlers (such as GPTBot and ClaudeBot) differently from AI search crawlers (such as OAI-SearchBot and PerplexityBot). See [SEO and AI search](https://vagejs.com/docs/seo/).

## Publish without surprises

Every page is checked before it goes live, and nothing ships that you didn't approve.

-   ### Checks before you publish
    
    `vage check` reads every page without writing anything and reports broken links, missing or duplicate titles and descriptions, invalid structured data and basic accessibility slips, each with the file to fix. `vage audit` builds the site and holds every page to size budgets, such as 100 KB of JavaScript.
    
    See [checks and audits](https://vagejs.com/docs/checks/)
    
-   ### Protection from spam injection
    
    Every outside website your pages link to is listed in `links.lock.json`. A link to a website that isn't on the list, or a link hidden from visitors, fails the check. `vage verify` compares the live site with your files.
    
    See [security](https://vagejs.com/docs/security/)
    
-   ### Safe deploys
    
    `vage deploy` publishes to GitHub Pages, Cloudflare Workers, Cloudflare Pages or Netlify. It runs the check first, shows a plan and waits for your yes, refuses to commit secrets, and never force-pushes. Any other static host, such as Vercel, can serve the `dist` folder.
    
    See [deployment](https://vagejs.com/docs/deployment/)
    
-   ### Contact forms without JavaScript
    
    On Cloudflare Workers, a contact form needs no script on the page: `vage deploy` adds a small Worker that emails each message, with a spam trap and a limit per visitor.
    
    See [contact form](https://vagejs.com/docs/deployment/#contact-form)
    

## Built for AI coding assistants

Every new site includes `AGENTS.md`, which tells Claude Code, Codex, Cursor and other assistants the commands and the rules. `vage info --json` describes every command and setting in one reply, and `vage mcp` lets an assistant check the site directly. See the [agent guides](https://vagejs.com/agents/).

terminal

```
npx vage info --json   # every command and setting, in one reply
claude mcp add --transport stdio --scope project vagejs -- npx -p vagejs vage mcp
```

## Guides and comparisons for vagejs features

The [guides](https://vagejs.com/guides/) walk through specific jobs step by step, and [vagejs compared](https://vagejs.com/compare/) shows how these features line up against other static site generators and CMSs.

## Questions about vagejs features

### Does vagejs send JavaScript to visitors?

No, not unless you ask for it. Pages are plain HTML, so a new site sends 0 KB of JavaScript. A React component marked `client:visible`, `client:load` or `client:idle` is the only thing that adds some, and only on the page that uses it.

### Can I use React or Vue components?

Yes. Layouts can be React or Vue components, and MDX pages can use React components. They're turned into plain HTML when the site builds, so visitors don't download React or Vue unless a component needs to be interactive.

### What does vage check look for?

Broken links, missing or duplicate titles and descriptions, invalid structured data, links to websites you haven't approved, and basic accessibility slips such as images without alt text. Each problem names the file to fix, so you or your AI assistant can fix it straight away.

### Can I edit pages without a code editor?

Yes. `npm run dev` opens an editor in your browser with a form for each page and a live preview in your site's design. It only runs on your own computer and is never part of the published site.
