视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
travel-guide【文档与办公】Create personalized, source-grounded travel dossiers from a destination, dates, duration, travelers, and constraints. Ask only the questions that change the plan, use explicitly permitted personal context without exposing it, research current logistics, and produce a cited, visually coherent PDF or responsive companion web page. Use when someone want…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Create a commissioned travel dossier, not a generic list of attractions. The finished guide should answer: why this place, for these travelers, at this moment? It should leave room for discovery while making the trip feel considered.
Use this skill when the traveler wants one or more of the following:
anydoc; it reads
documents but does not author or validate them.Read only the references needed for the request:
| Need | Read |
|---|---|
| Personal context, consent, pointed questions, or group trade-offs | references/intake-and-personalization.md |
| Current places, hours, prices, reservations, transit, or source quality | references/research-and-evidence.md |
| Trip thesis, anchor selection, day structure, or editorial voice | references/editorial-structure.md |
| Private/shareable editions or redaction | references/privacy-and-sharing.md |
| HTML, PDF, print CSS, rendering, or visual QA | references/pdf-rendering.md |
Use templates/trip-brief.json as the structured source of truth. Use templates/dossier-outline.md when drafting content before entering JSON.
Match the process to the request. A narrow question - one neighborhood, one restaurant, one transfer, one practical fact - can be answered directly with sources in a short reply. Run the full dossier pipeline only when the traveler wants a guide, PDF, companion page, or a multi-day plan. The dossier format is a deliverable choice, not an automatic output for every travel question.
Collect, or confirm:
If a missing answer would change the recommendations, ask a pointed question. Do not run a long questionnaire. Read the intake reference for the question budget and personalization boundary.
If the host can retrieve user preferences or history, use only context that is
relevant to this trip and permitted for this purpose. Internally classify each
personal signal as known, relevant memory, hypothesis, ask first, or
do not use. Never copy a raw private note into the guide. When personalization
would be surprising, explain the relevant basis briefly or ask permission.
Research only what the guide needs. Prefer official venue, operator, transit, government, tourism-board, and booking sources. Record URLs and retrieval dates in the source ledger. Separate:
Do not present a search snippet, stale memory, or unsourced price as current truth. Read the research reference before making logistics or cost claims.
Write a one- or two-sentence trip thesis. Select a small set of anchors rather than ranking everything. Every anchor must state why it fits these travelers, when it works best, what it costs or requires, and what could make it fail.
Shape each day around:
Include a short “skip this” section when famous options are poor fits. Read the editorial reference before drafting the dossier.
Work in a dedicated working folder for this trip: create one explicitly (for
example $(mktemp -d) on macOS/Linux, or a named folder under the system
temp directory) and keep the trip model, rendered HTML, sanitized editions,
and PDFs there. Never write outputs into the skill directory or the user's
home directory root. The examples below use $WORK for that folder.
Keep content separate from layout. Validate the content model first:
python3 scripts/validate-trip-brief.py "$WORK/trip-brief.json" --strict --json
Render a print-oriented HTML dossier:
python3 scripts/render-travel-guide.py "$WORK/trip-brief.json" \
--mode dossier --output "$WORK/travel-dossier.html" --json
For a responsive companion page, use the same model:
python3 scripts/render-travel-guide.py "$WORK/trip-brief.json" \
--mode companion --output "$WORK/index.html" --json
The renderer embeds the bundled CSS and local image assets when possible. Use a
print-capable browser or the repository's documents skill to turn the dossier
HTML into a PDF. The PDF is not complete until it has been structurally checked
and visually inspected. Read the PDF reference for the exact gate.
Keep the private model as the source of truth. Create a sanitized copy rather than painting over a finished PDF:
python3 scripts/sanitize-trip-brief.py "$WORK/trip-brief.json" \
--profile shareable --output "$WORK/trip-brief-shareable.json" --json
Render and validate the sanitized model separately. Do not assume that a shareable version may expose exact dates, lodging, companions, addresses, booking identifiers, contact details, or private notes.
Adapt the length to the trip, but preserve the information hierarchy:
The visual default is a dark photographic cover with a route journey line, warm gold eyebrow, white headline, restrained red accent, generous white content pages, ghost section numbers, a color-coded day strip right after the brief, pace and budget meters, compact cards, a unified warm photo grade on anchor images, readable tables, and a bottom-of-page footer per section: a content- derived field note (failure mode, plan B, recheck item, or skip reason) when one exists, a next-section line, and a ghost route mark. Preserve contrast and selectable text. Do not let decoration hide uncertainty or practical caveats. The footer is informational, never a schedule: it repeats model content in one line, it does not invent new plans.
Stop when all requested artifacts exist and: