Skip to content
cccskills
FreePublished on GitHub

frontend-scaffolding

Scaffolds React/TypeScript frontend components with MVVM architecture.

The English summary is being prepared. Showing the original description.

See how to install

Files included (37)

  • SKILL.md7.5 KB
  • schemas/input.schema.json1.3 KB
  • schemas/output.schema.json1.4 KB
  • templates/.gitignore26 B
  • templates/components.json248 B
  • templates/eslint-rules/allowed-structure.js1.2 KB
  • templates/eslint.config.js3.2 KB
  • templates/package.json1.2 KB
  • templates/src/app.tsx656 B
  • templates/src/components/index.ts94 B
  • templates/src/components/layout/index.ts35 B
  • templates/src/components/layout/layout.tsx304 B
  • templates/src/components/sidebar/index.ts37 B
  • templates/src/components/sidebar/sidebar.tsx1.1 KB
  • templates/src/components/ui/button.tsx1.8 KB
  • templates/src/components/ui/card.tsx1.5 KB
  • templates/src/components/ui/index.ts153 B
  • templates/src/hooks/index.ts173 B
  • templates/src/hooks/use_app_config.tsx708 B
  • templates/src/hooks/use_app_router.ts209 B
  • templates/src/hooks/use_query_client.ts382 B
  • templates/src/index.css23 B
  • templates/src/index.html300 B
  • templates/src/index.ts117 B
  • templates/src/lib/index.ts30 B
  • templates/src/lib/utils.ts182 B
  • templates/src/main.tsx725 B
  • templates/src/pages/home_page/home_page.tsx957 B
  • templates/src/pages/home_page/index.ts40 B
  • templates/src/pages/index.ts40 B
  • templates/src/routes/index.ts60 B
  • templates/src/routes/routes.tsx882 B
  • templates/src/services/index.ts11 B
  • templates/src/types/index.ts11 B
  • templates/src/vite-env.d.ts38 B
  • templates/tsconfig.json846 B
  • templates/vite.config.ts481 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

Frontend Scaffolding Skill

Creates a React/TypeScript frontend component following the MVVM (Model-View-ViewModel) architecture with TanStack ecosystem.

When to Use

Use when creating webapp components. Supports multiple named instances (e.g., webapp-admin, webapp-public).

What It Creates

components/<webapp-name>/
├── .gitignore
├── components.json
├── eslint.config.js
├── eslint-rules/
│   └── allowed-structure.js
├── package.json
├── tsconfig.json
├── vite.config.ts
└── src/
    ├── index.html
    ├── index.ts
    ├── index.css
    ├── main.tsx              # Entry point
    ├── app.tsx               # Root app component
    ├── vite-env.d.ts
    ├── components/
    │   ├── index.ts
    │   ├── layout/
    │   │   ├── index.ts
    │   │   └── layout.tsx
    │   ├── sidebar/
    │   │   ├── index.ts
    │   │   └── sidebar.tsx
    │   └── ui/
    │       ├── index.ts
    │       ├── button.tsx
    │       └── card.tsx
    ├── hooks/
    │   ├── index.ts
    │   ├── use_app_config.tsx
    │   ├── use_app_router.ts
    │   └── use_query_client.ts
    ├── lib/
    │   ├── index.ts
    │   └── utils.ts
    ├── pages/
    │   ├── index.ts
    │   └── home_page/
    │       ├── index.ts
    │       └── home_page.tsx
    ├── routes/
    │   ├── index.ts
    │   └── routes.tsx
    ├── services/
    │   └── index.ts
    └── types/
        └── index.ts

MVVM Architecture

LayerPurposeLocation
ViewReact components (pages, layout, UI primitives)src/pages/, src/components/
ViewModelState and logic hookssrc/hooks/
ModelAPI client servicessrc/services/
Utilitiescn(), shared helperssrc/lib/
RoutesTanStack Router route definitionssrc/routes/
TypesShared type definitionssrc/types/

Tech Stack

TechnologyPurpose
React 19UI framework
TypeScript 5.9Type safety
Vite 7Build tool and dev server
Vitest 4Unit testing framework
ESLint 9Linting (flat config)
Tailwind CSS 4Utility-first CSS (CSS-based config)
TanStack RouterType-safe routing
TanStack QueryServer state management
TanStack TableHeadless table primitives
TanStack FormType-safe form management
Radix UI / ShadcnAccessible component primitives
class-variance-authority, clsx, tailwind-mergeStyle composition utilities

Multiple Instances

Supports multiple named frontend instances:

InputDirectory Created
{type: webapp, name: main}components/webapps/main/
{type: webapp, name: admin}components/webapps/admin/
{type: webapp, name: public}components/webapps/public/

Template Variables

VariableDescription
{{PROJECT_NAME}}Project name
{{CONTRACT_PACKAGE}}Workspace package name for API contract types (e.g., @my-project/api-types)
{{CONFIG_PACKAGE}}Workspace package name for webapp configuration types (e.g., @my-project/config)

Usage

Called programmatically by the scaffolding script:

import { scaffoldFrontend } from './frontend-scaffolding';

scaffoldFrontend({
  targetDir: '/path/to/project',
  componentName: 'admin',         // Creates webapp-admin/
  projectName: 'my-app',
});

Templates Location

All templates are colocated in this skill's templates/ directory:

skills/components/frontend/frontend-scaffolding/templates/
├── .gitignore
├── components.json
├── eslint.config.js
├── eslint-rules/
│   └── allowed-structure.js
├── package.json
├── tsconfig.json
├── vite.config.ts
└── src/
    ├── index.html
    ├── index.ts
    ├── index.css
    ├── main.tsx
    ├── app.tsx
    ├── vite-env.d.ts
    ├── components/
    │   ├── index.ts
    │   ├── layout/
    │   ├── sidebar/
    │   └── ui/
    ├── hooks/
    ├── lib/
    ├── pages/
    ├── routes/
    ├── services/
    └── types/

Config Schema

When scaffolding a webapp component, the following config section is added to components/config/:

Minimal Config (envs/default/config.yaml)

webapp-{name}:
  apiBaseUrl: /api

TypeScript Type (types/webapp.ts)

export type WebappConfig = Readonly<{
  apiBaseUrl: string;
}>;

JSON Schema (schemas/config.schema.json)

{
  "webapp-{name}": {
    "type": "object",
    "properties": {
      "apiBaseUrl": { "type": "string", "default": "/api" }
    },
    "required": ["apiBaseUrl"]
  }
}

Optional Extensions

Features may extend the config as needed:

webapp-{name}:
  apiBaseUrl: /api
  features:
    darkMode: true
    analytics: false

Scaffold Spec

To scaffold a frontend component, build a spec and invoke the engine:

<plugin-root>/fullstack-typescript/system/system-run.sh scaffolding apply --spec spec.json

Variables

VariableSource
PROJECT_NAMEFrom sdd-settings.yaml project name
CONTRACT_PACKAGEWorkspace package name for API contract types
CONFIG_PACKAGEWorkspace package name for webapp configuration types

Operations

{
  "target_dir": "<project-root>",
  "base_dir": "<plugin-root>/skills",
  "variables": { "PROJECT_NAME": "<project-name>", "CONTRACT_PACKAGE": "<contract-package>", "CONFIG_PACKAGE": "<config-package>" },
  "operations": [
    {
      "type": "template_dir",
      "source": "components/frontend/frontend-scaffolding/templates",
      "dest": "components/webapps/<webapp-name>"
    },
    {
      "type": "package_json_scripts",
      "scripts": {
        "<webapp-name>:dev": "npm run dev -w @<project-name>/<webapp-name>",
        "<webapp-name>:build": "npm run build -w @<project-name>/<webapp-name>",
        "<webapp-name>:preview": "npm run preview -w @<project-name>/<webapp-name>",
        "<webapp-name>:test": "npm run test -w @<project-name>/<webapp-name>"
      }
    }
  ]
}

No conditions needed.

Input

Schema: schemas/input.schema.json

Accepts webapp name, project metadata, and optional contract list for API client generation.

Output

Schema: schemas/output.schema.json

Returns the scaffolding engine result: created files, directories, and scripts; skipped paths; errors; and a human-readable summary.

Related Skills

  • frontend-standards — Generated frontend code must follow these standards. Defines MVVM architecture with TanStack Router/Query, component structure, and state management patterns.
  • typescript-standards — Generated TypeScript files must follow these coding conventions. Defines strict typing, readonly patterns, branded types, and import standards.
  • unit-testing — Generated test files must follow these patterns. Defines Vitest setup, mocking strategies, fixture patterns, and assertion conventions for frontend components.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

Scaffolds Node.js/TypeScript backend components with CMDO architecture, driven by component settings.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

CMDO architecture standards for Node.js/TypeScript backends with strict layer separation.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

Intent-to-command mappings for fullstack-typescript tech pack features.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

Create change specification and implementation plan with dynamic phase generation. Supports feature, bugfix, refactor, and epic types.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

Orchestrates the full change lifecycle — routes actions to phase-specific sub-files.

The English summary is being prepared. Showing the original description.

LiorCohen/sdd43Updated Feb 24, 2026

See all skills by LiorCohen

Report a problem with this skill