Crud
zhe-qi/clhoria-template
创建或修改 CRUD 模块。当需要创建新的增删改查 API、修改现有路由模块、添加新字段、新增接口、或用户请求"创建/修改 XX 管理"时使用
在本模板项目中创建或修改 CRUD 列表页、表格列、搜索区、表单弹窗。使用 GiPageLayout、useTable、GiButton、a-table、GiForm、useDict 时加载本技能。
$ npx skills add lin-97/gi-demo --skill crud-page -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lin-97/gi-demo crud-page --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/lin-97/gi-demo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/crud-page .claude/skills/crud-page && 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 "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .claude/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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/lin-97/gi-demo/tree/master/.agents/skills/crud-pageType 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 lin-97/gi-demo --skill crud-page -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lin-97/gi-demo crud-page --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lin-97/gi-demo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/crud-page .agents/skills/crud-page && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .agents/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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 lin-97/gi-demo --skill crud-page -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lin-97/gi-demo crud-page --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lin-97/gi-demo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/crud-page .cursor/skills/crud-page && 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 "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .cursor/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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/lin-97/gi-demo.git --path .agents/skills/crud-page--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 lin-97/gi-demo --skill crud-page -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lin-97/gi-demo crud-page --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lin-97/gi-demo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/crud-page .gemini/skills/crud-page && 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 "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .gemini/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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 lin-97/gi-demo crud-pageInstalls 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 lin-97/gi-demo --skill crud-page -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lin-97/gi-demo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/crud-page .github/skills/crud-page && 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 "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .github/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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 lin-97/gi-demo --skill crud-page -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lin-97/gi-demo crud-page --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lin-97/gi-demo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/crud-page .opencode/skills/crud-page && 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 "crud-page" agent skill from https://github.com/lin-97/gi-demo/tree/master/.agents/skills/crud-page into .opencode/skills/crud-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crud-page", 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.
crud-page在本模板项目中创建或修改 CRUD 列表页、表格列、搜索区、表单弹窗。使用 GiPageLayout、useTable、GiButton、a-table、GiForm、useDict 时加载本技能。
Crud Page is an agent skill from lin-97/gi-demo. 在本模板项目中创建或修改 CRUD 列表页、表格列、搜索区、表单弹窗。使用 GiPageLayout、useTable、GiButton、a-table、GiForm、useDict 时加载本技能。
Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: A Vue3 Admin Template. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit d1e310a. 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.
Crud Page loads about 1.3k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 112 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 lin-97/gi-demo at commit d1e310a, republished under its Apache-2.0 licence (© lin-97). 112 words, ~1,296 tokens.
.claude/skills/crud-page/SKILL.md (or your agent's skills folder).<template>
<GiPageLayout margin collapsed>
<template #left><!-- 可选:树/分类 --></template>
<a-row justify="space-between" class="g-row-tool">
<a-space wrap>
<GiButton type="add" @click="onAdd" />
<GiButton type="delete" @click="onBatchDelete" />
</a-space>
<a-space wrap>
<!-- 搜索表单项 -->
<GiButton type="search" @click="search" />
<GiButton type="reset" @click="reset" />
</a-space>
</a-row>
<a-table
class="g-table"
row-key="id"
:loading="loading"
:data="tableData"
:columns="tableColumns"
:bordered="{ cell: true }"
:scroll="{ x: '100%', y: '100%', minWidth: 1200 }"
:pagination="pagination"
:row-selection="{ type: 'checkbox', showCheckedAll: true }"
:selected-keys="selectedKeys"
@select="select"
@select-all="selectAll"
/>
<XxxFormModal ref="XxxFormModalRef" @save-success="search" />
</GiPageLayout>
</template>
<script setup lang="tsx">
defineOptions({ name: 'ModuleName' })
</script>import type * as T from '@/apis/system/user'
import { baseAPI } from '@/apis/system/user'
import { useDict, useTable } from '@/hooks'
const { dictData } = useDict(['STATUS'] as const)
const queryParams = reactive({ status: '', username: '' })
const {
loading,
tableData,
pagination,
selectedKeys,
search,
select,
selectAll,
fixed, // 操作列 fixed: 'right'(小屏自动取消)
onDelete,
onBatchDelete,
refresh
} = useTable({
listAPI: (page) => baseAPI.getList({ ...page, ...queryParams }),
deleteAPI: (ids) => baseAPI.delete({ ids }),
immediate: true,
rowKey: 'id', // 默认 id
crossPageSelect: false // 跨页多选时设为 true
})要点:
search() 会重置到第 1 页并清空选中refresh() 保持当前页刷新listAPI 参数为 { page, size },需展开到接口undefined 再传 APIadd | edit | delete | search | reset | upload | import | export
列表工具栏与操作列统一使用 GiButton,操作列常用 size="mini"。
使用 lang="tsx",从 @arco-design/web-vue 引入 TableColumnData:
const tableColumns: TableColumnData[] = [
{
title: '序号',
width: 68,
align: 'center',
render: ({ rowIndex }) => <span>{rowIndex + 1}</span>
},
{ title: '名称', dataIndex: 'name', ellipsis: true, tooltip: true },
{
title: '状态',
width: 100,
align: 'center',
render: ({ record }) => (
<GiCellStatus status={record.status} />
)
},
{
title: '操作',
width: 160,
align: 'center',
fixed: 'right', // 或绑定 useTable 的 fixed
render: ({ record }) => (
<Space>
<GiButton type="edit" size="mini" onClick={() => onEdit(record as T.ListItem)} />
<Popconfirm content="确定删除?" onBeforeOk={() => onDelete(record as T.ListItem)}>
<GiButton type="delete" size="mini" />
</Popconfirm>
</Space>
)
}
]常用单元格组件:GiCellAvatar、GiCellGender、GiCellStatus(从 @/components/GiCell 引入或在 TSX 中直接使用)。
| 属性/插槽 | 说明 |
|---|---|
#left | 左侧栏(部门树、字典类型列表等) |
#header | 顶栏(少用) |
margin | 外边距模式 |
collapsed | 显示折叠按钮 |
size | 左侧宽度,如 "280px" |
左栏选中后通过事件同步右侧列表,参考 dict/index.vue 的 onDictTypeRefresh。
<a-modal v-model:visible="visible" :title="title" :mask-closable="false"
@before-ok="save" @close="close">
<GiForm ref="GiFormRef" :model-value="form" :columns="formColumns"
@update:model-value="Object.assign(form, $event)" />
</a-modal>import type { FormColumnItem } from '@/components/index'
import { useResetReactive } from '@/hooks'
const [form, resetForm] = useResetReactive({ id: '', name: '', status: '1' as Status })
const GiFormRef = useTemplateRef<InstanceType<typeof GiForm>>('GiFormRef')
const add = () => {
detailId.value = ''
visible.value = true
}
const edit = async (id: string) => {
visible.value = true
detailId.value = id
Object.assign(form, (await baseAPI.getDetail({ id })).data)
}
const close = () => {
GiFormRef.value?.formRef?.resetFields()
resetForm()
}
const save = async () => {
const valid = await GiFormRef.value?.formRef?.validate()
if (valid) return false
// await baseAPI.add(form) 或 baseAPI.update(form)
emit('save-success')
return true
}
defineExpose({ add, edit })formColumns 常用 type:input、select、tree-select、radio-group、switch、textarea。校验可用 required、rules;正则见 @/utils/regexp。
const { dictData } = useDict(['STATUS'] as const)
// 模板:<a-select :options="dictData.STATUS" />| 需求 | 方案 |
|---|---|
| 内置斑马纹/全屏/列设置 | GiTable |
继续用 a-table + 工具栏/列设置 | GiTableSetting 包裹(见 views/table/custom3) |
| 简单列表 | a-table + useTable(系统模块主流) |
defineOptions({ name }) 已设置row-key="id" 与 useTable 的 rowKey 一致onDelete / onBatchDelete 或自定义 Popconfirm + APIdefineExpose({ add, edit }),父组件 useTemplateRef 调用emit('save-success') 并触发 search© lin-97, 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 .agents/skills/crud-page of lin-97/gi-demo.
Open the folder on GitHubat commit d1e310a
Crud Page 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 |
|---|---|---|---|---|---|---|
| Crud Page this skilllin-97/gi-demo | 188 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Crudzhe-qi/clhoria-template | 193 | — | ~552 | Automated safety check: Pass | MIT | |
| Crudwujun728/jun_java_plugin | 239 | — | ~2.8k | Automated safety check: Pass | None | |
| Pangolin CRUD Endpointsfosrl/pangolin | 23k | — | ~461 | Automated safety check: Pass | Custom licence | |
| Fa Crud Page Generatorfantastic-admin/basic | 3.4k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Crud AutomatorElsiKora/NestJS-Crud-Automator | 261 | — | ~6.7k | Automated safety check: Pass | MIT |
zhe-qi/clhoria-template
创建或修改 CRUD 模块。当需要创建新的增删改查 API、修改现有路由模块、添加新字段、新增接口、或用户请求"创建/修改 XX 管理"时使用
wujun728/jun_java_plugin
一键生成完整业务模块代码(SQL/Entity/DAO/XML/Repository/Service/Controller/Mapper/POJO),用于创建新的业务功能
fosrl/pangolin
Use whenever asked to add, create, or scaffold a CRUD endpoint, router, or entity in this repo's server (create/list/get/update/delete handlers, new…
fantastic-admin/basic
为 Fantastic-admin 框架生成完整的 CRUD 业务模块,遵循框架标准模块结构和内建 Fa 组件体系,使用 FaForm/FaFormItem 生成新增/编辑表单,产出列表页、详情/编辑页、DetailForm 表单组件、API 模块、fake mock 数据、可选路由。用户说:'帮我做一个商品管理页面'、'搭一个用户列表,能搜索分页新增编辑删除'、'生成订单模块'、'新建 XX…
ElsiKora/NestJS-Crud-Automator
Design, audit, document, refactor, and implement NestJS CRUD Automator resources using @elsikora/nestjs-crud-automator.
ArtisanCloud/PowerX
PowerX CRUD 依赖注入规则(Deps 单入口、构造注入、跨传输复用). An agent skill from ArtisanCloud/PowerX.
在本模板项目中创建或修改 CRUD 列表页、表格列、搜索区、表单弹窗。使用 GiPageLayout、useTable、GiButton、a-table、GiForm、useDict 时加载本技能。. Crud Page is an agent skill from lin-97/gi-demo.
Run `npx skills add lin-97/gi-demo --skill crud-page -a claude-code`. Or copy the skill folder (.agents/skills/crud-page in lin-97/gi-demo) into .claude/skills/crud-page in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lin-97/gi-demo --skill crud-page -a codex`. Or copy the skill folder (.agents/skills/crud-page in lin-97/gi-demo) into .agents/skills/crud-page 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 lin-97/gi-demo --skill crud-page -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/crud-page, .gemini/skills/crud-page, .github/skills/crud-page and .opencode/skills/crud-page in your project.
SKILL.md names no scripts, command-line tools or credentials: Crud Page 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.
Crud Page 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 1.3k tokens (SKILL.md is roughly 5.2k 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 Crud Page: Crud (zhe-qi/clhoria-template, 193 stars), Crud (wujun728/jun_java_plugin, 239 stars), Pangolin CRUD Endpoints (fosrl/pangolin, 23k stars) and Fa Crud Page Generator (fantastic-admin/basic, 3.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lin-97 (a GitHub user) maintains it in lin-97/gi-demo, which has 188 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on June 12, 2026.
Source: lin-97/gi-demo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.