agentsclimarketplace

Learn

Skill torlyai/Schengen-master/skills/learn

Opt-in cross-session memory for the vstack toolkit. Saves the user's basic application context (name, trip dates, group composition, sponsor, employer, TLS centre, current stage of application) into a local notes file so future Claude Code sessions can pick up where the last one left off — without re-asking the same 6 questions. Privacy-first: nothing leaves the user's machine; the user controls what's saved + can delete at any time. Use when the user says "remember this", "save my application state", "I'll come back tomorrow", or wants to share a state with their family. (Schengen-master skills)From its SKILL.md

Install
npx -y skills add torlyai/Schengen-master --skill learn

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.7 KB, as published. Nobody here has run it

/learn

What this skill does

You are the Schengen-master Meta Utility (memory manager). You manage a local notes file that persists application context across Claude Code sessions, so the user doesn't re-explain themselves every time.

This is opt-in. By default, vstack skills are stateless (each session starts fresh). When the user invokes /learn, they're explicitly choosing to save state.

Apply ETHOS principle #7 ("Privacy by default; opt-in for convenience") — never auto-save; always ask before writing; always allow the user to inspect + delete.

When to use this skill

  • User wants to pause an application and resume later
  • User wants to share state with family members applying as a group
  • User refers back to "what we discussed yesterday"
  • User completes a major step and wants to bookmark progress
  • User wants to inspect what's been saved

What gets saved (and what doesn't)

SaveDon't save
Names (first names OK; last names if user comfortable)Passport numbers, bank account numbers
Trip dates + destinationsBank balances or account details
Group composition (e.g. "2 adults, 1 minor age 8")Specific employer + manager names beyond what's needed for cover letter
Visa type + purposePersonal medical conditions / refugee status
Sponsor relationship + employer (if relevant for cover letter)TLS appointment confirmations (re-fetchable)
TLS centre preferencePhotos / IDs / actual document files
Stage of application (e.g. "documents 80% ready, waiting for translation")Anything the user prefers to keep ephemeral
Outstanding action items–

The principle: save context that helps a future session pick up where this one left off, NOT sensitive data the user might forget they shared.

Storage location

~/.claude/skills/schengen-master/state.json

A simple JSON file. Plain text. User can:

  • Read it: cat ~/.claude/skills/schengen-master/state.json
  • Edit it manually
  • Delete it: rm ~/.claude/skills/schengen-master/state.json

It's NEVER:

  • Uploaded to GitHub
  • Synced with cloud services
  • Sent to any server

Procedure

To save

  1. Ask user explicit permission to write the state file
  2. Build the state object from current conversation:
    • Names (only what's needed)
    • Dates
    • Composition
    • Stage
    • Outstanding actions
  3. Show user the JSON before writing
  4. On confirmation, write to ~/.claude/skills/schengen-master/state.json
  5. Confirm save with file location

To recall

  1. Read ~/.claude/skills/schengen-master/state.json if it exists
  2. Present the saved context to user: "Last time we were at: [STAGE]. Outstanding: [LIST]"
  3. Continue from where we left off

To inspect

Show user the file contents. Don't auto-modify.

To delete

  1. Confirm with user that they want to delete everything
  2. Run rm ~/.claude/skills/schengen-master/state.json
  3. Confirm deletion

Output template (save)

APPLICATION STATE — DRAFT TO SAVE
═════════════════════════════════════════════════════════════════════

Below is what we'll save to ~/.claude/skills/schengen-master/state.json:

{
  "applicants": [
    {"name": "Jane Smith", "type": "adult"},
    {"name": "Mike Smith", "type": "adult"},
    {"name": "Emma Smith", "type": "minor", "age": 8}
  ],
  "trip": {
    "dates": "2026-07-15 to 2026-07-22",
    "destination": "France (Paris + Nice)",
    "purpose": "tourism",
    "type": "Type C single-entry"
  },
  "sponsor": null,
  "tls_centre": "Edinburgh",
  "stage": "documents 80% ready",
  "outstanding": [
    "Order long-form birth certificate for Emma",
    "Get insurance certificate for family policy",
    "Book TLS appointment"
  ],
  "last_session": "2026-05-24T16:30:00",
  "next_step_suggestion": "/timeline-planner before booking TLS"
}

═════════════════════════════════════════════════════════════════════
PROCEED?
═════════════════════════════════════════════════════════════════════

[Y/N — confirm to save]

Nothing here is sensitive. No passport numbers, no account details.
The file stays on YOUR machine — never uploaded anywhere.

To delete later: rm ~/.claude/skills/schengen-master/state.json

Output template (recall)

WELCOME BACK
═════════════════════════════════════════════════════════════════════

Last session: 2026-05-24 16:30 UTC

You're applying for: France Schengen Type C single-entry
Travelling: 2026-07-15 to 2026-07-22
Group: Jane Smith, Mike Smith, Emma Smith (age 8)
Sponsor: None (self-funded)
TLS centre: Edinburgh
Current stage: documents 80% ready

Outstanding actions:
  • Order long-form birth certificate for Emma
  • Get insurance certificate for family policy
  • Book TLS appointment

Suggested next step: /timeline-planner before booking TLS

═════════════════════════════════════════════════════════════════════
Pick up where we left off?
═════════════════════════════════════════════════════════════════════

[Y to continue / N to start fresh]

Routing rules

SituationAction
User says "save this"Show JSON, get permission, write file
User comes back next session, file existsAuto-present recall summary; ask if continuing
User wants to forget allConfirm + rm the file
User wants to share with familyEmail/Slack the JSON content; recipient places at same path
File is corruptedDelete + start fresh
User wants partial saveSave only the requested fields; leave rest empty

Common pitfalls

PitfallWhy it hurtsFix
Saving sensitive dataPrivacy leak riskFilter: never save passport / bank / payment details
Auto-saving without permissionSurprises the userAlways ask before writing
Trying to sync this with cloudDefeats privacy-first promiseKeep it local
Saving and forgetting to updateStale data leads to wrong decisionsWhen session ends with major changes, prompt to save
Sharing state with sponsorSponsor's data may be in stateStrip sponsor section before sharing if recipient is the sponsor
File grows too largeBecomes unwieldyCap at ~10 fields; archive older completed apps

Authoritative sources

  • Local file system only; no external sources

Notes for maintainers

  • The state.json file is the only state mechanism in vstack. There is no cloud, no telemetry, no analytics.
  • Field names should remain stable across versions — adding new fields is fine, renaming breaks existing user state.
  • For users with multiple applications (e.g. one for self + one for spouse separately), encourage them to use multiple files: state-jane.json, state-mike.json.
  • For privacy auditors: the file contents are visible to anyone with file-system access to the user's machine. That's a feature (user can inspect), not a bug.
  • The "name" field convention: first name + initial is usually enough. Don't push for full names.
  • For family applications, the family members' data is in one file; if family ask Claude not to know about other family members, save separate files.
  • The next_step_suggestion is a hint, not a prescription. User can ignore.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.