Plan a trip day by day and check the budget
Trip plans from a chat rarely add up. Here the plan is made with prices, a budget check with fresh eyes adds them up and sends the plan back while it is over budget, and the final plan comes with a list of what to book in what order.
3 steps in 3 stages · 3 subagents · a kit of 7 files
Free. Built in your browser; nothing is uploaded. No API key, no account.
How it runs
Steps in the same stage start at the same time. Each subagent gets only what its incoming edges carry, and a step in a fresh context never sees the reasoning of the steps before it. A gate decides whether the work passes, and a failed gate re-runs the work it checks.
- Stage 1
Plan the days · Worker
sonnet · WebSearch, WebFetch
- Stage 2
Check the budget · Checker
opus · WebSearch, WebFetch · fresh context
Gate: The costs add up to the stated total, the total is within the budget, and every price has a source or is marked as an estimate.
- Stage 3
Final plan · Writer
sonnet · WebFetch
Use it when
- You have a destination, dates and a budget.
- You want prices checked, not estimated.
- You want to know what to book first.
Change these first
- Say what the budget includes, for example without flights.
- Add must-see places or pace preferences to your request.
Need a workflow built for your team? Fixed-price packages
What you get
An orchestrating SKILL.md, one Claude Code subagent per step with its own tools and model, and the same skill as a Cursor rule. Your agent runs it with its own subagents; nothing on this site calls a model.
- .claude/skills/plan-a-trip/SKILL.mdorchestrator
- .claude/skills/plan-a-trip/graph.skill.mdgraph source
- .claude/agents/plan-a-trip-itinerary.mdsubagent
- .claude/agents/plan-a-trip-budget-check.mdsubagent
- .claude/agents/plan-a-trip-final-plan.mdsubagent
- .cursor/rules/plan-a-trip.mdcCursor rule
- README.mdreadme
--- name: plan-a-trip description: "Plans a trip day by day with costs from the web, checks that the costs add up and stay within the budget, then writes the final plan and a booking list." --- # plan-a-trip Plans a trip day by day with costs from the web, checks that the costs add up and stay within the budget, then writes the final plan and a booking list. This skill is a graph: each step has its own prompt and context, and only the payloads named below move between steps. ## Plan Run the stages in order. Every model step runs in its own subagent; do not do a step's work yourself. Only command steps and approvals are yours to run. Steps in the same stage do not depend on each other: start them together, in one message with several subagent calls. The input (`trip`) is the user's goal: their request, word for word, handed on under `### trip`. Ask for it if the user has not given one. ### Stage 1 · 1 step - **PLAN THE DAYS** (`itinerary`) → subagent `plan-a-trip-itinerary` - Hand it: the user's goal. - Expect: `day_plan` (markdown). ### Stage 2 · 1 step - **CHECK THE BUDGET** (`budget_check`) → subagent `plan-a-trip-budget-check` · fresh context - Hand it: the user's goal; the output of PLAN THE DAYS (`itinerary`). Nothing else: no notes of your own, no other step's reasoning, no earlier conversation. - Expect: `checked_plan` (markdown). - Gate: The costs add up to the stated total, the total is within the budget, and every price has a source or is marked as an estimate. It ends with `GATE: PASS` or `GATE: FAIL` and one line per step to redo. - On `GATE: FAIL`: re-run only the steps it names, handing each its previous output and its line of the verdict; keep every other output (at most 2 times). Then re-run, in plan order, every step between a re-run step and this one (commands too), so this step judges fresh outputs, not stale ones. Then run this step again. If it still fails, stop and show the user the gate result. ### Stage 3 · 1 step - **FINAL PLAN** (`final_plan`) → subagent `plan-a-trip-final-plan` - Hand it: the user's goal; the output of CHECK THE BUDGET (`budget_check`). ## Final answer Return the output of **FINAL PLAN** to the user as it is. … 19 more lines in the kit
Run it in a Claude chat
Add Skill Graph to Claude as a connector, then ask. Claude runs each step and the connector checks every answer before the next one starts.
Set up the connectorAsk Claude
Use Skill Graph to run the plan-a-trip workflow on: 4 days in Lisbon in May for two people, budget 1,500 euros without flights.The graph file
The whole workflow is one Markdown file, graph.skill.md: the steps and edges in the frontmatter, one prompt per step below it. The guide explains every field.
graph.skill.md · 78 lines
---
name: plan-a-trip
description: Plans a trip day by day with costs from the web, checks that the costs add up and stay within the budget, then writes the final plan and a booking list.
spec: skill-graph/1
topology:
nodes:
- id: trip
type: input
label: TRIP DETAILS
- id: itinerary
type: worker
label: PLAN THE DAYS
model: sonnet
tools: [WebSearch, WebFetch]
- id: budget_check
type: verifier
label: CHECK THE BUDGET
isolated_context: true
model: opus
tools: [WebSearch, WebFetch]
gate: The costs add up to the stated total, the total is within the budget, and every price has a source or is marked as an estimate.
on_fail: retry
max_retries: 2
- id: final_plan
type: synthesizer
label: FINAL PLAN
model: sonnet
tools: [WebFetch]
edges:
- from: trip
to: [itinerary, budget_check, final_plan]
- from: itinerary
to: budget_check
contract: day_plan
- from: budget_check
to: final_plan
contract: checked_plan
contracts:
day_plan:
format: markdown
description: A day-by-day plan; every item has a cost with its source or an estimate mark, and the plan ends with the total.
checked_plan:
format: markdown
description: The plan with corrected costs and total, and what was changed to fit the budget.
---
# Node Prompts & Edge Contracts
## @node: itinerary
Plan this trip:
{{trip}}
Make a day-by-day plan: where to stay, how to get around, what to see and do, and where to eat. Search the web for current prices. Keep the total within the budget if one is given; if none is given, plan a mid-range trip.
Return the plan in Markdown, one section per day. Give every item a cost with its source link, or mark it "estimate". End with a cost table by category and the total.
## @node: budget_check
You are checking a trip plan someone else made, as a careful travel agent would.
The trip details: {{trip}}
The plan:
{{itinerary}}
Add up the costs yourself and compare with the stated total. Check the budget. Open the sources of the three biggest costs and confirm the prices. Check that the days are realistic: travel times, opening days.
Return the plan with corrected costs and total, then a short list of what you changed.
## @node: final_plan
Write the final trip plan from the checked version:
{{budget_check}}
The traveller's details: {{trip}}
Return Markdown: a one-paragraph summary with the total cost, the day-by-day plan, the budget table, and a booking checklist in the order to book things.
More workflows for a chat
- Research a topic and fact-check itSearch the web, check every claim against its source with fresh eyes, then a short answer with links
- Review my essay against a rubricScore each rubric criterion with quotes, suggest line edits, re-check every score, then the feedback
- Compare productsShortlist, research each one on the same criteria, check every price and spec, then a pick