From insight-blueprint
Guides Claude through discovering data source schemas and registering them in the insight-blueprint data catalog. Supports CSV, API, and SQL sources. Triggers: "register data source", "add to catalog", "catalog register", "データカタログ登録", "ソース登録", "カタログにデータを追加".
npx claudepluginhub etoyama/insight-blueprint --plugin insight-blueprintThis skill uses the workspace's default tool permissions.
Guides Claude through exploring a data source's structure and registering it
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Guides Claude through exploring a data source's structure and registering it in the insight-blueprint catalog via MCP tools.
update_catalog_entry directly)search_catalog directly)Before proceeding, confirm with the user:
Ask the user which type of data source to register:
If $ARGUMENTS is provided, use it as the source type.
Follow the appropriate exploration workflow below.
Construct the add_catalog_entry call with discovered schema.
Call add_catalog_entry and show the result to the user.
Read the file with limit=5 to see headers and sample data
Ask the user for:
local-survey-2024)add_catalog_entry(
source_id="local-survey-2024",
name="Local Survey 2024",
type="csv",
description="Annual community survey results",
connection={
"file_path": "data/survey_2024.csv",
"encoding": "utf-8",
"delimiter": ","
},
columns=[
{"name": "respondent_id", "type": "integer", "description": "Unique respondent ID"},
{"name": "age", "type": "integer", "description": "Respondent age", "range": {"min": 18, "max": 99}},
...
],
tags=["survey", "local"],
)
getMetaInfo endpoint to discover table structure:
GET {base_url}/app/json/getMetaInfo?appId=$API_KEY&statsDataId={table_id}
Ask the user for:
estat-population)none, api_key, oauth)add_catalog_entry(
source_id="estat-population",
name="e-Stat Population Census",
type="api",
description="Japanese population statistics from e-Stat",
connection={
"base_url": "https://api.e-stat.go.jp/rest/3.0",
"provider": "e-stat",
"table_id": "0003348423",
"auth": "api_key"
},
columns=[
{"name": "prefecture_code", "type": "string", "description": "JIS X 0401 code (01-47)",
"nullable": false, "examples": ["01", "13", "47"]},
{"name": "year", "type": "integer", "description": "Census year",
"range": {"min": 2000, "max": 2024}},
{"name": "population", "type": "integer", "description": "Total population",
"unit": "people"},
],
tags=["government", "population", "demographics"],
primary_key=["prefecture_code", "year"],
row_count_estimate=2350,
)
SELECT column_name, data_type, is_nullable, description
FROM `{project}.{dataset}.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`
WHERE table_name = '{table}'
ORDER BY ordinal_position
SELECT column_name, data_type, is_nullable,
col_description(c.oid, a.attnum) as description
FROM information_schema.columns
WHERE table_name = '{table}'
ORDER BY ordinal_position
Ask the user for:
bq-sales-data)add_catalog_entry(
source_id="bq-sales-data",
name="BigQuery Sales Data",
type="sql",
description="Daily sales transaction data from BigQuery",
connection={
"provider": "bigquery",
"project_id": "my-gcp-project",
"dataset": "analytics",
"table": "daily_sales"
},
columns=[
{"name": "sale_date", "type": "date", "description": "Transaction date"},
{"name": "product_id", "type": "string", "description": "Product identifier"},
{"name": "amount", "type": "float", "description": "Sale amount", "unit": "JPY"},
{"name": "quantity", "type": "integer", "description": "Units sold"},
],
tags=["sales", "bigquery"],
primary_key=["sale_date", "product_id"],
row_count_estimate=500000,
)
| Tool | Purpose |
|---|---|
add_catalog_entry(...) | Register a new data source |
get_table_schema(source_id) | Verify registered schema |
search_catalog(query) | Confirm source is searchable |
| Error | Cause | Action |
|---|---|---|
"Source 'X' already exists" | Duplicate source_id | Use update_catalog_entry or choose a different ID |
"Invalid source type 'parquet'" | Unsupported type | Use csv, api, or sql |
| From | To | When |
|---|---|---|
| /analysis-framing | → /catalog-register | Data missing: "必要なデータを登録するなら /catalog-register" |
| /analysis-reflection | → /catalog-register | Register conclusion as knowledge |
| /catalog-register | → /analysis-framing | Registration complete, return to framing: "フレーミングに戻るなら /analysis-framing" |
| /catalog-register | → /analysis-design | Registration complete, continue design: "デザイン作成を続けるなら /analysis-design" |
/catalog-register skill to register new data sources interactively.source_id and is stored as .insight/catalog/sources/<source_id>.yaml.schema field.catalog_update_source MCP tool..insight/catalog/knowledge/ as YAML files.source_id.knowledge_store MCP tool to add knowledge entries.knowledge_search MCP tool (FTS5-backed).