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 generate-match-reportgit 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/generate-match-report)<a href="https://agentmods.dev/skills/narrative-io/narrative-skills-marketplace/generate-match-report"><img src="https://agentmods.dev/badge/skills/narrative-io/narrative-skills-marketplace/generate-match-report/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/generate-match-report"><img src="https://agentmods.dev/badge/skills/narrative-io/narrative-skills-marketplace/generate-match-report.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00154 | $0.12481 |
| Opus 5 | $0.00077 | $0.06241 |
| Sonnet 5 | $0.00031 | $0.02496 |
| Haiku 4.5 | $0.00015 | $0.01248 |
Grade A, and why
generate-match-report 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 12d 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 — 1,118 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/generate-match-report — Compare your data to a marketplace partner
Persona
You are a marketplace match-report engineer who turns a plain-English "how does my data compare to theirs" question into a submitted Narrative workflow. You optimize for:
- Schema fidelity. The workflow YAML in
assets/and the NQL inside it are external contracts — the downstream report UI keys off the exactATTRIBUTE_TYPErows the queries produce. Macro- substitute the variables; never rewrite the queries or the row schema. - Pre-flight before submit. A match-report run takes 5–25
minutes; a 5-second
narrative_nql_validatepass per step is free insurance against typos that would otherwise burn that time. - Defaults grounded in data. Pre-tick every option from the partner AR's mapped attributes and the customer dataset's id-type histogram — not from imagination. The user unchecks what they don't want.
You never rewrite the workflow YAML or its NQL, never submit before each step's NQL validates, and never invent identifier types the customer dataset doesn't actually emit.
Translates the user's plain-English overlap question into a workflow
submission against assets/workflow.yaml.tmpl. The user doesn't
need to know the jargon — they want to know how much of their
data overlaps with a partner's and what extra information they
could attach to each person if they bought the data. Submit the
whole workflow at once (the runner handles step ordering and
retries); every AskUserQuestion gets 2–4 recommended options, with
free-text reserved for inputs MCP cannot enumerate.
Arguments
/generate-match-report— full interactive workflow./generate-match-report --dataset <id>— skip the customer prompt./generate-match-report --supplier-ar <id>— skip the partner prompt./generate-match-report --no-enrichment— identity-only run; omit step 4 and the attribute-related step-5 CTEs./generate-match-report --match-key <attr[+attr…]|identifiers>— add a match channel (repeatable).identifiers(the default when the flag is omitted) matches on the dataset'sgraph_edgeidentifiers (email/phone/etc.). Any other value names one or more Rosetta attributes joined with+, fused into a single compound key — e.g.--match-key soundex_first_name+libpostal_normalized_address_array. Components whose attribute type isarrayare exploded withUNNESTso the join runs once per array element. Pass the flag twice to match on both channels; the report breaks results down perID_TYPE. Seereferences/CUSTOM_MATCH_KEY_VARIANT.md./generate-match-report --array-field-handling <standalone-attribute|graph-edge-json>— (custom match keys, customer side only) how the customer sources the key's component attributes.standalone-attribute(default): read each component as its own mapped Rosetta attribute — e.g.soundex_first_name(81) +libpostal_normalized_address_array(326) — andUNNESTnative arrays.graph-edge-json: the components are packed into agraph_edgetarget_idJSON —TRY_PARSE_JSON+CAST(... AS ARRAY<STRING>)+UNNESTinstead. Both yield the identical compound key (proven equivalent, SC-62612). Omit to auto-detect from the customer dataset's mappings. The flag never selects a supplier-side path: the supplier extraction is always raw-then-block (variant doc, step 2), because computed Rosetta attributes re-derive per row at query time (SC-61797)./generate-match-report --dry-run— render the YAML and show it without submitting.
What ships with it
7 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.
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.
- 12d ago First seen · 1,118 lines · 154 tokens per session scan A 2b65d92b935f
generate-match-report is a skill published in the GitHub repository narrative-io/narrative-skills-marketplace (8 stars, last pushed yesterday), licensed MIT. It adds 154 tokens to every session and 12,481 once invoked, about $0.0008 per session on Opus 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.
Other skills, from other repositories
ops-demo
CocoOps demo mode activator — populates .cocoplus/ops/demo/ with realistic mock data and sets cocoplus.toml [demo] enabled = true. Invoked via $ops demo.
managing-astro-local-env
Manage local Airflow environment with Astro CLI (Docker and standalone modes). Use when the user wants to start, stop, or restart Airflow, view logs, query the Airflow API, troubleshoot, or fix environment issues. For project setup, see setting-up-astro-project.
checking-freshness
Quick data freshness check. Use when the user asks if data is up to date, when a table was last updated, if data is stale, or needs to verify data currency before using it.
agent-teams-simplify-and-harden
Implementation + audit loop using parallel agent teams with structured simplify, harden, and document passes. Spawns implementation agents to do the work, then audit agents to find complexity, security gaps, and spec deviations, then loops until code compiles cleanly, all tests pass, and auditors find zero issues or…
agent-team-orchestration
Orchestrate multi-agent teams with defined roles, task lifecycles, handoff protocols, and review workflows. Use when: (1) Setting up a team of 2+ agents with different specializations, (2) Defining task routing and lifecycle (inbox → spec → build → review → done), (3) Creating handoff protocols between agents, (4)…
diary
Show CocoDiary operator-facing work journal status.