Bạn học gì qua gstack ?
Repo.
https://github.com/garrytan/gstack
Các workflow trong gstack (cách phối hợp skill).
Là 1 framework và design sản phẩm tới buidl sản phẩm trong dưới startup , của 1 bác SEO thì phải. Thật ra đối với mình nó khá phức tạp vì đầu óc kinh doanh của mình còn ít.
Thôi thì vì nó nổi nên nhân tiện tìm hiểu thêm.
Đây là giai đoạn hỏi các câu hỏi về định hình ý tưởng.

Đây là giai đoạn design.

Đây là giai đoạn design về mặt kĩ thuật.

Đây là giai đoạn build và ship

Đây là giai đoạn collect metric và gặt hái.

Nhìn qua lăng kính flowchart
Nó là cả 1 workflow định hình lên phong cách chuyên nghiệp.

/office-hours , /spec, /design-consultation là các skill giúp đình hình nên ý tưởng .
Đây là ba làn làm việc của skill, tương đương 3 vai trò.

Tiếp theo là 1 chuỗi các skill về plan và build.

Có cả 1 chuỗi skill , ấn tượng là cả browser testing và check security nữa mọi người, hội tụ đầy đủ chuyên nghiệp.
Ấn tượng cả phần learning.
Ở đây thấy có file learning.json, 1 kiểu cấu trúc mà mình hay thấy ở openclaw để append log message liên tục

gstack-learnings-log '{"skill":"review","type":"pitfall","key":"orders-n-plus-one",
"insight":"OrderList goi orders.customer trong vong lap, sinh N+1 query...",
"confidence":7,"source":"observed","files":["app/views/orders/index.html.erb"]}'
{..., "ts":"2026-08-22T14:07:06.137Z", "trusted":false}
Binary tự thêm 2 field. ts để tie-break dedup sau này. trusted được dẫn xuất từ source, bạn không set được — observed nên false.
Để hiểu cấu trúc dữ liệu , ta sẽ mô tả rõ như sau:
- type: là định tuyến, xác định cứng 7 loại.
| Type | Nghĩa chính thức | Ai ghi | Ví dụ (từ demo vừa chạy) |
|---|---|---|---|
| pattern | Cách làm tái sử dụng được | Capture Learnings của review/office-hours | result-object-services — "Mọi service trả Result.ok/err thay vì raise" |
| pitfall | Cái không được làm | review, qa, investigate | orders-n-plus-one — "OrderList gọi orders.customer trong vòng lặp" |
| preference | Bạn đã nói rõ ý muốn | /learn add, office-hours | no-tailwind — "Team không dùng Tailwind, chỉ CSS modules" |
| architecture | Quyết định cấu trúc | plan-eng-review, plan-ceo-review | stripe-webhook-idempotency — "Stripe retry 3 lần/24h nên handler phải idempotent" |
| tool | Đặc tính library/framework | review, ship | sidekiq-cron-tz — "sidekiq-cron đọc TZ từ ENV, không từ config.time_zone" |
| operational | Môi trường / CLI / workflow của dự án | preamble của MỌI skill | bun-test-watch-windows — "bun test --watch treo trên Windows" |
| investigation | Root cause của một bug đã điều tra | chỉ /investigate | checkout-500-nil-cart — "500 ở checkout: session cart nil sau Redis evict" |
Chúng bắt nguồn từ các skill action: • /learn search --type • /learn export → chia section Patterns / Pitfalls / Preferences / Architecture để dán vào CLAUDE.md • /learn stats → BY_TYPE
- key: Nó không phải tiêu đề, không phải tag, không phải mô tả. Nó là primary key — danh tính của một learning trong một bảng append-only. Cơ chế latest-wins: cùng key+type → chỉ bản ts mới nhất sống Key neo vào thứ bất biến, không neo vào cách diễn đạt. Công thức dùng được: <vùng code hoặc component>-<hiện tượng>, 2–5 từ, kebab-case, chữ thường hết.
| ❌ Tránh | Vì sao | ✅ Thay bằng |
|---|---|---|
slow-page |
Quá chung — lần sau AI có thể đặt page-perf, slow-load |
orders-n-plus-one |
orders-index-n-plus-one-fix-query-issue |
Mô tả hành động, mà hành động đổi theo từng lần | orders-n-plus-one |
orders-page-load-slow-because-of-loop |
Là một câu, không phải khoá — lần sau chắc chắn diễn đạt khác | orders-n-plus-one |
Orders-N-Plus-One |
Hoa/thường phá dedup | orders-n-plus-one |
n1 |
Quá ngắn, dễ đụng với module khác | orders-n-plus-one |
- insight: Là nội dung agent thật sự đọc. Nó đến từ gstack-brain-cache bootstrap cắt 80 ký tự đầu làm title của goal draft • Nội dung này được replay thẳng vào context của agent ở session sau — nên mới phải quét injection ở tầng ghi
Đây là bảng mô tả cách learning được duy trì, add + update + delete

GHI type ─┐
key ──┼─→ validate → reject hoặc pass
confidence ──┤
source ──┘
insight ────→ hasInjection() → reject hoặc pass
↓
inject ts, derive trusted
↓
append 1 dòng (< PIPE_BUF = atomic)
ĐỌC ts + source ──→ ① decay → _effectiveConfidence
trusted ──→ ② trust gate (chỉ khi --cross-project)
key + type ──→ ③ dedup latest-wins
key+insight+files ──→ ④ filter --query / --type
_effConf + ts ──────→ ⑤ sort
⑥ cắt --limit
All rights reserved