Skip to content
Back to skills

Pythia Conventions

ASecurity

Use when a project's house style already exists somewhere and needs to become something the tooling can check - the developer hands over a standards document, points at an older or company base schema whose naming should be adopted, says "our team does it this way", or asks why an apply preview warned about a name. Derives the patterns from the real schema, verifies them against it, and writes .pythia/conventions.json and conventions.md.

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

Security analysis

A100/100

Scanned October 14, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Pythia Conventions?

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

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

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-conventions
description: Use when a project's house style already exists somewhere and needs to become something the tooling can check - the developer hands over a standards document, points at an older or company base schema whose naming should be adopted, says "our team does it this way", or asks why an apply preview warned about a name. Derives the patterns from the real schema, verifies them against it, and writes .pythia/conventions.json and conventions.md.
---

# Adopting a Project's Conventions

**Announce at start:** "Using pythia-conventions — I'll read the patterns off the schema first."

**Phase:** Learn → Ask — derive from the schema, ask where the document disagrees, only then write the config

Conventions already exist in every mature schema. They are in the object
names, in a standards document, or in a senior developer's head. This turns
them into two files: patterns the tool checks on every write, and prose every
future agent session reads before writing.

## The Iron Law

```
NO PATTERN WRITTEN DOWN BEFORE THE SCHEMA HAS AGREED WITH IT
```

A pattern that does not match the objects already there is not a convention.
It is a guess that will warn on every apply until someone deletes it.

## The Workflow

1. **Read the shape off the database, not off your memory of it.**

   ```bash
   pythia conventions --scan
   ```

   It tokenises every object name and proposes a pattern per type. Do this
   even when a document exists — and never page through thousands of names
   yourself: that is what the command is for, and your context is better
   spent elsewhere.

2. **Read the developer's document, if there is one.** A base system's
   standards, a wiki page, an older project's rules. Look for what a regex
   cannot hold: parameter prefixes a calling layer depends on, a column every
   query must filter by, where a transaction may commit, which date or money
   representation is canonical. Those go in the prose half.

3. **Reconcile, and say so when the two disagree.** The document states
   intent; the schema states fact. A rule in the document that the schema
   contradicts is one of three things — a rule nobody follows, a rule for new
   code only, or drift worth reporting. Ask the developer which; do not
   silently pick.

4. **Write `.pythia/conventions.json`.** Start from the scan output, narrowed
   by the document. `pythia conventions --init` writes a blank pair if you
   want the skeleton first.

5. **Verify — this step is the point of the skill.**

   ```bash
   pythia conventions --check
   ```

   It reports coverage per type and names what misses.

   | Result | What it means |
   |---|---|
   | every name matches | the pattern is real; keep it |
   | ~90%+ with a handful of misses | genuine exceptions — list them in step 6 |
   | below 90% | **the pattern is wrong**, not the schema; widen or split it, then check again |
   | nothing of that type | an untested rule; keep it only if new objects of that type are expected |

6. **Record the exceptions, with their reason.** Objects that break the rule
   on purpose — ported names from a base platform, legacy entry points whose
   names are part of a public surface. Say why renaming would cost more than
   the warning. An unexplained exception gets "fixed" by the next person.

7. **Write `.pythia/conventions.md`.** For every rule, state **the cost of
   breaking it**, not just the rule. "Parameter prefixes must be `b_`/`a_`"
   is ignorable; "the calling layer binds by prefix, so a wrong one silently
   unbinds the field" is not. Rules with named consequences get followed.

## The LEAD's rules, machine-checked: the `lint` block

Rules a regex over names cannot hold, but a linter can, go in
`conventions.json` next to `naming` — every `pythia lint` and apply preview
then checks them, and autopilot will not land an `error`:

```json
"lint": {
  "rules": {"varchar2-byte-semantics": "error", "dbms-output": "off"},
  "require_comments": "error",
  "required_columns": ["CREATED_BY", "CREATED_AT"],
  "param_prefix": "^P_",
  "forbid": [{"id": "no-sysdate", "pattern": "\\bSYSDATE\\b",
              "message": "use SYSTIMESTAMP", "severity": "warning"}]
}
```

Severities: `off`, `info`, `warning`, `error`. `pythia lint --json` lists
every built-in rule id. Measure a new rule the same way as a naming pattern:
lint a handful of existing objects (`pythia src` into a file) — a rule that
fires on the whole codebase is a rule for new code only, and says so.

## Adopting from an older base the team already runs

Point the connection at that schema and run steps 1 and 2 there — a base
system with thousands of objects is the most reliable statement of a house
style that exists, far better than anyone's recollection of it. Then switch
the connection to the new project and run `--check`: coverage tells you how
much of the base style the new schema has actually inherited.

## Red Flags — STOP if you catch yourself thinking

| Thought | Reality |
|---------|---------|
| "I'll write the patterns from the document alone" | Documents describe intent; schemas record what happened. Scan first. |
| "80% coverage is good enough" | Every miss warns on every apply. Fix the pattern or record the exception. |
| "I'll read all the object names to work it out" | `--scan` does that without spending your context. |
| "The schema disagrees, so the document is wrong" | It may be a new-code-only rule. Ask. |
| "A rule per line is enough" | A rule without its cost is a rule people skip. |

## When NOT to use this skill

- Writing one object in an existing style → `pythia-write`, which reads these
  files and uses `similar` for the details.
- Capturing a *workflow* with steps and gates → `pythia-skill-author`.
  Naming and style belong here; procedures belong in a skill.

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.