npx skills add https://github.com/pixel-point/animate-text --skill animate-textInstall this skill with the CLI and start using the SKILL.md workflow in your workspace.
This document explains how to run, build, and maintain the project locally.
Run all commands from the project root (this folder):
pnpm install
pnpm dev
The app will be available at http://localhost:3000.
If environment variables are required for a specific setup:
cp .env.example .env
pnpm dev.pnpm generate:animate-text-skillpnpm validate:animate-text-catalogsrc/app.src/components/ui.src/components/pages/<slug>src/app.pnpm lintpnpm formatpnpm typecheck (tsgo --noEmit)pnpm buildpnpm dev - start Next.js in development modepnpm generate:animate-text-skill - rebuild the installable skill and generated site data from catalog/text-animationspnpm validate:animate-text-catalog - validate canonical catalog inputs and ensure generated outputs are up to datepnpm test:animate-text-skill - smoke test the generated public skill helper scriptspnpm build - create a production buildpnpm start - run the production serverpnpm lint - run OXC lint checkspnpm lint:fix - run OXC lint with auto-fixespnpm format - check formatting with Oxfmtpnpm format:fix - format files with Oxfmtpnpm typecheck - run TypeScript type checks with tsgo.
├─ public/ # static assets served as-is
├─ catalog/ # canonical source-of-truth data for the text animation library
├─ skills/ # installable generated skill output
├─ templates/ # templates used to generate skill documents
├─ src/
│ ├─ app/ # Next.js App Router (routes, layouts, not-found)
│ ├─ components/
│ │ ├─ ui/ # shared UI primitives
│ │ └─ pages/
│ │ ├─ home/ # components used only by the Home page
│ │ └─ <slug>/ # components used only by one specific page
│ ├─ content/ # markdown content grouped by feature/page
│ ├─ configs/ # app and website configuration
│ ├─ constants/ # static constants
│ ├─ contexts/ # React providers/contexts
│ ├─ hooks/ # reusable React hooks
│ ├─ lib/ # utilities and framework helpers
│ ├─ styles/ # global and feature styles
│ └─ types/ # shared TypeScript types
├─ scripts/ # repo-maintainer scripts including catalog generation/validation
├─ next.config.ts # Next.js configuration
├─ postcss.config.mjs # PostCSS configuration
├─ tailwind.plugins.mjs # Tailwind plugin setup
├─ .oxlintrc.json # OXC lint configuration
├─ .oxfmtrc.json # OXC formatter configuration
└─ package.json
Website-level settings are defined in src/configs/website-config.ts.
Use this config for branding, metadata defaults, and repository links. Common fields:
projectName - project name used in UI and metadatametaThemeColors.light / metaThemeColors.dark - browser theme colorssrc/app/opengraph-image.tsx - generated OG/social preview image used for Open Graph and TwittergithubOrg / githubRepo - repository metadata for links/integrationsExample:
const config = {
projectName: '<YOUR_PROJECT_NAME>',
metaThemeColors: {
light: '#ffffff',
dark: '#09090b',
},
};
Content lives in src/content and is organized by folders per section/page type.
Example structure:
src/content/
├─ blog/
├─ docs/
└─ legal/
Rules for this project:
.md files).docs/, blog/, legal/)./docs) ConventionsFor the /docs section, this project follows the same page conventions as FumaDocs. Use the official FumaDocs page conventions as the primary reference when creating or editing docs pages.
pnpm build to generate the production build in .next/.pnpm start to serve the compiled build.postbuild can generate sitemap files and robots.txt via next-sitemap..next/, .turbo/, and node_modules/ are not source files.This repository now contains two downstream outputs generated from catalog/text-animations/:
skills/animate-text/ - the installable public skill for the skills.sh ecosystemsrc/data/text-animations/generated/ - app-facing generated modules used by the websiteCanonical editing rules:
catalog/text-animations/** by handskills/animate-text/**src/data/text-animations/generated/**Typical maintainer flow:
pnpm generate:animate-text-skill
pnpm validate:animate-text-catalog
pnpm test:animate-text-skill
Install form for consumers:
npx skills add <owner>/<repo> --skill animate-text