بنقرة واحدة
frontend-scaffolding
Scaffolds React/TypeScript frontend components with MVVM architecture.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Scaffolds React/TypeScript frontend components with MVVM architecture.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Orchestrates SDD project initialization — version detection, environment verification, scaffolding, and git setup.
Manage project settings in sdd/sdd-settings.yaml including component settings that drive scaffolding.
Single gateway for all core↔tech-pack interactions. Reads manifests, resolves paths, loads skills/agents, routes commands.
Manage tasks and plans using the .tasks/ directory.
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
Standards for authoring SDD plugin commands — frontmatter, user interaction, skill/agent invocation, CLI integration, and output formatting.
| name | frontend-scaffolding |
| description | Scaffolds React/TypeScript frontend components with MVVM architecture. |
| user-invocable | false |
Creates a React/TypeScript frontend component following the MVVM (Model-View-ViewModel) architecture with TanStack ecosystem.
Use when creating webapp components. Supports multiple named instances (e.g., webapp-admin, webapp-public).
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
| Layer | Purpose | Location |
|---|---|---|
| View | React components (pages, layout, UI primitives) | src/pages/, src/components/ |
| ViewModel | State and logic hooks | src/hooks/ |
| Model | API client services | src/services/ |
| Utilities | cn(), shared helpers | src/lib/ |
| Routes | TanStack Router route definitions | src/routes/ |
| Types | Shared type definitions | src/types/ |
| Technology | Purpose |
|---|---|
| React 19 | UI framework |
| TypeScript 5.9 | Type safety |
| Vite 7 | Build tool and dev server |
| Vitest 4 | Unit testing framework |
| ESLint 9 | Linting (flat config) |
| Tailwind CSS 4 | Utility-first CSS (CSS-based config) |
| TanStack Router | Type-safe routing |
| TanStack Query | Server state management |
| TanStack Table | Headless table primitives |
| TanStack Form | Type-safe form management |
| Radix UI / Shadcn | Accessible component primitives |
| class-variance-authority, clsx, tailwind-merge | Style composition utilities |
Supports multiple named frontend instances:
| Input | Directory Created |
|---|---|
{type: webapp, name: main} | components/webapps/main/ |
{type: webapp, name: admin} | components/webapps/admin/ |
{type: webapp, name: public} | components/webapps/public/ |
| Variable | Description |
|---|---|
{{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) |
Called programmatically by the scaffolding script:
import { scaffoldFrontend } from './frontend-scaffolding';
scaffoldFrontend({
targetDir: '/path/to/project',
componentName: 'admin', // Creates webapp-admin/
projectName: 'my-app',
});
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/
When scaffolding a webapp component, the following config section is added to components/config/:
webapp-{name}:
apiBaseUrl: /api
export type WebappConfig = Readonly<{
apiBaseUrl: string;
}>;
{
"webapp-{name}": {
"type": "object",
"properties": {
"apiBaseUrl": { "type": "string", "default": "/api" }
},
"required": ["apiBaseUrl"]
}
}
Features may extend the config as needed:
webapp-{name}:
apiBaseUrl: /api
features:
darkMode: true
analytics: false
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
| Variable | Source |
|---|---|
PROJECT_NAME | From sdd-settings.yaml project name |
CONTRACT_PACKAGE | Workspace package name for API contract types |
CONFIG_PACKAGE | Workspace package name for webapp configuration types |
{
"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.
Schema: schemas/input.schema.json
Accepts webapp name, project metadata, and optional contract list for API client generation.
Schema: schemas/output.schema.json
Returns the scaffolding engine result: created files, directories, and scripts; skipped paths; errors; and a human-readable summary.
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.استنادا إلى تصنيف SOC المهني