From 1d0bf7322277609909f74e8da600b7ef6c069da0 Mon Sep 17 00:00:00 2001 From: Sergei Date: Tue, 13 Jan 2026 12:23:15 -0800 Subject: [PATCH] Add specs, Claude commands, and config updates --- .claude/commands/spec.md | 58 +++++++++++++ CLAUDE.md | 47 ++++++++++ app.json | 14 ++- specs/README.md | 67 +++++++++++++++ specs/templates/bug.md | 41 +++++++++ specs/templates/feature.md | 52 ++++++++++++ specs/templates/task.md | 27 ++++++ .../wellnuo/FEATURE-001-voice-integration.md | 85 +++++++++++++++++++ 8 files changed, 387 insertions(+), 4 deletions(-) create mode 100644 .claude/commands/spec.md create mode 100644 specs/README.md create mode 100644 specs/templates/bug.md create mode 100644 specs/templates/feature.md create mode 100644 specs/templates/task.md create mode 100644 specs/wellnuo/FEATURE-001-voice-integration.md diff --git a/.claude/commands/spec.md b/.claude/commands/spec.md new file mode 100644 index 0000000..f87fe54 --- /dev/null +++ b/.claude/commands/spec.md @@ -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` diff --git a/CLAUDE.md b/CLAUDE.md index 045b9e1..d07a6b1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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) **Методология и подход к качеству кода и тестированию.** diff --git a/app.json b/app.json index 28df652..b1daf4f 100644 --- a/app.json +++ b/app.json @@ -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" } } diff --git a/specs/README.md b/specs/README.md new file mode 100644 index 0000000..35c4396 --- /dev/null +++ b/specs/README.md @@ -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** — любые находки, проблемы, решения diff --git a/specs/templates/bug.md b/specs/templates/bug.md new file mode 100644 index 0000000..2e3fdbf --- /dev/null +++ b/specs/templates/bug.md @@ -0,0 +1,41 @@ +# BUG-XXX: [Краткое описание бага] + +## Status: 🔴 Not Started + + +## 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 diff --git a/specs/templates/feature.md b/specs/templates/feature.md new file mode 100644 index 0000000..4944f85 --- /dev/null +++ b/specs/templates/feature.md @@ -0,0 +1,52 @@ +# FEATURE-XXX: [Название фичи] + +## Status: 🔴 Not Started + + +## Project: wellnuo | wellnuo-lite | shared + + +## Overview + + +## 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 + + +## Implementation Steps + +- [ ] 1. Step one +- [ ] 2. Step two +- [ ] 3. Step three + +## Testing + +- [ ] Manual testing scenario 1 +- [ ] Manual testing scenario 2 + +## Notes + diff --git a/specs/templates/task.md b/specs/templates/task.md new file mode 100644 index 0000000..feb9309 --- /dev/null +++ b/specs/templates/task.md @@ -0,0 +1,27 @@ +# TASK-XXX: [Название задачи] + +## Status: 🔴 Not Started + + +## 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 diff --git a/specs/wellnuo/FEATURE-001-voice-integration.md b/specs/wellnuo/FEATURE-001-voice-integration.md new file mode 100644 index 0000000..584d787 --- /dev/null +++ b/specs/wellnuo/FEATURE-001-voice-integration.md @@ -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)