From 24c45aa604474a3892faa6b389eaff12deb334cf Mon Sep 17 00:00:00 2001 From: ahuseyn Date: Thu, 14 May 2026 14:57:44 +0200 Subject: [PATCH] feat: add llms.txt file along with generating script and workflow automation Co-authored-by: Copilot --- .github/scripts/generate-llms-txt.sh | 146 ++++++++++++++++++++++++ .github/workflows/generate-llms-txt.yml | 43 +++++++ llms.txt | 86 ++++++++++++++ 3 files changed, 275 insertions(+) create mode 100755 .github/scripts/generate-llms-txt.sh create mode 100644 .github/workflows/generate-llms-txt.yml create mode 100644 llms.txt diff --git a/.github/scripts/generate-llms-txt.sh b/.github/scripts/generate-llms-txt.sh new file mode 100755 index 000000000..e9e4535f3 --- /dev/null +++ b/.github/scripts/generate-llms-txt.sh @@ -0,0 +1,146 @@ +#!/bin/bash +set -e + +OUTPUT="llms.txt" +REPO_URL="https://github.com/wpengine/hwptoolkit/blob/main" +REPO_DIR_URL="https://github.com/wpengine/hwptoolkit/tree/main" + +# Extract description from a file: +# 1. Frontmatter "description:" field +# 2. First non-empty line after the first "# " heading +# 3. Empty string +get_desc() { + local file="$1" + local desc + desc=$(grep -m 1 "^description:" "$file" | sed 's/description: "\(.*\)"/\1/' | tr -d '"' || true) + if [ -n "$desc" ]; then + echo "$desc" + return + fi + awk '/^# /{found=1; next} found && NF{print; exit}' "$file" || true +} + +cat > "$OUTPUT" << 'HEADER' +# Headless WordPress Toolkit + +> A modern toolkit for building headless WordPress applications with WPGraphQL, plugins, and framework examples. + +HEADER + +# Plugins Section +echo "## [Plugins]($REPO_DIR_URL/plugins)" >> "$OUTPUT" +echo "" >> "$OUTPUT" +# Add description from plugins/README.md +if [ -f "plugins/README.md" ]; then + plugins_desc=$(get_desc "plugins/README.md") + if [ -n "$plugins_desc" ]; then + echo "$plugins_desc" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi +fi +find plugins -maxdepth 2 -name "README.md" | LC_ALL=C sort | while IFS= read -r file; do + # Skip the root plugins/README.md + if [ "$file" != "plugins/README.md" ]; then + title=$(grep -m 1 "^# " "$file" | sed 's/^# //' || true) + echo "- [$title]($REPO_URL/$file)" >> "$OUTPUT" + fi +done + +# Packages Section +echo "" >> "$OUTPUT" +echo "## [Packages]($REPO_DIR_URL/packages)" >> "$OUTPUT" +echo "" >> "$OUTPUT" +if [ -f "packages/README.md" ]; then + packages_desc=$(get_desc "packages/README.md") + if [ -n "$packages_desc" ]; then + echo "$packages_desc" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi +fi +find packages -maxdepth 2 -name "README.md" | LC_ALL=C sort | while IFS= read -r file; do + if [ "$file" != "packages/README.md" ]; then + title=$(grep -m 1 "^# " "$file" | sed 's/^# //' || true) + desc=$(get_desc "$file") + if [ -n "$desc" ]; then + echo "- [$title]($REPO_URL/$file): $desc" >> "$OUTPUT" + else + echo "- [$title]($REPO_URL/$file)" >> "$OUTPUT" + fi + fi +done + +# Documentation Section +echo "" >> "$OUTPUT" +echo "## [Documentation]($REPO_DIR_URL/docs)" >> "$OUTPUT" +echo "" >> "$OUTPUT" +# Add description from docs/README.md frontmatter +if [ -f "docs/README.md" ]; then + docs_desc=$(grep -m 1 "^description:" docs/README.md | sed 's/description: "\(.*\)"/\1/' | tr -d '"' || true) + if [ -n "$docs_desc" ]; then + echo "$docs_desc" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi +fi + +# General docs (explanation, how-to) +find docs/explanation docs/how-to -name "index.md" 2>/dev/null | LC_ALL=C sort | while IFS= read -r file; do + title=$(grep -m 1 "^title:" "$file" | sed 's/title: "\(.*\)"/\1/' | tr -d '"' || true) + desc=$(grep -m 1 "^description:" "$file" | sed 's/description: "\(.*\)"/\1/' | tr -d '"' || true) + if [ -z "$title" ]; then + title=$(grep -m 1 "^# " "$file" | sed 's/^# //' || true) + fi + if [ -n "$desc" ]; then + echo "- [$title]($REPO_URL/$file): $desc" >> "$OUTPUT" + else + echo "- [$title]($REPO_URL/$file)" >> "$OUTPUT" + fi +done + +# Plugin-specific docs +for plugin_dir in docs/plugins/*/; do + if [ -d "$plugin_dir" ]; then + plugin_name=$(basename "$plugin_dir") + echo "" >> "$OUTPUT" + echo "- **$plugin_name**" >> "$OUTPUT" + find "$plugin_dir" -name "index.md" | LC_ALL=C sort | while IFS= read -r file; do + title=$(grep -m 1 "^title:" "$file" | sed 's/title: "\(.*\)"/\1/' | tr -d '"' || true) + desc=$(grep -m 1 "^description:" "$file" | sed 's/description: "\(.*\)"/\1/' | tr -d '"' || true) + if [ -z "$title" ]; then + title=$(grep -m 1 "^# " "$file" | sed 's/^# //' || true) + fi + if [ -n "$desc" ]; then + echo " - [$title]($REPO_URL/$file): $desc" >> "$OUTPUT" + else + echo " - [$title]($REPO_URL/$file)" >> "$OUTPUT" + fi + done + fi +done + +# Examples Section +echo "" >> "$OUTPUT" +echo "## [Examples]($REPO_DIR_URL/examples)" >> "$OUTPUT" +echo "" >> "$OUTPUT" +# Add description from examples/README.md +if [ -f "examples/README.md" ]; then + examples_desc=$(get_desc "examples/README.md") + if [ -n "$examples_desc" ]; then + echo "$examples_desc" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi +fi +find examples -maxdepth 3 -name "README.md" | LC_ALL=C sort | while IFS= read -r file; do + # Skip the root examples/README.md + if [ "$file" != "examples/README.md" ]; then + dir=$(dirname "$file" | sed 's|examples/||') + title=$(grep -m 1 "^# " "$file" | sed 's/^# //' || true) + desc=$(get_desc "$file") + if [ -n "$desc" ]; then + echo "- [$title]($REPO_URL/$file): $desc" >> "$OUTPUT" + else + echo "- [$title]($REPO_URL/$file): $dir" >> "$OUTPUT" + fi + fi +done + +echo "Generated $OUTPUT" diff --git a/.github/workflows/generate-llms-txt.yml b/.github/workflows/generate-llms-txt.yml new file mode 100644 index 000000000..9d5edc2c6 --- /dev/null +++ b/.github/workflows/generate-llms-txt.yml @@ -0,0 +1,43 @@ +name: Generate llms.txt + +on: + pull_request: + branches: + - main + paths: + - "plugins/**/README.md" + - "docs/**" + - "examples/**/README.md" + - "packages/**/README.md" + - ".github/scripts/generate-llms-txt.sh" + workflow_dispatch: + +jobs: + generate: + runs-on: ubuntu-latest + # Skip forks — GITHUB_TOKEN can't push to fork branches + if: github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name == github.repository + permissions: + contents: write + steps: + - name: Checkout PR branch + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: Generate llms.txt + run: bash .github/scripts/generate-llms-txt.sh + + - name: Check for changes + id: diff + run: | + git diff --quiet llms.txt || echo "changed=true" >> "$GITHUB_OUTPUT" + + - name: Commit and push + if: steps.diff.outputs.changed == 'true' + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add llms.txt + git commit -m "chore: regenerate llms.txt [skip ci]" + git push diff --git a/llms.txt b/llms.txt new file mode 100644 index 000000000..0bf1676e7 --- /dev/null +++ b/llms.txt @@ -0,0 +1,86 @@ +# Headless WordPress Toolkit + +> A modern toolkit for building headless WordPress applications with WPGraphQL, plugins, and framework examples. + +## [Plugins](https://github.com/wpengine/hwptoolkit/tree/main/plugins) + +WordPress plugins for the Headless WordPress Toolkit. Each plugin is paired with an NPM package. + +- [HWP CLI Plugin](https://github.com/wpengine/hwptoolkit/blob/main/plugins/hwp-cli/README.md) +- [HWP Previews](https://github.com/wpengine/hwptoolkit/blob/main/plugins/hwp-previews/README.md) +- [WPGraphQL Debug Extensions](https://github.com/wpengine/hwptoolkit/blob/main/plugins/wpgraphql-debug-extensions/README.md) +- [WPGraphQL Logging](https://github.com/wpengine/hwptoolkit/blob/main/plugins/wpgraphql-logging/README.md) +- [WPGraphQL Webhooks](https://github.com/wpengine/hwptoolkit/blob/main/plugins/wpgraphql-webhooks/README.md) + +## [Packages](https://github.com/wpengine/hwptoolkit/tree/main/packages) + +NPM packages for the Headless WordPress Toolkit. All packages use vanilla ES Modules with no build step. + +- [@placeholder/cli](https://github.com/wpengine/hwptoolkit/blob/main/packages/cli/README.md): Command-line interface for the Headless WordPress Toolkit. +- [@wpengine/hwp-toolbar](https://github.com/wpengine/hwptoolkit/blob/main/packages/toolbar/README.md): > Framework-agnostic toolbar for headless WordPress applications + +## [Documentation](https://github.com/wpengine/hwptoolkit/tree/main/docs) + +Documentation for the Headless WordPress Toolkit, a modern, framework-agnostic collection of plugins and packages for building headless WordPress applications. + +- [GET vs POST in WPGraphQL](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/get-vs-post/index.md): A guide on the differences between using a GET request with a query parameter versus a POST request to the /graphql endpoint. +- [WPGraphQL Endpoints](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/graphql-endpoints/index.md): A guide on the differences between using /graphql and ?graphql WPGraphQL endpoints and how to customize them. +- [Headless Authentication](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/headless-authentication/index.md): A guide on the process of verifying user identity and managing access control in a decoupled architecture where the WordPress and the frontend are separate systems. +- [Explanation](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/index.md): High-level conceptual guides that provide background information and understanding of Headless WordPress development with the Headless WordPress Toolkit. +- [Headless WordPress Rendering Options](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/rendering-options/index.md): A guide that explores the various approaches to rendering content from a headless WordPress installation, their trade-offs, and best practices. +- [Routing in Headledd WordPress](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/routing/index.md): A guide that explores the intricacies of implementing routing in a headless WordPress setup. It covers the core challenges, possible implementations, and advanced considerations for optimizing your headless WordPress site. +- [Sitemaps in Headless WordPress](https://github.com/wpengine/hwptoolkit/blob/main/docs/explanation/sitemaps/index.md): A guide on sitemaps in headless WordPress. It explains the challenges, and the different implementation approaches for sitemap generation. +- [How-to Guides](https://github.com/wpengine/hwptoolkit/blob/main/docs/how-to/index.md): Step-by-step guides for implementing specific features and achieving practical goals with the Headless WordPress Toolkit. +- [Installing HWP Toolkit Plugins with Composer](https://github.com/wpengine/hwptoolkit/blob/main/docs/how-to/install-toolkit-plugins/index.md): A guide on how to install any HWP Toolkit plugin using Composer, which is the recommended way for modern WordPress development workflows. +- [Enable Automatic Persisted Queries in Next.js Pages Router](https://github.com/wpengine/hwptoolkit/blob/main/docs/how-to/nextjs-pages-router/enable-apq/index.md): Learn how to reduce latency and network strain in GraphQL queries using Automatic Persisted Queries (APQ) by hashing and reusing query hashes. + +- **hwp-previews** + - [Actions and Filters](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/explanation/actions-and-filters/index.md): Learn about the available PHP actions and filters in HWP Previews plugin for customizing plugin behavior, settings, and integrations. + - [Core Concepts](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/explanation/core-concepts/index.md): Deep dive explanations of the HWP Previews plugin's core concepts, architecture, and systems. + - [Configure Previews](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/how-to/configure-previews/index.md): Learn how to configure preview functionality using the HWP Previews plugin in your headless WordPress application. + - [Integrate with Faust.js](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/how-to/integrate-with-faust/index.md): Learn how to integrate the HWP Previews plugin with Faust.js in your headless WordPress application. + - [HWP Previews](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/index.md): HWP Previews plugin enables seamless preview functionality for headless WordPress applications, allowing content creators to preview their changes in the frontend application before publishing. + - [Build Previews with Astro and WPGraphQL](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/tutorial/previews-with-astro/index.md): Learn how to build an Astro application with WordPress preview functionality using WPGraphQL and the HWP Previews plugin. + - [Build Previews with Next.js and REST API](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/tutorial/previews-with-rest/index.md): Learn how to build a Next.js application with WordPress preview functionality using the REST API and Application Passwords. + - [Build Previews with Next.js and WPGraphQL](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/hwp-previews/tutorial/previews-with-wpgraphql/index.md): Learn how to build a Next.js application with WordPress preview functionality using WPGraphQL and the HWP Previews plugin. + +- **wpgraphql-logging** + - [Explanation: Event Architecture](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/explanation/event-architecture/index.md): Understanding the Event Architecture system in WPGraphQL Logging Plugin and how events are published and subscribed to throughout the logging process. + - [Explanation: Processors & Handlers](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/explanation/processors-handlers/index.md): Understanding the Processors and Handlers system in WPGraphQL Logging Plugin and how they process and store log data. + - [Explanation: Rule Manager](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/explanation/rule-manager/index.md): Understanding the Rule Manager system in WPGraphQL Logging Plugin and how it controls which GraphQL queries get logged. + - [How To Guide: Add a new Settings Field](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/admin-add-fields/index.md): Learn how to add custom settings fields to the WPGraphQL Logging plugin admin interface and retrieve their values programmatically. + - [How To Guide: Add a new Settings Tab](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/admin-add-new-tab/index.md): Learn how to add custom settings tabs to the WPGraphQL Logging plugin admin interface. + - [How To Guide: Update the Admin Grid](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/admin-add-view-column/index.md): Learn how to add custom columns to the WPGraphQL Logging plugin admin logs table. + - [How To Guide: Add Data to an Event](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/event-add-context/index.md): Learn how to add custom context data to WPGraphQL Logging event. + - [How To Guide: Use the Events Pub/Sub System](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/event-pub-sub/index.md): Learn how to use the WPGraphQL Logging plugin's event pub/sub system to subscribe, transform, and emit events. + - [How To Guide: Add a new Handler](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/logger-add-handler/index.md): This guide shows how to log to a file using a Monolog handler, either in addition to the default WordPress database handler or as a replacement. It also covers per-instance overrides. + - [How To Guide: Add a new Processor](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/logger-add-processor/index.md): Learn how to add custom Monolog processors to the WPGraphQL Logging plugin to transform log records. + - [How To Guide: Add or Remove a Rule](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/logger-add-remove-rules/index.md): Learn how to create and register custom logging rules with the WPGraphQL Logging plugin. + - [How To Guide: Update the Log Store Service](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/how-to/update-log-store-service/index.md): Learn how to replace the default database logging with a custom log storage implementation in the WPGraphQL Logging plugin. + - [WPGraphQL Logging Plugin](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/index.md): WPGraphQL Logging plugin provides observability and visibility into the GraphQL request and event lifecycle. This capability gives users the understandability needed to quickly identify and resolve performance issues and bottlenecks within their headless WordPress application. + - [Get Started with WPGraphQL Logging](https://github.com/wpengine/hwptoolkit/blob/main/docs/plugins/wpgraphql-logging/tutorial/learn-logging/index.md): Learn how to install and configure the WPGraphQL Logging plugin, view logged data, and extend it with custom context data. + +## [Examples](https://github.com/wpengine/hwptoolkit/tree/main/examples) + +This directory contains examples demonstrating how to use various features of the Headless WordPress Toolkit. + +- [Angular Template Hierarchy and Data fetching Example](https://github.com/wpengine/hwptoolkit/blob/main/examples/angular/template-hierarchy-data-fetching/README.md): In this example we show how to implement the **WordPress Template Hierarchy in Angular** for use with a Headless WordPress backend using WPGraphQL. +- [Astro Template HIerarchy and Data fetching w/URQL Example](https://github.com/wpengine/hwptoolkit/blob/main/examples/astro/template-hierarchy-data-fetching-urql/README.md): In this example we show how to implement the WP Template Hierarchy in Astro for use with a Headless WordPress backend using WPGraphQL. We use URQL for all routing and fetching page content. +- [Basic CLI Example](https://github.com/wpengine/hwptoolkit/blob/main/examples/basic-cli/README.md): This example demonstrates how to use the HWP CLI to interact with a WordPress site. It shows how to: +- [Next.js pages Apollo Authentication](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/apollo-authentication/README.md): This example demonstrates authentication with username and password in a headless WordPress setup, running Next.js as a frontend framework. Example is using WPGraphQL and WPGraphQL Headless Login plugins to enable authentication features. +- [Example: Fetching data from WordPress with Apollo Client in Next.js](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/apollo-client-data-fetch/README.md): This example demonstrates various approaches to integrate WordPress as a headless CMS with a Next.js frontend using Apollo Client. It showcases different data fetching strategies, state management techniques, and modern web development patterns in a real-world application context. +- [Next.js + WPGraphQL Headless CMS](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/apollo-client-filesystem-routing/README.md): This is a Next.js project integrated with **WPGraphQL** and **WPGraphQL for ACF** to build a headless WordPress-powered site. +- [Example: Next.js App Router using the Fetch API](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/client-app-router-fetch-data/README.md): An example headless WordPress application using Next.js App Router and the fetch API to fetch data from WordPress using WPGraphQL It showcases different data fetching strategies, state management techniques, and modern web development patterns in a real-world application context. This also contains a full example using wp-env and sample data. +- [Example: Multisite Next.js App Router using the Fetch API](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/client-multisite-app-router-fetch-data/README.md): An example mulitsite headless WordPress application using Next.js App Router and the fetch API to fetch data from WordPress using WPGraphQL. It showcases different data fetching strategies, state management techniques, and modern web development patterns in a real-world application context. This also contains a full example using wp-env and sample data. +- [Example: Create a custom WordPress sitemap with WPGraphQL and Apollo Client](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/custom-sitemap-apollo/README.md): This example demonstrates how to generate a custom sitemap in a headless WordPress application using the Next.js framework. The example app fetches data from WordPress using Apollo Client and WPGraphQL. Since WPGraphQL doesn't support sitemaps natively, we are extending it with a custom plugin, which is included in this example as well. This plugin exposes new fields to fetch the sitemap index, with data identical to what's rendered on the native WordPress sitemap. Another field exposed by this plugin allows you to request sitemap subpages by specifying the types and pages. The plugin also adds featured image data, enabling you to create [Image Sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/image-sitemaps). +- [Example: Create a custom WordPress sitemap with vanilla WPGraphQL and Apollo Client](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/custom-sitemap-vanilla-wpgraphql/README.md): This example demonstrates how to generate a custom sitemap in a headless WordPress application using the Next.js framework. The example app fetches data from WordPress using Apollo Client and WPGraphQL. This example is using only the existing WPGraphQL endpoints, without extending it. +- [WordPress to Next.js Sitemap Integration](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/hybrid-sitemap-apollo/README.md): A Next.js application that fetches and transforms WordPress sitemaps with clean URL formatting, providing a seamless integration between WordPress content and Next.js frontend. +- [WordPress GraphQL Proxy Debugger](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/proxied-graphql-debug/README.md): A debugging utility for proxied GraphQL APIs within WordPress environments, offering enhanced query inspection, request/response logging, and real-time query complexity estimation. +- [WordPress to Next.js Sitemap Integration](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/proxied-sitemap-apollo/README.md): This solution provides a proxied sitemap for a WordPress site that integrates seamlessly with a Next.js frontend. The WordPress XML sitemaps are fetched, and the domain URLs within the sitemap are replaced with the frontend domain (headless site URL). These transformed sitemaps are then served via a Next.js API route, ensuring SEO-friendly URLs that point to your frontend domain. +- [Example: Rendering WordPress Blocks in Next.js](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/render-blocks-pages-router/README.md): This example demonstrates rendering WordPress Blocks with JSX in a Next.js project. The example includes 16 block components across various categories. Example includes a utility to convert flat blocks data from GraphQL (GQL) response into the hierarchical data structure. Passing this data into BlockRenderer component generates the WordPress content by matching the appropriate blocks and using a default block when block implementation is missing. Default block is also customizable component. Example also gives an option to provide custom HTML parser to render HTML content. +- [Next.js Template Hierarchy and Data fetching w/URQL Example](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/template-hierarchy/README.md): In this example we show how to implement the WP Template Hierarchy in Next.js for use with a headless WordPress backend using WPGraphQL. We use URQL for all routing and fetching page content. +- [Next.js WooCommerce example - template hierarchy, data fetching and authentication with Apollo](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/woocommerce/README.md): This example demonstrates a complete headless WooCommerce solution with Next.js, showcasing essential e-commerce functionality including shopping cart management, checkout flow, and user authentication. Built with WordPress template hierarchy and modern data fetching patterns using both native fetch and Apollo Client. +- [Example: WordPress Global Styles in Next.js](https://github.com/wpengine/hwptoolkit/blob/main/examples/next/wp-theme-rendered-blocks/README.md): This example demonstrates how to **fetch and apply WordPress Global Styles** in a Next.js project using the `globalStylesheet` GraphQL field. These styles reflect your active theme’s typography, spacing, colors, and layout rules — ensuring that your frontend matches the WordPress editor and theme design. +- [Example: Gravity Forms in Headless WordPress with Nuxt/Vue](https://github.com/wpengine/hwptoolkit/blob/main/examples/nuxt/nuxt-headlesswp-gravity-forms/README.md): This example shows you how to wire up a full headless WordPress backend—complete with Gravity Forms, WPGraphQL, and a pre-built \Questionnaire\ form—alongside a Nuxt 3 front end that dynamically renders your forms using the GraphQL interfaces feature of WPGraphQL for Gravity Forms. +- [Nuxt Data fetching](https://github.com/wpengine/hwptoolkit/blob/main/examples/nuxt/template-hierarchy-data-fetching/README.md): In this example we show how to implement the WP Template Hierarchy and Data Fetching in Nuxt for use with a Headless WordPress backend using WPGraphQL. +- [SvelteKit Template Hierarchy and Data fetching w/URQL Example](https://github.com/wpengine/hwptoolkit/blob/main/examples/sveltekit/template-hierarchy-data-fetching-urql/README.md): In this example we show how to implement the **WordPress Template Hierarchy in SvelteKit** for use with a Headless WordPress backend using WPGraphQL. We use **URQL** for all routing and fetching page content.