catalog/repos/adonis0123--adonis-skills.md

239 lines
9.8 KiB
Markdown
Raw Normal View History

2026-04-07 11:44:56 +08:00
# Claude技能管理仓库
`monorepo` `AI技能` `Next.js` `CLI工具` `自动化`
English | [中文](./README.zh-CN.md)
# adonis-skills
`adonis-skills` 是一个以智能体为中心的技能仓库,采用 `pnpm + Turborepo + Next.js 16` monorepo 架构构建。
目标:
- 让技能可通过 `npx skills add` 直接安装
- 提供展示技能元数据和安装命令的 Web UI
- 为未来演进保留空间(更多技能、可选 npm 发布)
**在线站点**<https://adonis-skills.vercel.app/>
## 当前状态
- 公开技能:`commit``staged-review-validator``tailwindcss-next-init``weekly-report`
- Web 站点:`apps/web`Next.js 16
- 技能目录:`skills/*`
- 技能索引生成:`scripts/generate-skills-index.mjs`
- 技能结构校验:`scripts/validate-skills.mjs`
## 仓库结构
```txt
.
├── apps/
│ └── web/
├── skills/
│ ├── commit/
│ ├── staged-review-validator/
│ ├── tailwindcss-next-init/
│ └── weekly-report/
├── scripts/
│ ├── generate-skills-index.mjs
│ └── validate-skills.mjs
├── turbo.json
├── pnpm-workspace.yaml
└── .github/workflows/ci.yml
```
## 快速开始
```bash
pnpm install
pnpm skills:validate
pnpm skills:index
pnpm dev
```
在浏览器中打开 `http://localhost:3000`
## 安装技能
默认仓库标识符:`adonis0123/adonis-skills`
```bash
npx skills add adonis0123/adonis-skills --skill weekly-report
npx skills add adonis0123/adonis-skills --skill tailwindcss-next-init
```
若仓库所有者发生变更:
1. 设置 `NEXT_PUBLIC_SKILLS_REPO=<新所有者>/adonis-skills`(例如写入 `.env.local`
2. 重启 `pnpm dev`(或重新部署)以应用新值
## 命令速查表(每条命令的作用)
下表说明 `package.json` 中各脚本的含义。
| 命令 | 实际执行 | 含义 / 使用场景 |
| --- | --- | --- |
| `pnpm dev` | `turbo run dev --filter=@adonis-skills/web` | 启动 Web 站点开发模式(仅 `apps/web`)。用于日常本地 UI 调试。 |
| `pnpm build` | `turbo run build` | 运行 monorepo 构建任务。提交变更前确认仓库可正常构建时使用。 |
| `pnpm lint` | `turbo run lint` | 执行代码风格/lint 检查。修改 TS/JS 文件后使用。 |
| `pnpm typecheck` | `turbo run typecheck` | 运行 TypeScript 类型检查。修改类型/API 后使用。 |
| `pnpm skills:new` | `node --experimental-strip-types ./scripts/create-skill.ts` | 创建新技能的交互式入口。自动执行:初始化 -> 快速校验 -> 完整校验 -> 刷新索引。 |
| `pnpm skills:finalize -- <skill-path>` | `node --experimental-strip-types ./scripts/finalize-skill.ts` | 对 `skills/*` 下已有或复制的技能执行标准 finalize 流程:`quick-validate` -> `validate` -> `index`。支持相对路径和绝对路径。 |
| `pnpm skills:finalize:new [-- --dry-run]` | `node --experimental-strip-types ./scripts/finalize-new-skills.ts` | 自动模式:仅检测 `skills/<slug>/SKILL.md` 状态为 `A``??` 的新增技能,逐个执行 finalize然后暂存相关文件`skills/<slug>` 及变更的技能索引)。若未发现新技能,则回退到 `skills:new` 并重新扫描。 |
| `pnpm skills:init <skill-name> --path skills` | `python3 ./.agents/skills/repo-skill-creator/scripts/init_skill.py` | 仅初始化技能目录/模板内容(手动模式)。不需要完整自动化流程时使用。 |
| `pnpm skills:quick-validate skills/<skill-name>` | `python3 ./.agents/skills/repo-skill-creator/scripts/quick_validate.py` | 校验单个技能(尤其是 frontmatter 合法性)。编辑单个技能后作为快速本地检查使用。 |
| `pnpm skills:openai-yaml <skill-dir>` | `python3 ./.agents/skills/repo-skill-creator/scripts/generate_openai_yaml.py` | 为技能生成 `agents/openai.yaml`OpenAI 技能接口元数据)。需要接口元数据时使用。 |
| `pnpm skills:validate` | `turbo run skills:validate --filter=@adonis-skills/web` | 全仓库技能校验。提交/CI 前必须执行。 |
| `pnpm skills:index` | `turbo run skills:index --filter=@adonis-skills/web` | 重新生成 `apps/web/src/generated/skills-index-lite.json``apps/web/src/generated/skills-detail-index.json`。添加或更新技能后执行,保持 Web 数据最新。 |
| `pnpm skills:install:local` | `node --experimental-strip-types ./scripts/install-local-skills.ts` | 将 `skills/` 中的技能安装到本地 `.agents/skills`(支持交互式选择、`--all``--skill`)。用于本地智能体测试。 |
| `pnpm skills:test:local` | `node --experimental-strip-types ./scripts/install-local-skills.ts --sync-llm` | 先本地安装,再同步到 `.claude/skills`。在本地 Claude/Codex 运行时中测试时使用。 |
| `pnpm skills:sync:llm` | `node --experimental-strip-types ./scripts/sync-llm-skills.ts` | 原子性地将 `.agents/skills` 同步到 `.claude/skills`。仅需重新执行同步时使用。 |
| `pnpm ruler:apply` | `pnpm dlx @intellectronica/ruler@latest apply --local-only --no-backup` | 根据 `.ruler/*` 生成/更新根目录产物(如 `AGENTS.md``CLAUDE.md`)。修改规则后执行。 |
| `pnpm postinstall` | 条件性 postinstall 钩子(本地执行 `ruler:apply``skills:sync:llm`CI 中跳过) | 由 `pnpm install` 触发:本地环境执行 `ruler:apply``skills:sync:llm`CI 跳过。 |
注意:
- 默认直接流程(无路径):`skills:finalize:new`
- 新技能最常用流程:`skills:new` -> `skills:validate` -> `skills:index`
- 最常用手动流程:`skills:init`(或手动复制)-> `skills:finalize -- <skill-path>`
## 新技能标准流程SOP
自动模式(推荐,适用于已在 `skills/*` 下添加或复制了技能的情况):
```bash
pnpm skills:finalize:new
```
预演dry-run
```bash
pnpm skills:finalize:new -- --dry-run
```
推荐快捷路径:
```bash
pnpm skills:new
```
默认以交互式方式收集 `name``description`、可选资源目录,然后依次执行:
1. 初始化技能目录(默认路径:`skills/`
2. 单技能快速校验(`skills:quick-validate`
3. 全仓库校验(`skills:validate`
4. 索引重新生成(`skills:index`
非交互式创建示例:
```bash
pnpm skills:new -- --name demo-skill --description "用于演示新技能工作流" --resources scripts,references --non-interactive
```
手动模式(先初始化或复制,再 finalize
```bash
pnpm skills:init <skill-name> --path skills --resources scripts,references
pnpm skills:finalize -- skills/<skill-name>
```
仅执行 finalize无需重新初始化
```bash
# 相对路径
pnpm skills:finalize -- skills/code-inspector-init
# 绝对路径(末尾 / 会自动处理)
pnpm skills:finalize -- /Users/adonis/coding/adonis-skills2/skills/code-inspector-init/
# 仅预览命令,不实际执行
pnpm skills:finalize -- --dry-run skills/code-inspector-init
```
## 本地交互式安装与测试
本仓库支持将 `skills/` 中的技能安装到 `.agents/skills`,并可选择同步到 `.claude/skills`
```bash
# 默认:进入交互式菜单(选择 + 复选框)
pnpm skills:install:local
# 交互式安装后,一键同步到 .claude/skills
pnpm skills:test:local
```
交互式菜单流程:
1. 选择 `安装选定技能` / `安装全部技能` / `退出`
2. 若选择部分安装,进入多选列表(空格键勾选)
3. 确认并执行安装
同样支持非交互式模式:
```bash
# 安装单个技能(如需多个可重复 --skill
pnpm skills:install:local -- --no-interactive --skill weekly-report
# 安装全部
pnpm skills:install:local -- --no-interactive --all
# 非交互式安装后同步
pnpm skills:test:local -- --no-interactive --skill weekly-report
```
注意:
- 安装命令底层使用 `npx skills add ./skills -a codex ...`,目标目录为 `.agents/skills`
- `skills:test:local` 在安装后执行 `skills:sync:llm`,将 `.agents/skills` 镜像到 `.claude/skills`
## CI
GitHub Actions 执行:
- `pnpm install --frozen-lockfile`
- `pnpm skills:validate`
- `pnpm skills:index`
- `pnpm --filter @adonis-skills/web run i18n -- --compile --strict`
- `pnpm turbo run lint typecheck build --filter=@adonis-skills/web`
各步骤校验内容:
- `install`:基于锁文件的一致性依赖安装
- `skills:validate``skills/*` 的 frontmatter/schema 合法性
- `skills:index`:重新生成 `apps/web/src/generated/skills-index.json`
- `Prepare i18n Catalogs`:将 `src/locales/**/*.po` 编译为 `*.mjs`,并重新生成 `src/i18n/catalog-manifest.ts`
- `lint/typecheck/build`代码质量、TS 正确性及生产构建可用性
i18n 步骤为何必须执行:
- 编译后的 Lingui 目录(`src/locales/**/*.mjs`)被 git 刻意忽略。
- `src/i18n/catalog-manifest.ts` 导入了这些 `.mjs` 文件。
- 若 CI 中未预先编译目录,`typecheck` 会因 `TS2307`"找不到模块 .../src/locales/.../*.mjs")而失败。
常见失败类别:
- 依赖/安装问题(`pnpm install`
- 技能校验失败(`pnpm skills:validate`
- i18n 编译/翻译严格检查失败(`Prepare i18n Catalogs`
- TypeScript 模块/类型错误(`typecheck`
排错规则:
- 若看到 `TS2307` 错误路径指向 `src/locales/**/*.mjs`,请先执行 `pnpm --filter @adonis-skills/web run i18n -- --compile`,再重新运行 typecheck。
失败将阻断合并,以确保 main 分支始终可部署。
## Vercel 部署(自动)
本仓库推荐的 Vercel 设置:
- 安装命令:`pnpm install --frozen-lockfile`
- 构建命令:`pnpm turbo run build --filter=@adonis-skills/web`
- 输出目录:默认 Next.js 输出(无需手动覆盖)
main 分支更新后Vercel 自动部署。若出现问题版本,在 GitHub 回退到上一个绿色提交即可。
## 未来计划
V1 仅支持 GitHub 安装流程。后续可添加 npm 发布支持(包括 GitHub Action 发布和回滚策略)。