{"id":51525,"plugin_id":"plugin_asdk_app_6ac62723435881918a3f72a37853d500","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:46:39.276Z","digest":"a205f959de3b196635137a3c2a44fcbb14d0096a92d204723002920facc6d351","against":null,"payload":{"description":"Use when the user wants to connect a database to NLSQL, set up or continue an NLSQL data source, or add column values to NLSQL, through the NLSQL MCP tools.","included_files":[],"name":"nlsql","skill_md_contents":"---\nname: nlsql\ndescription: Use when the user wants to connect a database to NLSQL, set up or continue an NLSQL data source, or add column values to NLSQL, through the NLSQL MCP tools.\n---\n\n# Setting up an NLSQL data source\n\nThe `nlsql` MCP server signs the user in with their NLSQL account and runs a guided\nwizard. The wizard turns their database schema and business metrics into an NLSQL\ndata source, then publishes it to their account so they can query the data in plain English.\n\nThe server sends its own detailed instructions when you connect. Follow them; this\nskill only adds the points that are easy to get wrong.\n\n## The loop\n\n1. Call `nlsql_config_wizard` with no data. It resumes wherever this user left off,\n   so it is also the way to continue an earlier session.\n2. Every response has a `next_action`. Do it straight away, then call the wizard\n   again with exactly the keys named in the response's `after` field:\n   - `ask_user_text`: show `message` and collect the user's answer.\n   - `ask_user_question`: ask the `questions` as multiple choice.\n   - `interpret`: do the extraction `message` describes yourself and send back the\n     JSON it asks for.\n   - `show_then_ask`: show `message`, then ask the `questions`.\n3. When the wizard returns `final_response`, call `publish_datasource` without\n   waiting to be asked.\n\n**No `AskUserQuestion` tool?** Show each question with its options as a numbered\nlist, say whether one or several may be picked (`multiselect`), and wait for the\nreply. Map the reply back to the exact option text before calling the wizard.\n\n## Getting the schema\n\nThe wizard gives the user a command for their database type that prints the schema\nonly (for example `pg_dump --schema-only`). It needs no table data.\n\n- If you can run shell commands, you may offer to run that command for the user.\n  Ask first, because it needs their database credentials, and never echo a password\n  back into the chat.\n- Otherwise ask the user to run it and paste the output.\n\nWhen interpreting the schema, include joins that are obvious from naming (for\nexample `orders.customer_id` to `customers.id`) even if no foreign key declares them.\n\n## Things to keep in mind\n\n- **Data source names** may contain only letters, numbers, hyphens and underscores.\n- **Steps 10 to 14 are optional.** These are KPIs, top-N rankings, filters,\n  calculated metrics and column-value arguments. The user can answer `none` to skip any of them.\n- **One setup at a time.** Each account has one data source in progress. Finish or\n  publish it before starting another.\n- **Column values come after publishing.** To improve accuracy, call\n  `get_column_values`. It asks you to write `SELECT DISTINCT` queries for the user to\n  run. Send their results back, confirm them, then call `publish_column_values`.\n- **Errors**: if `publish_datasource` returns an `error`, show it and offer to retry.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}