Skip to content

skills: add Apple design animation workflows#92

Merged
gaelic-ghost merged 4 commits into
mainfrom
skills/apple-animation-symbols
Jun 28, 2026
Merged

skills: add Apple design animation workflows#92
gaelic-ghost merged 4 commits into
mainfrom
skills/apple-animation-symbols

Conversation

@gaelic-ghost

@gaelic-ghost gaelic-ghost commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Summary:

  • Add Apple Dev Skills workflows for SF Symbols, SwiftUI animation, Core Animation layers, and Apple typography.
  • Wire the new skills into Apple Dev metadata, README inventory, roadmap, validators, and targeted tests.
  • Bump shared Socket version surfaces to 7.5.0 for a minor release.

Verification:

  • uv run python /Users/galew/.codex/skills/.system/skill-creator/scripts/quick_validate.py skills/core-animation-layer-workflow
  • uv run python /Users/galew/.codex/skills/.system/skill-creator/scripts/quick_validate.py skills/apple-typography-workflow
  • bash .github/scripts/validate_repo_docs.sh
  • uv run pytest
  • uv run scripts/validate_socket_metadata.py

Summary by CodeRabbit

  • New Features

    • Expanded Apple-related guidance for SwiftUI animation, Core Animation, typography, and SF Symbols.
    • Added new workflow coverage for selecting, implementing, and validating these Apple UI behaviors.
    • Introduced new supporting documentation for better Apple design and symbol-handling scenarios.
  • Tests

    • Added validation coverage to keep the new Apple workflow guidance and repository wiring consistent.
  • Chores

    • Bumped package and plugin versions across the repository.

@gaelic-ghost gaelic-ghost added the enhancement New feature or request label Jun 28, 2026
@coderabbitai

coderabbitai Bot commented Jun 28, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds four new Apple Dev Skills workflow skills (swiftui-animation-workflow, core-animation-layer-workflow, sf-symbols-workflow, apple-typography-workflow) to plugins/apple-dev-skills, each with a SKILL.md, reference docs, agent YAML, and a customization_config.py CLI script. Updates the plugin manifest, README, ROADMAP, docs validator, and tests to register the new skills. Bumps all plugin versions from 7.4.0 to 7.5.0.

Changes

Apple Dev Skills v7.5.0 — Four New Workflow Skills

Layer / File(s) Summary
New skill SKILL.md and agent configs
plugins/apple-dev-skills/skills/swiftui-animation-workflow/SKILL.md, plugins/apple-dev-skills/skills/swiftui-animation-workflow/agents/openai.yaml, plugins/apple-dev-skills/skills/core-animation-layer-workflow/SKILL.md, plugins/apple-dev-skills/skills/core-animation-layer-workflow/agents/openai.yaml, plugins/apple-dev-skills/skills/sf-symbols-workflow/SKILL.md, plugins/apple-dev-skills/skills/sf-symbols-workflow/agents/openai.yaml, plugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.md, plugins/apple-dev-skills/skills/apple-typography-workflow/agents/openai.yaml
Defines all four new skill documents including purpose, single-path workflow, inputs/outputs, guards, handoff routing, and OpenAI agent interface configurations.
Reference docs for new skills
plugins/apple-dev-skills/skills/*/references/*.md, plugins/apple-dev-skills/skills/*/references/snippets/apple-xcode-project-core.md
Adds reference markdown files: animation decision rules, transitions/accessibility, layer ownership, model/presentation/performance, symbol selection/rendering, custom symbols/app inspection, system typography/Dynamic Type, custom fonts/licensing, and a shared Xcode project core snippet (duplicated into each skill's references).
Customization templates, flows, and config scripts
plugins/apple-dev-skills/skills/*/references/customization.template.yaml, plugins/apple-dev-skills/skills/*/references/customization-flow.md, plugins/apple-dev-skills/skills/*/scripts/customization_config.py
Adds customization.template.yaml and customization-flow.md contracts for all four skills, plus four customization_config.py CLI scripts (identical logic) managing per-skill durable YAML overrides with path, effective, apply, and reset subcommands.
Plugin manifest, README, ROADMAP, and validator wiring
plugins/apple-dev-skills/.codex-plugin/plugin.json, plugins/apple-dev-skills/README.md, plugins/apple-dev-skills/ROADMAP.md, plugins/apple-dev-skills/.github/scripts/validate_repo_docs.sh, plugins/apple-dev-skills/docs/maintainers/customization-consolidation-review.md, plugins/apple-dev-skills/pyproject.toml, README.md, ROADMAP.md, docs/maintainers/apple-design-animation-skills-plan.md
Updates the apple-dev-skills plugin manifest (version, description, keywords, defaultPrompt), README active skills list, ROADMAP milestone 52, docs validator script allowlist (24→28), and customization review counts. Adds the maintainer plan document.
New and updated tests
plugins/apple-dev-skills/tests/test_design_animation_symbol_workflows.py, plugins/apple-dev-skills/tests/test_core_animation_typography_workflows.py, plugins/apple-dev-skills/tests/test_customization_consolidation_review.py
Adds two new test modules asserting required terms/wiring for all four skills; updates consolidation review count assertions from 24 to 28.
Version bumps to 7.5.0
pyproject.toml, plugins/*/.codex-plugin/plugin.json, plugins/*/pyproject.toml
Bumps version from 7.4.0 to 7.5.0 across all plugin manifests and Python package metadata files in the repo.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • gaelic-ghost/socket#51: Modifies the same validate_repo_docs.sh logic by extending the active-skill SKILL.md allowlist/count and adding entries to the stale-installer validation loop, for a different set of added skills.

Suggested labels

documentation

🐇 Four new workflows hop into place,
SwiftUI animations, symbols with grace,
Core Animation layers timed just right,
Typography dancing in Dynamic Type light.
The carrot of v7.5 is finally here! 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: adding Apple-focused animation workflow skills, though it doesn’t mention symbols or typography.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch skills/apple-animation-symbols

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gaelic-ghost gaelic-ghost merged commit 070b75a into main Jun 28, 2026
1 of 2 checks passed
@gaelic-ghost gaelic-ghost deleted the skills/apple-animation-symbols branch June 28, 2026 20:37

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 676ed85b96

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

import yaml

SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Give each new helper its own skill name

When users run this new workflow's customization helper, path, apply, or reset will operate under ~/.config/gaelic-ghost/apple-dev-skills/swiftui-app-architecture-workflow/ instead of the SF Symbols workflow. The same copied constant appears in the other three new helpers, so customization state for these workflows collides with swiftui-app-architecture-workflow and a reset from any of them can delete that unrelated workflow's durable config.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
plugins/apple-dev-skills/.github/scripts/validate_repo_docs.sh (1)

121-138: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Validator inventory still omits two shipped workflows.

active_skill_mds now locks the repo to 28 skills, but this PR’s published inventory still includes icon-composer-app-icon-workflow in plugins/apple-dev-skills/README.md Line 142 and swift-openapi-client-workflow in Line 146, and the manifest still advertises both workflows. That leaves validate_repo_docs.sh out of sync with the shipped surface, so the docs check can pass while the validator disagrees with the README/metadata. Please add those two ./skills/.../SKILL.md entries here and bump the assertion to 30.

Suggested fix
 active_skill_mds=(
+  "./skills/icon-composer-app-icon-workflow/SKILL.md"
+  "./skills/swift-openapi-client-workflow/SKILL.md"
   "./skills/core-animation-layer-workflow/SKILL.md"
   "./skills/apple-typography-workflow/SKILL.md"
   "./skills/sf-symbols-workflow/SKILL.md"
   "./skills/swiftui-animation-workflow/SKILL.md"
   ...
 )
-[[ ${`#active_skill_mds`[@]} -eq 28 ]] || fail "Expected exactly 28 active skills, found ${`#active_skill_mds`[@]}."
+[[ ${`#active_skill_mds`[@]} -eq 30 ]] || fail "Expected exactly 30 active skills, found ${`#active_skill_mds`[@]}."

As per coding guidelines, use .github/scripts/validate_repo_docs.sh when README, AGENTS, ROADMAP, active skill inventory, or maintainer docs change.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/apple-dev-skills/.github/scripts/validate_repo_docs.sh` around lines
121 - 138, The active skill inventory in validate_repo_docs.sh is missing two
shipped workflows, so the validator no longer matches the published docs and
manifest. Update the active_skill_mds list in validate_repo_docs.sh to include
the icon-composer-app-icon-workflow and swift-openapi-client-workflow SKILL.md
entries, keeping it aligned with the README/metadata inventory. Then adjust the
count assertion in the same script from 28 to 30 so the check reflects the full
shipped surface.

Source: Coding guidelines

plugins/apple-dev-skills/skills/apple-typography-workflow/references/customization-flow.md (1)

1-31: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix copy-paste artifact: update skill name references.

This file is under apple-typography-workflow/ but its title and body still refer to swiftui-app-architecture-workflow. Update the H1 title, Purpose paragraph, and Runtime Behavior bullet to reference apple-typography-workflow so maintainers are not misled.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/apple-typography-workflow/references/customization-flow.md`
around lines 1 - 31, The customization contract still references the wrong skill
name, which is a copy-paste artifact. Update the H1 title, the Purpose section,
and the Runtime Behavior bullet in this doc to consistently use
apple-typography-workflow, and verify the wording matches the surrounding
SKILL.md/customization contract language for this skill.
plugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization-flow.md (1)

1-31: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix copy-paste artifact: update skill name references.

This file is under sf-symbols-workflow/ but its title and body still refer to swiftui-app-architecture-workflow. Update the H1 title, Purpose paragraph, and Runtime Behavior bullet to reference sf-symbols-workflow so maintainers are not misled.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization-flow.md`
around lines 1 - 31, This customization contract still contains copy-paste
references to the wrong skill name, so update the H1 title, the Purpose section,
and the Runtime Behavior bullet in customization-flow.md to consistently
reference sf-symbols-workflow. Use the existing document structure and wording,
but replace every swiftui-app-architecture-workflow mention with the correct
skill identifier so the contract matches the surrounding sf-symbols-workflow
docs.
🧹 Nitpick comments (1)
plugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.md (1)

65-65: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Capitalize Apple platform names correctly.

Line 65 uses lowercase macos and watchos in the example platform list. Per Apple branding and LanguageTool guidance, these should be macOS and watchOS. The backtick formatting preserves the intended example value, but correct casing improves accuracy in documentation that developers will read.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.md` at line
65, Update the `target_platforms` example in `SKILL.md` so the Apple platform
names use the correct branded casing; specifically, change the lowercase `macos`
and `watchos` entries in the example list to `macOS` and `watchOS` while keeping
the rest of the platform list and backtick formatting unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@plugins/apple-dev-skills/skills/apple-typography-workflow/scripts/customization_config.py`:
- Around line 21-24: The copied skill identifier in customization_config.py is
still set to the old workflow name, so durable_path() will target the wrong
config directory. Update SKILL_NAME to match the apple-typography-workflow
script, and verify the sibling customization_config copies use their own correct
identifiers so each skill reads and writes its own overrides.
- Around line 38-45: Preserve numeric scalar types in encode_scalar so values
accepted by validate_config() round-trip correctly through dump_yaml() and the
config persistence helpers. Update encode_scalar in customization_config.py to
serialize floats (and any other numeric scalars you support) as plain YAML
scalars instead of falling back to quote_string(str(value)), while keeping the
existing bool/int/None handling intact. Check the related config validation and
dump helpers to ensure the same scalar treatment is used consistently across the
referenced sections.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization-flow.md`:
- Around line 1-17: The customization contract text still refers to the wrong
skill name, so update the document to consistently use
core-animation-layer-workflow instead of swiftui-app-architecture-workflow.
Review the headings and all mentions in the Purpose, Knobs, and Runtime Behavior
sections, and align them with the actual skill name while keeping the existing
contract wording and intent intact.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/snippets/apple-xcode-project-core.md`:
- Line 81: The wording in the snippet is awkward because “wants shared” is
nonstandard and is duplicated across the new snippet copies, so update the
shared text in the relevant snippet template/source used by
apple-xcode-project-core and related copies. Replace that phrase with clearer
language that says the repo needs shared app setup or action buttons, while
keeping the rest of the guidance about portable .codex/environments/*.toml
files, repo-relative paths, and using a repo-local DerivedData path unchanged.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/scripts/customization_config.py`:
- Around line 21-24: The durable config path is using the wrong skill
identifier, so the apply/reset/path helpers will read and write the other
workflow’s customization file instead of this skill’s own config. Update the
SKILL_NAME constant in customization_config.py to match the
core-animation-layer-workflow skill name, and keep the existing config helpers
wired through that symbol so the generated path resolves to this skill’s
customization.yaml.

In
`@plugins/apple-dev-skills/skills/sf-symbols-workflow/scripts/customization_config.py`:
- Line 22: `SKILL_NAME` is hard-coded to the wrong workflow name in the
customization config script, so the durable config is written under the wrong
skill directory. Update the `SKILL_NAME` constant in `customization_config.py`
to match the `sf-symbols-workflow` script, and verify the same hard-coded value
is corrected in the identical `customization_config.py` copies for
`swiftui-animation-workflow`, `core-animation-layer-workflow`, and
`apple-typography-workflow` to preserve per-skill isolation.

In
`@plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization-flow.md`:
- Around line 1-17: Update the customization contract text to match the actual
`swiftui-animation-workflow` skill instead of
`swiftui-app-architecture-workflow`; fix the title and every body reference in
`customization-flow.md` so the docs point to the correct workflow and keep the
repo-wide customization contract consistent. Locate the affected wording in the
contract header and the runtime-behavior bullets, then replace the incorrect
skill name with the actual one throughout.

In
`@plugins/apple-dev-skills/skills/swiftui-animation-workflow/scripts/customization_config.py`:
- Around line 21-24: The durable config path is being derived from the wrong
skill identifier because customization_config.py still uses the old SKILL_NAME
value. Update SKILL_NAME to match this skill’s actual name in the customization
script so the config directory used by the config resolution logic stays
isolated and does not write into another skill’s overrides.

---

Outside diff comments:
In `@plugins/apple-dev-skills/.github/scripts/validate_repo_docs.sh`:
- Around line 121-138: The active skill inventory in validate_repo_docs.sh is
missing two shipped workflows, so the validator no longer matches the published
docs and manifest. Update the active_skill_mds list in validate_repo_docs.sh to
include the icon-composer-app-icon-workflow and swift-openapi-client-workflow
SKILL.md entries, keeping it aligned with the README/metadata inventory. Then
adjust the count assertion in the same script from 28 to 30 so the check
reflects the full shipped surface.

In
`@plugins/apple-dev-skills/skills/apple-typography-workflow/references/customization-flow.md`:
- Around line 1-31: The customization contract still references the wrong skill
name, which is a copy-paste artifact. Update the H1 title, the Purpose section,
and the Runtime Behavior bullet in this doc to consistently use
apple-typography-workflow, and verify the wording matches the surrounding
SKILL.md/customization contract language for this skill.

In
`@plugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization-flow.md`:
- Around line 1-31: This customization contract still contains copy-paste
references to the wrong skill name, so update the H1 title, the Purpose section,
and the Runtime Behavior bullet in customization-flow.md to consistently
reference sf-symbols-workflow. Use the existing document structure and wording,
but replace every swiftui-app-architecture-workflow mention with the correct
skill identifier so the contract matches the surrounding sf-symbols-workflow
docs.

---

Nitpick comments:
In `@plugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.md`:
- Line 65: Update the `target_platforms` example in `SKILL.md` so the Apple
platform names use the correct branded casing; specifically, change the
lowercase `macos` and `watchos` entries in the example list to `macOS` and
`watchOS` while keeping the rest of the platform list and backtick formatting
unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 74ada6da-cce2-42a3-b481-f2b4769819eb

📥 Commits

Reviewing files that changed from the base of the PR and between 93f6a8e and 676ed85.

⛔ Files ignored due to path filters (8)
  • plugins/agent-portability-skills/uv.lock is excluded by !**/*.lock
  • plugins/apple-dev-skills/uv.lock is excluded by !**/*.lock
  • plugins/cardhop-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/productivity-skills/uv.lock is excluded by !**/*.lock
  • plugins/python-skills/uv.lock is excluded by !**/*.lock
  • plugins/things-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/things-app/uv.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (67)
  • README.md
  • ROADMAP.md
  • docs/maintainers/apple-design-animation-skills-plan.md
  • plugins/agent-portability-skills/.codex-plugin/plugin.json
  • plugins/agent-portability-skills/pyproject.toml
  • plugins/android-dev-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/.github/scripts/validate_repo_docs.sh
  • plugins/apple-dev-skills/README.md
  • plugins/apple-dev-skills/ROADMAP.md
  • plugins/apple-dev-skills/docs/maintainers/customization-consolidation-review.md
  • plugins/apple-dev-skills/pyproject.toml
  • plugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.md
  • plugins/apple-dev-skills/skills/apple-typography-workflow/agents/openai.yaml
  • plugins/apple-dev-skills/skills/apple-typography-workflow/references/custom-fonts-and-licensing.md
  • plugins/apple-dev-skills/skills/apple-typography-workflow/references/customization-flow.md
  • plugins/apple-dev-skills/skills/apple-typography-workflow/references/customization.template.yaml
  • plugins/apple-dev-skills/skills/apple-typography-workflow/references/snippets/apple-xcode-project-core.md
  • plugins/apple-dev-skills/skills/apple-typography-workflow/references/system-typography-and-dynamic-type.md
  • plugins/apple-dev-skills/skills/apple-typography-workflow/scripts/customization_config.py
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/SKILL.md
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/agents/openai.yaml
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization-flow.md
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization.template.yaml
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/layer-ownership-and-animation-rules.md
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/model-presentation-and-performance.md
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/snippets/apple-xcode-project-core.md
  • plugins/apple-dev-skills/skills/core-animation-layer-workflow/scripts/customization_config.py
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/SKILL.md
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/agents/openai.yaml
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/references/custom-symbols-and-app-inspection.md
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization-flow.md
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization.template.yaml
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/references/snippets/apple-xcode-project-core.md
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/references/symbol-selection-and-rendering.md
  • plugins/apple-dev-skills/skills/sf-symbols-workflow/scripts/customization_config.py
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/SKILL.md
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/agents/openai.yaml
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/animation-decision-rules.md
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization-flow.md
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization.template.yaml
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/snippets/apple-xcode-project-core.md
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/transitions-effects-and-accessibility.md
  • plugins/apple-dev-skills/skills/swiftui-animation-workflow/scripts/customization_config.py
  • plugins/apple-dev-skills/tests/test_core_animation_typography_workflows.py
  • plugins/apple-dev-skills/tests/test_customization_consolidation_review.py
  • plugins/apple-dev-skills/tests/test_design_animation_symbol_workflows.py
  • plugins/cardhop-app/.codex-plugin/plugin.json
  • plugins/cardhop-app/mcp/pyproject.toml
  • plugins/codex-utilities/.codex-plugin/plugin.json
  • plugins/dotnet-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/pyproject.toml
  • plugins/python-skills/.codex-plugin/plugin.json
  • plugins/python-skills/pyproject.toml
  • plugins/reverse-engineering-skills/.codex-plugin/plugin.json
  • plugins/rust-skills/.codex-plugin/plugin.json
  • plugins/server-side-jvm/.codex-plugin/plugin.json
  • plugins/server-side-swift/.codex-plugin/plugin.json
  • plugins/spotify/.codex-plugin/plugin.json
  • plugins/swift-lang/.codex-plugin/plugin.json
  • plugins/swiftasb-skills/.codex-plugin/plugin.json
  • plugins/things-app/.codex-plugin/plugin.json
  • plugins/things-app/mcp/pyproject.toml
  • plugins/things-app/pyproject.toml
  • plugins/web-dev-skills/.codex-plugin/plugin.json
  • pyproject.toml

Comment on lines +21 to +24
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Fix the copied skill identifier before this writes another skill’s config.

Line 22 still points at swiftui-app-architecture-workflow, so durable_path() reads and writes the wrong directory for this script. That will mix apple-typography overrides into an unrelated skill path. Given the stack summary says the new scripts were copied, the sibling copies are worth checking too.

Suggested fix
 SCHEMA_VERSION = 1
-SKILL_NAME = "swiftui-app-architecture-workflow"
+SKILL_NAME = Path(__file__).resolve().parents[1].name
 CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
 DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"

Also applies to: 133-145

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/apple-typography-workflow/scripts/customization_config.py`
around lines 21 - 24, The copied skill identifier in customization_config.py is
still set to the old workflow name, so durable_path() will target the wrong
config directory. Update SKILL_NAME to match the apple-typography-workflow
script, and verify the sibling customization_config copies use their own correct
identifiers so each skill reads and writes its own overrides.

Comment on lines +38 to +45
def encode_scalar(value) -> str:
if isinstance(value, bool):
return "true" if value else "false"
if isinstance(value, int):
return str(value)
if value is None:
return quote_string("")
return quote_string(str(value))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Preserve numeric scalar types when persisting settings.

validate_config() accepts scalar values like floats, but dump_yaml() serializes anything other than bool/int as a quoted string. A setting such as 0.25 will round-trip back as "0.25", which changes the durable config contract.

Suggested fix
-def encode_scalar(value) -> str:
+def encode_scalar(value) -> str:
     if isinstance(value, bool):
         return "true" if value else "false"
     if isinstance(value, int):
         return str(value)
+    if isinstance(value, float):
+        return repr(value)
     if value is None:
         return quote_string("")
     return quote_string(str(value))
@@
         for key, value in config["settings"].items():
             if not re.fullmatch(r"[A-Za-z0-9_]+", key):
                 fail(f"Invalid settings key: {key}")
-            if isinstance(value, (dict, list)):
+            if isinstance(value, (dict, list)) or not isinstance(
+                value, (str, int, float, bool, type(None))
+            ):
                 fail(f"settings values must be scalar: {key}")

Also applies to: 86-93, 113-121

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/apple-typography-workflow/scripts/customization_config.py`
around lines 38 - 45, Preserve numeric scalar types in encode_scalar so values
accepted by validate_config() round-trip correctly through dump_yaml() and the
config persistence helpers. Update encode_scalar in customization_config.py to
serialize floats (and any other numeric scalars you support) as plain YAML
scalars instead of falling back to quote_string(str(value)), while keeping the
existing bool/int/None handling intact. Check the related config validation and
dump helpers to ensure the same scalar treatment is used consistently across the
referenced sections.

Comment on lines +1 to +17
# SwiftUI App Architecture Workflow Customization Contract

## Purpose

Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.

## Knobs

The first version defines no documented runtime-enforced knobs.

Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.

## Runtime Behavior

- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Rename this customization contract to the actual skill.

This file is owned by core-animation-layer-workflow, but the contract text still names swiftui-app-architecture-workflow. That makes the documented customization surface misleading.

Suggested fix
-# SwiftUI App Architecture Workflow Customization Contract
+# Core Animation Layer Workflow Customization Contract
 ...
-Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.
+Preserve the repo-wide customization-file contract without pretending the first version of `core-animation-layer-workflow` already has runtime-tunable behavior.
 ...
-- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
+- `core-animation-layer-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# SwiftUI App Architecture Workflow Customization Contract
## Purpose
Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.
## Knobs
The first version defines no documented runtime-enforced knobs.
Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.
## Runtime Behavior
- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.
# Core Animation Layer Workflow Customization Contract
## Purpose
Preserve the repo-wide customization-file contract without pretending the first version of `core-animation-layer-workflow` already has runtime-tunable behavior.
## Knobs
The first version defines no documented runtime-enforced knobs.
Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.
## Runtime Behavior
- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `core-animation-layer-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization-flow.md`
around lines 1 - 17, The customization contract text still refers to the wrong
skill name, so update the document to consistently use
core-animation-layer-workflow instead of swiftui-app-architecture-workflow.
Review the headings and all mentions in the Purpose, Knobs, and Runtime Behavior
sections, and align them with the actual skill name while keeping the existing
contract wording and intent intact.

- Prefer edits through Xcode-aware project structure and keep project file changes intentional and reviewed closely.
- Use `xcodebuild` for Apple platform integration validation, including scheme, destination or SDK, and configuration-specific build or test runs.
- Keep `xcodebuild` invocations reproducible in automation by passing explicit schemes, destinations or SDKs, and configurations when relevant.
- For Codex GUI worktree-first Xcode repos, use a portable `.codex/environments/*.toml` local environment file when the repo wants shared app setup or action buttons. Start from `apple-dev-skills/templates/codex-local-environments/xcode-project.toml`, keep paths repo-relative, and prefer `-derivedDataPath ./DerivedData` or another ignored repo-local build directory instead of user-global DerivedData.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Replace the nonstandard “wants shared” phrasing.

Line 81 reads awkwardly, and this sentence is duplicated in the other new snippet copies, so the typo will ship multiple times.

Suggested edit
-- For Codex GUI worktree-first Xcode repos, use a portable `.codex/environments/*.toml` local environment file when the repo wants shared app setup or action buttons. Start from `apple-dev-skills/templates/codex-local-environments/xcode-project.toml`, keep paths repo-relative, and prefer `-derivedDataPath ./DerivedData` or another ignored repo-local build directory instead of user-global DerivedData.
+- For Codex GUI worktree-first Xcode repos, use a portable `.codex/environments/*.toml` local environment file when the repo needs shared app setup or action buttons. Start from `apple-dev-skills/templates/codex-local-environments/xcode-project.toml`, keep paths repo-relative, and prefer `-derivedDataPath ./DerivedData` or another ignored repo-local build directory instead of user-global DerivedData.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- For Codex GUI worktree-first Xcode repos, use a portable `.codex/environments/*.toml` local environment file when the repo wants shared app setup or action buttons. Start from `apple-dev-skills/templates/codex-local-environments/xcode-project.toml`, keep paths repo-relative, and prefer `-derivedDataPath ./DerivedData` or another ignored repo-local build directory instead of user-global DerivedData.
- For Codex GUI worktree-first Xcode repos, use a portable `.codex/environments/*.toml` local environment file when the repo needs shared app setup or action buttons. Start from `apple-dev-skills/templates/codex-local-environments/xcode-project.toml`, keep paths repo-relative, and prefer `-derivedDataPath ./DerivedData` or another ignored repo-local build directory instead of user-global DerivedData.
🧰 Tools
🪛 LanguageTool

[style] ~81-~81: The double modal “wants shared” is nonstandard (only accepted in certain dialects). Consider “to be shared”.
Context: ...al environment file when the repo wants shared app setup or action buttons. Start from...

(NEEDS_FIXED)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/references/snippets/apple-xcode-project-core.md`
at line 81, The wording in the snippet is awkward because “wants shared” is
nonstandard and is duplicated across the new snippet copies, so update the
shared text in the relevant snippet template/source used by
apple-xcode-project-core and related copies. Replace that phrase with clearer
language that says the repo needs shared app setup or action buttons, while
keeping the rest of the guidance about portable .codex/environments/*.toml
files, repo-relative paths, and using a repo-local DerivedData path unchanged.

Source: Linters/SAST tools

Comment on lines +21 to +24
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Fix the durable config path for this skill.

SKILL_NAME is copied from another workflow, so apply/reset/path will target swiftui-app-architecture-workflow/customization.yaml instead of the core-animation skill's own file.

Suggested fix
-SKILL_NAME = "swiftui-app-architecture-workflow"
+SKILL_NAME = "core-animation-layer-workflow"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"
SCHEMA_VERSION = 1
SKILL_NAME = "core-animation-layer-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/core-animation-layer-workflow/scripts/customization_config.py`
around lines 21 - 24, The durable config path is using the wrong skill
identifier, so the apply/reset/path helpers will read and write the other
workflow’s customization file instead of this skill’s own config. Update the
SKILL_NAME constant in customization_config.py to match the
core-animation-layer-workflow skill name, and keep the existing config helpers
wired through that symbol so the generated path resolves to this skill’s
customization.yaml.

import yaml

SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🔴 Critical | ⚡ Quick win

Critical: SKILL_NAME points to wrong skill.

SKILL_NAME is hard-coded to "swiftui-app-architecture-workflow" but this script lives under sf-symbols-workflow/. This causes the durable config to be written to the wrong skill directory, breaking per-skill isolation and potentially overwriting another skill's configuration.

Update SKILL_NAME to "sf-symbols-workflow".

Given the AI summary notes these four scripts are identical copies, verify the same fix is applied to the swiftui-animation-workflow, core-animation-layer-workflow, and apple-typography-workflow variants.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/sf-symbols-workflow/scripts/customization_config.py`
at line 22, `SKILL_NAME` is hard-coded to the wrong workflow name in the
customization config script, so the durable config is written under the wrong
skill directory. Update the `SKILL_NAME` constant in `customization_config.py`
to match the `sf-symbols-workflow` script, and verify the same hard-coded value
is corrected in the identical `customization_config.py` copies for
`swiftui-animation-workflow`, `core-animation-layer-workflow`, and
`apple-typography-workflow` to preserve per-skill isolation.

Comment on lines +1 to +17
# SwiftUI App Architecture Workflow Customization Contract

## Purpose

Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.

## Knobs

The first version defines no documented runtime-enforced knobs.

Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.

## Runtime Behavior

- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Rename this customization contract to the actual skill.

This file lives under swiftui-animation-workflow, but the title/body still describe swiftui-app-architecture-workflow. That makes the maintainer contract point at the wrong workflow.

Suggested fix
-# SwiftUI App Architecture Workflow Customization Contract
+# SwiftUI Animation Workflow Customization Contract
 ...
-Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.
+Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-animation-workflow` already has runtime-tunable behavior.
 ...
-- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
+- `swiftui-animation-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# SwiftUI App Architecture Workflow Customization Contract
## Purpose
Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-app-architecture-workflow` already has runtime-tunable behavior.
## Knobs
The first version defines no documented runtime-enforced knobs.
Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.
## Runtime Behavior
- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `swiftui-app-architecture-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.
# SwiftUI Animation Workflow Customization Contract
## Purpose
Preserve the repo-wide customization-file contract without pretending the first version of `swiftui-animation-workflow` already has runtime-tunable behavior.
## Knobs
The first version defines no documented runtime-enforced knobs.
Keep the skill stable around its docs-first boundary and decision model before introducing persistent settings.
## Runtime Behavior
- `scripts/customization_config.py` exists so the skill participates cleanly in the shared repo customization surface.
- `swiftui-animation-workflow` currently ignores persisted settings at runtime because no runtime-enforced knobs are documented yet.
- Future runtime knobs should only be added after the skill proves a stable need for deterministic configuration.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization-flow.md`
around lines 1 - 17, Update the customization contract text to match the actual
`swiftui-animation-workflow` skill instead of
`swiftui-app-architecture-workflow`; fix the title and every body reference in
`customization-flow.md` so the docs point to the correct workflow and keep the
repo-wide customization contract consistent. Locate the affected wording in the
contract header and the runtime-behavior bullets, then replace the incorrect
skill name with the actual one throughout.

Comment on lines +21 to +24
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Fix the durable config path for this skill.

SKILL_NAME still points at swiftui-app-architecture-workflow, so this script will persist overrides into the wrong directory and can clobber another skill's customization state.

Suggested fix
-SKILL_NAME = "swiftui-app-architecture-workflow"
+SKILL_NAME = "swiftui-animation-workflow"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-app-architecture-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"
SCHEMA_VERSION = 1
SKILL_NAME = "swiftui-animation-workflow"
CONFIG_HOME_ENV = "APPLE_DEV_SKILLS_CONFIG_HOME"
DEFAULT_CONFIG_ROOT = "~/.config/gaelic-ghost/apple-dev-skills"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugins/apple-dev-skills/skills/swiftui-animation-workflow/scripts/customization_config.py`
around lines 21 - 24, The durable config path is being derived from the wrong
skill identifier because customization_config.py still uses the old SKILL_NAME
value. Update SKILL_NAME to match this skill’s actual name in the customization
script so the config directory used by the config resolution logic stays
isolated and does not write into another skill’s overrides.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant