diffray 0.1.3 → 0.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.
- package/README.md +659 -259
- package/dist/defaults/agents/api-design.md +31 -0
- package/dist/defaults/agents/bug-hunter.md +0 -1
- package/dist/defaults/agents/consistency-check.md +27 -0
- package/dist/defaults/agents/data-privacy.md +30 -0
- package/dist/defaults/agents/database.md +30 -0
- package/dist/defaults/agents/general.md +0 -1
- package/dist/defaults/agents/i18n.md +29 -0
- package/dist/defaults/agents/observability.md +30 -0
- package/dist/defaults/agents/performance-check.md +0 -1
- package/dist/defaults/agents/security-scan.md +0 -1
- package/dist/defaults/agents/validation.md +0 -1
- package/dist/defaults/prompts/INDEX.md +178 -0
- package/dist/defaults/prompts/README.md +173 -0
- package/dist/defaults/prompts/SUMMARY.md +276 -0
- package/dist/defaults/prompts/USAGE.md +277 -0
- package/dist/defaults/prompts/api-design.md +119 -0
- package/dist/defaults/prompts/data-privacy.md +144 -0
- package/dist/defaults/prompts/database.md +105 -0
- package/dist/defaults/prompts/i18n.md +89 -0
- package/dist/defaults/prompts/observability.md +142 -0
- package/dist/defaults/rules/code-consistency.md +74 -0
- package/dist/diffray.cjs +354 -0
- package/package.json +29 -13
- package/src/defaults/agents/bug-hunter.md +0 -1
- package/src/defaults/agents/consistency-check.md +27 -0
- package/src/defaults/agents/general.md +0 -1
- package/src/defaults/agents/performance-check.md +0 -1
- package/src/defaults/agents/security-scan.md +0 -1
- package/src/defaults/agents/validation.md +0 -1
- package/src/defaults/rules/code-consistency.md +74 -0
- package/dist/diffray.js +0 -338
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Prompts Summary
|
|
2
|
+
|
|
3
|
+
Полная сводка всех промптов в системе diffray.
|
|
4
|
+
|
|
5
|
+
## 📊 Статистика
|
|
6
|
+
|
|
7
|
+
- **Всего промптов**: 7
|
|
8
|
+
- **Автоматических**: 1 (`output-format.md`)
|
|
9
|
+
- **Специализированных**: 6
|
|
10
|
+
- **Документация**: 2 файла (README.md, INDEX.md)
|
|
11
|
+
- **Общий размер**: ~35KB
|
|
12
|
+
- **Строк кода**: ~1012
|
|
13
|
+
|
|
14
|
+
## 🔄 Автоматические промпты
|
|
15
|
+
|
|
16
|
+
### `output-format.md` ⚙️
|
|
17
|
+
**Статус**: Автоматически добавляется ко всем агентам
|
|
18
|
+
**Размер**: 2.3KB
|
|
19
|
+
**Использование**: Через `loadOutputFormat()` в `executors/utils.ts`
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Автоматически добавляется к каждому агенту
|
|
23
|
+
const format = await loadOutputFormat();
|
|
24
|
+
const fullPrompt = buildPrompt(systemPrompt, input, format);
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Содержит**:
|
|
28
|
+
- JSON структуру вывода
|
|
29
|
+
- Описание полей (file, lineStart, lineEnd, severity, category)
|
|
30
|
+
- Критические требования к формату
|
|
31
|
+
- Примеры правильного вывода
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ✅ Специализированные промпты
|
|
36
|
+
|
|
37
|
+
### 1. `validation.md`
|
|
38
|
+
**Статус**: Используется агентом валидации
|
|
39
|
+
**Размер**: 6.7KB
|
|
40
|
+
**Агент**: `validation.md` в `src/defaults/agents/`
|
|
41
|
+
|
|
42
|
+
**Назначение**: Фильтрация ложных срабатываний и валидация найденных проблем
|
|
43
|
+
|
|
44
|
+
**Ключевые разделы**:
|
|
45
|
+
- Процесс верификации (обязательное использование Read tool)
|
|
46
|
+
- Критерии сохранения (реальные, проверенные проблемы)
|
|
47
|
+
- Критерии фильтрации (ложные срабатывания, шум, спекуляции)
|
|
48
|
+
- Распознавание намеренных trade-offs
|
|
49
|
+
- Примеры паттернов фильтрации
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 2. `i18n.md` 🌍
|
|
54
|
+
**Статус**: Используется агентом i18n
|
|
55
|
+
**Размер**: 2.8KB
|
|
56
|
+
**Агент**: `i18n.md` в `src/defaults/agents/`
|
|
57
|
+
|
|
58
|
+
**Назначение**: Проверка интернационализации кода
|
|
59
|
+
|
|
60
|
+
**Фокус**:
|
|
61
|
+
- Hardcoded строки
|
|
62
|
+
- Отсутствующие ключи переводов
|
|
63
|
+
- Проблемы с форматами локалей (даты, числа, валюта)
|
|
64
|
+
- Поддержка RTL (справа налево)
|
|
65
|
+
- Проблемы конкатенации строк
|
|
66
|
+
- Проблемы файлов переводов
|
|
67
|
+
|
|
68
|
+
**Примеры проблем**:
|
|
69
|
+
```typescript
|
|
70
|
+
// ❌ Плохо
|
|
71
|
+
<button>Submit</button>
|
|
72
|
+
|
|
73
|
+
// ✅ Хорошо
|
|
74
|
+
<button>{t('submit')}</button>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### 3. `database.md` 🗄️
|
|
80
|
+
**Статус**: Используется агентом database
|
|
81
|
+
**Размер**: 3.3KB
|
|
82
|
+
**Агент**: `database.md` в `src/defaults/agents/`
|
|
83
|
+
|
|
84
|
+
**Назначение**: Проверка работы с базами данных и ORM
|
|
85
|
+
|
|
86
|
+
**Фокус**:
|
|
87
|
+
- N+1 проблемы запросов
|
|
88
|
+
- Отсутствующие индексы
|
|
89
|
+
- Проблемы миграций
|
|
90
|
+
- Производительность запросов
|
|
91
|
+
- Риски deadlock
|
|
92
|
+
- Целостность данных
|
|
93
|
+
- ORM-специфичные проблемы
|
|
94
|
+
|
|
95
|
+
**Примеры проблем**:
|
|
96
|
+
```typescript
|
|
97
|
+
// ❌ Плохо - N+1 запросы
|
|
98
|
+
users.forEach(user => {
|
|
99
|
+
const posts = db.query('SELECT * FROM posts WHERE user_id = ?', [user.id])
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
// ✅ Хорошо - Один запрос с JOIN
|
|
103
|
+
const usersWithPosts = db.query('SELECT * FROM users JOIN posts ON users.id = posts.user_id')
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### 4. `api-design.md` 🔌
|
|
109
|
+
**Статус**: Используется агентом api-design
|
|
110
|
+
**Размер**: 3.6KB
|
|
111
|
+
**Агент**: `api-design.md` в `src/defaults/agents/`
|
|
112
|
+
|
|
113
|
+
**Назначение**: Проверка дизайна REST/GraphQL API
|
|
114
|
+
|
|
115
|
+
**Фокус**:
|
|
116
|
+
- Неправильное использование HTTP методов
|
|
117
|
+
- Соглашения по именованию
|
|
118
|
+
- Форматы ответов об ошибках
|
|
119
|
+
- Пагинация
|
|
120
|
+
- Версионирование
|
|
121
|
+
- Дизайн запросов/ответов
|
|
122
|
+
- Rate limiting и безопасность
|
|
123
|
+
- GraphQL-специфичные проблемы
|
|
124
|
+
|
|
125
|
+
**Примеры проблем**:
|
|
126
|
+
```typescript
|
|
127
|
+
// ❌ Плохо - POST для чтения
|
|
128
|
+
POST /api/getUsers
|
|
129
|
+
|
|
130
|
+
// ✅ Хорошо - GET для чтения
|
|
131
|
+
GET /api/users
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
### 5. `observability.md` 📊
|
|
137
|
+
**Статус**: Используется агентом observability
|
|
138
|
+
**Размер**: 3.8KB
|
|
139
|
+
**Агент**: `observability.md` в `src/defaults/agents/`
|
|
140
|
+
|
|
141
|
+
**Назначение**: Проверка логирования, мониторинга и отслеживания ошибок
|
|
142
|
+
|
|
143
|
+
**Фокус**:
|
|
144
|
+
- Отсутствующее логирование
|
|
145
|
+
- Неструктурированное логирование
|
|
146
|
+
- Отсутствующий контекст (request_id, trace_id)
|
|
147
|
+
- Отслеживание ошибок
|
|
148
|
+
- Метрики и мониторинг
|
|
149
|
+
- Безопасность и приватность в логах
|
|
150
|
+
- Распределенный трейсинг
|
|
151
|
+
|
|
152
|
+
**Примеры проблем**:
|
|
153
|
+
```typescript
|
|
154
|
+
// ❌ Плохо - Тихая обработка ошибок
|
|
155
|
+
try {
|
|
156
|
+
await processPayment()
|
|
157
|
+
} catch (error) {
|
|
158
|
+
// Ничего не логируется!
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ✅ Хорошо - Логирование с контекстом
|
|
162
|
+
try {
|
|
163
|
+
await processPayment()
|
|
164
|
+
} catch (error) {
|
|
165
|
+
logger.error('Payment processing failed', {
|
|
166
|
+
error,
|
|
167
|
+
request_id: ctx.requestId,
|
|
168
|
+
user_id: ctx.userId
|
|
169
|
+
})
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### 6. `data-privacy.md` 🔒
|
|
176
|
+
**Статус**: Используется агентом data-privacy
|
|
177
|
+
**Размер**: 4.4KB
|
|
178
|
+
**Агент**: `data-privacy.md` в `src/defaults/agents/`
|
|
179
|
+
|
|
180
|
+
**Назначение**: Проверка обработки персональных данных и соответствия GDPR
|
|
181
|
+
|
|
182
|
+
**Фокус**:
|
|
183
|
+
- Раскрытие PII
|
|
184
|
+
- Отсутствующие проверки согласия
|
|
185
|
+
- Хранение данных
|
|
186
|
+
- Шифрование и хранение
|
|
187
|
+
- Доступ к данным и портируемость
|
|
188
|
+
- Обмен данными с третьими лицами
|
|
189
|
+
- Минимизация данных
|
|
190
|
+
|
|
191
|
+
**Примеры проблем**:
|
|
192
|
+
```typescript
|
|
193
|
+
// ❌ Плохо - PII в логах без маскировки
|
|
194
|
+
logger.info('User signed up', { email: user.email })
|
|
195
|
+
|
|
196
|
+
// ✅ Хорошо - Email замаскирован
|
|
197
|
+
logger.info('User signed up', {
|
|
198
|
+
email: maskEmail(user.email),
|
|
199
|
+
user_id: user.id
|
|
200
|
+
})
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 📚 Документация
|
|
206
|
+
|
|
207
|
+
### `README.md` (4.2KB)
|
|
208
|
+
Полная документация по использованию промптов:
|
|
209
|
+
- Описание всех промптов
|
|
210
|
+
- Инструкции по использованию
|
|
211
|
+
- Примеры создания новых промптов
|
|
212
|
+
- Best practices
|
|
213
|
+
|
|
214
|
+
### `INDEX.md` (3.8KB)
|
|
215
|
+
Быстрая справка по всем промптам:
|
|
216
|
+
- Краткое описание каждого промпта
|
|
217
|
+
- Статистика по строкам
|
|
218
|
+
- Паттерны использования
|
|
219
|
+
- Связанная документация
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 🔗 Связи промптов и агентов
|
|
224
|
+
|
|
225
|
+
| Промпт | Агент | Статус |
|
|
226
|
+
|--------|-------|--------|
|
|
227
|
+
| `output-format.md` | Все агенты | Автоматически |
|
|
228
|
+
| `validation.md` | `validation` | Используется |
|
|
229
|
+
| `i18n.md` | `i18n` | Используется |
|
|
230
|
+
| `database.md` | `database` | Используется |
|
|
231
|
+
| `api-design.md` | `api-design` | Используется |
|
|
232
|
+
| `observability.md` | `observability` | Используется |
|
|
233
|
+
| `data-privacy.md` | `data-privacy` | Используется |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 🚀 Использование
|
|
238
|
+
|
|
239
|
+
### Автоматическое включение
|
|
240
|
+
`output-format.md` автоматически добавляется ко всем агентам через `loadOutputFormat()`.
|
|
241
|
+
|
|
242
|
+
### Ручное включение
|
|
243
|
+
Агенты могут ссылаться на специализированные промпты в своих markdown файлах:
|
|
244
|
+
|
|
245
|
+
```markdown
|
|
246
|
+
---
|
|
247
|
+
name: my-agent
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
You are a database reviewer.
|
|
251
|
+
|
|
252
|
+
See ../prompts/database.md for detailed guidelines.
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 📝 Создание новых промптов
|
|
258
|
+
|
|
259
|
+
1. Создайте файл в `src/defaults/prompts/`
|
|
260
|
+
2. Добавьте структуру:
|
|
261
|
+
- Mission statement
|
|
262
|
+
- Focus areas
|
|
263
|
+
- Quality standards
|
|
264
|
+
- Instructions
|
|
265
|
+
- Examples
|
|
266
|
+
3. Создайте соответствующий агент в `src/defaults/agents/`
|
|
267
|
+
4. Обновите документацию (README.md, INDEX.md)
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## 📖 Связанные файлы
|
|
272
|
+
|
|
273
|
+
- **Агенты**: `src/defaults/agents/`
|
|
274
|
+
- **Загрузка промптов**: `src/executors/utils.ts`
|
|
275
|
+
- **Документация агентов**: `docs/AGENTS.md`
|
|
276
|
+
- **Архитектура**: `docs/ARCHITECTURE.md`
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Использование промптов - Практические примеры
|
|
2
|
+
|
|
3
|
+
Практическое руководство по использованию промптов в diffray.
|
|
4
|
+
|
|
5
|
+
## 🔄 Как промпты загружаются и используются
|
|
6
|
+
|
|
7
|
+
### Автоматическое включение (output-format.md)
|
|
8
|
+
|
|
9
|
+
Промпт `output-format.md` автоматически добавляется ко всем агентам:
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// В executors/utils.ts
|
|
13
|
+
export async function loadOutputFormat(): Promise<string> {
|
|
14
|
+
return getCached(CACHE_KEYS.OUTPUT_FORMAT, async () => {
|
|
15
|
+
try {
|
|
16
|
+
const formatPath = getDefaultPath('prompts', 'output-format.md');
|
|
17
|
+
return await readFile(formatPath, 'utf-8');
|
|
18
|
+
} catch {
|
|
19
|
+
return DEFAULT_OUTPUT_FORMAT; // Fallback
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Использование в executors/cli.ts
|
|
25
|
+
const format = await loadOutputFormat();
|
|
26
|
+
const fullPrompt = buildPrompt(systemPrompt, ctx.input, format);
|
|
27
|
+
// Результат: systemPrompt + "\n\n# Input:\n" + input + "\n\n" + format
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Что происходит**:
|
|
31
|
+
1. `loadOutputFormat()` загружает `output-format.md`
|
|
32
|
+
2. `buildPrompt()` объединяет systemPrompt агента + input (диффы) + format
|
|
33
|
+
3. Итоговый промпт отправляется в LLM
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 📝 Использование специализированных промптов
|
|
38
|
+
|
|
39
|
+
### Вариант 1: Прямое включение в агента
|
|
40
|
+
|
|
41
|
+
Агент может включать содержимое промпта напрямую:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
---
|
|
45
|
+
name: i18n
|
|
46
|
+
description: Checks for internationalization issues
|
|
47
|
+
enabled: true
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
You are an internationalization specialist reviewing code for i18n issues.
|
|
51
|
+
|
|
52
|
+
**Focus Areas**:
|
|
53
|
+
- Hardcoded strings
|
|
54
|
+
- Missing translation keys
|
|
55
|
+
- Locale format issues
|
|
56
|
+
- RTL support
|
|
57
|
+
|
|
58
|
+
[Содержимое из prompts/i18n.md можно включить здесь]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Вариант 2: Ссылка на промпт
|
|
62
|
+
|
|
63
|
+
Агент может ссылаться на промпт:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
---
|
|
67
|
+
name: database
|
|
68
|
+
description: Detects database issues
|
|
69
|
+
enabled: true
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
You are a database specialist.
|
|
73
|
+
|
|
74
|
+
See ../prompts/database.md for detailed review guidelines.
|
|
75
|
+
|
|
76
|
+
Focus on:
|
|
77
|
+
- N+1 queries
|
|
78
|
+
- Missing indexes
|
|
79
|
+
- Migration safety
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Вариант 3: Комбинирование промптов
|
|
83
|
+
|
|
84
|
+
Агент может комбинировать несколько промптов:
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
---
|
|
88
|
+
name: full-stack-reviewer
|
|
89
|
+
description: Comprehensive code review
|
|
90
|
+
enabled: true
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
You are a full-stack code reviewer.
|
|
94
|
+
|
|
95
|
+
**Database Review**: See ../prompts/database.md
|
|
96
|
+
**API Design**: See ../prompts/api-design.md
|
|
97
|
+
**Observability**: See ../prompts/observability.md
|
|
98
|
+
|
|
99
|
+
Review code for issues in all these areas.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🎯 Примеры использования
|
|
105
|
+
|
|
106
|
+
### Пример 1: Агент с автоматическим форматом
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
// Агент: bug-hunter.md
|
|
110
|
+
// System prompt: "You are a bug detection specialist..."
|
|
111
|
+
// Input: Git diffs
|
|
112
|
+
// Format: Автоматически добавляется из output-format.md
|
|
113
|
+
|
|
114
|
+
// Итоговый промпт:
|
|
115
|
+
const finalPrompt = `
|
|
116
|
+
You are a bug detection specialist focused on identifying logic errors.
|
|
117
|
+
|
|
118
|
+
# Input:
|
|
119
|
+
File: src/utils.ts
|
|
120
|
+
+ function processData(data) {
|
|
121
|
+
+ return data.map(item => item.value);
|
|
122
|
+
+ }
|
|
123
|
+
|
|
124
|
+
# Output Format
|
|
125
|
+
Return your findings as a JSON array wrapped in <json>...</json> XML tags:
|
|
126
|
+
...
|
|
127
|
+
`;
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Пример 2: Агент валидации
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// Агент: validation.md
|
|
134
|
+
// Использует промпт validation.md напрямую
|
|
135
|
+
// Stage: validation (отдельный этап)
|
|
136
|
+
|
|
137
|
+
const validationPrompt = `
|
|
138
|
+
You are a strict code review validation agent.
|
|
139
|
+
Your task is to validate issues found by other agents...
|
|
140
|
+
|
|
141
|
+
[Содержимое из prompts/validation.md]
|
|
142
|
+
`;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Пример 3: Специализированный агент
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// Агент: database.md
|
|
149
|
+
// System prompt включает фокус на базы данных
|
|
150
|
+
// Format: Автоматически добавляется
|
|
151
|
+
|
|
152
|
+
const databasePrompt = `
|
|
153
|
+
You are a database specialist reviewing code for SQL/ORM issues.
|
|
154
|
+
|
|
155
|
+
**Focus Areas**:
|
|
156
|
+
- N+1 query problems
|
|
157
|
+
- Missing indexes
|
|
158
|
+
- Migration issues
|
|
159
|
+
...
|
|
160
|
+
|
|
161
|
+
# Input:
|
|
162
|
+
[Git diffs с изменениями в database коде]
|
|
163
|
+
|
|
164
|
+
# Output Format
|
|
165
|
+
[Автоматически из output-format.md]
|
|
166
|
+
`;
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 🔧 Создание нового промпта и агента
|
|
172
|
+
|
|
173
|
+
### Шаг 1: Создать промпт
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Создать файл промпта
|
|
177
|
+
touch src/defaults/prompts/my-domain.md
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
# My Domain Review Prompt
|
|
182
|
+
|
|
183
|
+
You are a specialist reviewing code for [domain] issues.
|
|
184
|
+
|
|
185
|
+
## Your Mission
|
|
186
|
+
Identify [specific problems] that will cause [impact].
|
|
187
|
+
|
|
188
|
+
## Focus Areas
|
|
189
|
+
- Area 1: Description
|
|
190
|
+
- Area 2: Description
|
|
191
|
+
|
|
192
|
+
## Quality Standards
|
|
193
|
+
- Only flag issues with actual impact
|
|
194
|
+
- Verify before reporting
|
|
195
|
+
- Be concise and actionable
|
|
196
|
+
|
|
197
|
+
## Instructions
|
|
198
|
+
- Provide specific examples
|
|
199
|
+
- Suggest concrete fixes
|
|
200
|
+
- Only report real problems
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Шаг 2: Создать агента
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Создать файл агента
|
|
207
|
+
touch src/defaults/agents/my-domain.md
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
---
|
|
212
|
+
name: my-domain
|
|
213
|
+
description: Reviews code for [domain] issues
|
|
214
|
+
enabled: true
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
You are a [domain] specialist reviewing code.
|
|
218
|
+
|
|
219
|
+
**Focus Areas**:
|
|
220
|
+
- [Area 1]
|
|
221
|
+
- [Area 2]
|
|
222
|
+
|
|
223
|
+
[Можно включить содержимое из prompts/my-domain.md или ссылаться на него]
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Шаг 3: Обновить документацию
|
|
227
|
+
|
|
228
|
+
Обновите `README.md`, `INDEX.md`, и `SUMMARY.md` с информацией о новом промпте.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 📊 Структура промпта
|
|
233
|
+
|
|
234
|
+
Рекомендуемая структура промпта:
|
|
235
|
+
|
|
236
|
+
```markdown
|
|
237
|
+
# [Domain] Review Prompt
|
|
238
|
+
|
|
239
|
+
## Your Mission
|
|
240
|
+
[Четкое описание цели]
|
|
241
|
+
|
|
242
|
+
## Focus Areas
|
|
243
|
+
### 1. [Area 1]
|
|
244
|
+
- [Подпункты]
|
|
245
|
+
|
|
246
|
+
### 2. [Area 2]
|
|
247
|
+
- [Подпункты]
|
|
248
|
+
|
|
249
|
+
## Quality Standards
|
|
250
|
+
- [Критерии качества]
|
|
251
|
+
|
|
252
|
+
## Instructions
|
|
253
|
+
- [Инструкции по использованию]
|
|
254
|
+
|
|
255
|
+
## Examples of Issues to Report
|
|
256
|
+
✅ **Report**: [Пример проблемы]
|
|
257
|
+
❌ **Don't Report**: [Пример того, что не нужно флажить]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 🚀 Best Practices
|
|
263
|
+
|
|
264
|
+
1. **Будьте конкретны**: Четкие инструкции дают лучшие результаты
|
|
265
|
+
2. **Приводите примеры**: Показывайте, что флажить, а что нет
|
|
266
|
+
3. **Фокус на impact**: Только реальные проблемы, не микро-оптимизации
|
|
267
|
+
4. **Обновляйте регулярно**: Улучшайте промпты на основе реального использования
|
|
268
|
+
5. **Документируйте**: Обновляйте README при создании новых промптов
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 🔗 Связанные файлы
|
|
273
|
+
|
|
274
|
+
- **Загрузка промптов**: `src/executors/utils.ts` → `loadOutputFormat()`
|
|
275
|
+
- **Использование**: `src/executors/cli.ts` → `buildPrompt()`
|
|
276
|
+
- **Агенты**: `src/defaults/agents/` - Агенты, использующие промпты
|
|
277
|
+
- **Документация**: `README.md`, `INDEX.md`, `SUMMARY.md`
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# API Design Review Prompt
|
|
2
|
+
|
|
3
|
+
You are an API design specialist reviewing REST/GraphQL API endpoints for design issues, naming inconsistencies, and best practices violations.
|
|
4
|
+
|
|
5
|
+
## Your Mission
|
|
6
|
+
|
|
7
|
+
Identify API design flaws, inconsistent naming conventions, missing error formats, pagination issues, and versioning problems that will cause integration difficulties or scalability issues.
|
|
8
|
+
|
|
9
|
+
## Focus Areas
|
|
10
|
+
|
|
11
|
+
### 1. **HTTP Method Misuse**
|
|
12
|
+
- Using POST for read operations (should be GET)
|
|
13
|
+
- Using GET for state-changing operations (should be POST/PUT/DELETE)
|
|
14
|
+
- Missing proper HTTP status codes
|
|
15
|
+
- Using wrong status codes (200 for errors, etc.)
|
|
16
|
+
|
|
17
|
+
### 2. **Naming Conventions**
|
|
18
|
+
- Inconsistent endpoint naming (camelCase vs snake_case vs kebab-case)
|
|
19
|
+
- Non-RESTful resource names (e.g., `/getUsers` instead of `/users`)
|
|
20
|
+
- Verbs in URLs (should use HTTP methods)
|
|
21
|
+
- Plural vs singular inconsistencies
|
|
22
|
+
|
|
23
|
+
### 3. **Error Response Format**
|
|
24
|
+
- Missing consistent error response structure
|
|
25
|
+
- Error responses without error codes
|
|
26
|
+
- Missing error details or context
|
|
27
|
+
- Inconsistent error format across endpoints
|
|
28
|
+
|
|
29
|
+
### 4. **Pagination**
|
|
30
|
+
- Endpoints returning unbounded lists (missing pagination)
|
|
31
|
+
- Inconsistent pagination parameters across endpoints
|
|
32
|
+
- Missing total count or has_more indicators
|
|
33
|
+
- Inefficient pagination (offset-based for large datasets)
|
|
34
|
+
|
|
35
|
+
### 5. **Versioning**
|
|
36
|
+
- Missing API versioning strategy
|
|
37
|
+
- Breaking changes without version bump
|
|
38
|
+
- Inconsistent versioning format (v1 vs v1.0 vs 1.0)
|
|
39
|
+
|
|
40
|
+
### 6. **Request/Response Design**
|
|
41
|
+
- Missing request validation
|
|
42
|
+
- Returning too much data (over-fetching)
|
|
43
|
+
- Missing fields that clients need (under-fetching)
|
|
44
|
+
- Inconsistent field naming across endpoints
|
|
45
|
+
|
|
46
|
+
### 7. **Rate Limiting & Security**
|
|
47
|
+
- Missing rate limiting headers
|
|
48
|
+
- No authentication/authorization checks
|
|
49
|
+
- Sensitive data in URLs (should be in body/headers)
|
|
50
|
+
- Missing CORS configuration
|
|
51
|
+
|
|
52
|
+
### 8. **GraphQL-Specific Issues**
|
|
53
|
+
- N+1 query problems in resolvers
|
|
54
|
+
- Missing query complexity limits
|
|
55
|
+
- Over-fetching due to missing field selection
|
|
56
|
+
- Missing error handling in resolvers
|
|
57
|
+
|
|
58
|
+
## Quality Standards
|
|
59
|
+
|
|
60
|
+
- Only flag issues with actual API design impact
|
|
61
|
+
- Distinguish between acceptable patterns and violations
|
|
62
|
+
- Check if framework conventions are being followed
|
|
63
|
+
- Verify the issue will cause real integration problems
|
|
64
|
+
|
|
65
|
+
## Instructions
|
|
66
|
+
|
|
67
|
+
- Be concise and actionable
|
|
68
|
+
- Provide specific examples of the problematic pattern
|
|
69
|
+
- Suggest concrete fixes (rename endpoint, add pagination, etc.)
|
|
70
|
+
- Only report issues that will cause real API design problems
|
|
71
|
+
|
|
72
|
+
## Examples of Issues to Report
|
|
73
|
+
|
|
74
|
+
✅ **Report**: Wrong HTTP method
|
|
75
|
+
```typescript
|
|
76
|
+
// ❌ Bad - POST for read operation
|
|
77
|
+
POST /api/getUsers
|
|
78
|
+
|
|
79
|
+
// ✅ Good - GET for read operation
|
|
80
|
+
GET /api/users
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
✅ **Report**: Missing pagination
|
|
84
|
+
```typescript
|
|
85
|
+
// ❌ Bad - Unbounded list
|
|
86
|
+
GET /api/users
|
|
87
|
+
// Returns all users (could be millions)
|
|
88
|
+
|
|
89
|
+
// ✅ Good - Paginated
|
|
90
|
+
GET /api/users?page=1&limit=20
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
✅ **Report**: Inconsistent error format
|
|
94
|
+
```typescript
|
|
95
|
+
// ❌ Bad - Inconsistent formats
|
|
96
|
+
{ error: "Not found" } // Endpoint 1
|
|
97
|
+
{ message: "User not found" } // Endpoint 2
|
|
98
|
+
{ code: 404, details: "..." } // Endpoint 3
|
|
99
|
+
|
|
100
|
+
// ✅ Good - Consistent format
|
|
101
|
+
{ error: { code: "NOT_FOUND", message: "User not found" } }
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
✅ **Report**: Non-RESTful naming
|
|
105
|
+
```typescript
|
|
106
|
+
// ❌ Bad - Verbs in URL
|
|
107
|
+
POST /api/createUser
|
|
108
|
+
POST /api/deleteUser
|
|
109
|
+
|
|
110
|
+
// ✅ Good - RESTful resources
|
|
111
|
+
POST /api/users
|
|
112
|
+
DELETE /api/users/:id
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
❌ **Don't Report**: Framework-specific conventions that are acceptable
|
|
116
|
+
```typescript
|
|
117
|
+
// OK - Framework convention (e.g., Next.js API routes)
|
|
118
|
+
POST /api/users/create // If framework expects this pattern
|
|
119
|
+
```
|