From c7ff0dcc10aff427fea84572956441726904c9ce Mon Sep 17 00:00:00 2001 From: Gale W Date: Sun, 31 May 2026 17:47:03 -0400 Subject: [PATCH] plugin: point apple dev skills to socket --- .agents/plugins/marketplace.json | 6 +- .codex-plugin/plugin.json | 2 +- .github/scripts/validate_repo_docs.sh | 24 ++--- AGENTS.md | 16 +-- README.md | 129 +++--------------------- pyproject.toml | 2 +- tests/test_compatibility_marketplace.py | 22 ++++ uv.lock | 2 +- 8 files changed, 60 insertions(+), 143 deletions(-) create mode 100644 tests/test_compatibility_marketplace.py diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 69390f5..706f546 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -7,8 +7,10 @@ { "name": "apple-dev-skills", "source": { - "source": "local", - "path": "./" + "source": "git-subdir", + "url": "https://github.com/gaelic-ghost/socket.git", + "path": "./plugins/apple-dev-skills", + "ref": "main" }, "policy": { "installation": "AVAILABLE", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index a47e7ae..cd1fe0e 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -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", diff --git a/.github/scripts/validate_repo_docs.sh b/.github/scripts/validate_repo_docs.sh index df38912..09a5f38 100644 --- a/.github/scripts/validate_repo_docs.sh +++ b/.github/scripts/validate_repo_docs.sh @@ -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..." @@ -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" diff --git a/AGENTS.md b/AGENTS.md index 5e85b79..3563f97 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 @@ -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. diff --git a/README.md b/README.md index 38926f5..cc9aea9 100644 --- a/README.md +++ b/README.md @@ -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). diff --git a/pyproject.toml b/pyproject.toml index b53763f..7fe9fe3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 = [] diff --git a/tests/test_compatibility_marketplace.py b/tests/test_compatibility_marketplace.py new file mode 100644 index 0000000..18ea0d6 --- /dev/null +++ b/tests/test_compatibility_marketplace.py @@ -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" diff --git a/uv.lock b/uv.lock index ea62b9b..1306957 100644 --- a/uv.lock +++ b/uv.lock @@ -8,7 +8,7 @@ resolution-markers = [ [[package]] name = "apple-dev-skills-maintainer" -version = "6.14.0" +version = "6.14.1" source = { virtual = "." } [package.dev-dependencies]