本文へ移動
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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

LiorCohen/sdd442026年2月24日 更新

LiorCohen のスキルをすべて見る

このスキルの問題を報告する