Skip to content
Back to skills

Landing Page

ASecurity

Use this skill whenever the user asks to create, refine, or spawn a lightweight public landing page in the operator Next.js app. It preserves `/` as the canonical operator homepage unless explicitly told otherwise, creates standalone public routes such as `/internship`, reuses the local UI kit and theme tokens, and adds a public form/API only when the page needs intake.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 9, 2026
testinggobashnextjsnodeapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add cogni-dao/cogni --skill landing-page --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Landing Page?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Landing Page
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cogni-dao-landing-page/badge)](https://www.skillsdirectory.com/skills/cogni-dao-landing-page)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: landing-page
description: Use this skill whenever the user asks to create, refine, or spawn a lightweight public landing page in the operator Next.js app. It preserves `/` as the canonical operator homepage unless explicitly told otherwise, creates standalone public routes such as `/internship`, reuses the local UI kit and theme tokens, and adds a public form/API only when the page needs intake.
---

# Operator Landing Page Skill

Build public landing pages as standalone operator-hosted pages, not as replacements for the main homepage.

## First Decision

- If the user names a concrete campaign, cohort, product, or person, create that concrete public route (`/internship`, `/demo`, `/founder-name`).
- If the user says `/landing-page`, ask whether they mean a reusable agent skill/template or an actual public route before adding that route.
- Do not replace `nodes/operator/app/src/app/(public)/page.tsx` unless the user explicitly asks to redesign the main operator homepage.
- Treat the existing `/` page as a regression guard: visual changes to it need a stronger reason than a new campaign page.

## Default Shape

- Put the new page under `nodes/operator/app/src/app/(public)/<slug>/page.tsx`.
- Put non-trivial UI in a reusable component under `nodes/operator/app/src/features/home/components/` or a more specific feature folder.
- If the landing page needs intake, define the request/response shape in `nodes/operator/app/src/contracts/*.contract.ts` first, then add a public API route under `nodes/operator/app/src/app/api/v1/public/`.
- Use existing components from `@/components` and `@cogni/node-ui-kit`; do not invent a new design system.
- Keep copy specific to the page's user journey: the idea, the action, and the expected next step.

## Design Rules

- Match the existing Cogni operator palette, especially in dark mode.
- Use semantic Tailwind tokens for surfaces and text: `bg-background`, `bg-muted`, `text-foreground`, `text-muted-foreground`, `border-border`, `ring`, and related token utilities.
- Do not use raw Tailwind colors (`stone`, `emerald`, arbitrary hex colors) in class names; the repo lint gate rejects them.
- If a page needs special light-mode treatment, scope CSS variables on the page root and apply them only in light mode via `next-themes`.
- Keep 3D/canvas visuals behind content, low enough contrast to remain decorative, and verify the canvas is nonblank with Playwright.
- Avoid harsh neutral bands, nested card stacks, and theme-breaking one-off colors.

## Route Contract

For a user request like “make an internship landing page,” use:

- Page route: `/internship`
- File: `nodes/operator/app/src/app/(public)/internship/page.tsx`
- Component: `InternshipHome` or another page-specific component
- Validation route: `/internship`, not `/`

For a user request like “create a reusable `/landing-page` template,” create a template/demo route only if they explicitly want the route itself. Otherwise treat `landing-page` as the agent skill/workflow and create the requested concrete route.

## Intake Rules

- Add intake only when the page needs signup, lead capture, waitlist, or contribution interest.
- Never log full emails, free-text notes, wallet addresses, or other sensitive fields. Prefer reference IDs, categories, lengths, and domains.
- Return a small confirmation state that includes a reference ID when useful.

## Validation

Run the narrowest checks that cover the change:

```bash
pnpm install --frozen-lockfile --offline
pnpm --filter operator typecheck
pnpm --filter operator lint
```

For visual pages, run a Playwright smoke that:

- Visits `/` and confirms the original homepage still renders when not intentionally changed.
- Visits the new public route and checks the H1.
- Captures desktop and mobile screenshots to `.context/`.
- If Three.js/canvas is used, reads pixels and confirms the canvas is nonblank.
- If intake exists, submits the form and confirms the success state.

## Work Item Validation Text

When updating the Cogni work item, name the concrete route:

```text
exercise: Visit `/<slug>`, confirm the landing page renders, submit the intake form if present, and receive the expected confirmation. Also visit `/` and confirm the normal operator homepage still renders.
observability: Query deployed logs for the route-specific structured event from the validation request.
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.