Skip to content
tutorial

Why Amrify Works So Well with Claude Code, Cursor, and Copilot

March 13, 2026 Updated September 17, 2026 By Alex Crabinsky
Why Amrify Works So Well with Claude Code, Cursor, and Copilot

An AI coding tool is only as good as the codebase you point it at. Claude Code, Cursor, Copilot and Windsurf can all read a project, propose edits and generate whole pages, and on most website templates they spend half their effort guessing: which of four config files holds the phone number, what a service page’s frontmatter is supposed to contain, whether the file should be blog-post.md or blogPost.md. You end up reviewing the guesses.

Amrify was built by one developer who runs the company’s own live sites on it with exactly these tools, so the codebase was shaped around what makes them accurate. None of it is magic. It is five ordinary engineering decisions that happen to be the ones an assistant needs.

1. Every Content Type Has a Zod Schema

Pages, posts, services, FAQs, sections: each is a Content Collection with a Zod schema. When an assistant reads the project it finds the exact list of fields, their types, and which are optional, in one file:

// the assistant reads this and knows what a service page needs
const services = defineCollection({
  loader: glob({ pattern: "**/*.md", base: "./src/content/services" }),
  schema: z.object({
    title: z.string(),
    description: z.string(),
    hero: heroSectionSchema,
    about: aboutBlockSchema.optional(),
    faqs: faqSectionSchema.optional(),
  }),
});

Ask Claude Code for “a new service page for gutter installation” and the frontmatter comes back right the first time, because the schema is the specification. And if the tool does get a field wrong, the build fails with the file and field named, which is the error an assistant fixes on its own without you reading a stack trace.

2. Configuration Is JSON, in One Place

Site-wide settings are plain JSON under src/config/, not props scattered through components or constants in three TypeScript files. In the free Starter that is a single validated site.json; Pro splits it by concern (identity, SEO and business data, theme, menus, UI text), but every file is still flat JSON:

// src/config/site.json
{
  "title": "My Business",
  "base_url": "https://mybusiness.com",
  "siteName": "My Business",
  "logo": "/images/logo.svg"
}

Every model has seen more JSON than any other format. “Change the primary color” becomes a one-line edit in a known file, not a search across the component tree.

3. The File Layout Never Surprises Anyone

src/
├── config/          # JSON only: identity, SEO, theme, menus
├── content/         # Markdown only
│   ├── blog/
│   ├── services/
│   └── sections/    # homepage and shared sections
└── (routes come from the shared layouts package)

Config is config, content is content, and page code lives in shared packages rather than in the site. An assistant asked to “add a blog post about ice dams” has one possible place to put it and one schema to satisfy. The same request against a template with page code, config and content mixed into src/pages/ produces a coin flip.

4. CLAUDE.md and AGENTS.md Ship in the Repo

Both the Starter and Pro include a CLAUDE.md and an AGENTS.md at the root. They tell the tool which files to touch for which kind of change, in what order, and what to run before a task counts as done. This is the difference between an assistant that reads a thousand files to orient itself and one that reads one.

Pro goes further with four bundled Claude Code skills: packaged workflows that configure a new site from a business’s details and write its content. Give it a business name, trade and city, and a first draft of the whole site is about an hour’s work, reviewed as a diff like any pull request.

5. The Build Is the Reviewer

Zod validation, astro check and the Lighthouse 100 gate all run in CI. An assistant’s output has to pass the same checks a human’s does, so the review loop is “run the build, read the error, fix it” rather than “deploy and see.” This is what makes it safe to let a tool generate fifty city pages at once: the build gate refuses thin content and malformed frontmatter before any of it reaches a branch.

Tool by Tool

Claude Code reads the whole project and follows CLAUDE.md. On Amrify it can scaffold pages against the schemas, change theme tokens, add a collection type with a proper Zod definition, and update SEO config and structured data, all with the build as its check.

Cursor works best with typed code. TypeScript throughout plus Zod-inferred types give its inline edits and refactors the type information they need.

GitHub Copilot is a pattern completer. Show it one service page and the next one comes out matching, because every service page on the system has the same frontmatter shape.

Windsurf benefits from clear module boundaries. Config, content, types and shared layouts are separate directories with separate jobs, so a change in one does not ripple into another.

What Breaks These Tools

For contrast, the traits that turn an assistant into a liability on a typical template:

  • Untyped frontmatter. Field names inferred from examples, and wrong a third of the time
  • Config in code. Settings buried in component props or environment lookups
  • Inconsistent naming. Two conventions in one repo means the tool picks one at random
  • Magic strings. Behavior switched by undocumented string values
  • Deep nesting. Config objects five levels deep that get truncated or misread
  • Mixed concerns. Layout, data fetching and copy in the same file

The Amrify repo has none of these, and the CI gate keeps it that way.

Try It Yourself

When the free Starter repo opens at launch, clone it and open it in whichever tool you use. Ask for four things:

  1. Change the business name and brand colors
  2. Add a blog post
  3. Create a page with a hero section
  4. Add an item to the navigation

Then run pnpm build. If everything passes on the first try, that is the structure doing its job. For lead-generation sites, Amrify Pro adds the ten trade templates, the lead engine, the local SEO engine and the four skills, all in one purchase with future niche templates included.


The same idea applies to how AI describes your business. Structured data and an llms.txt file are how you tell Google and ChatGPT what your site is, in a form they can read without guessing. The free llms.txt generator writes that file from a short form, and the Website Grader tells you whether your current site has one. Neither needs an account.

Tags: tutorial
Share:

Ready to build your next agency site?

Start with the free tools today and the free Starter at launch, or own Amrify Pro - every niche template in one purchase.

Get Amrify Docs