用途
lov-project-port 用于为开发项目生成稳定且唯一的端口号,端口范围为 3000-8999。其核心特点是:同一项目名永远返回同一个端口,从而避免端口在多次启动间变化,也降低不同项目之间端口冲突的概率。该 Skill 适用于需要为项目设定端口的场景,也可在启动开发服务器时提供端口值。
主要能力
-
查询项目端口:根据项目名计算出对应端口并告知用户。例如资料中给出的示例显示,项目 “skill-publisher” 的端口号为 7965。
-
更新项目配置:检测并更新项目中的端口配置文件,资料中列出的文件与配置方式包括:
- .env / .env.local:设置 PORT=<port>
- package.json:在 scripts 中设置 --port <port>
- vite.config.ts:设置 server.port: <port>
- next.config.js:通常使用 .env 更新时优先使用 .env 方式,以保持最小侵入性。
-
启动开发服务器:可通过环境变量传入计算出的端口,例如
PORT=$(scripts/hashport.sh) pnpm dev。 -
端口冲突处理:若端口被占用,会提示用户哪个进程占用了端口,建议使用
lsof -i :<port>查看,并可通过追加后缀调用generate_port("project-dev")生成备用端口。
使用方式
端口生成算法如下(资料原文):
def generate_port(project_name: str) -> int:
hash_value = sum(ord(c) * (i + 1) for i, c in enumerate(project_name))
return 3000 + (hash_value % 6000)
也可使用附带脚本 scripts/hashport.sh 生成端口:
# 使用当前目录名
./scripts/hashport.sh
# 输出: 7965
# 指定项目名
./scripts/hashport.sh my-project
# 输出: 5123
运行时上下文与反馈规则
该 Skill 在运行前会读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题,用户明确同意后再保存回答。报错时提供可复制的 context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。
通用反馈闭环要求:用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:先判断意见是 task-specific(仅本次)还是 reusable(可跨任务复用)。task-specific 只修改当前任务,不改 Skill。reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。
适用场景
- 需要为某个项目固定一个开发端口,并在多次启动中保持一致。
- 在 .env、package.json、vite.config.ts 等项目配置中写入端口。
- 在命令行中通过脚本快速获取端口并用于启动开发服务器。
- 端口被占用时,需要查看占用进程或生成备用端口。
限制
资料未提供关于平台支持范围、收费、价格或性能上限的信息,暂未提供。端口生成算法为资料中给出的确定性哈希,不保证在极端情况下与所有系统保留端口或外部服务完全不冲突,冲突时需按上述方式处理。