Skip to main content

qiaomu-macos-dev: one-shot native Mac apps

Turn one sentence into a notarized SwiftUI macOS app with Lucide icons, settings/About, Sparkle updates, and a designed DMG.

Source facts

Repository
joeseesun/qiaomu-macos-dev
Last source activity
November 4, 2026 at 02:59
Detected SKILL.md language
English
Stars
5
Forks
0

Uses

Use when you want a menu-bar or windowed native macOS app scaffolded end to end—icons, settings, Sparkle, signing, notarization, DMG, and GitHub Releases—instead of hand-writing the skeleton.

Prerequisites

A Mac with Developer ID signing material when you need notarization; Python 3 for the generator; GitHub access for the private-by-default repo and Releases/appcast.

How to use

State the app job in one line plus Chinese/English names and menu-bar vs window → run scripts/new_app.py with Lucide icon and defaults → sparkle-key.sh, build.sh, and --selftest → iterate UI with --snapshot → release.sh for notarize, staple, DMG, and appcast.

Limitations

Not for iOS/iPadOS/watchOS, Electron/Tauri/web apps, browser extensions, Obsidian plugins, .pkg helper installers, or generic Swift questions with no app to ship.

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
qiaomu-macos-dev
description
One-sentence, one-shot development of polished native macOS apps (SwiftUI + AppKit, SwiftPM, no Xcode project): menu bar apps with a hotkey panel or normal Dock/window apps, scaffolded with an Icon Composer icon from Lucide, a settings window with About (version, update check, feedback, follow/tip QR), Sparkle auto-update, Vercel-style UI verified by offscreen snapshots, Developer ID signing, notarization, a designed DMG, a GitHub repo (private by default, ask before public) with an illustrated product-page README, PR flow and GitHub Releases with an appcast. Default skill for any macOS app work by 乔木: "做一个 mac 软件", "开发 macOS app", "菜单栏工具", "做个 Mac 小工具", "加自动更新", "做设置页/关于页", "设计 app 图标", "公证/打包 DMG", "发布 mac app 到 GitHub", plus debugging focus, hotkey, TCC permission, IME and Sparkle issues in such apps. Excludes: iOS/iPadOS/watchOS apps, Electron/Tauri/web apps, browser extensions and native-messaging helpers (use qiaomu-dev-skill), Obsidian plugins, .pkg installers for helpers, and generic Swift questions with no app to build.
# Qiaomu macOS Dev Turn one sentence into a shipped, notarized, auto-updating Mac app that looks designed. Distilled from building 乔木闪记 / Jot end to end (github.com/joeseesun/qiaomu-jot); every rule here cost a real bug. ## Router - New app → run the generator, then the [One-Shot Workflow](references/one-shot-workflow.md). Do not hand-write the skeleton. - Existing app → read only the reference for the task (table below) and keep the project's conventions. - Reply in Chinese; code, commands and identifiers stay English. - Ask only what changes the build: the app's job in one line, Chinese + English name, menu bar vs window (infer when obvious). Everything else gets a good default and is listed in the handoff. ## Generate ```bash python3 scripts/new_app.py --dir ~/Code/qiaomu-<slug> --name <AsciiName> --zh <中文名> \ --bundle-id ai.qiaomu.<slug> --repo joeseesun/qiaomu-<slug> \ --kind menubar|window --tagline "<一句话价值>" --lucide <icon> --symbol <sf-symbol> cd ~/Code/qiaomu-<slug> && ./scripts/sparkle-key.sh && ./build.sh && build/<Name>.app/Contents/MacOS/<Name> --selftest ``` The project builds, signs and self-tests on the first run. It has a main menu (⌘, ⌘W ⌘Q and Edit keys), settings tabs plus About, Sparkle, launch at login, `--snapshot` / `--selftest`, `release.sh` (universal binary → notarize → staple → DMG → appcast) and `install-local.sh`. Details: [Project Template](references/project-template.md). ## One-Shot Phases (each has a gate) 1. **Intent**: pain point, the one core action, success in 10 seconds. Gate: one-line tagline. 2. **Scaffold**: the generator above. Gate: build + selftest pass. 3. **Core feature**: put logic in pure functions and grow `selftest()` with every feature. Gate: selftest passes. 4. **UI**: [UI Polish](references/ui-polish.md). Gate: snapshots in light and dark of every surface, looked at, not assumed. 5. **Settings + About + onboarding**: [Settings & About](references/settings-about.md). Gate: snapshot of each tab. 6. **Icon**: [Icon](references/icon.md). Gate: the icon is rendered and viewed at 1024 and 32 px. 7. **Permissions**: [Permissions](references/permissions.md). Gate: first-run path shows *why* before macOS asks. 8. **Install and dogfood**: `./install-local.sh` replaces /Applications and relaunches. Do this after every build the user will test. 9. **GitHub**: [GitHub](references/github.md). The repo is **private by default**; ask before making it public. README is a product page. 10. **Release**: [Release](references/release.md) + [Auto-Update](references/auto-update.md). Gate: Gatekeeper says "Notarized Developer ID", appcast version and EdDSA signature verified, a download from the release URL opens. Before handing over, walk the [Details Checklist](references/details-checklist.md). When something breaks, check the [Pitfalls](references/pitfalls.md) first. ## Non-Negotiables - **Look before you claim.** Render every user-visible surface with `--snapshot` (and the DMG window and icon), open the PNG, fix what looks wrong. Signature checks are not visual checks. - **Design taste**: Vercel black/white, Geist, one accent at most, never purple, no muddy grey. Generous spacing, explicit close buttons, keyboard first. No vertical side-stripe accents (`border-left` bars); use a tint, weight or a small dot. Identify other apps by their logo (simple-icons, Lucide fallback), not by text. - **Ordinary users first**: generic defaults that work with zero setup. Never tailor defaults to the developer's own folders. Save the user's content verbatim; never silently reformat it. - **Sign with Developer ID on every build**, including dev builds, so macOS permission grants survive rebuilds. Hardened runtime. Sign nested code inside-out, never `--deep`. - **Secrets never enter the repo or this skill**: the Sparkle private key stays in the login keychain, notarization uses the `notary` keychain profile, and only the public key is committed. - **Git**: feature branch → PR → merge; never push to `main`. Publish, make public, or release only when the user asked. - Lessons from a new app go into the matching reference here (bump `manifest.json` version), not into a new skill. ## Reference Map | Task | Read | |---|---| | Phases, gates, handoff format | [one-shot-workflow](references/one-shot-workflow.md) | | Generated files, scripts, how to extend | [project-template](references/project-template.md) | | Menu bar, panels, focus, hotkeys, windows | [app-architecture](references/app-architecture.md) | | Visual design, snapshots, motion, copy | [ui-polish](references/ui-polish.md) | | Settings window, About, onboarding | [settings-about](references/settings-about.md) | | App icon, menu bar glyph, DMG art | [icon](references/icon.md) | | TCC, Accessibility, Apple Events, files from other apps | [permissions](references/permissions.md) | | Sparkle, appcast, gentle reminders | [auto-update](references/auto-update.md) | | Signing, notarization, DMG, versioning | [release](references/release.md) | | Repo, README, About/topics, PRs, Releases | [github](references/github.md) | | Known bugs and their fixes | [pitfalls](references/pitfalls.md) | | The things users don't think to ask for | [details-checklist](references/details-checklist.md) | Copyright (c) 向阳乔木 · X https://x.com/vista8 · GitHub https://github.com/joeseesun/
View on GitHub