Tipkit workflow
Skill gaelic-ghost/socket/plugins/apple-dev-skills/skills/tipkit-workflow
Add, configure, present, style, test, and troubleshoot Apple TipKit tips in SwiftUI, UIKit, and AppKit using current Apple documentation. Use for Tip protocol definitions, Tips.configure, TipView inline tips, popoverTip tooltip popovers, TipUIView, TipUIPopoverViewController, TipNSView, TipNSPopover, rules, parameters, events and donations, actions, invalidation, display frequency, persistent datastores, testing overrides, and tips that do not appear or reappear correctly.From its SKILL.md
npx -y skills add gaelic-ghost/socket --skill tipkit-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.6 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
TipKit Workflow
Purpose
Implement Apple TipKit directly and predictably. Treat “tooltip” requests as a presentation decision: use TipKit for discoverable feature guidance and onboarding, then choose an inline tip or tip popover based on whether covering nearby controls is acceptable.
When To Use
Use for adding, configuring, displaying, styling, testing, or diagnosing TipKit guidance in SwiftUI, UIKit, or AppKit.
Single-Path Workflow
- Apply the Apple docs gate through
explore-apple-swift-docs. State the documented TipKit behavior being relied on before changing code. - Inspect the app entry point, deployment targets, highlighted control, existing presentation modifiers, and any existing TipKit configuration or tip types.
- Classify the request:
- inline SwiftUI guidance with
TipView - SwiftUI tooltip popover with
popoverTip - UIKit inline or popover presentation
- AppKit inline or popover presentation
- eligibility using parameters, events, rules, and options
- lifecycle, persistence, testing, or troubleshooting
- inline SwiftUI guidance with
- Read
references/presentation-and-platform-patterns.mdfor presentation code andreferences/eligibility-lifecycle-and-testing.mdfor configuration, rules, persistence, invalidation, and diagnosis. - Define a small
Tiptype with stable identity and focused copy. Addtitle; addmessage,image, andactionsonly when they improve comprehension or provide a real next step. - Call
try Tips.configure(...)once during app startup before tips need to become eligible. Handle configuration failure with a descriptive message that identifies TipKit initialization and the likely datastore or configuration cause. - Prefer inline
TipViewwhenever layout can accommodate it. UsepopoverTipwhen the tip must point at a compact control and temporary overlap is acceptable. - Encode real eligibility with
@Parameter,Tips.Event,#Rule, and options. Donate events where the qualifying behavior actually happens; do not fake eligibility with unrelated view-local Boolean state. - Invalidate the tip when the highlighted feature is used or the guidance becomes permanently irrelevant. Do not confuse temporary dismissal with permanent invalidation.
- Validate with deterministic TipKit testing controls, then run the applicable
xcode-build-run-workflowandxcode-testing-workflowchecks. Verify appearance, dismissal, action handling, persistence after relaunch, accessibility, and compact-window behavior on each supported platform.
Inputs
- repository, app entry point, platform, and deployment targets
- feature or control to highlight
- inline or popover intent, or permission to choose
- eligibility, frequency, persistence, and invalidation requirements
- existing TipKit state and observed failure behavior
Outputs
Return the documented Apple behavior, chosen presentation, configuration location, tip definition, eligibility and invalidation policy, changed files, validation performed, and any remaining platform limitation.
Guards and Stop Conditions
- Do not use TipKit as a generic hover-help replacement without confirming that feature education is the intended behavior.
- Do not add a custom tooltip manager, coordinator, repository, or mirrored state layer around TipKit.
- Do not call
Tips.configurerepeatedly from feature views. - Do not attach multiple competing popover presentations to the same control without checking composition and runtime behavior.
- Do not promise exact popover timing, simultaneous popovers, or imperative SwiftUI presentation control that TipKit does not expose.
- Do not reset the TipKit datastore or force all tips visible outside a deliberate debug, preview, or test path.
- Stop when Apple documentation and current code disagree, when a deployment target cannot support the required API, or when the request needs a custom always-available help surface instead of TipKit.
Fallbacks and Handoffs
- Recommend
explore-apple-swift-docsfor current API or availability lookup. - Recommend
swiftui-app-architecture-workfloworappkit-app-architecture-workflowwhen ownership of the highlighted feature is unclear. - Recommend
apple-ui-accessibility-workflowfor VoiceOver, Dynamic Type, contrast, focus, and alternative-access verification. - Recommend
xcode-build-run-workflowfor execution. - Recommend
xcode-testing-workflowfor automated validation. - Use a native SwiftUI
helpmodifier on macOS or a custom help presentation only when the product requirement is persistent contextual help rather than TipKit feature education; verify that API through Apple docs before implementing it.
Customization
Use references/customization-flow.md. The first version has no runtime-enforced knobs; scripts/customization_config.py preserves the shared configuration contract.
References
references/presentation-and-platform-patterns.mdreferences/eligibility-lifecycle-and-testing.mdreferences/customization-flow.md- Recommend
references/snippets/apple-xcode-project-core.mdwhen the app needs reusable repository policy alongside TipKit implementation guidance.
What ships with it: 7 files
42.4 KB alongside SKILL.md, 1 of them executable
agents/
- openai.yaml268 B
references/
scripts/
- customization_config.pyruns6.2 KB