Permission Setup Review
python scripts/_tool_policy_note.py is an optional setup helper for the Trip Website Generator skill. It may apply broad filesystem permissions for compatibility. Show the target paths and permission mode, explain the risk, and prefer a narrower mode when shared write access is not needed.
Trip Website Generator
This skill generates a beautiful iOS26 liquid glass style multi-page travel website from a detailed travel plan.
When to Invoke
Invoke this skill when:
- User wants to create a travel website or trip planner page
- User provides a detailed travel itinerary and wants it visualized
- User asks to generate a trip planning tool
- User mentions "旅行网站", "行程页面", "travel website", "trip planner"
Templates
This skill includes template files in the templates/ directory:
| File |
Description |
templates/styles.css |
Complete CSS design system (copy directly) |
templates/app.js |
Shared JavaScript functionality (copy directly) |
templates/index.html |
Itinerary page template |
templates/prepare.html |
Preparation checklist template |
templates/notes.html |
Notes page template |
templates/budget.html |
Budget page template |
When generating a new travel website:
- Create a dedicated output directory named by date and destination (e.g.,
guangzhou-shenzhen-20260429/, xian-20260715/, beijing-20260801/)
- Copy
templates/styles.css and templates/app.js directly to the output directory - DO NOT modify these files in any way, copy them exactly as-is
- Generate HTML files by replacing template variables with actual content
- All HTML files should reference these two files
IMPORTANT:
- The styles.css and app.js files must be copied verbatim without any changes. Do not read, modify, or regenerate these files - just copy them directly from templates/.
- All website files (index.html, prepare.html, notes.html, budget.html, styles.css, app.js) must be generated in a separate directory, NOT in the root directory.
Template Variables
Templates use {{VARIABLE_NAME}} syntax for placeholders. Repeatable sections are marked with HTML comments like <!-- SECTION_START --> and <!-- SECTION_END -->.
Common Variables
| Variable |
Description |
Example |
{{TRIP_TITLE}} |
Trip title |
广州深圳亲子游 |
{{TRAVELERS}} |
Number of travelers |
一大一小 |
{{DURATION}} |
Trip duration |
6天5夜 |
index.html (Itinerary Page)
Header Section:
{{TRIP_TITLE}} - Trip title
{{TRAVELERS}} - Number of travelers
{{START_DATE}} - Start date (e.g., 2026.04.29)
{{END_DATE}} - End date (e.g., 05.04)
{{DURATION}} - Duration (e.g., 6天5夜)
{{TAG_1}}, {{TAG_2}}, {{TAG_3}} - Feature tags
Day Section (between <!-- DAY_START --> and <!-- DAY_END -->):
{{ANIMATION_DELAY}} - Animation delay (e.g., 0s, 0.05s, 0.1s...)
{{GRADIENT}} - Gradient color class (purple, pink, orange, blue, green, red)
{{DAY_NUMBER}} - Day number (D1, D2, D3...)
{{DAY_TITLE}} - Day title
{{DATE}} - Date (e.g., 4月29日 周二)
{{SUBTITLE}} - Subtitle (e.g., D2431次)
{{HOTEL}} - Hotel name
Timeline Item (between <!-- TIMELINE_START --> and <!-- TIMELINE_END -->):
{{HIGHLIGHT_CLASS}} - Add " highlight" for highlighted items, empty string otherwise
{{TIME}} - Time (e.g., 08:16)
{{ACTIVITY}} - Activity name
{{DETAIL}} - Detail description
Guide Section (between <!-- GUIDE_START --> and <!-- GUIDE_END -->):
{{GUIDE_TITLE}} - Guide section title
{{GUIDE_ITEM}} - Guide item content (repeat between <!-- GUIDE_ITEMS_START --> and <!-- GUIDE_ITEMS_END -->)
{{TIP}} - Tip text (between <!-- TIP_START --> and <!-- TIP_END -->)
prepare.html (Preparation Page)
Category Section (between <!-- CATEGORY_START --> and <!-- CATEGORY_END -->):
{{ANIMATION_DELAY}} - Animation delay
{{CATEGORY_NAME}} - Category name (e.g., 证件, 衣物, 防晒驱蚊)
Checklist Item (between <!-- CHECKLIST_ITEM_START --> and <!-- CHECKLIST_ITEM_END -->):
{{ITEM_ID}} - Unique item ID for localStorage
{{ITEM_TEXT}} - Item text
Progress Card:
{{TOTAL_ITEMS}} - Total number of checklist items
notes.html (Notes Page)
Note Category (between <!-- NOTE_CATEGORY_START --> and <!-- NOTE_CATEGORY_END -->):
{{ANIMATION_DELAY}} - Animation delay
{{ICON_COLOR}} - Icon color class (red, orange, blue, green)
{{{ICON_SVG}}} - SVG icon (use triple braces for HTML)
{{CATEGORY_TITLE}} - Category title
{{CATEGORY_DESC}} - Category description
Note Item (between <!-- NOTE_ITEM_START --> and <!-- NOTE_ITEM_END -->):
{{ITEM_ICON}} - Emoji icon
{{ITEM_TITLE}} - Item title
{{ITEM_CONTENT}} - Item content
budget.html (Budget Page)
Total Card:
{{TOTAL_BUDGET}} - Total budget (e.g., ¥7,250 - 8,800)
Budget Section (between <!-- BUDGET_SECTION_START --> and <!-- BUDGET_SECTION_END -->):
{{ANIMATION_DELAY}} - Animation delay
{{SECTION_ICON}} - Emoji icon
{{SECTION_TITLE}} - Section title
Budget Item (between <!-- BUDGET_ITEM_START --> and <!-- BUDGET_ITEM_END -->):
{{ITEM_NAME}} - Item name
{{ITEM_PRICE}} - Price
{{ITEM_NOTE}} - Note (between <!-- ITEM_NOTE_START --> and <!-- ITEM_NOTE_END -->)
{{ITEM_INCLUDED}} - Included text (between <!-- ITEM_INCLUDED_START --> and <!-- ITEM_INCLUDED_END -->)
Tip Card:
Gradients for Day Numbers
| Day |
Gradient Class |
Colors |
| D1 |
gradient-purple |
#667eea → #764ba2 |
| D2 |
gradient-pink |
#f093fb → #f5576c |
| D3 |
gradient-orange |
#fa709a → #fee140 |
| D4 |
gradient-blue |
#4facfe → #00f2fe |
| D5 |
gradient-green |
#43e97b → #38f9d7 |
| D6 |
gradient-red |
#f5576c → #f093fb |
SVG Icons for Notes Page
<!-- Clock icon (red) -->
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"/>
<path d="M12 6v6l4 2"/>
</svg>
<!-- Sun icon (orange) -->
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707"/>
<circle cx="12" cy="12" r="4"/>
</svg>
<!-- Lightning icon (blue) -->
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
</svg>
<!-- Smile icon (green) -->
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
<path d="M8 14s1.5 2 4 2 4-2 4-2"/>
<line x1="9" y1="9" x2="9.01" y2="9"/>
<line x1="15" y1="9" x2="15.01" y2="9"/>
</svg>
Important Notes
- Always use Chinese for content unless user specifies otherwise
- Include practical tips in guide sections
- Make sure all internal links work correctly
- Ensure tabbar highlights the current page
- Test checklist functionality with localStorage
- Verify responsive design on mobile viewports
- Include dark mode support via prefers-color-scheme
- Animation delays should increment by 0.05s for each card
1---2name: trip-website-generator3description: Generates iOS26 liquid glass style multi-page travel websites from travel plans. Invoke when user wants to create a travel website, trip planner page, or provides detailed travel itinerary.4---5
6
7
8
9### Permission Setup Review
10
11`python scripts/_tool_policy_note.py` is an optional setup helper for the `Trip Website Generator` skill. It may apply broad filesystem permissions for compatibility. Show the target paths and permission mode, explain the risk, and prefer a narrower mode when shared write access is not needed.
12
13# Trip Website Generator
14
15This skill generates a beautiful iOS26 liquid glass style multi-page travel website from a detailed travel plan.
16
17## When to Invoke
18
19Invoke this skill when:
20- User wants to create a travel website or trip planner page
21- User provides a detailed travel itinerary and wants it visualized
22- User asks to generate a trip planning tool
23- User mentions "旅行网站", "行程页面", "travel website", "trip planner"
24
25## Templates
26
27This skill includes template files in the `templates/` directory:
28
29| File | Description |
30|------|-------------|
31| `templates/styles.css` | Complete CSS design system (copy directly) |
32| `templates/app.js` | Shared JavaScript functionality (copy directly) |
33| `templates/index.html` | Itinerary page template |
34| `templates/prepare.html` | Preparation checklist template |
35| `templates/notes.html` | Notes page template |
36| `templates/budget.html` | Budget page template |
37
38When generating a new travel website:
391. **Create a dedicated output directory** named by date and destination (e.g., `guangzhou-shenzhen-20260429/`, `xian-20260715/`, `beijing-20260801/`)
402. **Copy `templates/styles.css` and `templates/app.js` directly to the output directory - DO NOT modify these files in any way, copy them exactly as-is**
413. Generate HTML files by replacing template variables with actual content
424. All HTML files should reference these two files
43
44**IMPORTANT:**
45- The styles.css and app.js files must be copied verbatim without any changes. Do not read, modify, or regenerate these files - just copy them directly from templates/.
46- All website files (index.html, prepare.html, notes.html, budget.html, styles.css, app.js) must be generated in a separate directory, NOT in the root directory.
47
48## Template Variables
49
50Templates use `{{VARIABLE_NAME}}` syntax for placeholders. Repeatable sections are marked with HTML comments like `<!-- SECTION_START -->` and `<!-- SECTION_END -->`.
51
52### Common Variables
53
54| Variable | Description | Example |
55|----------|-------------|---------|
56| `{{TRIP_TITLE}}` | Trip title | 广州深圳亲子游 |
57| `{{TRAVELERS}}` | Number of travelers | 一大一小 |
58| `{{DURATION}}` | Trip duration | 6天5夜 |
59
60### index.html (Itinerary Page)
61
62**Header Section:**
63- `{{TRIP_TITLE}}` - Trip title
64- `{{TRAVELERS}}` - Number of travelers
65- `{{START_DATE}}` - Start date (e.g., 2026.04.29)
66- `{{END_DATE}}` - End date (e.g., 05.04)
67- `{{DURATION}}` - Duration (e.g., 6天5夜)
68- `{{TAG_1}}`, `{{TAG_2}}`, `{{TAG_3}}` - Feature tags
69
70**Day Section (between `<!-- DAY_START -->` and `<!-- DAY_END -->`):**
71- `{{ANIMATION_DELAY}}` - Animation delay (e.g., 0s, 0.05s, 0.1s...)
72- `{{GRADIENT}}` - Gradient color class (purple, pink, orange, blue, green, red)
73- `{{DAY_NUMBER}}` - Day number (D1, D2, D3...)
74- `{{DAY_TITLE}}` - Day title
75- `{{DATE}}` - Date (e.g., 4月29日 周二)
76- `{{SUBTITLE}}` - Subtitle (e.g., D2431次)
77- `{{HOTEL}}` - Hotel name
78
79**Timeline Item (between `<!-- TIMELINE_START -->` and `<!-- TIMELINE_END -->`):**
80- `{{HIGHLIGHT_CLASS}}` - Add " highlight" for highlighted items, empty string otherwise
81- `{{TIME}}` - Time (e.g., 08:16)
82- `{{ACTIVITY}}` - Activity name
83- `{{DETAIL}}` - Detail description
84
85**Guide Section (between `<!-- GUIDE_START -->` and `<!-- GUIDE_END -->`):**
86- `{{GUIDE_TITLE}}` - Guide section title
87- `{{GUIDE_ITEM}}` - Guide item content (repeat between `<!-- GUIDE_ITEMS_START -->` and `<!-- GUIDE_ITEMS_END -->`)
88- `{{TIP}}` - Tip text (between `<!-- TIP_START -->` and `<!-- TIP_END -->`)
89
90### prepare.html (Preparation Page)
91
92**Category Section (between `<!-- CATEGORY_START -->` and `<!-- CATEGORY_END -->`):**
93- `{{ANIMATION_DELAY}}` - Animation delay
94- `{{CATEGORY_NAME}}` - Category name (e.g., 证件, 衣物, 防晒驱蚊)
95
96**Checklist Item (between `<!-- CHECKLIST_ITEM_START -->` and `<!-- CHECKLIST_ITEM_END -->`):**
97- `{{ITEM_ID}}` - Unique item ID for localStorage
98- `{{ITEM_TEXT}}` - Item text
99
100**Progress Card:**
101- `{{TOTAL_ITEMS}}` - Total number of checklist items
102
103### notes.html (Notes Page)
104
105**Note Category (between `<!-- NOTE_CATEGORY_START -->` and `<!-- NOTE_CATEGORY_END -->`):**
106- `{{ANIMATION_DELAY}}` - Animation delay
107- `{{ICON_COLOR}}` - Icon color class (red, orange, blue, green)
108- `{{{ICON_SVG}}}` - SVG icon (use triple braces for HTML)
109- `{{CATEGORY_TITLE}}` - Category title
110- `{{CATEGORY_DESC}}` - Category description
111
112**Note Item (between `<!-- NOTE_ITEM_START -->` and `<!-- NOTE_ITEM_END -->`):**
113- `{{ITEM_ICON}}` - Emoji icon
114- `{{ITEM_TITLE}}` - Item title
115- `{{ITEM_CONTENT}}` - Item content
116
117### budget.html (Budget Page)
118
119**Total Card:**
120- `{{TOTAL_BUDGET}}` - Total budget (e.g., ¥7,250 - 8,800)
121
122**Budget Section (between `<!-- BUDGET_SECTION_START -->` and `<!-- BUDGET_SECTION_END -->`):**
123- `{{ANIMATION_DELAY}}` - Animation delay
124- `{{SECTION_ICON}}` - Emoji icon
125- `{{SECTION_TITLE}}` - Section title
126
127**Budget Item (between `<!-- BUDGET_ITEM_START -->` and `<!-- BUDGET_ITEM_END -->`):**
128- `{{ITEM_NAME}}` - Item name
129- `{{ITEM_PRICE}}` - Price
130- `{{ITEM_NOTE}}` - Note (between `<!-- ITEM_NOTE_START -->` and `<!-- ITEM_NOTE_END -->`)
131- `{{ITEM_INCLUDED}}` - Included text (between `<!-- ITEM_INCLUDED_START -->` and `<!-- ITEM_INCLUDED_END -->`)
132
133**Tip Card:**
134- `{{TIP}}` - Tip text
135
136## Gradients for Day Numbers
137
138| Day | Gradient Class | Colors |
139|-----|----------------|--------|
140| D1 | `gradient-purple` | #667eea → #764ba2 |
141| D2 | `gradient-pink` | #f093fb → #f5576c |
142| D3 | `gradient-orange` | #fa709a → #fee140 |
143| D4 | `gradient-blue` | #4facfe → #00f2fe |
144| D5 | `gradient-green` | #43e97b → #38f9d7 |
145| D6 | `gradient-red` | #f5576c → #f093fb |
146
147## SVG Icons for Notes Page
148
149```html
150<!-- Clock icon (red) -->
151<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
152 <circle cx="12" cy="12" r="10"/>
153 <path d="M12 6v6l4 2"/>
154</svg>
155
156<!-- Sun icon (orange) -->
157<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
158 <path d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707"/>
159 <circle cx="12" cy="12" r="4"/>
160</svg>
161
162<!-- Lightning icon (blue) -->
163<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
164 <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
165</svg>
166
167<!-- Smile icon (green) -->
168<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
169 <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
170 <path d="M8 14s1.5 2 4 2 4-2 4-2"/>
171 <line x1="9" y1="9" x2="9.01" y2="9"/>
172 <line x1="15" y1="9" x2="15.01" y2="9"/>
173</svg>
174```
175
176## Important Notes
177
1781. Always use Chinese for content unless user specifies otherwise
1792. Include practical tips in guide sections
1803. Make sure all internal links work correctly
1814. Ensure tabbar highlights the current page
1825. Test checklist functionality with localStorage
1836. Verify responsive design on mobile viewports
1847. Include dark mode support via prefers-color-scheme
1858. Animation delays should increment by 0.05s for each card