# Create An Edge App

> The recommended way to create an Edge App

- Skill: `majiayu000/create-an-edge-app` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/create-an-edge-app`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/create-an-edge-app/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/create-an-edge-app

---


# Creating an Edge App

## When Creating an Edge App

- Create a new directory for a new Edge App inside the `edge-apps/` directory.
  - The directory name should follow the `kebab-case` naming convention.
- **Consult Figma designs** before starting implementation.
  - Ensure the [Figma MCP server](https://mcp.figma.com/mcp) is set up in Claude Code.
  - Use the Figma MCP server to access design specifications, mockups, and UI requirements.
  - Extract design tokens such as colors, spacing, typography, and component specifications from Figma.
  - Ensure the implementation matches the approved designs in Figma before proceeding with development.

## Directory Structure

The new Edge App directory structure should closely resemble that of the following Edge Apps:

- QR Code (`edge-apps/qr-code/`)
- Menu Board (`edge-apps/menu-board/`)
- Grafana (`edge-apps/grafana/`)
- CAP Alerting (`edge-apps/cap-alerting/`)

These Edge Apps heavily rely on the Edge Apps library, which lives inside the `edge-apps/edge-apps-library/` directory.

- Most of the scripts inside the `package.json` of each of these apps execute the `edge-apps-scripts` command.
- All of these apps depend on the `@screenly/edge-apps` library, which maps to `workspace:../edge-apps-library`.
- `edge-apps/[new-edge-app]/src/main.ts` is a required file.
  - Running `bun run build` inside `edge-apps/[new-edge-app]` will run `edge-apps-scripts build`, which is very opinionated.

Refer to `edge-apps/qr-code/` as a complete working template to understand the full directory structure and configuration.

- While it still uses the `@screenly/edge-apps` library, it features a simpler implementation with a lower code footprint compared to the other aforementioned Edge Apps, making it an excellent starting point for new projects.
- The library abstracts much of the complexity, allowing developers to focus on core functionality with minimal boilerplate.

### About the Manifest Files

The new app should have the following manifest files:

- `screenly.yml`
- `screenly_qc.yml`

See `edge-apps/qr-code/screenly.yml` for a working example. More information about the manifest files can be found in the [Edge Apps documentation in the `Screenly/cli` repository](https://raw.githubusercontent.com/Screenly/cli/refs/heads/master/docs/EdgeApps.md).

When creating the manifest files, ensure to:

- Omit the `id` field, as it will be added later when the new app gets deployed.

### About `index.html`

The `index.html` file should follow these best practices:
- Organize HTML code into templates and Web Components as the app grows in complexity.
- Use HTML content templates first for simpler structures.
- Consider using Web Components for more complex UI components that require encapsulation and reusability.

### About `README.md`

- Include instructions on how to create, build, test, format, lint, and deploy the app.
- Do not add details like the directory structure, as the code frequently changes.
