agentleFS
RV784RV784/iphone-duo-skills/skills/apple-docs-research/SKILL.md

apple-docs-research

Skill2 starsChanged 2 months agoMITView on GitHub

Exhaustively research Apple developer documentation — HIG pages, API reference, WWDC/Tech Talk sessions — by enumerating every linked reference programmatically and fetching all of them, never skipping one because it "looks like" a well-known API. Use this skill whenever the user asks you to read, go through, gather context from, or research anything on developer.apple.com: a HIG page, a framework or symbol's docs, a WWDC or Tech Talk session, release notes, or "everything about" a new Apple platform, device, OS version, or API. Also use it when the user asks what a new Apple API does, whether something is documented, or which SDK a symbol needs — and whenever they ask you to be thorough, complete, or exhaustive about Apple docs, or challenge whether you actually read all of it.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. Vvlladd/iOSskillsCollection★ 1same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repositoryOne other file it gives its agents.

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every reference is either fetched or explicitly listed as not-fetched with a reason, in the output.

    line 24
  2. Distinctive:

    Run these in order. Steps 1–3 are the non-negotiable core.

    line 35
  3. Very specific:

    Do this instead of eyeballing a prose summary of the page's links.

    line 61

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Exhaustive Apple developer documentation research

Why this skill exists

Apple's docs invite two specific mistakes, and both produce research that looks complete and isn't.

The first is silent triage. A page links to HStack, VStack, ZStack, Label, UIBarButtonItem — and it is very tempting to think "I know those" and skip them. That reasoning is invalid, and it's worth being precise about why: you are not deciding whether you need the page. You are deciding what the user's report is based on. The reader has no way to tell which links you read and which you assumed, so an unmarked gap reads as coverage. Worse, Apple routinely adds new members to old types — a "boring" GeometryProxy link is exactly where a brand-new reservedRegions(kind:) would live. Your prior about a type's familiarity is evidence about the past, not about this page.

The rule that follows: you may skip a link, but you may not skip it silently. Every reference is either fetched or explicitly listed as not-fetched with a reason, in the output. Cheap to follow, and it converts an invisible assumption into a visible, checkable claim.

The second is trusting the rendered page. developer.apple.com is a JavaScript SPA. Fetching the human URL returns an empty shell — you get a title and nothing else, which is easy to mistake for "this page is thin." The real content is at DocC JSON endpoints. scripts/appledoc.py handles the mapping.

The method

Run these in order. Steps 1–3 are the non-negotiable core; 4–6 are what turn a transcript dump into something a reader can act on.

1. Fetch the root page as JSON, never as HTML

python3 scripts/appledoc.py get hig:designing-for-iphone-duo
python3 scripts/appledoc.py get swiftui/navigationsplitview

hig:<page> is shorthand for a Human Interface Guidelines page; anything else is treated as a documentation/ path. Full URLs work too. Add --raw for the underlying JSON when you need metadata the text view drops.

Video pages are the exception — /videos/play/wwdc20NN/NNN/ and /videos/play/tech-talks/NNNNN/ return real transcript content to an ordinary web fetch. Use WebFetch for those, and ask for the transcript verbatim with every code snippet, because for brand-new APIs the transcript is frequently the only place a declaration exists anywhere (see step 4).

2. Enumerate every reference programmatically

python3 scripts/appledoc.py refs hig:designing-for-iphone-duo

Do this instead of eyeballing a prose summary of the page's links. A summary is itself a lossy read, and it is the natural place for a link to quietly go missing. The command prints a count — 32 real references — that becomes your accounting target.

Output is classified as HIG / API / VIDEO / EXTERNAL / topic. Images are counted and excluded (a typical page is half image references, which is why the raw reference count is misleadingly large).

3. Fetch all of them, and account for every one

Batch them. refs output feeds straight into get, and independent fetches should go out in parallel rather than one per turn.

Two classes genuinely need no fetch, and naming them is part of the accounting: site chrome (Human Interface Guidelines index, Technologies, Getting started) and same-page anchors (#Size-classes). Everything else gets fetched. EXTERNAL links are the ones most often dropped — Apple Design Resources, GitHub plug-ins, sample-code downloads. They are also where device dimensions, UI kits, and bezels live, so a question like "what are the screen dimensions" is answered there or nowhere.

3b. Scope the rule sensibly on large symbol pages

The accounting rule is about topical links, not every symbol Apple's generator emits. A HIG page carries 15–35 real references and all of them are meaningful. A large UIKit class page carries 100+ — UISplitViewController alone has 108 — because DocC lists every inherited member and protocol conformance (CVarArg, NSObjectProtocol, Equatable…). Fetching those is noise, not rigor.

So scope by the research question:

  • Root page and anything topically linked — fetch everything. This is where silent triage does its damage.
  • Large symbol pages — read the page itself, then enumerate its members in one pass (topicSections, or the members loop in references/endpoints.md) rather than fetching each member's page. One request shows the whole surface including members no session mentioned.
  • Boilerplate conformances — skip, and say so once: "108 refs, 90 of which are inherited/conformance boilerplate; read the 18 topical ones."

The test isn't "did I fetch every URL," it's "could a reader be misled about what I actually read." One honest line about what you skipped and why satisfies it; silence does not.

4. Probe which symbols are actually documented

For any new platform or OS release, the tech talks will name APIs that have no published reference page at all. Establishing which is a finding in itself.

python3 scripts/appledoc.py probe \
  swiftui/arrangementview swiftui/reservedregion \
  swiftui/toolbaritemvisibilitypriority uikit/uihingeinteraction

The output includes introduced-in versions, and this is where the real insight usually hides. When you sort documented vs undocumented symbols by availability, the split is rarely random — it typically falls exactly on an SDK boundary, because the web doc set lags the newest SDK. That single observation answers the question the user actually cares about: which parts can I build today, and which parts am I waiting on a toolchain for?

Interpreting a 404 correctly matters:

  • 404 on a type (swiftui/arrangementview) — strong evidence it is unpublished.
  • 404 on a member path (uikit/uibarbuttonitem/axisbehavior) — weak evidence. You may simply have guessed the path wrong. Confirm against the parent page before claiming anything:
    python3 scripts/appledoc.py scan "axisBehavior,badge" --pages uikit/uibarbuttonitem
    In this exact case the parent page shows badge present and axisBehavior absent — so one 404 was a bad path and the other was a real gap. Reporting both as "undocumented" would have been wrong.

5. Sweep adjacent pages for the topic — searching content, not alt-text

To check whether a topic reaches beyond its own page:

python3 scripts/appledoc.py scan "iPhone Duo,hinge,reserved region" \
  --pages hig:layout,hig:multitasking,hig:split-views,hig:playing-video

scan searches page prose only. This is not a detail — a naive grep over the raw JSON produces confident false positives from image alt-text. Icon descriptions like "two side-by-side windows in a split view arrangement" match arrangement on half a dozen unrelated pages, and UISplitViewController matches fold because it discusses Notes folders. Both of those very nearly became findings. scan excludes the reference/image payload so its hits are real.

A clean negative here is a genuine result — "this concept appears on exactly one page and nowhere else in the HIG" tells the reader not to go looking.

6. Follow cross-referenced sessions, and check their dates

Sessions cite other sessions. Follow them, but verify the citation actually pays out: a WWDC session from June cannot discuss hardware announced in September, even when a talk lists it as related. Check what a session predates before treating it as coverage — and when it contains nothing on the topic, say so explicitly rather than omitting it, since "I checked and it's empty" and "I didn't check" are indistinguishable to the reader otherwise.

Reporting

Lead with a source inventory: every artifact, its type, and whether you fetched it. Then the substance. Then — and this is the part most often dropped — a verified negatives section.

Negatives earn their place because they are expensive to establish and cheap to consume. "Apple has published nothing about video playback on this device; I grepped 30+ HIG pages and the playing-video page has zero mentions" stops the reader from repeating your search. State the method alongside the negative, so they can judge how much to trust it.

Distinguish three things throughout, and label them:

  • Apple's text — quote or reproduce it; for undocumented APIs the transcript snippet is the authoritative source and should be verbatim.
  • Verified absence — you looked, with a named method, and it isn't there.
  • Your synthesis — implications for the user's codebase. Mark it clearly as yours. It's usually the most valuable section and the one most damaged by being mistaken for Apple's guidance.

Flag the toolchain gate when it applies: if the APIs need a newer Xcode/SDK than the user has (xcodebuild -version, xcrun --sdk iphoneos --show-sdk-version), say so early — it changes whether the work is buildable now or plan-only.

Failure modes worth remembering

SymptomCauseFix
Page returns only a titleSPA shell from the human URLUse the JSON endpoint via get
Confident hits on unrelated pagesMatched image alt-textUse scan, not raw grep
"Undocumented" member that existsGuessed the wrong member pathscan the parent page
Missed dimensions / UI kitsSkipped EXTERNAL linksFetch them; that's where downloads live
Session "covers" a topic it can'tCitation predates the announcementCheck dates before trusting
Report reads complete but isn'tSilent triage of "known" APIsAccount for every ref in the output

Reference

references/endpoints.md documents the URL→JSON mapping rules, the page JSON structure, and how to pull availability and declaration fragments by hand if you need something the script doesn't surface.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.