Livewire Development
coollabsio/coolify
A skill your agent uses for any task or question involving Livewire.
Generate Vue frontend pages using catch-table for CatchAdmin module with full component features.
$ npx skills add JaguarJack/catch-admin --skill vue-pages -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JaguarJack/catch-admin vue-pages --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/JaguarJack/catch-admin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/09-vue-pages .claude/skills/vue-pages && 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 "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .claude/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pagesType 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 JaguarJack/catch-admin --skill vue-pages -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JaguarJack/catch-admin vue-pages --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JaguarJack/catch-admin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/09-vue-pages .agents/skills/vue-pages && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .agents/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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 JaguarJack/catch-admin --skill vue-pages -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JaguarJack/catch-admin vue-pages --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JaguarJack/catch-admin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/09-vue-pages .cursor/skills/vue-pages && 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 "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .cursor/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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/JaguarJack/catch-admin.git --path .claude/skills/09-vue-pages--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 JaguarJack/catch-admin --skill vue-pages -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JaguarJack/catch-admin vue-pages --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JaguarJack/catch-admin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/09-vue-pages .gemini/skills/vue-pages && 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 "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .gemini/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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 JaguarJack/catch-admin vue-pagesInstalls 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 JaguarJack/catch-admin --skill vue-pages -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JaguarJack/catch-admin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/09-vue-pages .github/skills/vue-pages && 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 "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .github/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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 JaguarJack/catch-admin --skill vue-pages -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JaguarJack/catch-admin vue-pages --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JaguarJack/catch-admin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/09-vue-pages .opencode/skills/vue-pages && 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 "vue-pages" agent skill from https://github.com/JaguarJack/catch-admin/tree/v5/.claude/skills/09-vue-pages into .opencode/skills/vue-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-pages", 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.
vue-pagesGenerate Vue frontend pages using catch-table for CatchAdmin module with full component features.
Vue Pages is an agent skill from JaguarJack/catch-admin. Generate Vue frontend pages using catch-table for CatchAdmin module with full component features.
Its SKILL.md is about 2.6k 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 Documents & Office. It works with Vue.js and Laravel. The repository describes itself as: CatchAdmin 是一个功能强大、易于扩展的现代化 PHP 后台管理系统。它采用前后端分离架构,CatchAdmin 集成了 Token 鉴权、权限管理、动态路由、动态表格、分页封装、资源权限、上传下载、代码生成器支持一键导出导入,数据回收站,附件管理的等等一系列实用的开发功能的模块化框架。官网地址:. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit e83d5aa. 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 javascript, 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.
Vue Pages loads about 2.6k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 162 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 JaguarJack/catch-admin at commit e83d5aa, republished under its Apache-2.0 licence (© JaguarJack). 162 words, ~2,576 tokens.
.claude/skills/vue-pages/SKILL.md (or your agent's skills folder).创建前端页面,使用 catch-table 组件。
web/src/views/{module}/
├── index.vue # List page
└── create.vue # Form component| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
api | string | null | API 接口路径 |
columns | Column[] | [] | 表格列配置 |
search-form | SItem[] | [] | 搜索表单配置 |
permission | string | null | 权限前缀 |
height | string/number | 'auto' | 表格高度 |
border | boolean | true | 是否显示边框 |
size | string | 'default' | 尺寸: large/default/small |
row-key | string | '' | 行数据 Key (树形必填) |
empty-text | string | '暂无数据' | 空数据文本 |
pagination | boolean | true | 是否显示分页 |
limit | number | 10 | 每页数量 |
limits | number[] | [10,20,30,40,50] | 可选每页数量 |
operation | boolean | true | 是否显示新增按钮 |
show-tools | boolean | true | 是否显示工具栏 |
show-header | boolean | true | 是否显示表头工具 |
exports | boolean | false | 是否显示导出 |
export-url | string | '' | 导出接口 |
import-url | string | '' | 导入接口 |
trash | boolean | false | 是否启用回收站 |
multi-del-show | boolean | true | 是否显示批量删除 |
primary-name | string | 'id' | 主键字段名 |
default-params | object | {} | 默认查询参数 |
destroy-confirm | string | '确定删除吗' | 删除确认文本 |
dialog-width | string | '' | 弹窗宽度 |
dialog-height | string | '' | 弹窗高度 |
searchable | boolean | true | 是否显示搜索 |
interface Column {
// 基础配置
type?: 'selection' | 'expand' | 'index' | 'operate'
label?: string // 列标题
prop?: string // 字段名 (支持 'category.name' 嵌套)
width?: number | string // 列宽
'min-width'?: number // 最小宽度
align?: string // 对齐: left/center/right
fixed?: 'left' | 'right' // 固定列
// 显示控制
show?: boolean // 是否显示 (默认 true)
sortable?: boolean // 是否可排序
// 特殊列类型
slot?: string // 自定义插槽名
header?: string // 自定义表头插槽
ellipsis?: boolean | number // 文本溢出 (true=20字符)
switch?: boolean // 状态开关
switchRefresh?: Function // 开关后回调
image?: boolean // 图片显示
preview?: boolean // 图片预览 (默认 false)
link?: boolean // 链接
link_text?: string // 链接文本
route?: string // Vue 路由 (支持 :id 参数)
tags?: boolean | number[] // 标签显示
mask?: boolean // 脱敏显示 (****)
filter?: Function // 数据过滤函数
class?: string // 自定义 CSS 类
// 操作列配置 (type='operate')
update?: boolean // 显示编辑按钮 (默认 true)
destroy?: boolean // 显示删除按钮 (默认 true)
// 多级表头
children?: Column[] // 子列配置
}interface SearchField {
type: 'input' | 'select' | 'input-number' | 'date' | 'datetime' | 'range'
label: string // 标签
name: string // 字段名
api?: string // 下拉选项 API
options?: Array<{ // 静态选项
label: string
value: string | number
}>
placeholder?: string
default?: any // 默认值
props?: object // 树形选择器 props
show?: boolean // 是否显示
}| 插槽 | 说明 |
|---|---|
#dialog="row" | 表单弹窗内容 (必填) |
#{prop}="scope" | 自定义列内容 |
#operate="scope" | 额外操作按钮 |
#_operate="scope" | 完全自定义操作列 |
#operation | 左侧工具栏按钮 |
#multiOperate | 批量操作按钮 |
#csearch | 搜索表单额外内容 |
#middle | 搜索和表格之间内容 |
const catchtable = ref()
// 执行搜索
catchtable.value.doSearch(params, merge)
// 打开弹窗
catchtable.value.openDialog(row, title)
// 关闭弹窗
catchtable.value.closeDialog(isReset)
// 重置搜索
catchtable.value.reset()
// 删除
catchtable.value.del(api, id)
// 设置默认参数
catchtable.value.setDefaultParams(params)
// 获取多选 IDs
catchtable.value.getMultiSelectIds()
// 获取当前查询参数
catchtable.value.getTableQuery()// catch-table 提供
provide('closeDialog', (isReset) => {})
provide('refresh', () => {})
// 在 create.vue 中使用
const closeDialog = inject('closeDialog')
const refresh = inject('refresh')<template>
<div>
<catch-table
ref="catchtable"
:columns="columns"
:api="api"
:exports="true"
:trash="true"
permission="product.product"
exportUrl="/product/export"
importUrl="/product/import"
:search-form="searchForm"
:default-params="{ type: 1 }"
row-key="id"
>
<!-- 自定义列 -->
<template #image="scope">
<el-image :src="scope.row.image" style="width: 50px" />
</template>
<template #price="scope">
<span class="text-red-500">¥{{ scope.row.price }}</span>
</template>
<!-- 额外操作按钮 -->
<template #operate="scope">
<el-button type="primary" link @click="handleDetail(scope.row)">
详情
</el-button>
</template>
<!-- 左侧工具栏 -->
<template #operation>
<el-button @click="handleBatchExport">批量导出</el-button>
</template>
<!-- 批量操作 -->
<template #multiOperate>
<el-button type="warning" @click="handleBatchUpdate">
批量更新
</el-button>
</template>
<!-- 表单弹窗 -->
<template #dialog="row">
<Create :primary="row?.id" :api="api" />
</template>
</catch-table>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import Create from './create.vue'
const api = 'products'
const catchtable = ref()
const columns = [
{ type: 'selection' },
{ label: 'ID', prop: 'id', width: 80, sortable: true },
{ label: '图片', prop: 'image', slot: 'image', width: 80 },
{ label: '名称', prop: 'name', ellipsis: 30 },
{ label: '分类', prop: 'category.name', width: 120 },
{ label: '价格', prop: 'price', slot: 'price', width: 100 },
{ label: '库存', prop: 'stock', width: 80 },
{
label: '状态',
prop: 'status',
switch: true,
width: 80,
tags: ['success', 'danger'] // 1=success, 2=danger
},
{ label: '创建时间', prop: 'created_at', width: 180, sortable: true },
{
type: 'operate',
label: '操作',
width: 200,
fixed: 'right',
update: true,
destroy: true
}
]
const searchForm = [
{ type: 'input', label: '名称', name: 'name' },
{ type: 'select', label: '分类', name: 'category_id', api: 'categories' },
{ type: 'select', label: '状态', name: 'status', options: [
{ label: '启用', value: 1 },
{ label: '禁用', value: 2 }
]},
{ type: 'range', label: '创建时间', name: 'created_at' }
]
// 自定义搜索
const handleSearch = (params) => {
catchtable.value.doSearch(params)
}
// 详情
const handleDetail = (row) => {
// router.push(`/product/detail/${row.id}`)
}
// 批量导出
const handleBatchExport = () => {
const ids = catchtable.value.getMultiSelectIds()
// ...
}
</script><template>
<el-form :model="formData" label-width="100px" ref="form" v-loading="loading">
<el-form-item
label="名称"
prop="name"
:rules="[{ required: true, message: '请输入名称' }]"
>
<el-input v-model="formData.name" placeholder="请输入名称" maxlength="100" />
</el-form-item>
<el-form-item
label="分类"
prop="category_id"
:rules="[{ required: true, message: '请选择分类' }]"
>
<el-select v-model="formData.category_id" placeholder="请选择" class="w-full">
<el-option
v-for="item in categories"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label="价格"
prop="price"
:rules="[{ required: true, message: '请输入价格' }]"
>
<el-input-number v-model="formData.price" :precision="2" :min="0" class="w-full" />
</el-form-item>
<el-form-item label="库存" prop="stock">
<el-input-number v-model="formData.stock" :min="0" class="w-full" />
</el-form-item>
<el-form-item label="图片" prop="image">
<upload v-model="formData.image" />
</el-form-item>
<el-form-item label="描述" prop="description">
<el-input v-model="formData.description" type="textarea" :rows="4" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status">
<el-radio :value="1">启用</el-radio>
<el-radio :value="2">禁用</el-radio>
</el-radio-group>
</el-form-item>
<div class="flex justify-end">
<el-button type="primary" @click="submitForm(form)">提交</el-button>
</div>
</el-form>
</template>
<script lang="ts" setup>
import { inject, onMounted, ref } from 'vue'
import { useCreate } from '@/composables/curd/useCreate'
import { useShow } from '@/composables/curd/useShow'
import http from '@/support/http'
const props = defineProps<{
primary?: string | number
api: string
}>()
// CRUD composables
const { formData, form, loading, submitForm, close } = useCreate(props.api, props.primary)
// 编辑模式加载数据
if (props.primary) {
useShow(props.api, props.primary, formData)
}
// 关闭弹窗
const closeDialog = inject('closeDialog')
onMounted(() => {
close(() => closeDialog?.())
})
// 加载分类选项
const categories = ref([])
onMounted(async () => {
const res = await http.get('categories')
categories.value = res.data.data
})
</script>{ label: '分类', prop: 'category.name' } // 访问关联对象{ label: '图片', prop: 'image', image: true } // 不可预览
{ label: '图片', prop: 'image', image: true, preview: true } // 可预览{ label: '链接', prop: 'url', link: true }
{ label: '链接', prop: 'url', link: true, link_text: '查看' }{ label: '详情', prop: 'name', route: '/product/detail/:id' }{ label: '状态', prop: 'status', tags: true } // 默认样式
{ label: '状态', prop: 'status', tags: ['success', 'danger', 'warning'] }{
label: '价格',
prop: 'price',
filter: (val) => `¥${val.toFixed(2)}`
}{ label: '手机', prop: 'mobile', mask: true } // 138****8888<catch-table
:columns="columns"
api="categories"
row-key="id"
:pagination="false"
>后端需返回嵌套结构或使用 asTree() 方法。
© JaguarJack, 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 .claude/skills/09-vue-pages of JaguarJack/catch-admin.
Open the folder on GitHubat commit e83d5aa
Vue Pages 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 |
|---|---|---|---|---|---|---|
| Vue Pages this skillJaguarJack/catch-admin | 935 | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Livewire Developmentcoollabsio/coolify | 63k | — | ~964 | Automated safety check: Pass | MIT | |
| Livewire Developmentyungifez/skuul | 409 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Medialibrary Developmentgdarko/laravel-vue-starter | 145 | 3 repos | ~880 | Automated safety check: Pass | MIT | |
| Wayfinder Developmentslimani-dev/muraqib | 129 | 1 repos | ~622 | Automated safety check: Pass | MIT | |
| Configure Nightwatchtrypostit/trypost | 692 | — | ~2.7k | Automated safety check: Pass | MIT |
coollabsio/coolify
A skill your agent uses for any task or question involving Livewire.
yungifez/skuul
A skill your agent uses for any task or question involving Livewire.
gdarko/laravel-vue-starter
Build and work with spatie/laravel-medialibrary features including associating files with Eloquent models, defining media collections and conversions, generating responsive images, and retrieving…
slimani-dev/muraqib
A skill your agent uses for Laravel Wayfinder which auto-generates typed functions for Laravel controllers and routes.
trypostit/trypost
Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies.
trypostit/trypost
Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.
JaguarJack/catch-admin
Generates complete CRUD module from database table definition.
JaguarJack/catch-admin
Generate CRUD controller for CatchAdmin module. An agent skill from JaguarJack/catch-admin.
JaguarJack/catch-admin
Generate database migration file for CatchAdmin module. An agent skill from JaguarJack/catch-admin.
JaguarJack/catch-admin
Generate Eloquent model for CatchAdmin module with full CatchModel features.
JaguarJack/catch-admin
Parse table definition to extract module name, model name, table name, and field definitions.
JaguarJack/catch-admin
Generate Excel export class for CatchAdmin module. An agent skill from JaguarJack/catch-admin.
Categories
Generate Vue frontend pages using catch-table for CatchAdmin module with full component features. Vue Pages is an agent skill from JaguarJack/catch-admin. Generate Vue frontend pages using catch-table for CatchAdmin module with full component features.
Vue Pages fits situations like: documents & Office work in your project.
Run `npx skills add JaguarJack/catch-admin --skill vue-pages -a claude-code`. Or copy the skill folder (.claude/skills/09-vue-pages in JaguarJack/catch-admin) into .claude/skills/vue-pages in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JaguarJack/catch-admin --skill vue-pages -a codex`. Or copy the skill folder (.claude/skills/09-vue-pages in JaguarJack/catch-admin) into .agents/skills/vue-pages 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 JaguarJack/catch-admin --skill vue-pages -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vue-pages, .gemini/skills/vue-pages, .github/skills/vue-pages and .opencode/skills/vue-pages in your project.
SKILL.md names no scripts, command-line tools or credentials: Vue Pages 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.
Vue Pages 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 2.6k tokens (SKILL.md is roughly 10k 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 Vue Pages: Livewire Development (coollabsio/coolify, 63k stars), Livewire Development (yungifez/skuul, 409 stars), Medialibrary Development (gdarko/laravel-vue-starter, 145 stars) and Wayfinder Development (slimani-dev/muraqib, 129 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JaguarJack (a GitHub user) maintains it in JaguarJack/catch-admin, which has 935 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 16, 2026.
Source: JaguarJack/catch-admin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.