feat: 初始化 getskills 技能

添加 SKILL.md 文件,将 getskills 工具转换为标准技能格式

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-03-22 22:46:32 +08:00
commit 4bbdbfd52e
27 changed files with 2285 additions and 0 deletions

101
verify.js Normal file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env node
/**
* GetSkill 基本验证脚本
* 用于验证模块是否正确加载和基本功能是否正常
*/
const getskill = require('./index.js');
const os = require('os');
console.log('=== GetSkill 验证测试 ===\n');
// 测试 1: 模块导出验证
console.log('✓ 测试 1: 验证模块导出');
const requiredExports = [
'searchSkills',
'getSkillDetail',
'downloadSkill',
'updateSkill',
'listLocalSkills',
'getSkillsDirectory',
'getSkillsCacheDirectory',
'checkGitInstalled',
'ensureGitInstalled',
'cloneOrUpdateRepo',
'copySkillFiles'
];
let allExportsPresent = true;
requiredExports.forEach(exportName => {
if (typeof getskill[exportName] !== 'function') {
console.error(` ✗ 缺少导出函数: ${exportName}`);
allExportsPresent = false;
}
});
if (allExportsPresent) {
console.log(` ✓ 所有 ${requiredExports.length} 个导出函数都存在\n`);
} else {
console.error(' ✗ 部分导出函数缺失\n');
process.exit(1);
}
// 测试 2: 目录路径验证
console.log('✓ 测试 2: 验证目录路径');
try {
const skillsDir = getskill.getSkillsDirectory();
const cacheDir = getskill.getSkillsCacheDirectory();
console.log(` 技能目录: ${skillsDir}`);
console.log(` 缓存目录: ${cacheDir}`);
const homeDir = os.homedir();
if (!skillsDir.includes(homeDir)) {
throw new Error('技能目录路径不包含用户主目录');
}
if (!cacheDir.includes(homeDir)) {
throw new Error('缓存目录路径不包含用户主目录');
}
console.log(' ✓ 目录路径正确\n');
} catch (error) {
console.error(` ✗ 目录路径验证失败: ${error.message}\n`);
process.exit(1);
}
// 测试 3: Git 检测
console.log('✓ 测试 3: Git 安装检测');
getskill.checkGitInstalled()
.then(isInstalled => {
if (isInstalled) {
console.log(' ✓ Git 已安装\n');
} else {
console.log(' ⚠ Git 未安装(功能正常,但需要安装 Git 才能使用 install/update 命令)\n');
}
})
.catch(error => {
console.error(` ✗ Git 检测失败: ${error.message}\n`);
})
.finally(() => {
// 测试 4: 列出本地技能
console.log('✓ 测试 4: 列出本地技能');
try {
const localSkills = getskill.listLocalSkills();
console.log(` 本地技能数量: ${localSkills.length}`);
if (localSkills.length > 0) {
console.log(' 已安装的技能:');
localSkills.forEach(skill => {
console.log(` - ${skill}`);
});
} else {
console.log(' (未安装任何技能)');
}
console.log(' ✓ 列出本地技能功能正常\n');
} catch (error) {
console.error(` ✗ 列出本地技能失败: ${error.message}\n`);
}
console.log('=== 验证完成 ===');
console.log('\n提示: 运行 "node index.js" 或 "getskill" 查看完整命令帮助');
});