mcpField
Q
query-writing

query-writing

github.com/langchain-aiData & databases30.7k1.3k installsUpdated today
Repository

About query-writing

query-writing is a skill that guides SQL query construction, execution, and error recovery using database tools. It is intended for agents answering questions from single-table or multi-table data while emphasizing read-only, focused queries.

Key features

  1. 01Workflows for simple and complex queries
  2. 02Schema inspection before query writing
  3. 03JOIN and aggregation planning
  4. 04Query execution and error recovery
  5. 05Read-only query quality guidelines

Use cases

  1. 01Answering questions from one database table
  2. 02Combining related tables for analysis
  3. 03Troubleshooting SQL errors or unexpected results

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/langchain-ai/deepagents --skill query-writing

After installing, type/query-writingin Claude Code to confirm it loaded.

Details

From the project README

Query Writing Skill

Workflow for Simple Queries

For straightforward questions about a single table:

  1. Identify the table - Which table has the data?
  2. Get the schema - Use sql_db_schema to see columns
  3. Write the query - SELECT relevant columns with WHERE/LIMIT/ORDER BY
  4. Execute - Run with sql_db_query
  5. Format answer - Present results clearly

Workflow for Complex Queries

For questions requiring multiple tables:

1. Plan Your Approach

Use write_todos to break down the task:

  • Identify all tables needed
  • Map relationships (foreign keys)
  • Plan JOIN structure
  • Determine aggregations
2. Examine Schemas

Use sql_db_schema for EACH table to find join columns and needed fields.

3. Construct Query
  • SELECT - Columns and aggregates
  • FROM/JOIN - Connect tables on FK = PK
  • WHERE - Filters before aggregation
  • GROUP BY - All non-aggregate columns
  • ORDER BY - Sort meaningfully
  • LIMIT - Default 5 rows
4. Validate and Execute

Check all JOINs have conditions, GROUP BY is correct, then run query.

Example: Revenue by Country

SELECT
    c.Country,
    ROUND(SUM(i.Total), 2) as TotalRevenue
FROM Invoice i
INNER JOIN Customer c ON i.CustomerId = c.CustomerId
GROUP BY c.Country
ORDER BY TotalRevenue DESC
LIMIT 5;

Error Recovery

If a query fails or returns unexpected results:

  1. Empty results — Verify column names and WHERE conditions against the schema; check for case sensitivity or NULL values
  2. Syntax error — Re-examine JOINs, GROUP BY completeness, and alias references
  3. Timeout — Add stricter WHERE filters or LIMIT to reduce result set, then refine

Quality Guidelines

  • Query only relevant columns (not SELECT *)
  • Always apply LIMIT (5 default)
  • Use table aliases for clarity
  • For complex queries: use write_todos to plan
  • Never use DML statements (INSERT, UPDATE, DELETE, DROP)

Comments

Markdown supported