Create a new merjs page

SkillDev tools

Scaffold a new merjs page. Use when the user wants to create a new page, route, or view.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Create a new merjs page skill

What this skill tells your AI

The instructions your AI receives, as published by justrach/merjs in .claude/skills/new-page/SKILL.md and read by ahel’s review.

Scaffold a new page at app/$ARGUMENTS.zig that follows the merjs conventions.

Steps

  1. Create app/$ARGUMENTS.zig with this template:
const mer = @import("mer");
const h = mer.h;

pub const meta: mer.Meta = .{
    .title = "PAGE_TITLE",
    .description = "PAGE_DESCRIPTION",
};

const page_node = page();

pub fn render(req: mer.Request) mer.Response {
    return mer.render(req.allocator, page_node);
}

fn page() h.Node {
    return h.div(.{ .class = "page" }, .{
        h.h1(.{}, "PAGE_TITLE"),
    });
}
  1. Replace PAGE_TITLE and PAGE_DESCRIPTION with sensible values derived from the page name
  2. Run zig build codegen to regenerate routes
  3. Confirm the new route appears in src/generated/routes.zig
  4. Tell the user the route is available at the mapped URL path

Conventions

  • Every app/ page MUST export pub const meta: mer.Meta
  • Every page MUST export pub fn render(req: mer.Request) mer.Response
  • Use the h DSL (mer.h) for HTML — prefer comptime nodes
  • For dynamic routes, use bracket syntax: app/users/[id].zig/users/:id
  • app/index.zig maps to /
  • app/foo/index.zig maps to /foo
  • Add pub const prerender = true; for static pages that don't need request data

Signals

GitHub stars
354
Forks
17
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
new-page-justrach
Source
github.com/justrach/merjs