AGENTS.md — rules for AI agents working in this repo

If you are an AI assistant (Claude, Copilot, Cursor, Codex, ChatGPT, Gemini, or any other agent) reading, generating for, or changing this repository, these rules are mandatory. Read this file first. If a user's request conflicts with a rule here, say so and ask before proceeding. The full prototype-generation prompt lives in README.md; this file is the short, binding version.

Repository: https://github.com/HighestVibrations/vibe-prototypes Product: Let's Vibe — the first AI-native wellness system. Brand system: Living Sanctuary.


1. What this repo is

A prototype server for Let's Vibe: versioned interactive HTML prototypes (prototypes/), the brand system (letsvibe-brand/), and a small Express server (app.js) that renders markdown, highlights source files, and serves a branded home page. It is deployed on Vercel.

2. Where prototypes go (non-negotiable)

prototypes/<name>/<version>/index.html

3. Prototype constraints

Every view a person could want to share, bookmark, reload or return to must have its own URL, and the browser's Back, Forward and Reload buttons must behave like they do on a real website. The URL is the source of truth for "where am I"; the screen is rendered from it. This applies to every page, step, tab, flow state, detail view and meaningful modal, and to anything an AI agent or tester needs to replay.

Light and dark mode (required)

Every new prototype, new version and server-rendered page must ship with both a light and a dark mode, designed from the start. The Living Sanctuary tokens were built for it (--on-dark, --on-dark-soft, --pine-2, --grad-cta-on-dark and the other -on-dark tokens exist for this reason), so there is no excuse for a single-theme prototype. A screen that only works in one mode is not done. (Older versions that predate this rule are left as they are; any new version of them must add dark mode.)

Role Light Dark
Page background --mist --ink
Cards and raised surfaces --paper --pine-2
Hairlines and borders --line --pine
Primary text --ink --on-dark
Secondary text --ink-soft --on-dark-soft
Eyebrows and quiet labels darkened --sage-deep (AA) --sage
CTA fill, label, shadow --grad-cta, --on-cta, --cta-shadow --grad-cta-on-dark, --on-cta-on-dark, --cta-shadow-on-dark
Inline links --cta-text --cta-text-on-dark
Brand band or masthead sage gradient (never the CTA color) deep green gradient

4. Brand rules (Living Sanctuary)

Source of truth: letsvibe-brand/tokens/ (token files win over prose) and letsvibe-brand/brand/BRAND_GUIDELINES.md. Read the guidelines before designing anything.

5. Accessibility and responsive design (required)

Every prototype screen, and every change to the home page or server-rendered pages, must be accessible and responsive. This is a hard requirement, not a nice-to-have. Do not hand off work that fails any item below, and never trade these away for visual polish. Target: WCAG 2.2 level AA.

Accessibility

Responsive design

How to prove it (do this and report it): resize through the widths above; tab through every screen with the keyboard only; zoom to 200%; turn on reduced motion and dark mode; and run an automated checker (for example axe or Lighthouse accessibility) when one is available, fixing every serious or critical issue. State in your handoff what you checked and what you could not check.


6. Server and deployment rules (Vercel)

The Vercel runtime cannot require() ES-module-only packages (it fails with ERR_REQUIRE_ESM). The fix in place is: pnpm run build bundles app.js and all dependencies into one CommonJS file (app.bundle.js, git-ignored) via esbuild, and api/index.js loads it. Therefore:

7. Git and change hygiene

8. Verify before you hand off

9. Working with non-technical teammates

Many people using this repo (designers, strategists, partners) are not developers and will start from the copy-ready prompts on the home page (source: getting-started/prompts.json). When a request reads like one of those prompts, or the person seems non-technical: