关于 new-project-setup
new-project-setup 是用于在项目中初始化 llmwiki/ 并梳理代码库的 Agent 技能。它协调模板与技能设置、知识库播种、仅限 WSL 的 RTK 配置,并生成草稿报告。
主要功能
- 01检查是否已有 llmwiki/
- 02同步模板并安装技能
- 03创建知识库目录与种子页面
- 04仅在 WSL 配置 RTK
- 05梳理代码库概念与实体
适用场景
- 01在新项目中初始化 llmwiki/
- 02确认后重新初始化现有知识库
- 03根据 README.md 或 go.mod 建立项目知识库
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rheinmir/ setup --skill new-project-setup安装后在 Claude Code 中输入/new-project-setup确认已加载。
详细介绍
技能:new-project-setup
内容
用途和上下文
- 用途: 从头为一个项目搭建
llmwiki/:拉取模板 + 安装技能、建立 wiki 目录结构、RTK(WSL)、初始化 wiki,然后接入代码库。 - 触发条件(何时使用): 项目尚无
llmwiki/,或需要从头重置。 - 非目标: 不单独安装技能(由 sync-template 步骤 7 处理);不单独调用 lint(onboard-codebase 已包含);不在 WSL 之外安装 RTK;不自动激活(
disable-model-invocation: true)。
心智模型
检查 llmwiki → sync-template(模板 + 技能)→ 建立 wiki 目录结构 → RTK(仅 WSL)→ 初始化(project-requirements + log + index)→ onboard-codebase(概念 + 实体 + lint)→ 输出报告。
输入和输出契约
| 字段 | 必填? | 含义 | |
|---|---|---|---|
| 输入 | 项目目录 | 是 | 在项目根目录运行 |
| 输入 | README.md、package.json 或 go.mod | 否 | 为初始化提供项目名称和技术栈来源 |
| 输入 | 重置确认 | 当 llmwiki/ 已存在时 | 是否重置 |
| 输出 | llmwiki/wiki/{concepts,entities,sources/draft}, llmwiki/{skills,raw} | 是 | 目录结构 + index.md、log.md、raw/.gitkeep |
| 输出 | llmwiki/wiki/sources/project-requirements.md | 是 | OKF frontmatter + ## Origin |
| 输出 | 已挂接 RTK | 仅 WSL | rtk init -g + ~/.claude/settings.json 中的 hook |
| 输出 | 已接入的 wiki + 输出报告草稿 | 是 | 由 onboard-codebase 生成的 concepts/entities |
规则和能力
- RULE-01(必须):技能安装由 sync-template 步骤 7 处理,不要重复安装
- RULE-02(必须):onboard-codebase 已包含 lint,不要额外调用 lint
- RULE-03(必须):执行 curl 前必须通过 RTK 检查
uname -r | grep -qi microsoft - 能力:写入项目文件系统;联网(拉取模板、下载 RTK);仅通过
rtk init -g修改 Agent 全局配置(~/.claude/settings.json);调用子技能 sync-template 和 onboard-codebase。
故障边界
llmwiki/已存在 → 澄清:询问用户是否重置;若不重置则停止。- 不是 WSL → 跳过 RTK 步骤(不算错误)。
- 在 settings.json 中找不到 RTK hook → 部分完成,输出 "MANUAL: add rtk hook to settings.json"。
- sync-template 或 onboard-codebase 出错 → 在对应步骤标记为 失败,并告知用户。
操作
主工作流
| 步骤 | 类型 | 输入 | 操作 | 输出/退出 | 失败/后续 |
|---|---|---|---|---|---|
| W01 | 确定性 | 项目根目录 | 检查 llmwiki 是否存在 | exists 或 missing | exists → B01 |
| W02 | 副作用 | 网络 | 调用 sync-template:拉取模板 + 安装技能 | 命令 + 已安装的技能 | 出错 → 失败 |
| W03 | 副作用 | — | 初始化 wiki 目录结构 | 目录结构 | — |
| W04 | 副作用 | 操作系统 | RTK 令牌代理(仅 WSL)— B02 | 已挂接 RTK | 非 WSL → 跳过;缺少 hook → MANUAL |
| W05 | 判断 | README/package.json/go.mod | 初始化 wiki:project-requirements、log、index | 初始页面 | — |
| W06 | 副作用 | 代码库 | 调用 onboard-codebase | concepts + entities + lint | 出错 → 失败 |
| W07 | 副作用 | 结果 | 输出报告草稿 | 草稿 + index + log | — |
各步骤详情(W01–W07 的权威来源):
1. 检查 llmwiki 是否存在:
test -d llmwiki && echo exists || echo missing
exists → 询问用户是否重置。重置 = 删除 concepts/ + entities/,保留 log.md + sources/。
2. 拉取模板 + 安装技能:
# INVOKE: sync-template
# sync-template tự pull từ rheinmir/setup@orca và install skills vào:
# .claude/commands/ → Claude Code
# ~/.agents/skills/*/SKILL.md → OpenCode / Antigravity
3. 初始化 wiki 目录结构:
mkdir -p llmwiki/wiki/{concepts,entities,sources/draft} llmwiki/{skills,raw}
touch llmwiki/wiki/index.md llmwiki/wiki/log.md llmwiki/raw/.gitkeep
4. RTK 令牌代理(仅 WSL):
# Guard — chỉ chạy trong WSL:
uname -r | grep -qi microsoft || { echo "RTK install: WSL only — skip"; exit 0; }
# CHECK đã cài chưa:
rtk --version 2>/dev/null || {
curl -fsSL https://github.com/rtk-ai/rtk/releases/latest/download/rtk-x86_64-unknown-linux-musl.tar.gz \
| tar xz -C /usr/local/bin
}
# Init global config + patch ~/.claude/settings.json:
rtk init -g
# Verify hook:
grep -q "rtk hook claude" ~/.claude/settings.json && echo "RTK hooked" || echo "MANUAL: add rtk hook to settings.json"
5. 初始化 wiki:
# Đọc README.md, package.json hoặc go.mod → project name + stack
- 创建
llmwiki/wiki/sources/project-requirements.md— frontmatter +## Origin - OKF v0.1 (R9): frontmatter 是非空
type的 YAML---块 — 复制_template.md,不要使用粗体**Type:**(旧格式)。 - 追加到
llmwiki/wiki/log.md:## YYYY-MM-DD — init — <project-name> - 创建
llmwiki/wiki/index.md— 标题 + 空表格
6. 调用 onboard-codebase → 填充 concepts/ + entities/ + lint。
分支
| ID | 类型 | 守卫条件 | 行为 | 跳过 / 失败 | 重新汇合 |
|---|---|---|---|---|---|
| B01 | conditional_required | W01 返回 exists | 询问用户是否重置;重置 = 删除 concepts/ + entities/,保留 log.md + sources/ | 用户不重置 → 停止 | W02 |
| B02 | conditional_required | 内核包含“microsoft”(WSL) | 如果尚未安装 RTK,则安装,然后运行 rtk init -g 并验证 hook | 非 WSL → 跳过步骤 4 | W05 |
验证与停止
通过命令检查:运行 test -d llmwiki 得到 exists;在 WSL 上 grep 检查 settings.json 中是否包含 "RTK hooked";project-requirements.md 包含 frontmatter type(R9)和 ## Origin。在 onboard-codebase 中运行 Lint,不要重复运行。输出报告后停止。
示例
- 正向: macOS 上一个没有
llmwiki/的全新 Go 仓库 → W01 返回missing→ sync-template → 创建框架目录 → RTK 步骤输出“RTK install: WSL only — skip” → 从go.mod初始化 → onboard-codebase → 起草DDMMYY-init-<project>.md。 - 边界 / 失败: 在已有
llmwiki/的项目上重新运行 → W01 返回exists→ 询问是否重置;用户同意 → 仅删除concepts/+entities/,保留log.md和sources/。
交付 — 输出报告
完成所有主要技能任务后,向 Wiki 写入一份提案草稿。
步骤
1. 构建文件名:
- 格式:
DDMMYY-<ten>.md DDMMYY= 今天的日期(例如,2026 年 6 月 2 日为020626)<ten>= 用 2–4 个 kebab-case 单词概括所完成的工作(例如,landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)
2. 写入 llmwiki/wiki/sources/draft/DDMMYY-<ten>.md:
---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/sources/draft/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_
3. 更新 Wiki 索引和日志:
llmwiki/wiki/index.md— 追加一行:| [DDMMYY-<ten>](sources/draft/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md— 追加:## YYYY-MM-DD — <skill-name> — <ten>
仅当技能没有产出任何工件且没有做出任何决策时才跳过(例如,纯显示模式,如
/caveman-stats)。