@mertogemini
Kỹ năng này cho phép bạn tương tác với tài khoản Trello để liệt kê bảng, xem danh sách và tạo thẻ tự động.
---
Tên: kỹ năng tích hợp trello
Mô tả: Kỹ năng này cho phép bạn tương tác với tài khoản Trello để liệt kê bảng, xem danh sách và tạo thẻ tự động.
---
#Kỹ năng tích hợp Trello
Kỹ năng tích hợp Trello cung cấp kết nối liền mạch giữa tác nhân AI và tài khoản Trello của người dùng. Nó trao quyền cho tổng đài viên tự động tìm nạp các bảng và danh sách hiện có, đồng thời tạo thẻ nhiệm vụ mới trên các bảng cụ thể dựa trên lời nhắc của người dùng.
## Tính năng
- **Tìm nạp bảng**: Truy xuất danh sách tất cả các bảng Trello mà người dùng có quyền truy cập, bao gồm Tên, ID và URL của họ.
- **Tìm nạp danh sách**: Truy xuất tất cả các danh sách (các cột như "Việc cần làm", "Đang tiến hành", "Xong") thuộc một bảng cụ thể.
- **Tạo thẻ**: Tự động tạo thẻ mới với tiêu đề và mô tả trong danh sách được chỉ định.
---
## Thiết lập & Điều kiện tiên quyết
Để sử dụng kỹ năng này cục bộ, bạn cần cung cấp thông tin xác thực API Nhà phát triển Trello của mình.
1. Tạo thông tin đăng nhập của bạn tại [Trello Developer Portal (Power-Ups Admin)](https://trello.com/app-key).
2. Tạo khóa API.
3. Tạo Mã thông báo Bí mật (Quyền truy cập Đọc/Ghi).
4. Thêm các thông tin xác thực này vào tệp `.env` gốc của dự án:
```env
# Trello Integration
TRELLO_API_KEY=your_api_key_here
TRELLO_TOKEN=your_token_here
```
---
## Cách sử dụng & Kiến trúc
Kỹ năng này sử dụng các tập lệnh Node.js độc lập nằm trong thư mục `.agent/skills/trello_skill/scripts/`.
### 1. Liệt kê tất cả các bảng
Tìm nạp tất cả các bảng cho người dùng được xác thực để xác định đúng mục tiêu `boardId`.
**Thực thi:**
```bash
node .agent/skills/trello_skill/scripts/list_boards.js
```
### 2. Liệt kê các cột (List) trong một bảng
Tìm nạp các danh sách bên trong một bảng cụ thể để tìm chính xác `listId` (ví dụ: truy xuất ID cho cột "Việc cần làm").
**Thực thi:**
```bash
node .agent/skills/trello_skill/scripts/list_lists.js <boardId>
```
### 3. Tạo thẻ mới
Đẩy một thẻ mới vào danh sách được chỉ định.
**Thực thi:**
```bash
node .agent/skills/trello_skill/scripts/create_card.js <listId> "<Card Title>" "<Optional Description>"
```
*(Luôn đặt tiêu đề và mô tả thẻ trong dấu ngoặc kép để tránh việc chia tách đối số bash).*
---
## Quy trình làm việc của Tác nhân AI
Khi người dùng yêu cầu quản lý hoặc thêm tác vụ vào Trello, hãy tự động thực hiện theo các bước sau:
1. **Xác định mục tiêu**: Nếu không xác định được mục tiêu `listId`, trước tiên hãy chạy `list_boards.js` để xác định `boardId` chính xác, sau đó thực thi `list_lists.js <boardId>` để truy xuất `listId` tương ứng (ví dụ: đối với "Việc cần làm").
2. **Thực thi lệnh**: Chạy tập lệnh `create_card.js <listId> "Task Title" "Task Description"`.
3. **Báo cáo lại**: Xác nhận việc tạo thành công với người dùng và cung cấp URL trực tiếp tới thẻ Trello mới được tạo.
TẬP TIN:create_card.js
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../../../../.env') });
const API_KEY = process.env.TRELLO_API_KEY;
const TOKEN = process.env.TRELLO_TOKEN;
if (!API_KEY || !TOKEN) {
console.error("Lỗi: TRELLO_API_KEY hoặc TRELLO_TOKEN bị thiếu trong tệp .env.");
quá trình.exit(1);
}
const listId = process.argv[2];
const cardName = process.argv[3];
const cardDesc = process.argv[4] || "";
if (!listId || !cardName) {
console.error(`Usage: node create_card.js <listId> "card_name" ["card_description"]`);
quá trình.exit(1);
}
hàm không đồng bộ createCard() {
const url = `https://api.trello.com/1/cards?idList=listId&key=API_KEY&token=TOKEN`;
thử {
phản hồi const = đang chờ tìm nạp (url, {
phương thức: 'BÀI',
tiêu đề: {
'Chấp nhận': 'ứng dụng/json',
'Loại nội dung': 'application/json'
},
nội dung: JSON.stringify({
tên: tên thẻ,
desc: thẻDesc,
tư thế: 'đỉnh'
})
});
nếu (!response.ok) {
const errText = đang chờ phản hồi.text();
ném Lỗi mới (`HTTP error! status: response.status, message: errText`);
}
thẻ const = đang chờ phản hồi.json();
console.log(`Successfully created card!`);
console.log(`Name: card.name`);
console.log(`ID: card.id`);
console.log(`URL: card.url`);
} bắt (lỗi) {
console.error("Không tạo được thẻ:", error.message);
}
}
createCard();
TẬP TIN: list_board.js
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../../../../.env') });
const API_KEY = process.env.TRELLO_API_KEY;
const TOKEN = process.env.TRELLO_TOKEN;
if (!API_KEY || !TOKEN) {
console.error("Lỗi: TRELLO_API_KEY hoặc TRELLO_TOKEN bị thiếu trong tệp .env.");
quá trình.exit(1);
}
hàm không đồng bộ listBoards() {
const url = `https://api.trello.com/1/members/me/boards?key=API_KEY&token=TOKEN&fields=name,url`;
thử {
phản hồi const = đang chờ tìm nạp (url);
if (!response.ok) ném ra Lỗi mới(`HTTP error! status: response.status`);
bảng const = đang chờ phản hồi.json();
console.log("--- Bảng Trello của bạn ---");
board.forEach(b => console.log(`Name: b.name\nID: b.id\nURL: b.url\n`));
} bắt (lỗi) {
console.error("Không tìm nạp được bảng:", error.message);
}
}
listBoards();
TẬP TIN:list_lists.js
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../../../../.env') });
const API_KEY = process.env.TRELLO_API_KEY;
const TOKEN = process.env.TRELLO_TOKEN;
if (!API_KEY || !TOKEN) {
console.error("Lỗi: TRELLO_API_KEY hoặc TRELLO_TOKEN bị thiếu trong tệp .env.");
quá trình.exit(1);
}
const boardId = process.argv[2];
nếu (!boardId) {
console.error("Cách sử dụng: nút list_lists.js <boardId>");
quá trình.exit(1);
}
danh sách hàm không đồng bộ() {
const url = `https://api.trello.com/1/boards/boardId/lists?key=API_KEY&token=TOKEN&fields=name`;
thử {
phản hồi const = đang chờ tìm nạp (url);
if (!response.ok) ném ra Lỗi mới(`HTTP error! status: response.status`);
danh sách const = đang chờ phản hồi.json();
console.log(`--- Lists in Board boardId ---`);
list.forEach(l => console.log(`Name: "l.name"\nID: l.id\n`));
} bắt (lỗi) {
console.error("Không tìm nạp được danh sách:", error.message);
}
}
danh sáchDanh sách();