vl-stage — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited vl-stage (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill when work needs to run somewhere real: a local URL, dev server, container, framework-specific local environment, isolated worktree, or cloud-agent sandbox. It is especially useful for web apps, where browser-facing behavior needs to be tested like a user without disrupting the user's main checkout.
Prefer the simplest strategy that proves the work:
Cloud agents such as Claude Code on the web, Cursor cloud agents, and Codex web often already run each task in an isolated cloud environment. In that context, the cloud environment is usually the stage.
Before doing local-machine setup, detect whether the session is remote or ephemeral:
env | sort | rg -i 'CODEX|CLAUDE|CURSOR|CODESPACE|GITHUB_ACTIONS|CI|REMOTE|CONTAINER|DEVCONTAINER'
pwd
hostname
git worktree listWhen running in a cloud-agent environment:
localhost from their machine, Herd/Valet, desktop apps, keychain, or parked site directories.127.0.0.1 or 0.0.0.0 only when the platform supports local port access or browser automation from inside the sandbox.Inspect:
pwd
git status --short
git branch --show-current
git worktree list
rg --files | rg '(^package.json$|pyproject.toml|requirements.txt|manage.py|app.py|composer.json|artisan|Gemfile|docker-compose|compose.yaml|vite.config|next.config)'Determine:
.env or secrets exist and must remain uncommitted.Never delete, reset, or move a dirty worktree without explicit approval.
Use this order:
For a new worktree in a local/worktree-friendly environment:
git worktree add /path/to/stage-worktree branch-name
git -C /path/to/stage-worktree status --shortFor moving an existing worktree, prefer git worktree move from the main checkout so Git metadata stays correct.
In cloud-agent sandboxes, avoid git worktree move and local parked-directory setup unless the platform documentation explicitly supports it. Cloud tasks are already isolated and usually produce a branch or PR as the review boundary.
Inspect package.json scripts and lockfiles. Prefer the repo's scripts over guessing:
npm install
npm run dev -- --host 127.0.0.1 --port 5173
npm run build
npm testUse pnpm, yarn, or bun when the lockfile indicates it. Pick a free port and record it.
Common URLs:
http://127.0.0.1:5173http://127.0.0.1:3000Inspect pyproject.toml, requirements.txt, and app entrypoints. Prefer the repo's documented command:
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
pytestCommon servers:
python manage.py runserver 127.0.0.1:8000
flask --app app run --host 127.0.0.1 --port 5000
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reloadIf artisan and composer.json are present, follow the app's local convention: built-in PHP server, Valet, Herd, Sail, Docker, or the documented team setup.
If a Laravel Valet/Herd-style .test URL is available and the user wants that kind of local site, detect the actual parked path instead of assuming ~/Sites. First check which CLI exists, then use only commands for the installed tool:
command -v herd
herd parked --json
herd parked
herd links
herd paths
command -v valet
valet paths
valet parked
valet linksUse one obvious parked root, or ask the user if multiple roots are plausible. A Laravel/PHP worktree can be moved under the parked root or explicitly linked when supported by the local tool:
git -C /path/to/main worktree move /path/to/worktree /path/to/herd-root/site-name
cd /path/to/worktree
# use the installed local-site tool
herd link site-name
valet link site-nameSet local-only .env values such as APP_URL, SESSION_COOKIE, database name/path, cache prefix, Redis prefix, and queue connection so this staged app does not collide with another checkout.
For Vite-backed Laravel apps:
npm ci
npm run build
test -f public/build/manifest.json
php artisan optimize:clear --no-interactionIf the project uses Compose for local development, prefer the documented service names:
docker compose up -d
docker compose ps
docker compose logs --tail=100 appAvoid changing shared ports without checking the compose file. Use project names or env files if multiple checkouts need to run at once.
For cloud agents, prefer commands that work in a fresh clone:
# discover project setup
rg -n 'setup|install|dev|test|build|start' README.md package.json pyproject.toml composer.json Gemfile Makefile justfile Taskfile.yml
# common verification pattern
npm install && npm run build && npm test
pytest
composer install && vendor/bin/phpunitIf the platform exposes forwarded ports, start the app with the normal dev command and verify the printed or forwarded URL. If not, verify with local curl from inside the sandbox:
curl -I --max-time 10 "http://127.0.0.1:PORT"If no browser automation is available, record that limitation and produce the strongest available proof: passing tests, successful build, server logs, static HTML output, screenshots from available headless tools, or a clear handoff with commands for local visual review.
Prevent collisions with the main checkout:
In cloud sandboxes, collision risk is usually lower because the task environment is isolated, but secrets, network access, and external services are often more constrained. Prefer local fakes, test databases, SQLite, mocked services, or documented sandbox credentials.
For queues/jobs, prefer a worker tied to the staged environment:
# generic examples
npm run worker
python -m celery -A app worker
php artisan queue:work --queue=defaultDo not point a staged app at production services unless the user explicitly asks and the repo's safety docs allow it.
Start the app with a long-running terminal session or the project's normal process manager. Then verify:
curl -I --max-time 10 "$URL"Open the URL in a browser automation tool and check:
If the environment cannot expose a browser or forwarded URL, do not pretend the browser check happened. State the limitation and include the exact command a local reviewer can run.
For frontend work, /vl-screenshot is the natural next step after staging verification.
Document how to stop what you started:
Before removing a worktree:
git -C /path/to/worktree status --shortNever remove a dirty worktree without explicit approval.
Report:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.