andycom12000

data-analysis-backend

0
0
# Install this skill:
npx skills add andycom12000/data-analytic-flow-skill

Or install specific skill: npx add-skill https://github.com/andycom12000/data-analytic-flow-skill

# Description

Use when implementing or modifying data analysis backend features including endpoints, aggregations, dimensions, or formatters. Ensures Clean Architecture principles, three-layer separation (Endpoint-Service-Repository), and standardized 8-step pipeline workflow. Prevents common anti-patterns like SQL in domain layer or DB schema leakage.

# SKILL.md


name: data-analysis-backend
description: "Use when implementing or modifying data analysis backend features including endpoints, aggregations, dimensions, or formatters. Ensures Clean Architecture principles, three-layer separation (Endpoint-Service-Repository), and standardized 8-step pipeline workflow. Prevents common anti-patterns like SQL in domain layer or DB schema leakage."


Data Analysis Backend Development Guide

Overview

้€™ๅ€‹ skill ๆŒ‡ๅฐŽ Agent ้ตๅพชๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏ็š„ๆžถๆง‹่จญ่จˆๅŽŸๅ‰‡ใ€‚ๆ ธๅฟƒ็›ฎๆจ™ๆ˜ฏๅปบ็ซ‹ไธ€ๅ€‹้ซ˜ๆ“ดๅ……ๆ€งใ€ไฝŽ่€ฆๅˆใ€ๅฏ้ ๆœŸๆต็จ‹็š„็ณป็ตฑใ€‚

ๆ ธๅฟƒๆžถๆง‹ๅŽŸๅ‰‡

ไธ‰ๅฑคๆžถๆง‹ (Three-Layer Architecture)

Endpoint Layer (HTTP)
    โ†“
Application Service Layer (Orchestration)
    โ†“
Domain Layer (Business Logic)
    โ†“
Infrastructure Layer (DB/SQL)

ไพ่ณดๅ่ฝ‰ๅŽŸๅ‰‡ (Dependency Inversion)
- Domain Layer ๅฎš็พฉ contracts (interfaces)๏ผŒไธ็Ÿฅ้“ไปปไฝ• DB schema
- Infrastructure Layer ๅฏฆไฝœ้€™ไบ› contracts๏ผŒ่™•็† SQL ๅ’Œ DB ้€ฃๆŽฅ
- Service Layer ๅ”่ชฟ Domain ๅ’Œ Infrastructure๏ผŒไฝ†ไธ็›ดๆŽฅๆ“ไฝœ DB

้—œ้ต่จญ่จˆๆฑบ็ญ–
1. Semantic โ†’ Physical ๅˆ†้›ข๏ผšDomain ็”จ่ชžๆ„ๅŒ–็š„ DimensionSpec๏ผŒQueryBuilder ่ฝ‰ๆ›็‚บๅฏฆ้š› SQL
2. ๆจ™ๆบ–ๅŒ– Pipeline๏ผšๆ‰€ๆœ‰ endpoint ้ตๅพช็›ธๅŒ็š„ 8-step ๆต็จ‹
3. ็„ก็‹€ๆ…‹ Aggregation๏ผšAggregation ๆ˜ฏ็ด”็ฒน็š„่จˆ็ฎ—้‚่ผฏ๏ผŒไธไพ่ณด็‰นๅฎš DB ็ตๆง‹
4. View-Only Formatter๏ผšFormatter ๅชๅš่ณ‡ๆ–™้‡็ต„๏ผŒไธ้‡ๆ–ฐ่จˆ็ฎ—ๆ•ธๅ€ผ


The Standard 8-Step Pipeline

ๆ‰€ๆœ‰ๆ•ธๆ“šๅˆ†ๆž endpoint ๅฟ…้ ˆ้ตๅพชๆญคๆจ™ๆบ–ๆต็จ‹๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 1. Validate Request                                         โ”‚
โ”‚    Layer: Endpoint                                          โ”‚
โ”‚    Input: HTTP Request                                      โ”‚
โ”‚    Output: Validated DTO                                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 2. Build DimensionSpec                                      โ”‚
โ”‚    Layer: Endpoint โ†’ Service                                โ”‚
โ”‚    Input: DTO fields (e.g., groupBy, dateRange)             โ”‚
โ”‚    Output: DimensionSpec (semantic definition)              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 3. Resolve AggregationSpec                                  โ”‚
โ”‚    Layer: Service                                           โ”‚
โ”‚    Input: Aggregation name or type                          โ”‚
โ”‚    Output: AggregationSpec (with MetricContracts)           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 4. Build QueryPlan                                          โ”‚
โ”‚    Layer: Service โ†’ Infrastructure                          โ”‚
โ”‚    Input: DimensionSpec + AggregationSpec                   โ”‚
โ”‚    Output: LogicalQuery or SQL string                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 5. Execute Query                                            โ”‚
โ”‚    Layer: Infrastructure                                    โ”‚
โ”‚    Input: SQL query                                         โ”‚
โ”‚    Output: Raw DB rows                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 6. Aggregate Result                                         โ”‚
โ”‚    Layer: Service                                           โ”‚
โ”‚    Input: Raw rows + AggregationSpec                        โ”‚
โ”‚    Output: Aggregated data (MetricContract values)          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 7. Format Visualization                                     โ”‚
โ”‚    Layer: Service โ†’ Endpoint                                โ”‚
โ”‚    Input: Aggregated data + Format type                     โ”‚
โ”‚    Output: Formatted response (chart config, table, etc.)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 8. Return Response                                          โ”‚
โ”‚    Layer: Endpoint                                          โ”‚
โ”‚    Input: Formatted data                                    โ”‚
โ”‚    Output: HTTP Response (200 OK + JSON)                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Step-by-Step ่ท่ฒฌ่ชชๆ˜Ž

Step 1: Validate Request
- ๆชขๆŸฅๅฟ…่ฆๅƒๆ•ธๅญ˜ๅœจๆ€ง
- ้ฉ—่ญ‰ๆ—ฅๆœŸ็ฏ„ๅœๆ ผๅผ
- ้ฉ—่ญ‰ groupBy ๆฌ„ไฝๅˆๆณ•ๆ€ง
- ๅ›žๅ‚ณ้ฉ—่ญ‰้Œฏ่ชค (400 Bad Request)

Step 2: Build DimensionSpec
- ๅฐ‡ HTTP ๅƒๆ•ธ่ฝ‰็‚บ่ชžๆ„ๅŒ–็š„ DimensionSpec
- ไธๅŒ…ๅซไปปไฝ• DB ๆฌ„ไฝๅ็จฑ
- ็ฏ„ไพ‹: { dimensions: ['channel', 'date'], timeGrain: 'day' }

Step 3: Resolve AggregationSpec
- ๅพž AggregationRegistry ๅ–ๅพ—ๅฐๆ‡‰็š„ Aggregation
- ๅŒ…ๅซ้œ€่ฆ่จˆ็ฎ—็š„ MetricContracts
- ๅฎš็พฉ compute ้‚่ผฏ๏ผˆ็ด”ๅ‡ฝๆ•ธ๏ผ‰

Step 4: Build QueryPlan
- QueryBuilder ๅฐ‡ DimensionSpec ่ฝ‰็‚บ LogicalQuery
- LogicalQuery ้€้Ž DB Dialect ่ฝ‰็‚บๅฏฆ้š› SQL
- ้€™ๆ˜ฏๅ”ฏไธ€็Ÿฅ้“ DB schema ็š„ๅœฐๆ–น

Step 5: Execute Query
- Infrastructure Layer ๅŸท่กŒ SQL
- ๅ›žๅ‚ณๅŽŸๅง‹ DB rows
- ่™•็†้€ฃๆŽฅๆฑ ใ€้Œฏ่ชค้‡่ฉฆ

Step 6: Aggregate Result
- ไฝฟ็”จ AggregationSpec ็š„ compute ๅ‡ฝๆ•ธ
- ่จˆ็ฎ— MetricContract ๅฎš็พฉ็š„ๆ‰€ๆœ‰ๆŒ‡ๆจ™
- ่ผธๅ‡บๆจ™ๆบ–ๅŒ–็š„ aggregated data

Step 7: Format Visualization
- ๆ นๆ“š output format (chart/table/pivot) ้‡็ต„่ณ‡ๆ–™
- ไธๅšไปปไฝ•ๆ•ธๅ€ผ่จˆ็ฎ—
- ็ฏ„ไพ‹: ๅฐ‡ flat array ่ฝ‰็‚บ nested hierarchy

Step 8: Return Response
- ๅŒ…่ฃ็‚บ HTTP response
- ๅŠ ไธŠ metadata (total, page, etc.)
- ๅ›žๅ‚ณ 200 OK


Layer Responsibilities

โœ… Endpoint Layer

่ฉฒๅš็š„ไบ‹
- โœ… Validate HTTP request
- โœ… Parse query parameters
- โœ… Build DimensionSpec from request
- โœ… Call Service methods
- โœ… Apply formatter
- โœ… Return HTTP response with status codes
- โœ… Handle endpoint-level errors (400, 404, 500)

ไธ่ฉฒๅš็š„ไบ‹
- โŒ Business logic computation
- โŒ SQL query generation
- โŒ Direct DB access
- โŒ Data aggregation logic
- โŒ Metric calculation
- โŒ Join or filter logic

Checkpoint Questions
- ้€™ๅ€‹ endpoint handler ๆœ‰่ถ…้Ž 50 ่กŒๅ—Ž๏ผŸ๏ผˆๅฏ่ƒฝๅŒ…ๅซๅคชๅคš้‚่ผฏ๏ผ‰
- ๆœ‰็œ‹ๅˆฐ SQL ๅญ—ไธฒๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ Infrastructure๏ผ‰
- ๆœ‰ for-loop ่จˆ็ฎ—ๆ•ธๅ€ผๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ Service/Domain๏ผ‰


โœ… Application Service Layer

่ฉฒๅš็š„ไบ‹
- โœ… Orchestrate DimensionSpec + AggregationSpec
- โœ… Call QueryBuilder to build LogicalQuery
- โœ… Call Repository to execute query
- โœ… Aggregate raw results using AggregationSpec
- โœ… Coordinate multiple domain operations
- โœ… Transaction management (if needed)

ไธ่ฉฒๅš็š„ไบ‹
- โŒ HTTP concerns (status codes, headers)
- โŒ SQL generation (delegate to QueryBuilder)
- โŒ Direct DB connection management
- โŒ Request validation (done in Endpoint)
- โŒ Visualization formatting (done in Formatter)

Checkpoint Questions
- Service ๆ–นๆณ•ๆœ‰่™•็† HTTP status code ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ Endpoint๏ผ‰
- Service ็›ดๆŽฅไฝฟ็”จ DB client ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒ้€้Ž Repository๏ผ‰
- Service ๅŒ…ๅซ SQL template strings ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ QueryBuilder๏ผ‰


โœ… Domain Layer

่ฉฒๅš็š„ไบ‹
- โœ… Define DimensionSpec (semantic dimensions)
- โœ… Define AggregationSpec (metric contracts + compute logic)
- โœ… Define MetricContract (metric definitions)
- โœ… Define business rules (pure functions)
- โœ… Define interfaces for repositories
- โœ… Domain validation logic

ไธ่ฉฒๅš็š„ไบ‹
- โŒ Know about DB schema (table names, column names)
- โŒ SQL query strings
- โŒ Join conditions
- โŒ DB-specific data types
- โŒ HTTP request/response structures
- โŒ Visualization formats

Checkpoint Questions
- DimensionSpec ๅŒ…ๅซ DB table ๆˆ– column ๅ็จฑๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๆ˜ฏ่ชžๆ„ๅŒ–ๅ็จฑ๏ผ‰
- AggregationSpec ็š„ compute ๅ‡ฝๆ•ธๆœ‰ SQL ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๆ˜ฏ็ด”่จˆ็ฎ—๏ผ‰
- Domain model ๆœ‰ import DB client ๅ—Ž๏ผŸ๏ผˆ็ต•ๅฐ็ฆๆญข๏ผ‰

Critical Rule: Semantic Naming

// โŒ BAD: DB schema leakage
interface DimensionSpec {
  groupBy: ['user_channels.channel_name', 'DATE(created_at)']
}

// โœ… GOOD: Semantic naming
interface DimensionSpec {
  dimensions: ['channel', 'date'],
  timeGrain: 'day'
}

โœ… Infrastructure Layer

่ฉฒๅš็š„ไบ‹
- โœ… Implement QueryBuilder (Semantic โ†’ SQL)
- โœ… Implement DB Dialect (LogicalQuery โ†’ SQL)
- โœ… DB connection management
- โœ… Execute SQL queries
- โœ… Map DB rows to domain objects
- โœ… Handle DB-specific errors

ไธ่ฉฒๅš็š„ไบ‹
- โŒ Business logic (revenue calculation, conversion rate)
- โŒ Aggregation logic (should use AggregationSpec)
- โŒ Visualization transformation
- โŒ Request validation
- โŒ Define business rules

Checkpoint Questions
- QueryBuilder ๅŒ…ๅซ revenue ่จˆ็ฎ—้‚่ผฏๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ AggregationSpec๏ผ‰
- Repository ๅš่ณ‡ๆ–™่šๅˆ้‹็ฎ—ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅ›žๅ‚ณ raw rows๏ผ‰
- Infrastructure ๅฎš็พฉ business metrics ๅ—Ž๏ผŸ๏ผˆๆ‡‰่ฉฒๅœจ Domain๏ผ‰


Development Workflows

Workflow 1: Adding a New Endpoint

ๆชขๆŸฅๆธ…ๅ–ฎ
- [ ] Step 1: Define route and handler in Endpoint Layer
- ็ฏ„ไพ‹: router.get('/api/analytics/revenue-by-channel', handler)
- [ ] Step 2: Implement request DTO validation
- ๆชขๆŸฅ required fields: dateRange, groupBy, etc.
- [ ] Step 3: Build DimensionSpec from request
typescript const dimensionSpec: DimensionSpec = { dimensions: req.query.groupBy.split(','), timeGrain: req.query.timeGrain || 'day', dateRange: parseDateRange(req.query.dateRange) };
- [ ] Step 4: Resolve or create AggregationSpec
- ๅพž AggregationRegistry.get('revenue-by-channel') ๅ–ๅพ—
- ๅฆ‚ๆžœไธๅญ˜ๅœจ๏ผŒๅ…ˆ่ตฐ Workflow 2 ๆ–ฐๅขž Aggregation
- [ ] Step 5: Call Service with Specs
typescript const result = await analyticsService.aggregate(dimensionSpec, aggregationSpec);
- [ ] Step 6: Apply formatter (if needed)
typescript const formatted = chartFormatter.format(result, 'bar-chart');
- [ ] Step 7: Return HTTP response
typescript res.status(200).json({ data: formatted, metadata: { total: result.length } });
- [ ] Step 8: Add integration test
- ๆธฌ่ฉฆๅฎŒๆ•ด request โ†’ response flow
- ้ฉ—่ญ‰ response schema

ๅƒ่€ƒ็ฏ„ไพ‹: assets/templates/standard-endpoint.ts


Workflow 2: Adding a New Aggregation

ๆชขๆŸฅๆธ…ๅ–ฎ
- [ ] Step 1: Define AggregationSpec
typescript const revenueByChannelAgg: AggregationSpec = { name: 'revenue-by-channel', metrics: [/* MetricContracts */], compute: (rows) => { /* pure function */ } };
- [ ] Step 2: Define required MetricContracts
typescript const totalRevenueMetric: MetricContract = { name: 'total_revenue', type: 'currency', aggregation: 'sum', semanticField: 'transaction_amount' // NOT DB column name };
- [ ] Step 3: Implement compute formula (pure function)
- ่ผธๅ…ฅ: raw DB rows
- ่ผธๅ‡บ: aggregated metrics
- ็ฆๆญข: SQL, DB access, side effects
- [ ] Step 4: Register in AggregationRegistry
typescript AggregationRegistry.register(revenueByChannelAgg);
- [ ] Step 5: Test with multiple DimensionSpecs
- ๆธฌ่ฉฆไธๅŒ groupBy ็ต„ๅˆ
- ๆธฌ่ฉฆไธๅŒ time grains
- ็ขบไฟ compute ้‚่ผฏ้€š็”จ
- [ ] Step 6: Add unit tests
- ๆธฌ่ฉฆ compute ๅ‡ฝๆ•ธ็š„้‚Š็•Œๆขไปถ
- Mock raw rows, ้ฉ—่ญ‰่ผธๅ‡บ

ๅƒ่€ƒ็ฏ„ไพ‹: assets/examples/aggregation-spec.ts

Anti-Pattern ่ญฆๅ‘Š: ๅƒ่€ƒ assets/anti-patterns/sql-in-aggregation.ts


Workflow 3: Adding/Modifying Dimensions

ๆชขๆŸฅๆธ…ๅ–ฎ
- [ ] Step 1: Update DimensionSpec definition
typescript // ๆ–ฐๅขž 'product_category' dimension type SupportedDimension = 'channel' | 'date' | 'product_category';
- [ ] Step 2: Update QueryBuilder dimension mapping
typescript // In QueryBuilder const dimensionMapping = { 'channel': 'user_channels.channel_name', 'date': 'DATE(orders.created_at)', 'product_category': 'products.category' // New mapping };
- [ ] Step 3: Update DB Dialect if needed
- ๅฆ‚ๆžœๆถ‰ๅŠๆ–ฐ็š„ JOIN ๆˆ–่ค‡้›œ่ฝ‰ๆ›
- ็ฏ„ไพ‹: dimension ้œ€่ฆ window function
- [ ] Step 4: Test all existing Aggregations
- ็ขบไฟ new dimension ไธๆœƒ็ ดๅฃž็พๆœ‰ aggregations
- ๅŸท่กŒ regression tests
- [ ] Step 5: Update integration tests
- ๆธฌ่ฉฆๆ–ฐ dimension ็š„ groupBy ็ต„ๅˆ
- ๆธฌ่ฉฆ dimension + ๅ„็จฎ timeGrain

ๅƒ่€ƒ็ฏ„ไพ‹: assets/examples/dimension-spec.ts

Anti-Pattern ่ญฆๅ‘Š: ๅƒ่€ƒ assets/anti-patterns/db-fields-in-dimension.ts


Workflow 4: Adding/Modifying Output Formats

ๆชขๆŸฅๆธ…ๅ–ฎ
- [ ] Step 1: Define or update IVisualizationFormatter
typescript interface IChartFormatter { format(data: AggregatedData, chartType: string): ChartConfig; }
- [ ] Step 2: Implement format transformation
- ่ผธๅ…ฅ: aggregated data (ๅทฒ่จˆ็ฎ—ๅฎŒๆˆ็š„ metrics)
- ่ผธๅ‡บ: visualization-specific structure
- ็ฆๆญข: ้‡ๆ–ฐ่จˆ็ฎ—ๆ•ธๅ€ผใ€filteringใ€aggregation
- [ ] Step 3: Ensure no re-computation
```typescript
// โœ… GOOD: Reorganize only
format(data) {
return data.map(row => ({ x: row.date, y: row.revenue }));
}

// โŒ BAD: Re-calculating
format(data) {
const total = data.reduce((sum, row) => sum + row.amount, 0); // NO!
return { total, items: data };
}
```
- [ ] Step 4: Test with multiple Aggregations
- ็ขบไฟ formatter ้€š็”จ๏ผŒไธ็ถๅฎš็‰นๅฎš aggregation
- ๆธฌ่ฉฆ edge cases (empty data, single row, etc.)
- [ ] Step 5: Update response schema
- ๆ›ดๆ–ฐ API documentation
- ๆ›ดๆ–ฐ TypeScript types

ๅƒ่€ƒ็ฏ„ไพ‹: assets/examples/logical-query.ts

Anti-Pattern ่ญฆๅ‘Š: ๅƒ่€ƒ assets/anti-patterns/formatter-computation.ts


Architecture Anti-Patterns

๐Ÿšจ Anti-Pattern 1: SQL in Aggregation

ๅ•้กŒๆ่ฟฐ
AggregationSpec ็š„ compute ๅ‡ฝๆ•ธๅŒ…ๅซ SQL query ๆˆ– DB-specific ้‚่ผฏใ€‚

็‚บไฝ•ๆœ‰ๅฎณ
- ้•ๅไพ่ณดๅ่ฝ‰ๅŽŸๅ‰‡
- Aggregation ็„กๆณ•็จ็ซ‹ๆธฌ่ฉฆ
- ็„กๆณ•ๆ›ฟๆ› DB ๅฏฆไฝœ
- ็ ดๅฃž Domain Layer ็š„็ด”็ฒนๆ€ง

ๆญฃ็ขบๅšๆณ•
- Aggregation compute ๆŽฅๆ”ถ raw rows๏ผŒๅš็ด”่จˆ็ฎ—
- SQL ็”ฑ QueryBuilder ๆ นๆ“š MetricContract ็”Ÿๆˆ
- Aggregation ไธ็Ÿฅ้“่ณ‡ๆ–™ๅพžๅ“ชไพ†

็ฏ„ไพ‹: ๅƒ่€ƒ assets/anti-patterns/sql-in-aggregation.ts


๐Ÿšจ Anti-Pattern 2: DB Schema in DimensionSpec

ๅ•้กŒๆ่ฟฐ
DimensionSpec ๅŒ…ๅซ DB table names, column names, ๆˆ– JOIN conditionsใ€‚

็‚บไฝ•ๆœ‰ๅฎณ
- Domain Layer ่€ฆๅˆ Infrastructure
- ไฟฎๆ”น DB schema ้œ€่ฆๆ”น Domain code
- ็„กๆณ•ๆŠฝๆ› data source
- ่ชžๆ„ไธๆธ…ๆ™ฐ

ๆญฃ็ขบๅšๆณ•
- DimensionSpec ไฝฟ็”จ่ชžๆ„ๅŒ–ๅ็จฑ ('channel', 'date')
- QueryBuilder ่ฒ ่ฒฌ semantic โ†’ physical mapping
- DB schema ่ฎŠๆ›ดๅชๅฝฑ้Ÿฟ Infrastructure Layer

็ฏ„ไพ‹: ๅƒ่€ƒ assets/anti-patterns/db-fields-in-dimension.ts


๐Ÿšจ Anti-Pattern 3: Computation in Formatter

ๅ•้กŒๆ่ฟฐ
Formatter ้‡ๆ–ฐ่จˆ็ฎ— metricsใ€ๅš filteringใ€ๆˆ–ๅŸท่กŒ aggregationใ€‚

็‚บไฝ•ๆœ‰ๅฎณ
- Duplication of logic
- Formatter ๆ‡‰่ฉฒๆ˜ฏ view layer๏ผŒไธ่ฉฒๆœ‰ business logic
- ้›ฃไปฅๆธฌ่ฉฆๅ’Œ็ถญ่ญท
- ๅฏ่ƒฝ่ˆ‡ Aggregation ่จˆ็ฎ—ไธไธ€่‡ด

ๆญฃ็ขบๅšๆณ•
- Formatter ๅชๅš่ณ‡ๆ–™้‡็ต„ๅ’Œๆ ผๅผ่ฝ‰ๆ›
- ๆ‰€ๆœ‰่จˆ็ฎ—ๅœจ Aggregation Layer ๅฎŒๆˆ
- Formatter ๆ˜ฏ stateless, pure function

็ฏ„ไพ‹: ๅƒ่€ƒ assets/anti-patterns/formatter-computation.ts


๐Ÿšจ Anti-Pattern 4: Divergent Endpoint Flow

ๅ•้กŒๆ่ฟฐ
Endpoint ไธ้ตๅพชๆจ™ๆบ– 8-step pipeline๏ผŒ็›ดๆŽฅๅ‘ผๅซ Repository ๆˆ–ๅŒ…ๅซ SQLใ€‚

็‚บไฝ•ๆœ‰ๅฎณ
- ๆžถๆง‹ไธไธ€่‡ด๏ผŒ้›ฃไปฅ็ถญ่ญท
- ็นž้Ž Domain Layer ็š„ business rules
- ็„กๆณ• reuse Aggregation logic
- Code duplication

ๆญฃ็ขบๅšๆณ•
- ๆ‰€ๆœ‰ endpoint ้ตๅพช็›ธๅŒ pipeline
- ้€้Ž DimensionSpec + AggregationSpec ่กจ้”้œ€ๆฑ‚
- ่ฎ“ Service Layer ๅ”่ชฟๆต็จ‹

็ฏ„ไพ‹: ๅƒ่€ƒ assets/anti-patterns/divergent-endpoint.ts


Quick Reference

ๆ ธๅฟƒๆŠฝ่ฑกๅฎš็พฉ

DimensionSpec: ่ชžๆ„ๅŒ–็š„็ถญๅบฆๅฎš็พฉ๏ผŒไธ็Ÿฅ้“ DB schema

interface DimensionSpec {
  dimensions: string[];      // e.g., ['channel', 'date']
  timeGrain?: 'hour' | 'day' | 'week' | 'month';
  dateRange?: { start: Date; end: Date };
}

AggregationSpec: Metric contracts + ่จˆ็ฎ—้‚่ผฏ

interface AggregationSpec {
  name: string;
  metrics: MetricContract[];
  compute: (rows: any[]) => AggregatedData;
}

MetricContract: ๅ–ฎไธ€ๆŒ‡ๆจ™็š„ๅฎš็พฉ

interface MetricContract {
  name: string;
  type: 'number' | 'currency' | 'percentage';
  aggregation: 'sum' | 'avg' | 'count' | 'min' | 'max';
  semanticField: string;  // Semantic name, NOT DB column
}

LogicalQuery: ไธญ้–“ๅฑค query representation

interface LogicalQuery {
  select: MetricContract[];
  groupBy: string[];  // Semantic dimension names
  where?: FilterCondition[];
  orderBy?: OrderByClause[];
}

ไพ่ณดๆ–นๅ‘ๅœ–

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Endpoint Layer                       โ”‚
โ”‚                (HTTP Request/Response)                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Application Service Layer                  โ”‚
โ”‚         (Orchestration, DimensionSpec,                  โ”‚
โ”‚               AggregationSpec)                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  Domain Layer                           โ”‚
โ”‚        (Business Rules, Contracts, Specs)               โ”‚
โ”‚             [No DB knowledge]                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚             Infrastructure Layer                        โ”‚
โ”‚     (QueryBuilder, DB Dialect, Repository)              โ”‚
โ”‚      [Only layer that knows DB schema]                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ไพ่ณด่ฆๅ‰‡
- Endpoint โ†’ Service โ†’ Domain โ†’ Infrastructure (ๅ–ฎๅ‘)
- Domain ๅฎš็พฉ interface๏ผŒInfrastructure ๅฏฆไฝœ
- Infrastructure ไธ่ƒฝ่ขซ Domain import

ๅธธ็”จๆชขๆŸฅ้ …็›ฎ

Before committing code, check:
- [ ] ๆ‰€ๆœ‰ endpoint ้ตๅพช 8-step pipeline
- [ ] DimensionSpec ็„ก DB column names
- [ ] AggregationSpec compute ็„ก SQL
- [ ] Formatter ็„ก้‡ๆ–ฐ่จˆ็ฎ— metrics
- [ ] Domain Layer ็„ก import DB client
- [ ] ๆ‰€ๆœ‰ semantic names ๆœ‰ๅฐๆ‡‰็š„ QueryBuilder mapping

When reviewing PRs, look for:
- [ ] SQL strings in Domain or Service Layer
- [ ] DB schema knowledge in DimensionSpec
- [ ] Business logic in Endpoint handlers
- [ ] Aggregation logic in Formatters
- [ ] Direct DB access in Service Layer


Detailed References

้œ€่ฆๆ›ด่ฉณ็ดฐ็š„่ณ‡่จŠๆ™‚๏ผŒๅƒ่€ƒไปฅไธ‹ๆ–‡ไปถ:

  • Domain Models ่ฉณ่งฃ: references/domain-models.md
  • DimensionSpec ๅฎŒๆ•ดๅฎš็พฉๅ’Œไฝฟ็”จ็ฏ„ไพ‹
  • AggregationSpec ่จญ่จˆๅŽŸๅ‰‡
  • MetricContract ้กžๅž‹็ณป็ตฑ
  • LogicalQuery ็ตๆง‹่ชชๆ˜Ž

  • Query Builder ๆŒ‡ๅ—: references/query-builder-guide.md

  • Semantic โ†’ Physical ่ฝ‰ๆ›ๆฉŸๅˆถ
  • DB Dialect ๅฏฆไฝœ็ฏ„ไพ‹
  • SQL ๆง‹ๅปบๆœ€ไฝณๅฏฆ่ธ
  • JOIN ๅ’Œ subquery ่™•็†

  • Formatter ๆŒ‡ๅ—: references/formatter-guide.md

  • Formatter ่ท่ฒฌ้‚Š็•Œ
  • Chart/Table/Pivot ๆ ผๅผ่ฝ‰ๆ›
  • ้€š็”จๆ ผๅผๅฎš็พฉ
  • Edge case ่™•็†

Code Templates

ๅฎŒๆ•ด็จ‹ๅผ็ขผ็ฏ„ไพ‹:

  • Standard Endpoint: assets/templates/standard-endpoint.ts
  • DimensionSpec Example: assets/examples/dimension-spec.ts
  • AggregationSpec Example: assets/examples/aggregation-spec.ts
  • MetricContract Example: assets/examples/metric-contract.ts
  • LogicalQuery Example: assets/examples/logical-query.ts

ๅ้ขๆ•™ๆ (่ซ‹ๅ‹ฟๆจกไปฟ):
- assets/anti-patterns/sql-in-aggregation.ts
- assets/anti-patterns/db-fields-in-dimension.ts
- assets/anti-patterns/formatter-computation.ts
- assets/anti-patterns/divergent-endpoint.ts


Summary

้ตๅพช้€™ๅ€‹ๆŒ‡ๅ—๏ผŒ็ขบไฟ:
1. โœ… ๆ‰€ๆœ‰ endpoint ้ตๅพชๆจ™ๆบ– 8-step pipeline
2. โœ… Domain Layer ไฟๆŒ็ด”็ฒน๏ผŒไธ็Ÿฅ้“ DB schema
3. โœ… Infrastructure Layer ้›†ไธญ่™•็† SQL ็”Ÿๆˆ
4. โœ… Aggregation ๆ˜ฏๅฏ reuse ็š„ pure functions
5. โœ… Formatter ๅชๅš view transformation

็•ถๆœ‰็–‘ๅ•ๆ™‚๏ผŒๅ•่‡ชๅทฑ:
- ้€™ๆฎต code ๆ”พๅœจๅ“ชไธ€ๅฑค?
- ๅฎƒๆœ‰้•ๅ่ฉฒๅฑค็š„่ท่ฒฌๅ—Ž?
- ๅฎƒๆœ‰ไพ่ณดไธ่ฉฒไพ่ณด็š„ๆฑ่ฅฟๅ—Ž?

้ตๅพช้€™ไบ›ๅŽŸๅ‰‡๏ผŒ็ณป็ตฑๅฐ‡ไฟๆŒ้ซ˜ๆ“ดๅ……ๆ€งๅ’Œๅฏ็ถญ่ญทๆ€งใ€‚

# README.md

Data Analysis Backend Development Skill

้€™ๆ˜ฏไธ€ๅ€‹ Claude Code skill,็”จๆ–ผๆŒ‡ๅฐŽ Agent ้ตๅพชๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏ็š„ๆžถๆง‹่จญ่จˆๅŽŸๅ‰‡ๅ’Œ้–‹็™ผๆต็จ‹ใ€‚

ๅฟซ้€Ÿ้–‹ๅง‹

5 ๅˆ†้˜ๅฎ‰่ฃ

# 1. ่ค‡่ฃฝๅˆฐ Claude Code skills ็›ฎ้Œ„
# Windows (PowerShell)
xcopy /E /I . "$env:USERPROFILE\.claude\skills\data-analysis-backend"

# macOS/Linux
cp -r . ~/.claude/skills/data-analysis-backend

# 2. ้‡ๅ•Ÿ Claude Code

# 3. ๆธฌ่ฉฆ skill
# ๅœจ Claude Code ไธญๅ•: "ๅนซๆˆ‘ๆ–ฐๅขžไธ€ๅ€‹ๆ•ธๆ“šๅˆ†ๆž endpoint"

็ฌฌไธ€ๆฌกไฝฟ็”จ

ๅฎ‰่ฃๅพŒ๏ผŒๅ˜—่ฉฆไปฅไธ‹ไปปๅ‹™ไพ†้ซ”้ฉ— skill:

  1. ๆ–ฐๅขž Endpoint
    ๅนซๆˆ‘ๅฏฆไฝœไธ€ๅ€‹ๆŒ‰ๆธ ้“ๅˆ†ๆžๆ”ถๅ…ฅ็š„ endpoint
    Agent ๆœƒ้ตๅพช 8-step pipeline ๅปบ็ซ‹ๅฎŒๆ•ด็š„ endpoint

  2. ๆ–ฐๅขž Aggregation
    ๅนซๆˆ‘ๆ–ฐๅขžไธ€ๅ€‹่ฝ‰ๆ›็އๅˆ†ๆž็š„ aggregation
    Agent ๆœƒๅปบ็ซ‹ AggregationSpec ๅ’Œ MetricContracts

  3. Code Review
    ่ซ‹ๆชขๆŸฅ้€™ๆฎต code ๆ˜ฏๅฆ็ฌฆๅˆๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏ็š„ๆžถๆง‹ๅŽŸๅ‰‡ [่ฒผไธŠไฝ ็š„ code]
    Agent ๆœƒๆชขๆŸฅๆ˜ฏๅฆ้ตๅพชๅฑค็ดš่ท่ฒฌๅ’Œ้ฟๅ… anti-patterns

็›ฎๆจ™

  • ๆŒ‡ๅฐŽ้–‹็™ผๆต็จ‹: ๆ˜Ž็ขบๅ‘Š่จด Agent ๅœจๆ–ฐๅขž endpointใ€aggregationใ€dimensionใ€formatter ๆ™‚้œ€่ฆๅšๅ“ชไบ›ๆ”นๅ‹•
  • ็ถญ่ญทๆžถๆง‹ไธ€่‡ดๆ€ง: ็ขบไฟๆ‰€ๆœ‰ๅฏฆไฝœ้ตๅพชไธ‰ๅฑคๆžถๆง‹ๅ’Œไพ่ณดๅ่ฝ‰ๅŽŸๅ‰‡
  • ้˜ฒๆญขๅธธ่ฆ‹้Œฏ่ชค: ๆ˜Ž็ขบๆจ™็คบๆฏไธ€ๅฑค่ฉฒๅ‡บ็พๅ’Œไธ่ฉฒๅ‡บ็พ็š„้‚่ผฏ
  • ๆไพ›ๅฎŒๆ•ดๅƒ่€ƒ: ๅŒ…ๅซ่ณ‡ๆ–™ๆต pipelineใ€ๅฑค็ดšไพ่ณด้—œไฟ‚ๅ’Œ็จ‹ๅผ็ขผ็ฏ„ไพ‹

Skill ็ตๆง‹

data_analysis_skill/
โ”œโ”€โ”€ SKILL.md                          # ไธปๆŒ‡ๅผ•ๆ–‡ไปถ (ๆ ธๅฟƒๅ…งๅฎน)
โ”œโ”€โ”€ README.md                         # ๆœฌๆ–‡ไปถ
โ”‚
โ”œโ”€โ”€ references/                       # ่ฉณ็ดฐๅƒ่€ƒๆ–‡ไปถ
โ”‚   โ”œโ”€โ”€ domain-models.md              # Domain Model ่ฉณ่งฃ
โ”‚   โ”œโ”€โ”€ query-builder-guide.md        # Query Builder ๆžถๆง‹ๆŒ‡ๅ—
โ”‚   โ””โ”€โ”€ formatter-guide.md            # Formatter ๆŒ‡ๅ—
โ”‚
โ””โ”€โ”€ assets/                           # ็จ‹ๅผ็ขผ็ฏ„ไพ‹ๅ’Œๆจกๆฟ
    โ”œโ”€โ”€ templates/
    โ”‚   โ””โ”€โ”€ standard-endpoint.ts      # ๆจ™ๆบ– endpoint ๅฎŒๆ•ด็ฏ„ไพ‹
    โ”‚
    โ”œโ”€โ”€ examples/
    โ”‚   โ”œโ”€โ”€ dimension-spec.ts         # DimensionSpec ็ฏ„ไพ‹
    โ”‚   โ”œโ”€โ”€ aggregation-spec.ts       # AggregationSpec ็ฏ„ไพ‹
    โ”‚   โ”œโ”€โ”€ metric-contract.ts        # MetricContract ็ฏ„ไพ‹
    โ”‚   โ””โ”€โ”€ logical-query.ts          # LogicalQuery ็ฏ„ไพ‹
    โ”‚
    โ””โ”€โ”€ anti-patterns/                # ๅ้ขๆ•™ๆ (ๅธธ่ฆ‹้Œฏ่ชค)
        โ”œโ”€โ”€ sql-in-aggregation.ts     # โŒ Aggregation ๅŒ…ๅซ SQL
        โ”œโ”€โ”€ db-fields-in-dimension.ts # โŒ Dimension ๆททๅ…ฅ DB ๆฌ„ไฝ
        โ”œโ”€โ”€ formatter-computation.ts  # โŒ Formatter ้‡ๆ–ฐ่จˆ็ฎ—ๆ•ธๅ€ผ
        โ””โ”€โ”€ divergent-endpoint.ts     # โŒ Endpoint ๆต็จ‹ๅ้›ขๆจ™ๆบ–

ๆ ธๅฟƒๆฆ‚ๅฟต

ๆจ™ๆบ– 8-Step Pipeline

ๆ‰€ๆœ‰ๆ•ธๆ“šๅˆ†ๆž endpoint ๅฟ…้ ˆ้ตๅพชๆญคๆจ™ๆบ–ๆต็จ‹:

  1. Validate Request (Endpoint Layer)
  2. Build DimensionSpec (Endpoint โ†’ Service)
  3. Resolve AggregationSpec (Service)
  4. Build QueryPlan (Service โ†’ Infrastructure)
  5. Execute Query (Infrastructure)
  6. Aggregate Result (Service)
  7. Format Visualization (Service โ†’ Endpoint)
  8. Return Response (Endpoint)

ไธ‰ๅฑคๆžถๆง‹

Endpoint Layer (HTTP)
    โ†“
Application Service Layer (Orchestration)
    โ†“
Domain Layer (Business Logic)
    โ†“
Infrastructure Layer (DB/SQL)

ๆ ธๅฟƒๆŠฝ่ฑก

  • DimensionSpec: ่ชžๆ„ๅŒ–็š„็ถญๅบฆๅฎš็พฉ (ไธ็Ÿฅ้“ DB schema)
  • AggregationSpec: Metric contracts + ่จˆ็ฎ—้‚่ผฏ (pure function)
  • MetricContract: ๅ–ฎไธ€ๆŒ‡ๆจ™็š„ๅฎš็พฉ (name, type, aggregation)
  • LogicalQuery: ไธญ้–“ๅฑค query representation (้€ฃๆŽฅ semantic ๅ’Œ physical)

ๅฎ‰่ฃๆŒ‡ๅ—

ๆ–นๆณ• 1: ็›ดๆŽฅ่ค‡่ฃฝๅˆฐ Skills ็›ฎ้Œ„ (ๆŽจ่–ฆ)

้€™ๆ˜ฏๆœ€็ฐกๅ–ฎ็›ดๆŽฅ็š„ๆ–นๆณ•:

  1. ๆ‰พๅˆฐ Claude Code ็š„ skills ็›ฎ้Œ„
    ```bash
    # Windows
    %USERPROFILE%.claude\skills\

# macOS/Linux
~/.claude/skills/
```

  1. ่ค‡่ฃฝๆ•ดๅ€‹ skill ็›ฎ้Œ„
    ```bash
    # Windows (ๅœจ PowerShell ๆˆ– CMD)
    xcopy /E /I C:\Users\andyc\Projects\data_analysis_skill %USERPROFILE%.claude\skills\data-analysis-backend

# macOS/Linux
cp -r /path/to/data_analysis_skill ~/.claude/skills/data-analysis-backend
```

  1. ้ฉ—่ญ‰ๅฎ‰่ฃ
  2. ้‡ๅ•Ÿ Claude Code (ๅฆ‚ๆžœๆญฃๅœจ้‹่กŒ)
  3. ๆชขๆŸฅ skills ็›ฎ้Œ„ไธญๆ˜ฏๅฆๆœ‰ data-analysis-backend ่ณ‡ๆ–™ๅคพ
  4. ็ขบ่ช SKILL.md ๆช”ๆกˆๅญ˜ๅœจไธ”ๆœ‰ๆญฃ็ขบ็š„ YAML frontmatter

  5. ๆธฌ่ฉฆ skill

  6. ้–‹ๅ•Ÿ Claude Code
  7. ่ฉขๅ•: "ๅนซๆˆ‘ๆ–ฐๅขžไธ€ๅ€‹ๆ•ธๆ“šๅˆ†ๆž endpoint"
  8. Agent ๆ‡‰่ฉฒๆœƒ่‡ชๅ‹•ไฝฟ็”จๆญค skill ไธฆ้ตๅพช 8-step pipeline

ๅฆ‚ๆžœไฝ ๆƒณ่ฆๆŒ็บŒๆ›ดๆ–ฐ skill ไธฆ็ซ‹ๅณ็œ‹ๅˆฐๆ•ˆๆžœ:

# Windows (้œ€่ฆ็ฎก็†ๅ“กๆฌŠ้™)
mklink /D "%USERPROFILE%\.claude\skills\data-analysis-backend" "C:\Users\andyc\Projects\data_analysis_skill"

# macOS/Linux
ln -s /path/to/data_analysis_skill ~/.claude/skills/data-analysis-backend

้€™ๆจฃไฟฎๆ”นๅŽŸๅง‹ๆช”ๆกˆๅฐฑๆœƒ็ซ‹ๅณๅๆ˜ ๅˆฐ Claude Code ไธญใ€‚

ๆ–นๆณ• 3: ๆ‰“ๅŒ…็‚บ .skill ๆช”ๆกˆ (้€ฒ้šŽ)

ๅฆ‚ๆžœไฝ ๆœ‰ Claude Code ็š„ packaging tools:

  1. ๆ‰“ๅŒ… skill
    bash # ๅ‡่จญๆœ‰ package_skill.py ๅทฅๅ…ท python package_skill.py data_analysis_skill

  2. ๅฎ‰่ฃๆ‰“ๅŒ…ๅพŒ็š„ .skill ๆช”ๆกˆ
    bash # ๅฐ‡ .skill ๆช”ๆกˆ่ค‡่ฃฝๅˆฐ skills ็›ฎ้Œ„ cp data-analysis-backend.skill ~/.claude/skills/

  3. ้ฉ—่ญ‰
    bash # ๅ‡่จญๆœ‰ quick_validate.py ๅทฅๅ…ท python quick_validate.py ~/.claude/skills/data-analysis-backend.skill

ๅฎ‰่ฃๅพŒ้ฉ—่ญ‰

  1. ๆชขๆŸฅๆช”ๆกˆ็ตๆง‹
    bash # ็ขบ่ชไปฅไธ‹ๆช”ๆกˆๅญ˜ๅœจ ~/.claude/skills/data-analysis-backend/ โ”œโ”€โ”€ SKILL.md # ๅฟ…้ ˆๅญ˜ๅœจ โ”œโ”€โ”€ README.md โ”œโ”€โ”€ references/ โ”‚ โ”œโ”€โ”€ domain-models.md โ”‚ โ”œโ”€โ”€ query-builder-guide.md โ”‚ โ””โ”€โ”€ formatter-guide.md โ””โ”€โ”€ assets/ โ”œโ”€โ”€ templates/ โ”œโ”€โ”€ examples/ โ””โ”€โ”€ anti-patterns/

  2. ๆชขๆŸฅ YAML Frontmatter

  3. ๆ‰“้–‹ SKILL.md
  4. ็ขบ่ช้–‹้ ญๆœ‰ๆญฃ็ขบ็š„ YAML frontmatter:
    ```yaml

name: data-analysis-backend
description: "Use when implementing or modifying data analysis backend features..."


```

  1. ้‡ๅ•Ÿ Claude Code
  2. ๅฎŒๅ…จ้—œ้–‰ Claude Code
  3. ้‡ๆ–ฐๅ•Ÿๅ‹•
  4. Skills ๆœƒๅœจๅ•Ÿๅ‹•ๆ™‚่‡ชๅ‹•่ผ‰ๅ…ฅ

ๅธ่ผ‰ Skill

ๅฆ‚ๆžœ้œ€่ฆ็งป้™คๆญค skill:

# Windows
rmdir /S /Q "%USERPROFILE%\.claude\skills\data-analysis-backend"

# macOS/Linux
rm -rf ~/.claude/skills/data-analysis-backend

ไฝฟ็”จๆ–นๅผ

่งธ็™ผ Skill

็•ถ Agent ้œ€่ฆๅฏฆไฝœๆˆ–ไฟฎๆ”นๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏๅŠŸ่ƒฝๆ™‚,ๆœƒ่‡ชๅ‹•ไฝฟ็”จๆญค skill,ๅŒ…ๆ‹ฌ:

  • ๆ–ฐๅขž endpoint
  • ๆ–ฐๅขž aggregation
  • ๆ–ฐๅขž/ไฟฎๆ”น dimension
  • ๆ–ฐๅขž/ไฟฎๆ”น formatter

ๆ‰‹ๅ‹•่งธ็™ผ (ๅฏ้ธ)

ไฝ ไนŸๅฏไปฅๆ˜Ž็ขบ่ฆๆฑ‚ไฝฟ็”จๆญค skill:

ไฝฟ็”จ data-analysis-backend skill ๅนซๆˆ‘ๆ–ฐๅขžไธ€ๅ€‹ๆ”ถๅ…ฅๅˆ†ๆž็š„ endpoint

้ฉ—่ญ‰ Skill ๆญฃๅœจไฝฟ็”จ

็•ถ Agent ไฝฟ็”จๆญค skill ๆ™‚,ไฝ ๆœƒ็œ‹ๅˆฐ:
- Agent ๆœƒๆๅˆฐ "8-step pipeline"
- Agent ๆœƒๅปบ็ซ‹ DimensionSpec ๅ’Œ AggregationSpec
- Agent ๆœƒๆ˜Ž็ขบๅˆ†้›ข Endpoint/Service/Domain/Infrastructure layers
- Agent ๆœƒ้ฟๅ…ๅœจ Domain Layer ไฝฟ็”จ SQL

ๆ•…้šœๆŽ’้™ค

Skill ๆฒ’ๆœ‰่ขซ่‡ชๅ‹•ไฝฟ็”จ

ๅ•้กŒ: Agent ๆฒ’ๆœ‰ไฝฟ็”จๆญค skill

่งฃๆฑบๆ–นๆณ•:
1. ๆชขๆŸฅ SKILL.md ็š„ description ๆ˜ฏๅฆๅŒ…ๅซ่งธ็™ผ้—œ้ตๅญ—:
- "data analysis backend"
- "endpoint", "aggregation", "dimension", "formatter"

  1. ๅ˜—่ฉฆๆ˜Ž็ขบๆๅˆฐ้€™ไบ›้—œ้ตๅญ—:
    ๅนซๆˆ‘ๅฏฆไฝœไธ€ๅ€‹ๆ•ธๆ“šๅˆ†ๆž็š„ endpoint (data analysis endpoint)

  2. ๆ‰‹ๅ‹•ๆŒ‡ๅฎš skill:
    ไฝฟ็”จ data-analysis-backend skill

ๆ‰พไธๅˆฐ Skills ็›ฎ้Œ„

ๅ•้กŒ: ไธ็ขบๅฎš skills ็›ฎ้Œ„ๅœจๅ“ช่ฃก

่งฃๆฑบๆ–นๆณ•:

# ๅœจ Claude Code ไธญๅŸท่กŒ
echo $HOME/.claude/skills/     # macOS/Linux
echo %USERPROFILE%\.claude\skills\   # Windows

# ๆˆ–่€…ไฝฟ็”จ Claude Code ๅ‘ฝไปค (ๅฆ‚ๆžœๆ”ฏๆด)
/skills list

YAML Frontmatter ๆ ผๅผ้Œฏ่ชค

ๅ•้กŒ: Skill ็„กๆณ•่ผ‰ๅ…ฅ,ๅฏ่ƒฝๆ˜ฏ YAML ๆ ผๅผๅ•้กŒ

่งฃๆฑบๆ–นๆณ•:
1. ็ขบ่ช SKILL.md ้–‹้ ญ็š„ YAML ๆ ผๅผ:
```yaml


name: data-analysis-backend
description: "Use when implementing..."


```

  1. ๆณจๆ„ไบ‹้ …:
  2. --- ๅฟ…้ ˆๅœจๆช”ๆกˆ็ฌฌไธ€่กŒ
  3. name ๅ’Œ description ๆ˜ฏๅฟ…้ ˆ็š„
  4. description ้œ€่ฆ็”จ้›™ๅผ•่™ŸๅŒ…่ตทไพ†
  5. YAML ็ตๆŸไนŸ้œ€่ฆ ---

Skills ็›ฎ้Œ„ๆฌŠ้™ๅ•้กŒ

ๅ•้กŒ: ็„กๆณ•่ค‡่ฃฝๆช”ๆกˆๅˆฐ skills ็›ฎ้Œ„

่งฃๆฑบๆ–นๆณ•:

# ๆชขๆŸฅๆฌŠ้™
ls -la ~/.claude/skills/    # macOS/Linux
dir %USERPROFILE%\.claude\skills\   # Windows

# ๅฆ‚ๆžœ็›ฎ้Œ„ไธๅญ˜ๅœจ,ๆ‰‹ๅ‹•ๅปบ็ซ‹
mkdir -p ~/.claude/skills/  # macOS/Linux
mkdir %USERPROFILE%\.claude\skills\  # Windows

ๅ•้กŒ: Windows ๅปบ็ซ‹ symbolic link ๅคฑๆ•—

่งฃๆฑบๆ–นๆณ•:
1. ไปฅ็ฎก็†ๅ“ก่บซไปฝๅŸท่กŒ PowerShell ๆˆ– CMD
2. ๆˆ–่€…ไฝฟ็”จๆ–นๆณ• 1 (็›ดๆŽฅ่ค‡่ฃฝ) ไปฃๆ›ฟ

ๆชขๆŸฅ Skill ๆ˜ฏๅฆๆญฃ็ขบ่ผ‰ๅ…ฅ

้ฉ—่ญ‰ๆญฅ้ฉŸ:
1. ้‡ๅ•Ÿ Claude Code
2. ๅŸท่กŒไปฅไธ‹ๆธฌ่ฉฆ:
่ซ‹ๅ‘Š่จดๆˆ‘ไฝ ๆœ‰ๅ“ชไบ›ๅฏ็”จ็š„ skills?
3. ๅฆ‚ๆžœ Agent ๆๅˆฐ "data-analysis-backend",่กจ็คบ่ผ‰ๅ…ฅๆˆๅŠŸ

ๆ›ดๆ–ฐ Skill ๅ…งๅฎน

ๅฆ‚ๆžœไฟฎๆ”นไบ† skill ๅ…งๅฎน:
1. ็›ดๆŽฅ่ค‡่ฃฝ: ้‡ๆ–ฐ่ค‡่ฃฝๆ•ดๅ€‹็›ฎ้Œ„
2. Symbolic Link: ไฟฎๆ”นๆœƒ่‡ชๅ‹•็”Ÿๆ•ˆ
3. ้‡ๅ•Ÿ Claude Code: ็ขบไฟ่ฎŠๆ›ด่ขซ่ผ‰ๅ…ฅ

ไธป่ฆๅƒ่€ƒๆ–‡ไปถ

  1. ๅฟซ้€Ÿ้–‹ๅง‹: ้–ฑ่ฎ€ SKILL.md ็š„ Overview ๅ’Œ 8-Step Pipeline
  2. ้–‹็™ผไปปๅ‹™: ๆŸฅ็œ‹ SKILL.md ็š„ Development Workflows ๅฐๆ‡‰็š„ๆชขๆŸฅๆธ…ๅ–ฎ
  3. ่ฉณ็ดฐๅฏฆไฝœ: ๅƒ่€ƒ references/ ไธ‹็š„่ฉณ็ดฐๆŒ‡ๅ—
  4. ็จ‹ๅผ็ขผ็ฏ„ไพ‹: ๆŸฅ็œ‹ assets/templates/ ๅ’Œ assets/examples/
  5. ้ฟๅ…้Œฏ่ชค: ๆชขๆŸฅ assets/anti-patterns/ ็š„ๅ้ขๆ•™ๆ

้–‹็™ผๅทฅไฝœๆต็จ‹็ฏ„ไพ‹

ๆ–ฐๅขžไธ€ๅ€‹ Endpoint

  1. ้–ฑ่ฎ€ SKILL.md โ†’ "Workflow 1: Adding a New Endpoint"
  2. ๅƒ่€ƒ assets/templates/standard-endpoint.ts ็š„ๅฎŒๆ•ด็ฏ„ไพ‹
  3. ้ตๅพช 8-step pipeline ๅฏฆไฝœ
  4. ๆชขๆŸฅ assets/anti-patterns/divergent-endpoint.ts ้ฟๅ…ๅธธ่ฆ‹้Œฏ่ชค

ๆ–ฐๅขžไธ€ๅ€‹ Aggregation

  1. ้–ฑ่ฎ€ SKILL.md โ†’ "Workflow 2: Adding a New Aggregation"
  2. ๅƒ่€ƒ assets/examples/aggregation-spec.ts ็š„็ฏ„ไพ‹
  3. ๅฎš็พฉ MetricContracts (ๅƒ่€ƒ assets/examples/metric-contract.ts)
  4. ๅฏฆไฝœ compute ๅ‡ฝๆ•ธ (pure function, ็„ก SQL)
  5. ่จปๅ†Šๅˆฐ AggregationRegistry
  6. ๆชขๆŸฅ assets/anti-patterns/sql-in-aggregation.ts ้ฟๅ… SQL ่€ฆๅˆ

ๆ–ฐๅขžไธ€ๅ€‹ Dimension

  1. ้–ฑ่ฎ€ SKILL.md โ†’ "Workflow 3: Adding/Modifying Dimensions"
  2. ๅƒ่€ƒ assets/examples/dimension-spec.ts
  3. ๆ›ดๆ–ฐ QueryBuilder ็š„ dimensionMapping (Infrastructure Layer)
  4. ๆธฌ่ฉฆๆ‰€ๆœ‰็พๆœ‰ Aggregations
  5. ๆชขๆŸฅ assets/anti-patterns/db-fields-in-dimension.ts ้ฟๅ… schema leakage

ๆ–ฐๅขžไธ€ๅ€‹ Formatter

  1. ้–ฑ่ฎ€ SKILL.md โ†’ "Workflow 4: Adding/Modifying Output Formats"
  2. ๅƒ่€ƒ references/formatter-guide.md
  3. ๅฏฆไฝœ IVisualizationFormatter interface
  4. ็ขบไฟๅชๅš่ณ‡ๆ–™้‡็ต„,ไธ้‡ๆ–ฐ่จˆ็ฎ—
  5. ๆชขๆŸฅ assets/anti-patterns/formatter-computation.ts ้ฟๅ…้‡่ค‡่จˆ็ฎ—

ๆžถๆง‹ๅŽŸๅ‰‡

โœ… ่ฉฒๅš็š„ไบ‹

Endpoint Layer
- โœ… Request validation
- โœ… Response formatting
- โœ… HTTP status codes

Service Layer
- โœ… Orchestration logic
- โœ… Spec composition
- โœ… Result aggregation

Domain Layer
- โœ… Business rules
- โœ… Semantic definitions
- โœ… Contracts (interfaces)

Infrastructure Layer
- โœ… SQL generation
- โœ… DB connections
- โœ… Query execution

โŒ ไธ่ฉฒๅš็š„ไบ‹

Endpoint Layer
- โŒ Business logic
- โŒ SQL queries
- โŒ Data transformation

Service Layer
- โŒ HTTP concerns
- โŒ SQL generation
- โŒ DB connection

Domain Layer
- โŒ DB schema knowledge
- โŒ SQL strings
- โŒ Join logic

Infrastructure Layer
- โŒ Business rules
- โŒ Aggregation logic
- โŒ Visualization logic

้—œ้ตๆชขๆŸฅ้ …็›ฎ

ๅœจ commit ๅ‰ๆชขๆŸฅ:

  • [ ] ๆ‰€ๆœ‰ endpoint ้ตๅพช 8-step pipeline
  • [ ] DimensionSpec ็„ก DB column names
  • [ ] AggregationSpec compute ็„ก SQL
  • [ ] Formatter ็„ก้‡ๆ–ฐ่จˆ็ฎ— metrics
  • [ ] Domain Layer ็„ก import DB client
  • [ ] ๆ‰€ๆœ‰ semantic names ๆœ‰ๅฐๆ‡‰็š„ QueryBuilder mapping

ๆˆๅŠŸๆจ™ๆบ–

้€™ๅ€‹ skill ๆˆๅŠŸ็š„ๆจ™ๆบ–:

  1. ๆธ…ๆ™ฐๅบฆ: Agent ่ƒฝ็ซ‹ๅณ็Ÿฅ้“ๅœจ็‰นๅฎšไปปๅ‹™ๆ™‚้œ€่ฆๅšไป€้บผ
  2. ๅฎŒๆ•ดๆ€ง: ๆถต่“‹ๆ‰€ๆœ‰้–‹็™ผๅ ดๆ™ฏ
  3. ้˜ฒ่ญทๆ€ง: ๆ˜Ž็ขบๆจ™็คบๅ„ๅฑค่ท่ฒฌ้‚Š็•Œ,้˜ฒๆญขๆžถๆง‹่…ๅŒ–
  4. ๅฏฆ็”จๆ€ง: ๆไพ›ๅฎŒๆ•ดๅฏๅŸท่กŒ็š„็จ‹ๅผ็ขผ็ฏ„ไพ‹
  5. ๅฏ็ถญ่ญทๆ€ง: ็ตๆง‹ๆธ…ๆ™ฐ,ๆ˜“ๆ–ผๅพŒ็บŒๆ“ดๅ……ๅ’Œๆ›ดๆ–ฐ

ๅธธ่ฆ‹ๅ•้กŒ (FAQ)

Q1: ้€™ๅ€‹ skill ้ฉๅˆไป€้บผ้กžๅž‹็š„ๅฐˆๆกˆ?

A: ้ฉๅˆไปปไฝ•้œ€่ฆๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏ็š„ๅฐˆๆกˆ,็‰นๅˆฅๆ˜ฏ:
- BI/Analytics ๅนณๅฐ
- Dashboard ๅพŒ็ซฏ API
- ๅ ฑ่กจ็ณป็ตฑ
- ๆ•ธๆ“šๆŸฅ่ฉขๆœๅ‹™
- ๅคš็ถญๅบฆๅˆ†ๆž็ณป็ตฑ

Q2: ้€™ๅ€‹ skill ๆœƒ่‡ชๅ‹•ๅฏซ code ๅ—Ž?

A: ไธๅฎŒๅ…จๆ˜ฏใ€‚้€™ๅ€‹ skill ๆ˜ฏๆŒ‡ๅฐŽๆ‰‹ๅ†Š,ๅฎƒๆœƒ:
- โœ… ๅ‘Š่จด Agent ่ฉฒ้ตๅพชไป€้บผๆžถๆง‹ๅŽŸๅ‰‡
- โœ… ๆไพ›ๅฎŒๆ•ด็š„ code ็ฏ„ไพ‹ไพ›ๅƒ่€ƒ
- โœ… ้˜ฒๆญข Agent ็Šฏๅธธ่ฆ‹็š„ๆžถๆง‹้Œฏ่ชค
- โœ… ็ขบไฟ Agent ้ตๅพชๆจ™ๆบ– pipeline

Agent ไป็„ถๆœƒๆ นๆ“šไฝ ็š„ๅ…ท้ซ”้œ€ๆฑ‚ๅฏซ code,ไฝ†ๆœƒ้ตๅพช้€™ๅ€‹ skill ็š„ๆŒ‡ๅผ•ใ€‚

Q3: ๆˆ‘ๅฏไปฅไฟฎๆ”น้€™ๅ€‹ skill ๅ—Ž?

A: ็•ถ็„ถๅฏไปฅ๏ผ้€™ๅ€‹ skill ๆ˜ฏ้–‹ๆบ็š„,ไฝ ๅฏไปฅ:
- ไฟฎๆ”น SKILL.md ็š„ๅ…งๅฎน
- ๆ–ฐๅขžไฝ ่‡ชๅทฑ็š„็ฏ„ไพ‹ๅˆฐ assets/examples/
- ๅŠ ๅ…ฅๆ›ดๅคš anti-patterns ๅˆฐ assets/anti-patterns/
- ่ชฟๆ•ด references/ ็š„่ฉณ็ดฐๆ–‡ไปถ

ไฟฎๆ”นๅพŒ,ๅฆ‚ๆžœไฝฟ็”จ Symbolic Link ๅฎ‰่ฃ,ๆœƒ็ซ‹ๅณ็”Ÿๆ•ˆ;ๅฆ‚ๆžœๆ˜ฏ็›ดๆŽฅ่ค‡่ฃฝ,้œ€่ฆ้‡ๆ–ฐ่ค‡่ฃฝใ€‚

Q4: ้€™ๅ€‹ skill ่ˆ‡ๅ…ถไป– skills ่ก็ชๅ—Ž?

A: ไธๆœƒใ€‚้€™ๅ€‹ skill ๅฐˆๆณจๆ–ผๆ•ธๆ“šๅˆ†ๆžๅพŒ็ซฏๆžถๆง‹,่ˆ‡ๅ…ถไป– skills (ๅฆ‚ UI/UX, testing, deployment) ๆ˜ฏไบ’่ฃœ็š„ใ€‚

Q5: ๆˆ‘็š„ๅฐˆๆกˆ็”จไธๅŒ็š„ๆžถๆง‹ๅฏไปฅ็”จ้€™ๅ€‹ skill ๅ—Ž?

A: ๅฏไปฅ,ไฝ†ๅฏ่ƒฝ้œ€่ฆ่ชฟๆ•ดใ€‚้€™ๅ€‹ skill ๅŸบๆ–ผ:
- Clean Architecture
- Three-Layer Architecture (Endpoint-Service-Domain-Infrastructure)
- Dependency Inversion Principle

ๅฆ‚ๆžœไฝ ็š„ๅฐˆๆกˆไฝฟ็”จไธๅŒๆžถๆง‹,ๅฏไปฅไฟฎๆ”น SKILL.md ็š„ๅ…งๅฎนไพ†ๅŒน้…ไฝ ็š„ๆžถๆง‹ใ€‚

Q6: Skill ๆช”ๆกˆๅพˆๅคš,Agent ๆœƒไธ€ๆฌก่ฎ€ๅฎŒๅ—Ž?

A: ไธๆœƒใ€‚Skill ่จญ่จˆๆŽก็”จๆผธ้€ฒๅผๆญ้œฒ:
- Agent ๆœƒๅ…ˆ่ฎ€ SKILL.md (ไธปๆŒ‡ๅผ•)
- ้œ€่ฆ่ฉณ็ดฐ่ณ‡่จŠๆ™‚ๆ‰่ฎ€ references/
- ้œ€่ฆ็ฏ„ไพ‹ๆ™‚ๆ‰่ฎ€ assets/

้€™ๆจฃๅฏไปฅ้ฟๅ… context ้Ž่ผ‰ใ€‚

Q7: ๅฆ‚ไฝ•็Ÿฅ้“ Agent ๆœ‰ๅœจไฝฟ็”จ้€™ๅ€‹ skill?

A: ่ง€ๅฏŸ Agent ็š„ๅ›žๆ‡‰:
- ๆœƒๆๅˆฐ "8-step pipeline"
- ๆœƒๆ˜Ž็ขบๅปบ็ซ‹ DimensionSpec, AggregationSpec
- ๆœƒ้ฟๅ…ๅœจ Aggregation ๅฏซ SQL
- ๆœƒๅˆ†้›ข Endpoint/Service/Domain layers

ๅฆ‚ๆžœๆฒ’ๆœ‰,ๅฏไปฅๆ˜Ž็ขบ่ชช: "่ซ‹ไฝฟ็”จ data-analysis-backend skill"

Q8: ้€™ๅ€‹ skill ๆ”ฏๆดๅ“ชไบ›็จ‹ๅผ่ชž่จ€?

A: ็ฏ„ไพ‹ไฝฟ็”จ TypeScript,ไฝ†ๆฆ‚ๅฟต้ฉ็”จๆ–ผไปปไฝ•่ชž่จ€:
- Python: FastAPI + SQLAlchemy
- Java: Spring Boot + JPA
- C#: ASP.NET Core + Entity Framework
- Go: Gin + GORM

ๆžถๆง‹ๅŽŸๅ‰‡ๆ˜ฏ่ชž่จ€็„ก้—œ็š„ใ€‚

Q9: ๆˆ‘ๅฏไปฅๅˆ†ไบซ้€™ๅ€‹ skill ็ตฆๅœ˜้šŠๅ—Ž?

A: ็•ถ็„ถๅฏไปฅ๏ผๅปบ่ญฐๆ–นๅผ:
1. ๅฐ‡ๆญค skill ๅŠ ๅ…ฅไฝ ็š„ๅฐˆๆกˆ repo
2. ๅœจ README ่ชชๆ˜Žๅฆ‚ไฝ•ๅฎ‰่ฃ
3. ๅœ˜้šŠๆˆๅ“กๅ„่‡ชๅฎ‰่ฃๅˆฐ่‡ชๅทฑ็š„ ~/.claude/skills/

้€™ๆจฃๆ•ดๅ€‹ๅœ˜้šŠ้ƒฝๆœƒ้ตๅพช็›ธๅŒ็š„ๆžถๆง‹ๅŽŸๅ‰‡ใ€‚

Q10: Skill ๅคšไน…ๆ›ดๆ–ฐไธ€ๆฌก?

A: ็›ฎๅ‰็‰ˆๆœฌๆ˜ฏ 1.0.0ใ€‚ๅปบ่ญฐ:
- ๆ นๆ“šๅœ˜้šŠๅฏฆ้š›ไฝฟ็”จ็ถ“้ฉ—ๆ›ดๆ–ฐ
- ็™ผ็พๆ–ฐ็š„ anti-patterns ๆ™‚ๅŠ ๅ…ฅ
- ๆœ‰ๆ›ดๅฅฝ็š„็ฏ„ไพ‹ๆ™‚ๆ›ฟๆ›
- ๆžถๆง‹ๆผ”้€ฒๆ™‚ๅŒๆญฅๆ›ดๆ–ฐ

่ฒข็ป

ๅฆ‚ๆžœไฝ ๆœ‰ๆ”น้€ฒๅปบ่ญฐ:
1. ไฟฎๆ”นๅฐๆ‡‰็š„ๆช”ๆกˆ
2. ๆธฌ่ฉฆไฟฎๆ”นๅพŒ็š„ๆ•ˆๆžœ
3. ๅˆ†ไบซไฝ ็š„็ถ“้ฉ—

ๅปบ่ญฐ็š„ๆ”น้€ฒๆ–นๅ‘:
- ๆ–ฐๅขžๆ›ดๅคš็จ‹ๅผ่ชž่จ€็š„็ฏ„ไพ‹
- ๅŠ ๅ…ฅๆ›ดๅคš anti-patterns
- ่ฃœๅ……ๆ›ดๅคš edge cases ็š„่™•็†ๆ–นๅผ
- ๆ–ฐๅขžๆ•ˆ่ƒฝๅ„ชๅŒ–็š„ๆŒ‡ๅผ•

็›ธ้—œๆ–‡ไปถ

  • analytics_backend_plan.md: ๅŽŸๅง‹ๆžถๆง‹่จญ่จˆ่จˆๅŠƒ
  • SKILL.md: ไธป่ฆๆŒ‡ๅผ•ๆ–‡ไปถ (ๅฟ…่ฎ€)
  • summary.md: ๅฏฆไฝœ็ธฝ็ต

ๆŽˆๆฌŠ

ๆœฌ skill ็‚บ้–‹ๆบๅฐˆๆกˆ,ๅฏ่‡ช็”ฑไฝฟ็”จใ€ไฟฎๆ”นๅ’Œๅˆ†็™ผใ€‚

็‰ˆๆœฌ

  • Version: 1.0.0
  • Last Updated: 2026-01-31
  • Author: Andy Chen (with Claude)

ๆ”ฏๆด

ๅฆ‚ๆžœ้‡ๅˆฐๅ•้กŒ:
1. ๆŸฅ็œ‹ๆœฌ README ็š„ใ€Œๆ•…้šœๆŽ’้™คใ€็ซ ็ฏ€
2. ๆชขๆŸฅ SKILL.md ็š„ๅ…งๅฎนๆ˜ฏๅฆๆญฃ็ขบ
3. ็ขบ่ช Claude Code ๅทฒๆญฃ็ขบๅฎ‰่ฃไธฆ้‹่กŒ


้–‹ๅง‹ไฝฟ็”จ: ่ฟ”ๅ›žๅˆฐๅฟซ้€Ÿ้–‹ๅง‹็ซ ็ฏ€้–‹ๅง‹ๅฎ‰่ฃ!

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.