新增:接口skill和项目结构skill
This commit is contained in:
parent
e603e04d0f
commit
def6b95b5b
85
.cursor/skills/project-framework/SKILL.md
Normal file
85
.cursor/skills/project-framework/SKILL.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
name: project-framework
|
||||||
|
description: Defines the PolyClientVuetify project's framework, structure, and coding conventions. Use when adding or modifying any code in this repository so that changes follow the same stack, patterns, and style.
|
||||||
|
---
|
||||||
|
|
||||||
|
# 项目框架规范
|
||||||
|
|
||||||
|
在**新增或修改**本仓库内任何代码时,按以下规范执行,保证风格与架构一致。
|
||||||
|
|
||||||
|
## 技术栈
|
||||||
|
|
||||||
|
- **框架**:Vue 3(Composition API)+ TypeScript
|
||||||
|
- **构建**:Vite 7,路径别名 `@/*` → `./src/*`
|
||||||
|
- **UI**:Vuetify 4(`v-app`、`v-card`、`v-btn` 等)
|
||||||
|
- **状态**:Pinia
|
||||||
|
- **路由**:Vue Router 5(createWebHistory)
|
||||||
|
- **代码质量**:ESLint + Prettier + oxlint;单测 Vitest,E2E Playwright
|
||||||
|
|
||||||
|
## 目录与文件放置
|
||||||
|
|
||||||
|
| 用途 | 目录/文件 | 说明 |
|
||||||
|
|----------------|------------------------------|------|
|
||||||
|
| 页面级视图 | `src/views/` | 对应路由,一个路由一个 Vue 文件 |
|
||||||
|
| 可复用组件 | `src/components/` | 被多个 view 或其它组件引用 |
|
||||||
|
| 接口与类型 | `src/api/` | 请求封装、接口函数、响应/请求类型 |
|
||||||
|
| 全局状态 | `src/stores/` | Pinia store,按领域拆分 |
|
||||||
|
| 路由配置 | `src/router/index.ts` | 集中声明 routes |
|
||||||
|
| 入口与插件 | `src/main.ts`、`src/plugins/` | 不随意新增顶级文件 |
|
||||||
|
|
||||||
|
- 新页面:在 `views/` 新增 `.vue`,并在 `router/index.ts` 增加 `path`、`name`、`component`。
|
||||||
|
- 新接口:在 `api/` 下合适模块(如 `event.ts`)或新建 `xxx.ts`,复用 `request.ts` 的 `get`/`post`,并导出类型与函数。
|
||||||
|
|
||||||
|
## Vue 组件规范
|
||||||
|
|
||||||
|
1. **单文件结构顺序**:`<template>` → `<script setup lang="ts">` → `<style scoped>`。
|
||||||
|
2. **Script**:一律使用 `<script setup lang="ts">`,不用 Options API。
|
||||||
|
3. **Props**:用 `defineProps({ ... })` 声明,带 `type` 与必要时 `default`;在 script 中通过 `props.xxx` 访问。
|
||||||
|
4. **Emits**:用 `defineEmits<{ eventName: [arg1Type, arg2?] }>()` 做类型声明,再 `emit('eventName', ...)`。
|
||||||
|
5. **组合式用法**:从 `vue` 按需导入 `ref`、`computed`、`watch` 等;从 `vue-router` 用 `useRouter`/`useRoute`;从 `@/stores/xxx` 用对应 `useXxxStore()`。
|
||||||
|
6. **组件命名**:文件名 PascalCase(如 `MarketCard.vue`),在模板或路由中可写为 PascalCase 或 kebab-case。
|
||||||
|
|
||||||
|
## 模板与样式
|
||||||
|
|
||||||
|
- **模板**:优先使用 Vuetify 组件;自定义类名用 **kebab-case**(如 `market-card`、`semi-progress-wrap`)。
|
||||||
|
- **样式**:使用 `<style scoped>`,类名与模板中的 class 一致;需要时可加简短注释区分区块(如 `/* Top Section */`)。
|
||||||
|
- **多语言**:当前为中文 + 英文混用,文案风格与现有页面保持一致即可。
|
||||||
|
|
||||||
|
## API 层规范
|
||||||
|
|
||||||
|
- **基础请求**:统一通过 `src/api/request.ts` 的 `get<T>(path, params?, config?)` 等;鉴权在 `config.headers['x-token']` 传入。
|
||||||
|
- **接口模块**:每个接口文件导出:
|
||||||
|
- 请求/响应用到的 **TypeScript 接口**(如 `XxxListItem`、`XxxResponse`、`PageResult<T>`);
|
||||||
|
- 对外调用的 **异步函数**(如 `getXxxList(params)`),函数上方用注释标明 `GET /Xxx/Yyy` 或 `POST /Xxx/Yyy`。
|
||||||
|
- **命名**:列表项类型 `XxxListItem`,分页结果 `PageResult<T>`,统一响应体 `XxxResponse`;与现有 `event.ts` 保持一致。
|
||||||
|
|
||||||
|
## 状态(Pinia)
|
||||||
|
|
||||||
|
- 使用 **setup 写法**:`defineStore('storeName', () => { ... return { state, getters, actions } })`。
|
||||||
|
- 状态用 `ref`,派生用 `computed`,方法直接定义为函数并 return。
|
||||||
|
- 需要持久化的(如登录态)在 store 内用 `localStorage` 读写,键名常量化。
|
||||||
|
|
||||||
|
## 路由
|
||||||
|
|
||||||
|
- 路由表在 `src/router/index.ts` 中集中配置;每个路由包含 `path`、`name`、`component`。
|
||||||
|
- 页面跳转使用 `router.push()` 或 `router.replace()`;需要带参时用 `path` + `query` 或 `params`(如 `/trade-detail/:id`)。
|
||||||
|
|
||||||
|
## 格式与规范
|
||||||
|
|
||||||
|
- **Prettier**:已配置;无分号、单引号、printWidth 100。修改或新增代码后保持格式化(项目内可运行 `npm run format`)。
|
||||||
|
- **TypeScript**:启用严格类型;新接口、函数需有明确类型,避免 `any`。
|
||||||
|
- **命名**:
|
||||||
|
- 文件名:组件/视图 PascalCase,其余 camelCase 或 kebab-case 与现有一致;
|
||||||
|
- 变量/函数:camelCase;
|
||||||
|
- 常量:全大写下划线或 camelCase 与现有文件一致;
|
||||||
|
- 类型/接口:PascalCase。
|
||||||
|
|
||||||
|
## 修改与新增时的自检
|
||||||
|
|
||||||
|
- [ ] 新页面已加入 `router/index.ts`,组件放在 `views/` 或 `components/` 正确位置。
|
||||||
|
- [ ] 新接口在 `api/` 中实现,使用 `request.ts` 并导出类型与函数。
|
||||||
|
- [ ] Vue 文件使用 `<script setup lang="ts">`,Props/Emits 有类型。
|
||||||
|
- [ ] 样式使用 scoped,类名 kebab-case。
|
||||||
|
- [ ] 符合现有 Prettier/ESLint 配置,无新增 lint 报错。
|
||||||
|
|
||||||
|
遵循本规范可保证与本项目现有架构和风格一致;涉及接口文档与接口实现细节时,可结合 `xtrader-api-docs` skill 使用。
|
||||||
131
.cursor/skills/xtrader-api-docs/SKILL.md
Normal file
131
.cursor/skills/xtrader-api-docs/SKILL.md
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
---
|
||||||
|
name: xtrader-api-docs
|
||||||
|
description: Interprets the XTrader API from the Swagger 2.0 spec at https://api.xtrader.vip/swagger/doc.json and helps implement endpoints, TypeScript types, and request helpers. Use when implementing or understanding XTrader API endpoints, adding new API calls, or when the user refers to the API docs or Swagger.
|
||||||
|
---
|
||||||
|
|
||||||
|
# XTrader API 接口文档解读
|
||||||
|
|
||||||
|
规范来源:[OpenAPI 规范](https://api.xtrader.vip/swagger/doc.json)(Swagger 2.0)。Swagger UI:<https://api.xtrader.vip/swagger/index.html>。
|
||||||
|
|
||||||
|
## 规范地址与格式
|
||||||
|
|
||||||
|
- **规范 URL**:`https://api.xtrader.vip/swagger/doc.json`
|
||||||
|
- **格式**:Swagger 2.0;接口在 `paths` 下,类型在 `definitions` 下,引用为 `#/definitions/xxx`(如 `response.Response`、`system.SysUser`)。
|
||||||
|
- **使用方式**:用 `mcp_web_fetch` 或项目内请求获取 doc.json;解析 `paths` 与 `definitions` 编写 TS 类型与请求。鉴权:请求头 `x-token`(见 `securityDefinitions.ApiKeyAuth`)。
|
||||||
|
|
||||||
|
## Swagger UI 与 doc.json 的对应关系(如何定位 Example Value / Model)
|
||||||
|
|
||||||
|
Swagger UI 页面(如 [PmEvent findPmEvent](https://api.xtrader.vip/swagger/index.html#/PmEvent/get_PmEvent_findPmEvent))的数据来源就是 **doc.json**。页面上的「Parameters」「Responses」里的 **Example Value** 和 **Model** 都对应 doc.json 里的同一套 schema。
|
||||||
|
|
||||||
|
### 对应关系一览
|
||||||
|
|
||||||
|
| Swagger UI 上看到的 | 在 doc.json 中的位置 |
|
||||||
|
|---------------------|----------------------|
|
||||||
|
| 某个接口(如「用id查询Event Management」) | `paths["/PmEvent/findPmEvent"].get`(或对应 path + method) |
|
||||||
|
| Parameters → Body / Query | `paths["/PmEvent/findPmEvent"].get.parameters`,或 body 的 `schema`(常为 `$ref`) |
|
||||||
|
| **Responses → 200 → Model** | `paths["/PmEvent/findPmEvent"].get.responses["200"].schema`,且需把其中的 `$ref` 解析到 `definitions` |
|
||||||
|
| **Responses → 200 → Example Value** | 由同一 `responses["200"].schema` 生成(或 schema 里的 `example`);结构同 Model |
|
||||||
|
| Model 里展开的 `data`、`user` 等对象 | `definitions` 里对应的 schema,如 `definitions["polymarket.PmEvent"]`、`definitions["system.SysUser"]` |
|
||||||
|
|
||||||
|
### 如何快速定位「响应」的 Model / 数据结构
|
||||||
|
|
||||||
|
1. **确定 path 和 method**
|
||||||
|
例如 findPmEvent:path = `/PmEvent/findPmEvent`,method = `get`。
|
||||||
|
|
||||||
|
2. **取 200 的 schema**
|
||||||
|
```text
|
||||||
|
doc.json → paths["/PmEvent/findPmEvent"].get.responses["200"].schema
|
||||||
|
```
|
||||||
|
这就是页面上 200 的 **Model** 的完整定义(可能含 `allOf`、`$ref`)。
|
||||||
|
|
||||||
|
3. **解析 allOf + $ref**
|
||||||
|
- 若 schema 为 `allOf: [ { $ref: "#/definitions/response.Response" }, { type: "object", properties: { data: { $ref: "..." }, msg } } ]`,则合并后得到根结构:`code`、`data`、`msg`。
|
||||||
|
- 对 `data` 的 `$ref`(如 `#/definitions/polymarket.PmEvent`),到 **definitions** 里找:
|
||||||
|
`definitions["polymarket.PmEvent"]`(或 `definitions["response.LoginResponse"]` 等)。
|
||||||
|
- definitions 的 key 在 JSON 里是字符串,如 `"polymarket.PmEvent"`(带引号),对应 Swagger 里 `#/definitions/polymarket.PmEvent`。
|
||||||
|
|
||||||
|
4. **Example Value**
|
||||||
|
与 Model 共用同一份 `responses["200"].schema`;Example Value 是 Swagger UI 按该 schema 生成的示例,或 schema 内 `example` 字段。所以**看响应结构时以 Model 为准**,在 doc.json 里就是上述 `responses["200"].schema` 及其引用的 `definitions`。
|
||||||
|
|
||||||
|
## 接口集成规范(必须按顺序执行)
|
||||||
|
|
||||||
|
接入任意 XTrader 接口时,**必须**按以下顺序执行,不得跳过或调换。
|
||||||
|
|
||||||
|
### 第一步:列出请求参数与响应参数
|
||||||
|
|
||||||
|
在写代码前,先从 doc.json 中整理并列出:
|
||||||
|
|
||||||
|
1. **请求参数**
|
||||||
|
- **Query**:`paths["<path>"]["<method>"].parameters` 中 `in: "query"` 的项(name、type、required、description)。
|
||||||
|
- **Body**:若存在 `in: "body"`,写出其 `schema` 对应的 `$ref` 或内联结构(来自 `definitions`)。
|
||||||
|
- **鉴权**:该接口是否带 `security: [ { ApiKeyAuth: [] } ]`,若是则需在请求头加 `x-token`。
|
||||||
|
|
||||||
|
2. **响应参数**
|
||||||
|
- 取 `paths["<path>"]["<method>"].responses["200"].schema`。
|
||||||
|
- 若有 `allOf`,合并得到根结构(通常为 `code`、`data`、`msg`)。
|
||||||
|
- 对 `data` 及其他嵌套对象的 `$ref`,到 `definitions` 中查完整结构并列出字段(名称、类型、说明)。
|
||||||
|
|
||||||
|
输出形式可为表格或结构化列表,便于第二步写类型。
|
||||||
|
|
||||||
|
### 第二步:根据响应数据创建 Model 类
|
||||||
|
|
||||||
|
- 在 `src/api/` 下相应模块(如 `event.ts`、`market.ts`)中,**根据第一步整理出的响应结构**定义 TypeScript 类型/接口:
|
||||||
|
- 根响应:如 `XxxResponse { code: number; data: XxxData; msg: string }`。
|
||||||
|
- `data` 及嵌套对象:对应 doc.json 的 `definitions`,写出完整 Model(如 `PmEvent`、`PmMarket`),避免只写 `any` 或过度使用 `[key: string]: unknown`(仅在确有扩展字段时使用)。
|
||||||
|
- 命名与项目一致:`PageResult<T>`、`XxxResponse`、`XxxParams` 等;与 `event.ts` 风格保持一致。
|
||||||
|
|
||||||
|
### 第三步:将接口集成到页面
|
||||||
|
|
||||||
|
- 在对应 API 模块中实现请求函数:使用 `get`/`post`(`src/api/request.ts`),路径、query/body 与第一步一致,返回类型使用第二步定义的 Response 类型。
|
||||||
|
- 在页面(Vue 组件)中:调用该请求函数,将返回的 `data` 绑定到组件的状态或 UI;处理 loading、错误与空数据;若为鉴权接口,确保调用时传入带 `x-token` 的 config(或使用已注入 token 的 request 封装)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 解读规范并落地的步骤
|
||||||
|
|
||||||
|
1. **Base URL**:规范中 `host` + `basePath`(可为空);本项目已用 `src/api/request.ts` 的 `BASE_URL`(默认 `https://api.xtrader.vip`),实现时用相对 path 即可。
|
||||||
|
|
||||||
|
2. **路径与方法**:遍历 `paths`,每个 path + method 对应一个接口;path 以 `/` 开头。需鉴权接口在请求中加 `config.headers['x-token']`。
|
||||||
|
|
||||||
|
3. **请求参数**:Query 对应 `parameters` 中 `in: 'query'`;Body 对应 `in: 'body'` 的 `schema`(常为 `$ref` 到 `definitions`)。Swagger 2.0 中 body 参数名为 `data` 时,实际请求体即该 schema 的 JSON。
|
||||||
|
|
||||||
|
4. **响应类型**:看 `responses['200'].schema`;若为 `allOf`,合并 `response.Response` 与扩展中的 `data`、`msg` 等。`$ref` 到 `#/definitions/XXX` 时,在 `definitions` 中查对应结构并转为 TS 接口。统一响应包装为 `{ code, data, msg }`。
|
||||||
|
|
||||||
|
5. **与项目风格一致**:新接口放在 `src/api/` 下;导出请求/响应类型及调用 `get`/`post` 的函数;类型命名与 `event.ts` 一致(如 `PageResult<T>`、`XxxResponse`)。
|
||||||
|
|
||||||
|
## 已知接口(来自 doc.json)
|
||||||
|
|
||||||
|
### 钱包登录 `POST /base/walletLogin`
|
||||||
|
|
||||||
|
- **请求体**(`definitions.request.WalletLogin`):`{ message: string, nonce: string, signature: string, walletAddress: string }`。
|
||||||
|
- **响应 200**:`{ code, data, msg }`;`data` 为 `response.LoginResponse`。
|
||||||
|
- **response.LoginResponse**:`{ expiresAt: number, token: string, user: system.SysUser }`。
|
||||||
|
- **system.SysUser**(`data.user`):含 **ID**(integer,主键)、userName、nickName、headerImg、uuid、authorityId、authority、createdAt、updatedAt、email、phone、enable、walletAddress 等。**返回结果中包含用户 id,对应字段为 `user.ID`**(JSON 中可能为 `ID` 或 `id`,与后端序列化一致即可)。
|
||||||
|
- **项目映射**:`src/views/Login.vue` 调该接口;`src/stores/user.ts` 的 `UserInfo` 建议包含 `id?: number | string` 并与 `data.user.ID` 对应。
|
||||||
|
|
||||||
|
### 公开事件列表 `GET /PmEvent/getPmEventPublic`
|
||||||
|
|
||||||
|
- **Query**:page、pageSize、keyword、createdAtRange(array)。
|
||||||
|
- **响应 200**:`data` 为 `response.PageResult`(list、page、pageSize、total);list 项为 `polymarket.PmEvent`,内含 markets、series、tags 等,markets[].outcomePrices 为价格数组,首项对应 Yes 概率。
|
||||||
|
|
||||||
|
### 通用响应与鉴权
|
||||||
|
|
||||||
|
- **response.Response**:`{ code: number, data: any, msg: string }`。
|
||||||
|
- **response.PageResult**:`{ list, page, pageSize, total }`。
|
||||||
|
- 需鉴权接口在文档中带 `security: [ { ApiKeyAuth: [] } ]`,请求时加 header `x-token`。
|
||||||
|
|
||||||
|
## 简要检查清单
|
||||||
|
|
||||||
|
- [ ] **按规范顺序**:已先列出请求参数与响应参数,再建 Model,最后集成到页面
|
||||||
|
- [ ] 规范 URL 使用 `https://api.xtrader.vip/swagger/doc.json`,或本地缓存与之一致
|
||||||
|
- [ ] 请求 path、method、query/body 与 `paths` 一致
|
||||||
|
- [ ] 响应类型(Model)覆盖 `code`/`data`/`msg` 及 `definitions` 中业务字段
|
||||||
|
- [ ] 鉴权接口使用 `x-token` header
|
||||||
|
- [ ] 新代码风格与 `src/api/request.ts`、`src/api/event.ts` 一致
|
||||||
|
|
||||||
|
## 参考
|
||||||
|
|
||||||
|
- 规范:<https://api.xtrader.vip/swagger/doc.json>
|
||||||
|
- Swagger UI:<https://api.xtrader.vip/swagger/index.html>
|
||||||
|
- 项目请求封装:`src/api/request.ts`
|
||||||
|
- 现有接口与类型:`src/api/event.ts`
|
||||||
142
AGENTS.md
Normal file
142
AGENTS.md
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
# AGENTS
|
||||||
|
|
||||||
|
<skills_system priority="1">
|
||||||
|
|
||||||
|
## Available Skills
|
||||||
|
|
||||||
|
<!-- SKILLS_TABLE_START -->
|
||||||
|
<usage>
|
||||||
|
When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.
|
||||||
|
|
||||||
|
How to use skills:
|
||||||
|
- Invoke: `npx openskills read <skill-name>` (run in your shell)
|
||||||
|
- For multiple: `npx openskills read skill-one,skill-two`
|
||||||
|
- The skill content will load with detailed instructions on how to complete the task
|
||||||
|
- Base directory provided in output for resolving bundled resources (references/, scripts/, assets/)
|
||||||
|
|
||||||
|
Usage notes:
|
||||||
|
- Only use skills listed in <available_skills> below
|
||||||
|
- Do not invoke a skill that is already loaded in your context
|
||||||
|
- Each skill invocation is stateless
|
||||||
|
</usage>
|
||||||
|
|
||||||
|
<available_skills>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>algorithmic-art</name>
|
||||||
|
<description>Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>brand-guidelines</name>
|
||||||
|
<description>Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>canvas-design</name>
|
||||||
|
<description>Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>doc-coauthoring</name>
|
||||||
|
<description>Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>docx</name>
|
||||||
|
<description>"Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of \"Word doc\", \"word document\", \".docx\", or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a \"report\", \"memo\", \"letter\", \"template\", or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation."</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>frontend-design</name>
|
||||||
|
<description>Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>internal-comms</name>
|
||||||
|
<description>A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>mcp-builder</name>
|
||||||
|
<description>Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>pdf</name>
|
||||||
|
<description>Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>pptx</name>
|
||||||
|
<description>"Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill."</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>skill-creator</name>
|
||||||
|
<description>Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>slack-gif-creator</name>
|
||||||
|
<description>Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>template</name>
|
||||||
|
<description>Replace with description of the skill and when Claude should use it.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>theme-factory</name>
|
||||||
|
<description>Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>web-artifacts-builder</name>
|
||||||
|
<description>Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>webapp-testing</name>
|
||||||
|
<description>Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>xlsx</name>
|
||||||
|
<description>"Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved."</description>
|
||||||
|
<location>global</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>xtrader-api-docs</name>
|
||||||
|
<description>Interprets the XTrader API documentation from Swagger at https://api.xtrader.vip/swagger/index.html and helps implement endpoints, TypeScript types, and request helpers. Use when implementing or understanding XTrader API endpoints, adding new API calls, or when the user refers to the API docs or Swagger.</description>
|
||||||
|
<location>project</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
<skill>
|
||||||
|
<name>project-framework</name>
|
||||||
|
<description>Defines the PolyClientVuetify project's framework, structure, and coding conventions. Use when adding or modifying any code in this repository so that changes follow the same stack, patterns, and style.</description>
|
||||||
|
<location>project</location>
|
||||||
|
</skill>
|
||||||
|
|
||||||
|
</available_skills>
|
||||||
|
<!-- SKILLS_TABLE_END -->
|
||||||
|
|
||||||
|
</skills_system>
|
||||||
Loading…
x
Reference in New Issue
Block a user