Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
{
"name": "apple-dev-skills",
"source": {
"source": "local",
"path": "./"
"source": "git-subdir",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use a supported marketplace source type

When Codex discovers this repo marketplace, this entry is rejected before it can redirect users to Socket. I checked Codex's marketplace parser (codex-rs/core/src/plugins/marketplace.rs): RawMarketplaceManifestPluginSource is an internally tagged enum with only the local variant, so source: "git-subdir" deserializes as an unknown variant. As a result, users following codex plugin marketplace add gaelic-ghost/apple-dev-skills cannot load or install the compatibility marketplace entry.

Useful? React with 👍 / 👎.

"url": "https://github.com/gaelic-ghost/socket.git",
"path": "./plugins/apple-dev-skills",
"ref": "main"
},
"policy": {
"installation": "AVAILABLE",
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "apple-dev-skills",
"version": "6.14.0",
"version": "6.14.1",
"description": "Apple development workflows for Codex, including SwiftUI architecture, Safari extensions, Swift OpenAPI clients, and DocC authoring guidance.",
"author": {
"name": "Gale",
Expand Down
24 changes: 11 additions & 13 deletions .github/scripts/validate_repo_docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,13 @@ echo "Validating local discovery mirrors..."
[[ ! -e "plugins/apple-dev-skills" ]] || fail "Did not expect a nested plugins/apple-dev-skills tree."

echo "Validating root README contract..."
require_contains "README.md" 'Treat `productivity-skills` as the default baseline layer for general repo-doc and maintenance work'
require_contains "README.md" 'This repository is the canonical source of truth for Gale'"'"'s Apple, Swift, and Xcode workflow skills.'
require_contains "README.md" 'Most Apple Dev Skills workflows are useful as a standalone plugin.'
require_contains "README.md" 'The [`socket`](https://github.com/gaelic-ghost/socket) repository is Gale'"'"'s plugin superproject and marketplace catalog.'
require_contains "README.md" 'Treat root [`skills/`](./skills/) as the canonical authored surface.'
require_contains "README.md" 'Keep shared reusable assets in [`shared/`](./shared/)'
require_contains "README.md" 'Run the repository test suite for skill and metadata changes:'
require_contains "README.md" 'Use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for maintainer workflow details'
require_not_contains "README.md" 'plugins/apple-dev-skills/'
require_contains "README.md" 'Apple Dev Skills has moved into the [Socket marketplace](https://github.com/gaelic-ghost/socket).'
require_contains "README.md" 'codex plugin marketplace add gaelic-ghost/socket'
require_contains "README.md" 'codex plugin marketplace upgrade socket'
require_contains "README.md" 'codex plugin marketplace add gaelic-ghost/apple-dev-skills'
require_contains "README.md" 'codex plugin marketplace upgrade apple-dev-skills'
require_contains "README.md" 'That compatibility marketplace now points at the Socket-hosted plugin payload.'
require_contains "README.md" 'prefer the Socket entry: `apple-dev-skills@socket`'
require_not_contains "README.md" 'install-plugin-to-socket'

echo "Validating CONTRIBUTING contract..."
Expand All @@ -58,14 +56,14 @@ require_contains "CONTRIBUTING.md" 'bash .github/scripts/validate_repo_docs.sh'
require_contains "CONTRIBUTING.md" 'uv run pytest'

echo "Validating AGENTS contract..."
require_contains "AGENTS.md" 'This repository is the canonical home for Gale'"'"'s Apple, Swift, and Xcode workflow skills.'
require_contains "AGENTS.md" 'This repository is a compatibility marketplace and README pointer'
require_contains "AGENTS.md" 'The canonical authored Apple Dev Skills payload now lives in `gaelic-ghost/socket` under `plugins/apple-dev-skills`.'
require_contains "AGENTS.md" 'Treat `productivity-skills` as the default baseline maintainer layer'
require_contains "AGENTS.md" 'Preserve standalone-install guidance for public users who install only `apple-dev-skills`'
require_contains "AGENTS.md" 'Root `skills/` is the canonical authored and exported surface.'
require_contains "AGENTS.md" 'Keep shared reusable assets in [`shared/`](./shared/) and maintainer tests in [`tests/`](./tests/).'
require_contains "AGENTS.md" 'Keep `.agents/plugins/marketplace.json` as the compatibility surface that redirects to the Socket subdirectory.'
require_contains "AGENTS.md" 'Do not edit the legacy payload copy here for new feature work; make payload changes in Socket.'
require_contains "AGENTS.md" 'require reading the relevant Apple documentation before proposing implementation changes.'
require_contains "AGENTS.md" 'Keep `explore-apple-swift-docs` as the canonical docs-routing surface'
require_not_contains "AGENTS.md" 'plugins/apple-dev-skills/'

echo "Validating reality audit guide..."
audit_doc="docs/maintainers/reality-audit.md"
Expand Down
16 changes: 8 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# AGENTS.md

This file is the Apple Dev Skills child-repo override for work done from `socket`. Follow the root `socket` guidance for general git, docs, release, branch, and maintainer workflow rules.
This file is the Apple Dev Skills compatibility-repo override. Follow the root `socket` guidance for general git, docs, release, branch, and maintainer workflow rules when changing the canonical Socket-hosted payload.

## Scope

- This repository is the canonical home for Gale's Apple, Swift, and Xcode workflow skills.
- This repository is a compatibility marketplace and README pointer for users who installed `gaelic-ghost/apple-dev-skills` directly.
- The canonical authored Apple Dev Skills payload now lives in `gaelic-ghost/socket` under `plugins/apple-dev-skills`.
- Treat `productivity-skills` as the default baseline maintainer layer for general repo docs and maintenance work; this repo is the narrower specialist layer when Apple-specific behavior should change the workflow.
- Preserve standalone-install guidance for public users who install only `apple-dev-skills`, while allowing the public README quickstart to lead with the Socket marketplace when users want Apple Dev Skills plus companion workflows from one catalog.
- Root `skills/` is the canonical authored and exported surface.
- Keep shared reusable assets in [`shared/`](./shared/) and maintainer tests in [`tests/`](./tests/).
- Preserve standalone-install guidance for public users who install only `apple-dev-skills`, while leading new users to the Socket marketplace.
- Keep `.agents/plugins/marketplace.json` as the compatibility surface that redirects to the Socket subdirectory.
- Do not edit the legacy payload copy here for new feature work; make payload changes in Socket.

## Apple Rules

Expand All @@ -23,15 +24,14 @@ This file is the Apple Dev Skills child-repo override for work done from `socket

## Install Guidance

- The public README may lead with `codex plugin marketplace add gaelic-ghost/socket` and `codex plugin marketplace upgrade socket` because Socket is the preferred catalog when users want Apple Dev Skills plus companion workflows.
- Also document `codex plugin marketplace add gaelic-ghost/apple-dev-skills` and `codex plugin marketplace upgrade apple-dev-skills` for Apple-only installs.
- The public README should lead with `codex plugin marketplace add gaelic-ghost/socket` and `codex plugin marketplace upgrade socket` because Socket is the preferred catalog.
- Also document `codex plugin marketplace add gaelic-ghost/apple-dev-skills` and `codex plugin marketplace upgrade apple-dev-skills` for compatibility installs.
- Keep explicit refs scoped to pinned reproducible installs and manual local clone marketplace instructions scoped to development, unpublished testing, or fallback cases.

## Validation

```bash
bash .github/scripts/validate_repo_docs.sh
uv run pytest
```

Use the docs validator when README, AGENTS, ROADMAP, active skill inventory, or maintainer docs change. Use pytest when skill behavior, scripts, validation helpers, or tested contracts change.
129 changes: 12 additions & 117 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,140 +1,35 @@
# apple-dev-skills
# Apple Dev Skills

Apple, Swift, SwiftUI, Safari, Xcode, Swift OpenAPI client, DocC, and `Dash.app` workflows for Codex.
Apple Dev Skills has moved into the [Socket marketplace](https://github.com/gaelic-ghost/socket).

![Codex plugin directory filtered to the Socket marketplace, showing Apple Dev Skills listed alongside companion plugins below a Productivity Skills suggestion.](./docs/media/codex-plugin-directory-socket-apple-dev-skills.png)
This repository now stays online as a compatibility marketplace for people who installed `gaelic-ghost/apple-dev-skills` directly. The plugin payload is served from Socket at `plugins/apple-dev-skills`, so existing standalone users can keep using the same marketplace name while receiving the Socket-owned Apple Dev Skills payload.

Promo audio: [Apple Dev Skills Codex Workflows Promo](./docs/media/apple-dev-skills-codex-workflows-promo.mp3)
## Recommended Install

The Socket marketplace is the easiest way to install Apple Dev Skills alongside the companion Productivity Skills workflows.

## Table of Contents

- [Overview](#overview)
- [Quick Start](#quick-start)
- [Usage](#usage)
- [Development](#development)
- [Repo Structure](#repo-structure)
- [Active Skills](#active-skills)
- [Release Notes](#release-notes)
- [License](#license)

## Overview

### Status

`apple-dev-skills` is maintained and supported by Gale as a key component of the Socket Marketplace.

### What This Project Is

Apple development work has sharp edges around framework behavior, Xcode project state, documentation, accessibility, and build tooling. This plugin keeps helps agents move *swiftly* through a challenging landscape, instead of fumbling over mountains of implicit behavior.

This repository is the canonical source of truth for Gale's Apple, Swift, and Xcode workflow skills.

### Motivation

I wanted to build stuff faster, but agents were struggling with Swift, declarative frameworks, Xcode and `.pbxproj`, the `swift build` `xcodebuild` split, etc. I figured I could improve that a bit. it's gone pretty well, so far~

## Quick Start

The easiest way to install Apple Dev Skills with its companion workflows is through Gale's Socket marketplace:
Use Socket when you want Apple Dev Skills and Gale's companion plugins from one Codex marketplace:

```bash
codex plugin marketplace add gaelic-ghost/socket
```

Restart Codex, open the plugin directory, choose `Socket`, and install or enable `apple-dev-skills`. Install `productivity-skills` from the same marketplace too if you want the Apple bootstrap and guidance-sync workflows.

When the Socket marketplace changes, refresh it:

```bash
codex plugin marketplace upgrade socket
```

## Usage
After adding Socket, open the Codex plugin directory, choose `Socket`, and install or enable `apple-dev-skills`.

Use Apple Dev Skills when an agent is helping with:
## Compatibility Install

- Swift and SwiftUI implementation
- Xcode build, run, test, and project workflows
- Safari extension and SafariServices integration choices
- Swift OpenAPI client generation and `URLSession` transport integration
- Swift package bootstrap, build, and testing
- Apple UI accessibility work
- DocC comments, articles, and documentation catalogs
- Swift source formatting and file organization
- Apple docs lookup before design or code changes
- Apple-specific repo guidance setup or refresh

Most Apple Dev Skills workflows are useful as a standalone plugin. Bootstrap and guidance-sync workflows also need `productivity-skills`, because that companion plugin owns the reusable repo-maintenance workflow that Apple Dev Skills applies to Swift packages and Xcode apps.

Treat `productivity-skills` as the default baseline layer for general repo-doc and maintenance work, and use Apple Dev Skills when Apple-specific behavior should shape the workflow.

The [`socket`](https://github.com/gaelic-ghost/socket) repository is Gale's plugin superproject and marketplace catalog.

If you only want the Apple plugin without the rest of Socket, the standalone marketplace remains supported:
Existing Apple-only users can keep this marketplace:

```bash
codex plugin marketplace add gaelic-ghost/apple-dev-skills
codex plugin marketplace upgrade apple-dev-skills
```

When installed as a Codex plugin, Apple Dev Skills also registers Xcode's built-in MCP bridge through `xcrun mcpbridge`. Users still need to allow external agents in Xcode's Intelligence settings and keep the relevant project open in Xcode before external Codex sessions can use Xcode-provided tools.

## Development

Treat root [`skills/`](./skills/) as the canonical authored surface. Keep shared reusable assets in [`shared/`](./shared/) and tests in [`tests/`](./tests/).

Use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for maintainer workflow details, and use [AGENTS.md](./AGENTS.md) for agent-facing repo rules.

Run the repository test suite for skill and metadata changes:

```bash
bash .github/scripts/validate_repo_docs.sh
uv run pytest
```

## Repo Structure

```text
.
├── .codex-plugin/
├── .mcp.json
├── docs/
├── shared/
├── skills/
├── tests/
├── AGENTS.md
├── CONTRIBUTING.md
├── README.md
└── ROADMAP.md
```

## Active Skills

- `apple-ui-accessibility-workflow`
- `author-swift-docc-docs`
- `bootstrap-swift-package`
- `bootstrap-xcode-app-project`
- `explore-apple-swift-docs`
- `format-swift-sources`
- `safari-extension-control-workflow`
- `structure-swift-sources`
- `swift-openapi-client-workflow`
- `swift-package-build-run-workflow`
- `swift-package-testing-workflow`
- `swift-package-workflow`
- `swiftui-app-architecture-workflow`
- `sync-swift-package-guidance`
- `sync-xcode-project-guidance`
- `xcode-app-project-workflow`
- `xcode-build-run-workflow`
- `xcode-testing-workflow`
That compatibility marketplace now points at the Socket-hosted plugin payload. New feature work, issue tracking, release notes, and maintainer documentation live in [gaelic-ghost/socket](https://github.com/gaelic-ghost/socket).

## Release Notes
## Duplicate Installs

Use GitHub releases and Git history to track shipped changes for this repository.
If both Socket and this compatibility marketplace are configured, prefer the Socket entry: `apple-dev-skills@socket`.

## License

This repository is licensed under Apache 2.0. See [LICENSE](./LICENSE).
Apple Dev Skills is licensed under Apache 2.0. See [LICENSE](./LICENSE).
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "apple-dev-skills-maintainer"
version = "6.14.0"
version = "6.14.1"
description = "Maintainer tooling for the apple-dev-skills repository"
requires-python = ">=3.9"
dependencies = []
Expand Down
22 changes: 22 additions & 0 deletions tests/test_compatibility_marketplace.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from __future__ import annotations

import json
from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]


def test_standalone_marketplace_points_to_socket_payload() -> None:
marketplace = json.loads((ROOT / ".agents/plugins/marketplace.json").read_text(encoding="utf-8"))
plugin = marketplace["plugins"][0]

assert marketplace["name"] == "apple-dev-skills"
assert plugin["name"] == "apple-dev-skills"
assert plugin["source"] == {
"source": "git-subdir",
"url": "https://github.com/gaelic-ghost/socket.git",
"path": "./plugins/apple-dev-skills",
"ref": "main",
}
assert plugin["policy"]["installation"] == "AVAILABLE"
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.