Skip to content

Commit 1aac8c4

Browse files
committed
docs: normalize apple-dev-skills repo guidance
1 parent 4736a42 commit 1aac8c4

11 files changed

Lines changed: 220 additions & 734 deletions

.github/scripts/validate_repo_docs.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ echo "Validating roadmap presence..."
2626

2727
echo "Validating root docs presence..."
2828
[[ -f README.md ]] || fail "Missing README.md at repo root."
29+
[[ -f CONTRIBUTING.md ]] || fail "Missing CONTRIBUTING.md at repo root."
2930
[[ -f AGENTS.md ]] || fail "Missing AGENTS.md at repo root."
3031
[[ -f docs/maintainers/workflow-atlas.md ]] || fail "Missing docs/maintainers/workflow-atlas.md."
3132
[[ -f docs/maintainers/reality-audit.md ]] || fail "Missing docs/maintainers/reality-audit.md."
@@ -45,9 +46,18 @@ require_contains "README.md" 'This repository is the canonical source of truth f
4546
require_contains "README.md" 'Treat root [`skills/`](./skills/) as the canonical authored surface.'
4647
require_contains "README.md" 'Keep shared reusable assets in [`shared/`](./shared/)'
4748
require_contains "README.md" 'Run the repository test suite for skill and metadata changes:'
49+
require_contains "README.md" 'Use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for maintainer workflow details'
4850
require_not_contains "README.md" 'plugins/apple-dev-skills/'
4951
require_not_contains "README.md" 'install-plugin-to-socket'
5052

53+
echo "Validating CONTRIBUTING contract..."
54+
require_contains "CONTRIBUTING.md" 'Use this guide when preparing changes so the repository stays understandable, testable, and truthful about the Apple workflow surface it actually ships.'
55+
require_contains "CONTRIBUTING.md" '## Contribution Workflow'
56+
require_contains "CONTRIBUTING.md" '## Local Setup'
57+
require_contains "CONTRIBUTING.md" '## Development Expectations'
58+
require_contains "CONTRIBUTING.md" 'bash .github/scripts/validate_repo_docs.sh'
59+
require_contains "CONTRIBUTING.md" 'uv run pytest'
60+
5161
echo "Validating AGENTS contract..."
5262
require_contains "AGENTS.md" 'This repository is the canonical home for Gale'"'"'s Apple, Swift, and Xcode workflow skills.'
5363
require_contains "AGENTS.md" 'Treat `productivity-skills` as the default baseline maintainer layer'
@@ -85,6 +95,7 @@ require_contains "$audit_doc" "## Audit Procedure"
8595
require_contains "$audit_doc" "## Local Discovery Smoke Test Flow"
8696
require_contains "$audit_doc" "## Reporting Shape"
8797
require_contains "$audit_doc" 'this repository'"'"'s shipped Apple plugin owns the end-user toolkit contract'
98+
require_contains "$audit_doc" 'Historical milestone planning decisions that no longer need standalone docs should live in `ROADMAP.md`'
8899
require_not_contains "$audit_doc" 'plugins/apple-dev-skills/'
89100

90101
echo "Validating customization consolidation review..."

AGENTS.md

Lines changed: 79 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
# AGENTS.md
22

3-
## Repository Role
3+
Use this file for durable repo-local guidance that Codex should follow before changing code, docs, or project workflow surfaces in this repository.
4+
5+
## Repository Scope
6+
7+
### What This File Covers
48

59
- This repository is the canonical home for Gale's Apple, Swift, and Xcode workflow skills.
610
- 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.
711
- Root `skills/` is the canonical authored and exported surface.
812
- Keep shared reusable assets in [`shared/`](./shared/) and maintainer tests in [`tests/`](./tests/).
913

10-
## Apple-specific Rules
14+
### Where To Look First
15+
16+
- Start with [`README.md`](./README.md), [`CONTRIBUTING.md`](./CONTRIBUTING.md), [`ROADMAP.md`](./ROADMAP.md), [`docs/maintainers/workflow-atlas.md`](./docs/maintainers/workflow-atlas.md), and [`docs/maintainers/reality-audit.md`](./docs/maintainers/reality-audit.md).
17+
- When a task touches one shipped workflow, read the corresponding directory under [`skills/`](./skills/) before inferring policy from sibling skills or older maintainer notes.
18+
- Use [`.github/scripts/validate_repo_docs.sh`](./.github/scripts/validate_repo_docs.sh) and the pytest suite as the enforced source-of-truth checks for public-doc drift.
19+
20+
## Working Rules
21+
22+
### Change Scope
23+
24+
- Keep work bounded to the smallest coherent docs, skill, validator, and test surface that resolves the real drift.
25+
- If a task starts needing a new active skill, a new export surface, or a broad repo-structure change, stop and surface that scope change before continuing.
26+
- Collapse retired historical planning notes into `ROADMAP.md` or still-live maintainer docs instead of preserving stale standalone docs.
27+
28+
### Source of Truth
1129

1230
- For Swift, Apple framework, Apple platform, SwiftUI, SwiftData, Observation, AppKit, UIKit, Foundation-on-Apple, or Xcode-related guidance, require reading the relevant Apple documentation before proposing implementation changes.
1331
- State the documented Apple behavior being relied on before design or code changes are proposed.
@@ -21,7 +39,64 @@
2139
- Keep `Package.swift` explicit about its package-wide Swift language mode. On current Swift 6-era manifests, prefer `swiftLanguageModes: [.v6]` as the default declaration and treat `swiftLanguageVersions` as a legacy alias used only when an older manifest surface requires it.
2240
- Treat `Package.resolved` and similar package-manager outputs as generated files. Do not tell agents to hand-edit them.
2341

24-
## Export Boundaries
42+
### Communication and Escalation
43+
44+
- Surface non-obvious tradeoffs before widening a change from one skill or one doc into repo-wide wording or policy.
45+
- When docs, validator rules, and tests disagree, explain which surface is stale and what you are changing to bring them back into alignment.
46+
- If a historical maintainer doc still contains live decisions, move those decisions into the active docs before deleting the old file.
47+
48+
## Commands
49+
50+
### Setup
51+
52+
```bash
53+
uv sync --dev
54+
```
55+
56+
### Validation
57+
58+
```bash
59+
bash .github/scripts/validate_repo_docs.sh
60+
uv run pytest
61+
```
62+
63+
### Optional Project Commands
64+
65+
```bash
66+
uv run python .github/scripts/validate_skill_creator_contract.py
67+
```
68+
69+
Use the extra validator when a change touches the skill-creator contract or repo-doc rules that mention it.
70+
71+
## Review and Delivery
72+
73+
### Review Expectations
74+
75+
- Explain which shipped docs, validator rules, and tests changed and why.
76+
- Call out deleted or consolidated maintainer docs explicitly so reviewers can see where their durable conclusions moved.
77+
- Keep docs-only cleanup distinct from behavior-changing skill work when that split helps review.
78+
79+
### Definition of Done
80+
81+
- The changed root docs, maintainer docs, validator rules, and tests all describe the same live repository behavior.
82+
- Grounded validation has been run or any skipped checks are called out plainly.
83+
- Nearby docs and roadmap history have been updated when the change retires stale planning notes or changes the public workflow contract.
84+
85+
## Safety Boundaries
86+
87+
### Never Do
2588

26-
- Keep root `skills/` as the canonical authored surface even though the repo ships plugin packaging metadata.
2789
- Do not reintroduce nested packaged plugin trees or alternate export surfaces under `plugins/`.
90+
- Do not weaken the Apple docs-first rule or present Apple behavior from memory when current docs are available.
91+
- Do not tell maintainers to hand-edit generated package-manager state such as `Package.resolved`.
92+
- Do not preserve stale historical planning docs as live guidance once their durable conclusions have already been absorbed elsewhere.
93+
94+
### Ask Before
95+
96+
- Ask before adding or removing active skills, changing the top-level export shape, or broadening the repository into a new product surface.
97+
- Ask before deleting a maintainer doc whose decisions have not yet been folded into `ROADMAP.md` or a still-live maintainer reference.
98+
- Ask before changing repo-wide policy that would affect downstream synced or bootstrapped guidance assets.
99+
100+
## Local Overrides
101+
102+
This repository does not currently use deeper `AGENTS.md` files under `skills/` or `docs/`. Treat this root file as the repo-wide agent contract, and use the individual skill docs plus maintainer references to refine behavior for the specific surface you are editing.

CONTRIBUTING.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Contributing to apple-dev-skills
2+
3+
Use this guide when preparing changes so the repository stays understandable, testable, and truthful about the Apple workflow surface it actually ships.
4+
5+
## Table of Contents
6+
7+
- [Overview](#overview)
8+
- [Contribution Workflow](#contribution-workflow)
9+
- [Local Setup](#local-setup)
10+
- [Development Expectations](#development-expectations)
11+
- [Pull Request Expectations](#pull-request-expectations)
12+
- [Communication](#communication)
13+
- [License and Contribution Terms](#license-and-contribution-terms)
14+
15+
## Overview
16+
17+
### Who This Guide Is For
18+
19+
Use this guide when you are changing the shipped skills, the maintainer docs, the validator, or the supporting tests for this repository.
20+
21+
### Before You Start
22+
23+
Read [`README.md`](./README.md), [`ROADMAP.md`](./ROADMAP.md), [`AGENTS.md`](./AGENTS.md), [`docs/maintainers/workflow-atlas.md`](./docs/maintainers/workflow-atlas.md), and [`docs/maintainers/reality-audit.md`](./docs/maintainers/reality-audit.md) before broadening a docs or workflow change. If the work touches one specific skill, read that skill directory first instead of generalizing from sibling skills.
24+
25+
## Contribution Workflow
26+
27+
### Choosing Work
28+
29+
Take work from the live repo surface, not from stale planning notes. Use `ROADMAP.md` for current milestone status, the validator and tests for the enforced public contract, and the active skill directories under [`skills/`](./skills/) for the shipped behavior.
30+
31+
### Making Changes
32+
33+
Keep changes bounded to the smallest coherent surface that fixes the real drift. When a shipped skill, maintainer doc, validator rule, or test expectation changes, update the nearby supporting docs and tests in the same pass so the repo stays self-consistent. Treat `README.md` as the public repo entrypoint, `CONTRIBUTING.md` as the maintainer workflow guide, `AGENTS.md` as durable agent policy, and `ROADMAP.md` as the durable planning and history surface.
34+
35+
### Asking For Review
36+
37+
Ask for review after the changed docs, validator expectations, and relevant tests agree with each other. Call out any deliberate scope cuts, any follow-up work left in `ROADMAP.md`, and any validation you could not run.
38+
39+
## Local Setup
40+
41+
### Runtime Config
42+
43+
Sync the local maintainer environment with:
44+
45+
```bash
46+
uv sync --dev
47+
```
48+
49+
This repository does not require app secrets or background services for its normal docs and skill-validation workflow.
50+
51+
### Runtime Behavior
52+
53+
The repository is healthy when the docs validator passes, the pytest suite passes, and the root docs describe the same shipped surface as the active skill directories. Use [`docs/maintainers/reality-audit.md`](./docs/maintainers/reality-audit.md) when you need the repo's source-of-truth order or audit procedure.
54+
55+
## Development Expectations
56+
57+
### Naming Conventions
58+
59+
Keep skill names literal and workflow-oriented. Preserve the existing Apple-specific terminology, the current active skill names, and the repo's distinction between canonical authored surfaces under [`skills/`](./skills/) and packaging metadata under the plugin manifests.
60+
61+
### Accessibility Expectations
62+
63+
This repository does not currently maintain a separate root `ACCESSIBILITY.md`. When you change Apple accessibility guidance here, keep it grounded in current Apple documentation, update the relevant skill docs and tests in the same pass, and avoid presenting generic visual-design advice as if it were accessibility guidance.
64+
65+
### Verification
66+
67+
Use the grounded repo checks:
68+
69+
```bash
70+
bash .github/scripts/validate_repo_docs.sh
71+
uv run pytest
72+
```
73+
74+
Run additional targeted checks only when the changed surface has a narrower validation path worth calling out.
75+
76+
## Pull Request Expectations
77+
78+
Summarize what changed, why the docs or workflow contract needed to move, and which validator or test results support the change. Keep docs-only cleanup clearly separated from behavior-changing skill work when the split matters for review.
79+
80+
## Communication
81+
82+
Raise questions before widening scope into new skills, new export surfaces, or broader repo-structure changes. If a historical maintainer doc is no longer carrying live decision-making value, prefer collapsing its durable conclusions into `ROADMAP.md` or the still-live maintainer docs instead of preserving another orphan planning note.
83+
84+
## License and Contribution Terms
85+
86+
This repository is licensed under Apache 2.0. See [LICENSE](./LICENSE) for the governing contribution and reuse terms.

README.md

Lines changed: 38 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,19 @@ Apple, Swift, and Xcode workflow skills for Codex and Claude Code.
55
## Table of Contents
66

77
- [Overview](#overview)
8-
- [Setup](#setup)
8+
- [Quick Start](#quick-start)
99
- [Usage](#usage)
1010
- [Development](#development)
11-
- [Verification](#verification)
11+
- [Repo Structure](#repo-structure)
12+
- [Active Skills](#active-skills)
1213
- [Release Notes](#release-notes)
1314
- [License](#license)
14-
- [Active Skills](#active-skills)
15-
- [Repository Layout](#repository-layout)
1615

1716
## Overview
1817

19-
`apple-dev-skills` bundles reusable workflows for Apple-platform development work across Swift, SwiftUI, Xcode, SwiftPM, testing, formatting, and repo-guidance maintenance.
20-
2118
### Status
2219

23-
This repository is active and currently ships Apple-platform development skills plus shared maintainer resources and tests.
24-
25-
Recent work strengthened two of the more infrastructure-heavy surfaces:
26-
27-
- `structure-swift-sources` now has a clearer structural-cleanup contract, stronger file-header guidance, and a user-facing header inventory template.
28-
- `explore-apple-swift-docs` now teaches direct Xcode MCP and Dash lookup paths first, with Dash localhost HTTP documented as the direct machine-readable fallback.
20+
This repository is active and available for maintainer use.
2921

3022
### What This Project Is
3123

@@ -35,13 +27,9 @@ This repository is the canonical source of truth for Gale's Apple, Swift, and Xc
3527

3628
It exists to keep Apple-platform workflow guidance in one dedicated repository with explicit requirements around Apple documentation, Xcode-safe workflows, and clear source-of-truth boundaries.
3729

38-
## Setup
30+
## Quick Start
3931

40-
Sync the maintainer environment before running repo-local validation:
41-
42-
```bash
43-
uv sync --dev
44-
```
32+
This repository is primarily the authored source tree for the shipped Apple workflow skills rather than an end-user app with a separate getting-started path. If you want to understand what the repo currently ships, start with [Active Skills](#active-skills) and [`docs/maintainers/workflow-atlas.md`](./docs/maintainers/workflow-atlas.md). If you want to modify the repository, go to [Development](#development) and use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the maintainer workflow.
4533

4634
## Usage
4735

@@ -57,32 +45,48 @@ Use this repository's skills when the work is about:
5745
- Apple-project guidance sync
5846
- Apple-platform documentation routing
5947

48+
Use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for maintainer workflow details, and use [`ROADMAP.md`](./ROADMAP.md) for planned and completed milestone-level work.
49+
6050
## Development
6151

6252
### Setup
6353

64-
Treat root [`skills/`](./skills/) as the canonical authored surface. Keep shared reusable assets in [`shared/`](./shared/), maintainer docs in [`docs/`](./docs/), and install metadata in [`.codex-plugin/plugin.json`](./.codex-plugin/plugin.json) and [`.claude-plugin/marketplace.json`](./.claude-plugin/marketplace.json).
54+
Sync the maintainer environment before editing skills, tests, or maintainer docs:
55+
56+
```bash
57+
uv sync --dev
58+
```
6559

6660
### Workflow
6761

68-
Keep the repo honest about its Apple docs-first policy. When a skill changes, update the relevant tests and maintainer guidance in the same pass rather than letting the packaging or guidance drift.
62+
Treat root [`skills/`](./skills/) as the canonical authored surface. Keep shared reusable assets in [`shared/`](./shared/), maintainer docs in [`docs/`](./docs/), and install metadata in [`.codex-plugin/plugin.json`](./.codex-plugin/plugin.json) and [`.claude-plugin/marketplace.json`](./.claude-plugin/marketplace.json).
63+
64+
Keep the repo honest about its Apple docs-first policy. When a skill changes, update the relevant tests and maintainer guidance in the same pass rather than letting the packaging or guidance drift. Use [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the normal contributor workflow and review expectations.
6965

70-
## Verification
66+
### Validation
7167

7268
Run the repository test suite for skill and metadata changes:
7369

7470
```bash
75-
uv sync --dev
71+
bash .github/scripts/validate_repo_docs.sh
7672
uv run pytest
7773
```
7874

79-
## Release Notes
80-
81-
Use Git history and GitHub releases to track shipped changes for this repository.
82-
83-
## License
75+
## Repo Structure
8476

85-
See [LICENSE](./LICENSE).
77+
```text
78+
.
79+
├── .codex-plugin/
80+
├── .claude-plugin/
81+
├── AGENTS.md
82+
├── CONTRIBUTING.md
83+
├── README.md
84+
├── ROADMAP.md
85+
├── docs/maintainers/
86+
├── shared/
87+
├── skills/
88+
└── tests/
89+
```
8690

8791
## Active Skills
8892

@@ -103,22 +107,10 @@ See [LICENSE](./LICENSE).
103107
- `xcode-build-run-workflow`
104108
- `xcode-testing-workflow`
105109

106-
## Repository Layout
110+
## Release Notes
107111

108-
```text
109-
.
110-
├── .claude-plugin/
111-
│ └── marketplace.json
112-
├── .codex-plugin/
113-
│ └── plugin.json
114-
├── AGENTS.md
115-
├── LICENSE
116-
├── README.md
117-
├── ROADMAP.md
118-
├── docs/
119-
├── pyproject.toml
120-
├── shared/
121-
├── skills/
122-
├── tests/
123-
└── uv.lock
124-
```
112+
Use Git history and GitHub releases to track shipped changes for this repository.
113+
114+
## License
115+
116+
See [LICENSE](./LICENSE).

0 commit comments

Comments
 (0)