Agent Skillssediman-agent/OpenSkynet › expo-api-routes

expo-api-routes

GitHub

提供在Expo Router中使用EAS Hosting创建API路由的指南。涵盖适用场景(如处理密钥、数据库操作)、文件结构、HTTP方法实现、动态路由及请求处理,旨在帮助开发者安全高效地构建服务端逻辑。

skills/expo_skills/expo-api-routes/SKILL.md sediman-agent/OpenSkynet

Trigger Scenarios

需要创建Expo API路由 询问Expo Router后端实现 涉及服务端密钥或数据库操作 配置EAS Hosting API

Install

npx skills add sediman-agent/OpenSkynet --skill expo-api-routes -g -y
More Options

Non-standard path

npx skills add https://github.com/sediman-agent/OpenSkynet/tree/main/skills/expo_skills/expo-api-routes -g -y

Use without installing

npx skills use sediman-agent/OpenSkynet@expo-api-routes

指定 Agent (Claude Code)

npx skills add sediman-agent/OpenSkynet --skill expo-api-routes -a claude-code -g -y

安装 repo 全部 skill

npx skills add sediman-agent/OpenSkynet --all -g -y

预览 repo 内 skill

npx skills add sediman-agent/OpenSkynet --list

SKILL.md

Frontmatter
{
    "name": "expo-api-routes",
    "license": "MIT",
    "version": "1.0.0",
    "description": "Guidelines for creating API routes in Expo Router with EAS Hosting"
}

When to Use API Routes

Use API routes when you need:

  • Server-side secrets — API keys, database credentials, or tokens that must never reach the client
  • Database operations — Direct database queries that shouldn't be exposed
  • Third-party API proxies — Hide API keys when calling external services (OpenAI, Stripe, etc.)
  • Server-side validation — Validate data before database writes
  • Webhook endpoints — Receive callbacks from services like Stripe or GitHub
  • Rate limiting — Control access at the server level
  • Heavy computation — Offload processing that would be slow on mobile

When NOT to Use API Routes

Avoid API routes when:

  • Data is already public — Use direct fetch to public APIs instead
  • No secrets required — Static data or client-safe operations
  • Real-time updates needed — Use WebSockets or services like Supabase Realtime
  • Simple CRUD — Consider Firebase, Supabase, or Convex for managed backends
  • File uploads — Use direct-to-storage uploads (S3 presigned URLs, Cloudflare R2)
  • Authentication only — Use Clerk, Auth0, or Firebase Auth instead

File Structure

API routes live in the app directory with +api.ts suffix:

app/
  api/
    hello+api.ts          → GET /api/hello
    users+api.ts          → /api/users
    users/[id]+api.ts     → /api/users/:id
  (tabs)/
    index.tsx

Basic API Route

// app/api/hello+api.ts
export function GET(request: Request) {
  return Response.json({ message: "Hello from Expo!" });
}

HTTP Methods

Export named functions for each HTTP method:

// app/api/items+api.ts
export function GET(request: Request) {
  return Response.json({ items: [] });
}

export async function POST(request: Request) {
  const body = await request.json();
  return Response.json({ created: body }, { status: 201 });
}

export async function PUT(request: Request) {
  const body = await request.json();
  return Response.json({ updated: body });
}

export async function DELETE(request: Request) {
  return new Response(null, { status: 204 });
}

Dynamic Routes

// app/api/users/[id]+api.ts
export function GET(request: Request, { id }: { id: string }) {
  return Response.json({ userId: id });
}

Request Handling

Query Parameters

export function GET(request: Request) {
  const url = new URL(request.url);
  const page = url.searchParams.get("page") ?? "1";
  const limit = url.searchParams.get("limit") ?? "10";

  return Response.json({ page, limit });
}

Headers

export function GET(request: Request) {
  const auth = request.headers.get("Authorization");

  if (!auth) {
    return Response.json({ error: "Unauthorized" }, { status: 401 });
  }

  return Response.json({ authenticated: true });
}

JSON Body

export async function POST(request: Request) {
  const { email, password } = await request.json();

  if (!email || !password) {
    return Response.json({ error: "Missing fields" }, { status: 400 });
  }

  return Response.json({ success: true });
}

Environment Variables

Use process.env for server-side secrets:

// app/api/ai+api.ts
export async function POST(request: Request) {
  const { prompt } = await request.json();

  const response = await fetch("https://api.openai.com/v1/chat/completions", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: JSON.stringify({
      model: "gpt-4",
      messages: [{ role: "user", content: prompt }],
    }),
  });

  const data = await response.json();
  return Response.json(data);
}

Set environment variables:

  • Local: Create .env file (never commit)
  • EAS Hosting: Use eas env:create or Expo dashboard

CORS Headers

Add CORS for web clients:

const corsHeaders = {
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
  "Access-Control-Allow-Headers": "Content-Type, Authorization",
};

export function OPTIONS() {
  return new Response(null, { headers: corsHeaders });
}

export function GET() {
  return Response.json({ data: "value" }, { headers: corsHeaders });
}

Error Handling

export async function POST(request: Request) {
  try {
    const body = await request.json();
    // Process...
    return Response.json({ success: true });
  } catch (error) {
    console.error("API error:", error);
    return Response.json({ error: "Internal server error" }, { status: 500 });
  }
}

Testing Locally

Start the development server with API routes:

npx expo serve

This starts a local server at http://localhost:8081 with full API route support.

Test with curl:

curl http://localhost:8081/api/hello
curl -X POST http://localhost:8081/api/users -H "Content-Type: application/json" -d '{"name":"Test"}'

Deployment to EAS Hosting

Prerequisites

npm install -g eas-cli
eas login

Deploy

eas deploy

This builds and deploys your API routes to EAS Hosting (Cloudflare Workers).

Environment Variables for Production

# Create a secret
eas env:create --name OPENAI_API_KEY --value sk-xxx --environment production

# Or use the Expo dashboard

Custom Domain

Configure in eas.json or Expo dashboard.

EAS Hosting Runtime (Cloudflare Workers)

API routes run on Cloudflare Workers. Key limitations:

Missing/Limited APIs

  • No Node.js filesystemfs module unavailable
  • No native Node modules — Use Web APIs or polyfills
  • Limited execution time — 30 second timeout for CPU-intensive tasks
  • No persistent connections — WebSockets require Durable Objects
  • fetch is available — Use standard fetch for HTTP requests

Use Web APIs Instead

// Use Web Crypto instead of Node crypto
const hash = await crypto.subtle.digest(
  "SHA-256",
  new TextEncoder().encode("data")
);

// Use fetch instead of node-fetch
const response = await fetch("https://api.example.com");

// Use Response/Request (already available)
return new Response(JSON.stringify(data), {
  headers: { "Content-Type": "application/json" },
});

Database Options

Since filesystem is unavailable, use cloud databases:

  • Cloudflare D1 — SQLite at the edge
  • Turso — Distributed SQLite
  • PlanetScale — Serverless MySQL
  • Supabase — Postgres with REST API
  • Neon — Serverless Postgres

Example with Turso:

// app/api/users+api.ts
import { createClient } from "@libsql/client/web";

const db = createClient({
  url: process.env.TURSO_URL!,
  authToken: process.env.TURSO_AUTH_TOKEN!,
});

export async function GET() {
  const result = await db.execute("SELECT * FROM users");
  return Response.json(result.rows);
}

Calling API Routes from Client

// From React Native components
const response = await fetch("/api/hello");
const data = await response.json();

// With body
const response = await fetch("/api/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "John" }),
});

Common Patterns

Authentication Middleware

// utils/auth.ts
export async function requireAuth(request: Request) {
  const token = request.headers.get("Authorization")?.replace("Bearer ", "");

  if (!token) {
    throw new Response(JSON.stringify({ error: "Unauthorized" }), {
      status: 401,
      headers: { "Content-Type": "application/json" },
    });
  }

  // Verify token...
  return { userId: "123" };
}

// app/api/protected+api.ts
import { requireAuth } from "../../utils/auth";

export async function GET(request: Request) {
  const { userId } = await requireAuth(request);
  return Response.json({ userId });
}

Proxy External API

// app/api/weather+api.ts
export async function GET(request: Request) {
  const url = new URL(request.url);
  const city = url.searchParams.get("city");

  const response = await fetch(
    `https://api.weather.com/v1/current?city=${city}&key=${process.env.WEATHER_API_KEY}`
  );

  return Response.json(await response.json());
}

Rules

  • NEVER expose API keys or secrets in client code
  • ALWAYS validate and sanitize user input
  • Use proper HTTP status codes (200, 201, 400, 401, 404, 500)
  • Handle errors gracefully with try/catch
  • Keep API routes focused — one responsibility per endpoint
  • Use TypeScript for type safety
  • Log errors server-side for debugging

Version History

  • c9d8953 Current 2026-07-05 19:54

Same Skill Collection

skills/anthropics_skills/algorithmic-art/SKILL.md
skills/anthropics_skills/brand-guidelines/SKILL.md
skills/anthropics_skills/canvas-design/SKILL.md
skills/anthropics_skills/doc-coauthoring/SKILL.md
skills/anthropics_skills/frontend-design/SKILL.md
skills/anthropics_skills/internal-comms/SKILL.md
skills/anthropics_skills/mcp-builder/SKILL.md
skills/anthropics_skills/pdf/SKILL.md
skills/anthropics_skills/skill-creator/SKILL.md
skills/anthropics_skills/slack-gif-creator/SKILL.md
skills/anthropics_skills/theme-factory/SKILL.md
skills/anthropics_skills/web-artifacts-builder/SKILL.md
skills/anthropics_skills/webapp-testing/SKILL.md
skills/browser-use_browser-use/browser-use/SKILL.md
skills/browser-use_browser-use/remote-browser/SKILL.md
skills/browser-use_video-use/manim-video/SKILL.md
skills/browser-use_video-use/video-use/SKILL.md
skills/cloudflare_skills/agents-sdk/SKILL.md
skills/cloudflare_skills/cloudflare/SKILL.md
skills/cloudflare_skills/durable-objects/SKILL.md
skills/cloudflare_skills/sandbox-sdk/SKILL.md
skills/cloudflare_skills/web-perf/SKILL.md
skills/cloudflare_skills/workers-best-practices/SKILL.md
skills/cloudflare_skills/wrangler/SKILL.md
skills/cursor_plugins/cli-for-agent/skills/cli-for-agents/SKILL.md
skills/cursor_plugins/continual-learning/skills/continual-learning/SKILL.md
skills/cursor_plugins/create-plugin/skills/create-plugin-scaffold/SKILL.md
skills/cursor_plugins/create-plugin/skills/review-plugin-submission/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/check-compiler-errors/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-cli/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-ui/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/deslop/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-merge-conflicts/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/get-pr-comments/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/loop-on-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/make-pr-easy-to-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/new-branch-and-pr/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/review-and-ship/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/run-smoke-tests/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/thermo-nuclear-code-quality-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/verify-this/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/weekly-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/what-did-i-get-done/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/workflow-from-chats/SKILL.md
skills/cursor_plugins/docs-canvas/skills/docs-canvas/SKILL.md
skills/cursor_plugins/orchestrate/skills/orchestrate/SKILL.md
skills/cursor_plugins/pr-review-canvas/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/pstack/skills/architect/SKILL.md
skills/cursor_plugins/pstack/skills/arena/SKILL.md
skills/cursor_plugins/pstack/skills/automate-me/SKILL.md
skills/cursor_plugins/pstack/skills/figure-it-out/SKILL.md
skills/cursor_plugins/pstack/skills/how/SKILL.md
skills/cursor_plugins/pstack/skills/interrogate/SKILL.md
skills/cursor_plugins/pstack/skills/poteto-mode/SKILL.md
skills/cursor_plugins/pstack/skills/principle-boundary-discipline/SKILL.md
skills/cursor_plugins/pstack/skills/principle-build-the-lever/SKILL.md
skills/cursor_plugins/pstack/skills/principle-encode-lessons-in-structure/SKILL.md
skills/cursor_plugins/pstack/skills/principle-exhaust-the-design-space/SKILL.md
skills/cursor_plugins/pstack/skills/principle-experience-first/SKILL.md
skills/cursor_plugins/pstack/skills/principle-fix-root-causes/SKILL.md
skills/cursor_plugins/pstack/skills/principle-foundational-thinking/SKILL.md
skills/cursor_plugins/pstack/skills/principle-guard-the-context-window/SKILL.md
skills/cursor_plugins/pstack/skills/principle-laziness-protocol/SKILL.md
skills/cursor_plugins/pstack/skills/principle-make-operations-idempotent/SKILL.md
skills/cursor_plugins/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md
skills/cursor_plugins/pstack/skills/principle-minimize-reader-load/SKILL.md
skills/cursor_plugins/pstack/skills/principle-never-block-on-the-human/SKILL.md
skills/cursor_plugins/pstack/skills/principle-outcome-oriented-execution/SKILL.md
skills/cursor_plugins/pstack/skills/principle-prove-it-works/SKILL.md
skills/cursor_plugins/pstack/skills/principle-redesign-from-first-principles/SKILL.md
skills/cursor_plugins/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md
skills/cursor_plugins/pstack/skills/principle-subtract-before-you-add/SKILL.md
skills/cursor_plugins/pstack/skills/principle-type-system-discipline/SKILL.md
skills/cursor_plugins/pstack/skills/reflect/SKILL.md
skills/cursor_plugins/pstack/skills/show-me-your-work/SKILL.md
skills/cursor_plugins/pstack/skills/tdd/SKILL.md
skills/cursor_plugins/pstack/skills/typescript-best-practices/SKILL.md
skills/cursor_plugins/pstack/skills/why/SKILL.md
skills/cursor_plugins/ralph-loop/skills/cancel-ralph/SKILL.md
skills/cursor_plugins/ralph-loop/skills/ralph-loop-help/SKILL.md
skills/cursor_plugins/ralph-loop/skills/ralph-loop/SKILL.md
skills/cursor_plugins/teaching/skills/create-learning-path/SKILL.md
skills/cursor_plugins/teaching/skills/run-learning-retrospective/SKILL.md
skills/cursor_plugins/thermos/skills/thermo-nuclear-code-quality-review/SKILL.md
skills/cursor_plugins/thermos/skills/thermo-nuclear-review/SKILL.md
skills/cursor_plugins/thermos/skills/thermos/SKILL.md
skills/expo_skills/add-app-clip/SKILL.md
skills/expo_skills/building-native-ui/SKILL.md
skills/expo_skills/eas-update-insights/SKILL.md
skills/expo_skills/expo-brownfield/SKILL.md
skills/expo_skills/expo-cicd-workflows/SKILL.md
skills/expo_skills/expo-deployment/SKILL.md
skills/expo_skills/expo-dev-client/SKILL.md
skills/expo_skills/expo-module/SKILL.md
skills/expo_skills/expo-tailwind-setup/SKILL.md
skills/expo_skills/expo-ui-jetpack-compose/SKILL.md
skills/expo_skills/expo-ui-swift-ui/SKILL.md
skills/expo_skills/native-data-fetching/SKILL.md
skills/expo_skills/upgrading-expo/SKILL.md
skills/expo_skills/use-dom/SKILL.md
skills/firecrawl_skills/firecrawl-build-interact/SKILL.md
skills/firecrawl_skills/firecrawl-build-onboarding/SKILL.md
skills/firecrawl_skills/firecrawl-build-scrape/SKILL.md
skills/firecrawl_skills/firecrawl-build-search/SKILL.md
skills/huggingface_skills/huggingface-community-evals/SKILL.md
skills/huggingface_skills/huggingface-datasets/SKILL.md
skills/huggingface_skills/huggingface-gradio/SKILL.md
skills/huggingface_skills/huggingface-local-models/SKILL.md
skills/huggingface_skills/huggingface-paper-publisher/SKILL.md
skills/huggingface_skills/huggingface-papers/SKILL.md
skills/huggingface_skills/huggingface-tool-builder/SKILL.md
skills/huggingface_skills/huggingface-trackio/SKILL.md
skills/huggingface_skills/transformers-js/SKILL.md
skills/kostja94_marketing-skills/404/SKILL.md
skills/kostja94_marketing-skills/about/SKILL.md
skills/kostja94_marketing-skills/affiliate-marketing/SKILL.md
skills/kostja94_marketing-skills/affiliate-program/SKILL.md
skills/kostja94_marketing-skills/ai-traffic/SKILL.md
skills/kostja94_marketing-skills/alternatives/SKILL.md
skills/kostja94_marketing-skills/api/SKILL.md
skills/kostja94_marketing-skills/app-ads/SKILL.md
skills/kostja94_marketing-skills/article/SKILL.md
skills/kostja94_marketing-skills/backlink-analysis/SKILL.md
skills/kostja94_marketing-skills/blog/SKILL.md
skills/kostja94_marketing-skills/brand-monitoring/SKILL.md
skills/kostja94_marketing-skills/brand-protection/SKILL.md
skills/kostja94_marketing-skills/breadcrumb/SKILL.md
skills/kostja94_marketing-skills/canonical/SKILL.md
skills/kostja94_marketing-skills/card/SKILL.md
skills/kostja94_marketing-skills/careers/SKILL.md
skills/kostja94_marketing-skills/carousel/SKILL.md
skills/kostja94_marketing-skills/category-pages/SKILL.md
skills/kostja94_marketing-skills/changelog/SKILL.md
skills/kostja94_marketing-skills/community-forum/SKILL.md
skills/kostja94_marketing-skills/competitor-research/SKILL.md
skills/kostja94_marketing-skills/contact/SKILL.md
skills/kostja94_marketing-skills/content-marketing/SKILL.md
skills/kostja94_marketing-skills/content-optimization/SKILL.md
skills/kostja94_marketing-skills/content-strategy/SKILL.md
skills/kostja94_marketing-skills/contest/SKILL.md
skills/kostja94_marketing-skills/conversion/SKILL.md
skills/kostja94_marketing-skills/cookie-policy/SKILL.md
skills/kostja94_marketing-skills/copywriting/SKILL.md
skills/kostja94_marketing-skills/core-web-vitals/SKILL.md
skills/kostja94_marketing-skills/crawlability/SKILL.md
skills/kostja94_marketing-skills/creator-program/SKILL.md
skills/kostja94_marketing-skills/cta/SKILL.md
skills/kostja94_marketing-skills/ctv-ads/SKILL.md
skills/kostja94_marketing-skills/customer-stories/SKILL.md
skills/kostja94_marketing-skills/description/SKILL.md
skills/kostja94_marketing-skills/directory-listing-ads/SKILL.md
skills/kostja94_marketing-skills/disclosure/SKILL.md
skills/kostja94_marketing-skills/discount-marketing/SKILL.md
skills/kostja94_marketing-skills/display-ads/SKILL.md
skills/kostja94_marketing-skills/distribution-channels/SKILL.md
skills/kostja94_marketing-skills/docs/SKILL.md
skills/kostja94_marketing-skills/domain-architecture/SKILL.md
skills/kostja94_marketing-skills/domain-selection/SKILL.md
skills/kostja94_marketing-skills/download/SKILL.md
skills/kostja94_marketing-skills/education-program/SKILL.md
skills/kostja94_marketing-skills/eeat-signals/SKILL.md
skills/kostja94_marketing-skills/email-marketing/SKILL.md
skills/kostja94_marketing-skills/employee-generated-content/SKILL.md
skills/kostja94_marketing-skills/entity-seo/SKILL.md
skills/kostja94_marketing-skills/faq/SKILL.md
skills/kostja94_marketing-skills/favicon/SKILL.md
skills/kostja94_marketing-skills/featured-snippet/SKILL.md
skills/kostja94_marketing-skills/features/SKILL.md
skills/kostja94_marketing-skills/feedback/SKILL.md
skills/kostja94_marketing-skills/footer/SKILL.md
skills/kostja94_marketing-skills/glossary/SKILL.md
skills/kostja94_marketing-skills/google-ads/SKILL.md
skills/kostja94_marketing-skills/grid/SKILL.md
skills/kostja94_marketing-skills/grokipedia/SKILL.md
skills/kostja94_marketing-skills/growth-funnel/SKILL.md
skills/kostja94_marketing-skills/gtm/SKILL.md
skills/kostja94_marketing-skills/heading/SKILL.md
skills/kostja94_marketing-skills/hero/SKILL.md
skills/kostja94_marketing-skills/home/SKILL.md
skills/kostja94_marketing-skills/image-optimization/SKILL.md
skills/kostja94_marketing-skills/indexing/SKILL.md
skills/kostja94_marketing-skills/indexnow/SKILL.md
skills/kostja94_marketing-skills/indie-hacker/SKILL.md
skills/kostja94_marketing-skills/influencer-marketing/SKILL.md
skills/kostja94_marketing-skills/integrated-marketing/SKILL.md
skills/kostja94_marketing-skills/integrations/SKILL.md
skills/kostja94_marketing-skills/internal-links/SKILL.md
skills/kostja94_marketing-skills/keyword-research/SKILL.md
skills/kostja94_marketing-skills/landing-page/SKILL.md
skills/kostja94_marketing-skills/legal/SKILL.md
skills/kostja94_marketing-skills/link-building/SKILL.md
skills/kostja94_marketing-skills/linkedin-ads/SKILL.md
skills/kostja94_marketing-skills/linkedin/SKILL.md
skills/kostja94_marketing-skills/list/SKILL.md
skills/kostja94_marketing-skills/local/SKILL.md
skills/kostja94_marketing-skills/localization/SKILL.md
skills/kostja94_marketing-skills/logo/SKILL.md
skills/kostja94_marketing-skills/masonry/SKILL.md
skills/kostja94_marketing-skills/media-kit/SKILL.md
skills/kostja94_marketing-skills/medium/SKILL.md
skills/kostja94_marketing-skills/meta-ads/SKILL.md
skills/kostja94_marketing-skills/metadata/SKILL.md
skills/kostja94_marketing-skills/migration/SKILL.md
skills/kostja94_marketing-skills/mobile-friendly/SKILL.md
skills/kostja94_marketing-skills/multi-domain-brand-seo/SKILL.md
skills/kostja94_marketing-skills/native-ads/SKILL.md
skills/kostja94_marketing-skills/navigation-menu/SKILL.md
skills/kostja94_marketing-skills/newsletter-signup/SKILL.md
skills/kostja94_marketing-skills/open-graph/SKILL.md
skills/kostja94_marketing-skills/open-source/SKILL.md
skills/kostja94_marketing-skills/pinterest/SKILL.md
skills/kostja94_marketing-skills/pmf/SKILL.md
skills/kostja94_marketing-skills/podcast/SKILL.md
skills/kostja94_marketing-skills/popup/SKILL.md
skills/kostja94_marketing-skills/press-coverage/SKILL.md
skills/kostja94_marketing-skills/pricing-strategy/SKILL.md
skills/kostja94_marketing-skills/pricing/SKILL.md
skills/kostja94_marketing-skills/privacy/SKILL.md
skills/kostja94_marketing-skills/product-hunt-launch/SKILL.md
skills/kostja94_marketing-skills/product-launch/SKILL.md
skills/kostja94_marketing-skills/products/SKILL.md
skills/kostja94_marketing-skills/public-relations/SKILL.md
skills/kostja94_marketing-skills/rebranding/SKILL.md
skills/kostja94_marketing-skills/reddit-ads/SKILL.md
skills/kostja94_marketing-skills/reddit/SKILL.md
skills/kostja94_marketing-skills/referral-program/SKILL.md
skills/kostja94_marketing-skills/refund/SKILL.md
skills/kostja94_marketing-skills/rendering-strategies/SKILL.md
skills/kostja94_marketing-skills/research-sources/SKILL.md
skills/kostja94_marketing-skills/resources/SKILL.md
skills/kostja94_marketing-skills/retention/SKILL.md
skills/kostja94_marketing-skills/robots/SKILL.md
skills/kostja94_marketing-skills/seo-audit/SKILL.md
skills/kostja94_marketing-skills/seo-monitoring/SKILL.md
skills/kostja94_marketing-skills/seo/SKILL.md
skills/kostja94_marketing-skills/serp-features/SKILL.md
skills/kostja94_marketing-skills/services/SKILL.md
skills/kostja94_marketing-skills/shipping/SKILL.md
skills/kostja94_marketing-skills/showcase/SKILL.md
skills/kostja94_marketing-skills/sidebar/SKILL.md
skills/kostja94_marketing-skills/signup-login/SKILL.md
skills/kostja94_marketing-skills/sitemap/SKILL.md
skills/kostja94_marketing-skills/social-share/SKILL.md
skills/kostja94_marketing-skills/solutions/SKILL.md
skills/kostja94_marketing-skills/startups/SKILL.md
skills/kostja94_marketing-skills/status/SKILL.md
skills/kostja94_marketing-skills/tab-accordion/SKILL.md
skills/kostja94_marketing-skills/template-page/SKILL.md
skills/kostja94_marketing-skills/terms/SKILL.md
skills/kostja94_marketing-skills/testimonials/SKILL.md
skills/kostja94_marketing-skills/tiktok-ads/SKILL.md
skills/kostja94_marketing-skills/tiktok/SKILL.md
skills/kostja94_marketing-skills/title/SKILL.md
skills/kostja94_marketing-skills/toc/SKILL.md
skills/kostja94_marketing-skills/tools/SKILL.md
skills/kostja94_marketing-skills/top-banner/SKILL.md
skills/kostja94_marketing-skills/tracking/SKILL.md
skills/kostja94_marketing-skills/traffic/SKILL.md
skills/kostja94_marketing-skills/translation/SKILL.md
skills/kostja94_marketing-skills/trust-badges/SKILL.md
skills/kostja94_marketing-skills/twitter-cards/SKILL.md
skills/kostja94_marketing-skills/url-slug/SKILL.md
skills/kostja94_marketing-skills/url-structure/SKILL.md
skills/kostja94_marketing-skills/use-cases/SKILL.md
skills/kostja94_marketing-skills/video-optimization/SKILL.md
skills/kostja94_marketing-skills/video/SKILL.md
skills/kostja94_marketing-skills/visual-content/SKILL.md
skills/kostja94_marketing-skills/website-structure/SKILL.md
skills/kostja94_marketing-skills/x/SKILL.md
skills/kostja94_marketing-skills/youtube-ads/SKILL.md
skills/kostja94_marketing-skills/youtube/SKILL.md
skills/search_orchestration/SKILL.md
skills/taste-skill/skills/brandkit/SKILL.md
skills/taste-skill/skills/brutalist-skill/SKILL.md
skills/taste-skill/skills/gpt-tasteskill/SKILL.md
skills/taste-skill/skills/minimalist-skill/SKILL.md
skills/taste-skill/skills/output-skill/SKILL.md
skills/taste-skill/skills/redesign-skill/SKILL.md
skills/taste-skill/skills/soft-skill/SKILL.md
skills/taste-skill/skills/stitch-skill/SKILL.md
skills/taste-skill/skills/taste-skill-v1/SKILL.md
skills/taste-skill/skills/taste-skill/SKILL.md
skills/veniceai_skills/venice-api-keys/SKILL.md
skills/veniceai_skills/venice-api-overview/SKILL.md
skills/veniceai_skills/venice-audio-music/SKILL.md
skills/veniceai_skills/venice-audio-speech/SKILL.md
skills/veniceai_skills/venice-audio-transcription/SKILL.md
skills/veniceai_skills/venice-augment/SKILL.md
skills/veniceai_skills/venice-auth/SKILL.md
skills/veniceai_skills/venice-billing/SKILL.md
skills/veniceai_skills/venice-characters/SKILL.md
skills/veniceai_skills/venice-chat/SKILL.md
skills/veniceai_skills/venice-crypto-rpc/SKILL.md
skills/veniceai_skills/venice-embeddings/SKILL.md
skills/veniceai_skills/venice-errors/SKILL.md
skills/veniceai_skills/venice-image-edit/SKILL.md
skills/veniceai_skills/venice-image-generate/SKILL.md
skills/veniceai_skills/venice-models/SKILL.md
skills/veniceai_skills/venice-responses/SKILL.md
skills/veniceai_skills/venice-video/SKILL.md
skills/veniceai_skills/venice-x402/SKILL.md
skills/anthropics_skills/claude-api/SKILL.md
skills/anthropics_skills/docx/SKILL.md
skills/anthropics_skills/pptx/SKILL.md
skills/anthropics_skills/xlsx/SKILL.md
skills/browser-use_browser-use/cloud/SKILL.md
skills/browser-use_browser-use/open-source/SKILL.md
skills/cloudflare_skills/cloudflare-email-service/SKILL.md
skills/cursor_plugins/cursor-sdk/skills/cursor-sdk/SKILL.md
skills/cursor_plugins/pstack/skills/unslop/SKILL.md
skills/expo_skills/expo-observe/SKILL.md
skills/huggingface_skills/hf-cli/SKILL.md
skills/huggingface_skills/huggingface-best/SKILL.md
skills/huggingface_skills/huggingface-llm-trainer/SKILL.md
skills/huggingface_skills/huggingface-vision-trainer/SKILL.md
skills/huggingface_skills/huggingface-zerogpu/SKILL.md
skills/huggingface_skills/train-sentence-transformers/SKILL.md
skills/kostja94_marketing-skills/brand-visual/SKILL.md
skills/kostja94_marketing-skills/branding/SKILL.md
skills/kostja94_marketing-skills/cold-start/SKILL.md
skills/kostja94_marketing-skills/comparison-table/SKILL.md
skills/kostja94_marketing-skills/directory-submission/SKILL.md
skills/kostja94_marketing-skills/geo/SKILL.md
skills/kostja94_marketing-skills/github/SKILL.md
skills/kostja94_marketing-skills/google-search-console/SKILL.md
skills/kostja94_marketing-skills/howto-section/SKILL.md
skills/kostja94_marketing-skills/paid-ads/SKILL.md
skills/kostja94_marketing-skills/parasite-seo/SKILL.md
skills/kostja94_marketing-skills/programmatic-seo/SKILL.md
skills/kostja94_marketing-skills/schema/SKILL.md
skills/taste-skill/skills/image-to-code-skill/SKILL.md
skills/taste-skill/skills/imagegen-frontend-mobile/SKILL.md
skills/taste-skill/skills/imagegen-frontend-web/SKILL.md
skills/vercel-labs_skills/find-skills/SKILL.md

Metadata

Files
0
Version
c9d8953
Hash
db4d2cd6
Indexed
2026-07-05 19:54

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-09 01:33
浙ICP备14020137号-1 $bản đồ khách truy cập$