Manusで任意のスキルを実行
ワンクリックで
ワンクリックで
ワンクリックでManusで任意のスキルを実行
始めるci-validator
スター322
フォーク91
更新日2026年4月19日 13:39
CI检查验证和质量保障
インストール
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SKILL.md
readonlyメニュー
CI检查验证和质量保障
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
提交、推送并创建 PR
自动发现项目中的代码问题并提交 GitHub Issue
安全审计技能,用于检查和修复依赖安全问题
文档自动生成
生成代码评审友好的 commit 信息
开发流程检查技能,确保代码修改后执行必要的质量检查
| name | ci-validator |
| description | CI检查验证和质量保障 |
我是 CI 检查验证和质量保障技能,专门确保 xiaozhi-client 项目的代码质量符合标准,同时遵循务实开发理念。
核心能力:自动执行项目要求的所有代码质量检查,确保代码符合 CI 标准。
# 1. 执行完整检查(xiaozhi-client 项目)
pnpm check:all
# 2. 运行测试套件
pnpm test
# 3. (可选)生成覆盖率报告
pnpm test:coverage
pnpm check:all 包含:
pnpm lint - Biome 代码规范和格式检查pnpm typecheck - TypeScript 严格类型检查pnpm spellcheck - 拼写检查pnpm check:cpd - 重复代码检查pnpm test 包含:
当检查失败时,自动分析失败原因并提供针对性修复建议。
// 常见问题1:any 类型使用
// ❌ 错误示例
function processData(data: any): any {
return data.value;
}
// ✅ 修复建议
function processData<T extends Record<string, unknown>>(data: T): T[keyof T] {
return data.value as T[keyof T];
}
// 常见问题2:类型定义缺失
// ❌ 错误示例
const config = {
apiEndpoint: "https://api.home-assistant.local",
timeout: 5000,
};
// ✅ 修复建议
interface Config {
apiEndpoint: string;
timeout: number;
}
const config: Config = {
apiEndpoint: "https://api.home-assistant.local",
timeout: 5000,
};
# 常见问题及修复命令
# 问题:Biome 检查失败
# 解决方案:运行自动修复
pnpm lint
# 问题:导入路径不规范
# 解决方案:使用路径别名系统
import { UnifiedMCPServer } from "@core/unified-server"; // ✅
import { StartCommand } from "@cli/commands/start"; // ✅
import { UnifiedMCPServer } from "./core/unified-server"; // ❌
# 问题:未使用的导入
# 解决方案:移除未使用的导入
pnpm lint # 会自动清理
# 常见问题:技术术语被标记为拼写错误
# 解决方案1:确认确实是错误,修正拼写
# 解决方案2:如果是专业术语,添加到项目词典
echo "homeassistant" >> .cspell.json
# 解决方案3:忽略特定文件或目录
# 在 .cspell.json 中配置 ignorePaths
// 常见问题1:测试覆盖率不足
// 解决方案:补充测试用例,覆盖未测试的代码路径
// 常见问题2:异步测试处理不当
// ❌ 错误示例
test("should fetch data", () => {
const result = await fetchData();
expect(result).toBeDefined();
});
// ✅ 修复建议
test("should fetch data", async () => {
const result = await fetchData();
expect(result).toBeDefined();
});
// 常见问题3:Mock 设置不完整
// ❌ 错误示例
vi.mock("@/services/light-service");
// ✅ 修复建议
vi.mock("@/services/light-service", () => ({
LightService: {
turnOn: vi.fn(),
turnOff: vi.fn(),
},
}));
确保代码符合项目的 CI/CD 要求,避免流水线失败。
# GitHub Actions CI 流程检查项
- ✅ 类型检查通过 (pnpm typecheck)
- ✅ 代码规范检查通过 (pnpm lint)
- ✅ 拼写检查通过 (pnpm spellcheck)
- ✅ 构建成功 (pnpm build)
- ✅ 测试通过 (pnpm test:coverage)
- ✅ 覆盖率达到要求
# 检查当前覆盖率
pnpm test:coverage
# 覆盖率要求(基于 vitest.config.ts)
- 函数覆盖率: 80%
- 行覆盖率: 80%
- 语句覆盖率: 80%
- 分支覆盖率: 70%
在代码提交前自动执行所有必要的检查,确保只提交高质量的代码。
# 安装 husky(如果未安装)
pnpm add -D husky
# 设置 pre-commit hook
npx husky add .husky/pre-commit "pnpm check:all && pnpm test"
# 设置 pre-push hook
npx husky add .husky/pre-push "pnpm test:coverage"
# 完整预提交检查流程
function preCommitCheck() {
echo "🔍 执行预提交检查..."
# 1. 代码规范检查和修复(包括格式化)
pnpm lint
# 2. 类型检查
pnpm typecheck
# 3. 拼写检查
pnpm spellcheck
# 4. 运行测试
pnpm test
# 5. 生成覆盖率报告
pnpm test:coverage
echo "✅ 预提交检查完成"
}
# 必须执行检查的时机
- ✅ 每次代码修改后
- ✅ 提交代码前 (git commit)
- ✅ 创建 PR 前
- ✅ 合并到 main 分支前
- ✅ 发布版本前
interface CheckFailure {
type: 'type_error' | 'lint_error' | 'spell_error' | 'test_failure';
severity: 'error' | 'warning';
file: string;
line?: number;
message: string;
fixCommand?: string;
autoFixable: boolean;
}
function handleCheckFailure(failure: CheckFailure): void {
switch (failure.type) {
case 'type_error':
console.log(`🔧 类型错误: ${failure.message}`);
if (failure.autoFixable) {
console.log(`💡 建议修复: ${failure.fixCommand}`);
}
break;
case 'lint_error':
console.log(`📝 代码规范错误: ${failure.message}`);
console.log(`💡 自动修复: pnpm lint`);
break;
case 'spell_error':
console.log(`📖 拼写错误: ${failure.message}`);
console.log(`💡 检查拼写: pnpm spellcheck`);
break;
case 'test_failure':
console.log(`🧪 测试失败: ${failure.message}`);
console.log(`💡 修复测试: /fix-test ${failure.file}`);
break;
}
}
interface QualityGates {
typeCheck: {
anyTypesAllowed: 0; // 0 容忍度
strictMode: true; // 必须启用严格模式
implicitAny: false; // 禁止隐式 any
};
lintCheck: {
errorsAllowed: 0; // 0 错误容忍度
warningsAllowed: 5; // 最多 5 个警告
autoFixRate: 0.95; // 95% 自动修复率
};
spellCheck: {
spellingErrors: 0; // 0 拼写错误容忍度
technicalTerms: 'verified'; // 技术术语必须验证
};
testCoverage: {
functions: 80; // 函数覆盖率 80%
lines: 80; // 行覆盖率 80%
statements: 80; // 语句覆盖率 80%
branches: 70; // 分支覆盖率 70%
};
}
# 修复所有可自动修复的问题
pnpm lint
# 如果仍有问题,运行详细诊断
pnpm check:all # 查看具体错误
pnpm typecheck # 查看类型错误详情
pnpm spellcheck # 查看拼写错误详情
#!/bin/bash
# auto-fix.sh - 智能修复脚本
echo "🚀 开始自动修复..."
# 1. 代码规范检查和自动修复(包括格式化)
echo "🔧 修复代码规范问题..."
pnpm lint
# 2. 类型检查(仅诊断,不自动修复)
echo "🔍 检查类型问题..."
TYPE_ERRORS=$(pnpm typecheck 2>&1 | grep -c "error" || echo "0")
if [ "$TYPE_ERRORS" -gt 0 ]; then
echo "❌ 发现 $TYPE_ERRORS 个类型错误,需要手动修复"
pnpm typecheck
exit 1
fi
# 4. 拼写检查
echo "📖 检查拼写..."
SPELL_ERRORS=$(pnpm spellcheck 2>&1 | grep -c "error" || echo "0")
if [ "$SPELL_ERRORS" -gt 0 ]; then
echo "❌ 发现 $SPELL_ERRORS 个拼写错误,请检查"
pnpm spellcheck
exit 1
fi
# 5. 运行测试
echo "🧪 运行测试..."
pnpm test
echo "✅ 自动修复完成!"
interface FixStrategy {
priority: 'high' | 'medium' | 'low';
autoFix: boolean;
description: string;
}
const fixStrategies: FixStrategy[] = [
{
priority: 'high',
autoFix: true,
description: '代码格式和规范问题(使用 pnpm lint)'
},
{
priority: 'high',
autoFix: false,
description: 'TypeScript 严重类型错误'
},
{
priority: 'medium',
autoFix: false,
description: '测试用例修复(使用 /fix-test)'
},
{
priority: 'low',
autoFix: true,
description: '拼写错误(添加到词典或修正)'
}
];
interface QualityReport {
timestamp: string;
checkType: {
passed: boolean;
errors: number;
warnings: number;
issues: TypeIssue[];
};
lintCheck: {
passed: boolean;
errors: number;
warnings: number;
fixed: number;
};
spellCheck: {
passed: boolean;
errors: number;
words: string[];
};
testCoverage: {
passed: boolean;
coverage: CoverageReport;
failingTests: TestFailure[];
};
overall: {
passed: boolean;
score: number; // 0-100
recommendations: string[];
};
}
# 生成质量报告
function generateQualityReport() {
echo "📊 生成代码质量报告..."
# 运行所有检查
pnpm check:all > check-results.txt 2>&1
pnpm test:coverage > coverage-results.txt 2>&1
# 分析结果
echo "📈 质量趋势分析:"
echo "- 类型错误: $(grep -c "error" check-results.txt || echo "0")"
echo "- 代码规范问题: $(grep -c "error" check-results.txt || echo "0")"
echo "- 测试覆盖率: $(tail -10 coverage-results.txt | grep -o "[0-9]*%" | head -1)"
# 生成改进建议
echo "💡 改进建议:"
echo "- 定期运行 pnpm check:all 进行预防性检查"
echo "- 在提交前确保所有检查通过"
echo "- 保持测试覆盖率在要求水平以上"
}
# 使用技能验证代码质量
skill: ci-validator
# 手动执行完整检查
pnpm check:all && pnpm test
# 快速检查(仅核心检查)
pnpm lint && pnpm test
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"quickfix.biome": "explicit",
"source.organizeImports": "explicit"
},
"typescript.preferences.preferTypeOnlyAutoImports": true,
"cSpell.enableFiletypes": ["typescript", "javascript", "markdown", "yaml"]
}
# 创建 Git 别名简化检查
git config --global alias.precheck '!pnpm check:all && pnpm test'
git config --global alias.quality '!pnpm check:all && pnpm test:coverage'
# 使用别名
git precheck # 快速检查
git quality # 完整质量检查
pnpm check:all通过这个技能,可以确保 xiaozhi-client 项目始终保持高质量的代码标准,减少 CI/CD 流水线失败,提升开发效率和代码质量。特别适配项目的 MCP 协议特性和复杂路径别名系统。