ios-logos-tweak — скилл
Скилл учит агента писать твики для iOS на Theos и Logos: хуки директивами %hook, проверки версии iOS и вызовы через скобки.
- 105 ★ репозитория
- Последний коммит
- MIT
Минимальный доступ
Почему такой уровень
- Только инструкции для агента: ничего не запускает и не выходит в сеть.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/ios-logos-tweakОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемМинимальный доступИнструмент ничего не запускает и не ходит в сеть.
- Только инструкции для агента: ничего не запускает и не выходит в сеть.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Скилл задает правила работы с Theos и Logos при написании твиков для iOS. Хуки живут в файлах `.x`, а `.xm` нужен только там, где есть C++ или `MSHookIvar`. Логику выражают директивами `%hook`, `%hookf`, `%new`, `%orig` и `%init`, а `MSHookMessageEx` и регистрацию классов порождает сам Logos. Скилл различает проверки прошивки через `IS_IOS_OR_NEWER`, `@available` и `respondsToSelector`, советует отправку сообщений в скобках и выносит сравнение с ручными вызовами `MSHook*` в `reference.md`. Подходит для Claude Code, Cursor и Codex.
Для кого. Авторам джейлбрейк-твиков для iOS на Theos, которые правят `Tweak.x` вместе с агентом и хотят единого стиля хуков.
Подходит, если
- Пишется новый `Tweak.x` с `%hook` для класса UIKit.
- В ревью твика нашлись ручные `MSHookMessageEx`, где хватило бы Logos.
- Хук читает приватную переменную экземпляра через `MSHookIvar`, и неясно, какое расширение файла выбрать.
- Код проверяет версию iOS, и надо выбрать между `@available` и `IS_IOS_OR_NEWER`.
Не подходит, если
- Разрабатывается обычное приложение для App Store без хуков и Theos.
- Нужен готовый твик или инструмент джейлбрейка: в репозитории только правила для агента.
- Проект собирают без Logos, на чистом Objective-C runtime.
Пример запроса к агенту
Напиши Tweak.x с хуком на viewDidLoad для SpringBoard через Logos и проверь версию iOS макросом IS_IOS_OR_NEWER.Ограничения
Скилл дает рекомендации и ничего не собирает: Theos, SDK и устройство с джейлбрейком готовят самостоятельно. README требует клонировать репозиторий целиком, потому что `SKILL.md` ссылается на `reference.md` относительными путями. Правила описывают Logos и Substrate, для других фреймворков хуков они подходят хуже. В Claude Code папка `~/.claude/skills`, созданная после старта сессии, требует `/reload-skills`. В командах клонирования README оставил заглушку `<repo-url>`, подставьте адрес этого репозитория.
Как отключить. Удалите папку `ios-logos-tweak` из каталога навыков (`~/.claude/skills/`, `~/.cursor/skills/` или `~/.agents/skills/`) и символьные ссылки на нее.
Частые вопросы
Когда нужен `.xm` вместо `.x`?
Когда в файле есть `MSHookIvar`, `MSIvarHook` или C++ (`std::`, шаблоны, лямбды). Остальные хуки остаются в `.x`.
Можно ли скопировать только SKILL.md?
Нет, рядом должен лежать `reference.md`, иначе ссылки не сработают. Клонируйте репозиторий целиком.
Работает ли скилл в Cursor и Codex?
Да. Для Cursor папка `~/.cursor/skills/`, для Codex `~/.agents/skills/`, для Claude Code `~/.claude/skills/`.
Какие директивы Logos рекомендует скилл?
`%hook`, `%hookf`, `%new`, `%orig` и `%init`. Ручные `MSHookMessageEx` и `MSHookFunction` остаются для редких случаев, описанных в `reference.md`.
Как выбрать проверку версии iOS?
Скилл разбирает три способа: `IS_IOS_OR_NEWER`, `@available` и `respondsToSelector`. Для каждого указано, когда он подходит.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСкилл со скриптами для сборки iOS-приложений и управления симулятором через дерево доступности, с экономным выводом для агента
Скилл Пола Хадсона для ревью и написания SwiftUI под iOS 26: устаревшие API, поток данных, навигация, доступность, производительность
Скилл Claude Code ведет iOS и Flutter приложение от архива и подписи до отправки в App Store и разбора отказа ревью.
mobilecli управляет iOS- и Android-устройствами, эмуляторами и приложениями из терминала, а скилл учит этому Claude Code
Дает Claude Code и Codex управлять настоящим iPhone: читать экран, нажимать, вводить текст и листать в любом приложении
Набор скиллов, агентов и команд для разработки под iOS, iPadOS, watchOS и tvOS: Swift 6, SwiftUI, Liquid Glass и Apple Intelligence
Коротко о README
README перечисляет два файла: `SKILL.md` с основными правилами и `reference.md` со сравнением Logos и ручных `MSHook*`. Дальше описаны запуск в Cursor, Claude Code и Codex, установка для пользователя и для проекта, а также символьные ссылки, чтобы не клонировать трижды.
Бейдж для README
Исходный SKILL.md
--- name: ios-logos-tweak description: Best practices for iOS jailbreak tweaks using Theos and Logos (%hook, %hookf, %new, %orig, %init). Prefer Logos and Substrate helpers (MSHookIvar) over manual hook/ivar runtime APIs. Covers firmware checks (IS_IOS_OR_NEWER vs @available vs respondsToSelector) and bracket messaging. Use when writing or reviewing .x/.xm tweak code, MobileSubstrate/libhooker hooks, swizzling, or Theos Tweak projects. --- # iOS Logos Tweak Best Practices ## Core rule Put hooking code in **Logos files** (`.x`, `.xm`, `.xi`) and express hooks with **Logos directives**. Let the Logos preprocessor emit `MSHookMessageEx`, `MSHookFunction`, `class_addMethod`, constructors, and class registration. Do **not** hand-write Substrate hook boilerplate in tweak source unless Logos cannot express the case (rare; see [reference.md](reference.md)). ## File layout **Default: `.x`.** Most tweaks use a single `Tweak.x` (Logos + Objective-C). Theos runs Logos on the file, then compiles the result as ObjC. | Extension | Compiles as | When to use | |-----------|-------------|-------------| | **`.x`** | Objective-C | **Default.** `%hook`, `%hookf`, `%new`, `%orig`, `%property`, blocks, and normal Foundation/UIKit code. | | **`.xm`** | Objective-C++ | Only when this **translation unit** needs C++ or Substrate’s C++ APIs (see below). | | **`.xi` / `.xmi`** | Included fragments | Rare: Logos inside `#define` macros or `#include` chains; prefer splitting into separate `.x`/`.xm` files with `extern` instead ([Theos docs](https://theos.dev/docs/logos-file-extensions)). | ### Use `.xm` when this file contains - **`MSHookIvar<T>`** or **`MSIvarHook`** (implemented as C++ templates in `<substrate.h>`). - **C++** only valid in ObjC++: `std::`, `namespace`, templates, lambdas, C++ types in hook bodies. - **`%orig`** forms that embed **block literals** in the hook implementation when your toolchain/setup requires ObjC++ for those expansions (uncommon; most hooks stay in `.x`). ### Stay on `.x` when - Hooks are plain Objective-C (even with blocks, `@autoreleasepool`, etc.). - You do not call `MSHookIvar` in that file. If only one hook file needs ivar access, keep **`Tweak.x`** and add a small **`Something.xm`** (or move just those hooks to `.xm`) rather than renaming the whole project to `.xm` without reason. Keep **interfaces and constants** in normal `.h` / `.m` when they are not hooks. Keep **all hooks** in Logos (`.x` / `.xm`, not raw `.m` with `MSHook*`). Do not `#include <substrate.h>` in Logos files; Theos/Logos adds it in generated code. ## Objective-C methods: `%hook` ```logos %hook YTPlayerViewController