Create Docs
victorgarciaesgi/nuxt-typed-router
Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.
为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/frontend-crud .claude/skills/frontend-crud && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .claude/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crudType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/frontend-crud .agents/skills/frontend-crud && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .agents/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/frontend-crud .cursor/skills/frontend-crud && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .cursor/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mfish-qf/mfish-nocode.git --path .codex/skills/frontend-crud--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/frontend-crud .gemini/skills/frontend-crud && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .gemini/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mfish-qf/mfish-nocode frontend-crudInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/frontend-crud .github/skills/frontend-crud && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .github/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mfish-qf/mfish-nocode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/frontend-crud .opencode/skills/frontend-crud && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "frontend-crud" agent skill from https://github.com/mfish-qf/mfish-nocode/tree/main/.codex/skills/frontend-crud into .opencode/skills/frontend-crud/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-crud", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
frontend-crud为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。
Frontend Crud is an agent skill from mfish-qf/mfish-nocode. 为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design. It works with Vue.js, TypeScript and Spring Boot. The repository describes itself as: 摸鱼低代码平台,是一款致力于让开发像摸鱼一样轻松的低代码/无代码平台。首创微服务单体服务一体化架构。基于SpringBoot4、Spring Ai、Vue3等最新前后端技术栈。已用于多个成熟项目,学习和实战两不误。我们希望打破技术门槛,让程序员和非程序员都能快速构建业务系统,提升效率,释放创造力。 The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 664fc6b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and vue).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Frontend Crud loads about 3.8k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 185 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mfish-qf/mfish-nocode at commit 664fc6b, republished under its Apache-2.0 licence (© mfish-qf). 185 words, ~3,826 tokens.
.claude/skills/frontend-crud/SKILL.md (or your agent's skills folder).mfish-nocode-view/src/
├── api/
│ └── {apiPrefix}/ # 如:sys、demo、nocode
│ ├── model/
│ │ └── {类名}Model.ts # 接口类型定义
│ └── {类名}.ts # API 请求函数
└── views/
└── {apiPrefix}/
└── {entity-kebab-case}/ # 如:demo-order、sys-dict
├── {变量名}.data.ts # 表格列、搜索表单、表单Schema、详情Schema
├── index.vue # 列表页主页面
├── {类名}Modal.vue # 新增/编辑弹窗
└── {类名}ViewModal.vue # 详情查看弹窗<script lang="ts" setup>defHttp(来自 @mfish/core/utils/http/axios)BasicTable + useTable(来自 @mfish/core/components/Table)BasicModal + useModal / useModalInner(来自 @mfish/core/components/Modal)BasicForm + useForm(来自 @mfish/core/components/Form)Description + useDescription(来自 @mfish/core/components/Description)buildDictTag + getDictProps(来自 @mfish/core/components/DictTag)v-auth="'{apiPrefix}:{entityName}:操作'"(insert/update/delete/query/export)BaseEntity<string>、PageResult<T>、ReqPage(来自 @mfish/core/api)string,数值型主键时为 number询问用户(如未提供):
demo、sys、nocode)DemoOrder)string/number/boolean)、中文描述、是否可选Input / ApiSelect+字典编码 / DatePicker)按以下顺序生成,所有文件路径基于 mfish-nocode-view/src/ 目录。
api/{apiPrefix}/model/{类名}Model.ts)import { BaseEntity, PageResult, ReqPage } from "@mfish/core/api";
/**
* @description: {中文名称}
* @author: mfish
* @date: {当前日期}
* @version: V2.4.1
*/
export interface {类名} extends BaseEntity<string> {
//{字段注释}
{字段名}?: {TS类型};
// ... 更多字段
}
export interface Req{类名} extends ReqPage {
//{搜索字段注释}
{搜索字段名}?: {TS类型};
// ... 更多搜索字段
}
//分页结果集
export type {类名}PageModel = PageResult<{类名}>;字段类型映射规则:
| Java/DB 类型 | TS 类型 |
|---|---|
String、Date | string |
Integer、Long、Short、Double、BigDecimal | number |
Boolean | boolean |
api/{apiPrefix}/{类名}.ts)import { defHttp } from "@mfish/core/utils/http/axios";
import { {类名}, Req{类名}, {类名}PageModel } from "@/api/{apiPrefix}/model/{类名}Model";
/**
* @description: {中文名称}
* @author: mfish
* @date: {当前日期}
* @version: V2.4.1
*/
enum Api {
{类名} = "/{apiPrefix}/{变量名}"
}
/**
* 分页列表查询
*/
export const get{类名}List = (req{类名}?: Req{类名}) => {
return defHttp.get<{类名}PageModel>({ url: Api.{类名}, params: req{类名} });
};
/**
* 通过id查询
*/
export function get{类名}ById(id: string) {
return defHttp.get<{类名}>({ url: `${Api.{类名}}/${id}` });
}
/**
* 导出{中文名称}
*/
export function export{类名}(req{类名}?: Req{类名}) {
return defHttp.download({ url: `${Api.{类名}}/export`, params: req{类名} });
}
/**
* 新增{中文名称}
*/
export function insert{类名}({变量名}: {类名}) {
return defHttp.post<{类名}>({ url: Api.{类名}, params: {变量名} }, { successMessageMode: "message" });
}
/**
* 修改{中文名称}
*/
export function update{类名}({变量名}: {类名}) {
return defHttp.put<{类名}>({ url: Api.{类名}, params: {变量名} }, { successMessageMode: "message" });
}
/**
* 删除{中文名称}
*/
export function delete{类名}(id: string) {
return defHttp.delete<boolean>({ url: `${Api.{类名}}/${id}` }, { successMessageMode: "message" });
}
/**
* 批量删除{中文名称}
*/
export function deleteBatch{类名}(ids: string) {
return defHttp.delete<boolean>({ url: `${Api.{类名}}/batch/${ids}` }, { successMessageMode: "message" });
}若 ID 类型为数值型(
number),delete{类名}参数类型改为number。
views/{apiPrefix}/{entity-kebab-case}/{变量名}.data.ts)import { BasicColumn, FormSchema } from "@mfish/core/components/Table";
import { DescItem } from "@mfish/core/components/Description";
// 有字典字段时引入(无字典字段则删除)
import { buildDictTag, getDictProps } from "@mfish/core/components/DictTag";
/**
* @description: {中文名称}
* @author: mfish
* @date: {当前日期}
* @version: V2.4.1
*/
// ========== 表格列定义 ==========
export const columns: BasicColumn[] = [
// 普通字段
{
title: "{字段中文名}",
dataIndex: "{字段名}",
width: 120
},
// 字典字段(有字典时使用 customRender)
{
customRender: ({ record }) => {
return buildDictTag("{字典编码}", record.{字段名});
},
title: "{字段中文名}",
dataIndex: "{字段名}",
width: 120
}
];
// ========== 搜索表单 Schema ==========
export const searchFormSchema: FormSchema[] = [
// 普通输入框
{
field: "{字段名}",
label: "{字段中文名}",
component: "Input",
colProps: { xl: 5, md: 6 }
},
// 字典下拉(单选)
{
field: "{字段名}",
label: "{字段中文名}",
component: "ApiSelect",
componentProps: getDictProps("{字典编码}"),
colProps: { xl: 5, md: 6 }
},
// 字典下拉(多选)
{
field: "{字段名}",
label: "{字段中文名}",
component: "ApiSelect",
componentProps: { ...getDictProps("{字典编码}"), mode: "multiple" },
colProps: { xl: 5, md: 6 }
}
];
// ========== 新增/编辑表单 Schema ==========
export const {变量名}FormSchema: FormSchema[] = [
{
field: "id",
label: "唯一ID",
component: "Input",
show: false
},
// 文本输入
{
field: "{字段名}",
label: "{字段中文名}",
component: "Input",
required: true // 必填时加上
},
// 数值输入
{
field: "{字段名}",
label: "{字段中文名}",
component: "InputNumber"
},
// 字典下拉
{
field: "{字段名}",
label: "{字段中文名}",
component: "ApiSelect",
componentProps: getDictProps("{字典编码}")
},
// 日期(仅日期)
{
field: "{字段名}",
label: "{字段中文名}",
component: "DatePicker",
componentProps: {
valueFormat: "YYYY-MM-DD",
format: "YYYY-MM-DD",
getPopupContainer: () => document.body
}
},
// 日期时间
{
field: "{字段名}",
label: "{字段中文名}",
component: "DatePicker",
componentProps: {
valueFormat: "YYYY-MM-DD HH:mm:ss",
format: "YYYY-MM-DD HH:mm:ss",
showTime: { format: "HH:mm:ss" },
getPopupContainer: () => document.body
}
}
];
// ========== 详情查看 Schema ==========
export class {类名}Desc {
viewSchema: DescItem[] = [
{
label: "id",
field: "id",
show: () => false
},
// 普通字段
{
field: "{字段名}",
label: "{字段中文名}"
},
// 字典字段
{
render: (val) => {
if (val === undefined) return;
return buildDictTag("{字典编码}", val);
},
field: "{字段名}",
label: "{字段中文名}"
}
];
}组件选择规则:
| 字段类型 | 表单组件 |
|---|---|
string(普通文本) | Input |
number(整数/小数) | InputNumber |
string(日期) | DatePicker(dateFormat: YYYY-MM-DD) |
string(日期时间) | DatePicker(showTime) |
| 有字典 | ApiSelect + getDictProps("{字典编码}") |
views/{apiPrefix}/{entity-kebab-case}/index.vue)<!--
@description: {中文名称}
@author: mfish
@date: {当前日期}
@version: V2.4.1
-->
<template>
<div>
<BasicTable @register="registerTable">
<template #toolbar>
<AButton type="primary" @click="handleCreate" v-auth="'{apiPrefix}:{变量名}:insert'">新增</AButton>
<AButton color="warning" @click="handleExport" v-auth="'{apiPrefix}:{变量名}:export'">导出</AButton>
<AButton color="error" @click="handleBatchDelete" v-auth="'{apiPrefix}:{变量名}:delete'">批量删除</AButton>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'ant-design:info-circle-outlined',
onClick: handleQuery.bind(null, record),
auth: '{apiPrefix}:{变量名}:query',
color: 'success',
tooltip: '查看'
},
{
icon: 'ant-design:edit-outlined',
onClick: handleEdit.bind(null, record),
auth: '{apiPrefix}:{变量名}:update',
tooltip: '修改'
},
{
icon: 'ant-design:delete-outlined',
color: 'error',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record)
},
auth: '{apiPrefix}:{变量名}:delete',
tooltip: '删除'
}
]"
/>
</template>
</template>
</BasicTable>
<{类名}Modal @register="registerModal" @success="handleSuccess" />
<{类名}ViewModal @register="registerViewModal" />
</div>
</template>
<script lang="ts" setup>
import { BasicTable, useTable, TableAction } from "@mfish/core/components/Table";
import { useModal } from "@mfish/core/components/Modal";
import { Button as AButton } from "@mfish/core/components/Button";
import { deleteBatch{类名}, delete{类名}, export{类名}, get{类名}List } from "@/api/{apiPrefix}/{类名}";
import {类名}Modal from "./{类名}Modal.vue";
import {类名}ViewModal from "./{类名}ViewModal.vue";
import { columns, searchFormSchema } from "./{变量名}.data";
import { {类名} } from "@/api/{apiPrefix}/model/{类名}Model";
import { ref } from "vue";
import { useMessage } from "@mfish/core/hooks";
defineOptions({ name: "{类名}Management" });
const [registerModal, { openModal }] = useModal();
const [registerViewModal, { openModal: openViewModal }] = useModal();
const selectedRowKeys = ref<any[]>([]);
const [registerTable, { reload, getForm }] = useTable({
title: "{中文名称}列表",
api: get{类名}List,
rowKey: "id",
columns,
formConfig: {
name: "search_form_item",
labelWidth: 100,
schemas: searchFormSchema,
autoSubmitOnEnter: true
},
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: false,
rowSelection: {
onChange: (rowKeys: any[]) => {
selectedRowKeys.value = rowKeys;
}
},
actionColumn: {
width: 120,
title: "操作",
dataIndex: "action"
}
});
const { createMessage } = useMessage();
function handleCreate() {
openModal(true, { isUpdate: false });
}
function handleExport() {
export{类名}({ ...getForm().getFieldsValue(), pageNum: 1, pageSize: 1000 });
}
function handleQuery({变量名}: {类名}) {
openViewModal(true, { record: {变量名} });
}
function handleEdit({变量名}: {类名}) {
openModal(true, { record: {变量名}, isUpdate: true });
}
function handleDelete({变量名}: {类名}) {
if ({变量名}.id) {
delete{类名}({变量名}.id).then(() => {
handleSuccess();
});
}
}
function handleBatchDelete() {
if (selectedRowKeys.value.length > 0) {
deleteBatch{类名}(selectedRowKeys.value.join(",")).then(() => {
handleSuccess();
});
} else {
createMessage.warning("请勾选要删除的数据");
}
}
function handleSuccess() {
reload();
}
</script>views/{apiPrefix}/{entity-kebab-case}/{类名}Modal.vue)<!--
@description: {中文名称}
@author: mfish
@date: {当前日期}
@version: V2.4.1
-->
<template>
<BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" @submit="handleSubmit" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed, unref } from "vue";
import { BasicForm, useForm } from "@mfish/core/components/Form";
import { {变量名}FormSchema } from "./{变量名}.data";
import { BasicModal, useModalInner } from "@mfish/core/components/Modal";
import { insert{类名}, update{类名} } from "@/api/{apiPrefix}/{类名}";
defineOptions({ name: "{类名}Modal" });
const emit = defineEmits(["success", "register"]);
const isUpdate = ref(true);
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
name: "model_form_item",
labelWidth: 100,
baseColProps: { span: 12 },
schemas: {变量名}FormSchema,
showActionButtonGroup: false,
autoSubmitOnEnter: true
});
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields().then();
setModalProps({ confirmLoading: false, width: "800px" });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
setFieldsValue({ ...data.record }).then();
}
});
const getTitle = computed(() => (unref(isUpdate) ? "编辑{中文名称}" : "新增{中文名称}"));
async function handleSubmit() {
const values = await validate();
setModalProps({ confirmLoading: true });
if (unref(isUpdate)) {
save{类名}(update{类名}, values);
} else {
save{类名}(insert{类名}, values);
}
}
function save{类名}(save, values) {
save(values)
.then(() => {
emit("success");
closeModal();
})
.finally(() => {
setModalProps({ confirmLoading: false });
});
}
</script>views/{apiPrefix}/{entity-kebab-case}/{类名}ViewModal.vue)<!--
@description: {中文名称}查看
@author: mfish
@date: {当前日期}
@version: V2.4.1
-->
<template>
<BasicModal v-bind="$attrs" @register="registerModal" title="{中文名称}信息">
<Description @register="registerDesc" />
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from "@mfish/core/components/Modal";
import { Description, useDescription } from "@mfish/core/components/Description";
import { ref } from "vue";
import { {类名}Desc } from "./{变量名}.data";
defineOptions({ name: "{类名}ViewModal" });
const {变量名}Data = ref();
const {变量名}Desc = new {类名}Desc();
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
setModalProps({
confirmLoading: false,
width: "800px",
cancelText: "关闭",
showOkBtn: false
});
{变量名}Data.value = data.record;
});
const [registerDesc] = useDescription({
data: {变量名}Data,
schema: {变量名}Desc.viewSchema,
column: 2
});
</script>| 占位符 | 说明 | 示例 |
|---|---|---|
{类名} | PascalCase 类名 | DemoOrder |
{变量名} | camelCase 变量名 | demoOrder |
{apiPrefix} | 模块路径(小写) | demo |
{entity-kebab-case} | kebab-case 目录名 | demo-order |
columns 和 viewSchema 中使用 buildDictTag,searchFormSchema 和 FormSchema 中使用 getDictProps;只要有字典字段就需要在文件顶部引入 buildDictTag 和 getDictPropssearchFormSchema 可以为空数组 [],useSearchForm 设为 falsedelete{类名} 参数类型改为 number,Model 中 BaseEntity<number>handleExport、export{类名} 的引入和 toolbar 中的导出按钮handleBatchDelete、deleteBatch{类名} 的引入、rowSelection 配置和 toolbar 中的批量删除按钮{apiPrefix}/{变量名} 对应后端 Controller 的 @RequestMapping 路径© mfish-qf, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/frontend-crud of mfish-qf/mfish-nocode.
Open the folder on GitHubat commit 664fc6b
We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in mfish-qf/mfish-nocode, which our catalogue first saw on October 7, 2026.
Frontend Crud next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Frontend Crud this skillmfish-qf/mfish-nocode | 747 | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Create Docsvictorgarciaesgi/nuxt-typed-router | 413 | 2 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Uni Appsonofmagic/uni-app-tailwindcss-template | 336 | 2 repos | ~1k | Automated safety check: Pass | MIT | |
| QR Codes with qrcode.vuescopewu/qrcode.vue | 827 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Cross Platform Tauri UIifer47/markeron | 1.2k | — | ~2k | Automated safety check: Pass | MIT | |
| Vuetify Skilldlogue/vite-vuetify-ts-starter | 181 | 1 repos | ~1.9k | Automated safety check: Pass | MIT |
victorgarciaesgi/nuxt-typed-router
Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.
sonofmagic/uni-app-tailwindcss-template
Comprehensive skill reference for uni-app cross-platform development framework
scopewu/qrcode.vue
Renders, styles and downloads QR codes in Vue 3 apps with the qrcode.vue component, covering canvas versus SVG output, embedded logos, gradients and rounded modules.
ifer47/markeron
Cross-platform UI styling for MarkerOn Tauri app (macOS WKWebView vs Windows WebView2).
logue/vite-vuetify-ts-starter
Vue Material Component Framework. An agent skill from logue/vite-vuetify-ts-starter.
ifer47/markeron
Extend MarkerOn settings, persisted config, or Tauri IPC commands.
mfish-qf/mfish-nocode
为 mfish-nocode-pro 项目生成标准增删改查(CRUD)代码,包括 Entity、Req、Mapper、Service、ServiceImpl、Controller 六层结构。当用户说"帮我生成增删改查"、"新增一个模块"、"生成CRUD代码"时使用此 skill。
mfish-qf/mfish-nocode
为 mfish-nocode-pro 项目集成 Flowable 工作流审批能力,包括注册 FlowKey、实体审批状态字段、Service 启动/撤回流程、Controller 审批回调接口、Feign 回调接口注册五个步骤的完整代码模板。当用户说"带工作流审批"、"发布审核流程"、"集成工作流"、"审批回调"时使用此 skill。
Works with
Categories
为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。. Frontend Crud is an agent skill from mfish-qf/mfish-nocode.
Frontend Crud fits situations like: frontend & Design work in your project.
Run `npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a claude-code`. Or copy the skill folder (.codex/skills/frontend-crud in mfish-qf/mfish-nocode) into .claude/skills/frontend-crud in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a codex`. Or copy the skill folder (.codex/skills/frontend-crud in mfish-qf/mfish-nocode) into .agents/skills/frontend-crud in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontend-crud, .gemini/skills/frontend-crud, .github/skills/frontend-crud and .opencode/skills/frontend-crud in your project.
SKILL.md names no scripts, command-line tools or credentials: Frontend Crud is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Frontend Crud is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Frontend Crud: Create Docs (victorgarciaesgi/nuxt-typed-router, 413 stars), Uni App (sonofmagic/uni-app-tailwindcss-template, 336 stars), QR Codes with qrcode.vue (scopewu/qrcode.vue, 827 stars) and Cross Platform Tauri UI (ifer47/markeron, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mfish-qf (a GitHub user) maintains it in mfish-qf/mfish-nocode, which has 747 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 15, 2026.
Source: mfish-qf/mfish-nocode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.