Skip to content
Back to skills

Pythia Explore

ASecurity

Use when you need to understand anything in an Oracle schema - finding objects, reading PL/SQL source, signatures, table columns, DDL, searching code, or asking who uses what. ALSO use when a .sql file, dump, export, migration script or repo copy of an object appears to answer the question already, including one the developer points you at - because those files drift from the database and are wrong in ways that read as correct. The database is the only source of truth.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 14, 2026
ai-agentsgosqldatabase

Security analysis

A100/100

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

Scanned October 14, 2026

npx -y skills add thaildhe172591/pythia --skill pythia-explore --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pythia Explore?

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

Security grade badge for Pythia Explore
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thaildhe172591-pythia-explore/badge)](https://www.skillsdirectory.com/skills/thaildhe172591-pythia-explore)

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: pythia-explore
description: Use when you need to understand anything in an Oracle schema - finding objects, reading PL/SQL source, signatures, table columns, DDL, searching code, or asking who uses what. ALSO use when a .sql file, dump, export, migration script or repo copy of an object appears to answer the question already, including one the developer points you at - because those files drift from the database and are wrong in ways that read as correct. The database is the only source of truth.
---

# Exploring the Schema

**Announce at start:** "Using pythia-explore — asking the database directly."

**Phase:** Learn

## The principle: ask the database, never the dump

Repositories of exported `.sql` files go stale the day after export. A real
mid-size system, audited in 2026, compared its repo dump against the live
database:

| Object type | In the dump | In the database | Verdict |
|---|---|---|---|
| Procedures | 3,827 | 3,827 | matched |
| Tables | 952 | 952 | matched |
| **Types** | **0** | **115** | **all missing** |
| **Packages** | **0** | **9** | **all missing** |
| **Indexes** | **116** | **1,016** | **~89% missing** |

Code that "reads fine" against the dump can reference types and packages the
dump never heard of.

**When the developer hands you a `.sql` file** — "explain this procedure",
"here is the export, what does it do" — the file is a claim, not the truth.
Read it, then run `pythia src <NAME>` and answer from the database. If the
two differ, say so first: which is newer is exactly what the developer needs
to know, and it is invisible from the file alone. Never answer about a
database object from a file alone while the database is reachable.

Read files as the answer only when the database is unreachable — and say
that is what you are doing.

## What you need → what you run

| Need | Command |
|---|---|
| Is the connection alive, what schema | `pythia check` |
| Find objects by name | `pythia ls "PKG_%"` |
| Read source, with the compiler's line numbers | `pythia src NAME` (`--body`, `--spec`) |
| A procedure/function signature | `pythia args NAME` |
| Columns and real data types | `pythia cols TABLE_NAME` |
| Full DDL | `pythia ddl TABLE NAME` |
| Search all PL/SQL text | `pythia grep "text"` |
| What an object depends on | `pythia deps NAME` |
| What depends on an object | `pythia impact NAME` |
| Exact identifier usages (beats grep) | `pythia plscope NAME` |
| Programs named like this one | `pythia similar NAME` |
| Everything currently broken | `pythia invalid`, `pythia errors` |
| A free-form question | `pythia sql "select ..."` (SELECT/WITH only) |

## Rules that keep answers honest

- **Truncation is always announced.** Outputs end with `-- truncated ...` or
  set `"truncated": true` in `--json`. If you do not see the marker, you saw
  everything; if you do, say so or fetch more (`--limit`, `--offset`,
  `--max-lines`) — never present a truncated list as complete.
- **`plscope` before `grep`** for "where is X used": PL/Scope is recorded by
  the compiler and exact; grep matches comments and look-alike names. If
  PL/Scope has no data, the command says so and grep is the fallback.
- **`src` line numbers are the compiler's own** — an error at `line 47`
  means line 47 in `src` output. No offset arithmetic.
- Default output caps exist to protect your context window; raise them only
  for the object you are actually working on.

Deeper reference — which dictionary views back these commands, PL/Scope
enablement, licensing boundaries: `reference/data-dictionary.md`.

Files in this skill

  • SKILL.md3.5 KB
  • reference/data-dictionary.md2.5 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.