Vue Base Skill logo

Vue Base Skill

Community
jiushiwon
vue-base-skill

Vue 基础组件父技能。基于「一切皆容器」思想,容器原则:所有组件必须由 base-card 承载。直接提供两个公共根容器(base-card 内容容器 + base-input 输入容器),外加嵌套业务子技能(card / button / tag / table / form)。强制约束:所有 .md 文档严禁使用 HTML5 原生标签(button / table / input / select / textarea / checkbox / radio / form 等),必须用 div / span + CSS3 实现。

Overview

Publisherjiushiwon
Repositorywg-skills
Skill namevue-base-skill
Stars
123
Forks
38
Bundled files
298
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 298 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by jiushiwon on GitHub. Read the source before you install it.

Installation

Install the Vue Base Skill AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/jiushiwon/wg-skills/tree/main/vibeCoding/frontend/vue/vue-base-skill
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jiushiwon/wg-skills.git /tmp/wg-skills
mkdir -p .claude/skills
cp -r /tmp/wg-skills/vibeCoding/frontend/vue/vue-base-skill .claude/skills/vue-base-skill
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Vue Base Skill in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Vue Base Skill on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Vue Base Skill is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

vue-base-skill(Vue 基础组件父技能)

容器原则:所有组件、表单、表格都必须嵌入 <base-card>。base-card 是根容器,无例外。

零 HTML5 标签原则:所有 .md 文档中的实现代码,必须使用 <div> <span> <p> 等基础标签 + CSS3 样式实现,严禁使用 <button> <table> <input> <select> <textarea> <checkbox> <radio> <form> <option> <tr> <td> <th> 等 HTML5 原生标签。按钮用 <base-button>、标签用 <base-status>、选择器/输入框/复选框/单选框等全部用 <div> + CSS3 模拟。

本技能严格镜像 uniapp-base-skill 结构:父技能(规范层)+ 4 个业务化子技能。

公共根容器(vue-base-skill 直接提供)

容器职责入口
base-card内容容器(包裹业务区块、表单、表格)base-card.md
base-input输入容器(承载所有用户输入交互)base-input.md

两个根容器与所有业务子技能平级,按需直接 import 使用,无须进子技能目录。

子技能地图

子技能职责入口
vue-card-skillbase-card 完整规格 + 11 业务变体SKILL.md
vue-button-skillbase-button 按钮组件SKILL.md
vue-tag-skillbase-tag 标签组件SKILL.md
vue-table-skillbase-table 表格组件(23 形态)SKILL.md
vue-form-skillbase-form 表单体系(8 组件:form / form-item / input / select / checkbox / radio / switch / datepicker)SKILL.md
vue-cascader-skillbase-cascader 级联选择器SKILL.md
vue-loading-skillbase-loading / base-skeleton / base-loading-maskSKILL.md
vue-empty-skillbase-empty 空状态SKILL.md

设计 Token

所有子技能统一引用 vue-theme-skill 提供的 CSS 变量:

类别命名规范示例
颜色--color-{name} / --color-{name}-{50~950}--color-primary-500
间距--space-{n}--space-4(16px)
字号--font-{size}--font-base(14px)
行高--height-{comp}-{size}--height-button-md(36px)
圆角--radius-{size}--radius-lg(8px)

禁止硬编码任何颜色 / 间距 / 字号 / 行高 / 圆角值。

🚫 零 HTML5 标签铁律(.md 文档约束)

所有 .md 文档中的实现代码(<template> / <script> / <style> / 代码片段)必须使用 <div> <span> <p> 等基础标签 + CSS3 样式实现。

严禁使用

HTML5 标签必须替换为
<button><base-button> 组件
<input><div contenteditable> + CSS3 自定义输入框
<select> / <option><div> + CSS3 自定义下拉
<textarea><div contenteditable> + CSS3 自定义
<table> / <tr> / <td> / <th><div> + display:flex/grid 自定义表格
<checkbox> / <radio><div> + CSS3 自定义复选/单选
<form><div> + @submit.prevent 自定义表单
<a><div role="link"> 或 <router-link>
<img><div> + background-image

唯一例外

✅ Demo HTML 文件(demo-components/**/*.html)允许使用 HTML5 标签 —— 这是给用户查看的运行示例,与生产组件实现隔离。

工具替代矩阵

场景HTML5替换方案
按钮<button><base-button>
标签 / 徽章<span class="tag"><base-status>
复选框<input type="checkbox"><span role="checkbox"> + CSS
单选框<input type="radio"><span role="radio"> + CSS
输入框<input><div contenteditable> + CSS
下拉选择<select><div> + 自定义面板
表格<table><div> + flex/grid
表单<form><div> + 事件

反例

vue
<!-- ❌ 严禁:base-table.md 中不能出现这些标签 -->
<button class="btn" @click="onClick">点击</button>
<input type="checkbox" v-model="checked" />
<table>
  <tr><td>{{ value }}</td></tr>
</table>
<select v-model="value">
  <option value="1">选项</option>
</select>

正例

vue
<!-- ✅ 正确:必须用 div/span + CSS3 + 业务组件 -->
<base-button type="primary" @click="onClick">点击</base-button>

<div
  class="base-table__checkbox"
  :class="{ 'is-checked': checked }"
  role="checkbox"
  :aria-checked="checked"
  tabindex="0"
  @click="checked ="
/>

<div class="base-table__row">
  <div class="base-table__cell">{{ value }}</div>
</div>

<div
  class="base-table__edit-select"
  tabindex="0"
  @click="toggleSelect"
>
  <span>{{ currentLabel }}</span>
  <span class="base-table__edit-select-arrow">▾</span>
</div>

审计要点

  1. 所有 base-*.md 文件搜索 <button> <input> <select> <table> <tr> <td> <th> <textarea> <checkbox> <radio> <form> <option> 等标签
  2. 实现代码(<template>、<script> 块)中只允许 <div> <span> <p> + 业务组件(<base-button> <base-status> 等)
  3. 描述性文档(说明文、表格、引用块)允许出现标签名作为文字描述,但不允许在代码块内出现
  4. 每次新增或修改 .md 文件必须执行审计命令:
bash
grep -E '<(button|input|select|table|tr|td|th|textarea|form|option)' base-*.md
# 输出为空才算合规

容器原则(铁律)

任何业务组件、表单、表格都必须嵌入 <base-card>。无例外。

vue
<!-- ✅ 正确 -->
<base-card title="商品管理">
  <base-table :data="products" :columns="columns" />
</base-card>

<!-- ❌ 错误:游离的 base-table -->
<base-table :data="products" :columns="columns" />

理由:

  1. 全局视觉一致性(间距、阴影、圆角)
  2. 为 header-right / footer 插槽提供容器
  3. 业务区块边界明确,便于布局与响应式

第三方组件库禁令

禁止使用任何第三方 Vue UI 库(Element Plus / Naive UI / Ant Design Vue / Vuetify / PrimeVue 等)。

如需弹窗、Drawer、Tabs 等组件 → 在 vue-base-skill 内扩展对应子技能,而非引入第三方。

零 Emoji 铁律

所有组件代码(.md template/script/style + demo HTML)严禁使用彩色 emoji。

替代:文件类型用 PDF DOC 等纯文本 + CSS badge;图标用 CSS mask / SVG;状态用 ✓ × 等 Unicode 符号。

理由:跨平台渲染不一致,uniapp 下可能白屏,字形宽度不可控。

命名对齐矩阵(与 uniapp-theme-skill / uniapp-base-skill 完全对齐)

vue-theme-skill      ←  uniapp-theme-skill
vue-base-skill       ←  uniapp-base-skill
vue-card-skill       ←  uniapp-base-skill/containers/base-card
vue-button-skill     ←  (扩展,未来可独立)
vue-tag-skill        ←  (扩展,未来可独立)
vue-table-skill      ←  (扩展,未来可独立)
vue-status-skill     ←  (扩展,状态/标签/徽章)

跨技能命名严格保持一致:组件、Token、文件结构、容器原则。

目录结构

vue-base-skill/
├── SKILL.md                     # 本文件(父技能入口)
├── README.md
├── base-card.md                 # 内容根容器(公共)
├── base-input.md                # 输入根容器(公共)
├── references/                  # 跨子技能通用规范
│   └── skill-matrix.md
├── vue-card-skill/              # 业务子技能 1
│   ├── SKILL.md
│   ├── README.md
│   ├── base-card.md
│   └── demo-components/base-card-layout/
├── vue-button-skill/            # 业务子技能 2
│   ├── SKILL.md
│   ├── README.md
│   ├── base-button.md
│   └── demo-components/base-button/
├── vue-tag-skill/               # 业务子技能 3
│   ├── SKILL.md
│   ├── README.md
│   ├── base-tag.md
│   └── demo-components/base-tag/
├── vue-status-skill/            # 业务子技能 3.5(新增)
│   ├── SKILL.md
│   ├── README.md
│   ├── base-status.md
│   └── demo-components/base-status/
├── vue-table-skill/             # 业务子技能 4
│   ├── SKILL.md
│   ├── README.md
│   ├── base-table.md
│   ├── base-loading.md
│   ├── base-paginated.md
│   └── demo-components/base-table/
└── vue-form-skill/              # 业务子技能 5
    ├── SKILL.md
    ├── README.md
    ├── base-form.md
    ├── base-form-item.md
    ├── base-input.md
    ├── base-select.md
    ├── base-checkbox.md
    ├── base-radio.md
    ├── base-switch.md
    ├── base-datepicker.md
    ├── references/validation-rules.md
    └── demo-components/base-form/ + shared/

如何使用

  1. 需要内容容器 → 直接 <base-card> (base-card.md)
  2. 需要输入框 → 直接 <base-input> (base-input.md),详细规格见 vue-form-skill/base-input.md
  3. 需要按钮 → 进入 vue-button-skill
  4. 需要标签 → 进入 vue-tag-skill
  5. 需要状态/徽章 → 进入 vue-status-skill
  6. 需要表格 → 进入 vue-table-skill
  7. 需要表单体系 → 进入 vue-form-skill
  8. 跨技能协同疑问 → 查看 references/skill-matrix.md

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

and 140 more files.

Frequently asked questions

What does the Vue Base Skill AI skill do?

Vue 基础组件父技能。基于「一切皆容器」思想,容器原则:所有组件必须由 base-card 承载。直接提供两个公共根容器(base-card 内容容器 + base-input 输入容器),外加嵌套业务子技能(card / button / tag / table / form)。强制约束:所有 .md 文档严禁使用 HTML5 原生标签(button / table / input / select / textarea / checkbox / radio / form 等),必须用 div / span + CSS3 实现。

Why use Vue Base Skill on TypingMind?

Because you install it once and use it with any model. Vue Base Skill is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Vue Base Skill in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jiushiwon/wg-skills/tree/main/vibeCoding/frontend/vue/vue-base-skill. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Vue Base Skill?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Vue Base Skill?

As many as you like. As long as a model supports skills, you can use Vue Base Skill with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Vue Base Skill AI skill free?

Yes. It is published on GitHub by jiushiwon under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇