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

239 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 发布和回滚策略)。