Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计提醒

slide-decks幻灯片

Agent Skill

slide-decks 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

475

周安装

20

GitHub Stars

3

下载量

166
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:slide-decks(幻灯片)
来源仓库:https://github.com/compilet-dev/agent-skill-layerproof
仓库路径:skills/slide-decks
安装命令:
npx skills add https://github.com/compilet-dev/agent-skill-layerproof --skill slide-decks
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/compilet-dev/agent-skill-layerproof --skill slide-decks

简介

slide-decks 用于查找、检索和筛选相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词或任务场景快速定位候选结果。
  • 通过 npx skills add 命令从指定仓库安装并使用。
  • 安装前需确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。
  • 建议结合原始 README 核验具体用法和功能边界。

SKILL.md

Skill: Slide Deck Generation

Description

Manage AI-generated slide decks and outlines. This skill documents the public API at /api/v2/projects/{projectId}/slide-deck/{slideDeckId} (PublicApiSlideDeckController). All endpoints require projectId and slideDeckId in the path. Authenticate with X-API-KEY header. Poll async operations via GET /api/v2/jobs/{activityId}.


TypeScript types (request / response)

Mirrors PublicApiSlideDeckController data classes.

// --- Outline section (used in UpdateOutlineRequest and responses) ---
type PublicApiSlideIconAsset = { query: string; slot?: string | null };
type PublicApiSlideImageAsset = { prompt: string; slot?: string | null };
type PublicApiOutlineSection = {
  id: string;
  section_title: string;   // 1–500 chars
  content?: string | null;  // max 5000
  key_points?: string[] | null;
  visual_suggestion?: string | null;  // max 500
  speaker_notes?: string | null;       // max 2000
  url_references?: string | null;
  layout?: string | null;
  icon_assets?: PublicApiSlideIconAsset[];
  image_assets?: PublicApiSlideImageAsset[];
  reference_image_paths?: string[];
  slide_intent?: Record<string, unknown> | null;
};

// --- Generate Outline (POST) — async ---
type GenerateOutlineRequest = {
  prompt: string;               // 3–2000 chars, required
  slide_count?: number;         // default 5, min 1
  language?: string;            // 2–10 chars, e.g. "en"
  file_s3_keys?: string[];      // from POST /api/v2/files/prepare
  web_search_enabled?: boolean;
  text_detail_level?: string | null;
  tone?: string | null;
};
type GenerateOutlineResponse = {
  activity_id: string;
  status: string;
  message: string;
  estimated_completion_seconds?: number;
};

// --- Update Outline (PUT) ---
type UpdateOutlineRequest = {
  title: string;                // 1–500 chars
  sections: PublicApiOutlineSection[];  // at least one required
};
type PublicApiOutline = {
  id: string;
  title: string;
  sections: PublicApiOutlineSection[];
  total_sections: number;
  suggested_slide_count?: number | null;
  updated_at?: string;
};
type UpdateOutlineResponse = { outline: PublicApiOutline };

// --- Get Deck (GET) ---
type PublicApiSlideDeck = {
  id: string;
  project_id: string;
  title: string;
  description?: string | null;
  deck_type?: string | null;
  slide_numbers?: number | null;
  aspect_ratio: string;
  theme?: string | null;
  outline_generation_live_object_id?: string | null;
  created_at: string;
  updated_at: string;
};
type PublicApiSlide = {
  id: string;
  index: number;
  section_id: string;
  section_title: string;
  content?: string | null;
  key_points?: string[] | null;
  visual_suggestion?: string | null;
  speaker_notes?: string | null;
  transcript?: string | null;
  image_url?: string | null;
  image_expires_at?: string | null;
  generation_status: string;
  error_message?: string | null;
  created_at: string;
  updated_at: string;
};
type PublicApiDeckMetadata = {
  total_slides: number;
  completed_slides: number;
  pending_slides: number;
  overall_progress: number;
};
type GetDeckResponse = {
  slide_deck: PublicApiSlideDeck;
  outline: PublicApiOutline;
  slides: PublicApiSlide[];
  metadata: PublicApiDeckMetadata;
};

// --- Batch Generate Slides (POST) — async ---
type BatchGenerateSlidesRequest = {
  generation_type?: string;          // default "BOTH"
  speaking_style?: string | null;
  target_duration_minutes?: number | null;  // min 1
  transcript_tone?: string | null;
  aspect_ratio?: string | null;
  output_language?: string | null;   // 2–10 chars
  text_detail_level?: string | null;
  tone?: string | null;
};
type BatchGenerateSlidesResponse = {
  activity_id: string;
  total_slides: number;
  status: string;
  message: string;
  estimated_completion_seconds: number;
};

// --- Generate Slide Content / Transcript / Image (POST) — async ---
type GenerateSlideContentRequest = {
  slide_section_id: string;
  speaking_style?: string | null;
  target_duration_minutes?: number | null;  // min 1
  transcript_tone?: string | null;
  generation_type?: string | null;   // default "TRANSCRIPT_AND_IMAGE"
};
type GenerateSlideContentResponse = {
  activity_id: string;
  slide_section_id: string;
  transcript_gen_live_object_id?: string | null;
  image_gen_live_object_id?: string | null;
  status: string;
  message: string;
};

type GenerateSlideTranscriptRequest = {
  slide_section_id: string;
  speaking_style?: string | null;
  target_duration_minutes?: number | null;  // min 1
  transcript_tone?: string | null;
};
type GenerateSlideTranscriptResponse = {
  activity_id: string;
  slide_section_id: string;
  transcript_gen_live_object_id: string;
  status: string;
  message: string;
  estimated_completion_seconds?: number;
};

type GenerateSlideImageRequest = {
  slide_section_id: string;
  aspect_ratio?: string;  // "16:9" | "4:3" | "1:1", default "16:9"
};
type GenerateSlideImageResponse = {
  activity_id: string;
  slide_section_id: string;
  image_gen_live_object_id: string;
  status: string;
  message: string;
  estimated_completion_seconds?: number;
};

// --- Cancel Generation (POST) ---
type CancelGenerationRequest = { live_object_ids?: string[] | null };
type CancelGenerationResponse = {
  cancelled_live_objects: string[];
  failed_to_cancel_live_objects: string[];
  total_activities_cancelled: number;
  message: string;
};

// --- Generate Theme (POST) — async ---
type GenerateThemeRequest = {
  prompt: string;                      // 10–2000 chars
  reference_image_paths?: string[] | null;
};
type GenerateThemeResponse = {
  activity_id: string;
  status: string;
  message: string;
  estimated_completion_seconds: number;
};

// --- Update Transcript (PUT) ---
type UpdateTranscriptRequest = { transcript: string };
type UpdateTranscriptResponse = {
  slide_section_id: string;
  version_id: string;
  version_number: number;
  transcript_gen_live_object_id: string;
  transcript: string;
  updated_at: string;
};

// --- Duplicate Section (POST) ---
type DuplicateSectionRequest = {
  copy_content?: boolean;
  insert_after?: boolean;
};
type DuplicateSectionResponse = {
  new_section_id: string;
  new_section: PublicApiOutlineSection;
  transcript_gen_live_object_id?: string | null;
  image_gen_live_object_id?: string | null;
  message: string;
};

Generate Outline (async)

Request body: GenerateOutlineRequest. Response (202): GenerateOutlineResponse.

Starts outline generation from a prompt. Use file_s3_keys from files uploaded via /api/v2/files/prepare and confirm. Poll GET /api/v2/jobs/{activityId} for status.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/outline/generate" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"prompt":"Create a product launch deck","slide_count":6}'

With reference files and language:

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/outline/generate" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"prompt":"Q4 strategy","slide_count":5,"language":"en","file_s3_keys":["public-api/.../file.pdf"],"web_search_enabled":true}'

Update Outline

Request body: UpdateOutlineRequest. Response: UpdateOutlineResponse.

Updates outline title and sections (add, remove, reorder). At least one section required.

curl -X PUT "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/outline" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"title":"My Deck","sections":[{"id":"section-uuid","section_title":"Intro","content":"...","speaker_notes":"..."}]}'

Get Full Slide Deck

Query: include_images (default true), image_expiry_seconds (default 3600). Response: GetDeckResponse.

Returns deck, outline, slides with presigned image URLs, and metadata.

curl "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/?include_images=true&image_expiry_seconds=3600" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY"

Batch Generate Slides (async)

Request body: BatchGenerateSlidesRequest. Response (202): BatchGenerateSlidesResponse.

Generate transcript and/or images for all outline sections. Requires an outline first. Poll jobs with activity_id.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/batch-generate" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"generation_type":"BOTH"}'

Generate Slide Content (async)

Request body: GenerateSlideContentRequest. Response (202): GenerateSlideContentResponse.

Generate transcript and image for one section. Poll GET /api/v2/jobs/{activityId}.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/generate-content" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"slide_section_id":"<section_uuid>"}'

Generate Slide Transcript (async)

Request body: GenerateSlideTranscriptRequest. Response (202): GenerateSlideTranscriptResponse.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/generate-transcript" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"slide_section_id":"<section_uuid>"}'

Generate Slide Image (async)

Request body: GenerateSlideImageRequest. Response (202): GenerateSlideImageResponse.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/generate-image" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"slide_section_id":"<section_uuid>","aspect_ratio":"16:9"}'

Cancel Generation

Request body: CancelGenerationRequest. Response: CancelGenerationResponse.

Provide live_object_ids from active generation responses to cancel.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/cancel" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"live_object_ids":["<live_object_uuid>"]}'

Generate Deck Theme (async)

Request body: GenerateThemeRequest. Response (202): GenerateThemeResponse.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/theme/generate" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"prompt":"Minimal corporate blue"}'

Update Slide Transcript

Request body: UpdateTranscriptRequest. Response: UpdateTranscriptResponse.

Path includes slideSectionId: PUT.../slides/{slideSectionId}/transcript.

curl -X PUT "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/<slide_section_id>/transcript" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"transcript":"Updated speaker notes."}'

Duplicate Slide Section

Request body: DuplicateSectionRequest. Response: DuplicateSectionResponse.

Path includes slideSectionId: POST.../slides/{slideSectionId}/duplicate.

curl -X POST "$LAYERPROOF_BASE_URL/api/v2/projects/<project_id>/slide-deck/<slide_deck_id>/slides/<slide_section_id>/duplicate" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $LAYERPROOF_API_KEY" \
  -d '{"copy_content":true,"insert_after":true}'

Agent behavior

When the user asks to work with slide decks (outline, deck, slides, theme, transcript), do the following.

1. Choose the right endpoint

Base path: /api/v2/projects/{projectId}/slide-deck/{slideDeckId}. All require projectId and slideDeckId.

User intentEndpointMethod
Generate outline from prompt.../outline/generatePOST
Update outline structure.../outlinePUT
Get full deck (outline + slides + URLs).../ (with optional query)GET
Batch generate all slides.../slides/batch-generatePOST
Generate one slide content.../slides/generate-contentPOST
Generate one slide transcript.../slides/generate-transcriptPOST
Generate one slide image.../slides/generate-imagePOST
Cancel generations.../cancelPOST
Generate deck theme.../theme/generatePOST
Update slide transcript.../slides/{slideSectionId}/transcriptPUT
Duplicate section.../slides/{slideSectionId}/duplicatePOST
Improve section (AI).../slides/improvePOST
Manual slide generation.../slides/generate-manualPOST
Patch visual style description.../theme/visual-style-descriptionPATCH
List / restore transcript versions.../slides/{id}/transcript/versions (GET), .../versions/{version_id}/restore (POST)GET / POST
Mark transcript / improvement / live object read.../mark-transcript-read, .../mark-improvement-read, .../live-objects/{id}/mark-readPATCH
Text-to-speech.../slides/{id}/generate-tts (POST), .../slides/{audio_id}/audio/download-url (GET)POST / GET
Update deck settings (aspect ratio, etc.).../ (slide-deck root)PATCH
Tone settings.../tone-settingsGET / PUT
Batch Konva layout.../slides/batch-generate-layoutPOST
PPTX import.../import/prepare-upload, .../importPOST
Citations.../citations, .../citations/slide/{index}, .../citations/{citation_id}GET

2. Build and run the request

Step 1 — Check environment variables first. Before running any curl command, verify both LAYERPROOF_BASE_URL and LAYERPROOF_API_KEY are set on the user's machine:

if [[ -z "${LAYERPROOF_BASE_URL}" ]]; then
  echo "ERROR: LAYERPROOF_BASE_URL is not set."
  return 1
fi
if [[ -z "${LAYERPROOF_API_KEY}" ]]; then
  echo "ERROR: LAYERPROOF_API_KEY is not set."
  return 1
fi

If running from a project directory with a .env.local file, load it first:

if [[ -f .env.local ]]; then
  set -a
  source .env.local
  set +a
fi

Step 2 — Auth: Every request must include X-API-KEY: $LAYERPROOF_API_KEY. Read LAYERPROOF_BASE_URL and LAYERPROOF_API_KEY from the environment; if missing, tell the user to set them. Step 3 — Path: Resolve projectId and slideDeckId (and slideSectionId where needed) from context or user input. If missing, ask. Step 4 — GET: Build curl with path and query params (include_images, image_expiry_seconds for get deck). Run and show result. Step 5 — POST/PUT: Build JSON body from the types above. Use -X POST or -X PUT, -H "Content-Type: application/json", and -d '...'. Run and show result.

3. After async endpoints

  • Responses include activity_id. Tell the user the job was started and suggest polling GET $LAYERPROOF_BASE_URL/api/v2/jobs/{activityId} until status is DONE or CANCELED.
  • Typical flow: generate outline → poll until DONE → get deck or update outline → batch generate slides or generate single slide content/transcript/image → poll jobs.

4. Response handling

  • Always show the raw JSON response in a JSON code block; do not convert to a table.
  • If the response contains image URLs (e.g. in get deck slides[].image_url), show images and the JSON.
  • On error (4xx/5xx), show the response body and status code; suggest fixing API key, projectId/slideDeckId/sectionId, or request body.

5. Example workflows

Workflow A — User: "Generate an outline for a product launch deck in project X."

  1. Resolve projectId and slideDeckId (e.g. from GET projects, then project.slide_deck_id).
  2. Choose POST.../outline/generate.
  3. Build body: {"prompt":"Product launch deck","slide_count":5}.
  4. Run curl; show JSON. Tell user to poll GET /api/v2/jobs/{activityId} and then call get deck or update outline as needed.

Workflow B — User: "Full deck: outline from a prompt and reference PDF, then tweak the outline, apply a theme, batch generate slides, and fix one slide’s image."

  1. Resolve projectId and slideDeckId. Get file_s3_keys from public-files (prepare → upload → confirm) or project-files if the API accepts them for outline.
  2. POST .../outline/generate with {"prompt":"Product launch with pricing","slide_count":6,"file_s3_keys":["<s3_key>"],"language":"en"}; capture activity_id.
  3. Poll GET /api/v2/jobs/{activity_id} until DONE. On failure, report and stop.
  4. GET deck; from outline.sections identify a section to change. PUT .../outline with title and updated sections (e.g. edit section_title, key_points, visual_suggestion for one section).
  5. If user wants a theme: use themes skill — POST /api/v2/themes/apply with slide_deck_id and theme_id (set regenerate_slides if images should be regenerated); poll job when activity_id is returned.
  6. POST .../batch-generate with optional generation_type, aspect_ratio, speaking_style; capture activity_id.
  7. Poll GET /api/v2/jobs/{activity_id} until DONE.
  8. GET deck; check metadata.completed_slides and slides[].generation_status. If one slide’s image is wrong, POST .../slides/{sectionId}/generate-image (or generate-content) with section id; poll that job until DONE; GET deck again to show result.

Workflow C — User: "Duplicate a section in the outline and regenerate slides for the new section only."

  1. GET deck; from outline.sections pick a section_id (UUID string) to duplicate.
  2. POST .../slides/{slide_section_id}/duplicate with {"copy_content":true,"insert_after":true}; read new_section_id from the response.
  3. PUT .../outline with updated title and sections array (merge/reorder the duplicated section as needed).
  4. POST .../slides/generate-transcript | generate-image | generate-content with the new section id; poll GET /api/v2/jobs/{activity_id}; GET deck to confirm.

Response format (required)

  • (if response contains url to show image) please show image and show json response instead of table
  • Always show the raw JSON response (verbatim) in a JSON code block.
  • If the response contains a URL for an image, render/show the image and also show the JSON response (do not convert to a table).

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.39%
按下载量换算60

Claude

29.67%
按下载量换算49

Cursor

19.47%
按下载量换算32

Gemini CLI

9.5%
按下载量换算16

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills