name: blocklet-converter description: 使用提供的DID将静态网页或Next.js项目转换为ArcBlock blocklet。分析项目结构,生成配置文件并验证设置。需要blocklet DID作为参数。
Blocklet转换器
将静态网页项目和Next.js应用程序转换为具有正确配置和验证的ArcBlock blocklet。
参数
did (必需): 预生成的blocklet DID (格式: z8ia...)
示例: "使用DID z8ia4e5vAeDsQEE2P26bQqz9oWR1Lxg9qUMaV将此项目转换为blocklet"
如果缺失或无效,立即退出并显示错误信息: “需要Blocklet DID参数。”
工作流程
1. 项目分析
跳过目录: node_modules/, .pnpm/, .yarn/, .cache/, .turbo/, bower_components/
验证Web应用程序是否存在
检查以下任意一项:
- 包含web相关依赖项的
package.json - 根目录、
public/、src/或常见位置中的index.html - Web框架配置 (
vite.config.*,webpack.config.*,next.config.*等)
如果未找到 → 退出并显示错误信息: “未检测到Web应用程序。”
检测项目类型
检查package.json依赖项:
- Next.js: 依赖项中包含
next→ Next.js项目 - 后端框架: express、koa、fastify、nest等 → 退出并显示错误: “仅支持静态网页和next.js项目。”
- 其他情况 → 静态网页应用
提取并发出元数据 (早期)
确认项目类型后立即从package.json提取元数据:
title: 适合公开显示的人类友好项目名称 (例如:my-cool-app→My Cool App)description: 面向最终用户的清晰、非技术性描述。如果package.json描述过于技术性,则重写为用户友好的描述。
使用以下协议发出,然后继续工作流程:
<<<BLOCKLET_PROJECT>>>
{"title": "...", "description": "..."}
<<<END_BLOCKLET_PROJECT>>>
构建 (如果存在构建脚本)
bun install && bun run build
如果任一失败 → 退出并显示错误输出。
定位输出目录
对于Next.js项目: 输出目录始终为.next — 跳过检测。
对于静态网页应用: 在以下位置查找index.html: dist/ → build/ → out/ → public/ → ./,或其他常见位置。如果未找到 → 退出并显示错误信息: “未找到index.html入口点。”
确认输出目录
在继续之前验证输出目录是否存在并包含预期文件。
2. 资产准备
- README.md: 如果缺失,从
{baseDir}/templates/README-template.md生成 - logo.png: 如果缺失,从
{baseDir}/assets/default-blocklet-logo.png复制 - index.js (仅Next.js): 将
{baseDir}/assets/nextjs-entry.txt复制到项目根目录作为index.js
3. 生成blocklet.yml
对于Next.js项目: 使用{baseDir}/templates/nextjs-blocklet.yml中的模板
对于静态网页应用: 使用{baseDir}/templates/static-blocklet.yml中的模板
填充内容:
did和name: 使用提供的DIDtitle: 人类可读的项目名称description: 来自package.json
4. 验证
blocklet meta
对于Next.js项目:
blocklet bundle --simple --create-release --external="*"
对于静态网页应用:
blocklet bundle --create-release
修复任何错误并重试。
5. 最终确定
完成后不要输出任何摘要或回顾。 成功验证后静默结束。工具输出已为用户提供了足够的反馈。
错误参考
查看{baseDir}/errors.md了解所有错误条件和建议。
支持文件
assets/default-blocklet-logo.png- 默认徽标assets/nextjs-entry.txt- Next.js入口点示例templates/static-blocklet.yml- 静态网页应用配置模板templates/nextjs-blocklet.yml- Next.js配置模板templates/README-template.md- README模板examples.md- 工作流程示例errors.md- 错误参考
{baseDir}解析为技能的安装目录。
输出协议
此技能发出结构化数据,调用者可以编程方式解析。
项目元数据事件
项目验证成功后立即发出 (构建前):
<<<BLOCKLET_PROJECT>>>
{"title": "...", "description": "..."}
<<<END_BLOCKLET_PROJECT>>>
| 字段 | 类型 | 描述 |
|---|---|---|
title |
字符串 | 用于公开显示的人类友好项目名称 |
description |
字符串 | 面向最终用户的非技术性描述 |