diff --git a/.github/workflows/check-example-repos.yml b/.github/workflows/check-example-repos.yml new file mode 100644 index 0000000..fb66063 --- /dev/null +++ b/.github/workflows/check-example-repos.yml @@ -0,0 +1,38 @@ +name: Check Example Repos + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + check-example-repos: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Verify every linked example repo is live and not archived + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -euo pipefail + errors=0 + repos=$(grep -oE '\]\(https://github\.com/[^)]+\)' skills/fastly-reference-architectures/references/examples.md \ + | sed -E 's#\]\(https://github\.com/([^)]+)\)#\1#') + for repo in $repos; do + echo "Checking $repo..." + if ! info=$(gh api "repos/$repo" 2>&1); then + echo "::error::$repo is unreachable (removed, renamed, or private)" + errors=$((errors + 1)) + continue + fi + if [[ "$(echo "$info" | jq -r '.archived')" == "true" ]]; then + echo "::error::$repo is archived" + errors=$((errors + 1)) + fi + done + if [[ $errors -gt 0 ]]; then + echo "Error: $errors example repo(s) failed the liveness check" >&2 + exit 1 + fi diff --git a/README.md b/README.md index 58b693c..b169bcf 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ It is a skills-only package, so it does not include an `mcp.json` configuration. - `fastly-cli`: Using the Fastly CLI to manage services, compute apps, logging, WAF, TLS, key-value stores, and stats. - `fastly-fiddle`: Testing VCL against real Fastly edge infrastructure with Fastly Fiddle, covering assertion-based tests, the Fiddle HTTP API, shareable bug reproductions, and CI integration. - `fastly-stats`: Fastly traffic numbers via the CLI or raw HTTP, covering the Historical Stats, Real-Time analytics, and Origin/Domain Inspector APIs, and owning the unit, window, and aggregation conventions that decide whether a reported figure is right. +- `fastly-reference-architectures`: Curated GitHub repositories demonstrating working reference architectures on Fastly, from single Compute applications to systems combining multiple Fastly products. - `falco`: VCL development with Falco, covering linting, testing, simulation, formatting, REPL, and Terraform integration. - `fastlike`: Running Fastly Compute locally with Fastlike (Go-based), covering backend configuration, builds, and testing. - `viceroy`: Running Fastly Compute locally with Viceroy (WASM-based), covering serving, configuration, testing, and SDK adaptation. diff --git a/skills/fastly-reference-architectures/SKILL.md b/skills/fastly-reference-architectures/SKILL.md new file mode 100644 index 0000000..3e7fa6e --- /dev/null +++ b/skills/fastly-reference-architectures/SKILL.md @@ -0,0 +1,8 @@ +--- +name: fastly-reference-architectures +description: "Curated GitHub repositories demonstrating working reference architectures on the Fastly platform, from single Compute applications to systems combining multiple Fastly products. Use when designing a new solution on Fastly and a worked example of the target pattern would help, or when implementing and a concrete assembled reference would clarify the shape of the code. Not for documentation of how a specific Fastly tool or API works on its own — see the tool-specific skills for that." +--- + +# Fastly reference architectures + +Example projects running on Fastly (git repositories): [references/examples.md](references/examples.md) diff --git a/skills/fastly-reference-architectures/references/examples.md b/skills/fastly-reference-architectures/references/examples.md new file mode 100644 index 0000000..5d80fb5 --- /dev/null +++ b/skills/fastly-reference-architectures/references/examples.md @@ -0,0 +1,17 @@ +# Example projects running on Fastly + +| Project | Description | Platform | +| --- | --- | --- | +| [google-apple-github-auth](https://github.com/bharwani/google-apple-github-auth) | Social login via Google/Apple (OIDC) and GitHub (OAuth2), verified entirely at the edge | Compute | +| [fastly-compute-news-with-content-paywall](https://github.com/saschanowak/fastly-compute-news-with-content-paywall) | Paywall / access-control gating for content | Compute | +| [vcl_shielding](https://github.com/bharwani/vcl_shielding) | Custom origin shielding topology via peering/IX | VCL | +| [fastly-bulk-redirects](https://github.com/Fcuervo21/fastly-bulk-redirects) | Bulk redirect table in Config Store, served by an edge worker | Compute | +| [fastly-edge-ab-testing](https://github.com/Fcuervo21/fastly-edge-ab-testing) | Cookie-based A/B test bucket allocation | Compute | +| [compute-mcp-demo](https://github.com/bharwani/compute-mcp-demo) | Turns a Shopify store into an MCP server, edge-cached | Compute | +| [fastly-examples-live-betting-fanout](https://github.com/dmichael-fastly/fastly-examples-live-betting-fanout) | Real-time score/odds fan-out to many concurrent clients | Compute, Fanout | +| [edge-mcp](https://github.com/fastly/edge-mcp) | Stateless MCP protocol server (point-in-time example, unmaintained) | Compute | +| [fastly-serverless-cms](https://github.com/chrisbuckley/fastly-serverless-cms) | Full CMS with no origin servers | Compute, KV Store, Object Storage | +| [fastly-serverless-checkers](https://github.com/chrisbuckley/fastly-serverless-checkers) | Real-time multiplayer checkers, no backend servers | Compute, Fanout, KV Store | +| [infiniteboard](https://github.com/anaramirezmorones/infiniteboard) | Collaborative infinite whiteboard | Compute, Fanout, KV Store, Object Storage | +| [fastly-log-analytics](https://github.com/fastly/fastly-log-analytics) | Request-level log analytics dashboard | Compute, Object Storage | +| [fos-migrator](https://github.com/benjaminshaver/fos-migrator) | Bulk content migration into Object Storage | Compute, Object Storage |