Add specs, Claude commands, and config updates

This commit is contained in:
Sergei 2026-01-13 12:23:15 -08:00
parent 5c8c3665da
commit 1d0bf73222
8 changed files with 387 additions and 4 deletions

58
.claude/commands/spec.md Normal file
View File

@ -0,0 +1,58 @@
# GitHub Spec Kit Flow
Пользователь хочет работать по методологии GitHub Spec Kit.
## Что это значит
**Spec Kit Flow** — это структурированный подход к задачам:
1. **Сначала спека** — перед кодом создаём документ с планом
2. **Потом реализация** — идём по шагам из спеки
3. **Отмечаем прогресс** — чекбоксы в файле
## Твоя задача сейчас
Скажи пользователю:
---
**Spec Kit Flow активирован.**
Теперь опиши задачу — я создам спеку и пойду по ней.
Примеры:
- "Добавить push-уведомления в WellNuo"
- "Пофиксить баг с логином"
- "Отрефакторить API сервис"
Или если спека уже есть — скажи какая (например "FEATURE-001").
---
## Когда пользователь опишет задачу
1. **Создай спеку** в нужной папке:
- `specs/wellnuo/` — для основного приложения
- `specs/wellnuo-lite/` — для Lite версии
- `specs/shared/` — для backend/API
2. **Заполни спеку**:
- Overview — что и зачем
- Requirements — что должно работать
- Technical Design — как реализовать
- Implementation Steps — пошаговый план
3. **Покажи спеку пользователю** и спроси всё ли ок
4. **Начни реализацию** по Implementation Steps
5. **Отмечай прогресс** — после каждого шага ставь [x] в файле
## Формат имени файла
`{TYPE}-{NUMBER}-{slug}.md`
Примеры:
- `FEATURE-002-push-notifications.md`
- `BUG-001-login-crash.md`
- `TASK-001-refactor-api.md`

View File

@ -210,6 +210,53 @@ ROUTES.BENEFICIARY.SHARE(id) // /(tabs)/beneficiaries/:id/share
IOS_SIMULATOR_UDID=6BB240A2-0F2F-41E4-B568-9FFAF9B7FBA2 npx expo start --port 8081 --ios
```
## Specs (Спецификации задач)
**Структурированные спецификации для планирования и отслеживания задач.**
### Структура
```
specs/
├── wellnuo/ # Основное приложение
├── wellnuo-lite/ # Lite версия
├── shared/ # Общие задачи (backend, API)
└── templates/ # Шаблоны
```
### Типы спек
- `FEATURE-XXX` — новая функциональность
- `BUG-XXX` — исправление бага
- `TASK-XXX` — техническая задача
### Как работать со спеками
**Создать спеку:**
```
Создай спеку для фичи "название" в specs/wellnuo/
```
**Начать работу:**
```
Прочитай specs/wellnuo/FEATURE-001-voice-integration.md и начни реализацию
```
**Продолжить:**
```
Продолжи по спеке FEATURE-001 с шага 3
```
**Обновить статус:**
```
Отметь шаги 1-3 как выполненные в FEATURE-001
```
### Важно
- Спека = план работы. Claude следует шагам из Implementation Steps
- Статусы: 🔴 Not Started | 🟡 In Progress | 🟢 Done
- Подробности в `specs/README.md`
---
## Правила разработки (Development Approach)
**Методология и подход к качеству кода и тестированию.**

View File

@ -14,7 +14,9 @@
"appleTeamId": "UHLZD54ULZ",
"deploymentTarget": "16.0",
"infoPlist": {
"ITSAppUsesNonExemptEncryption": false
"ITSAppUsesNonExemptEncryption": false,
"NSSpeechRecognitionUsageDescription": "Allow $(PRODUCT_NAME) to use speech recognition.",
"NSMicrophoneUsageDescription": "Allow $(PRODUCT_NAME) to use the microphone."
}
},
"android": {
@ -26,7 +28,11 @@
"monochromeImage": "./assets/images/android-icon-monochrome.png"
},
"edgeToEdgeEnabled": true,
"predictiveBackGestureEnabled": false
"predictiveBackGestureEnabled": false,
"permissions": [
"android.permission.RECORD_AUDIO",
"android.permission.MODIFY_AUDIO_SETTINGS"
]
},
"web": {
"output": "static",
@ -72,9 +78,9 @@
"extra": {
"router": {},
"eas": {
"projectId": "b06920f8-cbe7-4d6e-a5c2-5e60e1791d65"
"projectId": "a845255d-c966-4f12-aa60-c452c2d0c60d"
}
},
"owner": "serter2069"
"owner": "serter20692"
}
}

67
specs/README.md Normal file
View File

@ -0,0 +1,67 @@
# WellNuo Specs
Структурированные спецификации для задач проекта.
## Структура
```
specs/
├── wellnuo/ # Основное приложение WellNuo
├── wellnuo-lite/ # WellNuo Lite версия
├── shared/ # Общие задачи (backend, API, инфра)
└── templates/ # Шаблоны для новых спек
```
## Типы спек
| Префикс | Описание | Шаблон |
|---------|----------|--------|
| `FEATURE-XXX` | Новая функциональность | `templates/feature.md` |
| `BUG-XXX` | Исправление бага | `templates/bug.md` |
| `TASK-XXX` | Техническая задача (рефакторинг, настройка) | `templates/task.md` |
## Статусы
- 🔴 **Not Started** — ещё не начато
- 🟡 **In Progress** — в работе
- 🟢 **Done** — завершено
- ⏸️ **On Hold** — приостановлено
## Как использовать с Claude Code
### 1. Создать спеку
```
Создай спеку для фичи "голосовые напоминания" в specs/wellnuo/
```
### 2. Начать работу по спеке
```
Прочитай specs/wellnuo/FEATURE-001-voice-integration.md и начни реализацию
```
### 3. Продолжить работу
```
Продолжи работу по specs/wellnuo/FEATURE-001-voice-integration.md с шага 3
```
### 4. Обновить статус
```
Отметь шаги 1-3 как выполненные в спеке FEATURE-001
```
## Нумерация
- Каждая папка имеет свою нумерацию
- `wellnuo/FEATURE-001`, `wellnuo-lite/FEATURE-001` — это разные спеки
- Номера не переиспользуются (даже после удаления)
## Best Practices
1. **Одна спека = одна задача** — не смешивай несколько фич
2. **Детальные шаги** — чем подробнее, тем лучше Claude понимает
3. **Обновляй статусы** — помогает отслеживать прогресс
4. **Добавляй Notes** — любые находки, проблемы, решения

41
specs/templates/bug.md Normal file
View File

@ -0,0 +1,41 @@
# BUG-XXX: [Краткое описание бага]
## Status: 🔴 Not Started
<!-- 🔴 Not Started | 🟡 In Progress | 🟢 Done -->
## Project: wellnuo | wellnuo-lite | shared
## Priority: 🔴 Critical | 🟠 High | 🟡 Medium | 🟢 Low
## Description
<!-- Что происходит не так -->
## Steps to Reproduce
1. Step 1
2. Step 2
3. Step 3
## Expected Behavior
<!-- Как должно работать -->
## Actual Behavior
<!-- Как работает сейчас -->
## Environment
- Device: iPhone 16 Pro Max / Simulator
- OS: iOS 18.x
- App Version: x.x.x
- Build: xxx
## Screenshots / Logs
<!-- Скриншоты или логи ошибок -->
## Root Cause Analysis
<!-- После исследования: почему это происходит -->
## Fix Steps
- [ ] 1. Fix step
- [ ] 2. Verify fix
- [ ] 3. Test edge cases
## Notes

View File

@ -0,0 +1,52 @@
# FEATURE-XXX: [Название фичи]
## Status: 🔴 Not Started
<!-- 🔴 Not Started | 🟡 In Progress | 🟢 Done | ⏸️ On Hold -->
## Project: wellnuo | wellnuo-lite | shared
<!-- Какой проект затрагивает -->
## Overview
<!-- 2-3 предложения: что это и зачем нужно -->
## User Story
**Как** [роль пользователя]
**Я хочу** [действие]
**Чтобы** [ценность/результат]
## Requirements
<!-- Что должно работать (функциональные требования) -->
- [ ] Requirement 1
- [ ] Requirement 2
- [ ] Requirement 3
## Technical Design
### API Changes (если нужно)
```
POST /api/xxx
GET /api/xxx
```
### Database Changes (если нужно)
<!-- Новые таблицы, поля -->
### Frontend Changes
<!-- Новые экраны, компоненты -->
### Backend Changes
<!-- Новые endpoints, сервисы -->
## Implementation Steps
<!-- Разбей на конкретные шаги. Claude будет следовать этому плану -->
- [ ] 1. Step one
- [ ] 2. Step two
- [ ] 3. Step three
## Testing
<!-- Как проверить что работает -->
- [ ] Manual testing scenario 1
- [ ] Manual testing scenario 2
## Notes
<!-- Дополнительные заметки, ссылки, вопросы -->

27
specs/templates/task.md Normal file
View File

@ -0,0 +1,27 @@
# TASK-XXX: [Название задачи]
## Status: 🔴 Not Started
<!-- 🔴 Not Started | 🟡 In Progress | 🟢 Done -->
## Project: wellnuo | wellnuo-lite | shared
## Type: refactor | chore | docs | config | test
## Description
<!-- Что нужно сделать и зачем -->
## Scope
<!-- Какие файлы/модули затронуты -->
- `path/to/file1`
- `path/to/file2`
## Steps
- [ ] 1. Step one
- [ ] 2. Step two
## Acceptance Criteria
<!-- Когда задача считается выполненной -->
- [ ] Criteria 1
- [ ] Criteria 2
## Notes

View File

@ -0,0 +1,85 @@
# FEATURE-001: Voice Integration (Голосовая интеграция)
## Status: 🔴 Not Started
## Project: wellnuo
## Overview
Интеграция голосового управления и голосовых напоминаний в приложение WellNuo.
Пользователь сможет управлять приложением голосом и получать голосовые уведомления.
## User Story
**Как** пользователь WellNuo
**Я хочу** управлять приложением голосом и получать голосовые напоминания
**Чтобы** было удобнее использовать приложение, особенно для пожилых людей
## Requirements
- [ ] Голосовые команды для навигации
- [ ] Голосовые напоминания о приёме лекарств
- [ ] Text-to-Speech для озвучивания уведомлений
- [ ] Speech-to-Text для голосового ввода
- [ ] Настройки голоса (вкл/выкл, громкость, голос)
## Technical Design
### Libraries
- `expo-speech` — Text-to-Speech
- `expo-av` — Audio recording
- `@react-native-voice/voice` — Speech recognition (или альтернатива)
### API Changes
```
POST /api/voice/settings — сохранить настройки голоса
GET /api/voice/settings — получить настройки
```
### Database Changes
```sql
ALTER TABLE users ADD COLUMN voice_settings JSONB DEFAULT '{}';
-- voice_settings: { enabled: boolean, volume: number, voice: string }
```
### Frontend Changes
- Новый экран: `VoiceSettings` — настройки голоса
- Компонент: `VoiceButton` — кнопка голосового ввода
- Интеграция в: Dashboard, Reminders, Chat
### Backend Changes
- Endpoint для настроек голоса
- Опционально: серверный TTS для push-уведомлений
## Implementation Steps
### Phase 1: Базовая интеграция
- [ ] 1. Установить expo-speech и протестировать TTS
- [ ] 2. Создать VoiceService для управления голосом
- [ ] 3. Добавить экран VoiceSettings в профиль
- [ ] 4. Интегрировать TTS в напоминания
### Phase 2: Speech Recognition
- [ ] 5. Выбрать и установить библиотеку для STT
- [ ] 6. Создать компонент VoiceButton
- [ ] 7. Добавить голосовой ввод в чат
- [ ] 8. Тестирование на устройстве
### Phase 3: Голосовые команды
- [ ] 9. Определить список голосовых команд
- [ ] 10. Реализовать распознавание команд
- [ ] 11. Интегрировать в навигацию
- [ ] 12. Полное тестирование
## Testing
- [ ] TTS работает на iOS симуляторе
- [ ] TTS работает на реальном устройстве
- [ ] STT корректно распознаёт русскую речь
- [ ] Настройки сохраняются и применяются
- [ ] Голосовые команды работают корректно
## Notes
- Для STT на iOS может потребоваться разрешение на микрофон
- Русский язык должен поддерживаться
- Учесть offline режим (expo-speech работает offline)
## References
- [expo-speech docs](https://docs.expo.dev/versions/latest/sdk/speech/)
- [React Native Voice](https://github.com/react-native-voice/voice)