본문으로 건너뛰기
cccskills
무료GitHub에 공개

frontend-scaffolding

Scaffolds React/TypeScript frontend components with MVVM architecture.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(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(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LiorCohen/sdd432026년 2월 24일 업데이트

LiorCohen의 스킬 모두 보기

이 스킬의 문제 신고