원클릭으로
javis-builder
Tạo hoặc sửa năng lực của Javis: agent, skill, workflow, loop, plugin. Kèm mẫu file chuẩn và luật chống trùng.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Tạo hoặc sửa năng lực của Javis: agent, skill, workflow, loop, plugin. Kèm mẫu file chuẩn và luật chống trùng.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Lưu tin nhắn hiện tại nguyên văn vào sources/ (kèm ảnh), tự chưng cất lên wiki nếu note đáng.
Chuyển HTML sang file Webcake .pke để tải lên Webcake chỉnh sửa tiếp.
Tiêu hoá một source thô vào Second Brain, chưng cất thành tri thức wiki tích luỹ.
Rà soát sức khoẻ wiki của Second Brain, trả về danh sách vấn đề. Không tự sửa hàng loạt.
Khai thác tri thức trong Second Brain: tổng hợp, so sánh, giả thuyết. Trả lời có trích dẫn.
SOC 직업 분류 기준
| name | Javis Builder |
| description | Tạo hoặc sửa năng lực của Javis: agent, skill, workflow, loop, plugin. Kèm mẫu file chuẩn và luật chống trùng. |
| group | AI |
Kích hoạt khi người dùng nói những câu như: "tạo agent chuyên X", "thêm kỹ năng Y", "dựng workflow nghiên cứu rồi viết", "tạo loop mỗi 2 tiếng làm Z", "viết tool/plugin tính ...", "làm cho Javis biết làm ...".
Khi người dùng muốn Javis có thêm một năng lực, bạn TỰ GHI FILE .md đúng chuẩn dưới đây vào vault (brain đang chọn). Studio / trang tương ứng tự nhận file mới. Luôn báo cáo ngắn sau khi tạo.
Javis/agents/<slug>.md---
type: agent
name: <Tên tiếng Việt>
slug: <ascii>
role: <vai trò 1 câu>
skills: [slug-skill] # [] nếu chưa gán; chỉ gán skill đã có trong skills/
model: "" # "" mặc định | sonnet|opus|haiku|fable (Claude) | gpt-5.5|gpt-5.4|gpt-5.3-codex (ChatGPT/Codex)
updated: <YYYY-MM-DD>
---
<system prompt: cách làm việc, nguyên tắc, định dạng đầu ra mong muốn>
Viết system prompt cho agent theo khung metaprompt (rút từ metaprompt của Anthropic - ĐỪNG viết 1-2 câu chung chung kiểu "bạn là chuyên gia X"):
skills/<slug>/SKILL.md---
name: <Tên skill>
description: <nêu THẲNG năng lực, TỐI ĐA 150 ký tự - vd "Chuyển HTML sang file Webcake .pke.">
group: <Marketing|Bán hàng|Nội dung|Vận hành|Tài chính|AI|Năng suất|Cá nhân>
---
<hướng dẫn chi tiết cho AI khi skill kích hoạt>
Không có lưới an toàn. Skill viết theo tài liệu này là GHI THẲNG RA ĐĨA: không qua
POST /skills nên không có kiểm tra phía server, và lint CI chỉ soi skill HỆ THỐNG, không
soi skill trong skills/ của brain. Vi phạm chuẩn dưới đây sẽ KHÔNG có thông báo lỗi nào -
skill cứ thế hỏng âm thầm lúc chạy. Bạn là lớp phòng thủ duy nhất.
description TỐI ĐA 150 ký tự. Viết xong hãy ĐẾM, đừng ước lượng - đây là việc
bắt buộc, không phải lời khuyên. Router cắt đúng ở đó (skill_router.SKILL_DESC_MAX) ở
cả system prompt lẫn mô tả tool, nên viết dài hơn là phần đuôi MẤT IM LẶNG và skill không
route được. Không ai cảnh báo bạn: không đếm là hỏng mà không biết.description nêu THẲNG năng lực. KHÔNG mở đầu bằng "Kích hoạt khi...", "Sử dụng skill
này khi..." - mọi skill đều mở như vậy nên nó đốt 29 ký tự mà không phân biệt gì.
Tốt: Chuyển HTML sang file Webcake .pke. Xấu: Kích hoạt khi người dùng muốn chuyển...description có dấu hai chấm thì phải bọc cả giá trị trong nháy kép, kẻo YAML hiểu
nhầm thành mapping.## Khi nào dùng - nơi không bị cắt và chỉ
đọc khi skill đã nạp. Index để TÌM, thân file để LÀM.## Khi nào dùng / ## Chuẩn bị / ## Cách chạy /
## Quy trình / ## Bẫy / ## Kiểm chứng. Mục nào không có nội dung thật thì bỏ,
đừng bịa cho đủ.skills/<slug>/references/<chủ-đề>.md, script xuống
skills/<slug>/scripts/, và trỏ tới bằng đường dẫn tương đối. Từ bản 0.9.64: bản mirror
sang .claude/skills (đường Claude Code nạp NATIVE) copy ĐỆ QUY cả cây, nên với skill
trong brain, references//scripts/ tới được CẢ đường router lẫn đường native. Ngoại lệ
còn lại: skill HỆ THỐNG (bundled sẵn theo app, cài vào brain qua system sync) vẫn chỉ ship
mỗi SKILL.md - cây con của chúng (vd tools//examples/ của html-to-webcake) CHƯA tới
brain nào, đây là lỗ ở tầng cài đặt khác, chưa được vá.Javis/workflows/<slug>.md---
type: workflow
name: <Tên>
slug: <ascii>
status: off # tạo mới để 'off' cho user xem trước rồi bật
description: <mô tả ngắn>
steps:
- agent: <agent-slug>
task: "<việc; {{input}}=đầu vào user, {{prev}}=kết quả bước trước>"
verify_agent: <agent-slug> # tùy chọn: agent soi lỗi
max_retries: 1 # tùy chọn
updated: <YYYY-MM-DD>
---
<mô tả>
Nếu workflow tham chiếu agent chưa tồn tại -> TẠO agent đó trước.
Javis/loops/<slug>.mdViệc LẶP MỚI: ưu tiên GỌI TOOL javis_schedule (op=create, name/prompt/schedule - vd
schedule="120m" hoặc "mỗi 2 tiếng") thay vì tự ghi file. Tool tự đặt đúng slug, đúng frontmatter
(kể cả goal: custom bên dưới - thiếu field này là lỗi thật đã xảy ra: self_improve.py mặc định
goal: business, loop chỉ đọc số liệu MCP và BỎ QUA HOÀN TOÀN nhiệm vụ ở thân file), và chặn
trùng tên. CHỈ tự ghi file tay (mẫu dưới) khi: (a) SỬA loop ĐÃ CÓ, hoặc (b) cần trường nâng
cao mà tool chưa nhận - quiet_hours, max_runs_per_day, workspace, ambient_mcp, hoặc
goal khác custom (business/brain/product).
---
type: loop
name: <Tên>
slug: <ascii>
enabled: false # LUÔN tạo ở trạng thái TẮT
mode: suggest # suggest=chỉ đọc/đề xuất | auto=tự ghi nháp an toàn | full=toàn quyền
goal: custom # BẮT BUỘC khi ghi tay - thiếu dòng này self_improve.py mặc định
# 'business' (chỉ đọc số liệu MCP, bỏ qua hoàn toàn thân file dưới đây)
interval_min: 120 # tối thiểu 5
owner_chat: "<chat_id>" # chat_id NGƯỜI YÊU CẦU (tạo qua chat Telegram) - để báo đúng người;
# bỏ trống nếu tạo trên web (báo về ID Telegram đầu tiên)
updated: <YYYY-MM-DD>
---
<mô tả nhiệm vụ: mỗi vòng loop làm ĐÚNG việc này - đây chính là prompt của loop, viết tự-đủ>
<JAVIS_STATE_DIR>/plugins/<slug>/ (chung mọi brain); riêng 1 brain thì <vault>/plugins/<slug>/. 2 file: plugin.yaml + plugin.pyplugin.yaml:
name: <Tên tiếng Việt>
slug: <ascii>
version: 1.0.0
description: <tool này làm gì, khi nào engine nên gọi>
author: <ai tạo>
enabled: false # LUÔN tạo ở trạng thái TẮT
min_mode: readonly # readonly=chỉ đọc/tính (mặc định) | safe=có ghi | full=hành động thật
tools: [<ten_tool>]
hooks: [] # vd [post_tool_call] nếu dùng hook
plugin.py:
def register(ctx):
def handler(args, ctx): # args=dict; trả str (hoặc dict). Lỗi -> "ERROR: ...". Có thể async.
return "..."
ctx.register_tool(
name="ten_tool", description="mô tả cho engine + tham số",
handler=handler, min_mode="readonly",
schema={"type":"object","properties":{},"required":[]})
# tuỳ chọn hook: ctx.register_hook("post_tool_call", lambda tool_name="", **_: None)
ctx có ctx.vault_root, ctx.data_dir (state riêng plugin, không đụng vault), ctx.slug.
enabled: false + mode: suggest. Chỉ nâng mode: auto/full hoặc bật
ngay khi user yêu cầu RÕ RÀNG, và phải cảnh báo rủi ro (full = tự tạo đơn/tiêu tiền/đăng bài).origin: javis-learned), nhưng KHÔNG ghi
đè skill đã có và KHÔNG hồi sinh skill user đã tắt; agent tự động -> để nháp chờ duyệt. Skill do
user yêu cầu trực tiếp -> tạo bật luôn nhưng phải kiểm trùng + description nêu rõ năng lực,
phân biệt được với skill khác (mô tả mơ hồ làm Javis chọn skill sai). Đừng tạo skill trùng
chức năng skill đã có.enabled: false,
min_mode: readonly, và NÓI RÕ với user: plugin chỉ chạy khi họ đặt env JAVIS_ENABLE_USER_PLUGINS=true
rồi khởi động lại (rào chống chạy code lạ). KHÔNG viết plugin làm hành động tiền/đơn/gửi tin; việc đó để MCP + mức quyền lo.