Bỏ qua để đến nội dung

Tiếp tục giữa dự án

Bạn bỏ dở dự án hai tuần, hoặc session agent mới không nhớ gì cả. Đừng bắt đầu bằng cách đọc file rồi đoán mình đang ở đâu.

/flow resume

Đây là verb đầu tiên cần chạy khi vào một dự án đang dở. Chỉ đọc, không chiếm lock, và ghép lại bản tóm tắt câu chuyện của session từ state đã có trên máy:

  • session trước: chỉ liệt kê tên lệnh, không bao giờ gồm raw args
  • card đang chạy (in flight) và dwell (thời gian nó đã nằm đó)
  • trạng thái gate hiện tại
  • đúng một dòng NEXT ->

Đọc dòng NEXT -> rồi làm đúng việc đó. Cùng một helper quyết định như /flow status, nên hai lệnh không bao giờ bất đồng với nhau.

Bỏ qua resume khi bạn đã có ngữ cảnh tươi mới trong cuộc hội thoại này. Nếu chính bạn vừa chạy next hoặc card một phút trước thì chạy lại cũng chẳng thêm được gì. Lệnh này dành cho những lần vào lạnh, không phải cho mọi lệnh.

/flow

/flow thuần chính là status: bạn đang ở đâu, cái gì đang chặn, dwell của stage hiện tại, danh sách card (rút gọn khi quá mười card), và một dòng tóm tắt bộ nhớ. Dùng resume để vào lại, status để tiếp tục làm việc.

/flow recall

Chạy recall khi bắt đầu stage hoặc card, trước khi soạn bất cứ thứ gì. Nó đọc lại lớp bền vững: debt mở, retro gần nhất, scope card trước, friction và backlog của harness, sức khỏe audit, playbook đã promote. Hãy coi output là ngữ cảnh để áp dụng — không phải nhiễu — để công việc bắt đầu mà vẫn thấy rõ những nỗi đau cũ, thay vì phải phát hiện lại từ đầu.

Việc capture do engine kích hoạt chứ không phải do người dùng tự làm: qua stage 01 thì seed một intake, check card pass thì ghi trace kèm tier, skip có chủ đích thì ghi debt. status hiện một dòng tóm tắt bộ nhớ; card tự động kèm scope card trước. Cải tiến cũng cơ học: harness audit chấm điểm entropy và drift, harness propose biến friction lặp lại thành backlog cải tiến khi một pattern xuất hiện ít nhất hai lần, harness decision outcome đóng vòng lặp dự đoán so với thực tế.

Cửa sổ hội thoại thì quên. Bản ghi bền vững thì không.

Khi một bài học lớn hơn phạm vi một dự án, hãy nâng nó lên:

/flow promote <playbook.md>

Lệnh này copy playbook vào KB liên dự án tại ~/.claude/flow/playbooks. Từ đó, recall sẽ hiện nó ở mọi nơi — không chỉ nơi nó được học.

Vòng lặp là capture → reuse → improve: next và check tự động ghi bản ghi, recall đọc lại, promote chia sẻ những bài học đã chứng minh được giá trị của mình.

Các engine bổ sung (Codex và Antigravity) cùng phần còn lại của vòng bền vững nằm ở Điều phối agent.

flow cho phép một session mỗi dự án. Hai session chia nhau một plan sẽ ghi đè state của nhau. Runner giữ flow/.lock: các lệnh mutate như next, card, skip và auto từ chối một lock lạ còn mới, status đưa ra cảnh báo, và lock tự thu hồi sau TTL FLOW_LOCK_TTL (mặc định 900 giây).

/flow unlock

Chỉ dùng khi session kia thật sự đã chết: terminal crash, cửa sổ bị bỏ dở. Nếu session kia còn sống, hãy dừng lại và phối hợp với người đang chạy. Đừng cố force vượt qua một lock còn sống; chạy song song sẽ làm hỏng plan.

FLOW_FORCE=1 chiếm lấy lock mà bạn chắc chắn đã chết. /flow unlock xóa nó. Nếu runner báo BLOCKED by another session’s lock, hãy dừng và phối hợp. Đừng dùng FLOW_FORCE để vượt qua session đang chạy.

Để được bảo vệ cứng thay vì chỉ cảnh báo, hãy export một FLOW_SESSION_ID ổn định một lần cho mỗi session, rồi truyền vào mọi lời gọi:

Terminal window
export FLOW_SESSION_ID=$(uuidgen)
FLOW_SESSION_ID=$FLOW_SESSION_ID bash ~/.claude/skills/flow/runner/flow.sh next

Không có nó, runner chỉ cảnh báo. Vì không chứng minh được session kia là ai, nên nó không bao giờ tự chặn.

Dự án có code nhưng không có thư mục flow/ là brownfield. Chưa có câu chuyện session nào để khôi phục, nên đừng bắt đầu bằng resume. Codebase có sẵn không bắt đầu ở stage Idea. /flow assess tạo khung (scaffold) và đặt gate cho flow/00-inspect.md (bản đồ hiện trạng) trước khi bất kỳ stage planning nào mở. Planning cho hệ thống có sẵn phải bám vào cái đang có thật — không phải cái mà README của repo tuyên bố là đang có.

Dự án greenfield bỏ bước này và bắt đầu bằng /flow next (Idea).

  1. Từ root dự án, chạy:

    /flow assess

    Lần đầu, lệnh copy template inspect sang flow/00-inspect.md, seed auto-scan (stack, CI, file ngữ cảnh, ranked surfaces), và seed file law. Gate chưa pass.

  2. Điền mọi section dựa trên bằng chứng (đọc code thật):

    • các lệnh stack / build / test / run lấy từ file thật
    • component, module, entry point chính
    • chức năng hiện tại (works / partial / stub / missing) kèm bằng chứng từ file
    • trạng thái UI/UX so với mục tiêu sản phẩm, hoặc ghi “no UI”
    • rủi ro, tech-debt, issue đã biết
    • baseline test và chất lượng (cái gì đã được cover, cách chạy suite)
    • Verdict: codebase có đủ khỏe để build tiếp không, và cái gì phải sửa trước?
  3. Bắt đầu rà soát chức năng và rủi ro từ auto-scan Ranked surfaces. Đó là những đoạn code có leverage cao nhất — bề mặt mà phần lớn codebase phụ thuộc vào, nơi rủi ro xuyên cắt dễ ẩn nấp nhất.

  4. Gắn tag cho mọi claim trọng yếu từ Functionality / Risks / Verdict trong Evidence ledger. Đừng viết policy sản phẩm như thể đó là sự thật, trừ khi tag là Authoritative.

    Tag Nghĩa
    Authoritative Instruction, quyết định đã chấp nhận, contract sản phẩm, thủ tục đã ghi
    Observed Code/config/test cho thấy hành vi hiện tại
    Derived Hệ quả vận hành suy trực tiếp từ implementation đã quan sát
    Decision required Lựa chọn chuẩn/sản phẩm chưa có authority
    Unknown Repo không xác lập câu trả lời
  5. Operator duyệt bản đánh giá. Brownfield do operator giữ gate. Ở mode teach, agent chỉ báo cáo — không tick box hay soạn artifact hộ.

  6. Chạy lại /flow assess. PASS cơ học nghĩa là không còn [FILL] và mọi box gate đã được check. FAIL sẽ liệt kê những chỗ còn thiếu; điền từ bằng chứng rồi chạy lại.

  7. Sau PASS cơ học, áp dụng semantic challenge trước khi planning:

    • Các claim trọng yếu đã được gắn tag Authoritative / Observed / Derived / Decision required / Unknown chưa?
    • Có claim Observed hoặc Derived nào bị âm thầm nâng thành luật sản phẩm must-build mà không có authority của operator không?
    • Các mục Decision required / Unknown đã được liệt kê cho operator, không bị bịa thêm vào Scope/PRD?
    • Ledger trống, hoặc chỉ còn hàng [FILL] trong khi box đã check, đều là rỗng ruột: báo mechanically-passed-but-qualitatively-weak.
  8. Khi cả hai lớp đồng ý, sang planning bằng /flow next.

Bạn có thể tái dùng scout / researcher (hoặc bmad-document-project) để gom bằng chứng. Gate vẫn phán xét. Operator vẫn duyệt.

Nếu bạn chạy flow từ một thư mục con như frontend/ mà không có flow/ riêng, nó sẽ nhận dự án flow tổ tiên gần nhất và in một dòng ghi chú ra stderr — thay vì tạo ra một root thứ hai bị phân mảnh. Thư mục con nào có flow/ hoặc cards/ riêng luôn được tôn trọng, cũng như FLOW_PROJECT_ROOT tường minh.


Dành cho maintainer (không phải trang công khai): skills/flow/SKILL.md, skills/flow/references/command-dispatch.md, skills/flow/_templates/00-inspect.md, skills/flow/references/gate-rules.md.