Agent skill

Simulate User Py4vasp

by vasp-dev in vasp-dev/py4vasp

Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source.

Apache-2.0Auto-check passedAgent Workflows

Install Simulate User Py4vasp

skills CLI
$ npx skills add vasp-dev/py4vasp --skill simulate-user-py4vasp -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vasp-dev/py4vasp simulate-user-py4vasp --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vasp-dev/py4vasp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/simulate-user-py4vasp .claude/skills/simulate-user-py4vasp && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
simulate-user-py4vasp
GitHub stars
100
Token cost
~2.5k tokens
SKILL.md length
1,455 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0

At a glance

Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source.

  • Works in 5 steps: do NOT run this from plan mode → write the premise (without naming the API) → dispatch → …
  • Tasks that involve UX design
  • SKILL.md covers When it is required, Step 0 — do NOT run this from…, Step 1 — write the premise… and Step 2 — dispatch, plus 4 more sections
  • Calls git

What it does

Simulate User Py4vasp is an agent skill from vasp-dev/py4vasp. Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source. Use before pushing or opening a MR for anything that touches the user interface — a public method of a quantity class, a CLI command, or the docs — and whenever asked to "simulate a user", "test this like a user would", or "check the usability" of a py4vasp feature. Returns ranked findings, a verdict on whether a documentation-only user can succeed, and the agent's…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering UX design and Subagents. The repository describes itself as: Python interface for VASP. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve UX design
  • Tasks that involve Subagents

Example prompts

  • “simulate a user”
  • “test this like a user would”
  • “check the usability”
  • “/simulate-user-py4vasp”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. do NOT run this from plan mode
  2. write the premise (without naming the API)
  3. dispatch
  4. verify the isolation held
  5. act on the findings

What it can do on your machine

Read from SKILL.md and the folder at commit 31183cb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Simulate User Py4vasp loads about 2.5k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 1,455 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~137
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vasp-dev/py4vasp at commit 31183cb, republished under its Apache-2.0 licence (© vasp-dev). 1,455 words, ~2,505 tokens.

Download SKILL.mdSave it as .claude/skills/simulate-user-py4vasp/SKILL.md (or your agent's skills folder).
name
simulate-user-py4vasp
description
Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source. Use before pushing or opening a MR for anything that touches the user interface — a public method of a quantity class, a CLI command, or the docs — and whenever asked to "simulate a user", "test this like a user would", or "check the usability" of a py4vasp feature. Returns ranked findings, a verdict on whether a documentation-only user can succeed, and the agent's confessions.

Simulating a py4vasp user

plan-py4vasp, tdd-py4vasp and review-py4vasp all judge a change from the inside: code, tests, coverage, house rules. A change can pass every one of them and still be unusable, because none of them asks the only question a user asks — can I work out how to do this from the documentation?

This skill answers that by dispatching a subagent that role-plays a user with no access to the source. It is a validation gate, not an exploration: you write the premise, dispatch it, verify it stayed inside the rules, and act on what it reports. All paths are relative to the repo/worktree root.

When it is required

Whenever the diff touches the user interface:

  • a public method or class (no leading underscore) under src/py4vasp/_calculation/ whose signature or docstring changed, or one that was added. The docstring counts because it is the documentation a user reads: a branch can rewrite thirty of them, leave every def line untouched, and change the interface completely.
  • any change to src/py4vasp/cli.py
  • any change under docs/

A change confined to private helpers, the raw schema, the demo data or the tests does not need it. push-py4vasp treats this as a blocking gate and its driver prints USER SIMULATION REQUIRED: YES/NO, so the decision is a fact rather than a judgement.

Step 0 — do NOT run this from plan mode

Check first. A subagent inherits plan mode from the session that dispatches it, and a simulated user in plan mode cannot write a POSCAR, cannot use -o/--output, and cannot read an input file from disk — i.e. it cannot exercise the surface a real user touches most. In the trial run that produced this skill the agent tried to work around the restriction with a process substitution, which is not something any user would do, and the resulting traceback leaked source code to it.

If plan mode is on, say so and stop. Run the simulation from normal mode.

Step 1 — write the premise (without naming the API)

The agent must discover the feature, because discoverability is the thing under test. Give it exactly what a colleague would have said in one sentence — the capability, never the command or method names:

A colleague mentioned that the latest py4vasp can create KPOINTS files for you — both for a band structure along the high-symmetry path and for a regular k-mesh — and that it works from the command line as well as from Python.

Derive that sentence from the MR description, not from the diff. If you catch yourself writing generate_kpath, delete it.

Step 2 — dispatch

Use the Agent tool with subagent_type: general-purpose and the default model. Never fork: a fork inherits your context, which contains the implementation, and the whole exercise collapses. Capability is not what makes a simulation unrealistic — access is — so do not reach for a weaker model either; a capable agent constrained to the documentation writes a far more useful report.

The prompt must contain all six blocks below. Copy them; the wording matters.

1. The persona. A computational materials scientist who runs VASP, comfortable with the shell and Python, has never seen py4vasp's source and never will. Then the premise from Step 1.

2. The isolation contract. Allowed, because it is what a real user has: py4vasp --help and every subcommand's --help; help(obj) and obj? at the Python prompt (docstrings are user-facing documentation); the sources under docs/; README.md. Forbidden: any file under src/ or tests/; git history, diffs, commit messages, branch names; .claude/; any plan, issue or notes file. And the clause that matters, because this is how leaks actually happen: if a tool result shows you source code — a traceback will — stop reading it and write that down in your report.

3. Behave like a person, not an agent. A handful of actions in a natural order. No enumerating the package, no reverse-engineering intent from the repository. When the documentation does not answer a question, that is a finding to report — not a puzzle to solve by digging.

4. The environment. py4vasp is usually a development checkout here, so spell out the invocation and tell the agent to treat it as the real command:

bash
export PYTHONPATH=<checkout>/src
PY=<path to the venv>/bin/python
$PY -m py4vasp --help          # the command line interface
$PY -c "import py4vasp; ..."   # the Python interface

Give it a working directory of its own (/tmp/.../user-trial-<feature>), explicitly grant it permission to write files there, and forbid modifying anything in the checkout.

5. The task. Work out from the documentation how to use the feature and note what had to be guessed; write your own input file and use the feature on it; do whatever you would normally do to convince yourself the result is right, and say whether you could; make one or two mistakes a real user plausibly makes and see whether the message tells you what to fix; try both interfaces if both exist.

6. The deliverable. Five sections, in this order:

  • A. Narrative — what you did, in order, with the exact commands, including the dead ends.
  • B. Findings — each with the command, what you expected, what happened, and what would have helped; ranked would have stopped me versus annoying; documentation gaps are first-class findings; and for each, would an ordinary user have noticed this at all?
  • C. Verdict — can a user who only reads the documentation succeed? yes / partly / no, and why.
  • D. Documentation trail — every source consulted, in order, and whether it helped.
  • E. Confessions — anything you did that a real user could not; any rule you broke; any false alarm you raised and then retracted; and every moment you wanted to read the source, and what question drove the urge.

Close with: do not soften the report to be agreeable; blunt is useful.

Sections B-"ordinary user", D and E are what turn a report into evidence. The trial run's most valuable line was the agent volunteering that an ordinary user would not have caught its own worst finding, because the only symptom was a space-group label nobody checks by eye. D localises the documentation gap to the exact channel. E is where the leaked traceback got reported.

Show full SKILL.md (458 more words)Show less

Step 3 — verify the isolation held

Trust the agent, then check. The Agent tool returns an output_file — the full JSONL transcript. Do not read it; it runs to hundreds of KB. Grep the tool inputs only:

bash
grep -o -E '"name":"(Bash|Read|Grep|Glob)","input":\{"[a-z_]+":"[^"]{0,120}' "$TRANSCRIPT" \
  | grep -o -E '(src/py4vasp/[A-Za-z_./]+|tests/[A-Za-z_./]+|git (log|diff|show|blame))' \
  | sort | uniq -c

Two traps, both of which caught me while building this:

  • The pattern must include the py4vasp/ segment. A bare src also matches the PYTHONPATH you supplied yourself, which is legitimate and appears in every command the agent runs.
  • A source path in a tool result is a leak, not a violation. Only inputs count. docs/ hits are expected and fine.

A non-empty result invalidates the run: the findings may come from reading the implementation rather than the documentation. Re-dispatch a fresh agent.

Step 4 — act on the findings

Present the report to the user and classify with them:

  • Blockers — anything that stopped the simulated user, and anything that produced a silently wrong result. These are fixed before the MR.
  • Documentation gaps — fixed before the MR, or, if the gap is bigger than the change (a missing reference page for a whole interface, say), recorded in backlog/ as a short markdown file.
  • Annoyances — fixed if cheap, otherwise recorded in the PR message so the human reviewer inherits them rather than rediscovering them.

Never fix a finding by editing only the report's wording. If the answer is "the user should have known", the documentation is the thing that failed.

Gotchas

  • Plan mode cripples it. See Step 0. This is the single most likely way to waste a run.
  • fork defeats it. The fork knows the implementation. Always general-purpose.
  • Naming the API in the premise removes the discoverability test, which is usually where the real findings are.
  • A stale installed py4vasp hides the feature. If the environment has an old release installed, the agent tests that and reports the feature as missing. Always pass an explicit PYTHONPATH and, if in doubt, have it print py4vasp.__file__ first.
  • Docstrings count as documentation. Do not forbid help() — it is exactly what a notebook user reads. What is forbidden is opening the file that contains the docstring.
  • dir() / tab-completion is a grey zone. The trial agent used it to find a method the docs never mention, and flagged that as borderline itself. Allow it, and treat "I only found this by tab-completion" as a documentation finding.
  • Budget. Expect roughly 25-30 tool calls, ~80 k tokens and a few minutes for a two-command feature. Cheap next to the MR it validates.

Human path

There is no app to launch — this is a workflow skill. The human equivalent is handing the branch to a colleague who has not read the code, with the MR summary and nothing else, and asking them to use the feature and say where they got stuck.

© vasp-dev, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/simulate-user-py4vasp of vasp-dev/py4vasp.

Open the folder on GitHubat commit 31183cb

Compare with similar skills

Simulate User Py4vasp next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Simulate User Py4vasp compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Simulate User Py4vasp this skillvasp-dev/py4vasp100—~2.5kAutomated safety check: PassApache-2.0
Onboarding Optimizationappeeky/aso-skills2.1k—~1.7kAutomated safety check: PassMIT
Write PlanArman-Kudaibergenov/1c-ai-development-kit166—~1.3kAutomated safety check: NotesAGPL-3.0
Vibe Sunsang Growthfivetaku/gptaku-plugins-codex128—~2kAutomated safety check: PassMIT
UX Create Manifesth0x91b/dev-3.0307—~2.7kAutomated safety check: PassApache-2.0
Product Design Workflow BundleXiaomiMiMo/MiMo-Code14k—~721Automated safety check: PassMIT

Similar skills

  • Onboarding Optimization

    appeeky/aso-skills

    When the user wants to improve their app's onboarding experience, increase activation rate, reduce Day 1 drop-off, or optimize the first-run flow.

    2.1k GitHub stars~1.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Write Plan

    Arman-Kudaibergenov/1c-ai-development-kit

    Этот скилл MUST быть вызван когда есть design.md и нужно разбить доработку на атомарные задачи (2-5 мин) с точными путями файлов и критериями проверки в tasks.md.

    166 GitHub stars~1.3k tokensUpdated 4 mo ago
    Agent WorkflowsAuto-check: notes
  • Vibe Sunsang Growth

    fivetaku/gptaku-plugins-codex

    Growth report generator — analyzes converted Codex conversations and produces a progression report using the v2 level system (6 axes × 7 levels, 0.5 increments), leading with one level headline and…

    128 GitHub stars~2k tokensUpdated 29 days ago
    Agent WorkflowsAuto-check passed
  • UX Create Manifest

    h0x91b/dev-3.0

    Create the initial Product UX Bible for an existing web or full-screen web app by deeply auditing the repository, using sub-agents when available, and generating docs/ux manifests, schemas, budgets…

    307 GitHub stars~2.7k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Product Design Workflow Bundle

    XiaomiMiMo/MiMo-Code

    Entry point to a bundle of product design workflows covering context, research, audits, ideation, URL or image to code, design QA and sharing a prototype.

    14k GitHub stars~721 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Tns Review

    Touch-N-Stars/Touch-N-Stars

    Review changed Touch'N'Stars code with three parallel agents, one each for functionality, UI and maintainability, against this project's own rules (NINA/PINS dual mode, polling contract…

    123 GitHub stars~1.7k tokensUpdated yesterday
    Frontend & DesignAuto-check passed

More from vasp-dev/py4vasp

  • Plan Py4vasp

    vasp-dev/py4vasp

    Plan a py4vasp change as an ordered list of test-first chunks — that chunk list is the plan.

    100 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Push Py4vasp

    vasp-dev/py4vasp

    Push py4vasp changes to origin and open a PR. An agent skill from vasp-dev/py4vasp.

    100 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Review Py4vasp

    vasp-dev/py4vasp

    Code review for py4vasp changes. An agent skill from vasp-dev/py4vasp.

    100 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • TDD Py4vasp

    vasp-dev/py4vasp

    Carry out ONE chunk of a py4vasp change test-first: RED (watch the test fail for the right reason) → GREEN → refactor → one local commit.

    100 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Questions about Simulate User Py4vasp

What does Simulate User Py4vasp do?

Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source. Simulate User Py4vasp is an agent skill from vasp-dev/py4vasp. Validate a py4vasp change from the outside by dispatching a subagent to role-play a user who may read only the documentation, never the source.

When should I use Simulate User Py4vasp?

Simulate User Py4vasp fits situations like: tasks that involve UX design; tasks that involve Subagents.

How do I install Simulate User Py4vasp in Claude Code?

Run `npx skills add vasp-dev/py4vasp --skill simulate-user-py4vasp -a claude-code`. Or copy the skill folder (.claude/skills/simulate-user-py4vasp in vasp-dev/py4vasp) into .claude/skills/simulate-user-py4vasp in your project. Claude Code loads it when a task matches its description.

How do I install Simulate User Py4vasp in Codex?

Run `npx skills add vasp-dev/py4vasp --skill simulate-user-py4vasp -a codex`. Or copy the skill folder (.claude/skills/simulate-user-py4vasp in vasp-dev/py4vasp) into .agents/skills/simulate-user-py4vasp in your project. Codex loads it when a task matches its description.

Can I use Simulate User Py4vasp in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vasp-dev/py4vasp --skill simulate-user-py4vasp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/simulate-user-py4vasp, .gemini/skills/simulate-user-py4vasp, .github/skills/simulate-user-py4vasp and .opencode/skills/simulate-user-py4vasp in your project.

What does Simulate User Py4vasp need to run?

Going by SKILL.md and its folder, Simulate User Py4vasp needs the command-line tools its instructions call (git). Our summary lists: Python 3.

Does Simulate User Py4vasp access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Simulate User Py4vasp safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Simulate User Py4vasp use?

Simulate User Py4vasp is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Simulate User Py4vasp use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Simulate User Py4vasp?

Skills that share tags, products or a category with Simulate User Py4vasp: Onboarding Optimization (appeeky/aso-skills, 2.1k stars), Write Plan (Arman-Kudaibergenov/1c-ai-development-kit, 166 stars), Vibe Sunsang Growth (fivetaku/gptaku-plugins-codex, 128 stars) and UX Create Manifest (h0x91b/dev-3.0, 307 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Simulate User Py4vasp?

vasp-dev (a GitHub organization) maintains it in vasp-dev/py4vasp, which has 100 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.

Source: vasp-dev/py4vasp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.