heraspec 0.1.14 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +187 -0
- package/README.md +94 -95
- package/bin/heraspec.js +195 -80
- package/bin/heraspec.js.map +2 -2
- package/dist/core/templates/skills/README.md +41 -38
- package/dist/core/templates/skills/campaign-plan/skill.md +76 -0
- package/dist/core/templates/skills/campaign-plan/skill.vi.md +76 -0
- package/dist/core/templates/skills/campaign-plan-skill.md +76 -0
- package/dist/core/templates/skills/campaign-plan-skill.vi.md +76 -0
- package/dist/core/templates/skills/code-review/skill.md +70 -0
- package/dist/core/templates/skills/code-review/skill.vi.md +70 -0
- package/dist/core/templates/skills/code-review-skill.md +70 -0
- package/dist/core/templates/skills/code-review-skill.vi.md +70 -0
- package/dist/core/templates/skills/content-creation/skill.md +69 -0
- package/dist/core/templates/skills/content-creation/skill.vi.md +69 -0
- package/dist/core/templates/skills/content-creation-skill.md +69 -0
- package/dist/core/templates/skills/content-creation-skill.vi.md +69 -0
- package/dist/core/templates/skills/content-optimization/skill.md +104 -0
- package/dist/core/templates/skills/debug/skill.md +69 -0
- package/dist/core/templates/skills/debug/skill.vi.md +69 -0
- package/dist/core/templates/skills/debug-skill.md +69 -0
- package/dist/core/templates/skills/debug-skill.vi.md +69 -0
- package/dist/core/templates/skills/deploy-documentation/skill.md +408 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/airbnb/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/airtable/DESIGN.md +89 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/apple/DESIGN.md +313 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/bmw/DESIGN.md +180 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cal/DESIGN.md +259 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/claude/DESIGN.md +312 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/clay/DESIGN.md +304 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cohere/DESIGN.md +266 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/coinbase/DESIGN.md +129 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/composio/DESIGN.md +307 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cursor/DESIGN.md +309 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/expo/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/figma/DESIGN.md +220 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/framer/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/ibm/DESIGN.md +332 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/index.json +72 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/intercom/DESIGN.md +146 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/kraken/DESIGN.md +125 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/linear.app/DESIGN.md +367 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/lovable/DESIGN.md +298 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/minimax/DESIGN.md +257 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mintlify/DESIGN.md +326 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/miro/DESIGN.md +108 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mongodb/DESIGN.md +266 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/notion/DESIGN.md +309 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/nvidia/DESIGN.md +293 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/ollama/DESIGN.md +267 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/pinterest/DESIGN.md +230 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/posthog/DESIGN.md +256 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/raycast/DESIGN.md +268 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/replicate/DESIGN.md +261 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/resend/DESIGN.md +303 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/revolut/DESIGN.md +185 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/runwayml/DESIGN.md +244 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/sanity/DESIGN.md +357 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/sentry/DESIGN.md +262 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/spacex/DESIGN.md +194 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/spotify/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/stripe/DESIGN.md +322 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/supabase/DESIGN.md +255 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/superhuman/DESIGN.md +252 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/together.ai/DESIGN.md +263 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/uber/DESIGN.md +295 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/vercel/DESIGN.md +310 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/voltagent/DESIGN.md +323 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/warp/DESIGN.md +253 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/webflow/DESIGN.md +92 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/wise/DESIGN.md +173 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/x.ai/DESIGN.md +257 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/zapier/DESIGN.md +328 -0
- package/dist/core/templates/skills/design-system/skill.md +176 -0
- package/dist/core/templates/skills/documents/skill.md +104 -0
- package/dist/core/templates/skills/e2e-test/skill.md +119 -0
- package/dist/core/templates/skills/email-sequence/skill.md +68 -0
- package/dist/core/templates/skills/email-sequence/skill.vi.md +68 -0
- package/dist/core/templates/skills/email-sequence-skill.md +68 -0
- package/dist/core/templates/skills/email-sequence-skill.vi.md +68 -0
- package/dist/core/templates/skills/git-embed/skill.md +57 -0
- package/dist/core/templates/skills/integration-test/skill.md +118 -0
- package/dist/core/templates/skills/knowledge/README.md +63 -63
- package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -72
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -27
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -137
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -39
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +207 -207
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -51
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -369
- package/dist/core/templates/skills/knowledge/index.json +65 -65
- package/dist/core/templates/skills/perfex-module/module-codebase/skill.md +110 -0
- package/dist/core/templates/skills/project-memory/skill.md +222 -0
- package/dist/core/templates/skills/project-memory/skill.vi.md +223 -0
- package/dist/core/templates/skills/seo-audit/skill.md +75 -0
- package/dist/core/templates/skills/seo-audit/skill.vi.md +75 -0
- package/dist/core/templates/skills/seo-audit-skill.md +75 -0
- package/dist/core/templates/skills/seo-audit-skill.vi.md +75 -0
- package/dist/core/templates/skills/smart-explore/skill.md +141 -0
- package/dist/core/templates/skills/sourcecode-analyzer/skill.md +210 -0
- package/dist/core/templates/skills/sourcecode-analyzer/skill.vi.md +210 -0
- package/dist/core/templates/skills/spec-writer/skill.md +61 -0
- package/dist/core/templates/skills/spec-writer/skill.vi.md +61 -0
- package/dist/core/templates/skills/spec-writer-skill.md +61 -0
- package/dist/core/templates/skills/spec-writer-skill.vi.md +61 -0
- package/dist/core/templates/skills/sql-queries/skill.md +67 -0
- package/dist/core/templates/skills/sql-queries/skill.vi.md +67 -0
- package/dist/core/templates/skills/sql-queries-skill.md +67 -0
- package/dist/core/templates/skills/sql-queries-skill.vi.md +67 -0
- package/dist/core/templates/skills/suggestion/skill.md +118 -0
- package/dist/core/templates/skills/system-design/skill.md +70 -0
- package/dist/core/templates/skills/system-design/skill.vi.md +70 -0
- package/dist/core/templates/skills/system-design-skill.md +70 -0
- package/dist/core/templates/skills/system-design-skill.vi.md +70 -0
- package/dist/core/templates/skills/tech-debt/skill.md +70 -0
- package/dist/core/templates/skills/tech-debt/skill.vi.md +70 -0
- package/dist/core/templates/skills/tech-debt-skill.md +70 -0
- package/dist/core/templates/skills/tech-debt-skill.vi.md +70 -0
- package/dist/core/templates/skills/ui-ux/data/charts.csv +26 -0
- package/dist/core/templates/skills/ui-ux/data/colors.csv +97 -0
- package/dist/core/templates/skills/ui-ux/data/design-systems.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/landing.csv +31 -0
- package/dist/core/templates/skills/ui-ux/data/pages-proposed.csv +22 -0
- package/dist/core/templates/skills/ui-ux/data/pages.csv +10 -0
- package/dist/core/templates/skills/ui-ux/data/products.csv +97 -0
- package/dist/core/templates/skills/ui-ux/data/prompts.csv +24 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/flutter.csv +53 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/html-tailwind.csv +56 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/nextjs.csv +53 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/react-native.csv +52 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/react.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/svelte.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/swiftui.csv +51 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/vue.csv +50 -0
- package/dist/core/templates/skills/ui-ux/data/styles.csv +59 -0
- package/dist/core/templates/skills/ui-ux/data/typography.csv +58 -0
- package/dist/core/templates/skills/ui-ux/data/ux-guidelines.csv +100 -0
- package/dist/core/templates/skills/ui-ux/scripts/CODE_EXPLANATION.md +394 -0
- package/dist/core/templates/skills/ui-ux/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -0
- package/dist/core/templates/skills/ui-ux/scripts/SEARCH_MODES_GUIDE.md +238 -0
- package/dist/core/templates/skills/ui-ux/scripts/core.py +391 -0
- package/dist/core/templates/skills/ui-ux/scripts/search.py +73 -0
- package/dist/core/templates/skills/ui-ux/skill.md +595 -0
- package/dist/core/templates/skills/ui-ux/templates/accessibility-checklist.md +40 -0
- package/dist/core/templates/skills/ui-ux/templates/example-prompt-full-theme.md +333 -0
- package/dist/core/templates/skills/ui-ux/templates/page-types-guide.md +338 -0
- package/dist/core/templates/skills/ui-ux/templates/pages-proposed-summary.md +273 -0
- package/dist/core/templates/skills/ui-ux/templates/pre-delivery-checklist.md +42 -0
- package/dist/core/templates/skills/ui-ux/templates/prompt-template-full-theme.md +313 -0
- package/dist/core/templates/skills/ui-ux/templates/responsive-design.md +40 -0
- package/dist/core/templates/skills/unit-test/skill.md +111 -0
- package/dist/core/templates/skills/wordpress/plugin-check/skill.md +151 -0
- package/dist/core/templates/skills/wordpress/plugin-directory/skill.md +396 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/skill.md +100 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/admin-dashboard.php +47 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/admin-settings.php +60 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/assets/admin-css.css +22 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/assets/admin-js.js +15 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/plugin-main.php +169 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/readme.txt +41 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/uninstall.php +21 -0
- package/dist/core/templates/skills/wordpress/ux-element/skill.md +83 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Controller.php +50 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Shortcode.php +23 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Template.html +20 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Thumbnail.svg +8 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/View.php +21 -0
- package/dist/index.js +195 -79
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Skill: SQL Queries (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write correct, readable, and highly performant SQL queries across all major database systems and data warehouse dialects (PostgreSQL, Snowflake, BigQuery, Redshift, Databricks SQL).
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- When writing complex analytical queries involving CTEs, window functions, and cohort retention calculations.
|
|
10
|
+
- When optimizing slow-running SQL queries or translating queries between database dialects.
|
|
11
|
+
- When designing data models, schema migrations, and indexing strategies.
|
|
12
|
+
|
|
13
|
+
## Step-by-Step Process
|
|
14
|
+
|
|
15
|
+
### Step 1: Analyze Schema & Dialect
|
|
16
|
+
- Identify the target database engine (PostgreSQL, BigQuery, Snowflake, etc.).
|
|
17
|
+
- Review available table schemas, keys, indexes, and partitioning keys.
|
|
18
|
+
|
|
19
|
+
### Step 2: Structure Using CTEs
|
|
20
|
+
- Break down complex logic into small, readable Common Table Expressions (CTEs) representing logical steps.
|
|
21
|
+
|
|
22
|
+
### Step 3: Write Dialect-Specific Logic
|
|
23
|
+
- Implement date/time arithmetic, string manipulation, JSON/array functions, and window functions using syntax specific to the selected dialect.
|
|
24
|
+
|
|
25
|
+
### Step 4: Performance Optimization
|
|
26
|
+
- Apply database-specific optimization rules:
|
|
27
|
+
- PostgreSQL: Use `EXPLAIN ANALYZE`, index columns, prefer `EXISTS` over `IN` for subqueries.
|
|
28
|
+
- BigQuery: Minimize scanned bytes, partition on date columns, use `APPROX_COUNT_DISTINCT`.
|
|
29
|
+
- Snowflake: Leverage clustering keys, transient tables, and avoid unnecessary warehouse resizing.
|
|
30
|
+
|
|
31
|
+
### Step 5: Test & Debug
|
|
32
|
+
- Verify correct handling of boundary cases (division by zero, null fields, type mismatch casting).
|
|
33
|
+
|
|
34
|
+
## Required Input
|
|
35
|
+
|
|
36
|
+
- **Database Engine**: PostgreSQL, BigQuery, Snowflake, etc.
|
|
37
|
+
- **Goal/Query Purpose**: What analytical question the query should answer.
|
|
38
|
+
- **Table Schema**: Definitions, keys, and partitioning details.
|
|
39
|
+
|
|
40
|
+
## Expected Output
|
|
41
|
+
|
|
42
|
+
- **Optimized SQL Code**: Full query code formatted using uppercase keywords and standard alignment.
|
|
43
|
+
- **Performance Explanation**: Brief details on partition pruning, indexing, or dialect-specific functions used to speed up the query.
|
|
44
|
+
- **Query Flow Explanation**: Explanation of each CTE step for developer readability.
|
|
45
|
+
|
|
46
|
+
## Tone & Rules
|
|
47
|
+
|
|
48
|
+
- Write clean, modern SQL using uppercase for keywords (SELECT, FROM, WHERE, etc.).
|
|
49
|
+
- Always qualify column names with table aliases when using JOINs.
|
|
50
|
+
- Avoid nested subqueries; always prefer Common Table Expressions (CTEs) for readability.
|
|
51
|
+
|
|
52
|
+
## Available Templates
|
|
53
|
+
|
|
54
|
+
- None
|
|
55
|
+
|
|
56
|
+
## Available Scripts
|
|
57
|
+
|
|
58
|
+
- None
|
|
59
|
+
|
|
60
|
+
## Examples
|
|
61
|
+
|
|
62
|
+
See `examples/` directory.
|
|
63
|
+
|
|
64
|
+
## Links to Other Skills
|
|
65
|
+
|
|
66
|
+
- **documents**: Use to document database schemas or technical data flow maps.
|
|
67
|
+
- **debug**: Use to diagnose and resolve errors returned by SQL execution engines.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Kỹ năng: Truy vấn SQL (SQL Queries) (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Mục đích
|
|
4
|
+
|
|
5
|
+
Viết các câu truy vấn SQL chính xác, dễ đọc và đạt hiệu năng tối ưu trên các hệ thống cơ sở dữ liệu và kho dữ liệu phổ biến (PostgreSQL, Snowflake, BigQuery, Redshift, Databricks SQL).
|
|
6
|
+
|
|
7
|
+
## Khi nào sử dụng
|
|
8
|
+
|
|
9
|
+
- Khi viết các câu truy vấn phân tích phức tạp có sử dụng CTEs, hàm cửa sổ (window functions) và tính toán tỷ lệ giữ chân khách hàng (cohort retention).
|
|
10
|
+
- Khi tối ưu hóa các câu lệnh SQL chạy chậm hoặc chuyển đổi cú pháp truy vấn giữa các hệ quản trị cơ sở dữ liệu khác nhau.
|
|
11
|
+
- Khi thiết kế mô hình dữ liệu, viết mã dịch chuyển cấu trúc bảng (migrations) và lập chiến lược đánh chỉ mục (indexing).
|
|
12
|
+
|
|
13
|
+
## Quy trình từng bước
|
|
14
|
+
|
|
15
|
+
### Bước 1: Phân tích Lược đồ & Cú pháp Dialect
|
|
16
|
+
- Xác định hệ quản trị cơ sở dữ liệu đích (PostgreSQL, BigQuery, Snowflake, v.v...).
|
|
17
|
+
- Xem xét cấu trúc các bảng dữ liệu, khóa chính/phụ, chỉ mục (indexes) và khóa phân vùng (partition keys).
|
|
18
|
+
|
|
19
|
+
### Bước 2: Cấu trúc hóa bằng CTEs
|
|
20
|
+
- Chia nhỏ logic phức tạp thành các biểu thức bảng chung (Common Table Expressions - CTEs) dễ đọc, đại diện cho từng bước xử lý dữ liệu tuần tự.
|
|
21
|
+
|
|
22
|
+
### Bước 3: Viết Logic Đặc thù theo Dialect
|
|
23
|
+
- Triển khai các phép toán ngày/tháng, xử lý chuỗi văn bản, trích xuất JSON/mảng và các hàm cửa sổ sử dụng đúng cú pháp của cơ sở dữ liệu đích.
|
|
24
|
+
|
|
25
|
+
### Bước 4: Tối ưu hóa Hiệu năng (Performance Optimization)
|
|
26
|
+
- Áp dụng các quy tắc tối ưu đặc thù:
|
|
27
|
+
- PostgreSQL: Sử dụng `EXPLAIN ANALYZE` để xem chi tiết thực thi, đánh chỉ mục các cột lọc/join, ưu tiên `EXISTS` thay vì `IN` cho truy vấn con.
|
|
28
|
+
- BigQuery: Giảm thiểu dung lượng quét dữ liệu (scanned bytes), lọc theo cột phân vùng date, sử dụng `APPROX_COUNT_DISTINCT`.
|
|
29
|
+
- Snowflake: Tận dụng khóa gom cụm (clustering keys), bảng tạm thời (transient tables) và tránh thay đổi kích thước warehouse không cần thiết.
|
|
30
|
+
|
|
31
|
+
### Bước 5: Kiểm thử & Sửa lỗi
|
|
32
|
+
- Xác minh cách xử lý các trường hợp đặc biệt (chia cho 0, giá trị null, ép kiểu dữ liệu mismatch).
|
|
33
|
+
|
|
34
|
+
## Input yêu cầu
|
|
35
|
+
|
|
36
|
+
- **Database Engine**: Loại cơ sở dữ liệu (PostgreSQL, BigQuery, Snowflake, v.v...).
|
|
37
|
+
- **Mục đích truy vấn**: Câu hỏi nghiệp vụ cần trả lời bằng dữ liệu.
|
|
38
|
+
- **Lược đồ bảng (Table Schema)**: Định nghĩa các bảng, kiểu dữ liệu, các trường khóa và chi tiết phân vùng.
|
|
39
|
+
|
|
40
|
+
## Output mong đợi
|
|
41
|
+
|
|
42
|
+
- **Mã lệnh SQL Tối ưu**: Câu lệnh SQL hoàn chỉnh được định dạng viết hoa các từ khóa chính và căn lề chuẩn mực.
|
|
43
|
+
- **Giải thích Hiệu năng**: Mô tả ngắn gọn về phân vùng dữ liệu, chỉ mục hoặc hàm đặc thù được dùng để tăng tốc truy vấn.
|
|
44
|
+
- **Giải thích Luồng truy vấn**: Giải thích rõ ràng mục đích của từng bước CTE để nhà phát triển dễ đọc hiểu.
|
|
45
|
+
|
|
46
|
+
## Giọng điệu & Quy tắc
|
|
47
|
+
|
|
48
|
+
- Viết mã SQL sạch, hiện đại bằng cách viết hoa các từ khóa chuẩn (SELECT, FROM, WHERE, v.v...).
|
|
49
|
+
- Luôn đặt tên viết tắt (alias) cho các bảng và gọi tên cột kèm alias khi thực hiện JOINs.
|
|
50
|
+
- Hạn chế viết các truy vấn con lồng nhau phức tạp; luôn ưu tiên sử dụng CTEs để giữ code sạch sẽ.
|
|
51
|
+
|
|
52
|
+
## Templates có sẵn
|
|
53
|
+
|
|
54
|
+
- Không có
|
|
55
|
+
|
|
56
|
+
## Scripts có sẵn
|
|
57
|
+
|
|
58
|
+
- Không có
|
|
59
|
+
|
|
60
|
+
## Ví dụ
|
|
61
|
+
|
|
62
|
+
Xem thư mục `examples/`.
|
|
63
|
+
|
|
64
|
+
## Liên kết với các kỹ năng khác
|
|
65
|
+
|
|
66
|
+
- **documents**: Sử dụng để viết tài liệu thiết kế cơ sở dữ liệu hoặc sơ đồ luồng dữ liệu kỹ thuật.
|
|
67
|
+
- **debug**: Sử dụng để chẩn đoán và khắc phục các lỗi cú pháp/logic do công cụ cơ sở dữ liệu trả về.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Skill: SQL Queries (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write correct, readable, and highly performant SQL queries across all major database systems and data warehouse dialects (PostgreSQL, Snowflake, BigQuery, Redshift, Databricks SQL).
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- When writing complex analytical queries involving CTEs, window functions, and cohort retention calculations.
|
|
10
|
+
- When optimizing slow-running SQL queries or translating queries between database dialects.
|
|
11
|
+
- When designing data models, schema migrations, and indexing strategies.
|
|
12
|
+
|
|
13
|
+
## Step-by-Step Process
|
|
14
|
+
|
|
15
|
+
### Step 1: Analyze Schema & Dialect
|
|
16
|
+
- Identify the target database engine (PostgreSQL, BigQuery, Snowflake, etc.).
|
|
17
|
+
- Review available table schemas, keys, indexes, and partitioning keys.
|
|
18
|
+
|
|
19
|
+
### Step 2: Structure Using CTEs
|
|
20
|
+
- Break down complex logic into small, readable Common Table Expressions (CTEs) representing logical steps.
|
|
21
|
+
|
|
22
|
+
### Step 3: Write Dialect-Specific Logic
|
|
23
|
+
- Implement date/time arithmetic, string manipulation, JSON/array functions, and window functions using syntax specific to the selected dialect.
|
|
24
|
+
|
|
25
|
+
### Step 4: Performance Optimization
|
|
26
|
+
- Apply database-specific optimization rules:
|
|
27
|
+
- PostgreSQL: Use `EXPLAIN ANALYZE`, index columns, prefer `EXISTS` over `IN` for subqueries.
|
|
28
|
+
- BigQuery: Minimize scanned bytes, partition on date columns, use `APPROX_COUNT_DISTINCT`.
|
|
29
|
+
- Snowflake: Leverage clustering keys, transient tables, and avoid unnecessary warehouse resizing.
|
|
30
|
+
|
|
31
|
+
### Step 5: Test & Debug
|
|
32
|
+
- Verify correct handling of boundary cases (division by zero, null fields, type mismatch casting).
|
|
33
|
+
|
|
34
|
+
## Required Input
|
|
35
|
+
|
|
36
|
+
- **Database Engine**: PostgreSQL, BigQuery, Snowflake, etc.
|
|
37
|
+
- **Goal/Query Purpose**: What analytical question the query should answer.
|
|
38
|
+
- **Table Schema**: Definitions, keys, and partitioning details.
|
|
39
|
+
|
|
40
|
+
## Expected Output
|
|
41
|
+
|
|
42
|
+
- **Optimized SQL Code**: Full query code formatted using uppercase keywords and standard alignment.
|
|
43
|
+
- **Performance Explanation**: Brief details on partition pruning, indexing, or dialect-specific functions used to speed up the query.
|
|
44
|
+
- **Query Flow Explanation**: Explanation of each CTE step for developer readability.
|
|
45
|
+
|
|
46
|
+
## Tone & Rules
|
|
47
|
+
|
|
48
|
+
- Write clean, modern SQL using uppercase for keywords (SELECT, FROM, WHERE, etc.).
|
|
49
|
+
- Always qualify column names with table aliases when using JOINs.
|
|
50
|
+
- Avoid nested subqueries; always prefer Common Table Expressions (CTEs) for readability.
|
|
51
|
+
|
|
52
|
+
## Available Templates
|
|
53
|
+
|
|
54
|
+
- None
|
|
55
|
+
|
|
56
|
+
## Available Scripts
|
|
57
|
+
|
|
58
|
+
- None
|
|
59
|
+
|
|
60
|
+
## Examples
|
|
61
|
+
|
|
62
|
+
See `examples/` directory.
|
|
63
|
+
|
|
64
|
+
## Links to Other Skills
|
|
65
|
+
|
|
66
|
+
- **documents**: Use to document database schemas or technical data flow maps.
|
|
67
|
+
- **debug**: Use to diagnose and resolve errors returned by SQL execution engines.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Kỹ năng: Truy vấn SQL (SQL Queries) (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Mục đích
|
|
4
|
+
|
|
5
|
+
Viết các câu truy vấn SQL chính xác, dễ đọc và đạt hiệu năng tối ưu trên các hệ thống cơ sở dữ liệu và kho dữ liệu phổ biến (PostgreSQL, Snowflake, BigQuery, Redshift, Databricks SQL).
|
|
6
|
+
|
|
7
|
+
## Khi nào sử dụng
|
|
8
|
+
|
|
9
|
+
- Khi viết các câu truy vấn phân tích phức tạp có sử dụng CTEs, hàm cửa sổ (window functions) và tính toán tỷ lệ giữ chân khách hàng (cohort retention).
|
|
10
|
+
- Khi tối ưu hóa các câu lệnh SQL chạy chậm hoặc chuyển đổi cú pháp truy vấn giữa các hệ quản trị cơ sở dữ liệu khác nhau.
|
|
11
|
+
- Khi thiết kế mô hình dữ liệu, viết mã dịch chuyển cấu trúc bảng (migrations) và lập chiến lược đánh chỉ mục (indexing).
|
|
12
|
+
|
|
13
|
+
## Quy trình từng bước
|
|
14
|
+
|
|
15
|
+
### Bước 1: Phân tích Lược đồ & Cú pháp Dialect
|
|
16
|
+
- Xác định hệ quản trị cơ sở dữ liệu đích (PostgreSQL, BigQuery, Snowflake, v.v...).
|
|
17
|
+
- Xem xét cấu trúc các bảng dữ liệu, khóa chính/phụ, chỉ mục (indexes) và khóa phân vùng (partition keys).
|
|
18
|
+
|
|
19
|
+
### Bước 2: Cấu trúc hóa bằng CTEs
|
|
20
|
+
- Chia nhỏ logic phức tạp thành các biểu thức bảng chung (Common Table Expressions - CTEs) dễ đọc, đại diện cho từng bước xử lý dữ liệu tuần tự.
|
|
21
|
+
|
|
22
|
+
### Bước 3: Viết Logic Đặc thù theo Dialect
|
|
23
|
+
- Triển khai các phép toán ngày/tháng, xử lý chuỗi văn bản, trích xuất JSON/mảng và các hàm cửa sổ sử dụng đúng cú pháp của cơ sở dữ liệu đích.
|
|
24
|
+
|
|
25
|
+
### Bước 4: Tối ưu hóa Hiệu năng (Performance Optimization)
|
|
26
|
+
- Áp dụng các quy tắc tối ưu đặc thù:
|
|
27
|
+
- PostgreSQL: Sử dụng `EXPLAIN ANALYZE` để xem chi tiết thực thi, đánh chỉ mục các cột lọc/join, ưu tiên `EXISTS` thay vì `IN` cho truy vấn con.
|
|
28
|
+
- BigQuery: Giảm thiểu dung lượng quét dữ liệu (scanned bytes), lọc theo cột phân vùng date, sử dụng `APPROX_COUNT_DISTINCT`.
|
|
29
|
+
- Snowflake: Tận dụng khóa gom cụm (clustering keys), bảng tạm thời (transient tables) và tránh thay đổi kích thước warehouse không cần thiết.
|
|
30
|
+
|
|
31
|
+
### Bước 5: Kiểm thử & Sửa lỗi
|
|
32
|
+
- Xác minh cách xử lý các trường hợp đặc biệt (chia cho 0, giá trị null, ép kiểu dữ liệu mismatch).
|
|
33
|
+
|
|
34
|
+
## Input yêu cầu
|
|
35
|
+
|
|
36
|
+
- **Database Engine**: Loại cơ sở dữ liệu (PostgreSQL, BigQuery, Snowflake, v.v...).
|
|
37
|
+
- **Mục đích truy vấn**: Câu hỏi nghiệp vụ cần trả lời bằng dữ liệu.
|
|
38
|
+
- **Lược đồ bảng (Table Schema)**: Định nghĩa các bảng, kiểu dữ liệu, các trường khóa và chi tiết phân vùng.
|
|
39
|
+
|
|
40
|
+
## Output mong đợi
|
|
41
|
+
|
|
42
|
+
- **Mã lệnh SQL Tối ưu**: Câu lệnh SQL hoàn chỉnh được định dạng viết hoa các từ khóa chính và căn lề chuẩn mực.
|
|
43
|
+
- **Giải thích Hiệu năng**: Mô tả ngắn gọn về phân vùng dữ liệu, chỉ mục hoặc hàm đặc thù được dùng để tăng tốc truy vấn.
|
|
44
|
+
- **Giải thích Luồng truy vấn**: Giải thích rõ ràng mục đích của từng bước CTE để nhà phát triển dễ đọc hiểu.
|
|
45
|
+
|
|
46
|
+
## Giọng điệu & Quy tắc
|
|
47
|
+
|
|
48
|
+
- Viết mã SQL sạch, hiện đại bằng cách viết hoa các từ khóa chuẩn (SELECT, FROM, WHERE, v.v...).
|
|
49
|
+
- Luôn đặt tên viết tắt (alias) cho các bảng và gọi tên cột kèm alias khi thực hiện JOINs.
|
|
50
|
+
- Hạn chế viết các truy vấn con lồng nhau phức tạp; luôn ưu tiên sử dụng CTEs để giữ code sạch sẽ.
|
|
51
|
+
|
|
52
|
+
## Templates có sẵn
|
|
53
|
+
|
|
54
|
+
- Không có
|
|
55
|
+
|
|
56
|
+
## Scripts có sẵn
|
|
57
|
+
|
|
58
|
+
- Không có
|
|
59
|
+
|
|
60
|
+
## Ví dụ
|
|
61
|
+
|
|
62
|
+
Xem thư mục `examples/`.
|
|
63
|
+
|
|
64
|
+
## Liên kết với các kỹ năng khác
|
|
65
|
+
|
|
66
|
+
- **documents**: Sử dụng để viết tài liệu thiết kế cơ sở dữ liệu hoặc sơ đồ luồng dữ liệu kỹ thuật.
|
|
67
|
+
- **debug**: Sử dụng để chẩn đoán và khắc phục các lỗi cú pháp/logic do công cụ cơ sở dữ liệu trả về.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Skill: Feature Suggestion (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This skill is used to analyze existing project structure and suggest new features that would integrate well with the current codebase. It helps identify opportunities for enhancements and new functionality based on existing patterns and architecture.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- When planning new features for a project
|
|
10
|
+
- When identifying gaps in functionality
|
|
11
|
+
- When analyzing project structure for enhancement opportunities
|
|
12
|
+
- When proposing improvements based on existing patterns
|
|
13
|
+
- When suggesting features that align with project architecture
|
|
14
|
+
|
|
15
|
+
## Step-by-Step Process
|
|
16
|
+
|
|
17
|
+
### Step 1: Analyze Project Structure
|
|
18
|
+
- Read and understand `heraspec/project.md`
|
|
19
|
+
- Review existing specs in `heraspec/specs/`
|
|
20
|
+
- Analyze existing changes and their patterns
|
|
21
|
+
- Identify project type and tech stack
|
|
22
|
+
- Map current feature set
|
|
23
|
+
|
|
24
|
+
### Step 2: Identify Integration Points
|
|
25
|
+
- Find logical places for new features
|
|
26
|
+
- Identify patterns in existing code
|
|
27
|
+
- Determine appropriate project structure locations
|
|
28
|
+
- Consider dependencies and relationships
|
|
29
|
+
- Map feature hierarchy
|
|
30
|
+
|
|
31
|
+
### Step 3: Generate Suggestions
|
|
32
|
+
- Create feature suggestions based on analysis
|
|
33
|
+
- Ensure suggestions align with project type
|
|
34
|
+
- Consider existing patterns and conventions
|
|
35
|
+
- Propose features that enhance current functionality
|
|
36
|
+
- Suggest improvements and extensions
|
|
37
|
+
|
|
38
|
+
### Step 4: Organize Suggestions
|
|
39
|
+
- Group suggestions by category/domain
|
|
40
|
+
- Prioritize based on feasibility and value
|
|
41
|
+
- Create suggestion files in appropriate locations
|
|
42
|
+
- Link suggestions to existing features
|
|
43
|
+
- Document integration points
|
|
44
|
+
|
|
45
|
+
### Step 5: Review and Refine
|
|
46
|
+
- Review suggestions for consistency
|
|
47
|
+
- Ensure suggestions follow project conventions
|
|
48
|
+
- Verify integration points are correct
|
|
49
|
+
- Refine based on project requirements
|
|
50
|
+
- Prepare for implementation planning
|
|
51
|
+
|
|
52
|
+
## Required Input
|
|
53
|
+
|
|
54
|
+
- **Project structure**: Understanding of project organization
|
|
55
|
+
- **Existing specs**: Current feature specifications
|
|
56
|
+
- **Project type**: Type of project (plugin, module, app, etc.)
|
|
57
|
+
- **Tech stack**: Technologies used in the project
|
|
58
|
+
- **Domain context**: Business domain and requirements
|
|
59
|
+
|
|
60
|
+
## Expected Output
|
|
61
|
+
|
|
62
|
+
- Feature suggestion files
|
|
63
|
+
- Suggestions organized by category
|
|
64
|
+
- Integration points identified
|
|
65
|
+
- Suggestions linked to existing features
|
|
66
|
+
- Documentation of suggested enhancements
|
|
67
|
+
|
|
68
|
+
## Tone & Rules
|
|
69
|
+
|
|
70
|
+
### Suggestion Quality
|
|
71
|
+
- Suggest features that add value
|
|
72
|
+
- Align with project type and architecture
|
|
73
|
+
- Consider existing patterns and conventions
|
|
74
|
+
- Propose realistic and feasible features
|
|
75
|
+
- Enhance rather than replace existing functionality
|
|
76
|
+
|
|
77
|
+
### Integration
|
|
78
|
+
- Identify appropriate locations for features
|
|
79
|
+
- Consider dependencies and relationships
|
|
80
|
+
- Follow existing project structure
|
|
81
|
+
- Maintain consistency with current patterns
|
|
82
|
+
- Document integration approach
|
|
83
|
+
|
|
84
|
+
### Documentation
|
|
85
|
+
- Clearly describe suggested features
|
|
86
|
+
- Explain integration points
|
|
87
|
+
- Link to related existing features
|
|
88
|
+
- Provide context and rationale
|
|
89
|
+
- Include implementation considerations
|
|
90
|
+
|
|
91
|
+
### Limitations
|
|
92
|
+
- ❌ DO NOT suggest features that conflict with existing architecture
|
|
93
|
+
- ❌ DO NOT ignore project conventions
|
|
94
|
+
- ❌ DO NOT suggest overly complex features
|
|
95
|
+
- ❌ DO NOT duplicate existing functionality
|
|
96
|
+
- ❌ DO NOT suggest features without considering integration
|
|
97
|
+
|
|
98
|
+
## Available Templates
|
|
99
|
+
|
|
100
|
+
- `templates/suggestion-template.md` - Template for feature suggestions
|
|
101
|
+
- `templates/suggestion-category-template.md` - Template for organizing suggestions by category
|
|
102
|
+
|
|
103
|
+
## Available Scripts
|
|
104
|
+
|
|
105
|
+
- `scripts/analyze-project-structure.py` - Analyze project structure for suggestion opportunities
|
|
106
|
+
|
|
107
|
+
## Examples
|
|
108
|
+
|
|
109
|
+
See `examples/` directory for reference:
|
|
110
|
+
- `good-suggestions/` - Well-structured feature suggestions
|
|
111
|
+
- `bad-suggestions/` - Examples to avoid
|
|
112
|
+
|
|
113
|
+
## Links to Other Skills
|
|
114
|
+
|
|
115
|
+
- **documents**: Use to document suggestion rationale
|
|
116
|
+
- **unit-test**: Consider testability when suggesting features
|
|
117
|
+
- **integration-test**: Consider integration testing when suggesting features
|
|
118
|
+
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Skill: System Design (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Evaluate architectural decisions, design API endpoints, model data schemas, and analyze trade-offs.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- When architecting a new microservice, system, or database model
|
|
10
|
+
- When defining API boundaries and integration contracts between components
|
|
11
|
+
- When scaling system capacities and outlining horizontal/vertical tradeoffs
|
|
12
|
+
|
|
13
|
+
## Step-by-Step Process
|
|
14
|
+
|
|
15
|
+
### Step 1: Gather Requirements & Constraints
|
|
16
|
+
- List functional requirements (what the system must do)
|
|
17
|
+
- List non-functional requirements (throughput, scale, latency, availability)
|
|
18
|
+
- Identify technical constraints (team skill set, budget, timeline, existing stack)
|
|
19
|
+
|
|
20
|
+
### Step 2: High-Level Design
|
|
21
|
+
- Map out system components (services, clients, data stores)
|
|
22
|
+
- Outline data flow and request/response lifecycles
|
|
23
|
+
- Choose datastores (SQL, NoSQL, Cache, Document store)
|
|
24
|
+
|
|
25
|
+
### Step 3: Deep Dive & Contract Design
|
|
26
|
+
- Define database schema models and indexing strategies
|
|
27
|
+
- Design concrete API contracts (REST endpoints, GraphQL query structures, gRPC specs)
|
|
28
|
+
- Design error-handling patterns, caching strategies, and event queue definitions
|
|
29
|
+
|
|
30
|
+
### Step 4: Trade-off Analysis
|
|
31
|
+
- Document choices explicitly using architectural trade-offs (e.g. Read latency vs Write latency)
|
|
32
|
+
- Formulate scaling strategies (sharding, replication, failover mechanisms)
|
|
33
|
+
|
|
34
|
+
## Required Input
|
|
35
|
+
|
|
36
|
+
- Architecture goals, specifications, or user stories
|
|
37
|
+
- Expected load (requests per second, data size)
|
|
38
|
+
- Pre-existing tech stack constraints
|
|
39
|
+
|
|
40
|
+
## Expected Output
|
|
41
|
+
|
|
42
|
+
- System design document containing:
|
|
43
|
+
- Architecture diagram (ASCII or Mermaid)
|
|
44
|
+
- Data model and DB schema
|
|
45
|
+
- API endpoint specifications
|
|
46
|
+
- Cache/Queue strategy
|
|
47
|
+
- Explicit trade-off analysis
|
|
48
|
+
|
|
49
|
+
## Tone & Rules
|
|
50
|
+
|
|
51
|
+
- Every design decision must have a corresponding trade-off analyzed.
|
|
52
|
+
- Keep designs modular and explain service boundaries clearly.
|
|
53
|
+
- Avoid over-engineering. Design for 10x scale, but build for 1.5x scale.
|
|
54
|
+
|
|
55
|
+
## Available Templates
|
|
56
|
+
|
|
57
|
+
- None
|
|
58
|
+
|
|
59
|
+
## Available Scripts
|
|
60
|
+
|
|
61
|
+
- None
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
See `examples/` directory.
|
|
66
|
+
|
|
67
|
+
## Links to Other Skills
|
|
68
|
+
|
|
69
|
+
- **documents**: Use to generate product and technical specification documents.
|
|
70
|
+
- **suggestion**: Use to analyze existing systems and suggest architectural improvements.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Kỹ năng: Thiết kế Hệ thống (System Design) (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Mục đích
|
|
4
|
+
|
|
5
|
+
Đánh giá các quyết định kiến trúc, thiết kế các API endpoint, mô hình hóa lược đồ dữ liệu (database schemas) và phân tích các yếu tố đánh đổi (trade-offs).
|
|
6
|
+
|
|
7
|
+
## Khi nào sử dụng
|
|
8
|
+
|
|
9
|
+
- Khi thiết kế một microservice, hệ thống, hoặc mô hình cơ sở dữ liệu mới
|
|
10
|
+
- Khi định nghĩa các ranh giới API và hợp đồng tích hợp (integration contracts) giữa các component
|
|
11
|
+
- Khi mở rộng quy mô hệ thống và phác thảo các yếu tố đánh đổi giữa mở rộng theo chiều dọc và chiều ngang
|
|
12
|
+
|
|
13
|
+
## Quy trình từng bước
|
|
14
|
+
|
|
15
|
+
### Bước 1: Thu thập Yêu cầu & Ràng buộc
|
|
16
|
+
- Liệt kê các yêu cầu chức năng (hệ thống phải làm gì)
|
|
17
|
+
- Liệt kê các yêu cầu phi chức năng (throughput, quy mô, độ trễ, tính sẵn sàng)
|
|
18
|
+
- Xác định các ràng buộc kỹ thuật (năng lực của team, ngân sách, thời gian, công nghệ hiện có)
|
|
19
|
+
|
|
20
|
+
### Bước 2: Thiết kế Mức Cao (High-Level Design)
|
|
21
|
+
- Phác thảo sơ đồ các component (services, clients, data stores)
|
|
22
|
+
- Phác thảo luồng dữ liệu và vòng đời của request/response
|
|
23
|
+
- Lựa chọn giải pháp lưu trữ (SQL, NoSQL, Cache, Document store)
|
|
24
|
+
|
|
25
|
+
### Bước 3: Thiết kế Chi tiết & Hợp đồng API
|
|
26
|
+
- Định nghĩa các mô hình schema database và chiến lược đánh index
|
|
27
|
+
- Thiết kế hợp đồng API cụ thể (REST endpoints, cấu trúc GraphQL, đặc tả gRPC)
|
|
28
|
+
- Thiết kế cơ chế xử lý lỗi, chiến lược lưu cache và định nghĩa hàng đợi sự kiện (event queue)
|
|
29
|
+
|
|
30
|
+
### Bước 4: Phân tích Đánh đổi (Trade-off Analysis)
|
|
31
|
+
- Tài liệu hóa rõ ràng các lựa chọn kiến trúc kèm phân tích đánh đổi (ví dụ: Tối ưu đọc vs. Tối ưu ghi)
|
|
32
|
+
- Xây dựng chiến lược mở rộng (sharding, replication, cơ chế failover)
|
|
33
|
+
|
|
34
|
+
## Input yêu cầu
|
|
35
|
+
|
|
36
|
+
- Mục tiêu kiến trúc, đặc tả kỹ thuật hoặc user stories
|
|
37
|
+
- Tải trọng dự kiến (requests mỗi giây, kích thước dữ liệu)
|
|
38
|
+
- Ràng buộc về công nghệ hiện có của dự án
|
|
39
|
+
|
|
40
|
+
## Output mong đợi
|
|
41
|
+
|
|
42
|
+
- Tài liệu thiết kế hệ thống bao gồm:
|
|
43
|
+
- Sơ đồ kiến trúc (ASCII hoặc Mermaid)
|
|
44
|
+
- Mô hình dữ liệu và DB schema
|
|
45
|
+
- Đặc tả kỹ thuật các API endpoint
|
|
46
|
+
- Chiến lược Cache/Queue
|
|
47
|
+
- Phân tích đánh đổi rõ ràng
|
|
48
|
+
|
|
49
|
+
## Giọng điệu & Quy tắc
|
|
50
|
+
|
|
51
|
+
- Mọi quyết định thiết kế đều phải kèm theo phân tích đánh đổi tương ứng.
|
|
52
|
+
- Đảm bảo tính mô-đun của thiết kế và giải thích rõ ranh giới giữa các service.
|
|
53
|
+
- Tránh over-engineering (thiết kế quá phức tạp). Hãy thiết kế cho quy mô 10x nhưng xây dựng cho quy mô 1.5x trước.
|
|
54
|
+
|
|
55
|
+
## Templates có sẵn
|
|
56
|
+
|
|
57
|
+
- Không có
|
|
58
|
+
|
|
59
|
+
## Scripts có sẵn
|
|
60
|
+
|
|
61
|
+
- Không có
|
|
62
|
+
|
|
63
|
+
## Ví dụ
|
|
64
|
+
|
|
65
|
+
Xem thư mục `examples/`.
|
|
66
|
+
|
|
67
|
+
## Liên kết với các kỹ năng khác
|
|
68
|
+
|
|
69
|
+
- **documents**: Dùng để tạo tài liệu đặc tả kỹ thuật và sản phẩm.
|
|
70
|
+
- **suggestion**: Dùng để phân tích hệ thống hiện tại và đề xuất cải tiến kiến trúc.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Skill: System Design (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Evaluate architectural decisions, design API endpoints, model data schemas, and analyze trade-offs.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- When architecting a new microservice, system, or database model
|
|
10
|
+
- When defining API boundaries and integration contracts between components
|
|
11
|
+
- When scaling system capacities and outlining horizontal/vertical tradeoffs
|
|
12
|
+
|
|
13
|
+
## Step-by-Step Process
|
|
14
|
+
|
|
15
|
+
### Step 1: Gather Requirements & Constraints
|
|
16
|
+
- List functional requirements (what the system must do)
|
|
17
|
+
- List non-functional requirements (throughput, scale, latency, availability)
|
|
18
|
+
- Identify technical constraints (team skill set, budget, timeline, existing stack)
|
|
19
|
+
|
|
20
|
+
### Step 2: High-Level Design
|
|
21
|
+
- Map out system components (services, clients, data stores)
|
|
22
|
+
- Outline data flow and request/response lifecycles
|
|
23
|
+
- Choose datastores (SQL, NoSQL, Cache, Document store)
|
|
24
|
+
|
|
25
|
+
### Step 3: Deep Dive & Contract Design
|
|
26
|
+
- Define database schema models and indexing strategies
|
|
27
|
+
- Design concrete API contracts (REST endpoints, GraphQL query structures, gRPC specs)
|
|
28
|
+
- Design error-handling patterns, caching strategies, and event queue definitions
|
|
29
|
+
|
|
30
|
+
### Step 4: Trade-off Analysis
|
|
31
|
+
- Document choices explicitly using architectural trade-offs (e.g. Read latency vs Write latency)
|
|
32
|
+
- Formulate scaling strategies (sharding, replication, failover mechanisms)
|
|
33
|
+
|
|
34
|
+
## Required Input
|
|
35
|
+
|
|
36
|
+
- Architecture goals, specifications, or user stories
|
|
37
|
+
- Expected load (requests per second, data size)
|
|
38
|
+
- Pre-existing tech stack constraints
|
|
39
|
+
|
|
40
|
+
## Expected Output
|
|
41
|
+
|
|
42
|
+
- System design document containing:
|
|
43
|
+
- Architecture diagram (ASCII or Mermaid)
|
|
44
|
+
- Data model and DB schema
|
|
45
|
+
- API endpoint specifications
|
|
46
|
+
- Cache/Queue strategy
|
|
47
|
+
- Explicit trade-off analysis
|
|
48
|
+
|
|
49
|
+
## Tone & Rules
|
|
50
|
+
|
|
51
|
+
- Every design decision must have a corresponding trade-off analyzed.
|
|
52
|
+
- Keep designs modular and explain service boundaries clearly.
|
|
53
|
+
- Avoid over-engineering. Design for 10x scale, but build for 1.5x scale.
|
|
54
|
+
|
|
55
|
+
## Available Templates
|
|
56
|
+
|
|
57
|
+
- None
|
|
58
|
+
|
|
59
|
+
## Available Scripts
|
|
60
|
+
|
|
61
|
+
- None
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
See `examples/` directory.
|
|
66
|
+
|
|
67
|
+
## Links to Other Skills
|
|
68
|
+
|
|
69
|
+
- **documents**: Use to generate product and technical specification documents.
|
|
70
|
+
- **suggestion**: Use to analyze existing systems and suggest architectural improvements.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Kỹ năng: Thiết kế Hệ thống (System Design) (Cross-Cutting)
|
|
2
|
+
|
|
3
|
+
## Mục đích
|
|
4
|
+
|
|
5
|
+
Đánh giá các quyết định kiến trúc, thiết kế các API endpoint, mô hình hóa lược đồ dữ liệu (database schemas) và phân tích các yếu tố đánh đổi (trade-offs).
|
|
6
|
+
|
|
7
|
+
## Khi nào sử dụng
|
|
8
|
+
|
|
9
|
+
- Khi thiết kế một microservice, hệ thống, hoặc mô hình cơ sở dữ liệu mới
|
|
10
|
+
- Khi định nghĩa các ranh giới API và hợp đồng tích hợp (integration contracts) giữa các component
|
|
11
|
+
- Khi mở rộng quy mô hệ thống và phác thảo các yếu tố đánh đổi giữa mở rộng theo chiều dọc và chiều ngang
|
|
12
|
+
|
|
13
|
+
## Quy trình từng bước
|
|
14
|
+
|
|
15
|
+
### Bước 1: Thu thập Yêu cầu & Ràng buộc
|
|
16
|
+
- Liệt kê các yêu cầu chức năng (hệ thống phải làm gì)
|
|
17
|
+
- Liệt kê các yêu cầu phi chức năng (throughput, quy mô, độ trễ, tính sẵn sàng)
|
|
18
|
+
- Xác định các ràng buộc kỹ thuật (năng lực của team, ngân sách, thời gian, công nghệ hiện có)
|
|
19
|
+
|
|
20
|
+
### Bước 2: Thiết kế Mức Cao (High-Level Design)
|
|
21
|
+
- Phác thảo sơ đồ các component (services, clients, data stores)
|
|
22
|
+
- Phác thảo luồng dữ liệu và vòng đời của request/response
|
|
23
|
+
- Lựa chọn giải pháp lưu trữ (SQL, NoSQL, Cache, Document store)
|
|
24
|
+
|
|
25
|
+
### Bước 3: Thiết kế Chi tiết & Hợp đồng API
|
|
26
|
+
- Định nghĩa các mô hình schema database và chiến lược đánh index
|
|
27
|
+
- Thiết kế hợp đồng API cụ thể (REST endpoints, cấu trúc GraphQL, đặc tả gRPC)
|
|
28
|
+
- Thiết kế cơ chế xử lý lỗi, chiến lược lưu cache và định nghĩa hàng đợi sự kiện (event queue)
|
|
29
|
+
|
|
30
|
+
### Bước 4: Phân tích Đánh đổi (Trade-off Analysis)
|
|
31
|
+
- Tài liệu hóa rõ ràng các lựa chọn kiến trúc kèm phân tích đánh đổi (ví dụ: Tối ưu đọc vs. Tối ưu ghi)
|
|
32
|
+
- Xây dựng chiến lược mở rộng (sharding, replication, cơ chế failover)
|
|
33
|
+
|
|
34
|
+
## Input yêu cầu
|
|
35
|
+
|
|
36
|
+
- Mục tiêu kiến trúc, đặc tả kỹ thuật hoặc user stories
|
|
37
|
+
- Tải trọng dự kiến (requests mỗi giây, kích thước dữ liệu)
|
|
38
|
+
- Ràng buộc về công nghệ hiện có của dự án
|
|
39
|
+
|
|
40
|
+
## Output mong đợi
|
|
41
|
+
|
|
42
|
+
- Tài liệu thiết kế hệ thống bao gồm:
|
|
43
|
+
- Sơ đồ kiến trúc (ASCII hoặc Mermaid)
|
|
44
|
+
- Mô hình dữ liệu và DB schema
|
|
45
|
+
- Đặc tả kỹ thuật các API endpoint
|
|
46
|
+
- Chiến lược Cache/Queue
|
|
47
|
+
- Phân tích đánh đổi rõ ràng
|
|
48
|
+
|
|
49
|
+
## Giọng điệu & Quy tắc
|
|
50
|
+
|
|
51
|
+
- Mọi quyết định thiết kế đều phải kèm theo phân tích đánh đổi tương ứng.
|
|
52
|
+
- Đảm bảo tính mô-đun của thiết kế và giải thích rõ ranh giới giữa các service.
|
|
53
|
+
- Tránh over-engineering (thiết kế quá phức tạp). Hãy thiết kế cho quy mô 10x nhưng xây dựng cho quy mô 1.5x trước.
|
|
54
|
+
|
|
55
|
+
## Templates có sẵn
|
|
56
|
+
|
|
57
|
+
- Không có
|
|
58
|
+
|
|
59
|
+
## Scripts có sẵn
|
|
60
|
+
|
|
61
|
+
- Không có
|
|
62
|
+
|
|
63
|
+
## Ví dụ
|
|
64
|
+
|
|
65
|
+
Xem thư mục `examples/`.
|
|
66
|
+
|
|
67
|
+
## Liên kết với các kỹ năng khác
|
|
68
|
+
|
|
69
|
+
- **documents**: Dùng để tạo tài liệu đặc tả kỹ thuật và sản phẩm.
|
|
70
|
+
- **suggestion**: Dùng để phân tích hệ thống hiện tại và đề xuất cải tiến kiến trúc.
|