AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Osx Compliance

skill-boltzmannentropy-osxskills-osx-compliance · by BoltzmannEntropy

Use when auditing Apple-platform app projects for release infrastructure and distribution compliance. Covers macOS DMG readiness and iOS/iPad App Store Connect release gates via companion checks.

No reviews yet
0 installs
32 views
0.0% view→install

Install

$ agentstack add skill-boltzmannentropy-osxskills-osx-compliance

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-boltzmannentropy-osxskills-osx-compliance)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Osx Compliance? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Apple Platform Compliance Check

Overview

This skill audits Apple-platform app projects in the workspace for release infrastructure, versioning, publication hygiene, website/download integrity, model/documentation parity, and distribution blockers.

Primary focus:

  • macOS desktop distribution (.dmg) infrastructure
  • iOS/iPad distribution (.ipa + App Store Connect/TestFlight) preflight delegation

When this skill is applied, enforce the same baseline on both existing projects and new projects. The baseline includes system-log UX plus the MimikaCODE production surfaces defined in this file.

Related Skills:

  • For in-depth code review before App Store submission, see osx-review/SKILL.md.
  • For iOS/iPad upload/submission checks, see osx-ios/SKILL.md.

When to Use

  • Before releasing a new version of any macOS, iOS, or iPad app
  • When setting up a new macOS app project
  • Periodic compliance audits across all projects
  • After major infrastructure changes to verify consistency

iOS/iPad Companion Gate

If a project contains an iOS target, this skill MUST require a passed osx-ios preflight:

bash ./skills/osx-ios/scripts/check_ios_dist.sh --app-root 

Treat any FAIL result as release-blocking before TestFlight/App Store actions.

Project Discovery

All macOS app projects follow this structure:

/
├── PRJ/
│   ├── CODE/           # Primary source location
│   │   ├── flutter_app/         # Flutter app (if nested)
│   │   ├── backend/             # Backend code
│   │   ├── scripts/             # Build scripts
│   │   └── ...
│   └── WEB/            # Website repository

The skill automatically discovers all *PRJ directories in the workspace.

Compliance Checklist

1. Required Files

| File | Purpose | Required | |------|---------|----------| | scripts/build_dmg.sh or scripts/build-dmg.sh | DMG creation script | YES | | RELEASE_NOTES.md | Release documentation | YES | | LICENSE | Source code license (BSL 1.1) | YES | | BINARY-LICENSE.txt | Binary distribution license | YES | | LICENSE.md | License overview document | YES | | README.md | Project documentation | YES | | install.sh | Installation script | YES | | issues.sh | Diagnostic script | YES | | scripts/release.sh | End-to-end release automation | YES |

2. Build Script Features

The build_dmg.sh script MUST include:

| Feature | Description | Check Pattern | |---------|-------------|---------------| | SHA256 Generation | Checksum for DMG file | shasum -a 256 | | Auto Version Extraction | Read version from pubspec.yaml | read_version.*pubspec\|VERSION.*grep.*pubspec | | create-dmg Support | Pretty DMG with window layout | create-dmg | | hdiutil Fallback | Basic DMG creation fallback | hdiutil create | | License Embedding | Copy LICENSE files to app bundle | LICENSE\|BINARY-LICENSE in script | | Release Notes Copy | Copy RELEASE_NOTES.md to dist/ | RELEASE_NOTES in script | | dist/ Directory | Output directory for artifacts | DIST_DIR\|dist/ |

3. Version Sources

Projects MUST have at least one version source:

| Location | Format | |----------|--------| | flutter_app/pubspec.yaml | version: X.Y.Z+N | | pubspec.yaml (root) | version: X.Y.Z+N | | flutter_app/lib/version.dart | const String appVersion = "X.Y.Z"; | | backend/version.py | VERSION = "X.Y.Z" |

4. Control Scripts (bin/)

| Script | Purpose | |--------|---------| | bin/appctl or bin/ctl | Service control (up/down/status/logs) | | bin/_mcp_server.py | MCP server for Claude integration |

5. Window-Close Backend Shutdown UX (Release Blocker)

Desktop apps with bundled local backends MUST shut down the backend when the user closes the app window.

| Requirement | Description | Check Pattern | |-------------|-------------|---------------| | Exit interception | App intercepts window close / app-exit request before terminating | onExitRequested\|didRequestAppExit\|WindowListener | | Shutdown call | Exit path calls backend stop logic | stopBackend\|stop_server\|shutdown_backend | | Stopping dialog/UI | Close path displays visible "Stopping server/backend" progress UI | Stopping Server\|Stopping backend\|stop.*before exit | | No orphan backend | Post-close check confirms backend port/process is gone | lsof -iTCP / process check in smoke test docs |

6. GitHub Release + Website Sync (Release Blocker)

Every DMG release must produce a real, populated GitHub release and matching website links.

| Requirement | Description | Check Pattern | |-------------|-------------|---------------| | Release automation | scripts/release.sh creates/updates GitHub release and uploads assets | gh release create\|gh release upload | | No empty releases | Release page must contain assets (not tag-only) | gh release view --json assets | | Required assets | Release includes DMG, DMG SHA256, source ZIP, source ZIP SHA256, release notes, release notes SHA256 | -arm64.dmg\|source.zip\|RELEASE_NOTES | | Direct DMG links | Website download buttons/nav resolve directly to current DMG asset URL | /releases/download/v.*/.*\\.dmg | | Version alignment | Version badge/text, release tag, and artifact filenames match | v[0-9]+\\.[0-9]+\\.[0-9]+ or project format | | Gatekeeper instructions | If unsigned/not notarized, release notes include explicit launch steps and security path | Unsigned DMG.*Gatekeeper\|Open Anyway |

7. Documentation and Model-Catalog Parity (Release Blocker)

| Requirement | Description | Check Pattern | |-------------|-------------|---------------| | README model table complete | README lists all app-shipped/supported model variants (including quantized aliases/namespaces where applicable) | ## Supported Models | | Website model table complete | Website "Supported Models" mirrors README/app capability set | Supported Models in WEB | | Pregenerated samples indexed | README includes pregenerated example index for shipped demos | pregenerated | | Capability accuracy | Marketing/docs do not claim unsupported capabilities (for example, cloning on non-cloning models) | manual diff vs runtime engines | | First-run guidance present | README/website include first-launch backend warm-up and model-download guidance | startup log\|Download |

8. Clean-Machine First-Run Validation (Release Blocker)

| Requirement | Description | Check Pattern | |-------------|-------------|---------------| | No stale app collision | Old copies in /Applications removed before smoke testing new DMG | manual check | | No stale model cache assumption | Validate first run with empty app-scoped cache/models | app-specific cache path check | | Backend port conflict handling | App surfaces clear "restart/stop conflicting process" path if port is in use | port in use\|Restart Server | | Bundled PDF serving check | /api/pdf/list and /pdf/ work from bundled build | health smoke test | | Relative resource pathing | Bundled backend uses app-relative/runtime paths, never source checkout paths | no hardcoded repo paths |

9. MimikaCODE Production UX Baseline (Release Blocker)

Apply these checks to both existing apps and newly created apps.

| Requirement | Description | Check Pattern | |-------------|-------------|---------------| | Job Queue UI | Background queue with live status transitions (queued, processing, paused, cancelling, completed, failed, cancelled), queue position, and control actions (pause, resume, cancel, delete) | Job Queue\|queued\|processing\|paused\|cancelling\|completed\|failed\|cancelled\|queue_position\|pause\|resume\|cancel\|delete | | Persistent Job History | Durable history of all jobs with core metadata (timestamps, engine/model, status, chunk progress, timing metrics, output paths/URLs) | Job History\|generation history\|created_at\|status\|processed_chunks\|total_chunks\|timing_metrics\|output_path\|audio_url\|video_url | | Models Page | Dedicated models page shows model path/location, download status, and disk usage | Models\|model path\|download status\|disk usage | | Settings Screen: System Folders + Output Folder | Settings must display system/runtime folders and allow configuring output folder | System Folders\|Application Support\|Logs\|Output Folder | | Jobs History Page + Playback | Dedicated jobs-history page lists previous jobs and supports audio/video playback plus save/download for generated media | Jobs History\|History\|Playback\|Play\|VideoPlayer\|video_url\|audio_url\|Save\|Download | | WebSocket Queue Updates | Queue/history reflects live job events over websocket (job_created, job_update, job_completed, job_failed, job_cancelled) | job_created\|job_update\|job_completed\|job_failed\|job_cancelled\|WebSocket | | Full File Path Display | UI surfaces full output paths and provides open/reveal-folder affordance | Output Path\|Full Path\|Reveal in Finder\|Open Folder |

Audit Procedure

Step 1: Discover Projects

# Find all PRJ directories in workspace
ls -d /*PRJ 2>/dev/null

Step 2: Audit Each Project

For each project, check:

PROJECT_DIR=""

# Required files
[ -f "$PROJECT_DIR/scripts/build_dmg.sh" ] || [ -f "$PROJECT_DIR/scripts/build-dmg.sh" ]
[ -f "$PROJECT_DIR/RELEASE_NOTES.md" ]
[ -f "$PROJECT_DIR/LICENSE" ]
[ -f "$PROJECT_DIR/BINARY-LICENSE.txt" ]
[ -f "$PROJECT_DIR/LICENSE.md" ]
[ -f "$PROJECT_DIR/README.md" ]
[ -f "$PROJECT_DIR/install.sh" ]
[ -f "$PROJECT_DIR/issues.sh" ]
[ -f "$PROJECT_DIR/scripts/release.sh" ]

# Build script features (if script exists)
BUILD_SCRIPT="$PROJECT_DIR/scripts/build_dmg.sh"
grep -q 'shasum' "$BUILD_SCRIPT"           # SHA256
grep -qE 'read_version|VERSION.*pubspec' "$BUILD_SCRIPT"  # Auto version
grep -q 'create-dmg' "$BUILD_SCRIPT"       # create-dmg
grep -q 'hdiutil' "$BUILD_SCRIPT"          # hdiutil fallback
grep -qE 'LICENSE|BINARY-LICENSE' "$BUILD_SCRIPT"  # License embedding
grep -q 'RELEASE_NOTES' "$BUILD_SCRIPT"    # Release notes copy

# Release script checks
RELEASE_SCRIPT="$PROJECT_DIR/scripts/release.sh"
grep -q 'gh release create' "$RELEASE_SCRIPT"
grep -q 'gh release upload' "$RELEASE_SCRIPT"
grep -qE 'source\\.zip|RELEASE_NOTES' "$RELEASE_SCRIPT"

# Window-close backend shutdown UX (Flutter desktop apps with local backend)
MAIN_DART="$PROJECT_DIR/flutter_app/lib/main.dart"
if [ -f "$MAIN_DART" ] && [ -d "$PROJECT_DIR/backend" ]; then
  grep -qE 'onExitRequested|didRequestAppExit|WindowListener' "$MAIN_DART"
  grep -qE 'stopBackend|stop_server|shutdown_backend' "$MAIN_DART"
  grep -qE 'Stopping Server|Stopping backend' "$MAIN_DART"
fi

# MimikaCODE production UX baseline checks
UI_DIR="$PROJECT_DIR/flutter_app/lib"
if [ -d "$UI_DIR" ]; then
  rg -n 'Job Queue|queued|processing|paused|cancelling|completed|failed|cancelled|queue_position|pause|resume|cancel|delete' "$UI_DIR"
  rg -n 'Job History|generation history|created_at|status|processed_chunks|total_chunks|timing_metrics|output_path|audio_url|video_url' "$UI_DIR"
  rg -n 'Models|model path|download status|disk usage' "$UI_DIR"
  rg -n 'Settings|System Folders|Application Support|Logs|Output Folder' "$UI_DIR"
  rg -n 'Jobs History|History|Playback|Play|VideoPlayer|video_url|audio_url|Save|Download' "$UI_DIR"
  rg -n 'job_created|job_update|job_completed|job_failed|job_cancelled|WebSocket' "$UI_DIR"
  rg -n 'Output Path|Full Path|Reveal in Finder|Open Folder' "$UI_DIR"
fi

# Website direct-download link checks (if website repo exists)
PROJECT_PARENT="$(dirname "$PROJECT_DIR")"
PRJ_NAME="$(basename "$PROJECT_PARENT")"
APP_PREFIX="${PRJ_NAME%PRJ}"
WEBSITE_DIR="$PROJECT_PARENT/${APP_PREFIX}WEB"
if [ -d "$WEBSITE_DIR" ]; then
  rg -n '/releases/download/.+\\.dmg' "$WEBSITE_DIR"/*.html
fi

Step 3: Generate Report

Output format:

# macOS App Compliance Report

**Generated:** YYYY-MM-DD HH:MM:SS
**Projects Audited:** N

## Summary

| Project | Status | Issues |
|---------|--------|--------|
| AppName | PASS/FAIL | N issues |
| ... | ... | ... |

## Detailed Results

### Project: 

**Path:** ``
**Status:** PASS/FAIL

#### Required Files
- [x] scripts/build_dmg.sh
- [ ] RELEASE_NOTES.md (MISSING)
- ...

#### Build Script Features
- [x] SHA256 generation
- [ ] Auto version extraction (MISSING)
- ...

#### Window-Close Backend Shutdown UX
- [x] Exit interception implemented
- [x] Backend stop invoked during close
- [x] Stopping dialog shown during close
- [ ] No orphan backend validation documented (MISSING)

#### GitHub Release + Website Sync
- [x] release.sh automates release upload
- [ ] Release assets incomplete (MISSING SOURCE ZIP SHA)
- [ ] Website download button points to non-DMG URL (MISSING)

#### Documentation and Model-Catalog Parity
- [x] README has Supported Models section
- [ ] Website model table missing variants (MISSING)
- [ ] Pregenerated sample index incomplete (MISSING)

#### MimikaCODE Production UX Baseline
- [x] Job Queue implemented with live status tracking
- [ ] Job queue controls incomplete (MISSING PAUSE/RESUME/CANCEL/DELETE OR CANCELLING/CANCELLED STATE)
- [ ] Job history metadata persistence incomplete (MISSING CHUNK/TIMING/OUTPUT URL FIELDS)
- [ ] Models page missing disk-usage view (MISSING)
- [ ] Settings missing system-folders display (MISSING)
- [ ] Jobs history page missing audio/video playback or save/download actions (MISSING)
- [ ] WebSocket live queue updates missing (MISSING JOB_CREATED/JOB_UPDATE/JOB_COMPLETED/JOB_FAILED/JOB_CANCELLED)
- [ ] Full output path not shown in result cards (MISSING)

#### Issues Found
1. Missing RELEASE_NOTES.md
2. Build script lacks auto version extraction

#### Recommended Fixes
- Create RELEASE_NOTES.md using template
- Add version extraction to build script

Fix Templates

Flutter Window-Close Backend Shutdown Pattern

For Flutter desktop apps with a bundled backend, add an exit-request hook that blocks immediate app termination, shows a stopping dialog, stops backend, then exits:

AppLifecycleListener? _appLifecycleListener;
bool _allowImmediateExit = false;
bool _isShuttingDown = false;

@override
void initState() {
  super.initState();
  _appLifecycleListener = AppLifecycleListener(
    onExitRequested: _handleExitRequested,
  );
}

Future _handleExitRequested() async {
  if (_allowImmediateExit) return AppExitResponse.exit;
  if (_isShuttingDown) return AppExitResponse.cancel;
  _isShuttingDown = true;
  _showStoppingDialog();
  await backendService.stopBackend();
  _allowImmediateExit = true;
  await SystemNavigator.pop();
  return AppExitResponse.cancel;
}

Also add a smoke test step:

  • Launch app from /Applications
  • Close window
  • Confirm stopping dialog appears
  • Confirm backend process/port is gone (lsof -iTCP: -sTCP:LISTEN)

RELEASE_NOTES.md Template

#  v1.0.0 Release Notes

**Release Date:**  

## Overview

 v1.0.0 is the initial release of .

## Features

### 
- **Feature**: Description

### 
- **Feature**: Description

## Technical Details

- **Version**: 1.0.0 (build 1)
- **Platform**: macOS (Apple Silicon and Intel)
- **Framework**: Flutter 3.x
- **Minimum macOS**: 12.0 (Monterey)

## Installation

1. Download `-1.0.0-macos.dmg`
2. Open the DMG and drag  to Applications
3. On first launch, right-click and select "Open" (Gatekeeper bypass)

## Unsigned DMG (Apple Gatekeeper)

As of , the  DMG is not yet signed/notarized by Apple.
macOS may block first launch until you explicitly allow it in security settings.

1. Open the DMG and drag .app to Applications.
2. In Applications, right-click .app and select Open.
3. Click Open in the warning dialog.
4. If macOS still blocks launch, go to: System Settings -> Privacy & Security -> Open Anyway (for ), then confirm with password/Touch ID.
5. On first launch, wait for the bundled backend to start. A startup-log screen for a

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [BoltzmannEntropy](https://github.com/BoltzmannEntropy)
- **Source:** [BoltzmannEntropy/OSXSkills](https://github.com/BoltzmannEntropy/OSXSkills)
- **License:** MIT
- **Homepage:** https://qneura.ai/apps.html

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.