Update Swiftui APIs
AvdLee/SwiftUI-Agent-Skill
Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.
A skill your agent uses when creating, reviewing, or modifying Yuedu user-facing SwiftUI views, screens, sheets, toolbars, lists, settings, reader overlays, dialogs, or localized UI.
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-design --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .claude/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .claude/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-designType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .agents/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .agents/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .cursor/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .cursor/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/CHANG-JUI-LIN/Yuedu-reader.git --path .agents/skills/yuedu-ios-design--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .gemini/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .gemini/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-designInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .github/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .github/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install CHANG-JUI-LIN/Yuedu-reader yuedu-ios-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CHANG-JUI-LIN/Yuedu-reader.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/yuedu-ios-design .opencode/skills/yuedu-ios-design && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "yuedu-ios-design" agent skill from https://github.com/CHANG-JUI-LIN/Yuedu-reader/tree/main/.agents/skills/yuedu-ios-design into .opencode/skills/yuedu-ios-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "yuedu-ios-design", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
yuedu-ios-designA skill your agent uses when creating, reviewing, or modifying Yuedu user-facing SwiftUI views, screens, sheets, toolbars, lists, settings, reader overlays, dialogs, or localized UI.
Yuedu iOS Design is an agent skill from CHANG-JUI-LIN/Yuedu-reader. Use when creating, reviewing, or modifying Yuedu user-facing SwiftUI views, screens, sheets, toolbars, lists, settings, reader overlays, dialogs, or localized UI.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering iOS development. It works with iOS and SwiftUI. The repository describes itself as: Yuedu is a native iOS reader that supports multiple book formats, RSS subscriptions, and user-provided book sources. The licence is MPL-2.0.
12 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b24d525. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rubygitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Yuedu iOS Design loads about 2.3k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 1,114 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from CHANG-JUI-LIN/Yuedu-reader at commit b24d525, republished under its MPL-2.0 licence (© CHANG-JUI-LIN). 1,114 words, ~2,263 tokens.
.claude/skills/yuedu-ios-design/SKILL.md (or your agent's skills folder).Apply these guardrails to every user-facing SwiftUI change. Read the repo-root docs/design.md before substantial design work; it is the detailed source of rationale, examples, page archetypes, and review guidance.
Consult only the context needed for the change:
docs/design.md: the matching section for substantial design work or an unresolved convention.Modules/SharedUI/DesignSystem/DesignTokens.swift: the relevant token definitions when changing styling.Resources/*.lproj/Localizable.strings (zh-Hant, zh-Hans, en, ja, ko): search the affected keys when changing user-visible text. Do not read any of these files in full.Resolve conflicts in this order: Apple platform behavior and accessibility > explicit Yuedu conventions > contextual recommendations. Yuedu preferences are product conventions, not universal Apple HIG rules.
rootTabTitle(_:onScroll:) — 探索, RSS, 設定 and 搜索 pass .minimizesBar, so on iOS 27 the native bar — title and buttons together — slides away and the native search field rises into its place — (a leading toolbar-item title that looks the same from iOS 17 on; the system .inlineLarge is only a small centred title on an iOS 17 iPhone). Main roots = the tab roots: HomeView (書架), ExploreHomeView / PublicLibraryHomeView (探索), RSSListView (RSS), SettingsView (設定), and the 搜索 tab's SearchView(isTabRoot: true). Everything else — pushed details, sheets, overlays, reader surfaces — uses .inline. Never use .automatic, .large, or .inlineLarge.localized("...") and keep every Resources/*.lproj synchronized: zh-Hant, zh-Hans, en, ja, ko. Text iOS shows from Info.plist, such as a permission prompt, goes in each language's InfoPlist.strings.DS* tokens for colors, semantic fonts, spacing, layout, radius, and animation. Add a missing token before use; avoid magic values. Only system-backed color and semantic font tokens adapt automatically. Validate fixed-size font and animation tokens with the Dynamic Type and Reduce Motion patterns in docs/design.md.NavigationStack, TabView, NavigationSplitView, List/Form with Section, Toggle, Picker, Stepper, NavigationLink, .sheet, Menu, ToolbarItem, contextMenu, swipeActions, searchable, confirmationDialog, and alert. Never hand-roll List/Form rows with ScrollView + VStack/HStack, custom toolbars or button bars, custom switches, pickers, or dialogs. Exclusive choices use one selected value (Picker), not several independent toggles; a Toggle keeps its built-in label instead of .labelsHidden() on a hand-rolled HStack.accessibilityLabel.ContentUnavailableView for empty on iOS 17+); long-running tasks (TTS, downloads, sync) also handle offline, slow-network, permission-denied, and interruption/resume..accessibilityLabel/.accessibilityHint on an HStack/VStack propagates to every child element, so a row of buttons ends up sharing one name; label each Button separately. Decorative Image(systemName:) needs .accessibilityHidden(true) — SF Symbols are focusable by default and speak their raw symbol name. A Slider needs its own .accessibilityLabel and .accessibilityValue, reusing the computed property behind the value shown on screen. See docs/design.md §7.1 for the shipped bugs behind each of these.List/Form screens. .scrollContentBackground(.hidden) hides only the scroll container background, not row backgrounds. When a page background should remain continuous, give every row/section .listRowBackground(Color.clear); when rows intentionally need contrast, use an explicit DSColor.surface* token. Never leave accidental system-white rows against a themed page background. Check content, empty, loading, and error rows. Every surface must visibly differ from its background.alert/confirmationDialog only for critical decisions (2 buttons preferred, max 3). Every custom gesture needs a visible button/menu alternative; never intercept system gestures (edge-swipe back, notifications/Control Center pull-downs).Section { ... } footer: { Text(...) } with .dsSectionFooter() (Apple HIG standard 13pt Footnote + DSColor.textSecondary). Never hand-roll explanatory notes as standard rows inside a Section, subtitle text inside a Toggle's VStack, or standalone empty-content Sections.SettingsRows (Modules/SharedUI/Components/SettingsRows.swift): wrap native controls with SettingsRowLabel / SettingsValueLabel / SettingsSliderRow / SettingsLockedRow so every row on a page shares one icon size, colour and alignment. A pushed page's title matches its row's name. zh-Hant wording: 匯入/匯出, 自訂, 介面, 儲存, 重設, 閱讀背景, 頁首頁尾, 全域 — see docs/design.md §4.xmark and checkmark with localized accessibility labels.rootTabTitle(_:onScroll:) outside the main root screens, or any .inlineLarge (an iOS 17 iPhone draws it as .inline).ScrollView + VStack lists, custom switches/pickers/dialogs) where a native component exists.minimumScaleFactor text-shrinking to save layout.Run:
ruby scripts/check_localizations.rb
git diff --check
grep -rn -E "toolbarTitleDisplayMode\(\.(automatic|large|inlineLarge)\)|navigationBarTitleDisplayMode\(\.(automatic|large)\)|rootTabTitle\(" Modules Targets --include="*.swift"The grep flags every .automatic / .large / .inlineLarge use, and every rootTabTitle( use; only the whitelisted main roots (HomeView, ExploreHomeView, PublicLibraryHomeView, RSSListView, SettingsView, and BookSearchView's tab-root branch) and its own definition in RootTabTitle.swift may use rootTabTitle(_:onScroll:).
For code changes, run the directly relevant regression required by AGENTS.md. Reuse results for unchanged code and environment; the static checks above do not replace that regression.
Update .claude/skills/yuedu-ios-design/SKILL.md, .agents/skills/yuedu-ios-design/SKILL.md, and docs/design.md together. Keep detailed rationale and examples in docs/design.md; keep both skill files concise and byte-identical.
© CHANG-JUI-LIN, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/yuedu-ios-design of CHANG-JUI-LIN/Yuedu-reader.
Open the folder on GitHubat commit b24d525
Yuedu iOS Design next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Yuedu iOS Design this skillCHANG-JUI-LIN/Yuedu-reader | 162 | — | ~2.3k | Automated safety check: Pass | MPL-2.0 | |
| Update Swiftui APIsAvdLee/SwiftUI-Agent-Skill | 3.7k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Swiftui Liquid Glassharperreed/dotfiles | 334 | 8 repos | ~941 | Automated safety check: Pass | None | |
| Swiftui Expert Skillomarshahine/HomeClaw | 176 | 4 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Hig Project Contextraintree-technology/hig-doctor | 144 | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Liquid Glass DesignAstraFoundry/KumoApp | 291 | 5 repos | ~2.3k | Automated safety check: Pass | AGPL-3.0 |
AvdLee/SwiftUI-Agent-Skill
Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.
harperreed/dotfiles
Implement, review, or improve SwiftUI features using the iOS 26+ Liquid Glass API.
omarshahine/HomeClaw
A skill your agent uses when writing, reviewing, or refactoring SwiftUI code for iOS or macOS, including state management, view composition, performance, Liquid Glass adoption, or Instruments .trace…
raintree-technology/hig-doctor
Create or update a shared Apple design context document that other HIG skills use to tailor guidance.
AstraFoundry/KumoApp
iOS 26 Liquid Glass design system — dynamic glass material with blur, reflection, and interactive morphing for SwiftUI, UIKit, and WidgetKit.
ilyas-hallak/romm-ios-app
Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption.
CHANG-JUI-LIN/Yuedu-reader
Locate Yuedu module ownership and cross-module data flows when the relevant entry points or boundaries are unclear.
Categories
A skill your agent uses when creating, reviewing, or modifying Yuedu user-facing SwiftUI views, screens, sheets, toolbars, lists, settings, reader overlays, dialogs, or localized UI. Yuedu iOS Design is an agent skill from CHANG-JUI-LIN/Yuedu-reader. Use when creating, reviewing, or modifying Yuedu user-facing SwiftUI views, screens, sheets, toolbars, lists, settings, reader overlays, dialogs, or localized UI.
Yuedu iOS Design fits situations like: modifying Yuedu user-facing SwiftUI views; reader overlays.
Run `npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a claude-code`. Or copy the skill folder (.agents/skills/yuedu-ios-design in CHANG-JUI-LIN/Yuedu-reader) into .claude/skills/yuedu-ios-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a codex`. Or copy the skill folder (.agents/skills/yuedu-ios-design in CHANG-JUI-LIN/Yuedu-reader) into .agents/skills/yuedu-ios-design in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add CHANG-JUI-LIN/Yuedu-reader --skill yuedu-ios-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/yuedu-ios-design, .gemini/skills/yuedu-ios-design, .github/skills/yuedu-ios-design and .opencode/skills/yuedu-ios-design in your project.
Going by SKILL.md and its folder, Yuedu iOS Design needs the command-line tools its instructions call (ruby and git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Yuedu iOS Design is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Yuedu iOS Design: Update Swiftui APIs (AvdLee/SwiftUI-Agent-Skill, 3.7k stars), Swiftui Liquid Glass (harperreed/dotfiles, 334 stars), Swiftui Expert Skill (omarshahine/HomeClaw, 176 stars) and Hig Project Context (raintree-technology/hig-doctor, 144 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
CHANG-JUI-LIN (a GitHub user) maintains it in CHANG-JUI-LIN/Yuedu-reader, which has 162 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.
Source: CHANG-JUI-LIN/Yuedu-reader on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.