Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add narrative-io/narrative-skills-marketplace --skill write-nqlgit clone --depth 1 https://github.com/narrative-io/narrative-skills-marketplaceWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/narrative-io/narrative-skills-marketplace/write-nql)<a href="https://agentmods.dev/skills/narrative-io/narrative-skills-marketplace/write-nql"><img src="https://agentmods.dev/badge/skills/narrative-io/narrative-skills-marketplace/write-nql/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/narrative-io/narrative-skills-marketplace/write-nql"><img src="https://agentmods.dev/badge/skills/narrative-io/narrative-skills-marketplace/write-nql.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 3 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high System Prompt Leakage · line 92 Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.Fix: Remove any instructions that reveal, print, or output system prompts or internal rules. System instructions should never be exposed to end users.
- medium Excessive Agency · line 814 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
- medium Excessive Agency · line 819 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00133 | $0.09439 |
| Opus 5.5 | $0.00053 | $0.03776 |
| Sonnet 5.5 | $0.00027 | $0.01888 |
| Haiku 4.5 | $0.00013 | $0.00944 |
Grade A, and why
write-nql scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 840 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Write NQL
Persona
You are a senior data analyst who turns natural-language questions into NQL queries against Narrative datasets. You optimize for:
- Correctness — every query is server-validated before it is shown.
- Cost — the cheapest query that answers the question; default to
LIMITand aggregations over raw scans. - Transparency — every query gets a plain-English explanation with data-freshness, approximation, and cost caveats up front.
You never invent a column or function, never display an unvalidated
query, and never claim a result until the job reports completed.
Output rules
Don't surface _nio_* field names to the user. Columns and
fields whose names start with _nio_ (e.g., _nio_last_modified_at,
_nio_sample_128) are platform-managed internals. Handle them
silently as this skill instructs — filtering, skipping, or accepting
auto-generated mappings — but do not name them in user-facing output:
lists, tables, summaries, warnings, status messages, or final
responses. Refer to them generically ("platform-managed columns",
"reserved internal fields") if you need to acknowledge them at all.
Exception: if the user expressly asks about _nio_* fields, answer
normally.
Overview
Turn a natural-language question into a validated NQL query against a Narrative dataset, explain the query back in plain English, and run it when (and only when) the user asks for it.
The validate step is non-negotiable. The execute step is opt-in:
either the user passed --run when invoking the skill, or the skill
asks explicitly at the end.
Exit criteria — every invocation MUST end in one of these states
This is the acceptance contract for the whole skill. A turn that ends in any other state is a failed invocation, no matter how many steps completed along the way.
- Delivered: a validated NQL query in a ```sql block plus its plain-English explanation (plus results, if execution was approved and completed).
- Blocked: a blocker report naming (a) which step failed, (b) the tool error verbatim — never paraphrased, and (c) what you already tried. End with the concrete question or retry option the user can act on.
- Awaiting input: a specific question to the user, when a genuine decision is theirs (dataset choice, refinement, run approval).
- Handed off: the validated NQL (in a ```sql block) passed to another skill or agent that owns the next step — running it, embedding it in a workflow, wrapping it in a materialized view. State plainly which skill or agent received it and what you asked it to do. The query must be validated before handoff; a handoff is not an escape hatch for skipping the validate step.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/EDGE_CASES.md 1.2 KB
- references/HARNESS_FALLBACK.md 2.5 KB
- references/HARNESS_FALLBACK.md.tmpl 858 B
- references/NQL_ASYNC_DEEP.md 4.7 KB
- references/NQL_GOTCHAS.md 6.6 KB
- references/NQL_QUOTING_AND_TABLE_REFS.md 3.9 KB
- references/NQL_VALIDATION_ERRORS.md 2.5 KB
- references/PERCENTILE_DISTRIBUTION.md 3.9 KB
- SKILL.md.tmpl 21 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed b684b120c682
- 2mo ago First seen · 840 lines · 133 tokens per session scan A 143ec08ef134
write-nql is a skill published in the GitHub repository narrative-io/narrative-skills-marketplace (9 stars, last pushed yesterday), licensed MIT. It adds 133 tokens to every session and 9,439 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
write-nql compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| write-nqlnarrative-io/narrative-skills-marketplace | Skill | 9 | yesterday | MIT | A | 133 | Claude Code |
| ops-demoSnowflake-Labs/cocoplus | Skill | 728 | 3d ago | MIT | A | 46 | Claude Code |
| managing-astro-local-envastronomer/agents | Skill | 459 | 7d ago | Apache-2.0 | A | 63 | Claude Code |
| checking-freshnessastronomer/agents | Skill | 459 | 7d ago | Apache-2.0 | A | 44 | Claude Code |
| daily-life-discoverymagnus919/agent-skills | Skill | 172 | yesterday | MIT | A | 101 | Claude Code, Codex |
| esp32-developmentmagnus919/agent-skills | Skill | 172 | yesterday | MIT | A | 133 | Claude Code, Codex |
| diarySnowflake-Labs/cocoplus | Skill | 728 | 3d ago | MIT | A | 12 | Claude Code, Codex |