diff --git a/.claude/skills/trello-llm-arranged-card/SKILL.md b/.claude/skills/trello-llm-arranged-card/SKILL.md new file mode 100644 index 0000000..b34cca7 --- /dev/null +++ b/.claude/skills/trello-llm-arranged-card/SKILL.md @@ -0,0 +1,126 @@ +--- +name: trello-llm-arranged-card +description: Use when the user wants to create a Trello card in the NixCN CMS board's LLM Arranged list from natural-language instructions, and the target card should be written safely with exact board/list validation. +--- + +# Trello LLM Arranged Card + +## Overview + +Create cards only in `NixCN CMS / LLM Arranged`. + +Core rule: validate the exact board and exact list before writing. Never guess, never fall back to the active board, and never create the card if the target cannot be matched exactly. + +## When to Use + +Use this skill when the user wants Claude to turn an instruction into a Trello card in: +- board: `NixCN CMS` +- list: `LLM Arranged` + +Do not use this skill for: +- moving cards +- editing existing cards +- creating boards or lists +- writing cards to any other board/list unless the user explicitly asks to change this skill + +## Required Target + +Always use these exact values: + +- `boardId`: `69b25ef1ed862e287ff0b657` +- `boardName`: `NixCN CMS` +- `listId`: `69c49bf90863369ce20526ec` +- `listName`: `LLM Arranged` + +Always verify the board and list before writing. + +## Input Mapping + +Minimum required field: +- card title + +Default mapping from natural language: +- short primary request -> card title +- remaining details -> card description + +If the user provides structured fields, map them as: +- `title:` -> card name +- `description:` or remaining body -> card description +- `due:` -> due date in ISO 8601 +- `start:` -> start date in `YYYY-MM-DD` +- `labels:` -> labels, only if explicitly provided + +If labels are provided by name, first call `mcp__trello__get_board_labels` with `boardId: 69b25ef1ed862e287ff0b657`, require exact name matches, then pass the matched label IDs. If any label cannot be matched exactly, ask the user instead of guessing. + +Do not infer labels, due dates, assignees, or checklists unless the user explicitly asks. +If the user provides unsupported details, preserve them in the card description instead of dropping them silently. +If a natural-language date cannot be resolved confidently, ask a follow-up question. + +## Workflow + +### 1. Validate destination + +Before creating the card: +1. call `mcp__trello__list_boards` and require an exact board name match for `NixCN CMS` with `id: 69b25ef1ed862e287ff0b657` +2. call `mcp__trello__get_lists` with `boardId: 69b25ef1ed862e287ff0b657` +3. confirm `listId: 69c49bf90863369ce20526ec` exists in that board with exact list name `LLM Arranged` +4. use the exact `boardId` and exact `listId` when creating the card + +If exact validation fails, stop and tell the user what is missing. + +### 2. Validate content + +If there is no clear card title, ask for one. + +If the user gives only a loose idea and wants help organizing it, you may propose a cleaned-up title and description first, but do not create the card until the user confirms the synthesized content. + +### 3. Check duplicates + +Before creating the card, call `mcp__trello__get_cards_by_list_id` with: +- `boardId: 69b25ef1ed862e287ff0b657` +- `listId: 69c49bf90863369ce20526ec` + +If a near-identical card already exists, warn the user and ask whether to create another one. + +### 4. Create the card + +Use `mcp__trello__add_card_to_list` with: +- `boardId: 69b25ef1ed862e287ff0b657` +- `listId: 69c49bf90863369ce20526ec` +- `name: ` +- optional `description`, `dueDate`, `start`, `labels` + +### 5. Return auditable output + +After creation, always report: +- board name +- list name +- card name +- card id +- card url + +## Safety Rules + +- Always pass `boardId: 69b25ef1ed862e287ff0b657` explicitly on Trello calls used by this skill. +- Never use the active board as an implicit fallback. +- Never fuzzy-match a board or list name. +- Never create in `Backlog`, `To Do`, or any other list as a fallback. +- Never silently drop user-provided details. +- Never guess labels or due dates. +- If the request is ambiguous, ask instead of writing. + +## Quick Reference + +| Need | Action | +|---|---| +| User wants a card created from plain language | Extract title, put remaining details in description | +| Title is unclear | Ask for title or propose one for confirmation | +| Target list missing or renamed | Stop and report exact mismatch | +| User repeats same request | Warn that creation is not idempotent and may duplicate cards | + +## Common Mistakes + +- **Using the current active board** instead of the fixed destination — forbidden. +- **Creating with only a vague title** when the instruction is too ambiguous — ask first. +- **Guessing metadata** like labels or due dates — only use explicit user input. +- **Reporting only “done”** — always return card id and URL.