305 lines
6.7 KiB
Markdown
305 lines
6.7 KiB
Markdown
# Верстак — промпты для ИИ-кодера
|
||
|
||
## Постоянный контекст для ИИ-кодера
|
||
|
||
```markdown
|
||
Ты работаешь над проектом “Верстак”.
|
||
|
||
Верстак — local-first рабочий vault для дел, клиентов, проектов, документов, заметок, файлов, действий запуска, журнала работ и синхронизации.
|
||
|
||
Главные принципы:
|
||
- данные принадлежат пользователю;
|
||
- заметки и файлы физически лежат обычными файлами в vault;
|
||
- SQLite хранит индекс, связи, метаданные, FTS и sync state;
|
||
- основная сущность — вложенное дерево nodes;
|
||
- GUI, TUI и CLI должны использовать общий core;
|
||
- бизнес-логику нельзя завязывать на UI;
|
||
- не делать SaaS;
|
||
- не делать ИИ;
|
||
- не делать password manager в MVP;
|
||
- не удалять файлы физически без trash;
|
||
- опасные действия требуют подтверждения;
|
||
- изменения делать маленькими проверяемыми шагами.
|
||
|
||
Стек:
|
||
- Go;
|
||
- SQLite;
|
||
- Wails для GUI;
|
||
- Bubble Tea для TUI позже;
|
||
- fsnotify + snapshot scanner позже;
|
||
- sync server позже.
|
||
|
||
После каждого шага дай:
|
||
1. что изменено;
|
||
2. как запустить;
|
||
3. как проверить;
|
||
4. какие файлы затронуты;
|
||
5. какие риски остались.
|
||
```
|
||
|
||
## Prompt 01 — Skeleton
|
||
|
||
```markdown
|
||
Создай skeleton проекта “Верстак”.
|
||
|
||
Нужно:
|
||
- Go module `verstak`;
|
||
- структура cmd/internal/migrations;
|
||
- CLI `verstak --version`;
|
||
- команда `verstak init --vault ./test-vault`;
|
||
- SQLite connection;
|
||
- migration runner;
|
||
- первая миграция.
|
||
|
||
Acceptance:
|
||
- `go test ./...` проходит;
|
||
- init создаёт vault и `.verstak/index.db`;
|
||
- повторный init безопасен.
|
||
```
|
||
|
||
## Prompt 02 — Nodes
|
||
|
||
```markdown
|
||
Реализуй универсальное дерево nodes.
|
||
|
||
Нужно:
|
||
- tables nodes, node_meta;
|
||
- struct Node;
|
||
- repository: Create/Get/ListChildren/UpdateTitle/Move/SoftDelete;
|
||
- CLI node create/list/move/delete;
|
||
- unit tests.
|
||
|
||
Правила:
|
||
- UUID;
|
||
- deleted_at вместо физического удаления;
|
||
- безопасный slug.
|
||
```
|
||
|
||
## Prompt 03 — Vault files
|
||
|
||
```markdown
|
||
Добавь работу с файлами vault.
|
||
|
||
Нужно:
|
||
- `.verstak/trash`;
|
||
- files table;
|
||
- VaultService;
|
||
- copy file into vault;
|
||
- link external file;
|
||
- open with system app;
|
||
- delete-to-trash;
|
||
- CLI file add/list/open.
|
||
```
|
||
|
||
## Prompt 04 — Markdown notes
|
||
|
||
```markdown
|
||
Добавь Markdown-заметки.
|
||
|
||
Нужно:
|
||
- notes table;
|
||
- note node type;
|
||
- create/read/save note;
|
||
- `.md` file inside vault;
|
||
- backup previous version before overwrite;
|
||
- CLI note create/read/write.
|
||
```
|
||
|
||
## Prompt 05 — Wails GUI MVP
|
||
|
||
```markdown
|
||
Добавь первый Wails GUI.
|
||
|
||
Нужно:
|
||
- sidebar tree;
|
||
- main panel;
|
||
- create node;
|
||
- create note;
|
||
- markdown textarea editor;
|
||
- save note;
|
||
- file list;
|
||
- add file;
|
||
- open file.
|
||
|
||
Главный пользовательский поток:
|
||
1. создать дело;
|
||
2. создать заметку;
|
||
3. сохранить заметку;
|
||
4. добавить файл;
|
||
5. открыть файл системным приложением.
|
||
```
|
||
|
||
## Prompt 06 — Actions
|
||
|
||
```markdown
|
||
Добавь actions-кнопки.
|
||
|
||
Типы:
|
||
- open_url;
|
||
- open_file;
|
||
- open_folder;
|
||
- run_command.
|
||
|
||
Нужно:
|
||
- actions table;
|
||
- action runner;
|
||
- confirm_required;
|
||
- action log;
|
||
- GUI вкладка “Действия”.
|
||
|
||
Команды запускать через exec.Command с аргументами. Опасные действия — только после confirm.
|
||
```
|
||
|
||
## Prompt 07 — Worklog
|
||
|
||
```markdown
|
||
Добавь журнал работ.
|
||
|
||
Нужно:
|
||
- worklog_entries table;
|
||
- add/edit/delete entry;
|
||
- minutes;
|
||
- approximate;
|
||
- billable;
|
||
- GUI вкладка “Журнал”;
|
||
- copy report.
|
||
|
||
Acceptance:
|
||
- можно записать “3ч, обновил витрину”;
|
||
- можно скопировать отчёт.
|
||
```
|
||
|
||
## Prompt 08 — Search
|
||
|
||
```markdown
|
||
Добавь SQLite FTS5 поиск.
|
||
|
||
Индексировать:
|
||
- node titles;
|
||
- note content;
|
||
- filenames;
|
||
- worklog summaries;
|
||
- action titles.
|
||
|
||
Нужно:
|
||
- `verstak index rebuild`;
|
||
- GUI search bar;
|
||
- search results with type/path.
|
||
```
|
||
|
||
## Prompt 09 — DokuWiki import
|
||
|
||
```markdown
|
||
Добавь импорт из DokuWiki.
|
||
|
||
Вход:
|
||
- path to `data/pages`;
|
||
- optional path to `data/media`;
|
||
- target node id.
|
||
|
||
Нужно:
|
||
- namespaces as folders;
|
||
- pages as notes;
|
||
- originals saved in `.verstak/originals/dokuwiki`;
|
||
- basic conversion or raw import.
|
||
```
|
||
|
||
## Prompt 10 — Sync server skeleton
|
||
|
||
```markdown
|
||
Создай `verstak-server`.
|
||
|
||
Нужно:
|
||
- HTTP server;
|
||
- API key auth;
|
||
- SQLite server db;
|
||
- GET /health;
|
||
- POST /sync/push;
|
||
- POST /sync/pull;
|
||
- POST /blobs/upload;
|
||
- GET /blobs/{sha256};
|
||
- blob storage by sha256.
|
||
```
|
||
|
||
## Prompt 11 — Sync client MVP
|
||
|
||
```markdown
|
||
Добавь sync client.
|
||
|
||
Нужно:
|
||
- sync_ops local table;
|
||
- операции при изменениях;
|
||
- config server URL + API key;
|
||
- command `verstak sync`;
|
||
- push local ops;
|
||
- pull remote ops;
|
||
- upload/download blobs;
|
||
- conflict copy if unsure.
|
||
```
|
||
|
||
## Prompt 12 — Activity MVP
|
||
|
||
```markdown
|
||
Добавь минимальный activity tracking.
|
||
|
||
Источники:
|
||
- opened node;
|
||
- edited note;
|
||
- added file;
|
||
- launched action.
|
||
|
||
Нужно:
|
||
- activity_events table;
|
||
- экран “Активность”;
|
||
- группировка по делу;
|
||
- возможность создать worklog из выбранных событий.
|
||
```
|
||
|
||
## Prompt 13 — File scanner/watcher
|
||
|
||
```markdown
|
||
Добавь file scanner и fsnotify watcher.
|
||
|
||
Важно:
|
||
- scanner — источник правды;
|
||
- watcher — ускоритель.
|
||
|
||
Нужно:
|
||
- scan vault tree;
|
||
- detect new/changed/missing files;
|
||
- update index;
|
||
- create activity events;
|
||
- manual command `verstak scan`.
|
||
```
|
||
|
||
## Prompt 14 — TUI MVP
|
||
|
||
```markdown
|
||
Добавь TUI на Bubble Tea.
|
||
|
||
Функции:
|
||
- tree/search;
|
||
- open node;
|
||
- add worklog;
|
||
- run action;
|
||
- sync now.
|
||
|
||
TUI не должен повторять весь GUI.
|
||
```
|
||
|
||
## Prompt 15 — Integrity/restore
|
||
|
||
```markdown
|
||
Добавь команды:
|
||
- `verstak vault check`;
|
||
- `verstak vault repair`;
|
||
- `verstak restore --server <url> --api-key <key> --target <path>`.
|
||
|
||
Проверять:
|
||
- missing files;
|
||
- orphan files;
|
||
- SQLite references;
|
||
- hash mismatch;
|
||
- sync state.
|
||
```
|