Skip to content

Docs/refine apple design skills - #3

Open
brbndon wants to merge 21 commits into
mainfrom
docs/refine-apple-design-skills
Open

Docs/refine apple design skills#3
brbndon wants to merge 21 commits into
mainfrom
docs/refine-apple-design-skills

Conversation

@brbndon

@brbndon brbndon commented Jul 29, 2026

Copy link
Copy Markdown
Owner

No description provided.

brbndon added 6 commits July 27, 2026 09:27
- Fill MIT copyright holder; add SECURITY.md and cut changelog 0.2.0
- Clarify archive boundary and mark Website README as superseded
- Ignore .swiftpm/.cursor; set GitHub About outside this commit
- Say preview commands must run from archive/ with --prefix Website
- Document deterministic Maestro app, simulator, state, fixture, artifact, and accessibility contracts.\n- Add active onboarding first-run and permission guidance.\n- Verified with verify-skills, npm validate, and consumer guidance tests.
Close foundation skill gaps from the design-guidance audit without expanding
archive docs or promoting host-local skills into the install catalog.

- apple-design-system: polish defaults (opaque content, glass restraint,
  ~44pt targets, avoid thin UI weights)
- swiftui-tab-navigation: selective bar tinting, system-materials verification,
  and a thin liquid-glass-chrome restraint reference
- swiftui-component-author: visual craft plus large Dynamic Type layout
  (scroll by default, primary text growth) and frequency-gated motion defaults
  (critically damped, touch-down press, source-anchored presentation, no
  input lock during transitions)
- apple-accessibility-review: align Dynamic Type inspection with author policy
- apple-platform-planner: name 2026 HIG principles as audit language
- competing-macos-skills-plan: route deep motion and glass APIs to host-local
  skills after foundation restraint rules

Verified with ./Scripts/verify-skills.sh.
Keep audit/research dumps under tinyfish-results/ out of version control
so skill refinements stay product-focused.
- Always-on feature-screen polish; keyboard/high-frequency never-animate; path symmetry + motion verification
- Add design-motion-glass routing reference and wire host-depth rows without catalog promotion
- Liquid Glass Don’t: materialize-not-fade and steady-state content/glass separation

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f02999aba7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

| Intent | Foundation first | Then | Host depth only if needed |
| --- | --- | --- | --- |
| New app / major skeleton | `$apple-development-foundation` → `$codex-bootstrap` → design-system, tabs, a11y | Chained children | — |
| Liquid Glass / materials | System chrome + `swiftui-tab-navigation` + `liquid-glass-chrome.md` | Custom `glassEffect` only after restraint | `~/.agents/skills/liquid-glass-design/SKILL.md` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Resolve host skills through supported discovery paths

In the supported Codex setup—especially when CODEX_HOME is customized—skills are discovered under ${CODEX_HOME:-$HOME/.codex}/skills, not ~/.agents/skills. These literal pointers therefore send the master router outside the repository's verified host contract and cause the advertised depth handoff to be missed or fail unless a user happens to maintain an unrelated directory. Refer to discovered skill IDs or make the external-host path explicitly host-dependent instead.

AGENTS.md reference: AGENTS.md:L3-L3

Useful? React with 👍 / 👎.

Comment on lines +37 to +39
- Exact simulator/configuration: simulator ID `<EXACT_SIMULATOR_ID>`, scheme
`<SCHEME>`, and build configuration `<CONFIGURATION>`; use the same
destination and configuration for XcodeBuildMCP, Maestro MCP, and CLI runs

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make the Maestro contract optional for non-iOS consumers

When this canonical template is initialized for a macOS-only app, visionOS/watchOS project, or Swift package that does not use Maestro, the new unconditional section still requires an exact simulator ID, .maestro/ layout, bundle ID, fixtures, and onboarding state. Because the surrounding template instructs users to customize every placeholder, those supported consumer types cannot complete the contract truthfully and may leave agents following an inapplicable iOS destination. Gate this section on Maestro/iOS E2E use or provide an explicit not configured/n/a form.

AGENTS.md reference: AGENTS.md:L15-L16

Useful? React with 👍 / 👎.

- Resolve host-depth skills by ID under the active Codex discovery path
  instead of hard-coded ~/.agents/skills pointers
- Gate the consumer E2E/Maestro section with not configured/n/a for
  non-iOS and non-Maestro consumers

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1b8279932c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

| --- | --- | --- | --- |
| New app / major skeleton | `$apple-development-foundation` → `$codex-bootstrap` → design-system, tabs, a11y | Chained children | — |
| Liquid Glass / materials | System chrome + `swiftui-tab-navigation` + `liquid-glass-chrome.md` | Custom `glassEffect` only after restraint | Host skill ID `liquid-glass-design` |
| Animation polish on a screen/component | `swiftui-component-author` craft defaults + a11y Reduce Motion | Delete high-frequency motion first | Host skill ID `apple-design` (gesture physics) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route screen polish to an applicable workflow

When the request is animation polish on a business-specific or one-off feature screen, this row selects swiftui-component-author, but that skill explicitly rejects those screens in its description and stop conditions. Since apple-design is positioned only as depth after the foundation workflow, routing stops without an applicable workflow; route screen-level polish to a feature-screen workflow or permit the suitable host skill to lead.

AGENTS.md reference: AGENTS.md:L20-L26

Useful? React with 👍 / 👎.

Comment on lines +30 to +31
Optional. Fill this section only when the project uses Maestro (or another UI
E2E tool) for iOS simulator journeys. For macOS-only apps, visionOS/watchOS

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep non-Maestro E2E contracts tool-neutral

For an iOS project using XCUITest, Appium, or another non-Maestro E2E tool, this wording says to fill the section, but the required fields below still prescribe .maestro/, Maestro MCP, and Maestro CLI. Fresh evidence in the updated text is the newly added “or another UI E2E tool” scope while the contract remains Maestro-specific; either limit this section to Maestro or make its fields tool-neutral.

Useful? React with 👍 / 👎.

Comment thread AGENTS.md

All SwiftUI components must support Dynamic Type, VoiceOver, keyboard access, contrast, Reduce Motion, Differentiate Without Color, and a descriptive label for an icon-only control. Validate imports before reading them. Never log credentials, tokens, private content, raw imports, complete sensitive paths, or security-scoped URLs.

- For any SwiftUI UI (including feature screens, not only shared components): keep content opaque; reserve glass for system navigation chrome; ~44×44 pt targets; system text styles (no Ultralight/Thin for UI); selective accent; frequency-gated motion (no animation on high-frequency or keyboard paths). Defer deep gesture physics to host-local motion skills.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Scope 44-point targets to touch platforms

For macOS consumer UI, this always-on rule requires every control target to be approximately 44×44 points even though standard pointer-driven macOS controls use substantially denser native sizing. Applying the touch-target minimum across every supported SwiftUI platform will produce oversized desktop controls and conflict with the native-first guidance; qualify it for iOS/touch interaction and retain platform-native sizing on macOS.

AGENTS.md reference: AGENTS.md:L3-L3

Useful? React with 👍 / 👎.

brbndon added 3 commits July 29, 2026 18:57
- require risk-based screenshot and hierarchy evidence for UI changes\n- provide reusable consumer guidance for deterministic inspection
- make system navigation chrome the default interpretation of Liquid Glass\n- propagate opaque content and restrained custom-glass rules across foundation skills and workflows\n- verify the skill catalog and static docs build
- allow Maestro, XCUITest, Appium, or another configured UI E2E runner\n- make all E2E fields n/a when the consumer has no UI E2E\n- keep the public AGENTS template mirror synchronized

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 77aafb24ea

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +110 to +112
- E2E-only launch arguments/environment beyond the UI inspection contract:
`<LAUNCH_ARGUMENTS_OR_N_A>` and `<ENVIRONMENT_VARIABLES_OR_CONFIG_SOURCE_OR_N_A>`;
inject secrets locally or in CI rather than committing them

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include the UI inspection contract in the copied template

When an iOS/iPadOS consumer copies this website template, the new E2E fields refer to the “UI inspection contract,” but that entire section is present only in the canonical asset and omitted from this purported mirror. The updated bootstrap and verification workflows require its deterministic routes, evidence matrix, and artifact location, so consumers following the website cannot configure the required UI evidence and receive dangling references instead.

Useful? React with 👍 / 👎.

Comment thread docs/workflow/agents-md-template.mdx Outdated
| Destinations | exact `simulatorId`; macOS arch or `n/a` |
| Formatter / linter / checks | repo-native commands or `not configured` |
| Targeted and full tests | repo-native or MCP test scope |
| E2E / Maestro contract | `configured` with real values, or `not configured` / `n/a` for non-iOS or non-Maestro repos |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not mark non-Maestro E2E projects as unconfigured

For a consumer using XCUITest, Appium, or another non-Maestro runner, this new summary row recommends not configured/n/a, even though the contract below explicitly supports those tools. Following the customization table therefore suppresses a legitimate E2E setup and can make agents skip its journeys. The fresh evidence is this newly added website summary row; the canonical asset has since become tool-neutral.

Useful? React with 👍 / 👎.

- include the UI inspection contract in the website copy-paste template\n- describe configured UI E2E tools without classifying non-Maestro runners as unconfigured

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8a755e5d24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/workflow/multi-service-ios-app.mdx Outdated

Patterns for **device → many independent HTTP APIs** apps (home-lab dashboards, ops clients, multi-vendor read-only mesh). Neutral and reusable: no product branding, no private hosts, no secrets.

**Provenance:** distilled from Harborlight-style Phase 2–3 work (Sonarr / Radarr / Plex / qBittorrent-class peers). Apply in the **consumer workspace**, not this foundation’s `archive/`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove consumer branding from the reusable playbook

This live agent playbook is linked from the generic task recipes but names Harborlight and specific consumer products despite describing itself as neutral; agents and downstream consumers will inherit product-specific provenance and assumptions that belong in the consumer app’s documentation. Remove the brand/vendor references and express the examples in domain-neutral terms.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

Comment on lines +42 to +47
For a user-visible iOS/iPadOS change, use the consumer's UI inspection contract
after a launch smoke. Choose the smallest risk-based evidence matrix: the primary
affected route by default, plus an affected sheet, appearance variant, or large
Dynamic Type scenario only when that risk changed. For each selected scenario,
capture a screenshot, visually inspect the rendered image, and capture
`snapshot_ui` to verify semantic controls, labels, values, and scrollability.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add fixtures for the new UI verification contract

This makes screenshot inspection plus snapshot_ui mandatory for user-visible iOS/iPadOS verification, while Evaluations/skill-routing.json remains unchanged and has no user-visible UI or non-UI exemption case. Consequently, the repository’s behavioral verifier still passes even if an agent skips this new contract or applies it to non-UI work; add matching positive and boundary fixtures when changing this verification behavior.

AGENTS.md reference: AGENTS.md:L16-L16

Useful? React with 👍 / 👎.

- remove consumer and vendor-specific assumptions from the multi-service workflow\n- add UI-positive and non-UI verification fixtures with enforced boundary coverage\n- update evaluation documentation for the expanded framework boundaries

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57e7746393

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .agents/skills/codex-bootstrap/assets/consumer-AGENTS.md.template
brbndon added 8 commits July 30, 2026 15:49
- enforce UI and non-UI verification evidence boundaries\n- harden neutral multi-service security guidance\n- keep the website AGENTS template synchronized
- neutralize the multi-service playbook and harden reusable security guidance\n- make UI E2E contracts tool-neutral and keep website copy synchronized\n- enforce positive and boundary UI verification evidence in fixtures
- Drop-in DotMatrixLoader + FeatureLoadingView template
- Design rationale and integration checklist
- Task recipe for full-surface liquid orb loading
- Update README: presets, InlineLoadingRow, ScrollView layout, anti-box checklist
- Refresh drop-in Swift from current Harborlight implementation
- Expand task recipe for full-surface and inline loading patterns
- Micro economy path and tile-safe sizing in drop-in Swift
- Document per-surface loading copy and ScrollView rule for Services/release sheets
- Task recipe: micro cost + screen-specific detail
- Add landing-page-recipe.md to apple-app-marketing-site: homepage
  anatomy (screens, benefits, social proof, pricing, FAQ), honesty
  conventions, real-screenshot capture via XcodeBuildMCP + Maestro, and
  the mandatory link/form/width verification pass
- Update structure-and-pages.md homepage sections and SKILL.md
  implementation order to the proven anatomy
- Add LANDING_RECIPE.md to the AppMarketingSite template pack; update
  README table, STRUCTURE composition, and CHECKLIST items

Verification: ./Scripts/verify-skills.sh (16 skills, 77 fixtures) and
generate-skill-catalog.py --check both pass.
…idths

- Document the actual capture height (640x1391) instead of 1392
- State the mobile overflow check consistently as 320px and 390px
  across the skill reference and the template pack

Verification: ./Scripts/verify-skills.sh passes (16 skills, 77 fixtures).

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 66160eabd6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Scripts/validate-skill-evaluations.py Outdated
raise EvaluationError(f"{location}.{field} must be a string array")
if len(actions) != len(set(actions)):
raise EvaluationError(f"{location}.{field} must be a unique array")
if not all(action in UI_EVIDENCE_ACTIONS for action in actions):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Validate forbidden UI evidence against the schema enum

For a fixture that puts focused-code-tests in ui_evidence.forbidden_actions, this check accepts it because it validates forbidden actions against the full action set, while Evaluations/schema.json deliberately omits that value from the forbidden_actions enum. Since verify-skills.sh relies on this validator as the dependency-free schema contract, a schema-invalid fixture can still pass verification; validate forbidden actions against UI_EVIDENCE_FORBIDDEN_ACTIONS instead.

Useful? React with 👍 / 👎.

Comment on lines +3 to +6
The proven homepage pattern from **Group Trip Money** (`GroupTripMoney/web/`).
Everything is data-driven: structure, tokens, and workflow stay identical
across products; only frontmatter content changes. Read the example repo
before building; keep this reference as the spec.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the homepage recipe self-contained

When this skill is installed in a consumer repo that does not also have a GroupTripMoney/web checkout, the recipe makes a branded external app the source of truth and requires reading it before building. That leaves agents blocked or copying product-specific assumptions instead of following a reusable skill spec; make the recipe self-contained and keep any example optional and neutral.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

Comment thread Templates/LiquidOrbLoader/README.md Outdated
| Poster tiles | `DotMatrixLoader.micro` (economy path) |
| Poster progress banner | `InlineLoadingRow(..., micro: true)` |
| Add media search / defaults | `InlineLoadingRow` in form sections |
| Detail: episodes / *arr submit / qBit check | `InlineLoadingRow` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove Harborlight-specific wiring from the template

When this template is copied into another consumer app, the wiring table carries Harborlight-specific media-stack terms such as *arr and qBit as the recommended integration surface. That leaks one consumer domain into a reusable template and can steer adopters toward app-specific loading copy and states; replace these with neutral surface categories.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

- validate ui_evidence.forbidden_actions against the schema enum so a
  schema-invalid fixture cannot pass verification
- keep the homepage recipe self-contained; GroupTripMoney example is
  optional and illustrative only, never the source of truth
- replace Harborlight-specific wiring surfaces (media search, *arr, qBit)
  with neutral surface categories in the LiquidOrbLoader template
- carry the same neutralization into structure-and-pages and the consumer
  LANDING_RECIPE template

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7786a22a18

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +70 to +73
Fixture mode first: launch the app with its fixture launch argument (e.g.
`-useFixtureData` seeding an in-memory container) via XcodeBuildMCP
(`build_run_sim` with `launchArgs`). Then drive navigation with a throwaway
Maestro flow in `/tmp` — never the repo's committed `.maestro/` suite:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep macOS screenshot capture off simulator-only tooling

This recipe is mandatory for the marketing-site skill, which is advertised for iOS or macOS apps, but the real-screenshot path only tells agents to launch with build_run_sim and drive an iOS Maestro flow. For a macOS app landing page, following this blocks screenshot capture or produces the wrong app evidence instead of using build_run_macos/macOS screenshots or a platform-neutral branch; split this section by platform before making it required.

AGENTS.md reference: AGENTS.md:L3-L3

Useful? React with 👍 / 👎.

| Verify | No rectangular glow box; light/dark; ring/orb clearance; Reduce Motion freeze; loader not collapsed in scroll |
| Do not | Keyboard chrome; private hostnames in detail; expand foundation `archive/Sources/` for this drop-in |

Proven consumer: Harborlight Home/Library/Calendar/Downloads/Services + forms/details/posters. Full notes: `Templates/LiquidOrbLoader/README.md`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove app-specific provenance from this reusable recipe

Fresh evidence here is this newly added task recipe: for consumers using the foundation docs, naming Harborlight and its Home/Library/Calendar/Downloads/Services surfaces makes the reusable loader guidance carry a specific product’s screen model, so agents can copy those assumptions into unrelated apps instead of neutral loading surfaces. Replace it with generic surface examples or make the provenance non-authoritative outside the recipe.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant