Skip to content
Back to skills

Asset Discovery

ASecurity

Read-only in-platform (lakehouse) scout via wedatacli: catalog inventory, table schema/columns, fuzzy table search, Studio SQL/files, workflows, sync tasks, compute resources (read-only enumeration), one-hop lineage, warehouse status. Inline: known-coordinate ≤2-step lookups (FQN get/cat, one search→top1, one schema list, named-catalog table list). Agent("discovery"): warehouse-wide / multi-catalog / has-data scans / inventory / multi-facet / fuzzy reuse across assets / lineage beyond one kno...

  • 28 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
toolsgobashsqlapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill asset-discovery --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Asset Discovery?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Asset Discovery
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ahang1598-asset-discovery/badge)](https://www.skillsdirectory.com/skills/ahang1598-asset-discovery)

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

Download with Pro
SKILL.md
---
name: asset-discovery
layer: L3
type: execution
stage: discovery
tags: [data-development]
user-invocable: false
description: >
  Read-only in-platform (lakehouse) scout via wedatacli: catalog inventory, table
  schema/columns, fuzzy table search, Studio SQL/files, workflows, sync tasks,
  compute resources (read-only enumeration), one-hop lineage, warehouse status.
  Inline: known-coordinate ≤2-step lookups (FQN get/cat, one search→top1, one
  schema list, named-catalog table list). Agent("discovery"): warehouse-wide /
  multi-catalog / has-data scans / inventory / multi-facet / fuzzy reuse across
  assets / lineage beyond one known hop / ≥3 probes — even if one CLI.
  Boundary: user-named connection → datasource-discovery (a CONNECTION-source
  catalog still stays here); SubmitJob or any write on compute resources →
  unity-catalog-manage; design / sync / DDL stay with the parent.
  Lineage boundary: exploration / layered
  pipeline map / mermaid diagram stay here; ETL ProcessName / recursive depth
  >2 / external-table pre-gate / governance output (§2.14 table) →
  unity-catalog-manage.
---

# asset-discovery

Read-only platform metadata via `wedatacli`. Fewest steps; paste `uri` / `cat_command` from results.

**CLI**: `inventory` / `get` / `search` / `cat` / `ll` / `ls` only — never `Describe*` / `List*` PascalCase APIs; never `get task` (use `get workflow-task` / `get integration-tasks`).

Summarize and stop; hand off design, sync, or DDL only when the user asks next.

**Inline vs `Agent("discovery")`**: known-coordinate ≤2-step point lookup → inline; warehouse-wide / has-data / inventory / multi-facet / ≥3 probes (even one large CLI) → `Agent("discovery")`.

**Boundary**: this skill owns the catalog tree (`catalog.schema.table`), including catalogs whose `source` is `CONNECTION`. Hand off to `datasource-discovery` only when the user names a 连接 / 数据源 / `databuddy://connection/…`.

## Shortest path

| User wants | Command |
|------------|---------|
| Stocktake / status / workspace inventory | `inventory` → deepen as needed. Prefer `Agent("discovery")`. Connections: `datasource-discovery`. |
| Known table / FQN | `get table` or `cat table/C.S.T` |
| Batch tables with columns | `get tables --with-columns --catalog C --schema S [--tables "t1,t2"]` |
| Table name only | `search table` → `get table` on top hit |
| Named catalog | `get schemas --catalog <C>` → `get tables` |
| Tables with data | `get tables [--catalog C] --has-data --summary` (omit `--catalog` = warehouse-wide). Prefer `Agent("discovery")`. |
| Fuzzy reuse / SQL / workflows / sync | `search table` / `search asset` / `get workflows` / `get integration-tasks` |
| Compute resources (read-only enumeration) | `get compute-resources [--keyword <kw>] [--resource-type <csv>] [--status <csv>]`. Write / SubmitJob → `unity-catalog-manage`. |
| Lineage | `explore-lineage --format pipeline\|mermaid` or `get lineage -d INPUT\|OUTPUT`. Need ETL `ProcessName` / depth >2 / external-table pre-gate / §2.14 governance table → `unity-catalog-manage`. |

No Bash loops over catalogs/schemas. No brute-force enumeration across catalogs (even via sequential tool calls). Prefer `--summary` when listings are large. Known FQN: `get table` only — `search table` 0 hits ≠ table missing.

Details: [commands.md](references/commands.md) · lineage: [lineage_exploration.md](references/lineage_exploration.md) · stocktake: [warehouse_status_report.md](references/warehouse_status_report.md)

For an incomplete FQN, use the most specific `search table` filters available; search
before asking when coordinates are inferable, and return at most three full-FQN candidates
when ambiguous. Exact command forms live in [commands.md](references/commands.md).
### Persisting discovered tables (cache-first)

Every table discovered via `get table` or `cat table` **must** be persisted as `.json` under `/Workspace/relative-tables/<catalog>.<schema>.<table_name>.json`, so the recalled schemas are available to downstream consumers (e.g. `sql-codegen-agent`, `studio-development`). Check the cache first so the same table isn't re-fetched/overwritten if it's already there (e.g. from an earlier step in this session):

```bash
mkdir -p /Workspace/relative-tables
TARGET="/Workspace/relative-tables/<C>.<S>.<T>.json"
[ -f "$TARGET" ] || wedatacli get table --catalog <C> --schema <S> --table <T> --output json > "$TARGET"
```

Downstream consumers (e.g. `sql-codegen-agent`) must also cache-check `$TARGET` before recalling the same table again (see `sql-codegen/SKILL.md` §1.0).

## Table locating (incomplete FQN)

Tables are identified by `catalog.schema.table`. When user provides partial info, choose freely among:

**Available means** (no fixed priority — pick what fits the context):

| Known info | Command | Notes |
|------------|---------|-------|
| schema only | `search table --schema <s>` | Cross-catalog, one-step |
| table name only | `search table <keyword>` | Global fuzzy |
| schema + fuzzy table | `search table <kw> --schema <s>` | Scoped fuzzy |
| schema + exact table | `search table --table <t> --schema <s>` | Exact match |
| full FQN | `get table --catalog <c> --schema <s> --table <t>` | Direct fetch |
| catalog + schema | `get tables --catalog <c> --schema <s>` | List all in scope |
| qualified name string | `search table <c>.<s>.<t> --mode exact` | Auto-parse FQN |
| insufficient info | Ask user for missing segment | Interaction |

**Decision principles:**
- Info sufficient → search/get directly, don't ask user
- Info insufficient but inferable → search first, then confirm if ambiguous
- Info severely lacking → ask user before acting
- Multiple matches → list candidates (with full FQN), let user pick
- Never enumerate catalogs/schemas one-by-one to locate a target

## When stuck

- Empty search → `get tables` on likely schemas or another catalog
- ODS lineage INPUT=0 → often raw intake; check `intake_paths` or `get integration-tasks`
- Large output → `--summary`; never paste full recursive JSON

## Budget

- Inline: ≤ 2 known-coordinate tool calls (hard cap 3); if the next step needs more → `Agent("discovery")`
- Broader recon: prefer `Agent("discovery")`; parent relays Summary (+ `artifact_path`), does not re-scout
- 🔴 需要多张表的字段结构时,**必须**用 `get tables --with-columns`(1 次调用),禁止逐表 `get table` 串行获取

## Output

`asset_search_result`: name, type, coordinates, match reason, reuse note. Cap at top 3 hits.
Report file by complexity — see `warehouse_status_report.md`.

Files in this skill

  • SKILL.md6.5 KB
  • references/commands.md4.1 KB
  • references/lineage_exploration.md2 KB
  • references/warehouse_status_report.md1.9 KB

Attribution

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

Loading comments…