generate-tour-report
について
このスキルは、自己完結型のQuartoドキュメントとしてフォーマットされた旅行レポートを生成し、埋め込まれた地図、日次旅程、およびロジスティクステーブルを含むHTMLまたはPDF出力を作成します。計画中または完了した旅行を、共有可能でオフラインアクセス可能なガイドや専門的な提案書にまとめるために設計されています。開発者はこれを使用して、写真、統計、実用的な詳細を含む詳細な旅行文書の作成を自動化できます。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-tour-reportこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Generate Tour Report
Make formatted tour report. Embedded maps, daily itineraries, logistics tables, practical travel info.
When Use
- Compile planned tour into shareable document
- Make offline-accessible travel guide
- Document completed trip with photos, maps, stats
- Make professional tour proposal for group or client
- Consolidate route, accommodation, transport data into one doc
Inputs
- Required: Route data (waypoints, legs, distances, times)
- Required: Tour dates + duration
- Optional: Accommodation details (name, address, confirmation numbers)
- Optional: Transport bookings (flights, trains, car rental)
- Optional: GPX tracks or spatial data for map embedding
- Optional: Budget info (costs per category)
- Optional: Photos or images to include
Steps
Step 1: Compile Route + POI Data
Gather all tour data into structured format before building report.
Data Sources to Compile:
┌────────────────────┬──────────────────────────────────────────┐
│ Category │ Required Fields │
├────────────────────┼──────────────────────────────────────────┤
│ Route legs │ From, To, distance_km, time_hrs, mode │
│ Waypoints │ Name, lat, lon, arrival, departure, notes│
│ Accommodation │ Name, address, check-in/out, cost, conf#│
│ Transport │ Type, operator, depart, arrive, ref# │
│ Activities │ Name, time, duration, cost, booking_req │
│ Emergency contacts │ Local emergency #, embassy, insurance │
│ POIs │ Name, category, lat, lon, description │
└────────────────────┴──────────────────────────────────────────┘
Organize data by day for daily section structure:
- Group waypoints + activities by date
- Assign each transport leg to day
- Match accommodations to overnight dates
- Compute daily totals (distance, time, cost)
Got: Complete data collection organized by day, no schedule gaps (every night has accommodation, every leg has transport).
If fail: Data incomplete? Mark missing with [TBD] + add to follow-up checklist at report end. Dates don't align (arrival at accommodation before departure from previous stop)? Flag + adjust times.
Step 2: Structure Daily Sections
Make Quarto document skeleton with daily sections.
---
title: "Tour Name: Region/Country"
subtitle: "Date Range"
author: "Planner Name"
date: today
format:
html:
toc: true
toc-depth: 3
theme: cosmo
self-contained: true
code-fold: true
pdf:
documentclass: article
geometry: margin=2cm
toc: true
execute:
echo: false
warning: false
message: false
---
Structure document:
Report Structure:
1. Overview
- Tour summary (dates, total distance, highlights)
- Overview map (all waypoints, full route)
- Quick reference table (key dates, bookings, contacts)
2. Day 1: [Title]
- Day summary (start, end, km, hours)
- Route map for the day
- Timeline / schedule table
- Accommodation details
- POIs and activities
3. Day 2: [Title]
... (repeat for each day)
N. Logistics Appendix
- Full accommodation table
- Transport bookings table
- Packing checklist
- Emergency contacts
- Budget summary
Got: Complete .qmd file skeleton with YAML header, all daily sections as H2 headings, placeholder content.
If fail: Tour too long for single doc (more than 14 days)? Split weekly parts or tabset layout ({.tabset}). PDF output required? No interactive widgets (static maps).
Step 3: Embed Maps + Charts
Add spatial visualizations to each section.
Overview map:
#| label: fig-overview-map
#| fig-cap: "Tour overview with all stops"
leaflet::leaflet() |>
leaflet::addProviderTiles("OpenTopoMap") |>
leaflet::addPolylines(data = full_route, color = "#2563eb", weight = 3) |>
leaflet::addMarkers(data = stops, popup = ~paste(name, "<br>", date))
Daily route map:
#| label: fig-day1-map
#| fig-cap: "Day 1 route: City A to City B"
day1_route <- full_route[full_route$day == 1, ]
leaflet::leaflet() |>
leaflet::addProviderTiles("OpenStreetMap") |>
leaflet::addPolylines(data = day1_route, color = "#2563eb", weight = 4) |>
leaflet::addCircleMarkers(data = day1_stops, radius = 6, popup = ~name)
Elevation profile (for hiking/cycling days):
#| label: fig-day3-elevation
#| fig-cap: "Day 3 elevation profile"
ggplot2::ggplot(day3_elevation, ggplot2::aes(x = dist_km, y = elev_m)) +
ggplot2::geom_area(fill = "#bfdbfe", alpha = 0.5) +
ggplot2::geom_line(color = "#1d4ed8", linewidth = 0.7) +
ggplot2::theme_minimal() +
ggplot2::labs(x = "Distance (km)", y = "Elevation (m)")
Got: Each daily section has at least route map. Multi-modal days (driving + hiking) → road map + elevation profile. Overview section has map showing complete tour.
If fail: Leaflet maps fail to render (common in PDF mode)? Fall back to static maps via tmap::tmap_mode("plot") or ggplot2 with ggspatial::annotation_map_tile(). Spatial data unavailable for day → simple text description instead.
Step 4: Add Logistics Tables
Insert structured tables for accommodations, transport, budget.
Accommodation table:
| Night | Date | Accommodation | Address | Check-in | Cost | Conf# |
|-------|------------|--------------------|--------------------|----------|--------|-------|
| 1 | 2025-07-01 | Hotel Alpine | Bergstrasse 12 | 15:00 | EUR 95 | AB123 |
| 2 | 2025-07-02 | Mountain Hut | Zugspitze Huette | 16:00 | EUR 45 | -- |
| 3 | 2025-07-03 | Pension Edelweiss | Dorfplatz 3 | 14:00 | EUR 72 | CD456 |
Transport table:
| Date | Type | From | To | Depart | Arrive | Ref# |
|------------|-------|---------------|---------------|--------|--------|--------|
| 2025-07-01 | Train | Munich Hbf | Garmisch | 08:15 | 09:32 | DB1234 |
| 2025-07-03 | Bus | Zugspitze | Ehrwald | 10:00 | 10:25 | -- |
| 2025-07-04 | Train | Innsbruck | Munich Hbf | 16:45 | 18:30 | OBB567 |
Budget summary:
| Category | Estimated | Actual | Notes |
|-----------------|-----------|--------|-------------------------|
| Accommodation | EUR 212 | | 3 nights |
| Transport | EUR 85 | | Rail passes recommended |
| Food | EUR 150 | | EUR 50/day estimate |
| Activities | EUR 60 | | Cable car, museum |
| **Total** | **EUR 507** | | |
Got: Complete logistics tables with all bookings listed chronologically. No missing dates in accommodation table. Budget totals correct.
If fail: Booking details not confirmed? Use [TBD] + highlight row. Tour involves multiple currencies? Add currency column + exchange rates in footnote.
Step 5: Render Report
Compile Quarto document into final output format.
# Render to self-contained HTML (best for offline use)
quarto render tour-report.qmd --to html
# Render to PDF (for printing)
quarto render tour-report.qmd --to pdf
# Preview with live reload during editing
quarto preview tour-report.qmd
Post-rendering checks:
- Open HTML file + verify all maps load correctly
- Test table of contents links work
- Verify all images + charts render at appropriate sizes
- Check self-contained HTML works offline (disconnect + reload)
- PDF: verify page breaks at logical points (between days)
Got: Complete, self-contained document works offline, contains all tour info in navigable format.
If fail: Rendering fails? Check R console for package errors (missing sf, leaflet, ggplot2). Self-contained HTML too large (over 20 MB)? Reduce map tile resolution or use PNG screenshots. PDF rendering fails with LaTeX errors? Install TinyTeX with quarto install tinytex.
Checks
- Report renders no errors in target format
- Overview map shows complete route with all stops
- Each day has route map + schedule
- Accommodation table covers every night of trip
- Transport table includes all legs
- Budget totals accurate
- Self-contained HTML works offline
- Table of contents navigates correct to all sections
- No [TBD] placeholders remain (or intentionally flagged)
Pitfalls
- Interactive maps in PDF: Leaflet + HTML widgets can't render in PDF. Always provide static map alternatives for PDF output.
- Oversized self-contained HTML: Embedding many map tiles → huge files. Limit zoom levels or static map screenshots for tile-heavy maps.
- Missing time zones: International tours cross time zones. Always specify time zone for departure + arrival.
- Stale booking references: Confirmation numbers + times can change. Include "last updated" date + remind users verify before travel.
- No offline fallback: Report relies on web-loaded map tiles → blank offline. Use
self-contained: trueor pre-render maps as images. - Inconsistent date formats: Mix of DD/MM + MM/DD → confusion. Use ISO 8601 (YYYY-MM-DD) consistently.
See Also
plan-tour-route— generates route data compiled into this reportcreate-spatial-visualization— creates maps + charts embedded in reportcreate-quarto-report— general Quarto document creation + configplan-hiking-tour— hiking-specific data for mountain tour reportscheck-hiking-gear— packing checklists for logistics appendix
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
