Agent skill

Frontend Crud

by mfish-qf in mfish-qf/mfish-nocode

为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。

Apache-2.0Auto-check passedFrontend & Design

Install Frontend Crud

skills CLI
$ npx skills add mfish-qf/mfish-nocode --skill frontend-crud -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mfish-qf/mfish-nocode frontend-crud --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
frontend-crud
GitHub stars
747
Token cost
~3.8k tokens
SKILL.md length
185 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。

  • Works in 6 steps: Model… → API 请求文件(api/{apiPrefix}/{类名}.ts) → data… → …
  • Frontend & Design work in your project
  • SKILL.md covers 项目前端架构, 技术栈约定, 生成步骤 and 命名约定, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • Frontend & Design work in your project

Example prompts

  • “帮我生成前端增删改查”
  • “新增前端页面”
  • “生成前端CRUD”
  • “/frontend-crud”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Model 类型定义(api/{apiPrefix}/model/{类名}Model.ts)
  2. API 请求文件(api/{apiPrefix}/{类名}.ts)
  3. data 配置文件(views/{apiPrefix}/{entity-kebab-case}/{变量名}.data.ts)
  4. 列表主页面(views/{apiPrefix}/{entity-kebab-case}/index.vue)
  5. 新增/编辑弹窗(views/{apiPrefix}/{entity-kebab-case}/{类名}Modal.vue)
  6. 详情查看弹窗(views/{apiPrefix}/{entity-kebab-case}/{类名}ViewModal.vue)

What it can do on your machine

Read from SKILL.md and the folder at commit 664fc6b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~41
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

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.

Safety

Auto-check passed

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.

SKILL.md

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.

Download SKILL.mdSave it as .claude/skills/frontend-crud/SKILL.md (or your agent's skills folder).
name
frontend-crud
description
为 mfish-nocode-pro 项目前端(Vue3 + TypeScript)生成标准增删改查页面代码,包括 Model、API、data、index.vue、Modal、ViewModal 六个文件。当用户说"帮我生成前端增删改查"、"新增前端页面"、"生成前端CRUD"时使用此 skill。

前端 CRUD 代码生成器

项目前端架构

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 # 详情查看弹窗

技术栈约定

  • 框架:Vue 3 + TypeScript + <script lang="ts" setup>
  • HTTP: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)
  • ID 类型:默认 string,数值型主键时为 number

生成步骤

第一步:收集信息

询问用户(如未提供):

  1. 模块名(apiPrefix)(如:demo、sys、nocode)
  2. 类名(PascalCase)(如:DemoOrder)
  3. 中文名称(如:销售订单)
  4. 字段列表:字段名(camelCase)、TS 类型(string/number/boolean)、中文描述、是否可选
  5. 搜索字段:哪些字段出现在搜索表单中(及组件类型:Input / ApiSelect+字典编码 / DatePicker)
  6. 表单字段:哪些字段出现在新增/编辑表单中(及组件类型,是否必填)
  7. 字典字段:哪些字段使用字典渲染(需提供字典编码)

第二步:生成六个文件

按以下顺序生成,所有文件路径基于 mfish-nocode-view/src/ 目录。

1. Model 类型定义(api/{apiPrefix}/model/{类名}Model.ts)
typescript
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、Datestring
Integer、Long、Short、Double、BigDecimalnumber
Booleanboolean

2. API 请求文件(api/{apiPrefix}/{类名}.ts)
typescript
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。


3. data 配置文件(views/{apiPrefix}/{entity-kebab-case}/{变量名}.data.ts)
typescript
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("{字典编码}")

4. 列表主页面(views/{apiPrefix}/{entity-kebab-case}/index.vue)
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>

5. 新增/编辑弹窗(views/{apiPrefix}/{entity-kebab-case}/{类名}Modal.vue)
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>

6. 详情查看弹窗(views/{apiPrefix}/{entity-kebab-case}/{类名}ViewModal.vue)
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

注意事项

  1. 字典字段:columns 和 viewSchema 中使用 buildDictTag,searchFormSchema 和 FormSchema 中使用 getDictProps;只要有字典字段就需要在文件顶部引入 buildDictTag 和 getDictProps
  2. 无搜索表单字段:searchFormSchema 可以为空数组 [],useSearchForm 设为 false
  3. 数值型主键:delete{类名} 参数类型改为 number,Model 中 BaseEntity<number>
  4. 导出功能可选:若不需要导出,删除 handleExport、export{类名} 的引入和 toolbar 中的导出按钮
  5. 批量删除可选:若不需要批量删除,删除 handleBatchDelete、deleteBatch{类名} 的引入、rowSelection 配置和 toolbar 中的批量删除按钮
  6. 配合后端 CRUD:前端文件路径中的 {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

Files

Just SKILL.md in .codex/skills/frontend-crud of mfish-qf/mfish-nocode.

Open the folder on GitHubat commit 664fc6b

Used in 1 other repository

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.

Compare with similar skills

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.

Frontend Crud compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Frontend Crud this skillmfish-qf/mfish-nocode747—~3.8kAutomated safety check: PassApache-2.0
Create Docsvictorgarciaesgi/nuxt-typed-router4132 repos~2.8kAutomated safety check: PassMIT
Uni Appsonofmagic/uni-app-tailwindcss-template3362 repos~1kAutomated safety check: PassMIT
QR Codes with qrcode.vuescopewu/qrcode.vue827—~1.3kAutomated safety check: PassMIT
Cross Platform Tauri UIifer47/markeron1.2k—~2kAutomated safety check: PassMIT
Vuetify Skilldlogue/vite-vuetify-ts-starter1811 repos~1.9kAutomated safety check: PassMIT

Similar skills

  • Create Docs

    victorgarciaesgi/nuxt-typed-router

    Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.

    413 GitHub starsUsed in 2 repos~2.8k tokens
    Frontend & DesignAuto-check passed
  • Uni App

    sonofmagic/uni-app-tailwindcss-template

    Comprehensive skill reference for uni-app cross-platform development framework

    336 GitHub starsUsed in 2 repos~1k tokens
    Frontend & DesignAuto-check passed
  • QR Codes with qrcode.vue

    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.

    827 GitHub stars~1.3k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Cross-platform UI styling for MarkerOn Tauri app (macOS WKWebView vs Windows WebView2).

    1.2k GitHub stars~2k tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Vuetify Skilld

    logue/vite-vuetify-ts-starter

    Vue Material Component Framework. An agent skill from logue/vite-vuetify-ts-starter.

    181 GitHub starsUsed in 1 repo~1.9k tokens
    Frontend & DesignAuto-check passed
  • Tauri Config Ipc

    ifer47/markeron

    Extend MarkerOn settings, persisted config, or Tauri IPC commands.

    1.2k GitHub stars~1k tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed

More from mfish-qf/mfish-nocode

  • Crud Generator

    mfish-qf/mfish-nocode

    为 mfish-nocode-pro 项目生成标准增删改查(CRUD)代码,包括 Entity、Req、Mapper、Service、ServiceImpl、Controller 六层结构。当用户说"帮我生成增删改查"、"新增一个模块"、"生成CRUD代码"时使用此 skill。

    747 GitHub stars~4.6k tokensUpdated 25 days ago
    Auto-check passed
  • Workflow Audit

    mfish-qf/mfish-nocode

    为 mfish-nocode-pro 项目集成 Flowable 工作流审批能力,包括注册 FlowKey、实体审批状态字段、Service 启动/撤回流程、Controller 审批回调接口、Feign 回调接口注册五个步骤的完整代码模板。当用户说"带工作流审批"、"发布审核流程"、"集成工作流"、"审批回调"时使用此 skill。

    747 GitHub stars~2.3k tokensUpdated 25 days ago
    Auto-check passed

Questions about Frontend Crud

What does Frontend Crud do?

为 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.

When should I use Frontend Crud?

Frontend Crud fits situations like: frontend & Design work in your project.

How do I install Frontend Crud in Claude Code?

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.

How do I install Frontend Crud in Codex?

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.

Can I use Frontend Crud in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Frontend Crud need to run?

SKILL.md names no scripts, command-line tools or credentials: Frontend Crud is instructions for the agent only.

Does Frontend Crud access the network?

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.

Is Frontend Crud safe to install?

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.

What licence does Frontend Crud use?

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.

How many tokens does Frontend Crud use?

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.

What are the alternatives to Frontend Crud?

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.

Who maintains Frontend Crud?

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.