AgentSkillsCN

contentful-sdk

面向 TypeScript/JavaScript 的 Comprehensive Contentful SDK 指南。涵盖用于内容/Schema 管理的 Management SDK (CMA)、用于获取内容的 Delivery SDK (CDA),以及用于构建 Contentful 应用的 App Framework SDK。适用于任何 Contentful API 集成相关工作。

SKILL.md
--- frontmatter
name: contentful-sdk
description: Comprehensive Contentful SDK guide for TypeScript/JavaScript. Covers Management SDK (CMA) for content/schema management, Delivery SDK (CDA) for fetching content, and App Framework SDK for building Contentful apps. Use for any Contentful API integration work.

Contentful SDK Guide

Comprehensive guide for Contentful SDKs in TypeScript/JavaScript.

Which SDK Do You Need?

Management SDK (CMA)

For creating, updating, and managing content, content types, assets, and environments.

Start here: references/management/overview.md

Topics:

  • content-types.md - Define and update content models with field types and validations
  • entries.md - Create, update, query, and publish entries with version locking
  • assets.md - Upload, process, and publish media files
  • environments.md - Create, clone, and manage environments and aliases
  • error-handling.md - Handle rate limits, version conflicts, and validation errors
  • bulk-operations.md - Pagination, batch processing, and concurrency control

Delivery SDK (CDA)

For fetching published content in production applications.

Start here: references/delivery/overview.md

Topics:

  • querying.md - Query parameters, filters, search operators, and pagination
  • includes-links.md - Link resolution, includes parameter, and handling references
  • localization.md - Locale handling, fallbacks, and multi-language content
  • rich-text.md - Rendering rich text fields with embedded entries and assets

App Framework SDK

For building apps that extend the Contentful UI.

Start here: references/app-framework/overview.md

Topics:

  • locations.md - All app locations: field, sidebar, dialog, entry editor, page, config
  • sdk-apis.md - Navigator, dialogs, notifier, access, and window APIs
  • parameters.md - Installation, instance, and invocation parameters

Quick Reference

Version Locking (Management SDK)

Always pass sys when updating to prevent conflicts:

typescript
const entry = await client.entry.get({ spaceId, environmentId, entryId })
await client.entry.update({ spaceId, environmentId, entryId }, {
  sys: entry.sys,  // Required for version locking
  fields: { ... }
})

TypeScript Entry Skeletons (Delivery SDK)

Define type-safe content structures:

typescript
type BlogPostSkeleton = {
  contentTypeId: 'blogPost'
  fields: {
    title: EntryFieldTypes.Text
    slug: EntryFieldTypes.Symbol
    body: EntryFieldTypes.RichText
  }
}
const entry = await client.getEntry<BlogPostSkeleton>('entry-id')

CMA Integration in Apps (App Framework)

Use SDK adapter to avoid exposing tokens:

typescript
import contentful from 'contentful-management'

const cma = contentful.createClient(
  { apiAdapter: sdk.cmaAdapter },
  {
    type: 'plain',
    defaults: {
      spaceId: sdk.ids.space,
      environmentId: sdk.ids.environmentAlias ?? sdk.ids.environment
    }
  }
)