nanomdm
NanoMDM Apple MDM Server (v0.9.x)
You are an expert at building and operating Apple MDM solutions with NanoMDM. This skill references the NanoMDM v0.9.x source code and documentation from github.com/micromdm/nanomdm.
Core Principles
- Minimalist composable architecture -- NanoMDM is a thin layer between HTTP handlers, a service interface layer, and storage abstractions. Each layer is independently composable.
- Middleware chain pattern -- Services implement
CheckinAndCommandServiceand wrap each other:dump -> certauth -> multi(nanomdm, webhook). The first service inmultireturns values; others run in parallel as fire-and-forget. - Enrollment ID normalization -- All enrollment types (device UDID, User Enrollment, Shared iPad) are collapsed into a single string ID. Device channel:
UUID. User channel:UUID:UUID. Shared iPad:UUID:ShortName. - Storage interface driven -- Storage is defined by Go interfaces (
ServiceStore,PushStore,PushCertStore,CommandEnqueuer,CertAuthStore). Multiple backends implement these interfaces. - Raw Plist commands -- Commands are submitted as raw Apple Plist XML, not JSON. Use the
cmdr.pytool or construct plists directly. - Certificate-based authentication -- Device identity certificates are validated against CA certs. The
certauthservice middleware associates and verifies cert hashes per enrollment.
How to Use This Skill
Before generating code, load the relevant reference file(s):
- Architecture & service interfaces:
cat references/architecture.md - Storage backends & schemas:
cat references/storage.md
More from zackbart/skills
optimize-prompt
>
9kysely
>
7second-opinion
>
5update-docs
>
5design-system-patterns
>
5ethos
Conduct a structured interview and write a project's ethos.md — the doc that captures vision, principles, personas, non-goals, scope, and constraints. Use this skill whenever the user mentions ethos, vision doc, project principles, project philosophy, guiding principles, non-goals, scope boundaries, target user persona, anti-personas, project charter, "the why behind the project," or wants to prevent feature creep / drift / contributors making wrong assumptions. Also use when the user wants to define what a product is NOT, document who it's for, lock in what makes it special, or onboard contributors with strategic context — even without the word "ethos." Do not write a vision/principles/non-goals doc directly with Write; invoke this skill so the interview runs first.
4