skills: add Apple design animation workflows#92
Conversation
📝 WalkthroughWalkthroughAdds four new Apple Dev Skills workflow skills ( ChangesApple Dev Skills v7.5.0 — Four New Workflow Skills
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
💡 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" |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this comment.
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 winValidator inventory still omits two shipped workflows.
active_skill_mdsnow locks the repo to 28 skills, but this PR’s published inventory still includesicon-composer-app-icon-workflowinplugins/apple-dev-skills/README.mdLine 142 andswift-openapi-client-workflowin Line 146, and the manifest still advertises both workflows. That leavesvalidate_repo_docs.shout 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.mdentries 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.shwhen 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 winFix copy-paste artifact: update skill name references.
This file is under
apple-typography-workflow/but its title and body still refer toswiftui-app-architecture-workflow. Update the H1 title, Purpose paragraph, and Runtime Behavior bullet to referenceapple-typography-workflowso 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 winFix copy-paste artifact: update skill name references.
This file is under
sf-symbols-workflow/but its title and body still refer toswiftui-app-architecture-workflow. Update the H1 title, Purpose paragraph, and Runtime Behavior bullet to referencesf-symbols-workflowso 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 valueCapitalize Apple platform names correctly.
Line 65 uses lowercase
macosandwatchosin the example platform list. Per Apple branding and LanguageTool guidance, these should bemacOSandwatchOS. 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
⛔ Files ignored due to path filters (8)
plugins/agent-portability-skills/uv.lockis excluded by!**/*.lockplugins/apple-dev-skills/uv.lockis excluded by!**/*.lockplugins/cardhop-app/mcp/uv.lockis excluded by!**/*.lockplugins/productivity-skills/uv.lockis excluded by!**/*.lockplugins/python-skills/uv.lockis excluded by!**/*.lockplugins/things-app/mcp/uv.lockis excluded by!**/*.lockplugins/things-app/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (67)
README.mdROADMAP.mddocs/maintainers/apple-design-animation-skills-plan.mdplugins/agent-portability-skills/.codex-plugin/plugin.jsonplugins/agent-portability-skills/pyproject.tomlplugins/android-dev-skills/.codex-plugin/plugin.jsonplugins/apple-dev-skills/.codex-plugin/plugin.jsonplugins/apple-dev-skills/.github/scripts/validate_repo_docs.shplugins/apple-dev-skills/README.mdplugins/apple-dev-skills/ROADMAP.mdplugins/apple-dev-skills/docs/maintainers/customization-consolidation-review.mdplugins/apple-dev-skills/pyproject.tomlplugins/apple-dev-skills/skills/apple-typography-workflow/SKILL.mdplugins/apple-dev-skills/skills/apple-typography-workflow/agents/openai.yamlplugins/apple-dev-skills/skills/apple-typography-workflow/references/custom-fonts-and-licensing.mdplugins/apple-dev-skills/skills/apple-typography-workflow/references/customization-flow.mdplugins/apple-dev-skills/skills/apple-typography-workflow/references/customization.template.yamlplugins/apple-dev-skills/skills/apple-typography-workflow/references/snippets/apple-xcode-project-core.mdplugins/apple-dev-skills/skills/apple-typography-workflow/references/system-typography-and-dynamic-type.mdplugins/apple-dev-skills/skills/apple-typography-workflow/scripts/customization_config.pyplugins/apple-dev-skills/skills/core-animation-layer-workflow/SKILL.mdplugins/apple-dev-skills/skills/core-animation-layer-workflow/agents/openai.yamlplugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization-flow.mdplugins/apple-dev-skills/skills/core-animation-layer-workflow/references/customization.template.yamlplugins/apple-dev-skills/skills/core-animation-layer-workflow/references/layer-ownership-and-animation-rules.mdplugins/apple-dev-skills/skills/core-animation-layer-workflow/references/model-presentation-and-performance.mdplugins/apple-dev-skills/skills/core-animation-layer-workflow/references/snippets/apple-xcode-project-core.mdplugins/apple-dev-skills/skills/core-animation-layer-workflow/scripts/customization_config.pyplugins/apple-dev-skills/skills/sf-symbols-workflow/SKILL.mdplugins/apple-dev-skills/skills/sf-symbols-workflow/agents/openai.yamlplugins/apple-dev-skills/skills/sf-symbols-workflow/references/custom-symbols-and-app-inspection.mdplugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization-flow.mdplugins/apple-dev-skills/skills/sf-symbols-workflow/references/customization.template.yamlplugins/apple-dev-skills/skills/sf-symbols-workflow/references/snippets/apple-xcode-project-core.mdplugins/apple-dev-skills/skills/sf-symbols-workflow/references/symbol-selection-and-rendering.mdplugins/apple-dev-skills/skills/sf-symbols-workflow/scripts/customization_config.pyplugins/apple-dev-skills/skills/swiftui-animation-workflow/SKILL.mdplugins/apple-dev-skills/skills/swiftui-animation-workflow/agents/openai.yamlplugins/apple-dev-skills/skills/swiftui-animation-workflow/references/animation-decision-rules.mdplugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization-flow.mdplugins/apple-dev-skills/skills/swiftui-animation-workflow/references/customization.template.yamlplugins/apple-dev-skills/skills/swiftui-animation-workflow/references/snippets/apple-xcode-project-core.mdplugins/apple-dev-skills/skills/swiftui-animation-workflow/references/transitions-effects-and-accessibility.mdplugins/apple-dev-skills/skills/swiftui-animation-workflow/scripts/customization_config.pyplugins/apple-dev-skills/tests/test_core_animation_typography_workflows.pyplugins/apple-dev-skills/tests/test_customization_consolidation_review.pyplugins/apple-dev-skills/tests/test_design_animation_symbol_workflows.pyplugins/cardhop-app/.codex-plugin/plugin.jsonplugins/cardhop-app/mcp/pyproject.tomlplugins/codex-utilities/.codex-plugin/plugin.jsonplugins/dotnet-skills/.codex-plugin/plugin.jsonplugins/productivity-skills/.codex-plugin/plugin.jsonplugins/productivity-skills/pyproject.tomlplugins/python-skills/.codex-plugin/plugin.jsonplugins/python-skills/pyproject.tomlplugins/reverse-engineering-skills/.codex-plugin/plugin.jsonplugins/rust-skills/.codex-plugin/plugin.jsonplugins/server-side-jvm/.codex-plugin/plugin.jsonplugins/server-side-swift/.codex-plugin/plugin.jsonplugins/spotify/.codex-plugin/plugin.jsonplugins/swift-lang/.codex-plugin/plugin.jsonplugins/swiftasb-skills/.codex-plugin/plugin.jsonplugins/things-app/.codex-plugin/plugin.jsonplugins/things-app/mcp/pyproject.tomlplugins/things-app/pyproject.tomlplugins/web-dev-skills/.codex-plugin/plugin.jsonpyproject.toml
| 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" |
There was a problem hiding this comment.
🗄️ 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.
| 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)) |
There was a problem hiding this comment.
🗄️ 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.
| # 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. |
There was a problem hiding this comment.
📐 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.
| # 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. |
There was a problem hiding this comment.
📐 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.
| - 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
| 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" |
There was a problem hiding this comment.
🗄️ 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.
| 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" |
There was a problem hiding this comment.
🗄️ 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.
| # 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. |
There was a problem hiding this comment.
📐 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.
| # 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.
| 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" |
There was a problem hiding this comment.
🗄️ 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.
| 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.
Summary:
Verification:
uv run python /Users/galew/.codex/skills/.system/skill-creator/scripts/quick_validate.py skills/core-animation-layer-workflowuv run python /Users/galew/.codex/skills/.system/skill-creator/scripts/quick_validate.py skills/apple-typography-workflowbash .github/scripts/validate_repo_docs.shuv run pytestuv run scripts/validate_socket_metadata.pySummary by CodeRabbit
New Features
Tests
Chores