Skip to content
Back to skills

Obelisk Urql

ASecurity

Write, review, debug, parse, or generate Obelisk urQL — the SQL dialect of the Obelisk RDBMS Gall agent. Covers clause ordering, object qualification, naming/literal rules, scripts/atomicity, DDL, DML, queries, joins, set operations, scalar functions, time travel, system views, and the Hoon API. Use whenever working with urQL scripts or the %obelisk agent.

  • 37 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 9, 2026
databasessqldebuggingapidatabase

Works with

  • api

Security analysis

A100/100

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

Scanned September 9, 2026

npx -y skills add jackfoxy/obelisk --skill obelisk-urql --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Obelisk Urql?

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

Security grade badge for Obelisk Urql
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jackfoxy-obelisk-urql/badge)](https://www.skillsdirectory.com/skills/jackfoxy-obelisk-urql)

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: obelisk-urql
description: Write, review, debug, parse, or generate Obelisk urQL — the SQL dialect of the Obelisk RDBMS Gall agent. Covers clause ordering, object qualification, naming/literal rules, scripts/atomicity, DDL, DML, queries, joins, set operations, scalar functions, time travel, system views, and the Hoon API. Use whenever working with urQL scripts or the %obelisk agent.
user-invocable: true
disable-model-invocation: false
---

# Obelisk urQL

urQL is the scripting/query language of Obelisk, an Urbit-native RDBMS Gall agent. It is derived from SQL but differs deliberately for readability, composability, and set/relational theory. **When this skill conflicts with `desk/doc/usr/reference/` or `desk/doc/usr/users-guide.md`, the docs win.**

## First, the differences that bite

- **Clause order is evaluation order:** `FROM .. WHERE .. SELECT ..`, never SELECT-first.
- **`SCALARS` placement:** in a query it sits after the joins and **before `WHERE`**; in `UPDATE`/`DELETE` it sits **before** the verb.
- **Results are always sets** (no dup rows, no `DISTINCT`). **No nulls** — columns are non-nullable typed atoms.
- **Auras, not SQL types.** Literals follow hoon aura notation (`'cord'`, `~2024.1.1`, `--20`, `.~3.14`, `Y`/`N`). `@rd` floats need the `.~` prefix.
- **No inlined sub-queries** — use CTEs (`WITH`) / joins, referenced by alias.
- `INNER` keyword does not exist (`JOIN` is inner). `DELETE` **requires** `WHERE`. SQL "schema" → `NAMESPACE`.
- Comments are `::` and `/* */` (delimiters in columns 1–2), not `--`.
- Object names are hoon terms (`@tas`: lower-case, hyphens, leading letter); aliases may be mixed case and are case-agnostic.
- `AND` has precedence over `OR`; use parentheses for clarity.
- Scripts (`;`-separated) are **atomic** and share one timestamp; once a query appears, no later command may mutate.

## Workflow

**Writing / generating:** confirm clause order (`syntax.md` → Clause ordering), qualify objects (`<db>.<ns>.<obj>`, `dbo`/current-db defaults), use aura-correct literals, list columns explicitly (avoid `SELECT *` in saved scripts), end arithmetic scalars with `END`.

**Reviewing:** check for SQL-isms that are invalid urQL — SELECT-first order, `--` comments, `INNER JOIN`, `DISTINCT`, nulls, `NULL`, inlined sub-selects, `DELETE` with no `WHERE`, qualified table names inside predicates (only unqualified names or aliases allowed), bare `3.14` where `@rd` is meant. Verify joins actually share a name+aura column (natural join crashes otherwise).

**Debugging:** parser errors are terse — inspect the script structurally (clause order, parentheses, `END` on arithmetic, comma vs. no-comma in `VALUES` rows). Use the `%parse` action to inspect the AST without executing (`system-views-and-api.md`). Confirm a feature is actually executed and not parse-only (see status tables).

## Reference map

| Topic | File |
|:--|:--|
| Clause order, qualification, naming, literals, comments, scripts/atomicity | [references/syntax.md](references/syntax.md) |
| `CREATE/ALTER/DROP DATABASE·NAMESPACE·TABLE`, foreign keys | [references/ddl.md](references/ddl.md) |
| `INSERT`, `UPSERT`, `UPDATE`, `DELETE`, `TRUNCATE TABLE` | [references/dml.md](references/dml.md) |
| `SELECT`, joins, CTEs, predicates, set operations, status tables | [references/queries.md](references/queries.md) |
| Scalar functions (control flow, arithmetic, datetime, math, string) | [references/scalars.md](references/scalars.md) |
| `AS OF` / time-travel rules and warnings | [references/time-travel.md](references/time-travel.md) |
| System views, `cmd-result`/`vector` molds, Hoon `%obelisk-action` API | [references/system-views-and-api.md](references/system-views-and-api.md) |

Canonical worked examples: [examples/sample.md](examples/sample.md).

## Implementation status (frequent traps)

Parsed but **not yet executed**: `LEFT/RIGHT/OUTER JOIN`, `GROUP BY`, `HAVING`, `ORDER BY`, `TOP`, aggregates, `DIVIDED BY`, `EQUIV`, `EXISTS`, `ALL`, `ANY`, `INSERT` from SELECT, `CREATE/ALTER/DROP INDEX`, `CREATE/DROP VIEW`. Executed: DDL on databases/namespaces/tables, `INSERT`/`UPSERT`/`UPDATE`/`DELETE`/`TRUNCATE`, `JOIN`/`JOIN ON`/`CROSS JOIN`, `UNION`/`EXCEPT`/`INTERSECT`, scalar functions, `AS OF`.

Files in this skill

  • SKILL.md4.2 KB
  • examples/sample.md6.3 KB
  • references/ddl.md5.5 KB
  • references/dml.md2.9 KB
  • references/queries.md7 KB
  • references/scalars.md3.8 KB
  • references/syntax.md4.9 KB
  • references/system-views-and-api.md6.2 KB
  • references/time-travel.md2 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.