Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计异常

skill技能

Agent Skill

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

总安装

559

周安装

24

GitHub Stars

13,101

下载量

196
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/andrewyng/context-hub --skill skill

简介

用于查找、检索和筛选相关信息,支持快速定位候选结果。

  • 适合在关键词、任务场景或来源线索下使用,提升信息获取效率。
  • 可结合来源仓库、安装命令和原始 README 核验具体用法。
  • 安装前建议确认权限范围、维护状态及是否会触发联网或文件操作。
  • skill 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

LandingAI ADE — Interactive Document Extraction

Overview

Guided wizard for LandingAI's Agentic Document Extraction API. Collects all config from the user via AskUserQuestion, then executes curl commands via Bash. Never write Python — always use curl.

When to Use

  • User wants to parse a document (PDF, image, spreadsheet) into markdown
  • User wants to extract structured fields from a document
  • User wants to classify/split a multi-document PDF
  • User mentions LandingAI, ADE, vision agent, document AI

CRITICAL RULES

  1. Extract and Split accept MARKDOWN, not raw files. Always parse first if the user has a PDF/image.
  2. Auth is Bearer, not Basic. Header: Authorization: Bearer $VISION_AGENT_API_KEY
  3. File field names: document for parse, markdown for extract/split. Never pdf, file, etc.
  4. Always use -F (multipart form), never -d (JSON body).
  5. Use jq -r when extracting markdown to avoid escaped/quoted strings.
  6. NEVER read full output files into your context. See Token Warnings below.

TOKEN WARNINGS

Parse output is ~55,000 tokens per page (grounding bounding boxes = ~36,000 of that). 10 pages = ~550,000 tokens.

Output handling rules:

  • Always pipe curl output to a file: | jq. > output.json
  • Show a small jq summary after each operation (see Step 4)
  • If the user wants to see the full output: use cat via Bash so it displays in their terminal
  • If the user wants to analyze the output: use Bash commands (jq, grep, wc, head, tail, etc.) to query the file and return only the targeted answer. Do NOT read the whole file into context. Examples: # Count chunks by type jq '[.chunks[] |.type] | group_by(.) | map({type:.[0], count: length})' output.json # Find chunks containing a keyword jq '.chunks[] | select(.markdown | test("invoice"; "i")) | {id, type, markdown}' output.json # Get page count jq '.metadata.page_count' output.json # List all unique grounding types jq '[.grounding | to_entries[].value.type] | unique' output.json
  • Never use the Read tool on parse/extract/split output files
  • For markdown preview: head -20 on the saved.md file

Summary queries (use after every operation):

# Parse (~430 tokens instead of ~55,000):
jq '{md_preview: (.markdown | .[0:500]), chunks: (.chunks | length), types: ([.chunks[].type] | unique), metadata: .metadata}' parse_output.json
# Extract (~500 tokens):
jq '.extraction' extract_output.json
# Split (~200 tokens):
jq '[.splits[] | {classification, pages, identifier}]' split_output.json

Workflow

digraph ade_wizard {
    rankdir=TB;
    node [shape=box];

    collect_config [label="Step 1: Collect Config\n(API key, region, output dir)"];
    choose_op [label="Step 2: Choose Operation" shape=diamond];
    parse [label="Parse"];
    extract [label="Extract"];
    split [label="Split"];
    parse_job [label="Parse Job (async)"];

    extract_has_md [label="Has markdown already?" shape=diamond];
    split_has_md [label="Has markdown already?" shape=diamond];

    parse_first_e [label="Parse first → get markdown"];
    parse_first_s [label="Parse first → get markdown"];
    show_preview [label="Show markdown preview to user"];
    show_preview_s [label="Show markdown preview to user"];

    schema_choice [label="Schema: build new, load file,\nor generate from doc?" shape=diamond];
    build_schema [label="Interactive schema builder\n(iterate until done)"];
    load_schema [label="Load schema from file"];
    gen_schema [label="Generate schema from\ndocument content"];
    save_schema [label="Save schema to file?"];

    split_choice [label="Split config: build new\nor load file?" shape=diamond];
    build_split [label="Interactive split builder\n(iterate until done)"];
    load_split [label="Load split config from file"];
    save_split [label="Save split config to file?"];

    run_extract [label="Run extract curl"];
    run_split [label="Run split curl"];
    run_parse [label="Run parse curl"];
    run_job [label="Run parse job curl\n(poll if requested)"];

    save_output [label="Save output to file"];

    collect_config -> choose_op;
    choose_op -> parse [label="Parse"];
    choose_op -> extract [label="Extract"];
    choose_op -> split [label="Split"];
    choose_op -> parse_job [label="Parse Job"];

    parse -> run_parse -> save_output;
    parse_job -> run_job -> save_output;

    extract -> extract_has_md;
    extract_has_md -> parse_first_e [label="no"];
    extract_has_md -> schema_choice [label="yes"];
    parse_first_e -> show_preview -> schema_choice;
    schema_choice -> build_schema [label="build"];
    schema_choice -> load_schema [label="load"];
    schema_choice -> gen_schema [label="generate"];
    build_schema -> save_schema -> run_extract -> save_output;
    load_schema -> run_extract;
    gen_schema -> save_schema;

    split -> split_has_md;
    split_has_md -> parse_first_s [label="no"];
    split_has_md -> split_choice [label="yes"];
    parse_first_s -> show_preview_s -> split_choice;
    split_choice -> build_split [label="build"];
    split_choice -> load_split [label="load"];
    build_split -> save_split -> run_split -> save_output;
    load_split -> run_split;
}

Step 1: Collect Configuration

Use AskUserQuestion to gather ALL of these upfront:

Question 1 — API Key:

"What is your VISION_AGENT_API_KEY? (Type 'env' if it's already set as an environment variable)"
  • If env: use $VISION_AGENT_API_KEY in all commands. Validate with: if [-z "$VISION_AGENT_API_KEY"]; then echo "ERROR: VISION_AGENT_API_KEY not set"; fi
  • Otherwise: store the provided value and use it directly in commands.

Question 2 — Region:

Options: US (default), EU
RegionBase URL
UShttps://api.va.landing.ai
EUhttps://api.va.eu-west-1.landing.ai

Question 3 — Operation:

Options: Parse, Extract, Split, Parse Job (async)

Question 4 — Output Directory:

"Where should output files be saved? (e.g.,./output)"

Then mkdir -p the output directory.

Step 2: Collect Operation-Specific Inputs

For Parse

Ask:

  1. "Local file path or URL?" → determines document=@/path vs document_url=https://...
  2. "Split by page?" → yes adds -F "split=page"

For Extract

Ask:

  1. "Local file path or URL to your document? (PDF/image for raw file, or.md if already parsed)"
  2. Detect file type:

- If .md file → use directly as markdown input, skip to schema step - If PDF/image → parse first, save markdown, show preview to user

  1. Schema source (see Schema Builder section below)

For Split

Ask:

  1. "Local file path or URL to your document?"
  2. Same parse-first logic as Extract
  3. Split config source (see Split Builder section below)

For Parse Job

Ask:

  1. "Local file path or URL?"
  2. "Poll until complete?" → yes/no

Schema Builder (for Extract)

After the user has markdown (either provided or from parsing), offer three choices via AskUserQuestion:

"How do you want to define your extraction schema?" - Build interactively — I'll walk you through adding fields one by one - Generate from document — I'll analyze the parsed markdown and suggest a schema - Load from file — Load a previously saved schema JSON file

Option A: Build Interactively

Loop until the user says done:

  1. Ask: "Field name? (e.g., invoice_number, vendor_name, total_amount)"
  2. Ask: "Field type?"

- Options: string, number, boolean, array of strings, array of objects

  1. Ask: "Description? (helps the model understand what to look for)"
  2. If array of objects: recursively ask for sub-fields
  3. Show the current schema so far
  4. Ask: "Add another field, edit a field, remove a field, or done?"

- Add another → repeat from step 1 - Edit → ask which field, then re-ask type/description - Remove → ask which field to remove - Done → finalize schema

Assemble into JSON:

{
  "type": "object",
  "properties": {
    "invoice_number": { "type": "string", "description": "Invoice number" },
    "total_amount": { "type": "number", "description": "Total dollar amount" },
    "line_items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Item description"
          },
          "amount": { "type": "number", "description": "Line item amount" }
        }
      }
    }
  }
}

Option B: Generate from Document

  1. Read the parsed markdown content (from the parse output file)
  2. Analyze the markdown to identify extractable fields — look for:

- Key-value patterns: lines like Invoice #: 12345, Name: ___, Date: 01/15/2024 - Table headers: column names in markdown tables suggest array-of-object fields - Labeled sections: Section 2: Insurance Information suggests grouped fields - Repeated structures: multiple similar entries suggest array types - Checkboxes/booleans: [x] or Yes/No fields → boolean type - Numeric values: amounts, totals, quantities → number type - Dates: any date-like content → string with date description

  1. Build a JSON schema from the detected fields (use string as default type when uncertain)
  2. Present the suggested schema to the user showing each field name, type, and description
  3. Ask: "Does this look right? Edit any fields, or accept?"
  4. Allow iterative edits (same add/edit/remove loop as Option A)

Option C: Load from File

  1. Ask: "Path to your schema JSON file?"
  2. Read and validate the file: cat /path/to/schema.json | jq.
  3. Show it to the user for confirmation
  4. Allow edits if needed

Save Schema

After finalizing (any option), ask:

"Save this schema for reuse? (provide a file path, or 'no')"

If yes:

cat << 'SCHEMA_EOF' > /path/to/schema.json
{ ... the schema ... }
SCHEMA_EOF

Split Config Builder (for Split)

After the user has markdown, offer two choices:

"How do you want to define your split classifications?" - Build interactively — I'll walk you through adding categories - Load from file — Load a previously saved split config

Option A: Build Interactively

Loop until done:

  1. Ask: "Category name? (e.g., 'Bank Statement', 'Pay Stub', 'Invoice')"
  2. Ask: "Description? (what does this document type look like?)"
  3. Ask: "Identifier field? (optional — a field to group/partition by, e.g., 'Account Number', 'Invoice Date'). Type 'none' to skip."
  4. Show current config so far
  5. Ask: "Add another category, edit one, remove one, or done?"

Assemble into JSON array:

[
  {
    "name": "Bank Statement",
    "description": "Bank account activity summary over a period"
  },
  {
    "name": "Pay Stub",
    "description": "Employee earnings and deductions",
    "identifier": "Pay Stub Date"
  },
  {
    "name": "Invoice",
    "description": "Bill for goods or services",
    "identifier": "Invoice Number"
  }
]

Option B: Load from File

Same pattern as schema loading — read, validate, confirm, allow edits.

Save Split Config

After finalizing, ask:

"Save this split config for reuse?"

If yes, write to the specified path.

Step 3: Execute

Parse Command

curl -s -X POST "${BASE_URL}/v1/ade/parse" \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "document=@/path/to/file.pdf" \
  -F "model=dpt-2-latest" | jq . > ${OUTPUT_DIR}/parse_output.json

For URL input, replace -F "document=@..." with -F "document_url=https://...". For page splitting, add -F "split=page".

Extract Command (after parse + schema built)

curl -s -X POST "${BASE_URL}/v1/ade/extract" \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "markdown=@/path/to/parsed_markdown.md" \
  -F "model=extract-latest" \
  -F "schema=$(cat /path/to/schema.json)" | jq . > ${OUTPUT_DIR}/extract_output.json

Split Command (after parse + split config built)

curl -s -X POST "${BASE_URL}/v1/ade/split" \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "markdown=@/path/to/parsed_markdown.md" \
  -F "model=split-latest" \
  -F "split_class=$(cat /path/to/split_config.json)" | jq . > ${OUTPUT_DIR}/split_output.json

Parse Job Commands

# Create
JOB_ID=$(curl -s -X POST "${BASE_URL}/v1/ade/parse/jobs" \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "document=@/path/to/file.pdf" \
  -F "model=dpt-2-latest" | jq -r '.job_id')
echo "Job: $JOB_ID"

# Poll
while true; do
  RESP=$(curl -s "${BASE_URL}/v1/ade/parse/jobs/$JOB_ID" \
    -H "Authorization: Bearer ${API_KEY}")
  STATUS=$(echo "$RESP" | jq -r '.status')
  echo "Status: $STATUS | Progress: $(echo "$RESP" | jq -r '.progress')"
  [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ] && break
  sleep 5
done
echo "$RESP" | jq . > ${OUTPUT_DIR}/job_result.json

# List jobs
curl -s "${BASE_URL}/v1/ade/parse/jobs?status=completed&page=0&pageSize=10" \
  -H "Authorization: Bearer ${API_KEY}" | jq .

Step 4: Present Results

After execution:

  1. Show the user a summary of the output (key fields, not the full JSON dump)
  2. Tell them where the file was saved
  3. For Extract: show the .extraction object formatted nicely
  4. For Split: show each .splits[].classification with page ranges
  5. Ask: "Want to run another operation on this document?"

Response Structure Reference

Parse Response

.markdown          → full document markdown
.chunks[]          → {id, markdown, type, grounding: {box, page}}
.metadata          → {credit_usage, duration_ms, filename, job_id}
.splits[]          → {class, identifier, markdown, pages[], chunks[]}

Extract Response

.extraction        → the extracted key-value pairs (matches your schema)
.extraction_metadata → key-values with chunk_reference for grounding
.metadata          → {credit_usage, duration_ms, filename, job_id}
.metadata.schema_violation_error → non-null if extraction didn't match schema

Split Response

.splits[]          → {classification, identifier, markdowns[], pages[]}
.metadata          → {credit_usage, duration_ms, filename, page_count}

Job Response

.job_id, .status   → pending|processing|completed|failed|cancelled
.progress          → 0.0 to 1.0
.data              → full parse response when completed
.output_url        → presigned URL if result > 1MB (expires 1hr)
.failure_reason    → error details if failed

Quick Reference

EndpointMethodPathModelInput
ParsePOST/v1/ade/parsedpt-2-latestdocument (file) or document_url
ExtractPOST/v1/ade/extractextract-latestmarkdown (file/string) or markdown_url + schema
SplitPOST/v1/ade/splitsplit-latestmarkdown (file/string) or markdown_url + split_class
Create JobPOST/v1/ade/parse/jobsdpt-2-latestdocument or document_url
Get JobGET/v1/ade/parse/jobs/{id}
List JobsGET/v1/ade/parse/jobs?status=&page=&pageSize=
Supported FilesTypes
DocumentsPDF, PNG, JPG, JPEG, TIFF, BMP, WEBP, HEIC
SpreadsheetsXLSX, CSV

Common Mistakes

MistakeFix
Sending PDF to /extract or /splitParse first to get markdown
Authorization: BasicMust be Authorization: Bearer
-F "pdf=@..." or -F "file=@..."Field is document (parse) or markdown (extract/split)
Missing @ before file path-F "document=@/path" needs the @
Using -d instead of -FAlways use -F for multipart form
Missing schema on extractRequired — build one using the schema builder
Not using jq -r for markdownAvoids escaped/quoted strings in output
Sync parse for huge docsUse /v1/ade/parse/jobs for 50+ pages

Error Codes

CodeMeaningAction
401Bad/missing API keyCheck VISION_AGENT_API_KEY
400Bad requestValidate inputs, check file format
422UnprocessableInvalid file type or malformed schema
429Rate limitedWait and retry
500+Server errorRetry after a few seconds

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

35.46%
按下载量换算70

Claude

28.23%
按下载量换算55

Cursor

18.34%
按下载量换算36

Gemini CLI

9.24%
按下载量换算18

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

未通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

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

来源信息

继续浏览同类 Skills