بنقرة واحدة
demo-create
// 基于项目中 .vscode/south.code-snippets 定义的 CRUD 模板,快速生成后台管理系统的标准 CRUD 页面代码。该技能根据用户提供的业务模块信息(如模块名称、API路径、字段配置等),自动生成完整的页面文件(Page)、数据模型文件(Model)和 API 接口文件(Api),支持分页列表页面(demoPage)、独立操作页面(demoOptionPage)两种页面模式。
// 基于项目中 .vscode/south.code-snippets 定义的 CRUD 模板,快速生成后台管理系统的标准 CRUD 页面代码。该技能根据用户提供的业务模块信息(如模块名称、API路径、字段配置等),自动生成完整的页面文件(Page)、数据模型文件(Model)和 API 接口文件(Api),支持分页列表页面(demoPage)、独立操作页面(demoOptionPage)两种页面模式。
| name | demo-create |
| description | 基于项目中 .vscode/south.code-snippets 定义的 CRUD 模板,快速生成后台管理系统的标准 CRUD 页面代码。该技能根据用户提供的业务模块信息(如模块名称、API路径、字段配置等),自动生成完整的页面文件(Page)、数据模型文件(Model)和 API 接口文件(Api),支持分页列表页面(demoPage)、独立操作页面(demoOptionPage)两种页面模式。 |
基于项目中 .vscode/south.code-snippets 定义的 CRUD 模板,快速生成后台管理系统的标准 CRUD 页面代码。根据用户提供的业务模块信息(模块名称、API路径、字段配置等),自动生成完整的页面文件(Page)、数据模型文件(Model)和 API 接口文件(Api),支持弹窗模式(demoPage)和独立页面模式(demoOptionPage)两种。
在生成代码前,向用户确认以下信息(未提供则主动询问,一个一个询问):
User、Article/system/user/system/usermodal(弹窗模式)或 page(独立页面模式)true/false),开启时使用 t() 函数包裹标签文本/system/user用户 / UserdataIndex(字段名)label(标签)component(组件类型:Input/InputNumber/Select/DatePicker/RangePicker/TextArea/Switch/Upload)search(是否搜索项)table(是否表格列)form(是否表单字段)required(是否必填)width(表格列宽度,默认200)src/pages/{modulePath}/
├── index.tsx # 主页面(demoPage 模板)
└── model.ts # 数据模型(demoModel 模板)
src/servers/{modulePath}.ts # API 接口(demoApi 模板)
src/pages/{modulePath}/
├── index.tsx # 列表页(demoPage 模板,新增/编辑改为路由跳转)
├── model.ts # 数据模型(demoModel 模板)
└── option.tsx # 操作页(demoOptionPage 模板)
src/servers/{modulePath}.ts # API 接口(demoApi 模板)
所有模板中进行以下替换:
getXXXPage → get{ModuleName}PagegetXXXById → get{ModuleName}ByIdcreateXXX → create{ModuleName}updateXXX → update{ModuleName}deleteXXX → delete{ModuleName}batchDeleteXXX → batchDelete{ModuleName}API.URL = '/xxx' → 实际 apiPath@/servers/xxx → @/servers/{实际模块路径}permissionPrefix = '/xxx' → 实际权限前缀fatherPath = '/xxx' → 实际父路径(page 模式)参照 .vscode/south.code-snippets 中 demoApi 的 body 内容生成,替换所有 XXX/xxx 为对应模块名称和路径。保持所有函数签名、类型定义和注释不变。
参照 .vscode/south.code-snippets 中 demoModel 的 body 内容生成:
search: true 的字段,wrapperWidth 默认 200
enableI18n = true:label 使用 t('moduleName.fieldName') 格式enableI18n = false:label 使用中文字符串table: true 的字段,始终保留 operate 操作列,width 默认 200
enableI18n = true:title 使用 t('moduleName.fieldName') 格式,保留 createdAt/updatedAt 使用 t('public.creationTime')/t('public.updateTime')enableI18n = false:title 使用中文字符串form: true 的字段,必填字段添加 rules: FORM_REQUIRED
enableI18n = true:label 使用 t('moduleName.fieldName') 格式enableI18n = false:label 使用中文字符串参照 .vscode/south.code-snippets 中 demoPage 的 body 内容生成:
id: stringstatus: 1)permissionPrefix参照 .vscode/south.code-snippets 中 demoOptionPage 的 body 内容生成:
fatherPath、zhTitle、enTitleuseSingleTab 中的标题permissionPrefix根据 enableI18n 参数决定如何处理标签文本:
t() 函数包裹,如 t('public.name')、t('product.code')'产品编码'、'产品名称'重要:使用 Python 脚本生成代码,而不是手动输出代码块。
准备配置 JSON,包含所有收集的信息
调用 Python 脚本生成文件:
python3 .claude/skills/demo-create/scripts/generate.py '<config_json>'
或使用包装脚本:
bash .claude/skills/demo-create/scripts/run.sh '<config_json>'
脚本会自动:
{
"module_name": "Product",
"api_path": "/product",
"permission_prefix": "/product",
"page_mode": "modal",
"enable_i18n": true,
"project_root": "/Users/south/Desktop/case/react-admin",
"fields": [
{
"dataIndex": "name",
"label_zh": "产品名称",
"label_en": "Product Name",
"component": "Input",
"search": true,
"table": true,
"form": true,
"required": true,
"width": 200
}
]
}
配置说明:
module_name: 模块名称(PascalCase,如 Product)api_path: API 路径前缀(如 /product)permission_prefix: 权限前缀(如 /product)page_mode: 页面模式("modal" 或 "page")enable_i18n: 是否开启国际化(true 或 false)project_root: 项目根路径(可选,默认为当前目录)fields: 字段配置数组字段配置说明:
dataIndex: 字段名label_zh: 字段中文标签(由 AI 根据字段名智能生成)label_en: 字段英文标签(由 AI 根据字段名智能生成)component: 组件类型(Input/InputNumber/Select/DatePicker/RangePicker/TextArea/Switch/Upload)search: 是否作为搜索项table: 是否作为表格列form: 是否作为表单字段required: 是否必填width: 表格列宽度(默认200)重要:AI 应根据字段的业务含义智能生成合适的中英文标签,而不是使用固定的映射表。例如:
name → "产品名称" / "Product Name"(在产品模块中)name → "分类名称" / "Category Name"(在分类模块中)title → "文章标题" / "Article Title"(在文章模块中)BaseFormData、PagePermission、BaseSearchList、TableColumn、TableOptions、PaginationData、PageServerResultcheckPermission、useCommonStore、usePublicStore、useTabsStore、INIT_PAGINATION、ADD_TITLE、EDIT_TITLE、FORM_REQUIRED、useSingleTab、useEffectOnActive、useTranslation、useLocation当开启国际化时,额外生成以下文件:
文件路径:src/locales/zh/{moduleName}.ts
根据字段配置生成翻译对象,格式:
export default {
fieldName1: '中文名称1',
fieldName2: '中文名称2',
// ...
};
注意:翻译内容由 AI 根据字段名和业务模块智能生成,例如:
name → "产品名称"name → "分类名称"title → "文章标题"文件路径:src/locales/en/{moduleName}.ts
格式同中文文件,使用英文翻译:
export default {
fieldName1: 'Field Name 1',
fieldName2: 'Field Name 2',
// ...
};
注意:翻译内容由 AI 根据字段名和业务模块智能生成,例如:
name → "Product Name"name → "Category Name"title → "Article Title"src/servers/{modulePath}.ts)src/pages/{modulePath}/model.ts)src/pages/{modulePath}/index.tsx)src/pages/{modulePath}/option.tsx)src/locales/zh/{moduleName}.ts)src/locales/en/{moduleName}.ts)