仓库初始化
This commit is contained in:
parent
9b08123e2a
commit
642d2ff64e
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"name": "chinaweal-skills",
|
||||
"version": "1.0.0",
|
||||
"description": "众望通企业内部 Claude Code Skills 集合,包含 PMS 开发、Gitea API 等企业业务集成技能",
|
||||
"author": {
|
||||
"name": "lirh",
|
||||
"email": "lirh@chinaweal.com"
|
||||
},
|
||||
"homepage": "https://github.com/lirh chinaweal-skills",
|
||||
"repository": "https://github.com/lirh/chinaweal-skills",
|
||||
"license": "Apache-2.0",
|
||||
"keywords": [
|
||||
"pms",
|
||||
"gitea",
|
||||
"enterprise",
|
||||
"chinaweal",
|
||||
"development"
|
||||
],
|
||||
"categories": [
|
||||
"development",
|
||||
"enterprise"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
settings.local.json
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Overview
|
||||
|
||||
This is a Claude Code Skills plugin for 众望通 (ChinaWeal) enterprise, providing PMS (Project Management System) integration and Gitea code hosting platform integration.
|
||||
|
||||
## Repository Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── .claude-plugin/plugin.json # Plugin marketplace manifest
|
||||
└── skills/
|
||||
├── chinaweal-pms/ # PMS todo query skill
|
||||
├── gitea-api/ # Gitea API integration
|
||||
│ └── scripts/gitea.js # Node.js helper for Gitea API calls
|
||||
└── pms-development/ # PMS todo development workflow (depends on above two)
|
||||
```
|
||||
|
||||
## Available Skills
|
||||
|
||||
| Skill | Purpose | Trigger Keywords |
|
||||
|-------|---------|------------------|
|
||||
| chinaweal-pms | Query PMS todos | PMS, 待办, todo |
|
||||
| gitea-api | Gitea repository management | Gitea, 仓库管理 |
|
||||
| pms-development | Full PMS todo development workflow | 开发PMS待办 |
|
||||
|
||||
## Required Environment Variables
|
||||
|
||||
```bash
|
||||
CHINAWEAL_PMS_TOKEN # PMS system authentication token
|
||||
GITEA_TOKEN47 # Gitea API token (server: 47.107.61.133:3000)
|
||||
```
|
||||
|
||||
## Key APIs
|
||||
|
||||
**PMS API** (chinaweal.com.cn):
|
||||
- `GET /pms-api/api/todo/unfinished/list/all` - List unfinished todos
|
||||
- `GET /pms-api/api/todo/detail/{todoNo}` - Get todo details
|
||||
|
||||
**Gitea API** (47.107.61.133:3000/api/v1):
|
||||
- User: `GET /user`, `GET /users/{username}/repos`
|
||||
- Repos: `POST /user/repos`, `GET /repos/{owner}/{repo}/branches`
|
||||
- Issues: `GET /repos/{owner}/{repo}/issues`, `POST /repos/{owner}/{repo}/issues`
|
||||
|
||||
## Development Workflow (pms-development)
|
||||
|
||||
1. **Get requirements** - Use chinaweal-pms to fetch todo details if only todoNo provided
|
||||
2. **Prepare repo** - Use gitea-api to find and clone the correct repository
|
||||
3. **Create branch** - Branch name = todoNo (e.g., `TODO2024030001`)
|
||||
4. **Develop** - Create `devdoc/{branch}/` documentation, implement backend by default
|
||||
5. **Push** - Force push to remote after checking branch doesn't exist remotely
|
||||
|
||||
**Constraints**:
|
||||
- Default is backend-only development unless frontend is explicitly specified
|
||||
- Compile failures > 3 attempts → terminate and report
|
||||
- Development docs saved to `devdoc/` directory
|
||||
64
README.md
64
README.md
|
|
@ -1,3 +1,65 @@
|
|||
# chinaweal-skills
|
||||
|
||||
公司适用的skills
|
||||
众望通企业 Claude Code Skills 插件集合,用于企业业务系统集成开发。
|
||||
|
||||
## 插件列表
|
||||
|
||||
### pms-development
|
||||
|
||||
PMS 待办开发工具。用于开发 PMS 系统中的待办任务,包括仓库克隆、分支创建、需求开发、代码检查和分支推送。
|
||||
|
||||
**触发场景**: 开发 PMS 待办、开发待办
|
||||
|
||||
**依赖**: chinaweal-pms, gitea-api
|
||||
|
||||
---
|
||||
|
||||
### chinaweal-pms
|
||||
|
||||
众望通 PMS 系统数据查询工具。用于查询 PMS 系统中的待办任务数据。
|
||||
|
||||
**触发场景**: 查询待办、待办详情、"PMS"、"待办"、"todo"
|
||||
|
||||
**前置要求**: 需要配置环境变量 `CHINAWEAL_PMS_TOKEN`
|
||||
|
||||
---
|
||||
|
||||
### gitea-api
|
||||
|
||||
Gitea API 调用工具。用于与 Gitea 代码托管平台进行交互。
|
||||
|
||||
**触发场景**: 调用 Gitea API、仓库管理、用户管理、Issue/PR 管理
|
||||
|
||||
**前置要求**: 需要配置环境变量 `GITEA_TOKEN47`
|
||||
|
||||
**API 基础地址**: `http://47.107.61.133:3000/api/v1`
|
||||
|
||||
---
|
||||
|
||||
## 安装
|
||||
|
||||
将插件克隆到本地:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/lirh/chinaweal-skills.git ~/.claude/skills/chinaweal-skills
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
### 环境变量
|
||||
|
||||
使用 `chinaweal-pms` 需要配置:
|
||||
|
||||
```bash
|
||||
export CHINAWEAL_PMS_TOKEN="your-pms-token"
|
||||
```
|
||||
|
||||
使用 `gitea-api` 需要配置:
|
||||
|
||||
```bash
|
||||
export GITEA_TOKEN47="your-gitea-token"
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,135 @@
|
|||
---
|
||||
name: chinaweal-pms
|
||||
description: |
|
||||
众望通 PMS 系统数据查询工具。用于查询 PMS 系统中的待办任务数据。
|
||||
|
||||
当用户提到以下场景时使用此 Skill:
|
||||
(1) 查询待办、待办详情、待办任务
|
||||
(2) 需要从 PMS 系统获取任务信息
|
||||
(3) 用户提到 "PMS"、"待办"、"todo"、"所有待办"、"未完成待办"
|
||||
version: 1.0.0
|
||||
license: Apache-2.0
|
||||
metadata:
|
||||
author: lirh
|
||||
category: development
|
||||
tags:
|
||||
- pms
|
||||
- chinaweal
|
||||
- enterprise
|
||||
- todo
|
||||
---
|
||||
|
||||
# Chinaweal PMS 系统查询
|
||||
|
||||
## 概述
|
||||
|
||||
此 Skill 用于查询众望通 PMS 系统(Project Management System)的数据。
|
||||
|
||||
## 认证配置
|
||||
|
||||
使用此 Skill 前,需要配置环境变量 `CHINAWEAL_PMS_TOKEN`:
|
||||
|
||||
- **环境变量名称**: `CHINAWEAL_PMS_TOKEN`
|
||||
- **用途**: PMS 系统的用户授权 Token
|
||||
|
||||
### 请求鉴权方式
|
||||
|
||||
所有 API 请求需要在请求头中携带 Authorization 信息:
|
||||
|
||||
```
|
||||
Authorization: Bearer {CHINAWEAL_PMS_TOKEN}
|
||||
```
|
||||
|
||||
其中 `{CHINAWEAL_PMS_TOKEN}` 需要替换为环境变量 `CHINAWEAL_PMS_TOKEN` 的值。
|
||||
|
||||
## 功能清单
|
||||
|
||||
### 功能1: 查询所有未完成待办
|
||||
|
||||
查询当前用户的所有未完成待办任务列表。
|
||||
|
||||
**接口地址**: `https://www.chinaweal.com.cn/pms-api/api/todo/unfinished/list/all`
|
||||
|
||||
**请求方法**: GET
|
||||
|
||||
**请求头**:
|
||||
```
|
||||
Authorization: Bearer {CHINAWEAL_PMS_TOKEN}
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**查询参数**:
|
||||
- `status` - 任务状态,0 表示未完成
|
||||
|
||||
**响应关键字段**:
|
||||
- `todoNo` - 待办编号
|
||||
- `todoTitle` - 待办标题
|
||||
- `todoDescription` - 待办描述
|
||||
- `createTime` - 创建时间
|
||||
|
||||
**使用示例**
|
||||
|
||||
```
|
||||
帮我查询所有待办
|
||||
查询所有未完成的待办
|
||||
看看我有哪些待办任务
|
||||
我的待办有哪些
|
||||
```
|
||||
|
||||
### 功能2: 查询待办详情
|
||||
|
||||
查询指定待办编号的详细信息。
|
||||
|
||||
**接口地址**: `https://www.chinaweal.com.cn/pms-api/api/todo/detail/{todoNo}`
|
||||
|
||||
**请求方法**: GET
|
||||
|
||||
**请求头**:
|
||||
```
|
||||
Authorization: Bearer {CHINAWEAL_PMS_TOKEN}
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**路径参数**:
|
||||
- `todoNo` - 待办编号
|
||||
|
||||
**响应关键字段**:
|
||||
- `todoTitle` - 待办标题
|
||||
- `todoDescription` - 待办任务的详情描述
|
||||
- `todoAtt` - 待办附件下载地址清单(下载地址中包含 `filename` 参数,表示附件原名)
|
||||
|
||||
### 使用示例
|
||||
|
||||
```
|
||||
帮我查询待办号 TODO2024030001 的详情
|
||||
查询一下 todoNo 为 12345 的待办信息
|
||||
```
|
||||
|
||||
### 调用方式
|
||||
|
||||
使用 exec 工具执行 curl 命令进行 API 调用。
|
||||
|
||||
**查询所有未完成待办**:
|
||||
```bash
|
||||
CHINAWEAL_PMS_TOKEN="your-token-here"
|
||||
|
||||
curl -X GET "https://www.chinaweal.com.cn/pms-api/api/todo/unfinished/list/all" \
|
||||
-H "Authorization: Bearer ${CHINAWEAL_PMS_TOKEN}" \
|
||||
-H "Content-Type: application/json"
|
||||
```
|
||||
|
||||
**查询单个待办详情**:
|
||||
```bash
|
||||
CHINAWEAL_PMS_TOKEN="your-token-here"
|
||||
TODO_NO="TODO2024030001"
|
||||
|
||||
curl -X GET "https://www.chinaweal.com.cn/pms-api/api/todo/detail/${TODO_NO}" \
|
||||
-H "Authorization: Bearer ${CHINAWEAL_PMS_TOKEN}" \
|
||||
-H "Content-Type: application/json"
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 确保环境变量 `CHINAWEAL_PMS_TOKEN` 已正确配置
|
||||
2. 待办编号 `todoNo` 需要从 PMS 系统获取
|
||||
3. 附件下载地址中包含 `filename` 参数,即为附件原文件名
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
name: gitea-api
|
||||
description: |
|
||||
Gitea API 调用工具。用于与 Gitea 代码托管平台进行交互,包括仓库管理、用户管理、组织操作、Issue/PR 管理等。
|
||||
|
||||
当用户提到以下场景时使用此 Skill:
|
||||
(1) 需要调用 Gitea API (如 /api/v1/ 开头的接口)
|
||||
(2) 需要在 Gitea 上创建/查询/管理仓库
|
||||
(3) 需要管理用户、组织、团队
|
||||
(4) 需要操作 Issue、Pull Request
|
||||
(5) 需要查看/管理 Git 提交、分支
|
||||
(6) 用户提到 "Gitea"、"代码托管"、"仓库管理"
|
||||
version: 1.0.0
|
||||
license: Apache-2.0
|
||||
metadata:
|
||||
author: lirh
|
||||
category: development
|
||||
tags:
|
||||
- gitea
|
||||
- api
|
||||
- git
|
||||
- repository
|
||||
---
|
||||
|
||||
# Gitea API Skill
|
||||
|
||||
## 快速开始
|
||||
|
||||
此 Skill 提供调用 Gitea API 的能力。API 基础 URL: `http://47.107.61.133:3000/api/v1`
|
||||
|
||||
认证方式:使用环境变量 `GITEA_TOKEN47` 作为 Bearer Token。
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 方式一:使用封装好的工具函数
|
||||
|
||||
直接调用以下工具函数(见 scripts/gitea.js):
|
||||
|
||||
- `gitea_get(endpoint, params)` - GET 请求
|
||||
- `gitea_post(endpoint, data)` - POST 请求
|
||||
- `gitea_patch(endpoint, data)` - PATCH 请求
|
||||
- `gitea_delete(endpoint)` - DELETE 请求
|
||||
|
||||
示例:
|
||||
```
|
||||
调用 gitea_get 获取当前用户信息
|
||||
调用 gitea_get 获取仓库列表
|
||||
调用 gitea_post 创建新仓库
|
||||
```
|
||||
|
||||
### 方式二:直接使用 curl
|
||||
|
||||
```bash
|
||||
TOKEN=$GITEA_TOKEN47
|
||||
curl -H "Authorization: token $TOKEN" http://47.107.61.133:3000/api/v1/user
|
||||
```
|
||||
|
||||
## 常用 API 示例
|
||||
|
||||
### 用户相关
|
||||
- `GET /user` - 获取当前用户信息
|
||||
- `GET /users/{username}` - 获取指定用户信息
|
||||
- `GET /users/{username}/repos` - 获取用户仓库列表
|
||||
|
||||
### 仓库相关
|
||||
- `GET /repos/{owner}/{repo}` - 获取仓库信息
|
||||
- `POST /user/repos` - 创建仓库(当前用户)
|
||||
- `POST /orgs/{org}/repos` - 在组织中创建仓库
|
||||
- `GET /repos/{owner}/{repo}/branches` - 获取分支列表
|
||||
- `GET /repos/{owner}/{repo}/commits` - 获取提交历史
|
||||
|
||||
### Issue 相关
|
||||
- `GET /repos/{owner}/{repo}/issues` - 获取 Issue 列表
|
||||
- `POST /repos/{owner}/{repo}/issues` - 创建 Issue
|
||||
- `GET /repos/{owner}/{repo}/issues/{index}` - 获取 Issue 详情
|
||||
- `PATCH /repos/{owner}/{repo}/issues/{index}` - 更新 Issue
|
||||
|
||||
### 组织相关
|
||||
- `GET /orgs` - 获取组织列表
|
||||
- `GET /orgs/{org}` - 获取组织详情
|
||||
- `POST /orgs` - 创建组织
|
||||
- `GET /orgs/{org}/members` - 获取组织成员
|
||||
|
||||
### 管理相关 (需要管理员权限)
|
||||
- `GET /admin/users` - 列出所有用户
|
||||
- `POST /admin/users` - 创建用户
|
||||
- `DELETE /admin/users/{username}` - 删除用户
|
||||
|
||||
## 错误处理
|
||||
|
||||
API 返回状态码说明:
|
||||
- 200/201: 成功
|
||||
- 204: 成功(无返回内容)
|
||||
- 400: 请求参数错误
|
||||
- 401: 未认证
|
||||
- 403: 权限不足
|
||||
- 404: 资源不存在
|
||||
- 422: 验证错误
|
||||
- 500: 服务器错误
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Gitea API Client
|
||||
* 提供调用 Gitea API 的工具函数
|
||||
*/
|
||||
|
||||
const BASE_URL = 'http://47.107.61.133:3000/api/v1';
|
||||
|
||||
function getToken() {
|
||||
// 优先从环境变量读取,其次从命令行参数读取
|
||||
const token = process.env['GITEA_TOKEN47'];
|
||||
if (!token) {
|
||||
// 检查是否有命令行传入的 token
|
||||
const tokenArg = process.argv.find(arg => arg.startsWith('--token='));
|
||||
if (tokenArg) {
|
||||
return tokenArg.replace('--token=', '');
|
||||
}
|
||||
throw new Error('环境变量 GITEA_TOKEN47 未设置,请设置环境变量或使用 --token= 参数');
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
async function giteaRequest(method, endpoint, data = null, params = {}) {
|
||||
const token = getToken();
|
||||
let url = `${BASE_URL}${endpoint}`;
|
||||
|
||||
// 添加查询参数
|
||||
if (Object.keys(params).length > 0) {
|
||||
const queryString = new URLSearchParams(params).toString();
|
||||
url += `?${queryString}`;
|
||||
}
|
||||
|
||||
const options = {
|
||||
method,
|
||||
headers: {
|
||||
'Authorization': `token ${token}`,
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
};
|
||||
|
||||
if (data && (method === 'POST' || method === 'PATCH' || method === 'PUT')) {
|
||||
options.body = JSON.stringify(data);
|
||||
}
|
||||
|
||||
const response = await fetch(url, options);
|
||||
|
||||
// 处理响应
|
||||
const contentType = response.headers.get('content-type');
|
||||
if (contentType && contentType.includes('application/json')) {
|
||||
const result = await response.json();
|
||||
if (!response.ok) {
|
||||
throw new Error(`API Error: ${response.status} - ${JSON.stringify(result)}`);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
if (!response.ok) {
|
||||
throw new Error(`API Error: ${response.status} - ${response.statusText}`);
|
||||
}
|
||||
return response.status === 204 ? null : await response.text();
|
||||
}
|
||||
}
|
||||
|
||||
// 导出工具函数
|
||||
const gitea = {
|
||||
get: (endpoint, params = {}) => giteaRequest('GET', endpoint, null, params),
|
||||
post: (endpoint, data = {}) => giteaRequest('POST', endpoint, data),
|
||||
patch: (endpoint, data = {}) => giteaRequest('PATCH', endpoint, data),
|
||||
put: (endpoint, data = {}) => giteaRequest('PUT', endpoint, data),
|
||||
delete: (endpoint) => giteaRequest('DELETE', endpoint)
|
||||
};
|
||||
|
||||
// CLI 模式
|
||||
if (require.main === module) {
|
||||
const args = process.argv.slice(2);
|
||||
const command = args[0];
|
||||
|
||||
if (command === 'get') {
|
||||
const endpoint = args[1];
|
||||
gitea.get(endpoint).then(result => console.log(JSON.stringify(result, null, 2)));
|
||||
} else if (command === 'post') {
|
||||
const endpoint = args[1];
|
||||
const data = JSON.parse(args[2] || '{}');
|
||||
gitea.post(endpoint, data).then(result => console.log(JSON.stringify(result, null, 2)));
|
||||
} else {
|
||||
console.log('Usage:');
|
||||
console.log(' node gitea.js get <endpoint>');
|
||||
console.log(' node gitea.js post <endpoint> <json-data>');
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = gitea;
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
name: pms-development
|
||||
description: PMS待办开发工具。用于开发PMS系统中的待办任务。当用户提到开发PMS待办、开发待办时使用此技能。需要根据待办详情进行代码开发,包括仓库克隆、分支创建、需求开发、代码检查和分支推送。
|
||||
version: 1.0.0
|
||||
license: Apache-2.0
|
||||
metadata:
|
||||
author: lirh
|
||||
category: development
|
||||
tags:
|
||||
- pms
|
||||
- development
|
||||
- enterprise
|
||||
---
|
||||
|
||||
# PMS待办开发
|
||||
|
||||
## 触发条件
|
||||
|
||||
用户要求开发PMS待办时使用此技能。
|
||||
|
||||
## 步骤一:获取需求
|
||||
|
||||
### 情况A:用户已提供详细需求
|
||||
直接进入步骤二。
|
||||
|
||||
### 情况B:用户只提供PMS待办编号
|
||||
1. 调用 chinaweal-pms skill 查询待办详情
|
||||
2. 从待办详情中提取需求描述、技术要求等信息
|
||||
|
||||
## 步骤二:仓库准备
|
||||
|
||||
### 2.1 确定仓库
|
||||
1. 分析需求/待办详情,判断属于哪个仓库
|
||||
2. 如无法判断,使用 gitea-api skill 查询仓库清单
|
||||
3. 从仓库清单中找到匹配的仓库
|
||||
|
||||
### 2.2 克隆仓库
|
||||
1. 选择合适的本地路径存放仓库
|
||||
2. 如果父目录不存在,创建父目录
|
||||
3. 克隆命令:`git clone <仓库地址> <本地路径>`
|
||||
|
||||
### 2.3 检查仓库状态
|
||||
- 如果仓库为空,删除目录后重新克隆
|
||||
|
||||
## 步骤三:分支创建
|
||||
|
||||
1. 切换到仓库目录
|
||||
2. 拉取远端主分支最新代码
|
||||
3. 创建新分支:
|
||||
- 如果是开发PMS待办,分支名 = 待办编号
|
||||
- 否则分支名 = 当前日期时间(格式:yyyyMMddHHmm)
|
||||
4. 切换到新分支
|
||||
|
||||
## 步骤四:需求开发
|
||||
|
||||
### 4.1 创建开发文档
|
||||
|
||||
在项目根目录创建 `devdoc/` 目录,然后创建(文件名前缀为当前分支名称):
|
||||
|
||||
**{分支名}_需求清单.md** - 列出需要开发的功能点
|
||||
|
||||
**{分支名}_开发思路与改动.md** - 记录每个需求的开发思路和具体代码改动
|
||||
|
||||
**{分支名}_失败报告.md** - 记录开发失败的原因和尝试次数
|
||||
|
||||
### 4.2 进行开发
|
||||
在新建分支中进行代码开发。
|
||||
|
||||
### 4.3 代码检查
|
||||
开发完成后:
|
||||
1. 检查语法错误
|
||||
2. 尝试编译项目
|
||||
3. 如有错误,尝试修复
|
||||
4. 同一问题修复3次仍失败,记录到 `devdoc/{分支名}_失败报告.md`,终止开发
|
||||
|
||||
## 步骤五:推送分支
|
||||
|
||||
1. 检查远端仓库是否存在当前分支
|
||||
2. 如果远端分支已存在,报告用户无法推送
|
||||
3. 如果远端分支不存在,强制推送分支到远端
|
||||
|
||||
## 关键约束
|
||||
|
||||
- **默认只开发后端接口**:如果没有明确指定仓库,或者没有明确指定需要开发前端,则默认只开发后端接口
|
||||
- 所有操作在workspace中进行
|
||||
- 开发文档必须保存到 `devdoc/` 目录,文件名以分支名为前缀
|
||||
- 编译失败超过3次必须终止并报告
|
||||
- 推送前必须检查远端分支是否存在
|
||||
Loading…
Reference in New Issue