@nathan33/nao-skill 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/.agents/checklists/architecture-designer.md +42 -0
  2. package/.agents/checklists/pm.md +64 -0
  3. package/.agents/checklists/qa.md +36 -0
  4. package/.agents/checklists/rd-be.md +36 -0
  5. package/.agents/checklists/rd-fe.md +63 -0
  6. package/.agents/common/intercom-protocol.md +125 -0
  7. package/.agents/common/output-format.md +51 -0
  8. package/.agents/prompts/architecture-designer.md +102 -0
  9. package/.agents/prompts/backend-developer.md +72 -0
  10. package/.agents/prompts/frontend-developer.md +63 -0
  11. package/.agents/prompts/product-manager.md +147 -0
  12. package/.agents/prompts/test-engineer.md +79 -0
  13. package/.agents/roles.yaml +37 -0
  14. package/.agents/scripts/nao-fleet.sh +588 -0
  15. package/.agents/scripts/ui-tokens-check.sh +51 -0
  16. package/.agents/skills/arch-patterns.md +44 -0
  17. package/.agents/skills/backend-ddd-details.md +108 -0
  18. package/.agents/skills/codegraph.md +52 -0
  19. package/.agents/skills/commit.md +68 -0
  20. package/.agents/skills/frontend-ddd-details.md +95 -0
  21. package/.agents/skills/frontend-design/SKILL.md +73 -0
  22. package/.agents/skills/pm-grill.md +26 -0
  23. package/.agents/skills/pm-rice.md +36 -0
  24. package/.agents/skills/test-design.md +52 -0
  25. package/.agents/templates/AGENTS.md.example +37 -0
  26. package/.agents/templates/frontend-ui/tokens.css.example +74 -0
  27. package/.agents/templates/frontend-ui/ux-playbook.md.example +36 -0
  28. package/.agents/templates/tasks-state.md.example +34 -0
  29. package/LICENSE +21 -0
  30. package/README.md +189 -0
  31. package/bin/nao-skill.js +142 -0
  32. package/package.json +34 -0
@@ -0,0 +1,34 @@
1
+ # 任务状态(PM 维护,运行时事实)
2
+
3
+ > 每次派发 / 回执 / 验收 / 抢占后更新本文件;PM 会话重开(`ensure --force`)后**先读本文件重建状态**再继续调度。
4
+ > 归档后的历史见 `docs/prds/` 与 `docs/adr/`;本文件只记**运行时**任务状态,保持精简。
5
+
6
+ ## 待派发队列
7
+
8
+ | 任务编号 | 目标会话 | 角色 | 概要 | 排队原因 |
9
+ | :--- | :--- | :--- | :--- | :--- |
10
+ | T3 | rd-be | 后端 | 实现 X 接口 | 目标忙碌 |
11
+
12
+ ## 进行中
13
+
14
+ | 任务编号 | 目标会话 | 角色 | 概要 | 派发时间 | 对应 AC |
15
+ | :--- | :--- | :--- | :--- | :--- | :--- |
16
+ | T2 | rd-fe | 前端 | 登录页 + 校验 | 2026-09-21 14:00 | AC1/AC2 |
17
+
18
+ ## 已回执待验收
19
+
20
+ | 任务编号 | 回执摘要(≤150字) | 详情路径 | 待办 |
21
+ | :--- | :--- | :--- | :--- |
22
+ | T1 | 创建 todo 链路完成 | docs/reports/T1.md | 核 AC 五覆盖 |
23
+
24
+ ## 挂起(被抢占 / 降级)
25
+
26
+ | 任务编号 | 挂起原因 | 恢复方式 |
27
+ | :--- | :--- | :--- |
28
+ | — | — | — |
29
+
30
+ ## 已验收 / 已归档
31
+
32
+ | 任务编号 | 结论 | 归档路径 |
33
+ | :--- | :--- | :--- |
34
+ | — | — | `docs/prds/` |
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nathan Lee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,189 @@
1
+ # nao-skills
2
+
3
+ 多角色 AI 开发舰队的**角色卡 / 技能 / 协作协议 / 工具链**包,基于 [pi](https://pi.dev)(Agent Skills 标准 + pi-intercom 多会话)。Made by [Nathan Lee](https://github.com/nathan)。
4
+
5
+ 核心命题:**用最少的 Token,把多个专业 Agent 会话组织成一个可靠交付的团队**——常驻精简、按需加载、机器强制、终态回执。
6
+
7
+ ## 整体架构
8
+
9
+ ```text
10
+ ┌──────────────────────────────────────────────────────────────────┐
11
+ │ 项目级上下文 AGENTS.md(PM 维护 · pi 自动注入所有会话 · 最高优先级)│
12
+ ├──────────────────────────────────────────────────────────────────┤
13
+ │ 协作层 pi-intercom:派发 / ask-reply / 终态回执闸门 │
14
+ │ PM=状态权威:忙闲闸门 → 排队/抢占 → 验收 → 归档 │
15
+ ├──────────────────────────────────────────────────────────────────┤
16
+ │ 单一事实来源 roles.yaml(aliases→id→card)· 卡片 frontmatter │
17
+ ├──────────────────────────────────────────────────────────────────┤
18
+ │ 常驻层(每轮计费,刻意精简) │
19
+ │ 角色卡:身份/职责/2-3 条最硬红线/按需指针 │
20
+ │ common/:output-format + intercom-protocol │
21
+ ├──────────────────────────────────────────────────────────────────┤
22
+ │ 按需层(渐进式披露,零常驻 token) │
23
+ │ skills/ DDD 细节 · codegraph · commit │
24
+ │ checklists/(独立于 skills/,避 pi 注册)· frontend-design/│
25
+ │ templates/ frontend-ui · AGENTS.md · tasks-state 骨架 │
26
+ ├──────────────────────────────────────────────────────────────────┤
27
+ │ 工具层 nao-fleet.sh(ensure/check/status)+ ui-tokens-check │
28
+ ├──────────────────────────────────────────────────────────────────┤
29
+ │ 外部能力 CodeGraph 索引(代码定位,替代 grep 全文扫描) │
30
+ └──────────────────────────────────────────────────────────────────┘
31
+ ```
32
+
33
+ ### 分层职责
34
+
35
+ | 层 | 内容 | Token 特性 |
36
+ | --- | --- | --- |
37
+ | **项目级** | 项目根 `AGENTS.md`(PM 维护 §七):项目属性/约束,pi 自动注入所有会话 | 常驻(限 <120 行) |
38
+ | **协作层** | pi-intercom:`--name` 注册身份,send/ask/reply 线程化;终态回执闸门(`[编号] done \| <role>` 必回) | 消息短、详情落盘 |
39
+ | **单一事实来源** | `roles.yaml` 管别名→角色;卡片 frontmatter `version` 管版本;两处互相校验(`check`) | 无重复维护 |
40
+ | **常驻层** | 5 张角色卡(60–112 行)+ 2 份 common 规范——每轮每会话计费,**刻意保持最小** | 最贵,最小化 |
41
+ | **按需层** | skills + checklists + templates:只有 description 常驻,完整指令按需读取(Agent Skills 标准渐进式披露) | 常态零成本 |
42
+ | **工具层** | fleet 拉起/体检/状态;ui-tokens-check 硬编码色值扫描(可接 CI) | 一次性执行 |
43
+ | **外部能力** | CodeGraph:`context` 一次返回相关符号+代码块(实测约 1/17 于 grep+全文) | 查找精准化 |
44
+
45
+ ## 核心设计:Token 优先
46
+
47
+ 1. **常驻最小化**:红线/清单/速查表全部按需化到 `checklists/`(独立目录,避开 pi skill 扫描),卡片只留最硬红线 + 指针。
48
+ 2. **按需加载**:Agent Skills 渐进式披露——DDD 细节、官方 frontend-design、checklists 均按需读,不占常驻。
49
+ 3. **缓存友好**:system prompt 稳定 = 前缀缓存命中(cacheRead 约 1/10 价);改卡**批量一次到位**,易变内容放消息体不进卡片;`cacheWarming: "idle"` + `/session` 观察。
50
+ 4. **查找精准**:CodeGraph `context`/`node`/`callers`/`impact` 替代 grep+cat 全文;不可用时降级 grep + `sed` 行段读取(禁 cat 全文)。
51
+ 5. **上下文生命周期**:任务闭环 → `ensure --force` 重开会话(优于自动压缩);PM 靠 `docs/` 落盘延续,不靠历史消息堆叠。
52
+
53
+ ## 上下文三层分层
54
+
55
+ | 层 | 载体 | 维护者 | 内容 |
56
+ | --- | --- | --- | --- |
57
+ | **项目级(最高)** | 项目根 `AGENTS.md` | PM(§七) | 项目属性/约束/机制衔接;pi 自动注入所有会话,**优先于角色默认习惯** |
58
+ | **团队级** | `roles.yaml` + `common/` | nao-skills 仓库 | 角色清单、协作协议、终态回执、缓存纪律 |
59
+ | **角色级** | `prompts/` + `skills/` + `checklists/` | nao-skills 仓库 | 角色身份/边界、按需技能、交付清单 |
60
+
61
+ 各层各写各的、不互相复制;项目已有非空 AGENTS.md 时**合并追加**(保留原文 + `## nao 舰队接入` 区块,可回退),不覆盖。
62
+
63
+ ## 协作闭环(PM 为 leader)
64
+
65
+ ```
66
+ 用户提需求 → PM grill-me 澄清 → 9 模块 PRD + RICE
67
+ → 开工确认卡(用户确认)→ AGENTS.md 项目上下文就绪(新建/合并)
68
+ → fleet ensure 拉起缺线角色 → 架构评审闸门(arch 签字 / ADR)
69
+ → send 派发(忙闲闸门:idle 才派 / 忙则排队 / 紧急抢占)
70
+ → worker 终态回执 `[编号] done`(未回执 PM 主动追讨)
71
+ → 验收闭环(AC 五覆盖)→ tasks-state.md 更新 → docs/prds 当日归档
72
+ ```
73
+
74
+ ## 任务调度:状态机 + 忙闲闸门 + 可恢复
75
+
76
+ PM 是任务状态权威,以状态机驱动执行:
77
+
78
+ | 状态 | 转移条件 |
79
+ | --- | --- |
80
+ | `queued`(待派发) | 目标忙碌(`thinking`/`tool:*`),记入 `docs/tasks-state.md` |
81
+ | `dispatched`(进行中) | `list` 显示目标 `idle` 才派完整任务 |
82
+ | `done`(已回执) | worker 回 `[编号] done`;PM 校验后进入验收 |
83
+ | `verified`(已验收) | AC 五覆盖核对通过,归档 `docs/prds` |
84
+
85
+ - **忙闲闸门**:`list` 的 live status(`idle`/`thinking`/`tool:*`)为判定依据;忙时**不 send 任务内容**(非交互拒收 / 交互 steer 打断),直接排队;紧急才抢占(交互可 steer 注入 + 注明挂起,非交互只能排队)。
86
+ - **状态外部化**:`docs/tasks-state.md` 五栏(待派发/进行中/待验收/挂起/已归档)随每次派发·回执·验收更新;PM 会话重开先读文件重建状态,不依赖历史消息。
87
+
88
+ - **终态回执硬闸门**:所有角色(含 arch 评审)必须以回执模板结束任务;`send` 失败降级 `ask` → 再失败才降级交付。
89
+ - **卡片版本同步**:改卡 bump `version` 并广播 `card <role> vN`(不贴全文);worker 接任务前核对版本,stale 则重读。
90
+ - **降级**:PM 可达必须回执;intercom 不可用才允许"本会话直接产出 + 用户转交"。
91
+
92
+ ## 代码定位(CodeGraph)
93
+
94
+ `@.agents/skills/codegraph.md`(按需)——`query`/`context`/`node`/`callers`/`callees`/`impact`/`affected` 速查 + token 纪律 + 降级 grep 规则。索引项目级维护:`status` → `init`/`sync`;`nao-fleet.sh` 的 `check`/`ensure` 自动探测索引健康并提醒。
95
+
96
+ ## UI/UX 落地(三层,不绑定组件库)
97
+
98
+ | 层 | 载体 | 职责 |
99
+ | --- | --- | --- |
100
+ | 设计质量层 | 官方 `frontend-design` skill(按需) | 视觉方向、反 AI 味、typography |
101
+ | 约束层 | Design Tokens(`--<prefix>-*`)+ UX Playbook + `ui-tokens-check.sh` | 令牌收敛、四态/反馈一致、机器扫描 |
102
+ | 验收层 | checklist rd-fe / qa | 交付前核对 + QA 视觉验收 |
103
+
104
+ 模板:`templates/frontend-ui/`(tokens.css + ux-playbook 骨架,任意项目复制裁剪)。
105
+
106
+ ## 角色卡(常驻 system prompt)
107
+
108
+ | Prompt | Role | 核心职责 |
109
+ | --- | --- | --- |
110
+ | `product-manager.md` | 产品经理(调度者) | 需求全生命周期、9 模块 PRD、RICE、多会话调度、终态回执闸门、**§七 AGENTS.md 项目上下文治理**、§十一 docs/prds 归档 |
111
+ | `architecture-designer.md` | 系统架构师(评审/咨询) | 技术选型四步法、评审签字 + ADR、终态回执 PM、降级规则 |
112
+ | `frontend-developer.md` | 前端研发 | 前端 DDD 五层、UI/UX 三层落地(引用 frontend-design) |
113
+ | `backend-developer.md` | 后端研发 | Go DDD 四层、依赖倒置、事务/事件/错误约定 |
114
+ | `test-engineer.md` | 测试工程师 | 测试金字塔、AC=用例、缺陷闭环、视觉验收 |
115
+
116
+ 所有角色卡头部均声明:**项目根 `AGENTS.md` 已由 pi 注入、最高优先级、优先于本卡默认习惯**(含各自执行点:arch 评审输入、RD 命令纪律、QA 环境运行)。
117
+
118
+ ## 按需技能
119
+
120
+ | Skill | 用途 |
121
+ | --- | --- |
122
+ | `frontend-ddd-details.md` | 前端 DDD 骨架/场景速决/命名/误区 + UI/UX 落地 |
123
+ | `backend-ddd-details.md` | 后端 DDD 骨架/事务/事件/命名/误区 |
124
+ | `arch-patterns.md` | 架构模式、ADR 模板 |
125
+ | `pm-rice.md` / `pm-grill.md` | RICE 优先级 / 需求澄清 |
126
+ | `test-design.md` | 用例设计、缺陷管理、分层对齐 |
127
+ | `codegraph.md` | 代码定位(替代 grep 全文) |
128
+ | `commit.md` | git commit 规范(仅提交前读) |
129
+ | `frontend-design/` | 官方视觉方向 skill(设计类任务先读) |
130
+ | `checklists/*.md` | 各角色完整红线 + 交付检查清单(交付前读) |
131
+
132
+ ## 工具链
133
+
134
+ ```bash
135
+ .agents/scripts/nao-fleet.sh check # 体检:roles.yaml/卡片/交叉引用/白名单/布局/CodeGraph
136
+ .agents/scripts/nao-fleet.sh status # 角色在线状态(权威名单见 intercom list)
137
+ .agents/scripts/nao-fleet.sh ensure arch rd-fe # 拉起缺失角色
138
+ .agents/scripts/nao-fleet.sh ensure rd-be@/path/repo # 指定后端 repo(含 CodeGraph 索引提醒)
139
+ .agents/scripts/ui-tokens-check.sh <repo> # 扫 UI 硬编码色值(绕过 Design Tokens)
140
+ ```
141
+
142
+ ## 安装(npm 发布)
143
+
144
+ 发布为 **`@nathan33/nao-skill`**,提供 `nao-skill install` CLI 一键接入项目:
145
+
146
+ ```bash
147
+ npm install -g @nathan33/nao-skill # 全局安装 CLI
148
+ # 或在任意项目里直接:npx @nathan33/nao-skill install
149
+
150
+ nao-skill install # 安装到当前目录
151
+ nao-skill install /path/to/proj --force # 指定目录;--force 覆盖同名文件
152
+ ```
153
+
154
+ - **安装内容**:`.agents/` 全套(角色卡 / 技能 / 交付清单 / 协议 / roles.yaml / 工具链 / 模板)+ 生成 `AGENTS.md`(已存在则提示按 §七 合并,不覆盖)。
155
+ - **合并策略**:目标已有同名文件默认保留项目既有(避免覆盖自定义);`--force` 备份后覆盖。
156
+ - **发布**:`npm publish --access public`(scope 包需 `--access public`)。
157
+
158
+ ## 目录结构
159
+
160
+ ```text
161
+ nao-skills/
162
+ └── .agents/
163
+ ├── common/ # 常驻规范(全部角色引用)
164
+ │ ├── output-format.md # 输出/回执模板、反模式
165
+ │ └── intercom-protocol.md # 多会话协议、终态回执、版本同步、缓存纪律
166
+ ├── roles.yaml # 角色清单(aliases→id→card,单一事实来源)
167
+ ├── prompts/ # 角色卡(frontmatter: role/version/updated)
168
+ │ ├── product-manager.md └── architecture-designer.md
169
+ │ ├── frontend-developer.md └── backend-developer.md
170
+ │ └── test-engineer.md
171
+ ├── checklists/ # 红线+交付清单(交付前读;独立于 skills/ 避免被 pi 注册为同名 skill)
172
+ │ ├── pm.md / architecture-designer.md / rd-be.md / rd-fe.md / qa.md
173
+ ├── skills/ # 按需技能(渐进式披露)
174
+ │ ├── frontend-design/ # 官方设计方向 skill(按需)
175
+ │ ├── frontend-ddd-details.md / backend-ddd-details.md
176
+ │ ├── arch-patterns.md / pm-rice.md / pm-grill.md
177
+ │ ├── test-design.md / codegraph.md / commit.md
178
+ ├── templates/ # 项目接入骨架(供复制裁剪)
179
+ │ ├── AGENTS.md.example # 项目级上下文(PM 维护,合并规则见 PM 卡 §七)
180
+ │ ├── tasks-state.md.example # 任务状态机落盘(待派发/进行中/待验收/挂起/已归档)
181
+ │ └── frontend-ui/ # tokens.css + ux-playbook 骨架
182
+ └── scripts/
183
+ ├── nao-fleet.sh # 会话拉起 / 在线状态 / 静态体检
184
+ └── ui-tokens-check.sh # UI 硬编码色值扫描
185
+ ```
186
+
187
+ ## License
188
+
189
+ MIT © 2026 Nathan Lee
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * nao-skill — nao 多角色 AI 开发舰队安装器
4
+ *
5
+ * 用法
6
+ * nao-skill install [dir] [--force] 把 .agents/ 能力安装到目标项目(默认当前目录)
7
+ * nao-skill --version 版本
8
+ * nao-skill --help 帮助
9
+ *
10
+ * 行为
11
+ * - 目标项目无 .agents/ → 完整复制
12
+ * - 已有 .agents/ → 合并:同名条目保留项目既有(--force 则备份后覆盖)
13
+ * - 无 AGENTS.md → 由模板生成(项目级上下文,PM 维护)
14
+ * - 已有 AGENTS.md → 提示按 PM 卡 §七 合并规则手动追加,不自动覆盖
15
+ *
16
+ * 使用(安装后)
17
+ * bash .agents/scripts/nao-fleet.sh check / ensure arch rd-fe ...
18
+ * 角色卡经 fleet 拉起时 --append-system-prompt 注入;checklists 按需读取
19
+ */
20
+ import {
21
+ cpSync,
22
+ existsSync,
23
+ mkdirSync,
24
+ readdirSync,
25
+ readFileSync,
26
+ writeFileSync,
27
+ rmSync,
28
+ statSync,
29
+ } from 'node:fs';
30
+ import { join, resolve, basename } from 'node:path';
31
+ import { fileURLToPath } from 'node:url';
32
+
33
+ const PKG = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
34
+ const SRC = fileURLToPath(new URL('../.agents', import.meta.url));
35
+ const TEMPLATE_AGENTS = fileURLToPath(new URL('../.agents/templates/AGENTS.md.example', import.meta.url));
36
+
37
+ const log = (...a) => console.log('[nao-skill]', ...a);
38
+ const warn = (...a) => console.error('[nao-skill]', ...a);
39
+
40
+ function copyDir(src, dst, force) {
41
+ const entries = readdirSync(src, { withFileTypes: true });
42
+ let copied = 0, skipped = 0, overwritten = 0;
43
+ for (const e of entries) {
44
+ const s = join(src, e.name);
45
+ const d = join(dst, e.name);
46
+ if (existsSync(d)) {
47
+ if (force) {
48
+ rmSync(d, { recursive: true, force: true });
49
+ cpSync(s, d, { recursive: true });
50
+ overwritten++;
51
+ } else {
52
+ skipped++;
53
+ }
54
+ } else {
55
+ cpSync(s, d, { recursive: true });
56
+ copied++;
57
+ }
58
+ }
59
+ return { copied, skipped, overwritten };
60
+ }
61
+
62
+ function install(target, force) {
63
+ if (!existsSync(SRC)) {
64
+ warn(`包内 .agents 缺失:${SRC}(发布物损坏?)`);
65
+ process.exit(1);
66
+ }
67
+ const dst = join(target, '.agents');
68
+ if (!existsSync(dst)) {
69
+ mkdirSync(dst, { recursive: true });
70
+ cpSync(SRC, dst, { recursive: true });
71
+ log(`已完整安装 .agents/ → ${dst}`);
72
+ } else {
73
+ const r = copyDir(SRC, dst, force);
74
+ log(`合并完成:复制 ${r.copied},跳过 ${r.skipped}(已存在),覆盖 ${r.overwritten}`);
75
+ if (r.skipped > 0 && !force) {
76
+ warn('同名文件保留项目既有版本(避免覆盖自定义);需要覆盖加 --force。');
77
+ }
78
+ }
79
+
80
+ const agentsMd = join(target, 'AGENTS.md');
81
+ if (!existsSync(agentsMd)) {
82
+ let tpl = readFileSync(TEMPLATE_AGENTS, 'utf8');
83
+ tpl = tpl.replaceAll('<项目名>', basename(resolve(target)));
84
+ writeFileSync(agentsMd, tpl);
85
+ log('已生成 AGENTS.md(项目级上下文,PM 维护;保持精简 <120 行)。');
86
+ } else {
87
+ warn('AGENTS.md 已存在:按 PM 卡 §七 合并规则手动追加「nao 舰队接入」区块,勿覆盖原文。');
88
+ }
89
+
90
+ log('');
91
+ log('✔ 安装完成。下一步:');
92
+ log(' bash .agents/scripts/nao-fleet.sh check # 体检');
93
+ log(' bash .agents/scripts/nao-fleet.sh status # 在线状态');
94
+ log(' bash .agents/scripts/nao-fleet.sh ensure arch rd-fe rd-be qa # 拉起舰队');
95
+ log(' 角色卡:.agents/prompts/ · 技能:.agents/skills/ · 交付清单:.agents/checklists/');
96
+ }
97
+
98
+ function help() {
99
+ console.log(`nao-skill v${PKG.version} — nao 多角色 AI 开发舰队安装器
100
+
101
+ 用法:
102
+ nao-skill install [dir] [--force] 安装/合并 .agents/ 到目标项目(默认当前目录)
103
+ nao-skill --version 显示版本
104
+ nao-skill --help 显示本帮助
105
+
106
+ 安装内容: 角色卡(prompts/) · 技能(skills/) · 交付清单(checklists/) · 协作协议(common/) ·
107
+ roles.yaml · 工具链(scripts/) · 模板(templates/) · AGENTS.md 生成/合并提示
108
+
109
+ 说明: 目标项目已有同名文件时默认保留(--force 覆盖);AGENTS.md 已存在时按合并规则手动追加。
110
+ `);
111
+ }
112
+
113
+ function statIsDir(p) {
114
+ try { return statSync(p).isDirectory(); } catch { return false; }
115
+ }
116
+
117
+ const args = process.argv.slice(2);
118
+ const cmd = args[0];
119
+
120
+ if (cmd === '--version' || cmd === '-v' || cmd === 'version') {
121
+ console.log(PKG.version);
122
+ } else if (cmd === '--help' || cmd === '-h' || cmd === 'help' || !cmd) {
123
+ help();
124
+ } else if (cmd === 'install' || cmd === 'i') {
125
+ let target = process.cwd();
126
+ let force = false;
127
+ const rest = args.slice(1);
128
+ for (let i = 0; i < rest.length; i++) {
129
+ if (rest[i] === '--force' || rest[i] === '-f') force = true;
130
+ else if (rest[i] === '--target') target = resolve(rest[++i]);
131
+ else if (!rest[i].startsWith('-')) target = resolve(rest[i]);
132
+ else { warn(`未知参数: ${rest[i]}`); process.exit(2); }
133
+ }
134
+ if (!existsSync(target) || !statIsDir(target)) {
135
+ warn(`目标目录无效: ${target}`);
136
+ process.exit(2);
137
+ }
138
+ install(target, force);
139
+ } else {
140
+ warn(`未知命令: ${cmd}(可用: install)`);
141
+ process.exit(2);
142
+ }
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@nathan33/nao-skill",
3
+ "version": "0.1.0",
4
+ "description": "nao 多角色 AI 开发舰队:角色卡 / 技能 / 协作协议 / 工具链,一键接入项目(pi / Claude / 任意 Agent)",
5
+ "type": "module",
6
+ "bin": {
7
+ "nao-skill": "bin/nao-skill.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ ".agents/",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "keywords": [
16
+ "ai",
17
+ "agent",
18
+ "skills",
19
+ "multi-agent",
20
+ "pi",
21
+ "claude",
22
+ "design-system",
23
+ "codegraph"
24
+ ],
25
+ "author": "Nathan Lee",
26
+ "license": "MIT",
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "scripts": {
31
+ "test": "bash .agents/scripts/nao-fleet.sh check",
32
+ "prepack": "bash .agents/scripts/nao-fleet.sh check"
33
+ }
34
+ }