By sitapix
Skills for Apple's text-editing stack: TextKit 1 and 2, UITextView, NSTextView, AttributedString, Core Text, Writing Tools, and the iOS 26 SwiftUI TextEditor.
Wire VoiceOver, accessibility traits, UIAccessibilityReadingContent, accessibilityTextualContext, and announcement notifications into custom or wrapped Apple text editors. Use when a UIViewRepresentable wrapper shadows a UITextView's accessibility, a custom text view doesn't appear in the accessibility tree, VoiceOver reads stale text or skips punctuation in a code editor, programmatic edits aren't announced, or rotor gestures don't navigate by character/word/line. Trigger on 'screen reader', 'VoiceOver', 'blind users', 'WCAG', or 'accessibility audit' even when traits and rotor aren't explicitly named. Do NOT use for Dynamic Type font scaling and content-size category — see txt-dynamic-type.
Compare NSTextView and UITextView capabilities for porting between macOS and iOS, building Mac Catalyst editors, or planning cross-platform text features. Covers the AppKit-only stack (text tables, rulers, font/list/table/spacing panels, grammar checking, text completion, Services menu, field editor, NSText RTF I/O) and the UIKit-only stack (UITextInteraction, UITextItem interactions, UITextSelectionDisplayInteraction, UITextLoupeSession, declarative dataDetectorTypes), plus the architectural differences (scroll view, inheritance, delegate richness, Writing Tools coordinator, fallback detection). Use when porting a text editor between platforms, when a feature is missing on one side, or when scoping cross-platform work. Do NOT use for picking among SwiftUI views — see txt-view-picker.
Look up authoritative Apple-authored documentation for any text-system or Swift API via Sosumi (sosumi.ai URL swap and MCP server) and Xcode 26.3+ xcrun mcpbridge. Use when an Apple Text skill needs grounding against the actual Apple docs, an exact API signature is required, a Swift compiler diagnostic needs the official explanation, or a recently-shipped framework update has to be verified against the source. This is the entry point for documentation grounding — invoke it before reciting any specific API signature from memory.
Embed images, custom interactive views, or Genmoji inline in attributed text via NSTextAttachment, NSTextAttachmentViewProvider, and NSAdaptiveImageGlyph. Use when an attachment renders at the wrong size or position, baseline alignment is off, a view-based attachment vanishes, Genmoji insertion fails, or copy/paste loses the image. Covers attachment bounds and baseline math, view-provider lifecycle, registration timing, and the TextKit 1 fallback that kills view providers. Read the actual storage and view-provider implementation before reciting causes; the patterns here are clues, not answers.
Look up NSAttributedString.Key values, value types, and view-compatibility rules — typography, color, decoration, paragraph style, attachments, links, AppKit-only keys. Use when picking the right key, debugging an attribute that "does nothing," or checking whether an attribute survives in SwiftUI Text vs UITextView vs NSTextView. The key catalog and view-compatibility matrix change with each Foundation release; before claiming any signature is current, fetch via Sosumi (`sosumi.ai/documentation/foundation/nsattributedstring/key`). Do NOT use for the AttributedString-vs-NSAttributedString decision — see txt-attributed-string. Do NOT use for inline image/Genmoji embedding — see txt-attachments. Do NOT use for color-specific dark-mode behavior — see txt-colors.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Agent Skills for Apple's text stack: TextKit 1 and 2, UITextView, NSTextView, AttributedString, Core Text, Writing Tools, and the iOS 26 SwiftUI TextEditor.
# Any agent (Vercel skills CLI)
npx skills add sitapix/apple-text
# Claude Code
/plugin marketplace add sitapix/apple-text
/plugin install apple-text@apple-text
For Claude Code installs, prefix slash commands with apple-text: (e.g., /apple-text:txt-audit).
| Skill | Covers |
|---|---|
| txt-audit | Severity-ranked code review |
| txt-textkit-debug | Symptom-driven diagnosis |
| txt-fallback-triggers | TextKit 2→1 fallback catalog |
| txt-snippets | Quick recipes |
| Skill | Covers |
|---|---|
| txt-view-picker | Which text view to use |
| txt-textkit-choice | TextKit 1 vs 2 |
| txt-attributed-string | AttributedString vs NSAttributedString |
| txt-appkit-vs-uikit | NSTextView vs UITextView |
| txt-swiftui-texteditor | iOS 26 SwiftUI TextEditor |
| Skill | Covers |
|---|---|
| txt-textkit1 | TextKit 1 reference |
| txt-textkit2 | TextKit 2 reference |
| txt-nstextstorage | NSTextStorage subclassing |
| txt-viewport-rendering | Viewport, fragments, rendering attributes |
| txt-layout-invalidation | The invalidation model |
| txt-exclusion-paths | Wrapping around shapes, multi-column |
| txt-line-breaking | Hyphenation, truncation, paragraph spacing |
| txt-measurement | boundingRect, sizeThatFits |
| txt-core-text | Glyph-level access |
| Skill | Covers |
|---|---|
| txt-attribute-keys | NSAttributedString.Key catalog |
| txt-attachments | Inline images, Genmoji |
| txt-markdown | Markdown in SwiftUI Text and AttributedString |
| txt-colors | Text colors, dark mode, HDR |
| txt-detectors-tagger | NSDataDetector, NLTagger, NLTokenizer |
| Skill | Covers |
|---|---|
| txt-uitextinput | UITextInput / NSTextInputClient |
| txt-selection-menus | Selection UI, edit menus, gestures |
| txt-find-replace | UIFindInteraction, NSTextFinder |
| txt-spell-autocorrect | UITextChecker, NSSpellChecker |
| txt-undo | NSUndoManager grouping |
| txt-pasteboard | Copy/cut/paste, format stripping |
| txt-drag-drop | UITextDraggable, UITextDroppable |
| txt-bidi | RTL, bidirectional text |
| txt-regex | Swift Regex vs NSRegularExpression |
| Skill | Covers |
|---|---|
| txt-swiftui-interop | What crosses the SwiftUI/TextKit boundary |
| txt-wrap-textview | UIViewRepresentable around UITextView/NSTextView |
| Skill | Covers |
|---|---|
| txt-writing-tools | UIWritingToolsCoordinator, behavior, ignored ranges |
| txt-dynamic-type | UIFontMetrics, adjustsFontForContentSizeCategory |
| txt-accessibility | VoiceOver, accessibilityTextualContext |
| txt-apple-docs | Sosumi + xcrun mcpbridge |
| txt-refresh-against-sosumi | Refresh latest-apis.md after Xcode releases |
Phrasings that route to the right skill, including ones that don't name the API.
npx claudepluginhub sitapix/apple-text --plugin apple-textSkills for SQLiteData by Point-Free: @Table models, @FetchAll/@FetchOne/@Fetch wrappers, GRDB-backed queries, migrations, and CloudKit SyncEngine.
Automerge Swift CRDT skills, commands, and hooks — Document API, Codable mapping, sync protocol, auditing, and guardrails
Persistent file-based planning for AI coding agents. Crash-proof markdown plans (task_plan.md, findings.md, progress.md) that survive context loss and /clear, with an opt-in completion gate and multi-agent shared state. Manus-style. Works with Claude Code, Codex CLI, Cursor, Kiro, OpenCode and 60+ agents via the SKILL.md standard. Includes Arabic, German, Spanish, and Chinese (Simplified and Traditional).
Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,561 supported skills.
Claude harness - A harness for solo developers (Vibecoders) to handle full-cycle contract development.
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses