ios-logos-tweak — скилл

Скилл учит агента писать твики для iOS на Theos и Logos: хуки директивами %hook, проверки версии iOS и вызовы через скобки.

  • 105 ★ репозитория
  • Последний коммит
  • MIT
Скилл

Минимальный доступ

Почему такой уровень

  • Только инструкции для агента: ничего не запускает и не выходит в сеть.
Все причины и проверки

poomsmart/ios-logos-tweak

Установка

В терминале, через 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-приложений и управления симулятором через дерево доступности, с экономным выводом для агента

СкиллРасширенный доступ1,3 тыс.Звезды репозитория
Выбор редакции

Скилл Пола Хадсона для ревью и написания SwiftUI под iOS 26: устаревшие API, поток данных, навигация, доступность, производительность

СкиллМинимальный доступ6,5 тыс.Звезды репозитория

Скилл Claude Code ведет iOS и Flutter приложение от архива и подписи до отправки в App Store и разбора отказа ревью.

СкиллШирокий доступ144Звезды репозитория

mobilecli управляет iOS- и Android-устройствами, эмуляторами и приложениями из терминала, а скилл учит этому Claude Code

CLIШирокий доступ317Звезды репозитория

Дает Claude Code и Codex управлять настоящим iPhone: читать экран, нажимать, вводить текст и листать в любом приложении

MCP-серверШирокий доступ494Звезды репозитория

Набор скиллов, агентов и команд для разработки под iOS, iPadOS, watchOS и tvOS: Swift 6, SwiftUI, Liquid Glass и Apple Intelligence

ПлагинРасширенный доступ1,3 тыс.Звезды репозитория

Коротко о 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

Сообщить о проблеме