Sơ đồ có nguồn, có kiểm tt-a1i/archify

Từ hiện trạng thành sơ đồ có thể kiểm tra.

Agent đọc code rồi viết JSON. Archify ra file HTML. Bắt đầu từ việc cần hiểu, không từ loại sơ đồ.

Cách chạy

  1. Hỏi
  2. Đọc code
  3. Viết JSON
  4. Mở HTML
JSON → validate → HTML Archify 2.16.0
Archify system overview in light theme
JSON
nguồn
5
mode
validate

Archify là gì

Archify giải quyết vấn đề gì?

Mermaid, Excalidraw, tech-graph — và hầu hết prompt "vẽ sơ đồ" — ra một tấm hình. Archify bắt agent viết JSON có kiểu, rồi compile thành HTML. Khác chỗ: có nguồn để review, có kiểm, không tự bịa thêm box.

01

Trông ổn, nối sai

AI thêm service, mũi tên, fallback không có trong code.

Archify chỉ vẽ node và mối nối đã viết trong JSON.

02

Không review được

Chỉ còn PNG/SVG — không có nguồn để đọc hay diff.

JSON là bản gốc. HTML chỉ là bản xem.

03

Lần sau ra hình khác

Cùng một prompt, layout và chữ đổi mỗi lần.

Cùng JSON thì luôn ra cùng sơ đồ.

Từ hỏi tới sơ đồ

  1. 01

    Câu hỏi cần trả lời

    Người xem sơ đồ — maintainer, reviewer — cần hiểu gì?

  2. 02

    Evidence trong repo

    Chỉ fact đã mở, đã khoanh phạm vi.

  3. 03

    JSON nguồn

    Bản gốc có kiểu — đây là source of truth.

  4. 04

    Validate

    Kiểm JSON và hình học. Sai thì sửa đúng chỗ đó.

  5. 05

    Deliver atomic

    Ghi HTML một lần. Fail thì file cũ vẫn còn.

  6. 06

    Ảnh + người review

    Screenshot là evidence, chưa phải pass.

  7. 07

    HTML cho docs, PR, presentation

    File mở trên trình duyệt để share.

Cách nghĩ đúng

Agent ghi hiện trạng. Archify ra sơ đồ. Người review.

Sơ đồ AI hay trông ổn nhưng nối sai chỗ, không có nguồn để soi, lần sau ra hình khác. Archify bắt viết JSON có kiểu, rồi luôn render cùng một artifact.

01

Agent đọc code

Chọn phạm vi, main path, viết JSON. Không bịa service, edge, hay fallback.

02

Archify compile

Schema, geometry, identity, delivery atomic, viewer độc lập.

03

Người nhìn thật

JSON + HTML + receipt. Ảnh tự động không được tuyên bố đã pass.

JSON

Luôn lưu git

Bản gốc của sơ đồ — để đọc, sửa, diff trong git.

HTML

Lưu khi cần share

File mở trên trình duyệt — gửi docs, PR, slide.

Receipt

Giữ khi cần chứng minh

Biên nhận đã kiểm — validate, hash, ảnh chụp.

Cài đặt

Chọn runtime, copy đúng command

Team hoặc CI nên dùng lệnh project để mọi người cùng một Skill. Global chỉ khi bạn dùng Archify ở mọi repo trên máy.

cursor icon

Cursor

--agent cursor

Bạn dùng Cursor Agent trong editor.

Global · mọi repo trên máy
npx -y skills add tt-a1i/archify --skill archify --agent cursor --global --copy --yes
Project · khuyến nghị cho team
npx -y skills add tt-a1i/archify --skill archify --agent cursor --copy --yes

Nếu Cursor chưa thấy skill, mở một session Agent mới.

CLI thủ công cho power user
# Chỉ dùng CLI thủ công khi bạn tự author hoặc kiểm JSON
git clone https://github.com/tt-a1i/archify
cd archify/archify
node bin/archify.mjs doctor
node bin/archify.mjs validate architecture examples/web-app.architecture.json --quality showcase --json
node bin/archify.mjs deliver architecture examples/web-app.architecture.json web-app.html --quality showcase --json
node bin/archify.mjs visual-check web-app.html --json

Bắt đầu từ câu hỏi

11 mẫu sơ đồ theo việc cần hiểu

Hỏi bạn cần hiểu gì, rồi chọn mẫu. Ảnh chỉ để xem output. Prompt viết từ code của bạn — đừng copy layout mẫu.

Xem gallery chính thức

Architecture

Hệ thống có gì, nối thế nào, ranh giới nào?

Không dùng khi cần đúng thứ tự gọi — dùng Sequence.

Workflow

Công việc đi qua actor nào, có quyết định, duyệt, retry không?

Không dùng khi cần state được lưu của một object — dùng Lifecycle.

Sequence

Trong một lần gọi, ai gọi ai trước, trả gì?

Không dùng khi cần map topic/queue — dùng Dataflow.

Dataflow

Data đi từ đâu, biến đổi thế nào, ai dùng?

Không dùng khi cần timeline hoặc ai làm từng task.

Lifecycle

Object có state nào, chuyển tiếp và kết thúc ra sao?

Không dùng khi chỉ có bước chạy, chưa lưu state — dùng Workflow.

Lọc theo loại sự thật

01

Kiến trúc

Hiểu hệ thống đang có gì, ai sở hữu, ranh giới nào quan trọng.

Tổng quan hệ thống

Kiến trúc

Hệ thống có những thành phần nào, và chúng nối với nhau ra sao?

Dùng khi Nhận repo mới, onboarding, design review.

Không dùng khi Cần đúng thứ tự gọi.

Prompt — chỉnh theo repo

Dùng Archify trong repo này để trả lời: một maintainer mới cần thấy input đi qua những runtime component nào, dependency nào nằm ngoài process, và đâu là primary path? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Ownership khi deploy

Kiến trúc

Workload chạy ở đâu, ai sở hữu, cơ chế vượt ranh giới là gì?

Dùng khi Sẵn sàng production, bàn giao infra — khi đã có owner, region, phạm vi private và crossing mechanism.

Không dùng khi Local CLI, hoặc thiếu fact deploy. Profile này fail nếu thiếu fact — không bịa region/security-group.

Prompt — chỉnh theo repo

Dùng Archify Architecture với deployment ownership chỉ khi code/infra đã có owner, region, phạm vi private và crossing mechanism. Câu hỏi: workload chạy ở đâu, ai sở hữu, vượt ranh giới bằng gì? Nếu thiếu fact, dừng và báo — đừng bịa. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
02

Quy trình

Công việc đi qua actor nào, quyết định / duyệt / retry ra sao.

Vòng gọi tool của agent

Quy trình

Agent lập plan, xin quyền, gọi tool và recover thế nào?

Dùng khi Agent runtime, MCP, chính sách duyệt.

Không dùng khi Chỉ cần map component tĩnh.

Prompt — chỉnh theo repo

Dùng Archify Workflow để trả lời: agent lập plan, xin quyền, gọi tool và recover thế nào? Lanes theo trách nhiệm. Một main path. Retry và lỗi đi ngoài corridor chính. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Quy trình giao hàng

Quy trình

Một change đi từ commit tới production thế nào?

Dùng khi Thiết kế CI/CD, review release.

Không dùng khi Câu hỏi là state của release object — dùng Lifecycle.

Prompt — chỉnh theo repo

Dùng Archify Workflow để trả lời: một change đi từ commit tới production qua build, cổng chặn, duyệt, verify, communicate và rollback thế nào? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Runbook sự cố

Quy trình

Detect, triage, mitigate, communicate và verify thế nào?

Dùng khi Bàn giao on-call, tabletop.

Không dùng khi Cần dashboard monitoring live.

Prompt — chỉnh theo repo

Dùng Archify Workflow để trả lời: detect, triage, mitigate, communicate và verify một sự cố thế nào? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
03

Luồng gọi

Ai gọi ai, thứ tự nào, điểm fallback.

Chuỗi gọi API

Luồng gọi

Ai gọi ai, thứ tự nào, trả về gì?

Dùng khi API docs, debug auth/cache.

Không dùng khi Thứ tự không quan trọng.

Prompt — chỉnh theo repo

Dùng Archify Sequence để trả lời: trong một request, participant nào gọi participant nào trước, và trả gì? Một interaction. Không biến thành map component. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Vòng async sau ACK

Luồng gọi

Sau ACK ban đầu còn những bước nào?

Dùng khi Job, webhook, callback, eventual consistency.

Không dùng khi Cần map topic/consumer — dùng Dataflow.

Prompt — chỉnh theo repo

Dùng Archify Sequence để trả lời: sau ACK ban đầu, queue, worker, retry, webhook và polling còn chạy thế nào? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
04

Luồng dữ liệu

Data và event đi đâu, PII và đường lỗi.

Nguồn gốc dữ liệu

Luồng dữ liệu

Data đến từ đâu, biến đổi thế nào, ai dùng?

Dùng khi ETL, analytics, PII, feature model.

Không dùng khi Cần ownership task hoặc timeline.

Prompt — chỉnh theo repo

Dùng Archify Dataflow để trả lời: data đến từ đâu, biến đổi thế nào, lưu ở đâu, ai consume, PII đi qua boundary nào? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Topology event stream

Luồng dữ liệu

Event đi qua topic, consumer group, replay và DLQ nào?

Dùng khi Review nền tảng Kafka/event, semantics đã xác minh.

Không dùng khi Chưa xác minh at-least-once / exactly-once / replay.

Prompt — chỉnh theo repo

Dùng Archify Dataflow để trả lời: event đi qua producer, topic, consumer group, replay và DLQ nào? Chỉ ghi semantics đã xác minh. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
05

Vòng đời

State được lưu, transition, retry/cancel/fail, outcome cuối.

Vòng đời object

Vòng đời

Object có những state nào, và kết thúc ra sao?

Dùng khi Order, ticket, job, agent run — khi state được lưu.

Không dùng khi Chỉ có bước thực thi, chưa có state machine được persist.

Prompt — chỉnh theo repo

Dùng Archify Lifecycle chỉ khi object có state được lưu, event chuyển state, retry và terminal outcome. Câu hỏi: object có state nào, chuyển thế nào, kết thúc ra sao? Nếu đây là đề xuất chứ không phải hiện trạng, ghi rõ Proposed Design. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Vòng đời bản release

Vòng đời

Release đang ở state nào, và chuyển tiếp thế nào?

Dùng khi GitOps, controller, status API.

Không dùng khi Cần thứ tự hành động của người và CI — dùng Workflow.

Prompt — chỉnh theo repo

Dùng Archify Lifecycle để trả lời: deployment object đi qua build, verify, approve, promote, pause, rollback và terminal state nào? Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

SDLC

Archify dùng lúc nào trong vòng đời dự án?

SDLC (software development life cycle) là các giai đoạn làm phần mềm: nhận dự án, viết code, review, phát hành, vận hành. Áp cho mọi team — không gắn AgentKit. Không bắt sơ đồ mọi PR; chỉ khi cách hệ thống nối với nhau đổi.

Nhận dự án mới

Architecture tổng quan

Tạo mental model ban đầu.

Prompt mẫu

Dùng Archify Architecture để trả lời: hệ thống này có những phần nào, nối thế nào, phần nào nằm ngoài process? 8–12 box, một đường chính. Chỉ lấy file đã mở.

Trước khi code

Sequence, Dataflow, hoặc Lifecycle

Chốt một contract — một câu hỏi, một sơ đồ.

Prompt mẫu

Dùng Archify để trả lời đúng một câu hỏi trước khi code: ai gọi ai theo thứ tự nào, data đi đâu, hoặc object có những state nào? Chọn Sequence, Dataflow, hoặc Lifecycle — không gộp.

Đang implement

Cập nhật JSON có chọn lọc

Sửa sơ đồ đang có, đừng vẽ lại từ đầu.

Prompt mẫu

Cập nhật JSON Archify hiện có cho thay đổi này. Giữ ID ổn định. Chỉ thêm/bỏ/đổi khi code evidence hỗ trợ. Không vẽ sơ đồ mới nếu topology không đổi.

Review PR

Architecture Delta

Reviewer thấy chỗ JSON đổi — không suy impact.

Prompt mẫu

Dùng Archify Architecture Delta trên PR này. Baseline: JSON đã có trong repo. Trả đúng added, removed, changed, moved, rerouted. Không suy impact, risk, hay merge safety.

Release

Delivery Workflow hoặc Deployment Lifecycle

Một câu hỏi: việc làm, hoặc state của bản phát hành.

Prompt mẫu

Dùng Archify để trả lời đúng một câu hỏi lúc release: change đi từ commit tới production thế nào, hoặc bản phát hành đang ở state nào? Chọn Workflow hoặc Lifecycle — không gộp.

Vận hành

Incident runbook

Chuẩn hóa detect, triage, mitigate, verify.

Prompt mẫu

Dùng Archify Workflow để trả lời: khi sự cố xảy ra, detect, triage, mitigate, communicate và verify thế nào? Một main path, nhánh lỗi đi ngoài.

Onboarding

Architecture tổng quan

Giảm thời gian đọc repo.

Prompt mẫu

Dùng Archify Architecture để một người mới thấy: request đi qua những phần nào, dependency nào ở ngoài, đâu là đường chính? 8–12 box.

Compliance / data

Data lineage

Data đến từ đâu, biến đổi, lưu, ai dùng.

Prompt mẫu

Dùng Archify Dataflow để trả lời: data đến từ đâu, biến đổi thế nào, lưu ở đâu, ai dùng, PII đi qua chỗ nào? Chỉ ghi fact đã mở.

Nên vẽ lại khi đổi

  • Runtime boundary
  • External dependency
  • Primary request / processing path
  • Cache hoặc storage ownership
  • Sync đổi async hoặc ngược lại
  • Trust / deployment crossing
  • Durable lifecycle state
  • Data contract hoặc classification quan trọng

Không cần sơ đồ mới

  • Rename thuần
  • Refactor nội bộ, topology không đổi
  • Chỉ test
  • Formatting
  • Bug fix không đổi architectural contract

Để Archify không thành việc giấy tờ: rename, refactor nội bộ, test, format, bug fix không đổi contract — bỏ qua.

AgentKit

Dùng Archify với workflow AgentKit

Archify không phải skill /ak: chính thức. Cài riêng, rồi chèn vào cổng review của workflow AgentKit.

Cách 1 · Gọi tên skill

Dùng Archify tạo architecture map cho repo này.

Cách 2 · Slash / lệnh $

/archify … /skill:archify … $archify …

Claude Code / Cursor: /archify. Pi hoặc OMP: /skill:archify. Codex: tiền tố $.

Nguyên tắc đặt Archify

Chèn vào cổng review. Không thay kiểm thử.

Archify = nhìn rõ Test / security / review
01

Cần evidence, không luôn cần scout

AgentKit đi hiểu → quyết định → làm → kiểm tra → ship. Chưa hiểu repo thì /ak:scout trước. Đã có plan, debug notes, hoặc PR diff thì Archify dùng evidence đó.

02

Sơ đồ để review, không phải verdict

Không thay /ak:test, /ak:security, /ak:code-review, hay quyền quyết của người review.

03

Dùng ở cổng rủi ro cao

Auth, payment, PII, token, webhook, migration, background job, incident — sơ đồ trước khi chốt plan/cook.

04

Không nhét vào quick path

Task nhỏ giữ workflow ngắn nhất hữu ích (/ak:cook --fast). Chỉ thêm Archify khi sơ đồ giảm rủi ro hoặc làm handoff rõ hơn.

01

A1 · Build a new feature

Xây feature mới

Feature hình dạng chưa rõ hoặc đụng nhiều file. Bỏ qua với Quick implement.

Hiện trạng

evidence / /ak:scout archify /ak:brainstorm

Một Architecture: hệ thống đang có gì trước khi chọn hướng.

Hướng đã chọn

/ak:brainstorm archify /ak:plan

Một Workflow hoặc một Dataflow — không gộp cả hai. Rồi /ak:cook.

Trước brainstorm

Dùng Archify Architecture để trả lời: hiện trạng feature/refactor này có những component, dependency, external service và một request path chính nào? Mục tiêu: input rõ cho /ak:brainstorm. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Sau brainstorm

Dùng Archify để trả lời đúng một câu hỏi sau brainstorm: luồng công việc mới đi qua actor nào, hoặc data mới đi đâu? Chọn Workflow hoặc Dataflow, không cả hai. Ghi component đổi, boundary chạm, câu hỏi còn mở. Mục tiêu: /ak:plan bám architecture. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
02

G2 · Auth feature · Payments

Auth / payment / data nhạy cảm

Đụng tiền, PII, token, webhook, quyền, hoặc data rời hệ thống.

Trước plan cứng

/ak:better-auth hoặc domain skill archify /ak:plan

Một Dataflow (data đi đâu) hoặc một Sequence (ai gọi ai). Rồi cook → security → test.

Một câu hỏi rủi ro

Dùng Archify để trả lời đúng một câu hỏi cho thay đổi auth/payment/data này: data nhạy cảm đi đâu và rời hệ thống ở đâu, hoặc ai gọi ai theo thứ tự nào? Chọn Dataflow hoặc Sequence. Đánh dấu actor, quyền, token, webhook, PII, provider ngoài, failure path. Giả định chưa chắc phải ghi. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
03

C1 · Fix a bug

Sửa bug / incident

Lỗi nằm ở retry, queue, async state, hoặc nhiều service. Ưu tiên /ak:fix; đường sâu khi RCA chưa rõ.

Sau chẩn đoán

/ak:debug archify /ak:fix

Một Sequence cho failing interaction. Lifecycle chỉ khi object có state được lưu.

Failing path

Dùng Archify Sequence để trả lời: failing path vừa debug gọi participant nào, theo thứ tự nào, retry/timeout trả về đâu? Tách happy path khỏi failing path. Không biến bước thực thi thành Lifecycle trừ khi state được persist. Mục tiêu: chọn hướng /ak:fix trước khi sửa code. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.
04

D1 · Review a PR · D3 · Ship

Review PR / ship

Chỉ khi architectural contract đổi. Không dùng cho mọi PR.

Delta cấu trúc

JSON baseline đã validate archify /ak:code-review / /ak:ship

Architecture Delta: added, removed, changed, moved, rerouted. Không suy risk, impact, merge safety.

Architecture Delta

Dùng Archify Architecture Delta trên PR hiện tại. Baseline: JSON architecture đã validate trong repo. Giữ stable ID cho component không đổi. Chỉ thêm/bỏ/đổi/reroute khi code evidence hỗ trợ. Trả đúng: added, removed, changed, moved, rerouted. Không suy blast radius, production impact, risk, hay merge safety. Reviewer đọc JSON, receipt, và delta đã render. Đọc commit hiện tại. Chỉ ghi file và line range sau khi đã mở. Author JSON trước: 8–12 node chính, một main path, nhánh phụ ngắn. Không copy topology từ gallery. Validate sau mỗi lần sửa. Deliver chỉ khi validate pass. Rồi visual-check; ảnh là evidence, không phải human review đã pass. Ghi rõ phần chưa chắc.

Đừng làm

Anti-pattern hay gặp

Hay làm

Một prompt tạo đủ năm sơ đồ

Nên làm

Bắt đầu Architecture + Workflow. Thêm mode khi có câu hỏi mới.

Hay làm

Mega-diagram hàng chục service

Nên làm

Tối đa khoảng 12 node chính. Tách landscape và subsystem.

Hay làm

Chỉ commit HTML

Nên làm

JSON là nguồn. HTML là viewer. Receipt để audit.

Hay làm

Ép Deployment Ownership khi thiếu fact

Nên làm

Profile này fail nếu thiếu owner/region/crossing. Local CLI thì đừng dùng.

Hay làm

Biến bước thực thi thành Lifecycle

Nên làm

download → OCR → package là Workflow. Lifecycle cần state được lưu.

Hay làm

Xóa nhãn relationship để pass layout

Nên làm

Nhãn mang protocol/action/contract. Sửa bằng move, reroute, tăng spacing.

Hay làm

Gọi visual-check là human review

Nên làm

Ảnh là evidence. Người vẫn phải nhìn main path, boundary, label.

Hay làm

Set meta.locale: "vi"

Nên làm

Viết nội dung tiếng Việt, giữ identifier tiếng Anh, omit meta.locale. Viewer UI fallback English.