Skills for Real Engineers. Straight from my .agents directory.
test-mac-app
Agent skill fromdaveebbelaar/bama
Test a macOS app at three levels, from Swift Testing unit tests and an in-app self-test to a debug bridge that lets an agent drive the running app and read its state, plus computer use for real clicks. Use when adding logic, fixing a bug, before a release, or when the user asks for tests, end-to-end checks, or "make sure it works".
How to install test-mac-app
npx skills add daveebbelaar/bama# or add only this skill to Claude Code: copy the folder
skills/ship/test-mac-app/
# into
~/.claude/skills/test-mac-app/ (all projects)
.claude/skills/test-mac-app/ (one project)
1# Test a Mac app23Three levels, cheapest first. Each new story gets the cheapest level that4can prove its acceptance criteria. A bug fix starts with a test that fails.56| Level | Proves | Speed |7| --- | --- | --- |8| Unit tests (Swift Testing) | Rules, parsing, data | Seconds |9| Self-test (`--selftest`) | The app's real functions on a test store | Seconds |10| Key events and menu audit (inside the self-test) | Keyboard flows and every shortcut, without the screen | Seconds |11| Debug bridge + computer use | Global shortcuts, panels, permissions, other apps | Minutes |1213Snapshots (`build-and-verify` skill) prove how it looks. This skill proves14how it behaves.1516## 1. Unit tests1718Logic lives in a library target (`<App>Kit`) with no SwiftUI, so tests run19without the app.2021```swift22import Testing23@testable import AppKitCore2425@Test("Natural dates", arguments: [("tomorrow 9am", 1, 9), ("next fri", 5, nil)])26func parses(_ phrase: String, dayOffset: Int, hour: Int?) throws {27 let result = try #require(DateParser.parse(phrase, now: .fixed))28 #expect(result.dayOffset == dayOffset)29 #expect(result.hour == hour)30}31```3233```bash34swift test --scratch-path ~/Library/Developer/<App>/test-build35```3637- Fix the clock (`now:` parameter) and the store path in every test.38- A parser that removes text from what the user typed needs at least 2039 negative rows: real titles that contain date or time words ("Watch40 Friday Night Lights"). Add consistency rows for related phrases ("next41…
Excerpt shown under the repository's MIT license.
More skills in bama
Similar skill repositories
An agentic skills framework & software development methodology that works.
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
Public repository for Agent Skills
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
