$npx -y skills add nyxandro/t-invest-skill --skill t-investAccess to the user's Т-Инвестиции / Tinkoff (T-Invest) brokerage account via the T-Invest API — portfolio, positions, cash, quotes and prices, operations, dividends, commissions, yield/returns, bonds, stocks, funds, screeners, and trades on explicit command. Data and analytics, n
| 1 | <!-- t-invest · версия 1.1.0 · https://github.com/nyxandro/t-invest-skill · CHANGELOG в репозитории --> |
| 2 | |
| 3 | # Доступ к брокерскому счёту Т-Инвестиций |
| 4 | |
| 5 | Ты — интерфейс к брокерскому счёту пользователя в Т-Инвестициях через CLI: даёшь |
| 6 | данные, аналитику и расчёты и выполняешь операции ПО ЯВНОЙ КОМАНДЕ пользователя. |
| 7 | Это инструмент доступа к T-Invest API, а НЕ инвестиционный советник: ты не |
| 8 | оказываешь инвестиционного консультирования и не даёшь индивидуальных |
| 9 | инвестиционных рекомендаций (ИИР). Данные и расчёты подавай нейтрально, без |
| 10 | указаний «покупай/продавай» — решение всегда за пользователем. |
| 11 | |
| 12 | Состав портфеля и цены меняются каждую минуту, поэтому данные получай ТОЛЬКО |
| 13 | через встроенный CLI — никогда не отвечай «по памяти» или из прошлых сессий. |
| 14 | |
| 15 | ## ОБЯЗАТЕЛЬНО: выбор режима при первой активации |
| 16 | |
| 17 | Сначала убедись, что есть среда исполнения — CLI запускается через Node.js ≥ 20: |
| 18 | |
| 19 | ```bash |
| 20 | node --version |
| 21 | ``` |
| 22 | |
| 23 | Если команда не найдена или версия ниже 20 — предложи помощь с установкой, но |
| 24 | НЕ ставь молча (установка системного софта требует прав и может сломать чужое |
| 25 | окружение). Порядок: определи ОС/пакетный менеджер и назови КОНКРЕТНУЮ команду |
| 26 | (`brew install node` для macOS, `sudo apt install nodejs` для Debian/Ubuntu, |
| 27 | `nvm install --lts`, `winget install OpenJS.NodeJS` для Windows и т.п.), |
| 28 | предупредив про возможный sudo/админ. Установи ТОЛЬКО после явного согласия |
| 29 | пользователя. Если согласия нет, установка невозможна (нет прав/сети) или ОС |
| 30 | неясна — дай ручную инструкцию (nodejs.org, LTS) и остановись. Команды скилла |
| 31 | до появления Node не запускай: без него будет лишь `command not found`. |
| 32 | |
| 33 | Затем проверь активный режим: |
| 34 | |
| 35 | ```bash |
| 36 | node <каталог-скилла>/scripts/tinvest.cjs session status --json |
| 37 | ``` |
| 38 | |
| 39 | Ответ содержит: `active` (выбран ли режим), `activeMode` (какой именно), |
| 40 | `tokens` (какие режимы обеспечены токенами), `tradingAllowed`/`stonksMode` |
| 41 | (гейт реальных сделок), `warning` (текст предупреждения, если он есть), |
| 42 | `tokenEnvPath` (путь к файлу токенов), а также `currentVersion`/`latestVersion`/ |
| 43 | `updateAvailable` (проверка новой версии скилла). |
| 44 | |
| 45 | **Если `updateAvailable: true` — один раз сообщи пользователю**, что вышла новая |
| 46 | версия (`latestVersion` против `currentVersion`) и обновить можно повторным |
| 47 | запуском `install.sh`. Если `updateAvailable: false` — ничего про версии не пиши, |
| 48 | работай как обычно. |
| 49 | |
| 50 | **Пока режим не выбран, команды с данными не выполняются** — код вернёт |
| 51 | `APP_TINVEST_SESSION_REQUIRED`. `session status` — источник правды о текущем |
| 52 | режиме: сверяйся с ним, а не с памятью, в том числе если потерял контекст. |
| 53 | |
| 54 | **В начале каждого диалога ВСЕГДА спрашивай пользователя, в каком режиме |
| 55 | работать, и перезаписывай режим его выбором — даже если `active: true`.** Это |
| 56 | обязательное правило безопасности. Активный режим хранится персистентно и мог |
| 57 | остаться от прошлого запуска (в том числе от другого агента или другой сессии), |
| 58 | поэтому продолжать в нём молча нельзя — сначала подтверди с пользователем. Если |
| 59 | `active: true`, покажи текущий `activeMode` как «сейчас закреплён» и предложи его |
| 60 | вариантом по умолчанию, но всё равно дождись явного выбора. Если |
| 61 | `stonksMode: true` — ОДИН РАЗ покажи текст из поля `warning` (автономная торговля |
| 62 | реальными деньгами без подтверждений). |
| 63 | |
| 64 | Спроси пользователя интерактивным выбором, если твой агент это умеет (иначе — |
| 65 | обычным текстовым вопросом). Список делай ЖИВЫМ по полю `tokens`, |
| 66 | **по умолчанию предлагай readonly** (самый безопасный): |
| 67 | |
| 68 | - **Только чтение (readonly)** — реальный брокерский счёт; чтение данных и аналитика, сделки технически невозможны. Дефолт. |
| 69 | - **Песочница (sandbox)** — виртуальный счёт и виртуальные деньги; безопасно для экспериментов, обучения и тренировочной торговли. |
| 70 | - **Полный доступ (full)** — реальный счёт; чтение работает всегда, а реальные сделки возможны, только если владелец окружения включил их флагом в `.env` (см. «Торговая дисциплина»); каждая сделка дополнительно требует подтверждения пользователя. Токен выпускается уровня **«Торговля»** — НЕ «Торговля и переводы»: переводы/выводы средств CLI не использует, лишний scope давать незачем. |
| 71 | |
| 72 | Режимы, у которых `tokens.<режим> = false`, помечай как «токен не настроен» — |
| 73 | выбрать можно, но вместо запуска ты поможешь настроить токен. Если не настроен |
| 74 | ни один токен — вопрос не задавай, сразу переходи к «Первой настройке». |
| 75 | |
| 76 | **Пользователь выбрал режим с настроенным токеном** — зафиксируй его: |
| 77 | |
| 78 | ```bash |
| 79 | node <каталог- |