@kesflow/kf 0.1.0 → 0.1.1

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.
Files changed (3) hide show
  1. package/README.md +8 -0
  2. package/SKILL.md +37 -0
  3. package/package.json +15 -5
package/README.md CHANGED
@@ -23,3 +23,11 @@ kf lms upload slide.html --buoi-id UUID
23
23
  Use `--dry-run` to validate an operation without writing and `--pretty` for indented JSON. High-risk operations require `--yes`. Normal output is one JSON line on stdout; errors are one JSON line on stderr. Exit codes: 0 success, 2 usage, 3 authentication or permission, 4 business error, 5 server or network.
24
24
 
25
25
  Credentials are stored in `~/.config/kf/credentials.json` (directory mode 700, file mode 600). `KF_API_URL` is honoured by `kf login` and saved with the token. Changing it later requires another login. Plain HTTP is accepted only for localhost loopback tests.
26
+
27
+ ## Skill cho Claude Code
28
+
29
+ Gói kèm skill `kf-cli` (hướng dẫn agent dùng `kf` đúng cách). Cài một lần:
30
+
31
+ ```
32
+ mkdir -p ~/.claude/skills/kf-cli && cp "$(npm root -g)/@kesflow/kf/SKILL.md" ~/.claude/skills/kf-cli/SKILL.md
33
+ ```
package/SKILL.md ADDED
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: kf-cli
3
+ description: Thao tác nội bộ KesFlow qua CLI `kf` thay cho bấm màn ops — chốt buổi học LMS (gắn record từ Drive, tải slide, đổi tên/gỡ tệp, ghi recap/bài tập/chuẩn bị, đăng buổi), xem lớp và buổi mình phụ trách. Dùng khi nhân sự KesFlow nhờ "chốt buổi", "up slide/record lên LMS", "ghi recap", "đăng buổi", "đổi tên record", "xem buổi lớp TA05" hoặc nhắc tới `kf`. Không dùng cho việc ngoài danh sách `kf --help` (tiền, ghi danh, gửi mail tự do chưa có trong CLI).
4
+ ---
5
+
6
+ # kf — CLI nội bộ KesFlow cho agent
7
+
8
+ `kf` gọi Agent API của KesFlow **nhân danh người đang đăng nhập**; quyền do DB quyết định theo vai của người đó, y như màn ops.
9
+
10
+ ## Đăng nhập — người dùng tự làm, KHÔNG qua chat
11
+ - Chưa đăng nhập (`kf status` thoát mã 3, `NOT_LOGGED_IN`) hoặc token hết hạn/thu hồi (401): bảo người dùng
12
+ 1. vào ops → **Kết nối của tôi** → **Tạo token** (đặt tên máy);
13
+ 2. **mở một terminal riêng** (ô chat Claude Code với `!` không có terminal nên không dùng được), gõ `kf login`, dán token vào ô ẩn.
14
+ - **Không bao giờ** hỏi, nhận, đọc, in hay ghi token. Không tự chạy `kf login`. Không đọc `~/.config/kf/credentials.json`.
15
+
16
+ ## Cách dùng
17
+ - Danh sách thao tác (lấy trực tiếp từ server, luôn đúng): `kf --help`. Tham số một thao tác: `kf <op> --help`, `kf schema <op>`.
18
+ - Gọi: `kf <op> --<tham-so> <giá trị>` hoặc `kf <op> --json '{...}'`. Kết quả: một dòng JSON (`--pretty` để đọc).
19
+ - Không chắc thì chạy thử trước: thêm `--dry-run` (chỉ kiểm, không ghi gì).
20
+ - Tải tệp từ máy lên buổi học: `kf lms upload <tệp> --buoi-id <id> [--loai slide_pdf|slide_html|record|video_xem_truoc] [--ten ...]`.
21
+ - Tìm `buoi-id`: `kf status` (lớp tôi phụ trách) → `kf lms-buoi --lop-ma <MÃ LỚP>`.
22
+
23
+ ## Thao tác rủi ro cao (`[high]`, cần `--yes`)
24
+ - Ví dụ `lms-dang-buoi --gui-thu true` gửi thư cho **cả lớp thật**.
25
+ - Chỉ thêm `--yes` **sau khi người dùng đồng ý rõ trong chat** với đúng nội dung: buổi nào, lớp nào, có gửi thư không. Không tự suy ra ý định gửi thư.
26
+ - `--yes` không thay người duyệt; người dùng nên để Claude Code hỏi quyền trước lệnh `kf … --yes`.
27
+
28
+ ## Đọc kết quả
29
+ | Mã thoát | Nghĩa | Làm gì |
30
+ |---|---|---|
31
+ | 0 | OK | báo kết quả |
32
+ | 2 | Sai cách dùng / thiếu `--yes` / cấu hình | sửa lệnh; cấu hình lỗi → nhắc đăng nhập lại ở terminal riêng |
33
+ | 3 | 401 (token) / 403 `khong_vai` (không có vai với lớp/buổi đó) | 401 → nhắc đăng nhập lại; 403 → báo người dùng không có quyền, không thử đường khác |
34
+ | 4 | Lỗi nghiệp vụ (`LMS_*`, vd `LMS_DA_CO_RECORD`) | đọc mã, báo người dùng |
35
+ | 5 | Mạng/server; `AGENT_TAT` = Agent API đang tắt | báo người dùng, không thử lại liên tục |
36
+
37
+ `lms-dang-buoi` có thể trả `da_dang:false, thieu:["record"]`: buổi chưa có record sẵn sàng nên chưa đăng — không phải lỗi.
package/package.json CHANGED
@@ -1,12 +1,22 @@
1
1
  {
2
2
  "name": "@kesflow/kf",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "KesFlow agent CLI",
5
5
  "type": "module",
6
- "bin": { "kf": "./dist/cli.js" },
7
- "files": ["dist", "README.md"],
8
- "publishConfig": { "access": "public" },
9
- "engines": { "node": ">=22" },
6
+ "bin": {
7
+ "kf": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "SKILL.md"
13
+ ],
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "engines": {
18
+ "node": ">=22"
19
+ },
10
20
  "scripts": {
11
21
  "build": "tsc -p tsconfig.json && node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\"",
12
22
  "prepack": "npm run build",