本文へ移動
cccskills
無料GitHub で公開

dimensional-modeler

Star schema, snowflake schema, SCD types, and Kimball methodology for analytical data modeling. Activate on: dimensional model, star schema, snowflake schema, SCD, fact table, dimension table, Kimball, grain, surrogate key. NOT for: dbt implementation (use dbt-analytics-engineer), warehouse tuning (use data-warehouse-optimizer).

インストール方法を見る

含まれるファイル(1)

  • SKILL.md7.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Dimensional Modeler

Design analytical data models using Kimball methodology with star schemas, slowly changing dimensions, and proper grain definition.

Activation Triggers

Activate on: "dimensional model", "star schema", "snowflake schema", "SCD", "fact table", "dimension table", "Kimball", "grain", "surrogate key", "conformed dimension", "bridge table"

NOT for: dbt SQL implementation → dbt-analytics-engineer | Warehouse performance tuning → data-warehouse-optimizer | OLTP schema design → relevant backend skill

Quick Start

  1. Identify the business process — what is being measured? (orders, sessions, payments)
  2. Declare the grain — one row equals what? (one order line item, one daily snapshot, one event)
  3. Choose dimensions — who, what, where, when, how (customer, product, store, date, channel)
  4. Define facts — measurable quantities at the grain (amount, quantity, duration, count)
  5. Handle change — SCD Type 1 (overwrite), Type 2 (versioned rows), Type 3 (previous column)

Core Capabilities

DomainTechnologies
MethodologyKimball, Inmon (Data Vault for staging)
Schema TypesStar schema, snowflake schema, galaxy schema
SCDType 0 (fixed), Type 1 (overwrite), Type 2 (versioned), Type 3 (column)
Fact TypesTransaction, periodic snapshot, accumulating snapshot, factless
Implementationdbt, SQL DDL, modeling tools (dbtERD, dbdiagram.io)

Architecture Patterns

Star Schema Design

                    ┌──────────────┐
                    │ dim_date     │
                    │──────────────│
                    │ date_key (PK)│
                    │ full_date    │
                    │ year, quarter│
                    │ month, week  │
                    │ is_holiday   │
                    └──────┬───────┘
                           │
┌──────────────┐    ┌──────┴───────┐    ┌──────────────┐
│ dim_customer │    │ fct_orders   │    │ dim_product  │
│──────────────│    │──────────────│    │──────────────│
│ customer_key │←───│ customer_key │───→│ product_key  │
│ customer_id  │    │ product_key  │    │ product_id   │
│ name         │    │ date_key     │    │ name         │
│ segment      │    │ store_key    │    │ category     │
│ region       │    │──────────────│    │ brand        │
└──────────────┘    │ quantity     │    └──────────────┘
                    │ unit_price   │
                    │ discount_amt │    ┌──────────────┐
                    │ total_amount │    │ dim_store    │
                    └──────┬───────┘    │──────────────│
                           │            │ store_key    │
                           └───────────→│ store_name   │
                                        │ city, state  │
                                        └──────────────┘

Grain: one row per order line item
Facts: quantity, unit_price, discount_amt, total_amount

SCD Type 2 Implementation

-- dim_customer with SCD Type 2 (track history)
CREATE TABLE dim_customer (
  customer_key    BIGINT PRIMARY KEY,  -- surrogate key (auto-increment)
  customer_id     VARCHAR(50),          -- natural/business key
  name            VARCHAR(200),
  email           VARCHAR(200),
  segment         VARCHAR(50),
  region          VARCHAR(50),
  -- SCD Type 2 metadata
  effective_from  TIMESTAMP NOT NULL,
  effective_to    TIMESTAMP DEFAULT '9999-12-31',
  is_current      BOOLEAN DEFAULT TRUE
);

-- Merge pattern: close old record, insert new
-- When customer changes segment:
UPDATE dim_customer
SET effective_to = CURRENT_TIMESTAMP, is_current = FALSE
WHERE customer_id = 'CUST-123' AND is_current = TRUE;

INSERT INTO dim_customer (customer_id, name, email, segment, region,
                          effective_from, is_current)
VALUES ('CUST-123', 'Jane Doe', 'jane@co.com', 'Enterprise', 'West',
        CURRENT_TIMESTAMP, TRUE);

-- Query: joins always use surrogate key + is_current for latest
-- Historical analysis: join on surrogate key with date range overlap

Fact Table Types

Transaction Fact           Periodic Snapshot         Accumulating Snapshot
─────────────────          ─────────────────         ─────────────────────
One row per event          One row per period        One row per lifecycle
Example: fct_orders        Example: fct_daily_       Example: fct_order_
                           inventory                  fulfillment

Grain: order line item     Grain: product x day      Grain: one order
Measures: amount, qty      Measures: qty_on_hand,    Measures: order_date,
                           qty_sold, qty_ordered      ship_date, deliver_date

Grows: continuously        Grows: daily/weekly       Updates: as lifecycle
                                                      stages complete

Anti-Patterns

  1. No declared grain — without explicit grain, fact tables become ambiguous; always document "one row = one ___"
  2. Natural keys as FKs — use surrogate integer keys for joins (faster) and to support SCD Type 2 versioning
  3. Nulls in fact measures — null quantities and amounts break aggregations; use 0 or create factless fact tables
  4. Snowflaking excessively — normalizing dimensions into sub-dimensions slows queries; star schema (denormalized dims) is preferred for analytics
  5. Mixing grains in one fact — daily summaries and individual transactions in the same table create confusion; separate fact tables per grain

Quality Checklist

  • Grain explicitly declared and documented for every fact table
  • Surrogate keys used for all dimension PKs (not natural keys)
  • Conformed dimensions shared across fact tables (dim_date, dim_customer)
  • SCD type chosen per dimension attribute (Type 1 for non-critical, Type 2 for auditable)
  • Fact measures are additive (summable across all dimensions) where possible
  • Date dimension covers full range with fiscal calendar attributes
  • No nulls in fact measures (use 0 or factless fact)
  • Foreign key relationships tested (referential integrity)
  • Model documented in ERD diagram (dbdiagram.io or dbtERD)
  • Naming conventions consistent: fct_ for facts, dim_ for dimensions

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

Use for insight, reframing, contradiction, impasse, and anomaly-driven problem solving when execution effort no longer helps. NOT for routine optimization, error correction, or well-specified tasks with known solution paths.

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

Apply normative BDI reasoning to agents that must detect norms, choose which commitments to internalize, and resolve conflicts by comparing consequences. Use when obligations, prohibitions, or policies collide in autonomous systems. NOT for simple fixed-priority rules, pure constraint satisfaction, or domains where no real normative conflict exists.

日本語の概要は準備中です。原文の説明を表示しています。

curiositech/windags-skills132026年10月1日 更新

curiositech のスキルをすべて見る

このスキルの問題を報告する