@dtt_siye/atool 1.3.0 → 1.3.1

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 (28) hide show
  1. package/lib/install-skills.sh +16 -0
  2. package/lib/knowledge-graph.sh +483 -81
  3. package/lib/pre-scan.sh +70 -5
  4. package/package.json +1 -1
  5. package/skills/project-analyze/SKILL.md +34 -15
  6. package/skills/project-analyze/phases/phase2-understand.md +7 -1
  7. package/skills/project-analyze/phases/phase2.5-refine.md +284 -0
  8. package/skills/project-analyze/phases/phase4-synthesize.md +100 -119
  9. package/skills/project-analyze/phases/phase5-export.md +78 -32
  10. package/skills/project-analyze/prompts/understand-agent.md +17 -0
  11. package/skills/project-analyze/rules/android.md +61 -260
  12. package/skills/project-analyze/rules/devops.md +61 -421
  13. package/skills/project-analyze/rules/generic.md +53 -221
  14. package/skills/project-analyze/rules/go.md +60 -275
  15. package/skills/project-analyze/rules/harmony.md +64 -237
  16. package/skills/project-analyze/rules/java.md +47 -485
  17. package/skills/project-analyze/rules/mobile-flutter.md +57 -292
  18. package/skills/project-analyze/rules/mobile-react-native.md +65 -262
  19. package/skills/project-analyze/rules/mobile-swift.md +58 -303
  20. package/skills/project-analyze/rules/python.md +50 -296
  21. package/skills/project-analyze/rules/rust-tauri.md +51 -217
  22. package/skills/project-analyze/rules/rust.md +50 -274
  23. package/skills/project-analyze/rules/web-nextjs.md +61 -335
  24. package/skills/project-analyze/rules/web-react.md +50 -272
  25. package/skills/project-analyze/rules/web-vue.md +58 -352
  26. package/skills/project-analyze/rules/web.md +55 -347
  27. package/skills/requirements-writer/SKILL.md +48 -1
  28. package/skills/software-architecture/SKILL.md +73 -3
@@ -1,283 +1,86 @@
1
1
  # React Native 项目分析规则
2
2
 
3
- ## 分析粒度
3
+ > **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `react-native-conventions` skill 作为规范约束。
4
4
 
5
- Screen、Component、Navigation、Service 分层分析。
5
+ ## 模块发现策略
6
6
 
7
- ```
8
- App.tsx / App.js(入口)
9
-
10
- Navigation(导航)
11
-
12
- Screens(页面)
13
-
14
- Components(组件)
15
-
16
- Hooks / Context(逻辑复用)
17
-
18
- Services / API(数据层)
19
-
20
- Stores / State(状态管理)
21
-
22
- Utils / Types(工具/类型)
23
- ```
24
-
25
- ## 目录扫描策略
26
-
27
- ### 1. 识别项目类型
28
-
29
- **信号文件检测:**
30
- - `app.json` / `app.config.js` → Expo 项目
31
- - `android/app/build.gradle` + `ios/Podfile` → Bare React Native
32
- - `metro.config.js` → Metro bundler 配置
33
-
34
- ### 2. 识别导航方案
35
-
36
- - React Navigation: `@react-navigation/native` 依赖
37
- - Expo Router: `expo-router` 依赖 + `app/` 目录
38
- - Native Stack / Tab / Drawer Navigator
39
- - Deep Linking 配置
40
-
41
- ### 3. 识别状态管理
42
-
43
- - Redux Toolkit: `@reduxjs/toolkit`, `react-redux`
44
- - Zustand: `zustand`
45
- - MobX: `mobx`, `mobx-react`
46
- - Context API: React 内置
47
- - Recoil: `recoil`
48
-
49
- ### 4. 依赖提取
50
-
51
- 从 `package.json` 提取:
52
-
53
- | 类别 | 常见依赖 |
54
- |------|----------|
55
- | 导航 | @react-navigation/native, expo-router |
56
- | 状态管理 | @reduxjs/toolkit, zustand, mobx |
57
- | 网络 | axios, fetch, @tanstack/react-query |
58
- | 存储 | @react-native-async-storage/async-storage, MMKV |
59
- | UI | react-native-paper, native-base, tamagui |
60
- | 动画 | react-native-reanimated, react-native-gesture-handler |
61
- | 图片 | react-native-fast-image, expo-image |
62
- | 原生模块 | 各种 react-native-* bridge 模块 |
63
-
64
- ### 5. 按层扫描路径
65
-
66
- - **Screens**: `src/screens/`, `app/` (Expo Router)
67
- - **Components**: `src/components/`
68
- - **Navigation**: `src/navigation/`
69
- - **Hooks**: `src/hooks/`
70
- - **Services**: `src/services/`, `src/api/`
71
- - **Store**: `src/store/`, `src/stores/`
72
- - **Types**: `src/types/`
73
- - **Utils**: `src/utils/`, `src/constants/`
74
- - **Assets**: `src/assets/`, `assets/`
75
-
76
- ## 各层提取规则
77
-
78
- ### 层 1: Navigation 层
79
-
80
- **扫描文件**: `src/navigation/**/*.tsx`, `app/**/*.tsx` (Expo Router)
81
-
82
- **提取内容**:
83
- - 导航类型(Stack / Tab / Drawer / Bottom Tabs)
84
- - 路由配置(name + component + options)
85
- - 屏幕参数类型定义
86
- - 导航守卫(认证检查)
87
-
88
- **输出示例**:
89
- ```
90
- ### 导航结构(React Navigation)
91
- - **文件**: `src/navigation/AppNavigator.tsx`
92
- - **类型**: Native Stack
93
- - **路由配置**:
94
- | 路由名 | 组件 | 参数类型 | 选项 |
95
- |--------|------|----------|------|
96
- | Login | LoginScreen | - | headerShown: false |
97
- | Main | BottomTabs | - | gestureEnabled: false |
98
- | Home | HomeScreen | - | tabBarIcon: home |
99
- | Profile | ProfileScreen | - | tabBarIcon: person |
100
- | UserDetail | UserDetailScreen | { userId: string } | title: '用户详情' |
101
- | Settings | SettingsScreen | - | - |
102
- - **认证守卫**: AuthProvider 包裹,未登录→Login,已登录→Main
103
- ```
104
-
105
- ### 层 2: Screen 层
106
-
107
- **扫描文件**: `src/screens/**/*.tsx`
108
-
109
- **提取内容**:
110
- - Screen 组件名 + 路径
111
- - Props(Navigation Props + 自定义 Props)
112
- - 使用的 Hooks(useState, useEffect, 自定义 Hook)
113
- - 使用的 API / Store
114
- - UI 结构(主要子组件,1-2 层)
115
-
116
- **输出示例**:
117
- ```
118
- ### HomeScreen
119
- - **路径**: `src/screens/Home/HomeScreen.tsx`
120
- - **Props**: StackScreenProps<HomeParamList, 'Home'>
121
- - **使用的 Hooks**:
122
- | Hook | 用途 |
123
- |------|------|
124
- | useFeedStore | 获取 feed 列表 |
125
- | useRefresh | 下拉刷新 |
126
- | useAuth | 获取当前用户 |
127
- - **使用的 API**: getFeedItems(), getRecommendations()
128
- - **UI 结构**:
129
- FlatList
130
- ├── ListHeaderComponent: SearchBar + Banner
131
- ├── renderItem: FeedCard
132
- └── onRefresh: handleRefresh
133
- ```
7
+ 从 `package.json` 和目录结构识别模块边界:
134
8
 
135
- ### 3: Component
9
+ - `package.json` 解析 `dependencies` / `devDependencies`,识别导航、状态管理、原生模块
10
+ - `src/screens/` / `src/views/` → 每个子目录或文件视为独立页面模块
11
+ - `src/components/{name}/` → 3+ 文件的子目录视为独立组件模块
12
+ - `src/store/` / `src/stores/` → 状态管理模块
13
+ - `src/services/` / `src/api/` → 数据层模块
14
+ - `src/hooks/` → 每个文件视为独立 Hook 模块
15
+ - `app/` (Expo Router) → 基于文件系统的路由,每个文件视为一个页面
136
16
 
137
- **扫描文件**: `src/components/**/*.tsx`
17
+ **不视为独立模块**:`App.tsx` / `index.js`(入口文件)、纯 re-export 的 `index.ts`、`src/utils/` / `src/helpers/` 合并为一个模块、`*.generated.ts` 跳过。
138
18
 
139
- **提取内容**:
140
- - 组件名 + 路径
141
- - Props TypeScript interface
142
- - 样式方案(StyleSheet.create / Styled Components / NativeWind)
143
- - 子组件结构
19
+ ## 入口识别
144
20
 
145
- **输出示例**:
146
- ```
147
- ### FeedCard
148
- - **路径**: `src/components/Feed/FeedCard.tsx`
149
- - **Props**:
150
- ```typescript
151
- interface FeedCardProps {
152
- item: FeedItem;
153
- onPress?: (item: FeedItem) => void;
154
- showActions?: boolean;
155
- }
156
- ```
157
- - **子组件**: Avatar, Text, Image, ActionButtons
158
- - **样式**: StyleSheet.create(内联样式)
159
- ```
21
+ | 类型 | 识别特征 |
22
+ |------|---------|
23
+ | Bare React Native | `android/app/build.gradle` + `ios/Podfile` + `metro.config.js` |
24
+ | Expo Managed | `app.json` / `app.config.js` + `expo` SDK |
25
+ | Expo with Router | `expo-router` 依赖 + `app/` 目录(文件系统路由) |
160
26
 
161
- ### 4: Store / 状态管理层
27
+ App 入口:`App.tsx` / `App.js` Navigation Provider → Root Navigator。
162
28
 
163
- **扫描文件**: `src/store/**/*.ts`, `src/stores/**/*.ts`
29
+ ## 架构模式识别
164
30
 
165
- **提取内容**:
166
- - Store 名称 + 类型
167
- - State 接口
168
- - Actions / Reducers
169
- - 异步 Thunk
31
+ 从 `package.json` 检测导航和状态管理方案:
170
32
 
171
- **输出示例**:
172
- ```
173
- ### feedSlice(Redux Toolkit)
174
- - **路径**: `src/store/slices/feedSlice.ts`
175
- - **State**:
176
- | 字段 | 类型 | 说明 |
177
- |------|------|------|
178
- | items | FeedItem[] | Feed 列表 |
179
- | loading | boolean | 加载状态 |
180
- | error | string \| null | 错误信息 |
181
- | hasMore | boolean | 是否有更多 |
182
- - **Reducers**: appendItems, clearFeed
183
- - **Async Thunks**: fetchFeedItems, loadMore
184
- ```
33
+ | 导航方案 | 识别依赖 |
34
+ |---------|---------|
35
+ | React Navigation | `@react-navigation/native` + Stack/Tab/Drawer |
36
+ | Expo Router | `expo-router`(文件系统路由,`app/` 目录) |
37
+ | React Native Navigation | `react-native-navigation` (Wix) |
185
38
 
186
- ### 5: Service / API 层
39
+ | 状态管理 | 识别依赖 |
40
+ |---------|---------|
41
+ | Redux Toolkit | `@reduxjs/toolkit` + `react-redux` |
42
+ | Zustand | `zustand` |
43
+ | MobX | `mobx` + `mobx-react` / `mobx-react-lite` |
44
+ | Recoil | `recoil` |
45
+ | Context API | 无第三方库,仅 React 内置 |
187
46
 
188
- **扫描文件**: `src/services/**/*.ts`, `src/api/**/*.ts`
47
+ ## 数据流模式
189
48
 
190
- **提取内容**:
191
- - API 客户端配置(baseURL, 拦截器)
192
- - API 函数列表
193
- - Token 管理
49
+ - **Redux Toolkit**:`dispatch(action)` → `reducer` → `store.state` → `useSelector()` 重渲染
50
+ - **Zustand**:`useStore(selector)` `setState()` → 订阅者重渲染(更轻量)
51
+ - **React Query**:`useQuery()` / `useMutation()` → 服务端状态缓存 + 自动同步
52
+ - **原生模块桥接**:JS → `NativeModules.XXX.method()` → 原生代码执行 → Promise/Callback 返回
194
53
 
195
- ### 层 6: Native Module 层(如适用)
54
+ ## 分析关注点
196
55
 
197
- **扫描文件**: `src/native/**/*.ts`, `android/app/src/main/java/**/*Module.kt`, `ios/**/*Bridge.m`
56
+ - **原生模块边界(Native Module Boundary)**:检测 `NativeModules`、`NativeEventEmitter`、`requireNativeComponent`,列出所有 JS ↔ Native 桥接点
57
+ - **导航结构**:React Navigation 需提取完整的 Navigator 嵌套树(Stack/Tab/Drawer 嵌套关系);Expo Router 分析 `app/` 目录文件结构
58
+ - **Bridge 检测**:`android/app/src/main/java/**/*Module.kt` + `ios/**/*Bridge.m` / `*Module.mm`,识别 @ReactMethod 方法
59
+ - **Expo vs Bare 区别**:Expo Managed 不允许自定义原生代码;Bare 可以,需分析原生模块
60
+ - **Metro 配置**:`metro.config.js` 中的 `resolver.extraNodeModules` 可能影响模块别名解析
61
+ - **平台特定文件**:`*.ios.tsx` / `*.android.tsx` 需识别平台差异实现
198
62
 
199
- **提取内容**:
200
- - Native Module 名称
201
- - 导出方法(@ReactMethod)
202
- - 参数类型和返回类型
203
- - 线程配置
63
+ ## 输出示例
204
64
 
205
- **输出示例**:
206
- ```
207
- ### BiometricModule
208
- - **方法**:
209
- | 方法 | 参数 | 返回 | 说明 |
210
- |------|------|------|------|
211
- | authenticate | (reason: string) | Promise<boolean> | 生物识别认证 |
212
- | isAvailable | () | Promise<boolean> | 检查设备支持 |
213
- - **平台**: iOS (TouchID/FaceID), Android (BiometricPrompt)
214
65
  ```
215
-
216
- ### 7: 样式层
217
-
218
- **扫描文件**: `src/theme/**/*.ts`, `src/styles/**/*.ts`
219
-
220
- **提取内容**:
221
- - 主题配置(颜色、字体、间距)
222
- - 样式方案(StyleSheet / Styled Components / NativeWind)
223
- - 暗色模式支持
224
-
225
- ## 输出模板
226
-
227
- ### README.md 章节结构
228
-
229
- ```markdown
230
- # {App 名称}
231
-
232
- ## 项目概述
233
- App 功能描述
234
-
235
- ## 技术栈
236
- | 技术 | 版本 | 用途 |
237
- |------|------|------|
238
-
239
- ## 架构设计
240
- ### 架构图(ASCII)
241
- ### 数据流图
242
-
243
- ## 导航结构
244
- 路由树 + 参数 + 导航方式
245
-
246
- ## 状态管理
247
- Store 关系图
248
-
249
- ## 模块详解
250
- 按 Screen 分组
251
-
252
- ## 原生模块
253
- Bridge 方法列表
254
-
255
- ## 依赖管理
256
- 关键 npm 依赖
66
+ ### 项目类型
67
+ - 类型: Expo Managed (SDK 50)
68
+ - 导航: Expo Router (文件系统路由)
69
+ app/
70
+ (auth)/login.tsx
71
+ (auth)/register.tsx
72
+ (tabs)/index.tsx → 首页
73
+ (tabs)/profile.tsx → 个人中心
74
+ user/[id].tsx → 动态路由
75
+
76
+ ### 技术栈检测
77
+ - 状态管理: Zustand (zustand 4.4.6)
78
+ - 网络: Axios + React Query (@tanstack/react-query 5.0)
79
+ - 原生模块: expo-camera, expo-notifications, react-native-mmkv
80
+
81
+ ### 原生模块边界
82
+ | 模块 | 平台 | JS 调用方式 | 说明 |
83
+ |------|------|------------|------|
84
+ | BiometricModule | iOS + Android | NativeModules.Biometric.authenticate() | 生物识别 |
85
+ | PushNotification | iOS + Android | expo-notifications API | 推送通知 |
257
86
  ```
258
-
259
- ## 模块边界识别
260
-
261
- 以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
262
-
263
- | 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
264
- |----|----------|-------------|---------------------|
265
- | 页面/视图层 | `src/screens/`, `src/views/` | 每个子目录或文件 | 名称 kebab-case |
266
- | API/服务层 | `src/services/`, `src/api/` | 每个子目录 | 目录名 kebab-case |
267
- | 状态管理层 | `src/store/`, `src/stores/` | 每个子目录 | 目录名 kebab-case |
268
- | 组件层 | `src/components/{name}/` | 3+ 文件的子目录 | 目录名 kebab-case |
269
- | Hooks 层 | `src/hooks/` | 每个文件 | 文件名去后缀 kebab-case |
270
-
271
- **不视为独立模块的情况**:
272
- - 单文件入口(如 `App.tsx`, `index.js`)
273
- - 纯导出桶文件(`index.ts` 仅有 re-export)
274
- - 工具函数目录(`src/utils/`, `src/helpers/`)— 合并为一个模块
275
- - 生成文件(`*.generated.ts`)跳过
276
-
277
- ## Token 管理
278
-
279
- - 大模块(>20 文件)拆分为子任务
280
- - 每个子任务分析 ≤10 文件
281
- - `package.json` 分析单独一个子任务
282
- - `android/` 和 `ios/` 原生代码只分析 bridge 文件
283
- - 自动生成的文件(`*.generated.ts`)跳过