Install Claude Code
Claude Code is Anthropic’s official CLI for working with Claude from your terminal. Install it globally with npm:
npm install -g @anthropic-ai/claude-code
Then start it and authenticate:
claude
Follow the login prompt. You need an Anthropic account with API access.
Once installed, run claude from your project directory. That’s where all slash commands and skills will run. The workflow skill you’re about to build will be available in any Claude Code session on any machine where it’s installed.
Set up your Trello board
Create a Trello account at trello.com if you don’t have one. Create a new board for your project.
Add these five lists, in this order:
- Backlog: everything that might eventually get done
- Next: prioritised and ready to pull. The top card is what the agent picks up.
- In Progress: card moves here when the agent starts work
- In Review: card moves here when implementation is done, waiting for your sign-off
- Done: card moves here after you approve and the code is pushed
Get your full board ID. Open the board in your browser. The URL looks like:
https://trello.com/b/AbCdEfGh/my-board-name
The short ID in the URL is not the full board ID. To get it, append .json to the board URL:
https://trello.com/b/AbCdEfGh/my-board-name.json
Find "id" at the top of the JSON. It looks like 69b95fe4db457a4a0a902023. That’s what you’ll hardcode into the skill.
Write cards with a clear brief. Each card in the Next list should have a descriptive name, a description that explains what to build, and optionally an “Acceptance Criteria” checklist for specific done conditions. The agent reads all of this. Vague cards produce vague output.
Get a Trello API key
Go to the Trello Power-Ups admin page: https://trello.com/power-ups/admin
Create a new Power-Up. This is how Trello issues API credentials, even for personal use.
Once created, click “API Key” in the sidebar to see your key. From the same page, click “Token” to generate a token with read/write access to your boards.
You need both values:
TRELLO_API_KEYTRELLO_TOKEN
Keep these somewhere safe. You’ll supply them when configuring the MCP server in the next step.
Add the Trello MCP server
MCP (Model Context Protocol) servers give Claude Code access to external tools. The Trello MCP server exposes tools like get_cards_by_list_id, move_card, and add_comment that your skill will call.
Claude Code has a built-in command for adding MCP servers:
claude mcp add
When prompted:
- Server name:
trello - Transport type:
stdio - Command: the command that starts the Trello MCP server binary
A common pattern using npx:
npx -y @modelcontextprotocol/server-trello
When prompted for environment variables, add your credentials:
TRELLO_API_KEY=your_key_here
TRELLO_TOKEN=your_token_here
Verify the server connected:
claude mcp list
You should see trello listed. If it’s there, the mcp__trello__* tools will be available in Claude Code sessions.
You can also edit ~/.claude/settings.json directly and add the MCP config under the mcpServers key. The claude mcp add command writes to the same file.
Create the workflow skill
Skills are markdown files stored in ~/.claude/skills/. Each skill becomes a slash command: a file at ~/.claude/skills/my-workflow/SKILL.md becomes /my-workflow in any Claude Code session.
Create the directory and file:
mkdir -p ~/.claude/skills/my-workflow
touch ~/.claude/skills/my-workflow/SKILL.md
A skill file has two parts: frontmatter and the prompt body.
Frontmatter declares the tools the skill is allowed to use:
---
name: my-workflow
version: 1.0.0
description: |
Picks the top Trello card from Next, implements it, and ships.
Usage: /my-workflow (no arguments needed)
allowed-tools:
- Read
- Write
- Edit
- Glob
- Grep
- Bash
- EnterPlanMode
- ExitPlanMode
- AskUserQuestion
- mcp__trello__set_active_board
- mcp__trello__get_lists
- mcp__trello__get_cards_by_list_id
- mcp__trello__get_card
- mcp__trello__get_card_comments
- mcp__trello__get_acceptance_criteria
- mcp__trello__move_card
- mcp__trello__add_comment
- mcp__trello__update_checklist_item
---
The allowed-tools list is enforced. If a tool isn’t listed, Claude can’t use it even if it’s available in the session. Scope the skill to only what it needs.
Prompt body: everything after the frontmatter is the instruction set Claude follows when the skill runs.
Write the workflow steps
The prompt body is a numbered sequence of steps. Claude follows it literally. Here’s what each step does and how to write it.
Step 1: Connect to the board
Tell Claude to call set_active_board with your hardcoded board ID, then call get_lists and store the list IDs for Next, In Progress, In Review, and Done.
## STEP 1 — CONNECT TO THE BOARD
Call `set_active_board` with board ID `your_board_id_here`.
Then call `get_lists` and identify the IDs for:
- Next
- In Progress
- In Review
- Done
Store these IDs for use throughout the workflow.
Hardcode the board ID directly in the skill. It doesn’t change, and hardcoding it removes a whole class of errors where Claude tries to discover it dynamically and picks the wrong board.
Step 2: Read the top card
Tell Claude to call get_cards_by_list_id on the Next list, take the first card, then call get_card, get_card_comments, and get_acceptance_criteria. Have it print a one-paragraph summary of what it understood before doing anything else. This catches misreadings early.
Step 3: Move to In Progress
Call move_card with the card ID and the In Progress list ID.
Step 4: Create an implementation plan
The first place you’re in the loop. Call EnterPlanMode. Claude presents a plan and waits for your approval. Once you approve, it calls ExitPlanMode and proceeds.
EnterPlanMode is a Claude Code built-in that puts Claude into a plan-only state. It cannot edit files or run commands until you approve.
## STEP 4 — CREATE THE IMPLEMENTATION PLAN
Call `EnterPlanMode`. Create a plan covering:
- What files need to be created or modified
- The approach and key decisions
- Step-by-step implementation sequence
- How to verify the work is complete
Present the plan. Wait for user approval. Once approved, call `ExitPlanMode`.
Step 5: Log the plan to Trello
Before any implementation, call add_comment with the full plan. The card now has a record of what was planned, not just what was done.
Step 6: Execute
Tell Claude to carry out the plan. Include rules specific to your project:
Rules:
- Read reference files before writing new ones. Never write blind.
- Follow existing patterns and conventions.
- If you hit genuine ambiguity on a major decision, use AskUserQuestion.
- Run `npm run build` when done. Do not proceed if the build fails.
Step 7: Log the implementation to Trello
Call add_comment with a structured summary: files created, files modified, build result, and notes for the reviewer.
Step 8: Move to In Review
Call move_card with the In Review list ID.
Step 9: Pause for human review
The second place you’re in the loop. Claude presents a summary and stops, waiting for your feedback or an approval signal.
## STEP 9 — PAUSE FOR HUMAN REVIEW
Present:
- Card name
- 2-3 sentence summary of what was built
- Note that the card is now In Review
Ask: "What's your feedback?"
Stop here. Wait for the user's response.
Step 10: Review feedback loop
If the user gives feedback, Claude implements the changes, runs the build again, adds a comment documenting what changed, and returns to Step 9.
Define approval signals explicitly so Claude doesn’t have to guess:
Approval signals: "approved", "looks good", "ship it", "lgtm", "done", "yes",
or any clear positive confirmation. When in doubt, ask rather than assume.
Step 11: Ship
When approved:
- Stage implementation files with
git add(never.envor secrets), commit with a descriptive message, push to main. - Call
add_commentwith a “Shipped.” summary and the commit hash. - Call
move_cardto move the card to Done. - If the card had checklist items, mark each complete with
update_checklist_item.
Run the skill
In your project directory:
claude
Then type:
/my-workflow
Claude starts the workflow from Step 1. You’ll be prompted at plan approval and again at the review step. Everything else runs without you.
The whole flow, from picking up the card to pushing the commit, runs without you except at two points: approving the plan, and approving the output.
Adapt and extend
Hardcode the board ID. It doesn’t change, and letting Claude discover it dynamically is a reliable way to pick the wrong board.
Use EnterPlanMode for the planning step. Without it, Claude often skips straight to implementation when the task looks simple enough. Plan mode is a hard stop — there’s no way for it to write a file until you say yes.
Log to Trello at every stage. The card ends up as a complete record: what was planned, what was built, every review round, the shipped commit hash. That history is on the card, not buried in a conversation you’ll never find again.
Define approval signals explicitly. Claude will sometimes treat “ok fine” or “yeah that works” as approval when you meant something more tentative. Give it a defined list and it follows the rule.
The read-card, plan, implement, review, ship loop is the same for any project. What changes is the execution step. Swap out npm run build for cargo build, pytest, go test ./..., or whatever your verification command is. Replace the file-writing rules with conventions from your own codebase. Add project-specific tools to allowed-tools if you need them. The skill here is specific to an Astro site with npm, but the structure isn’t.
File layout:
~/.claude/
skills/
my-workflow/
SKILL.md # the skill definition
settings.json # global Claude Code settings, MCP server config
The skill is global, available in any Claude Code session on any project. If you want it scoped to one repo, put it in .claude/skills/ at the project root instead.
Comments
Loading comments…
Leave a comment