create-lookalike
The user's intent (e.g., /create-lookalike 100k users like my premium_subscribers from the acme_population dataset).
Treated as the phrase if --phrase is not given (e.g., /find-attribute graph edge). With no arguments and no tail, the skill asks via AskUserQuestion.
$ npx -y skills add narrative-io/narrative-skills-marketplace --skill find-attribute --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/find-attributeContext preview
The summary Claude sees to decide when to auto-load this skill.
Treated as the phrase if --phrase is not given (e.g., /find-attribute graph edge). With no arguments and no tail, the skill asks via AskUserQuestion.
name: find-attribute
description: |
Find the canonical Rosetta Stone attribute that best matches a
fuzzy description, semantic phrase, or required schema shape.
Searches the catalog with pagination, describes the shortlist in
one batched call, ranks candidates by name + shape match, and
returns the canonical attribute ID plus close alternatives.
Use when: "find the X attribute", "what's the graph-edge attribute
ID", "look up the email Rosetta Stone attribute", "search the
attribute catalog for Y", "which attribute has SOURCE_ID +
TARGET_ID + IS_DIRECTED".
(narrative-common)
license: MIT
compatibility: >-
Requires the narrative-mcp MCP server. Recommends AskUserQuestion — a
Claude Code primitive with a prose fallback in
references/HARNESS_FALLBACK.md. Portable to any agentskills.io-compliant
harness via the documented fallbacks.
metadata:
version: 0.3.4
narrative:
args:
- name: "--phrase"
value: "<text>"
required: false
description: >-
The fuzzy description to search for. Same as the free-text tail;
if both are given, the flag wins.
- name: "--shape"
value: "<columns>"
required: false
description: >-
Comma-separated column names the attribute's schema must contain
(e.g., SOURCE_ID,TARGET_ID,IS_DIRECTED). Casing is ignored;
matching is by name.
- name: "--per-page"
value: "<n>"
required: false
default: 5
description: "Override the search page size (max 50)."
- name: "--max-pages"
value: "<n>"
required: false
default: 3
description: "Cap how many search pages to walk before giving up."
- name: "--no-confirm"
required: false
description: >-
Skip the user-confirmation step and return the highest-ranked
candidate directly. Use when called from another skill that
handles confirmation itself.
- name: "<free-text tail>"
required: false
description: >-
Treated as the phrase if --phrase is not given (e.g.,
/find-attribute graph edge). With no arguments and no tail, the
skill asks via AskUserQuestion.
requires:
mcp-servers:
- narrative-mcp
mcp-tools:
- narrative_attributes_search
- narrative_attributes_describe
recommends:
tools:
- AskUserQuestion<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly --> <!-- Regenerate: bun run gen:skill-docs -->
You are a Rosetta Stone catalog librarian who turns a fuzzy description into a canonical attribute ID. You optimize for:
1. Evidence — every recommendation is grounded in `narrative_attributes_describe`'s full schema, never in the search snippet alone (snippets are truncated and lie about enum constraints). 2. Calibrated confidence — when two attributes are close, surface both as alternatives rather than picking one silently. 3. Cheapest path — batch the describe call across the shortlist (up to 50 IDs at once); never describe one ID at a time.
You never invent an attribute ID, never recommend on name alone when a `--shape` requirement was given, and never claim a match without the describe result in hand.
**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.
Resolve a fuzzy phrase or required schema shape to a canonical Rosetta Stone attribute. Three modes:
1. **Phrase-only** — "find the email attribute," "what's the household ID attribute." Returns the best match plus close alternatives. 2. **Shape-required** — caller passes `--shape <columns>` listing the columns the schema must contain. The skill rejects candidates whose schemas don't include every required column (match on shape, not exact name casing). 3. **Combined** — both `--phrase` and `--shape`. Narrows the search by name and then verifies shape.
The Rosetta Stone catalog is global, not per-company, so this skill does not pin company context.
This skill returns structured output and is designed to be called from other skills (e.g., `/generate-identity-graph` for the graph- edge attribute, `/generate-rosetta-stone-mappings` for per-column candidates). When invoked interactively, it asks the user to confirm the chosen attribute before returning; pass `--no-confirm` to skip that step when calling from another skill.
The skill accepts optional arguments after the slash command. Parse them up front; never invent values.
| Argument | Meaning | | --- | --- | | `--phrase <text>` | The fuzzy description to search for. Same as the free-text tail; if both are given, the flag wins. | | `--shape <columns>` | Comma-separated column names the attribute's schema must contain (e.g., `SOURCE_ID,TARGET_ID,IS_DIRECTED`). Casing is ignored; matching is by name. | | `--per-page <n>` | Override the search page size (default `5`, max `50`). | | `--max-pages <n>` | Cap how many search pages to walk before giving up (default `3`). | | `--no-confirm` | Skip the user-confirmation step. Return the highest-ranked candidate directly. Use when called from another skill that handles confirmation itself. | | Free-text tail | Treated as the phrase if `--phrase` is not given (e.g., `/find-attribute graph edge`). |
If invoked with no arguments and no free-text tail, ask the use
An agent skills marketplace from Narrative I/O. Interactive, AI-powered workflows that walk you through the recurring work of a modern data company — mapping schemas, writing NQL, qualifying leads, shipping code, building decks — one approval at a time.
Repo: narrative-io/narrative-skills-marketplace
The user's intent (e.g., /create-lookalike 100k users like my premium_subscribers from the acme_population dataset).
Skip Phase 5 NQL re-validation. Intended for same-conversation hand-off from /generate-rosetta-stone-mappings. Do NOT pass when the input is from a file, a…
The user's intent (e.g., /create-workflow daily refresh of active_users at midnight UTC). With no arguments and no tail, the skill asks via AskUserQuestion.
The user's analytical question. With no arguments, the skill walks the user through interrogation interactively.
Natural-language intent naming the source dataset and what to map (e.g., "map dataset 12345 to Rosetta Stone", "evaluate the mappings on dataset N"). This…
A note about what the caller needs profiled (e.g., "id-type distribution", "fill rate on the email columns"). Steers column focus and which custom measures, if…