Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Datahub Data Apps

ASecurity

Discover, inspect, run, monitor, cancel, and retrieve results from DataHub Data Apps while preserving billing and retry safety.

45 stars
0 votes
0 copies
1 views
Added 9/23/2026
security

Works with

terminalmcp

Security Analysis

A100/100

Scanned 9/23/2026

$npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill datahub-data-apps --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Datahub Data Apps?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Datahub Data Apps
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ahang1598-datahub-data-apps/badge)](https://www.skillsdirectory.com/skills/ahang1598-datahub-data-apps)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: datahub-data-apps
description: Discover, inspect, run, monitor, cancel, and retrieve results from DataHub Data Apps while preserving billing and retry safety.
description_zh: 发现、检查和运行 DataHub Data App,安全地跟踪、取消运行并获取结构化结果,避免重复计费。
description_en: Discover, inspect, run, monitor, cancel, and retrieve results from DataHub Data Apps while preserving billing and retry safety.
version: "1.0.0"
author: DataHub
---

# DataHub Data Apps

Use this Skill when the user wants to discover a Data App, understand its inputs or price, execute it, inspect current or historical runs, cancel a run, or retrieve structured results.

Reply in the user's language. Keep Data App IDs/slugs, run IDs, field names, enum values, prices, currencies, timestamps, and platform error messages exact.

## Available Base Tools

| Tool | Use it for |
| --- | --- |
| `search_data_apps` | Discover visible Data Apps by intent, type, or scope |
| `get_data_app_details` | Inspect input/output schemas, execution behavior, pricing, knowledge, and examples |
| `run_data_app` | Create a potentially billable run |
| `get_run_status` | Read or long-poll one run's status and cost |
| `get_run_result` | Page and project structured results |
| `cancel_run` | Request cancellation of an active run |
| `list_runs` | Find recent runs, recover a run ID, or summarize run history |

Treat the live tool schemas as authoritative. The root endpoint exposes the seven tools above; do not assume the retired `?tools=` routing behavior.

## Discovery and Selection

1. If the user did not provide an exact app ID or slug, call `search_data_apps` with a short intent-oriented query.
2. Use `type=data` for collection/extraction and `type=transform` for processing existing data when the intent makes the distinction clear. Otherwise omit the type.
3. Default to `scope=all`. Use a narrower scope only when the user asks for public, private, or shared apps.
4. Use the smallest useful page; `limit` cannot exceed 20.
5. If several apps match, compare relevance, description, availability, and pricing information. Ask the user to choose only when the choice materially changes inputs, cost, or output.
6. Never launch a card whose `accepting_runs` value is false.

## Inspect Before Running

Call `get_data_app_details` before the first run in the conversation unless all of these are already known from fresh tool output:

- exact app ID or slug;
- `accepting_runs` state;
- required input fields and their types;
- output schema;
- execution behavior;
- price/currency and any record or run limits.

Map the user's words to the declared input schema. Never guess a required value. Preserve explicit zero, false, empty arrays, and enum spelling. Explain only missing or invalid fields that block the call.

If pricing is nonzero and the user has not already authorized this exact app, input, and quantity bound, show the known price/billing basis and request confirmation before calling `run_data_app`.

## Starting Runs

`run_data_app` accepts `app`, `input`, optional `max_records`, and optional `wait_seconds`. The live tool schema is authoritative; `wait_seconds` is currently bounded to 0-60 seconds.

- Keep `max_records` within the tool schema and the user's requested bound. Do not silently increase it.
- Use `wait_seconds=0` when the caller needs the `run_id` immediately. A positive value may wait for completion within the declared bound; if the Run is still active, retain the returned `run_id` and poll separately.
- For multiple async runs, submit the bounded set first with a short or zero wait, retain every returned `run_id`, and poll separately.
- A sync App may return inline records according to its declared execution profile and the requested wait bound.
- Never launch an unbounded set. When the user does not set a smaller limit, allow at most five concurrent runs and batch the rest only after capacity is released. Respect lower tenant/platform quotas.
- Report the returned `run_id`, status, and cost fields exactly. Do not exceed the live `wait_seconds` bound.

`run_data_app` has no exposed idempotency key. Never automatically retry it after a timeout, disconnect, `5xx`, or any response where acceptance is uncertain.

### Ambiguous Run Recovery

1. Call `list_runs` for the same `app`, `triggered_by=mcp`, and a narrow creation-time window around the attempted call.
2. Compare timestamps, app identity, status, run kind, and any returned metadata.
3. If exactly one run is an unambiguous match, continue with that `run_id` and tell the user it was recovered.
4. If zero or multiple runs could match, explain the ambiguity and ask before creating another potentially billable run.

This lookup reduces duplicate risk but is not atomic idempotency. Never claim otherwise.

## Monitoring and Results

Use `get_run_status(run_id, wait_seconds=0)` for an immediate check. Use up to 60 seconds only when the user is waiting for completion. Do not create many simultaneous long polls for one run.

Recognize the live status enum. Treat `SUCCEEDED`, `PARTIALLY_SUCCEEDED`, `FAILED`, and `CANCELLED` as terminal when the schema reports them. For terminal runs, report the final status, counts, timestamps, and platform-reported cost when present.

Use `get_run_result` only when results are available:

- `offset` starts at 0;
- `limit` cannot exceed 50;
- use `fields` when the user requested a subset;
- fetch only enough pages to satisfy the request;
- summarize the page boundary and remaining availability when the result is larger;
- do not loop through an unknown or unlimited result set.

Use `list_runs` to answer history questions, recover lost IDs, and compare recent costs. Apply the narrowest known filters. Its `limit` cannot exceed 50.

## Cancellation

Cancellation is a side effect. If the user did not explicitly request cancellation, confirm the exact `run_id` first. Call `cancel_run` once. If completion races with cancellation, report the platform's returned/current terminal state and do not repeatedly cancel.

## Error Handling

- Authentication error: tell the user DataHub authorization must be completed or renewed; allow WorkBuddy to reconnect through OAuth. Never ask them to paste a bearer token into chat.
- Validation error: read fresh app details, identify the exact invalid field, and correct only with user-provided or unambiguous values.
- `accepting_runs=false`: do not call `run_data_app`; search for an alternative or report unavailability.
- Rate limit or transient error on a read: retry only a small bounded number of times with backoff when useful.
- Ambiguous write error: follow Ambiguous Run Recovery and do not retry automatically.
- Failed run: show the platform's useful error and suggest a concrete input/app change; do not expose credentials, stack traces, or unrelated internal details.

## Response Shape

For a completed workflow, return a compact summary containing:

- selected Data App name and ID/slug;
- run ID and final/current status;
- requested/returned record count and pagination position;
- cost and currency when reported;
- the requested fields or a concise preview of results;
- the next useful action only when the run is still active or more pages remain.

Attribution

ahang1598ahang1598
View sourceSee grades on GitHubMore from ahang1598 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Springboot Security

Java Spring Boot 服务中关于身份验证/授权、验证、CSRF、密钥、标头、速率限制和依赖安全的 Spring Security 最佳实践。

2456590 votes

Security Review

Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment/sensitive features. Provides comprehensive security checklist and patterns.

2456590 votes

Paperclip Evals

Choose, inspect, validate, and report Paperclip Runner or Product E2E evaluations while preserving evidence, provenance, cost, and failure classification.

953190 votes

Paperclip Task Bridge

Create, comment on, update, and list Paperclip tasks from Hermes using scoped Paperclip API credentials.

953190 votes

Summarize Status

Write a short, colloquial summary for a Paperclip summary slot: open with the 1–3 specific, concrete actions the reader needs to take right now to unblock the work, then a brief plain-language status, streaming progress as it works.

953190 votes
View all in security →