P1: last_error_survives_successful_calls used ad_check_permissions as
a success-only probe but it returns ErrPermDenied without Accessibility
permission, overwriting the TLS error slot. Replaced with null-tolerant
list accessors that never set last-error.
P2: build.rs auto-copied the generated header into include/, making the
CI drift check self-heal instead of catching stale ABI. Removed the
copy step; CI now diffs OUT_DIR output against the committed header.
Added scripts/update-ffi-header.sh for developers.
P2: ad_free_handle suppressed ActionNotSupported but the default adapter
returns PlatformNotSupported. Added PlatformNotSupported to the match.
P3: ad_get_clipboard returned Ok with *out=NULL when clipboard text had
an interior NUL. Now returns ErrInternal with a diagnostic message.
* feat: restructure skills for ClawHub publishing with CI auto-publish
- Sync core skill to 54 commands (add notification commands)
- Move macOS skill from .claude/skills/ to git-tracked skills/
- Extract Notification Center section to references/notifications.md
- Add ClawHub metadata (version, tags, requirements) to all SKILL.md
- Remove macos.md from core skill (moved to platform skill)
- Create scripts/link-skills.sh for local dev symlinks
- Add publish-skills CI job to release.yml (ClawHub auto-publish)
- Add skill install prompt to npm postinstall
* refactor: consolidate macOS into single agent-desktop skill
Merge agent-desktop-macos back into agent-desktop/references/macos.md
as a single publishable skill. Includes Notification Center content
inline rather than as a separate reference file.