{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pagerkit",
    "name": "PagerKit",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/SzpakKamil/pagerkit",
    "canonicalUrl": "https://clawhub.ai/SzpakKamil/pagerkit",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pagerkit",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pagerkit",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/ForEach.md",
      "references/PKPage.md",
      "references/PKPageBuilder.md",
      "references/PKPageControlBackgroundStyle.md",
      "references/PKPageControlDirection.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pagerkit"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/pagerkit",
    "agentPageUrl": "https://openagent3.xyz/skills/pagerkit/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pagerkit/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pagerkit/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "This skill provides expert guidance on PagerKit, a powerful SwiftUI library for creating highly customizable and cross-platform page-based navigation. It covers everything from basic usage and dynamic page generation to advanced customization of page indicators, event handling, and best practices. Use this skill to help developers effectively implement flexible and visually rich paging experiences in their SwiftUI applications across all Apple platforms."
      },
      {
        "title": "Agent Behavior (Follow These Rules)",
        "body": "Clarify Paging Requirements: Always ascertain the user's specific needs regarding page content, indicator style, navigation flow, and platform targets before offering solutions.\nPrioritize idiomatic SwiftUI: Favor PagerKit's PKPageBuilder and ForEach for declarative page construction, aligning with SwiftUI's design principles.\nPlatform-Specific Advice: When discussing indicator images, progress, or UIPageViewController options, always specify platform availability and correct type (UIImage vs. Image, UIPageControlProgress).\nEmphasize Modifiers: Direct users to the relevant PKPagesView or PKPage modifiers for customization, using full modifier signatures (e.g., .pkPageNavigationOrientation(_:)).\nContextual Code Examples: Provide concise code snippets that illustrate the recommended usage within a PKPagesView or PKPage context.\nHighlight Cross-Platform: When possible, remind users of PagerKit's cross-platform consistency and how to handle platform-specific differences using #if os(...) directives."
      },
      {
        "title": "Project Settings",
        "body": "PagerKit's behavior is influenced by the project's deployment targets and Swift version.\n\nDeployment Targets: PagerKit supports iOS 14.0+, iPadOS 14.0+, macOS 14.0+, tvOS 14.0+, visionOS 1.0+, and watchOS 10.0+. Some features (e.g., UIPageControlProgress) are only available on specific platforms and OS versions.\nSwift Version: Requires Swift 5.9+.\n\nIf these are unknown, ask the developer to confirm them, especially when discussing platform-specific features."
      },
      {
        "title": "Quick Decision Tree",
        "body": "When a developer needs PagerKit guidance, follow this decision tree:\n\nSetting up a new pager?\n\nFor basic installation and concepts → references/PagerKit.md\nTo define the overall pager structure → references/PKPagesView.md\nTo create individual page content → references/PKPage.md\n\n\n\nGenerating pages dynamically from data?\n\nUsing a collection of items → references/ForEach.md\n\n\n\nControlling page flow or structure?\n\nAdding conditional pages (if/else) → references/PKPageBuilder.md\nSetting horizontal or vertical navigation → references/PKPagesView.md (.pkPageNavigationOrientation)\n\n\n\nCustomizing the page indicator (dots)?\n\nChanging color (active/inactive) → references/PKPagesView.md (.pkPageControlIndicatorTintColor, .pkPageControlIndicatorCurrentIndicatorTintColor)\nChanging background style (minimal, prominent, automatic) → references/PKPageControlBackgroundStyle.md\nAdjusting position or spacing → references/PKPagesView.md (.pkPageControlIndicatorAlignment, .pkPageControlPadding)\nSetting layout direction (e.g., vertical alignment) → references/PKPageControlDirection.md\nUsing custom images (global or per-page) → references/PKPagesView.md, references/PKPage.md\nHiding the indicator (always or for single page) → references/PKPagesView.md\n\n\n\nHandling page change events or state?\n\nBinding to the current page index → references/PKPagesView.md (.pkCurrentPageIndex)\nReacting to manual page changes → references/PKPagesView.md (.pkOnManualPageChange)\nReacting to automatic page changes → references/PKPagesView.md (.pkOnAutoPageChange)\nIdentifying page transition direction → references/PKPageDirection.md\nActions on transition start/end → references/PKPagesView.md\n\n\n\nCustomizing individual page behavior?\n\nSetting automatic transition duration → references/PKPage.md (.pkPageDuration)\nAdding a custom footer to a page → references/PKPage.md (.pkPageFooter)"
      },
      {
        "title": "Triage-First Playbook",
        "body": "\"My pages are not showing or look incorrect.\"\n\nVerify PKPagesView contains valid PKPage instances. Refer to references/PKPagesView.md, references/PKPage.md.\nIf using dynamic content, check ForEach implementation. Refer to references/ForEach.md.\n\n\n\"The page indicator is not positioned or styled correctly.\"\n\nExamine .pkPageControlIndicatorAlignment, .pkPageControlIndicatorBackgroundStyle, .pkPageControlIndicatorDirection modifiers on PKPagesView. Refer to references/PKPagesView.md, references/PKPageControlBackgroundStyle.md, references/PKPageControlDirection.md.\n\n\n\"I want to change the color of the active dot, but it's not working.\"\n\nEnsure .pkPageControlIndicatorCurrentIndicatorTintColor(_:) is used on PKPagesView. Refer to references/PKPagesView.md.\n\n\n\"Pages are not transitioning automatically.\"\n\nCheck if .pkPageDuration(_:) is applied to the individual PKPages with a non-nil duration. Refer to references/PKPage.md.\n\n\n\"My conditional logic (if statements) inside PKPagesView is giving compiler errors.\"\n\nReview PKPageBuilder concepts, ensuring all branches return valid PKPage components. Refer to references/PKPageBuilder.md.\n\n\n\"How can I tell if the user swiped forward or backward?\"\n\nUse the PKPageDirection parameter in .pkOnManualPageChange. Refer to references/PKPagesView.md, references/PKPageDirection.md."
      },
      {
        "title": "Basic Pager Setup",
        "body": "PKPagesView {\n    PKPage { Text(\"Page A\").font(.title) }\n    PKPage { Text(\"Page B\").font(.title) }\n    PKPage { Text(\"Page C\").font(.title) }\n}\n.pkCurrentPageIndex(index: $currentPage) // Bind to @State\n.pkPageNavigationOrientation(.horizontal)"
      },
      {
        "title": "Dynamic Pages with ForEach",
        "body": "struct Item: Identifiable {\n    let id = UUID()\n    let title: String\n}\n\n// ... inside a View\nlet items = [Item(title: \"Item 1\"), Item(title: \"Item 2\")]\n\nPKPagesView {\n    ForEach(items) { item in\n        PKPage { Text(item.title) }\n            .pkPageFooter { Text(\"Footer for \\(item.title)\") }\n    }\n}"
      },
      {
        "title": "Custom Page Indicator Styling",
        "body": ".pkPageControlIndicatorAlignment(spacing: 10, alignment: .bottomTrailing)\n.pkPageControlIndicatorBackgroundStyle(.prominent)\n.pkPageControlIndicatorDirection(.topToBottom) // Vertical dots\n.pkPageControlIndicatorTintColor(.gray)\n.pkPageControlIndicatorCurrentIndicatorTintColor(.blue)\n// Custom images\n#if os(iOS)\n.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: UIImage(systemName: \"star.fill\"))\n#else\n.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: Image(systemName: \"star.fill\"))\n#endif"
      },
      {
        "title": "Handling Page Change Events",
        "body": ".pkOnManualPageChange { currentIndex, direction in\n    print(\"User navigated to page \\(currentIndex) by going \\(direction).\")\n}\n.pkOnAutoPageChange { previousIndex, currentIndex in\n    print(\"Auto change from \\(previousIndex) to \\(currentIndex).\")\n}\n.pkOnTransitionEnd { previous, current in\n    print(\"Transition ended. Was on \\(previous), now on \\(current).\")\n}"
      },
      {
        "title": "Integration Quick Guide",
        "body": "PagerKit is integrated via Swift Package Manager.\n\nAdd Package Dependency: In Xcode, go to File > Add Package Dependency and enter https://github.com/SzpakKamil/PagerKit.git.\nImport: import PagerKit in your Swift files.\nDeployment Targets: Ensure your project targets iOS 14.0+, iPadOS 14.0+, macOS 14.0+, tvOS 14.0+, visionOS 1.0+, or watchOS 10.0+ (Swift 5.9+).\n\nFor detailed setup, see references/PagerKit.md."
      },
      {
        "title": "Reference Files",
        "body": "Load these files as needed for specific topics:\n\nPagerKit.md - General overview, setup, and core benefits.\nPKPagesView.md - Detailed information on the main pager container and its global modifiers.\nPKPage.md - Information on individual page creation and page-specific modifiers.\nForEach.md - How to generate pages from collections of data.\nPKPageBuilder.md - Understanding the declarative content building for PKPagesView.\nPKPageControlBackgroundStyle.md - Options for the background style of the page indicator.\nPKPageControlDirection.md - Options for the layout direction of the page indicator dots.\nPKPageDirection.md - Understanding the direction of page transitions.\n_index.md - A comprehensive index for all PagerKit reference documentation."
      },
      {
        "title": "Best Practices Summary",
        "body": "Embrace Declarative UI: Use PKPageBuilder with ForEach for flexible and maintainable page construction.\nCustomize Thoughtfully: Leverage the extensive modifier API to match native platform aesthetics and app branding, avoiding over-customization that hinders usability.\nManage Pager State: Always bind pkCurrentPageIndex to external state (@State or @Binding) for programmatic control and observation.\nImplement Event Handling: Utilize callbacks (e.g., .pkOnManualPageChange, .pkOnTransitionEnd) for analytics, haptic feedback, or custom logic in response to navigation.\nMind Platform Differences: Be aware of modifiers and features that behave differently or are only available on specific Apple platforms and OS versions.\nPrioritize Accessibility: Ensure custom indicators and footers remain accessible (e.g., with VoiceOver support).\n\nNote: This skill is based on the comprehensive documentation for PagerKit. For further details, visit the official documentation at documentation.kamilszpak.com/documentation/pagerkit/ or the project website at kamilszpak.com/pl/pagerkit."
      }
    ],
    "body": "PagerKit Skill\nOverview\n\nThis skill provides expert guidance on PagerKit, a powerful SwiftUI library for creating highly customizable and cross-platform page-based navigation. It covers everything from basic usage and dynamic page generation to advanced customization of page indicators, event handling, and best practices. Use this skill to help developers effectively implement flexible and visually rich paging experiences in their SwiftUI applications across all Apple platforms.\n\nAgent Behavior (Follow These Rules)\nClarify Paging Requirements: Always ascertain the user's specific needs regarding page content, indicator style, navigation flow, and platform targets before offering solutions.\nPrioritize idiomatic SwiftUI: Favor PagerKit's PKPageBuilder and ForEach for declarative page construction, aligning with SwiftUI's design principles.\nPlatform-Specific Advice: When discussing indicator images, progress, or UIPageViewController options, always specify platform availability and correct type (UIImage vs. Image, UIPageControlProgress).\nEmphasize Modifiers: Direct users to the relevant PKPagesView or PKPage modifiers for customization, using full modifier signatures (e.g., .pkPageNavigationOrientation(_:)).\nContextual Code Examples: Provide concise code snippets that illustrate the recommended usage within a PKPagesView or PKPage context.\nHighlight Cross-Platform: When possible, remind users of PagerKit's cross-platform consistency and how to handle platform-specific differences using #if os(...) directives.\nProject Settings\n\nPagerKit's behavior is influenced by the project's deployment targets and Swift version.\n\nDeployment Targets: PagerKit supports iOS 14.0+, iPadOS 14.0+, macOS 14.0+, tvOS 14.0+, visionOS 1.0+, and watchOS 10.0+. Some features (e.g., UIPageControlProgress) are only available on specific platforms and OS versions.\nSwift Version: Requires Swift 5.9+.\n\nIf these are unknown, ask the developer to confirm them, especially when discussing platform-specific features.\n\nQuick Decision Tree\n\nWhen a developer needs PagerKit guidance, follow this decision tree:\n\nSetting up a new pager?\n\nFor basic installation and concepts → references/PagerKit.md\nTo define the overall pager structure → references/PKPagesView.md\nTo create individual page content → references/PKPage.md\n\nGenerating pages dynamically from data?\n\nUsing a collection of items → references/ForEach.md\n\nControlling page flow or structure?\n\nAdding conditional pages (if/else) → references/PKPageBuilder.md\nSetting horizontal or vertical navigation → references/PKPagesView.md (.pkPageNavigationOrientation)\n\nCustomizing the page indicator (dots)?\n\nChanging color (active/inactive) → references/PKPagesView.md (.pkPageControlIndicatorTintColor, .pkPageControlIndicatorCurrentIndicatorTintColor)\nChanging background style (minimal, prominent, automatic) → references/PKPageControlBackgroundStyle.md\nAdjusting position or spacing → references/PKPagesView.md (.pkPageControlIndicatorAlignment, .pkPageControlPadding)\nSetting layout direction (e.g., vertical alignment) → references/PKPageControlDirection.md\nUsing custom images (global or per-page) → references/PKPagesView.md, references/PKPage.md\nHiding the indicator (always or for single page) → references/PKPagesView.md\n\nHandling page change events or state?\n\nBinding to the current page index → references/PKPagesView.md (.pkCurrentPageIndex)\nReacting to manual page changes → references/PKPagesView.md (.pkOnManualPageChange)\nReacting to automatic page changes → references/PKPagesView.md (.pkOnAutoPageChange)\nIdentifying page transition direction → references/PKPageDirection.md\nActions on transition start/end → references/PKPagesView.md\n\nCustomizing individual page behavior?\n\nSetting automatic transition duration → references/PKPage.md (.pkPageDuration)\nAdding a custom footer to a page → references/PKPage.md (.pkPageFooter)\nTriage-First Playbook\n\"My pages are not showing or look incorrect.\"\nVerify PKPagesView contains valid PKPage instances. Refer to references/PKPagesView.md, references/PKPage.md.\nIf using dynamic content, check ForEach implementation. Refer to references/ForEach.md.\n\"The page indicator is not positioned or styled correctly.\"\nExamine .pkPageControlIndicatorAlignment, .pkPageControlIndicatorBackgroundStyle, .pkPageControlIndicatorDirection modifiers on PKPagesView. Refer to references/PKPagesView.md, references/PKPageControlBackgroundStyle.md, references/PKPageControlDirection.md.\n\"I want to change the color of the active dot, but it's not working.\"\nEnsure .pkPageControlIndicatorCurrentIndicatorTintColor(_:) is used on PKPagesView. Refer to references/PKPagesView.md.\n\"Pages are not transitioning automatically.\"\nCheck if .pkPageDuration(_:) is applied to the individual PKPages with a non-nil duration. Refer to references/PKPage.md.\n\"My conditional logic (if statements) inside PKPagesView is giving compiler errors.\"\nReview PKPageBuilder concepts, ensuring all branches return valid PKPage components. Refer to references/PKPageBuilder.md.\n\"How can I tell if the user swiped forward or backward?\"\nUse the PKPageDirection parameter in .pkOnManualPageChange. Refer to references/PKPagesView.md, references/PKPageDirection.md.\nCore Patterns Reference\nBasic Pager Setup\nPKPagesView {\n    PKPage { Text(\"Page A\").font(.title) }\n    PKPage { Text(\"Page B\").font(.title) }\n    PKPage { Text(\"Page C\").font(.title) }\n}\n.pkCurrentPageIndex(index: $currentPage) // Bind to @State\n.pkPageNavigationOrientation(.horizontal)\n\nDynamic Pages with ForEach\nstruct Item: Identifiable {\n    let id = UUID()\n    let title: String\n}\n\n// ... inside a View\nlet items = [Item(title: \"Item 1\"), Item(title: \"Item 2\")]\n\nPKPagesView {\n    ForEach(items) { item in\n        PKPage { Text(item.title) }\n            .pkPageFooter { Text(\"Footer for \\(item.title)\") }\n    }\n}\n\nCustom Page Indicator Styling\n.pkPageControlIndicatorAlignment(spacing: 10, alignment: .bottomTrailing)\n.pkPageControlIndicatorBackgroundStyle(.prominent)\n.pkPageControlIndicatorDirection(.topToBottom) // Vertical dots\n.pkPageControlIndicatorTintColor(.gray)\n.pkPageControlIndicatorCurrentIndicatorTintColor(.blue)\n// Custom images\n#if os(iOS)\n.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: UIImage(systemName: \"star.fill\"))\n#else\n.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: Image(systemName: \"star.fill\"))\n#endif\n\nHandling Page Change Events\n.pkOnManualPageChange { currentIndex, direction in\n    print(\"User navigated to page \\(currentIndex) by going \\(direction).\")\n}\n.pkOnAutoPageChange { previousIndex, currentIndex in\n    print(\"Auto change from \\(previousIndex) to \\(currentIndex).\")\n}\n.pkOnTransitionEnd { previous, current in\n    print(\"Transition ended. Was on \\(previous), now on \\(current).\")\n}\n\nIntegration Quick Guide\n\nPagerKit is integrated via Swift Package Manager.\n\nAdd Package Dependency: In Xcode, go to File > Add Package Dependency and enter https://github.com/SzpakKamil/PagerKit.git.\nImport: import PagerKit in your Swift files.\nDeployment Targets: Ensure your project targets iOS 14.0+, iPadOS 14.0+, macOS 14.0+, tvOS 14.0+, visionOS 1.0+, or watchOS 10.0+ (Swift 5.9+).\n\nFor detailed setup, see references/PagerKit.md.\n\nReference Files\n\nLoad these files as needed for specific topics:\n\nPagerKit.md - General overview, setup, and core benefits.\nPKPagesView.md - Detailed information on the main pager container and its global modifiers.\nPKPage.md - Information on individual page creation and page-specific modifiers.\nForEach.md - How to generate pages from collections of data.\nPKPageBuilder.md - Understanding the declarative content building for PKPagesView.\nPKPageControlBackgroundStyle.md - Options for the background style of the page indicator.\nPKPageControlDirection.md - Options for the layout direction of the page indicator dots.\nPKPageDirection.md - Understanding the direction of page transitions.\n_index.md - A comprehensive index for all PagerKit reference documentation.\nBest Practices Summary\nEmbrace Declarative UI: Use PKPageBuilder with ForEach for flexible and maintainable page construction.\nCustomize Thoughtfully: Leverage the extensive modifier API to match native platform aesthetics and app branding, avoiding over-customization that hinders usability.\nManage Pager State: Always bind pkCurrentPageIndex to external state (@State or @Binding) for programmatic control and observation.\nImplement Event Handling: Utilize callbacks (e.g., .pkOnManualPageChange, .pkOnTransitionEnd) for analytics, haptic feedback, or custom logic in response to navigation.\nMind Platform Differences: Be aware of modifiers and features that behave differently or are only available on specific Apple platforms and OS versions.\nPrioritize Accessibility: Ensure custom indicators and footers remain accessible (e.g., with VoiceOver support).\n\nNote: This skill is based on the comprehensive documentation for PagerKit. For further details, visit the official documentation at documentation.kamilszpak.com/documentation/pagerkit/ or the project website at kamilszpak.com/pl/pagerkit."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/SzpakKamil/pagerkit",
    "publisherUrl": "https://clawhub.ai/SzpakKamil/pagerkit",
    "owner": "SzpakKamil",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pagerkit",
    "downloadUrl": "https://openagent3.xyz/downloads/pagerkit",
    "agentUrl": "https://openagent3.xyz/skills/pagerkit/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pagerkit/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pagerkit/agent.md"
  }
}