| name | path-alias-validator |
| description | 路径别名系统检查与修复 |
我是路径别名系统检查与修复技能,专门针对 xiaozhi-client 项目的路径别名系统进行检查、验证和优化,同时遵循务实开发理念。
技能使用原则
- 保持代码质量,但避免过度工程化:维护路径别名的一致性,但不追求过度复杂的设计
- 实用功能优先,理论完美次之:解决实际的导入问题比完美的路径设计更重要
- 简单解决方案优于复杂方案:在复杂和简单之间做出合理选择
- 务实开发指导:评估路径别名设计的必要性,避免过度设计
技能能力
1. 路径别名使用检查
核心能力:检测项目中相对路径的使用情况,并提供别名替换建议。
检测范围
- 源代码文件:TypeScript/JavaScript 文件中的导入语句
- 文档文件:MDX 文件代码块中的示例代码
- 跨目录相对路径:
../ 格式的导入语句
- 同级目录引用:
./ 格式的导入语句
- 混合使用情况:同一文件中别名和相对路径混用
- 配置一致性:各配置文件中别名配置的一致性检查
文档场景特殊处理
- 代码块识别:自动识别 MDX 文件中的 TypeScript/JavaScript 代码块
- 示例代码检查:检查文档中的代码示例是否遵循路径别名规范
- 教学一致性:确保文档示例展示最佳实践
- 语法高亮支持:支持多种编程语言的路径检查
检查规则
import { LightService } from "@/server/services";
import type { HassState } from "@/types";
import { formatDate } from "@/utils";
import { LightService } from "../services";
import type { HassState } from "../types";
import { formatDate } from "./utils";
2. 别名配置验证
检查项目配置文件中的路径别名设置是否正确和一致。
验证项目
- tsconfig.json - TypeScript 编译器配置
- vitest.config.ts - 测试框架配置
- tsup.config.ts - 构建工具配置
- package.json - 导入映射配置(如存在)
标准别名映射
{
"@/types": ["./src/types"],
"@/config": ["./src/config"],
"@/mcp-core": ["./src/mcp-core"],
"@/endpoint": ["./src/endpoint"],
"@/esp32": ["./src/esp32"],
"@/cli": ["./src/cli"],
"@/utils": ["./src/utils"],
"@/server": ["./src/server"]
}
3. 自动修复建议
为检测到的问题提供具体的修复建议和代码示例。
修复示例
import { UserService } from "../services/user";
import type { APIResponse } from "../types/api";
import { formatDate } from "./utils/date";
import { Command } from "./commands/help";
import { UserService } from "@/server/services/user";
import type { APIResponse } from "@/types/api";
import { formatDate } from "@/utils/date";
import { Command } from "@/cli/commands/start";
使用方法
基础检查
请检查当前项目的路径别名使用情况,识别所有需要修复的相对路径。
配置验证
请验证项目中所有配置文件的路径别名设置是否一致和正确。
自动修复
请帮我修复检测到的路径别名问题,自动替换相对路径为 @/xxx 格式的别名。
特定文件检查
请检查 src/server/services/ 目录下的所有文件,确保它们正确使用 @/ 路径别名体系。
CLI模块检查
请检查 src/cli/ 目录下的所有文件,确保CLI命令正确使用 @/cli 路径别名。
核心模块检查
请检查 src/mcp-core/ 目录下的所有文件,确保核心MCP功能正确使用 @/mcp-core 路径别名。
文档专项检查
请检查 docs/ 目录下的所有 MDX 文件,确保文档中的代码示例使用正确的 xiaozhi-client 路径别名。
文档批量修复
请批量修复文档中的路径别名问题,重点关注代码示例中的 import 语句。
文档质量验证
请验证文档更新后的正确性,确保修复后的代码示例语法正确且符合项目规范。
检查流程
1. 扫描阶段
- 源代码扫描:遍历项目中的所有 TypeScript/JavaScript 文件
- 文档扫描:扫描所有 MDX 文件中的代码块
- 语句识别:识别所有 import 和 export 语句
- 路径提取:提取相对路径使用情况
2. 分析阶段
- 路径映射:分析相对路径的目标位置
- 别名确定:确定应该使用的别名
- 上下文分析:分析代码块的语言和上下文
- 例外识别:识别例外情况(紧密相关的模块、测试文件等)
3. 文档特殊处理阶段
- 代码块解析:解析 MDX 文件中的代码块
- 语言识别:识别代码块的编程语言
- 示例分类:区分示例代码和配置代码
- 教学价值评估:评估修复对教学效果的影响
4. 验证阶段
- 配置一致性:检查配置文件的一致性
- 语法正确性:验证修复建议的正确性
- 功能完整性:确保不会破坏现有功能
- 文档可读性:确保修复后文档仍然清晰易懂
5. 报告阶段
- 问题分类:区分源代码和文档中的问题
- 修复建议:提供具体的修复建议
- 优先级标记:标记优先级和影响范围
- 文档影响评估:评估修复对文档质量的影响
例外情况
源代码中的例外
以下情况下相对路径是可以接受的:
- 紧密相关的模块
import { LightService } from "./light";
- 同目录下的辅助函数
import { helperFunction } from "./helpers";
- 动态导入的特殊情况
const module = await import(`../modules/${moduleName}`);
文档中的例外
文档中的代码示例有特殊的例外规则:
- 演示相对路径概念
import { utils } from "../shared/utils";
- 展示不同的导入方式
import { Service } from "./service";
import { Service } from "@/services/service";
- 第三方项目示例
import { Component } from "../components/Button";
- 配置文件示例
{
"paths": {
"./*": ["./src/*"]
}
}
文档修复策略
- 教学优先:当修复可能影响教学效果时,优先考虑教学价值
- 添加说明:在保留相对路径示例时,添加说明解释为什么使用相对路径
- 提供对比:同时展示相对路径和别名路径的使用方式
- 标注上下文:明确标注代码示例的上下文和适用场景
工具集成
与其他技能的协作
- type-validator - 确保别名使用不会破坏类型安全
- mock-generator - 确保 Mock 数据正确使用别名导入
- api-docs - 确保生成的文档反映正确的路径结构
CI/CD 集成
可以作为 CI 流程的一部分,自动检查新代码是否遵循路径别名规范。
最佳实践建议
1. 导入顺序
import { fs } from "node:fs";
import { path } from "node:path";
import express from "express";
import { Command } from "commander";
import type { AppConfig, XiaozhiConfig } from "@/types";
import { getConfig } from "@/config";
import { MCPConnection } from "@/mcp-core";
import { Container } from "@/cli";
import { StartCommand } from "@/cli/commands/start";
import { HandlerManager } from "@/server/handlers/HandlerManager";
import { ConfigService } from "@/server/services/ConfigService";
import { formatDate } from "@/utils";
import { helperFunction } from "./helpers";
2. 类型导入优先
import type { HassState } from "@/types";
import { HassState } from "@/types";
3. 一致性原则
同一文件中对同一目录的模块使用一致的导入方式。
验证检查清单
通过这个技能的帮助,可以确保项目始终遵循路径别名最佳实践,提高代码质量和可维护性。