design-pro-max

agent
Security Audit
Fail
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Fail
  • rm -rf — Recursive force deletion command in .github/workflows/badges.yml
  • process.env — Environment variable access in evals/apple/launch-scroll/files/09-frozen-frame/server.js
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Design skills for Claude Code and Codex, one skill per design. First: apple, which routes SwiftUI, Swift, Xcode and App Store Connect work to vetted MIT guides. Independent project, not affiliated with Apple.

README.md

design-pro-max

GitHub views / 14d
license

Apple logo, the icon of the apple skill

Design skills for AI coding agents, one skill per design:

  • apple: a router for Apple-platform work that sends each task to one bundled guide, either a third-party part or one of the project's own, and has the agent read that guide in full.
  • design-spacing-rhythm: spacing, alignment and vertical rhythm for generated UI and documents, bundled from buidangminh23/spacing-skill.
  • icons-pro-max: an icon catalog with the exact brand logos, UI icons and render rules, bundled from buidangminh23/icons-pro-max.

The two bundled skills are copied byte for byte from the latest release of their own repositories and kept in step by a daily job; see Bundled skills.

Status: pre-release. Nothing has been released yet; main already installs as described below.

Install

Install the apple skill folder into a skill root that your agent host reads:

npx skills add buidangminh23/design-pro-max --skill apple -g

The bundled skills install the same way, one --skill per skill:

npx skills add buidangminh23/design-pro-max --skill design-spacing-rhythm -g
npx skills add buidangminh23/design-pro-max --skill icons-pro-max -g

From v0.1 each release also ships design-pro-max-vX.Y.Z.zip with SHA256SUMS.txt. The ZIP holds skills/apple with its hidden .vendor/ folder, which must be copied along with the rest, and the bundled skills next to it.

  • A bundled skill is the same skill its own repository releases. Install it from one place only: a machine that already installs spacing-skill or icons-pro-max from their repositories would list the skill twice.

  • Install only into a host's own skill roots, such as ~/.claude/skills/ for Claude Code or a user or repository skill folder of Codex. Hosts skip dot-folders there, so they list apple and each bundled skill you installed, and the 38 parts under .vendor/ stay hidden.

  • Never run npx skills with --full-depth: it enters dot-folders and installs every part under .vendor/ as a skill of its own.

  • Do not put the skill in a Codex executor environment's skill root, such as one of a remote or sandboxed executor: those roots include hidden folders, so every part would register as a skill.

  • Use one install channel per machine. Installing with npx skills and copying the release into another skill root makes a host list apple twice.

  • With a very large skill library a host may list apple without its description, so it will not start on its own; invoke it as /apple in Claude Code or $apple in Codex.

Layout

skills/
  apple/
    SKILL.md                 router: standing rules, routing table, parts index
    NOTICE.md                disclaimer, trademarks and the icon's source
    references/parts-index.md  generated: every part's group, activation, prerequisites and errata pointers
    agents/openai.yaml       display name and icon for Codex
    assets/apple.svg         the skill icon (the Apple logo)
    shared/                  the checker runtime the project's own parts share: report contract, MP4 reader, media check, test server
    launch-scroll/           own part: pinned and scroll-scrubbed scenes on web pages
      PART.md                the guide the router sends to
      references/            engines and geometry, scrub video, frame sequences, gates, generated evidence
      assets/lib/            scene progress, seek queue and scrub loader, with their CSS contract
      assets/reference/      three reference pages: JavaScript engine, CSS engine, scrub video
      scripts/               probe-scene.mjs (browser checks), encode-scrub.mjs (scrub encoder)
    hig/                     own part: Apple's Human Interface Guidelines for native app interfaces
      PART.md                how to read, build to and review against the guidelines
      references/            own-words digest of every guideline page by section, with generated evidence
    .vendor/                 third-party parts, byte-for-byte at pinned commits
      <part>/
        SKILL.md ...         upstream files, unmodified
        LICENSE              the upstream licence
        UPSTREAM.json        source, commit, prerequisites, risks, errata, Apple text, file hashes and modes
      xcode-build/<part>/
      app-store-connect/<part>/
  design-spacing-rhythm/     bundled: spacing-skill's skill folder at its release tag, plus its LICENSE
  icons-pro-max/             bundled: icons-pro-max's skill folder at its release tag, logos included, plus its LICENSE
skills.json                  generated: the skills in this repository, for installers
vendor/sources.json          the 38 parts: repository, commit, path, excludes, status
vendor/bundles.json          the bundled skills: repository, release tag, commit, licence and every file's hash
scripts/bundle-sync.mjs      sync, check and update for the bundled skills
scripts/lib/bundles.mjs      the bundle record, its checks and BUNDLED_MEDIA, the only bundles that may ship images
scripts/vendor-sync.mjs      sync, check, notices, and stage, classify, confirm and apply for upstream updates
scripts/vendor-guard.mjs     offline guard
scripts/gen.mjs              writes skills.json, the parts index, the README credits and the trademark line
scripts/check-history.mjs    keeps unreviewed images and vendored agents/ and assets/ files out of git history
scripts/release.mjs          checks, packs and verifies the release ZIP; bumps versions and card stats; pushes the tag
scripts/ci-local.mjs         runs the CI steps and the verify run locally when Actions cannot run
scripts/lint-ip.mjs          IP and privacy lint over the project's own files
scripts/verify.mjs           runs every own-part fixture through the checkers, red first
scripts/import-findings.mjs  checks the evidence ledger's source hashes against a research folder
rules.json                   the own parts' rules: level, evidence, check, fixtures and the checker that implements each
evidence/ledger.json         own-words claims with their label, source and source hash
evidence/ip-hashes.json      salted hashes of the private identifiers, private terms and Apple text corpus
designs/apple.json           the apple skill's design record: marks, never-ship list, phrase gates, newest released OS
fixtures/                    pass and fail cases for every error rule, with pages; media is built at run time
evals/                       routing and part evals, the harness that runs them on Claude Code and Codex, and RESULTS.md
.github/workflows/           CI, release, the weekly vendor sync and the own-part verify run
THIRD_PARTY_NOTICES.md       generated credits with every licence text
CONTRIBUTING.md              issues first, MIT-only sources, how a part is added

Why .vendor is hidden

Agent hosts register every SKILL.md they find. Codex scans skill folders recursively but skips dot-directories, and Claude Code registers only the direct children of a skills folder. With every vendored part inside the hidden .vendor/ folder, both hosts list apple as one skill, while every vendored file stays byte-identical to upstream: nothing is renamed or edited to hide them.

The same constraint shapes the rest of the tree: each skill's own skills/<name>/SKILL.md is the only SKILL.md outside dot-directories, there are no symlinks, no .claude-plugin or .codex-plugin folder sits inside skills/apple, no folder is named .claude, .agents, .codex or .git, and no file is named metadata.json, which some installers drop. .gitattributes marks skills/apple/.vendor/** and the bundled skill folders as -text, so git never rewrites vendored or bundled line endings.

Parts

The router reads a part's SKILL.md in full, resolves each relative path a part mentions against the folder of the file that mentions it (then the part's own folder), checks inactive parts' activation first, and applies the errata recorded in its UPSTREAM.json.

Own parts (2)

Written for this project and released under its MIT licence. Each has a PART.md guide; a part with checkers has error rules in rules.json that they enforce, and a pass and a fail fixture for every error rule.

Part Covers Prerequisites
launch-scroll Pinned scroll scenes and scroll-scrubbed video or frame sequences on web pages: when not to pin, the engine, geometry, gates for reduced motion, short viewports and blocked autoplay, scrub encoding and the start frame. 8 error rules and 9 warnings Node 22 or later; ffmpeg and ffprobe for media checks and encoding; Playwright with Chromium in the user's project for browser checks
hig Apple's Human Interface Guidelines for native app interfaces on iOS, iPadOS, macOS, watchOS, tvOS and visionOS: an own-words digest of all 158 guideline pages (platforms, foundations, patterns, components, inputs, technologies), each section linked to its page, with a build checklist and a review table that states its proof boundary. Numbered claims cite the ledger None; the Simulator's Accessibility Inspector, or a device, for the checks code cannot prove

Known limit, measured in evals/RESULTS.md: asked for a scroll-scrub film in AV1 or HEVC only, Codex reads the part's rule and still delivers those codecs alone, recommending H.264 only in its advice; Claude Code adds the H.264 source. Check the delivered <source> list with skills/apple/shared/check-media.mjs before shipping.

The checkers print one JSON line per finding and a summary that states what they prove and what they do not. They exit 0 when every check passes, 1 on an error, 2 when an argument or a tool is missing, and 3 when a sandbox blocks the browser or ffmpeg. They load Playwright from the project passed with --project, never install anything, and never fetch third-party pages.

Vendored, active (6)

Part Covers Prerequisites
swiftui-expert-skill Writing, reviewing and migrating SwiftUI for iOS and macOS, including performance traces None; traces need python3 and Xcode's xctrace
swift-concurrency Data-race and Sendable diagnosis, Swift 6 migration plans The module's concurrency build settings
swift-testing-pro Swift Testing reviews, XCTest migration, traits, parameterized and async tests A Swift toolchain with Swift Testing
swiftdata-pro SwiftData models, queries, predicates, indexes, CloudKit A SwiftData project
core-data-expert Core Data stacks, fetches, saving, threading, migrations, CloudKit A Core Data project
xcode-disk-cleanup Auditing and reclaiming Xcode and simulator disk space Xcode command line tools and python3

Vendored, inactive until their prerequisites exist (32)

An inactive part stays in the tree in full. The router runs its activation check first and stops with the missing prerequisites when the check fails.

Group Parts Activation
Xcode build optimization xcode-build/xcode-build-orchestrator, xcode-build-benchmark, xcode-build-fixer, xcode-compilation-analyzer, xcode-project-analyzer, spm-build-analysis An .xcodeproj or .xcworkspace with a scheme (xcodebuild -list lists one)
Tuist menu bar apps macos-menubar-tuist-app Tuist.swift and Project.swift in the project and tuist version succeeds
App Store Connect 25 app-store-connect/asc-* parts asc on PATH, asc auth status --validate passes, and a paid Apple Developer Program account; Apple Ads, RevenueCat and Wall of Apps parts add their own checks

Main risks, all gated by the router: the build parts run xcodebuild clean and can delete a passed DerivedData folder; the App Store Connect parts can upload, submit for review, change prices, spend money on Apple Ads, revoke certificates or open a public pull request, so the router shows the exact command and waits for an explicit yes before any of these, sets ASC_TELEMETRY_DISABLED=1 before running asc, and never runs asc install-skills. Every part's prerequisites, risks and errata are listed in vendor/sources.json and in its UPSTREAM.json.

Bundled skills

Whole skills that the owner releases from their own repositories, shipped here unchanged so one install brings them along. vendor/bundles.json pins each to a release tag and its commit and records every file's size and hash; nothing in a bundled folder is edited here.

Skill Repository Release Commit Files Images
design-spacing-rhythm buidangminh23/spacing-skill v2.19.0 eba13d7515a5 8 none
icons-pro-max buidangminh23/icons-pro-max v2.4.0 f197f6b78c9b 827 825 brand images, outside the MIT licence
  • node scripts/bundle-sync.mjs sync fetches each pinned commit, proves that the release tag still points at it, and copies the skill folder with the repository's licence as LICENSE. It refuses symlinks, submodules, unsafe names, git metadata, metadata.json, a second visible SKILL.md, and any image, font, media file or archive except the images BUNDLED_MEDIA in scripts/lib/bundles.mjs allows: .svg and .png files under icons-pro-max's assets/ folder.
  • The history check and the release check accept a bundled image only with the bytes vendor/bundles.json records for it at the same commit, so a logo changed by hand fails like any unreviewed image.
  • The Bundle sync workflow moves each bundle to its repository's latest release; to move one by hand, run node scripts/bundle-sync.mjs update --only <name>, then gen, notices and the checks.

Credits

Every vendored part is MIT-licensed and every vendored file is unmodified. The excludes in vendor/sources.json leave out a nested plugin copy, a plugin manifest, agent UI metadata (agents/openai.yaml) and icon images, some of which reproduce Apple's Swift logo, so no vendored image ships; the images in a release are the apple skill's own icon, skills/apple/assets/apple.svg, whose drawing is devicon's (MIT, licence in skills/apple/NOTICE.md and THIRD_PARTY_NOTICES.md), and the brand logos of the bundled icons-pro-max skill (see Bundled skills). Short passages that a part quotes from Apple, such as a sentence of Apple documentation, WWDC session titles, a few phrases or a short code listing, belong to Apple and are not covered by the MIT licences; each part lists the known ones, with their sources, under appleText in its UPSTREAM.json. Thanks to the authors. Full licence texts are in THIRD_PARTY_NOTICES.md.

Part Author Repository Commit Licence
swiftui-expert-skill Antoine van der Lee AvdLee/SwiftUI-Agent-Skill 204dba7c6725 MIT
swift-concurrency Antoine van der Lee AvdLee/Swift-Concurrency-Agent-Skill d5770817d262 MIT
swift-testing-pro Paul Hudson twostraws/Swift-Testing-Agent-Skill 2d6bba14a3c8 MIT
swiftdata-pro Paul Hudson twostraws/SwiftData-Agent-Skill 922d989473a9 MIT
core-data-expert Antoine van der Lee AvdLee/Core-Data-Agent-Skill 855ca7d0df50 MIT
xcode-disk-cleanup Antoine van der Lee AvdLee/Xcode-Disk-Cleanup-Agent-Skill 304e86e619ac MIT
xcode-build/xcode-build-orchestrator Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
xcode-build/xcode-build-benchmark Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
xcode-build/xcode-build-fixer Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
xcode-build/xcode-compilation-analyzer Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
xcode-build/xcode-project-analyzer Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
xcode-build/spm-build-analysis Antoine van der Lee AvdLee/Xcode-Build-Optimization-Agent-Skill 6bd7b596cd68 MIT
app-store-connect/asc-cli-usage Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-id-resolver Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-app-create-ui Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-signing-setup Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-xcode-build Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-build-lifecycle Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-testflight-orchestration Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-crash-triage Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-analytics-reports Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-submission-health Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-release-flow Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-metadata-sync Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-localize-metadata Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-whats-new-writer Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-aso-audit Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-screenshot-resize Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-shots-pipeline Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-notarization Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-ad-hoc-distribution Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-workflow Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-apple-ads Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-ppp-pricing Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-subscription-localization Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-revenuecat-catalog-sync Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
app-store-connect/asc-wall-submit Rudrank Riyam rorkai/app-store-connect-cli-skills 9c7e769f09a1 MIT
macos-menubar-tuist-app Thomas Ricouard Dimillian/Skills 05ba982bfeb0 MIT

Maintenance

Node 22 or later; no dependencies.

Command What it does
node scripts/vendor-sync.mjs sync [--only <id>] [--force] Fetches each pinned repository once (a shallow git fetch by commit), copies every part's tracked files byte for byte with their executable bits, adds the upstream licence and writes UPSTREAM.json. Parts that already match only get their metadata refreshed, so a repeated sync is offline. It refuses to start while .vendor/ holds a symlink or special file, never writes outside the real .vendor/ folder, and refuses upstream symlinks, submodules, nested git metadata files, images, media, fonts, archives, names outside plain ASCII and names that differ only in case from the LICENSE or UPSTREAM.json it writes; exclude those in vendor/sources.json
node scripts/vendor-sync.mjs check Offline: every part's files and executable bits match its UPSTREAM.json and the manifest, appleText entries name shipped files and existing lines, and nothing else, including symlinks and special files, sits in .vendor/
node scripts/vendor-sync.mjs notices [--check] Regenerates THIRD_PARTY_NOTICES.md, or fails when it is out of date
node scripts/vendor-sync.mjs stage --out <dir> Network. Reads each source's upstream HEAD with git ls-remote and stops when every source is at its pin. For a source that moved, a blobless clone proves that the pin is an ancestor of the new HEAD; then its parts are copied at the new HEAD the way sync copies them, include path minus excludes, into <dir> with the new manifest and report.json. A source whose history was rewritten, or whose parts no longer sync, for example because its licence is no longer MIT, is blocked and stays at its pin
node scripts/vendor-sync.mjs classify --from <dir> [--json | --markdown] Offline. Compares a staged update with the tree: safe only when no file that ships in a moved part changes, so the pins move past upstream commits that touched nothing in the parts; any added, removed or edited file, executable bit, licence or skill name makes it needs-review, because agents read and run these files with the user's permissions and no pattern can prove new text safe. Each reason names the file, and the added lines of each changed text file are listed with what they bring: links by host and path, commands, injection phrases, words that mix scripts and fenced code. --markdown prints the pull request body
node scripts/vendor-sync.mjs confirm --from <dir> Network. Proves a staged update came from upstream: each moved source's staged commit must be on its default branch and descend from the pin, and every moved part must match a fresh copy made at that commit, record for record
node scripts/vendor-sync.mjs apply --from <dir> Copies a staged update into the tree after refusing symlinks, special files, paths outside the moved parts and any manifest change other than commits; executable bits come from each part's UPSTREAM.json
node scripts/gen.mjs [--check] Writes skills.json, skills/apple/references/parts-index.md, the README credits table, the trademark line in this README and in skills/apple/NOTICE.md, and the licences of the third-party drawings the skill ships (MEDIA_NOTICES in scripts/lib/media.mjs) in skills/apple/NOTICE.md, from the skill folders and vendor/sources.json; --check fails when one is out of date. Only the lines between <!-- gen:<name> --> markers are generated. The trademark line names the Apple marks that the project's own shipped text uses, the Apple logo while the skill ships it, and Cisco's IOS sentence when iOS is named
node scripts/vendor-guard.mjs [--json] Offline guard over what git would ship: MIT licences, part files, sizes, file system entries, file types and signatures, UTF-8, names, hidden Unicode, secrets, skill layout and personal data in the project's own files; risky command patterns are reported as warnings
node scripts/bundle-sync.mjs sync [--only <name>] Network. Fetches each bundle's pinned commit, proves its release tag points at it, copies its skill folder byte for byte into skills/<name>/ with the repository's licence as LICENSE, and records every file in vendor/bundles.json
node scripts/bundle-sync.mjs check Offline: each bundled folder holds exactly the files vendor/bundles.json records, with their sizes, hashes and executable bits, plus its LICENSE
node scripts/bundle-sync.mjs update [--only <name>] [--report <file>] Network. Reads each repository's latest release from /releases/latest, moves the bundles whose tag changed and syncs them; the report lists what moved
node scripts/check-history.mjs Fails when any commit reachable from HEAD adds an image, font, media file or archive, recognised by extension or by its first bytes, other than a reviewed file with its reviewed bytes (REVIEWED_MEDIA in scripts/lib/media.mjs; today only skills/apple/assets/apple.svg) or a bundled image that vendor/bundles.json at the same commit records with those bytes, or any file in a vendored part's assets/ or agents/ folder. It needs the full history, so it fails in a shallow clone
node scripts/release.mjs check [vX.Y.Z] Validates the release inputs: the payload exists, skills.json is current, .gitattributes marks exactly the repo-only paths export-ignore, every top-level item is either payload or repo-only, and package.json names the private package design-pro-max before 0.2.0 and a public @<scope>/design-pro-max package from 0.2.0 on. With a tag, the tag must match the package.json version, [Unreleased] must be empty, the newest CHANGELOG entry must be that version, dated, with notes, and the README must have dropped the pre-release banner
node scripts/release.mjs notes vX.Y.Z Prints the CHANGELOG notes of that version
node scripts/release.mjs pack [vX.Y.Z] Builds dist/design-pro-max-vX.Y.Z.zip from a clean HEAD (the tag's commit when a tag is given) with git archive under TZ=UTC, so the bytes do not depend on the packer's time zone, plus dist/SHA256SUMS.txt naming it, then verifies both. The ZIP holds one design-pro-max-vX.Y.Z/ folder with skills/ (the hidden .vendor/ folders included), skills.json, README.md, LICENSE, THIRD_PARTY_NOTICES.md and CHANGELOG.md; everything else is export-ignore
node scripts/release.mjs verify <dir> Checks release assets, such as a downloaded release, against the installers' contract: SHA256SUMS.txt names exactly one ZIP, without "plugin" in its name, and its hash matches; the ZIP holds one SKILL.md outside dot-folders per skill in skills.json, every vendored file with the hash in its UPSTREAM.json, one MIT LICENSE per part and exactly the parts of vendor/sources.json, no entry name over 150 characters, and no symlinks, __pycache__ folders, compiled Python, metadata.json files or media other than reviewed files. It also compares the ZIP with the tracked files of the tag vX.Y.Z (or of HEAD before the tag exists): every tracked payload file with its exact bytes and executable bit, and nothing else, so a nested .gitattributes, .git/info/attributes, export-subst or a line-ending filter cannot drop or rewrite a file
node scripts/release.mjs stats Prints the card stats computed from the committed files: guides (own and vendored parts), active guides, error rules with at least one non-inferred ledger entry, must-fail fixtures, eval cases in evals/<suite>/cases.json and evals/<design>/<part>/evals.json and dated ledger claims. check fails when web-card.json shows other values
node scripts/release.mjs bump X.Y.Z Writes the version into package.json and the plugin manifests that exist, and the computed stats into web-card.json
node scripts/release.mjs push-tag vX.Y.Z Creates the annotated tag on HEAD once HEAD is origin/main, the tree is clean and check vX.Y.Z passes; pushes the tag by name, retries up to three times, and succeeds only when git ls-remote lists the tag at HEAD
node scripts/badges.mjs <dir> Network. Writes the README badges into <dir>: github-views.svg from the GitHub traffic API, which needs ANALYTICS_TOKEN with Administration read on the repository, and the npm download badges once package.json names a public package. BADGE_SOURCES limits the sources, for example views. A source that has no data yet is skipped and leaves the published badge in place; a rejected request fails the run
node scripts/ci-local.mjs [--skip-verify] [--json] Runs every step of CI's test job in order, read from ci.yml, then scripts/verify.mjs when ffmpeg, ffprobe and Playwright are installed, and lists what the run did not cover: the OS and Node matrix, L2 media, the GitHub-side release and sync steps, and verify when it could not run. For use when GitHub Actions is unavailable
node scripts/verify.mjs [--only <case>] [--keep] [--json] Copies shared/ and each own part outside the repository, builds the fixture media with ffmpeg, serves every case and runs the part's checkers on it. A fail case passes only when its checker exits 1 with an error for the case's rule; a pass case only when the checker passes that rule without skipping it. Exits 2 when ffmpeg or Playwright is missing; install Playwright with npm install --no-save --no-package-lock playwright and npx playwright install chromium
node scripts/import-findings.mjs --check <research folder> Recomputes each ledger entry's source hash from the private research folder it was written from and fails on any difference; --write records new hashes. The research folder never enters the repository
npm test The test suite, including sync runs against local fake upstream repositories, the evidence ledger and rules, the citation lint, the own-part checkers' pure code and a red-first check of the harness

To change a pin, edit vendor/sources.json, run sync, check, notices, gen and the guard, and review the upstream diff before committing.

Workflows

  • CI (.github/workflows/ci.yml) runs on pushes to main, on pull requests and by hand, on Ubuntu, macOS and Windows with Node 22 and 24: the tests, vendor-sync.mjs check, bundle-sync.mjs check, the guard, notices --check, gen.mjs --check, check-history.mjs, release.mjs check and release.mjs pack.
  • Verify (.github/workflows/verify.yml) runs on Ubuntu with ffmpeg and Playwright's headless Chromium, on pushes to main and pull requests that touch the shared runtime, an own part, rules.json, the evidence or the fixtures, on every vX.Y.Z tag and by hand: node scripts/verify.mjs, every fixture judged red first.
  • Release (.github/workflows/release.yml) runs when a vX.Y.Z tag is pushed, or by hand for an existing tag, one run at a time. The tag's commit must be on main. It runs every check again and packs the ZIP, creates a draft release with the ZIP and SHA256SUMS.txt, removes any other asset from the draft, downloads both again and verifies them, then publishes the release as Latest and waits until releases/latest points to it. It never publishes a prerelease, because installers read releases/latest, and it leaves a draft unpublished when a newer version is already published, so Latest never moves back. A tag that is already published is only verified: its download is checked against the tag's tree, not compared byte for byte with a rebuild.
  • Badges (.github/workflows/badges.yml) runs every six hours and by hand. It renders the view badge with BADGE_SOURCES=views and commits it to the badges branch, which holds only badge SVGs and is never merged; the README reads the badge from there. Without the ANALYTICS_TOKEN secret it publishes nothing and the last badge stays.
  • Bundle sync (.github/workflows/bundle-sync.yml) runs every day at 03:17 UTC and by hand. It moves each bundled skill to the latest release of its repository, regenerates the generated files, runs every check, commits to the bundle-sync branch, checks a clean worktree of that commit, pushes the branch with a token scoped to that one step, opens or updates one pull request, starts CI on it and merges it once CI passes on its head commit and main has not moved. When no repository published a newer release it ends after the first step.
  • Vendor sync (.github/workflows/vendor-sync.yml) runs on Mondays at 02:41 UTC and by hand. A read-only job stages every source whose upstream HEAD moved past its pin, applies the update to a throwaway checkout, runs the guard and uploads the staged folder. A second job confirms the staged files against upstream, classifies the update, applies it, regenerates the notices and the generated files, runs every check, commits to the vendor-sync branch, checks a clean worktree of that commit, pushes the branch with a token scoped to that one step and opens or updates one pull request from it, never a fork's. It then starts the CI workflow on the branch, because pull requests and pushes made with the workflow's token start no workflow themselves. A safe update, one that changes no shipped file, merges only after that CI run passes on the pull request's head commit and while main has not moved; a needs-review update gets the needs-review label and waits for the owner. When the branch already holds the update, the next run reuses it, so a safe update that could not merge is tried again. A blocked source fails the run and stays at its pin. After 45 quiet days on main the workflow enables itself again through the API, which may not reset GitHub's 60-day timer, and opens an issue; it never pushes to main. The workflow needs the repository setting that lets GitHub Actions create pull requests. If main gets branch protection with required CI checks, the CI run the workflow starts reports those checks on the pull request's head commit, which is where required checks are read; this has not been tried on GitHub yet.

To release: run node scripts/release.mjs bump X.Y.Z, move the [Unreleased] notes into a dated ## [X.Y.Z] - YYYY-MM-DD entry, remove the pre-release banner from this README, run node scripts/release.mjs check vX.Y.Z, commit and push main, wait until CI passes on that commit, then run node scripts/release.mjs push-tag vX.Y.Z.

Exclude globs in vendor/sources.json are matched against paths inside the part and anchored at the part's folder, unlike gitignore patterns: agents/** leaves out the top-level agents folder only, and **/__pycache__ matches at any depth. A pattern that matches a folder leaves out everything in it, and a trailing slash is ignored.

To record Apple text that a part quotes, add an entry to the part's appleText list in vendor/sources.json with the file, the lines ("12", "12-14" or "12, 30"), the source and the reason, then run sync.

Disclaimers

  • design-pro-max is an independent open-source project and has not been authorized, sponsored, or otherwise approved by Apple Inc.
  • design-pro-max is unrelated to nextlevelbuilder/ui-ux-pro-max.
  • The apple skill's icon, skills/apple/assets/apple.svg, is the Apple logo, a trademark of Apple Inc. It identifies the skill's subject only, is not covered by the MIT License, and must not be modified, recolored or redrawn. The drawing comes from devicon (MIT) via buidangminh23/icons-pro-max. It will be replaced with a neutral icon if Apple asks.
  • The bundled icons-pro-max skill ships third-party brand marks under skills/icons-pro-max/assets/ (payment networks, social and app logos, technology logos, AI provider marks and connector icons). They belong to their owners, are not covered by any MIT licence, and must not be modified, recolored or redrawn; skills/icons-pro-max/LICENSE says so.
  • The vendored parts are their authors' work and are shipped as published. Known errors are recorded as errata in each part's UPSTREAM.json rather than edited in place.

Apple, the Apple logo, iOS, iPadOS, macOS, watchOS, tvOS, visionOS, iPhone, iPad, Mac, Apple Watch, Safari, Siri, Swift, SwiftUI, Xcode, TestFlight, App Store, AirPlay, Apple Pay, Apple Pencil, Apple TV, Apple Vision Pro, CarPlay, CareKit, Digital Crown, Dynamic Island, Face ID, FaceTime, HealthKit, HomeKit, iCloud, iMessage, Live Photos, Mac Catalyst, ResearchKit, SharePlay, Spotlight, Touch ID, SF Symbols, Apple Wallet, Live Activities, Handoff, Multi-Touch, Finder, Mission Control and Apple Music are trademarks of Apple Inc., registered in the U.S. and other countries and regions. IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license.

License

The project's own files are released under the MIT License, except the Apple logo at skills/apple/assets/apple.svg (see Disclaimers). Each vendored part keeps its upstream MIT licence in its own LICENSE file, and each bundled skill keeps its repository's licence in skills/<name>/LICENSE; the brand marks in skills/icons-pro-max/assets/ are excluded from it, as that file states.

Reviews (0)

No results found