Навык интеграции с Trello
Получение досок и списков Trello и создание карточек задач.
В навыке 4 файлов. Их можно скопировать или скачать по отдельности, сохранив указанные имена и папки.
SKILL.md
--- name: trello-integration-skill description: Этот навык позволяет работать с учётной записью Trello: получать списки досок и колонок и автоматически создавать карточки. --- # Навык интеграции с Trello Навык интеграции с Trello связывает ИИ-агента с учётной записью Trello пользователя. Агент может самостоятельно получать существующие доски и списки и создавать карточки задач в выбранных колонках по запросу пользователя. ## Возможности - **Получение досок:** список всех доступных пользователю досок Trello с названием, ID и URL. - **Получение списков:** все списки выбранной доски (например, колонки «Сделать», «В работе», «Готово»). - **Создание карточек:** автоматическое создание карточек с заголовком и описанием в указанных списках. --- ## Настройка и предварительные условия Для локального использования навыка нужны учётные данные Trello Developer API. 1. Создай учётные данные на [портале разработчиков Trello (Power-Ups Admin)](https://trello.com/app-key). 2. Создай ключ API. 3. Сгенерируй секретный токен с доступом на чтение и запись. 4. Добавь эти значения в корневой файл проекта `.env`: ```env # Trello Integration TRELLO_API_KEY=your_api_key_here TRELLO_TOKEN=your_token_here ``` --- ## Использование и устройство Навык использует автономные скрипты Node.js из каталога `.agent/skills/trello_skill/scripts/`. ### 1. Получить все доски Получи все доски пользователя, прошедшего аутентификацию, чтобы выбрать нужный `boardId`. **Команда:** ```bash node .agent/skills/trello_skill/scripts/list_boards.js ``` ### 2. Получить колонки (списки) доски Получи списки нужной доски, чтобы найти точный `listId` (например, ID колонки «Сделать»). **Команда:** ```bash node .agent/skills/trello_skill/scripts/list_lists.js <boardId> ``` ### 3. Создать карточку Создай карточку в указанном списке. **Команда:** ```bash node .agent/skills/trello_skill/scripts/create_card.js <listId> "<Card Title>" "<Optional Description>" ``` *(Всегда заключай заголовок и описание карточки в двойные кавычки, чтобы оболочка не разделила их на отдельные аргументы.)* --- ## Порядок действий ИИ-агента Когда пользователь просит управлять задачами в Trello или добавить задачу, действуй следующим образом: 1. **Определи место назначения:** если `listId` неизвестен, сначала запусти `list_boards.js` и найди нужный `boardId`, затем запусти `list_lists.js <boardId>` и получи соответствующий `listId` (например, для колонки «Сделать»). 2. **Выполни команду:** запусти скрипт `create_card.js <listId> "Task Title" "Task Description"`. 3. **Сообщи результат:** подтверди успешное создание карточки и дай пользователю прямой URL новой карточки Trello.
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("Error: TRELLO_API_KEY or TRELLO_TOKEN is missing from the .env file.");
process.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}"]`);
process.exit(1);
}
async function createCard() {
const url = `https://api.trello.com/1/cards?idList=${listId}&key=${API_KEY}&token=${TOKEN}`;
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: cardName,
desc: cardDesc,
pos: 'top'
})
});
if (!response.ok) {
const errText = await response.text();
throw new Error(`HTTP error! status: ${response.status}, message: ${errText}`);
}
const card = await response.json();
console.log(`Successfully created card!`);
console.log(`Name: ${card.name}`);
console.log(`ID: ${card.id}`);
console.log(`URL: ${card.url}`);
} catch (error) {
console.error("Failed to create card:", error.message);
}
}
createCard();
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("Error: TRELLO_API_KEY or TRELLO_TOKEN is missing from the .env file.");
process.exit(1);
}
async function listBoards() {
const url = `https://api.trello.com/1/members/me/boards?key=${API_KEY}&token=${TOKEN}&fields=name,url`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const boards = await response.json();
console.log("--- Your Trello Boards ---");
boards.forEach(b => console.log(`Name: ${b.name}\nID: ${b.id}\nURL: ${b.url}\n`));
} catch (error) {
console.error("Failed to fetch boards:", error.message);
}
}
listBoards();
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("Error: TRELLO_API_KEY or TRELLO_TOKEN is missing from the .env file.");
process.exit(1);
}
const boardId = process.argv[2];
if (!boardId) {
console.error("Usage: node list_lists.js <boardId>");
process.exit(1);
}
async function listLists() {
const url = `https://api.trello.com/1/boards/${boardId}/lists?key=${API_KEY}&token=${TOKEN}&fields=name`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const lists = await response.json();
console.log(`--- Lists in Board ${boardId} ---`);
lists.forEach(l => console.log(`Name: "${l.name}"\nID: ${l.id}\n`));
} catch (error) {
console.error("Failed to fetch lists:", error.message);
}
}
listLists();Текст доступен бесплатно по CC0 1.0. Источники и лицензии.
Как использовать навык
Прочитайте инструкцию и проверьте, какие файлы, инструменты и подключения ей нужны. Перенесите навык в совместимое приложение для AI-агентов или используйте подходящие шаги в чате. Если навык состоит из нескольких файлов, сохраните их структуру.