[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FGEKHFHFP8QJ9ZTSJSC5FZ":3,"skill-same:01M6FGEKHFHFP8QJ9ZTSJSC5FZ":127},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6FGEKHFHFP8QJ9ZTSJSC5FZ","cloudflare-zero-trust-access",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002FSKILL.md",[],[18,19,20,21,22,23,24],"cloudflare","ZeRO","access","trust","zero trust","cloudflare zero trust","cloudflare zero trust access","2026-11-10 10:12:30",false,"---\nname: cloudflare-zero-trust-access\ndescription: Cloudflare Zero Trust Access authentication for Workers. Use for JWT validation, service tokens, CORS, or encountering preflight blocking, cache race conditions, missing JWT headers.\n\n  Keywords: Cloudflare Access, Zero Trust, Cloudflare Zero Trust Access, Access authentication, JWT validation, access jwt, service tokens, hono cloudflare access, hono-cloudflare-access middleware, workers authentication, protect worker routes, admin authentication, access policy, identity providers, azure ad access, google workspace access, okta access, github access, rbac cloudflare, geographic restrictions, multi-tenant access, cors access, CORS preflight blocked, JWT header missing, access key cache, team mismatch, access claims\nlicense: MIT\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - Bash\nmetadata:\n  version: \"1.0.0\"\n  category: authentication\n  framework: hono\n  platform: cloudflare-workers\n  package_versions:\n    \"@hono\u002Fcloudflare-access\": \"0.3.1\"\n    \"hono\": \"4.10.3\"\n    \"@cloudflare\u002Fworkers-types\": \"4.20251014.0\"\n  errors_prevented: 8\n  token_savings: \"58%\"\n  time_savings: \"2.5 hours\"\n  production_tested: true\n  last_verified: \"2025-10-28\"\n---\n\n# Cloudflare Zero Trust Access Skill\n\nIntegrate Cloudflare Zero Trust Access authentication with Cloudflare Workers applications using proven patterns and templates.\n\n---\n\n## Overview\n\nThis skill provides complete integration patterns for Cloudflare Access, enabling application-level authentication for Workers without managing your own auth infrastructure.\n\n**What is Cloudflare Access?**\nCloudflare Access is Zero Trust authentication that sits in front of your application, validating users before they reach your Worker. After authentication, Access issues JWT tokens that your Worker validates.\n\n**Key Benefits**:\n- No auth infrastructure to maintain\n- Integrates with identity providers (Azure AD, Google, Okta, GitHub)\n- Service tokens for machine-to-machine auth\n- Built-in MFA and session management\n- Comprehensive audit logs\n\n---\n\n## When to Use This Skill\n\nTrigger this skill when tasks involve:\n\n- **Authentication**: Protecting Worker routes, securing admin dashboards, API authentication\n- **Access Control**: Role-based access (RBAC), group-based permissions, geographic restrictions\n- **Service Auth**: Backend services calling Worker APIs, CI\u002FCD pipelines, cron jobs\n- **Multi-Tenant**: SaaS apps with organization-level authentication\n- **CORS + Auth**: Single-page applications calling protected APIs\n\n**Keywords to Trigger**:\ncloudflare access, zero trust, access authentication, JWT validation, service tokens, cloudflare auth, hono access, workers authentication, protect worker routes, admin authentication\n\n---\n\n## Integration Patterns\n\n? **New to Cloudflare Access?** Load `references\u002Fquick-start.md` for step-by-step setup instructions (15-20 minutes).\n\n### Pattern 1: Hono Middleware (Recommended)\n\nUse `@hono\u002Fcloudflare-access` for one-line Access integration.\n\n**When to Use**:\n- Building with Hono framework\n- Need quick, production-ready setup\n- Want automatic JWT validation and key caching\n\n**Template**: `templates\u002Fhono-basic-setup.ts`\n\n**Setup**:\n```typescript\nimport { Hono } from 'hono'\nimport { cloudflareAccess } from '@hono\u002Fcloudflare-access'\n\nconst app = new Hono\u003C{ Bindings: Env }>()\n\n\u002F\u002F Public routes\napp.get('\u002F', (c) => c.text('Public page'))\n\n\u002F\u002F Protected routes\napp.use(\n  '\u002Fadmin\u002F*',\n  cloudflareAccess({\n    domain: (c) => c.env.ACCESS_TEAM_DOMAIN,\n  })\n)\n\napp.get('\u002Fadmin\u002Fdashboard', (c) => {\n  const { email } = c.get('accessPayload')\n  return c.text(`Welcome, ${email}!`)\n})\n```\n\n**Configuration** (`wrangler.jsonc`):\n```jsonc\n{\n  \"vars\": {\n    \"ACCESS_TEAM_DOMAIN\": \"your-team.cloudflareaccess.com\",\n    \"ACCESS_AUD\": \"your-app-aud-tag\"\n  }\n}\n```\n\n**Benefits**:\n- ✅ Automatic JWT validation\n- ✅ Public key caching (1-hour TTL)\n- ✅ Type-safe with TypeScript\n- ✅ Production-tested and maintained\n\n---\n\n### Pattern 2: Manual JWT Validation\n\n**When to Use**: Not using Hono, need custom validation logic\n\n**Template**: `templates\u002Fjwt-validation-manual.ts` (~100 lines, uses Web Crypto API)\n\n---\n\n### Pattern 3: Service Token Authentication\n\n**When to Use**: CI\u002FCD pipelines, backend services, cron jobs (no interactive login)\n\n**Client**: Send `CF-Access-Client-Id` + `CF-Access-Client-Secret` headers\n\n**Server**: Same middleware handles both - detect via `!payload.email && payload.common_name`\n\n? **Full guide**: `references\u002Fservice-tokens-guide.md`\n\n---\n\n### Pattern 4: CORS + Access\n\n**When to Use**: SPA (React\u002FVue\u002FAngular) calling protected API\n\n**⚠️ CRITICAL**: CORS middleware MUST come BEFORE Access middleware!\n```typescript\n\u002F\u002F ✅ CORRECT ORDER\napp.use('*', cors({ origin: 'https:\u002F\u002Fapp.example.com', credentials: true }))\napp.use('\u002Fapi\u002F*', cloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN }))\n```\n**Why**: OPTIONS preflight has no auth headers → Access blocks with 401\n\n? **Full pattern**: `templates\u002Fcors-access.ts`\n\n---\n\n### Pattern 5: Multi-Tenant\n\n**When to Use**: SaaS with per-org authentication, white-label apps\n\n**Architecture**: Tenant config in D1\u002FKV → Dynamic middleware per request\n\n? **Full pattern**: `templates\u002Fmulti-tenant.ts` and `references\u002Fuse-cases.md`\n\n---\n\n## Common Errors Prevented\n\nThis skill prevents 8 documented errors. Full details: `references\u002Fcommon-errors.md`\n\n### Error #1: CORS Preflight Blocked (45 min saved)\n\n**Problem**: OPTIONS requests return 401, breaking CORS\n\n**Solution**: CORS middleware BEFORE Access middleware\n```typescript\n\u002F\u002F ✅ Correct\napp.use('*', cors())\napp.use('\u002Fapi\u002F*', cloudflareAccess({ domain: '...' }))\n```\n\n---\n\n### Error #2: Missing JWT Header (30 min saved)\n\n**Problem**: Request not going through Access, no JWT header\n\n**Solution**: Access Worker through Access URL, not direct `*.workers.dev`\n```\n✅ https:\u002F\u002Fteam.cloudflareaccess.com\u002F...\n❌ https:\u002F\u002Fworker.workers.dev\n```\n\n---\n\n### Error #3: Invalid Team Name (15 min saved)\n\n**Problem**: Hardcoded or wrong team name causes \"Invalid issuer\"\n\n**Solution**: Use environment variables\n```typescript\n\u002F\u002F ✅ Correct\ncloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN })\n\n\u002F\u002F ❌ Wrong\ncloudflareAccess({ domain: 'my-team.cloudflareaccess.com' })\n```\n\n---\n\n### Errors #4-8 (Quick Reference)\n\n| # | Error | Solution |\n|---|-------|----------|\n| 4 | Key cache race | Use `@hono\u002Fcloudflare-access` (auto-caches) |\n| 5 | Wrong service token headers | Use `CF-Access-Client-Id\u002FSecret` (not `Authorization`) |\n| 6 | Token expiration (401 after 1 hr) | Handle gracefully, redirect to login |\n| 7 | Overlapping policies | Use most specific paths |\n| 8 | Dev\u002Fprod mismatch | Use environment-specific configs |\n\n? **Full error details**: `references\u002Fcommon-errors.md` (~2.5 hours saved per implementation)\n\n---\n\n## Templates\n\n| Template | Purpose |\n|----------|---------|\n| `hono-basic-setup.ts` | Standard Hono + Access integration |\n| `jwt-validation-manual.ts` | Manual JWT verification with Web Crypto |\n| `service-token-auth.ts` | Service token patterns |\n| `cors-access.ts` | CORS + Access (correct ordering) |\n| `multi-tenant.ts` | Multi-tenant architecture |\n| `wrangler.jsonc` | Complete Wrangler configuration |\n| `.env.example` | Environment variable template |\n| `types.ts` | TypeScript definitions |\n\n## Scripts\n\n| Script | Usage |\n|--------|-------|\n| `test-access-jwt.sh` | `.\u002Ftest-access-jwt.sh \u003Cjwt-token>` - Decode and validate JWT |\n| `create-service-token.sh` | `.\u002Fcreate-service-token.sh [name]` - Service token setup guide |\n\n---\n\n## Use Cases\n\n| Use Case | Template | Key Point |\n|----------|----------|-----------|\n| Admin Dashboard | `hono-basic-setup.ts` | Email domain policy |\n| API Authentication | `hono-basic-setup.ts` | Mixed user\u002Fservice policy |\n| SPA + API | `cors-access.ts` | CORS before Access! |\n| CI\u002FCD Pipeline | `service-token-auth.ts` | Service token in secrets |\n| Multi-Tenant SaaS | `multi-tenant.ts` | D1 tenant config |\n\n? **Detailed use cases**: `references\u002Fuse-cases.md`\n\n---\n\n## When to Load References\n\n| Reference File | Load When... |\n|----------------|--------------|\n| `references\u002Fquick-start.md` | Step-by-step setup for new users, first-time integration |\n| `references\u002Fcommon-errors.md` | Debugging auth issues, prevention patterns (includes all 8 errors) |\n| `references\u002Fjwt-payload-structure.md` | Accessing JWT claims, user vs service token |\n| `references\u002Fservice-tokens-guide.md` | Setting up machine-to-machine auth |\n| `references\u002Faccess-policy-setup.md` | Dashboard configuration, policy creation |\n| `references\u002Fuse-cases.md` | Detailed implementation for specific scenarios |\n| `references\u002Fvalue-proposition.md` | Token efficiency metrics, workflow guidance, production validation |\n\n---\n\n## Package Versions\n\n| Package | Version |\n|---------|---------|\n| @hono\u002Fcloudflare-access | 0.3.1 |\n| hono | 4.10.7 |\n| @cloudflare\u002Fworkers-types | 4.20251126.0 |\n\n**Verified**: 2025-12-14 | **Token Savings**: ~58% | **Production Tested**: ✅\n\n---\n\n## When NOT to Use\n\nThis skill is for **Cloudflare Workers** with **Cloudflare Access**. Do not use for:\n\n- ❌ Cloudflare Pages (use `@cloudflare\u002Fpages-plugin-cloudflare-access` instead)\n- ❌ Non-Cloudflare platforms\n- ❌ Custom JWT auth (not Access)\n- ❌ Auth.js or other auth libraries\n- ❌ Self-hosted authentication\n\nFor those, use appropriate skills or libraries.\n\n---\n\n## Additional Resources\n\n**Cloudflare Documentation**:\n- [Access Overview](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fauthorization-cookie\u002F)\n- [JWT Validation](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fauthorization-cookie\u002Fvalidating-json\u002F)\n- [Service Tokens](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fservice-tokens\u002F)\n\n**Packages**:\n- [@hono\u002Fcloudflare-access](https:\u002F\u002Fgithub.com\u002Fhonojs\u002Fmiddleware\u002Ftree\u002Fmain\u002Fpackages\u002Fcloudflare-access)\n- [Hono Framework](https:\u002F\u002Fhono.dev\u002F)\n\n**Dashboard**:\n- [Zero Trust Dashboard](https:\u002F\u002Fone.dash.cloudflare.com\u002F)\n\n---\n\n**Skill Version**: 1.0.0\n**Last Updated**: 2025-10-28\n**Errors Prevented**: 8\n**Token Savings**: 58%\n**Time Savings**: 2.5 hours\n**Production Tested**: ✅\n","# Cloudflare Zero Trust Access Skill\n\nIntegrate Cloudflare Zero Trust Access authentication with Cloudflare Workers applications using proven patterns and templates.\n\n---\n\n## Overview\n\nThis skill provides complete integration patterns for Cloudflare Access, enabling application-level authentication for Workers without managing your own auth infrastructure.\n\n**What is Cloudflare Access?**\nCloudflare Access is Zero Trust authentication that sits in front of your application, validating users before they reach your Worker. After authentication, Access issues JWT tokens that your Worker validates.\n\n**Key Benefits**:\n- No auth infrastructure to maintain\n- Integrates with identity providers (Azure AD, Google, Okta, GitHub)\n- Service tokens for machine-to-machine auth\n- Built-in MFA and session management\n- Comprehensive audit logs\n\n---\n\n## When to Use This Skill\n\nTrigger this skill when tasks involve:\n\n- **Authentication**: Protecting Worker routes, securing admin dashboards, API authentication\n- **Access Control**: Role-based access (RBAC), group-based permissions, geographic restrictions\n- **Service Auth**: Backend services calling Worker APIs, CI\u002FCD pipelines, cron jobs\n- **Multi-Tenant**: SaaS apps with organization-level authentication\n- **CORS + Auth**: Single-page applications calling protected APIs\n\n**Keywords to Trigger**:\ncloudflare access, zero trust, access authentication, JWT validation, service tokens, cloudflare auth, hono access, workers authentication, protect worker routes, admin authentication\n\n---\n\n## Integration Patterns\n\n? **New to Cloudflare Access?** Load `references\u002Fquick-start.md` for step-by-step setup instructions (15-20 minutes).\n\n### Pattern 1: Hono Middleware (Recommended)\n\nUse `@hono\u002Fcloudflare-access` for one-line Access integration.\n\n**When to Use**:\n- Building with Hono framework\n- Need quick, production-ready setup\n- Want automatic JWT validation and key caching\n\n**Template**: `templates\u002Fhono-basic-setup.ts`\n\n**Setup**:\n```typescript\nimport { Hono } from 'hono'\nimport { cloudflareAccess } from '@hono\u002Fcloudflare-access'\n\nconst app = new Hono\u003C{ Bindings: Env }>()\n\n\u002F\u002F Public routes\napp.get('\u002F', (c) => c.text('Public page'))\n\n\u002F\u002F Protected routes\napp.use(\n  '\u002Fadmin\u002F*',\n  cloudflareAccess({\n    domain: (c) => c.env.ACCESS_TEAM_DOMAIN,\n  })\n)\n\napp.get('\u002Fadmin\u002Fdashboard', (c) => {\n  const { email } = c.get('accessPayload')\n  return c.text(`Welcome, ${email}!`)\n})\n```\n\n**Configuration** (`wrangler.jsonc`):\n```jsonc\n{\n  \"vars\": {\n    \"ACCESS_TEAM_DOMAIN\": \"your-team.cloudflareaccess.com\",\n    \"ACCESS_AUD\": \"your-app-aud-tag\"\n  }\n}\n```\n\n**Benefits**:\n- ✅ Automatic JWT validation\n- ✅ Public key caching (1-hour TTL)\n- ✅ Type-safe with TypeScript\n- ✅ Production-tested and maintained\n\n---\n\n### Pattern 2: Manual JWT Validation\n\n**When to Use**: Not using Hono, need custom validation logic\n\n**Template**: `templates\u002Fjwt-validation-manual.ts` (~100 lines, uses Web Crypto API)\n\n---\n\n### Pattern 3: Service Token Authentication\n\n**When to Use**: CI\u002FCD pipelines, backend services, cron jobs (no interactive login)\n\n**Client**: Send `CF-Access-Client-Id` + `CF-Access-Client-Secret` headers\n\n**Server**: Same middleware handles both - detect via `!payload.email && payload.common_name`\n\n? **Full guide**: `references\u002Fservice-tokens-guide.md`\n\n---\n\n### Pattern 4: CORS + Access\n\n**When to Use**: SPA (React\u002FVue\u002FAngular) calling protected API\n\n**⚠️ CRITICAL**: CORS middleware MUST come BEFORE Access middleware!\n```typescript\n\u002F\u002F ✅ CORRECT ORDER\napp.use('*', cors({ origin: 'https:\u002F\u002Fapp.example.com', credentials: true }))\napp.use('\u002Fapi\u002F*', cloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN }))\n```\n**Why**: OPTIONS preflight has no auth headers → Access blocks with 401\n\n? **Full pattern**: `templates\u002Fcors-access.ts`\n\n---\n\n### Pattern 5: Multi-Tenant\n\n**When to Use**: SaaS with per-org authentication, white-label apps\n\n**Architecture**: Tenant config in D1\u002FKV → Dynamic middleware per request\n\n? **Full pattern**: `templates\u002Fmulti-tenant.ts` and `references\u002Fuse-cases.md`\n\n---\n\n## Common Errors Prevented\n\nThis skill prevents 8 documented errors. Full details: `references\u002Fcommon-errors.md`\n\n### Error #1: CORS Preflight Blocked (45 min saved)\n\n**Problem**: OPTIONS requests return 401, breaking CORS\n\n**Solution**: CORS middleware BEFORE Access middleware\n```typescript\n\u002F\u002F ✅ Correct\napp.use('*', cors())\napp.use('\u002Fapi\u002F*', cloudflareAccess({ domain: '...' }))\n```\n\n---\n\n### Error #2: Missing JWT Header (30 min saved)\n\n**Problem**: Request not going through Access, no JWT header\n\n**Solution**: Access Worker through Access URL, not direct `*.workers.dev`\n```\n✅ https:\u002F\u002Fteam.cloudflareaccess.com\u002F...\n❌ https:\u002F\u002Fworker.workers.dev\n```\n\n---\n\n### Error #3: Invalid Team Name (15 min saved)\n\n**Problem**: Hardcoded or wrong team name causes \"Invalid issuer\"\n\n**Solution**: Use environment variables\n```typescript\n\u002F\u002F ✅ Correct\ncloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN })\n\n\u002F\u002F ❌ Wrong\ncloudflareAccess({ domain: 'my-team.cloudflareaccess.com' })\n```\n\n---\n\n### Errors #4-8 (Quick Reference)\n\n| # | Error | Solution |\n|---|-------|----------|\n| 4 | Key cache race | Use `@hono\u002Fcloudflare-access` (auto-caches) |\n| 5 | Wrong service token headers | Use `CF-Access-Client-Id\u002FSecret` (not `Authorization`) |\n| 6 | Token expiration (401 after 1 hr) | Handle gracefully, redirect to login |\n| 7 | Overlapping policies | Use most specific paths |\n| 8 | Dev\u002Fprod mismatch | Use environment-specific configs |\n\n? **Full error details**: `references\u002Fcommon-errors.md` (~2.5 hours saved per implementation)\n\n---\n\n## Templates\n\n| Template | Purpose |\n|----------|---------|\n| `hono-basic-setup.ts` | Standard Hono + Access integration |\n| `jwt-validation-manual.ts` | Manual JWT verification with Web Crypto |\n| `service-token-auth.ts` | Service token patterns |\n| `cors-access.ts` | CORS + Access (correct ordering) |\n| `multi-tenant.ts` | Multi-tenant architecture |\n| `wrangler.jsonc` | Complete Wrangler configuration |\n| `.env.example` | Environment variable template |\n| `types.ts` | TypeScript definitions |\n\n## Scripts\n\n| Script | Usage |\n|--------|-------|\n| `test-access-jwt.sh` | `.\u002Ftest-access-jwt.sh \u003Cjwt-token>` - Decode and validate JWT |\n| `create-service-token.sh` | `.\u002Fcreate-service-token.sh [name]` - Service token setup guide |\n\n---\n\n## Use Cases\n\n| Use Case | Template | Key Point |\n|----------|----------|-----------|\n| Admin Dashboard | `hono-basic-setup.ts` | Email domain policy |\n| API Authentication | `hono-basic-setup.ts` | Mixed user\u002Fservice policy |\n| SPA + API | `cors-access.ts` | CORS before Access! |\n| CI\u002FCD Pipeline | `service-token-auth.ts` | Service token in secrets |\n| Multi-Tenant SaaS | `multi-tenant.ts` | D1 tenant config |\n\n? **Detailed use cases**: `references\u002Fuse-cases.md`\n\n---\n\n## When to Load References\n\n| Reference File | Load When... |\n|----------------|--------------|\n| `references\u002Fquick-start.md` | Step-by-step setup for new users, first-time integration |\n| `references\u002Fcommon-errors.md` | Debugging auth issues, prevention patterns (includes all 8 errors) |\n| `references\u002Fjwt-payload-structure.md` | Accessing JWT claims, user vs service token |\n| `references\u002Fservice-tokens-guide.md` | Setting up machine-to-machine auth |\n| `references\u002Faccess-policy-setup.md` | Dashboard configuration, policy creation |\n| `references\u002Fuse-cases.md` | Detailed implementation for specific scenarios |\n| `references\u002Fvalue-proposition.md` | Token efficiency metrics, workflow guidance, production validation |\n\n---\n\n## Package Versions\n\n| Package | Version |\n|---------|---------|\n| @hono\u002Fcloudflare-access | 0.3.1 |\n| hono | 4.10.7 |\n| @cloudflare\u002Fworkers-types | 4.20251126.0 |\n\n**Verified**: 2025-12-14 | **Token Savings**: ~58% | **Production Tested**: ✅\n\n---\n\n## When NOT to Use\n\nThis skill is for **Cloudflare Workers** with **Cloudflare Access**. Do not use for:\n\n- ❌ Cloudflare Pages (use `@cloudflare\u002Fpages-plugin-cloudflare-access` instead)\n- ❌ Non-Cloudflare platforms\n- ❌ Custom JWT auth (not Access)\n- ❌ Auth.js or other auth libraries\n- ❌ Self-hosted authentication\n\nFor those, use appropriate skills or libraries.\n\n---\n\n## Additional Resources\n\n**Cloudflare Documentation**:\n- [Access Overview](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fauthorization-cookie\u002F)\n- [JWT Validation](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fauthorization-cookie\u002Fvalidating-json\u002F)\n- [Service Tokens](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fidentity\u002Fservice-tokens\u002F)\n\n**Packages**:\n- [@hono\u002Fcloudflare-access](https:\u002F\u002Fgithub.com\u002Fhonojs\u002Fmiddleware\u002Ftree\u002Fmain\u002Fpackages\u002Fcloudflare-access)\n- [Hono Framework](https:\u002F\u002Fhono.dev\u002F)\n\n**Dashboard**:\n- [Zero Trust Dashboard](https:\u002F\u002Fone.dash.cloudflare.com\u002F)\n\n---\n\n**Skill Version**: 1.0.0\n**Last Updated**: 2025-10-28\n**Errors Prevented**: 8\n**Token Savings**: 58%\n**Time Savings**: 2.5 hours\n**Production Tested**: ✅\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-zero-trust-access",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-zero-trust-access",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-zero-trust-access","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002FSKILL.md",true,[53,59,63,67,71,75,79,83,89,93,99,103,107,111,115,119,123],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Faccess-policy-setup.md","REFERENCE","参考文档",13845,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Faccess-policy-setup.md",{"path":60,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Fcommon-errors.md",15495,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fcommon-errors.md",{"path":64,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fjwt-payload-structure.md",13066,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fjwt-payload-structure.md",{"path":68,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fquick-start.md",1821,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fquick-start.md",{"path":72,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fservice-tokens-guide.md",15656,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fservice-tokens-guide.md",{"path":76,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fuse-cases.md",8258,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fuse-cases.md",{"path":80,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fvalue-proposition.md",1596,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Freferences\u002Fvalue-proposition.md",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002Fcreate-service-token.sh","SCRIPT","脚本",8468,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Fscripts\u002Fcreate-service-token.sh",{"path":90,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Ftest-access-jwt.sh",7622,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Fscripts\u002Ftest-access-jwt.sh",{"path":94,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":97,"sourceHtmlUrl":98},"templates\u002F.env.example","OTHER","其他",4333,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002F.env.example",{"path":100,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":101,"sourceHtmlUrl":102},"templates\u002Fcors-access.ts",8278,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fcors-access.ts",{"path":104,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":105,"sourceHtmlUrl":106},"templates\u002Fhono-basic-setup.ts",3942,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fhono-basic-setup.ts",{"path":108,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":109,"sourceHtmlUrl":110},"templates\u002Fjwt-validation-manual.ts",6731,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fjwt-validation-manual.ts",{"path":112,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":113,"sourceHtmlUrl":114},"templates\u002Fmulti-tenant.ts",10367,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fmulti-tenant.ts",{"path":116,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":117,"sourceHtmlUrl":118},"templates\u002Fservice-token-auth.ts",7652,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fservice-token-auth.ts",{"path":120,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":121,"sourceHtmlUrl":122},"templates\u002Ftypes.ts",8701,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Ftypes.ts",{"path":124,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":125,"sourceHtmlUrl":126},"templates\u002Fwrangler.jsonc",3963,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-zero-trust-access\u002Ftemplates\u002Fwrangler.jsonc",[128,142,152,161,167,174],{"skillNo":129,"name":130,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":138,"publishedAt":25},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[139,140,141],"model","model hierarchy","model hierarchy skill",{"skillNo":143,"name":144,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":25},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[147],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},[149,150,151],"MCP","zoom","zoom mcp",{"skillNo":153,"name":154,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":25},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[158,159,160,150],"sdk","zoom apps sdk","apps",{"skillNo":162,"name":163,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":25},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[163],{"skillNo":168,"name":169,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":25},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[172],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},[169],{"skillNo":175,"name":176,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":25},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[176]]