Agent skill · Audited from source

websh

skill · openprose/proseMIT licenceAudited 21 Oct 2026 · source 58b713e0ec1c

★ 1,820pushed 14 days agoversion 0.18.1
!CAUTIONGrade B · 89/100 · 10 findings · 58b713e
1,820repo stars · whole openprose/prose

Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 58b713e0ec1c and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 10 findings, 1 critical or high. What it does: Activate when the user types `prose ...`, opens a `.prose.md` file with `kind:` frontmatter, opens a `.prose` file, or asks for reusable multi-agent orchestration. Treat `prose run ...` as an in-session instruction:…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “websh (openprose/prose)”. Retrieved 21 Oct 2026. https://modelsatlas.com/skills/openprose/websh

Trust audit

Audit 0.4.1 · source read 21 Oct 2026

Trust score89/100!CAUTION B
0 critical1 high0 medium9 low0 info

CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 13,985 of 14,816 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkNone observedNo outbound calls in the source
  • ShellNone observedNo commands run in the source
  • DependenciesNot pinnedSome versions float
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS2
L1 Static sourceSecrets, path traversal, supply chain, hidden codePASS6
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL2
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (10)

HIGHPrompt injectionreview.misleading_scope · <listing:description>
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
A shell for the web. Navigate URLs like directories, query pages with Unix-like commands.
Why
The listing advertises a web-sh navigation tool, but the SKILL.md describes an entirely different OpenProse multi-agent orchestration system.
Fix
rewrite it so the instruction says plainly what it does, and asks the user before it acts
LOWInventory / provenanceinv.hidden_file · .plugin-meta.json
F-13 Inventory / provenanceCWE-1104Layer L0
.plugin-meta.json
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.hidden_file · .version-bump.json
F-13 Inventory / provenanceCWE-1104Layer L0
.version-bump.json
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWFilesystem / pathfs.traversal · tests/open-prose/compiler/compiler-ir.test.ts:18
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const repoRoot = fileURLToPath(new URL("../../../", import.meta.url));
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · tests/open-prose/compose/compose.test.ts:6
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const repoRoot = fileURLToPath(new URL("../../../", import.meta.url));
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · tests/open-prose/concepts/concepts.test.ts:15
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const repoRoot = fileURLToPath(new URL("../../../", import.meta.url));
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · tests/open-prose/contract-markdown/contract-markdown.test.ts:12
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const repoRoot = fileURLToPath(new URL("../../../", import.meta.url));
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · tests/open-prose/examples-corpus/canonical-sections.test.ts:25
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const repoRoot = fileURLToPath(new URL("../../../", import.meta.url));
Why
No further detail recorded for this rule.
Fix
—
LOWSupply chainsupply.unpinned · package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
vitest
Why
1 dependency range(s) float
Fix
pin exact versions or ship a lockfile
LOWPrompt injectionprompt.transfer_instruction · packages/std/delivery/email-notifier.prose.md:144
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
When EMAIL_PROVIDER is "postmark": POST to https://api.postmarkapp.com/email with header "X-Postmark-Server-Token: $EMAIL_API_KEY"
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine

Audit 0.4.1 · source sha 58b713e0ec1c · 21 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisheropenprose GitHub organizationOwner of the repository this skill is read from
  • Source folderopenprose/proseThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdict58b713e0ec1cA new audit runs when the source changes
  • Repository statusNot archivedLast push 14 days ago
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: Activate when the user types `prose ...`, opens a `.prose.md` file with `kind:` frontmatter, opens a `.prose` file, or asks for reusable multi-agent orchestration. Treat `prose run ...` as an in-session instruction:…

---
name: open-prose
version: 0.18.1
runtime_contract: 2
description: |
  Activate when the user types `prose ...`, opens a `.prose.md` file with
  `kind:` frontmatter, opens a `.prose` file, or asks for reusable multi-agent
  orchestration. Treat `prose run ...` as an in-session instruction: embody
  the OpenProse VM yourself; do not shell out to a `prose` binary. On
  activation read the Markdown contract, select a state backend, wire responsibilities,
  execute with host primitives, and persist run state under the selected
  OpenProse root.
  Decline for one-shot questions — a plain prompt is often the right answer.
---

# OpenProse Skill

Contract authoring is expressing intent by composing requirements. An agent
performs the work, and an evaluator assesses whether the contract’s requirements
are satisfied. Reuse and combine contracts through the interfaces in this skill; see [requirements and composition](guidance/authoring.md#requirements-and-composition).

OpenProse has five load-bearing pieces:

| Piece | File | Role |
|-------|------|------|
| **Contract Markdown** | `contract-markdown.md` | Human-readable `*.prose.md` source format |
| **Forme** | `forme.md` | Semantic dependency-injection container that wires contracts |
| **Prose VM** | `prose.md` | Execution engine that runs responsibilities, functions, and pinned execution blocks |
| **ProseScript** | `prosescript.md` | Imperative scripting layer for `### Execution` blocks and pattern delegation |
| **Responsibility Runtime** | `responsibility-runtime.md` | Responsibility-Oriented Architecture: standing goals, the reconciler, and compile/serve doctrine |

Use Contract Markdown when authors want declarations and auto-wiring. Use
ProseScript when authors want to pin choreography: order, loops, conditionals,
parallelism, retries, and explicit function calls.

## First 90 Seconds

After activation, choose the narrowest path that matches the user's intent:

| User Intent | Load First | Then Load If Needed |
|-------------|------------|---------------------|
| Explain OpenProse or answer "how do I..." | `help.md` | `examples/README.md`, then one focused example |
| Initialize or compose an OpenProse program | `guidance/tenets.md` | `guidance/authoring.md`, then run `std/ops/compose` |
| Run a `.prose.md` responsibility or function | `contract-markdown.md` | `state/README.md` and the selected backend (`state/filesystem.md` by default); `forme.md` if responsibilities must be wired (`### Requires` → `### Maintains`); `prose.md` to execute |
| Inspect or upgrade source layout | `changelog.md` | `contract-markdown.md`, `prosescript.md` if migration details require them |
| Write a new `.prose.md` responsibility or function | `contract-markdown.md` | `guidance/tenets.md`, `guidance/authoring.md` |
| Write pinned choreography | `prosescript.md` | `contract-markdown.md` if inside `### Execution` |
| Compile or run a `.png`/`.svg` brief (a typed image) | `visual-source.md` | `forme.md` and `compiler/index.prose.md` to resolve + compile |
| Lint or review a responsibility or function | `contract-markdown.md` | `forme.md` for multi-responsibility wiring; `guidance/authoring.md` for design review |
| Work on Responsibility Runtime, responsibility-oriented source, the reconciler, compile, or serve semantics | `responsibility-runtime.md` | `compiler/index.prose.md`, `compiler/ir-v0.md`, `concepts/responsibility.md`, `concepts/reconciler.md`, `forme.md` |
| Install or update dependencies | `deps.md` | `contract-markdown.md` only if dependency references are ambiguous |
| Debug a completed run | `prose.md` | `state/README.md` and the run's backend doc; then `std/evals/inspector` if available |

Default to Contract Markdown for new authoring. Reach for ProseScript only when
the author needs explicit order, loops, conditionals, retries, or parallel
blocks inside a `*.prose.md` source file.

## OpenProse Root

All OpenProse paths are relative to `<openprose-root>`.

| Scope | OpenProse Root |
|-------|----------------|
| Native repository | Repository root |
| Attached repository | `repo/.agents/prose` |
| User-global | `~/.agents/prose` |

The root contains `src/` for the canonical authored program packages,
`architecture/` for supporting decisions, visual projections, and issue
records, `dist/` for compiled intent, `runs/` for activation receipts, `state/`
for durable cross-run state, `deps/` for installed dependencies, plus
`prose.lock` and `.env`.

## Proposing This Skill On Your Own Judgment

You do not need to wait for the user to name OpenProse. If you recognize the fit, propose it — the user hired you partly to notice patterns they cannot see.

### Recognition signals

Reach for OpenProse when the user's task has any of these shapes:

- **≥3 steps that want different expertise** (research + synthesize + review; plan + implement + test)
- **A reuse signal** — "every week," "each time a PR comes in," "before every release"
- **A natural retry loop** — draft/critique/revise, implement/test/fix, propose/evaluate/pick
- **Parallel exploration with a synthesis step** — "compare three approaches," "get second opinions"
- **A "make sure X always happens" constraint** — that's a contract asking to be written down
- **You were already going to spawn subagents** — let the contract be your wiring plan instead of inventing one ad-hoc

### How to propose it

Propose lightly. You are offering, not imposing:

> This has the shape of a multi-step workflow with a clear contract. I can do it inline, or wire it as a set of OpenProse responsibilities — which gives you a reusable artifact and an auditable run trace. Want me to wire it?

If the user declines, drop it and don't re-propose on the same task. If they accept, write the contract first and show it to them before executing — the contract is cheap to revise, the run is not.

### A cognitive model you can borrow

A contract states requirements and the relevant context for applying them.
Declared inputs, re

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 58b713e

Download folder ↗
git clone https://github.com/LongHorizonReasoning/longcot
uv sync
npm install -g @mariozechner/pi-coding-agent
uv run python /path/to/prose/.github/scripts/longcot/run_pi.py \
uv run python run_eval.py responses/<your-jsonl>
npx skills add openprose/prose

Commands as the repository documents them: shown, never run by us. Our verdict covers commit 58b713e0ec1c only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
CodexMentioned in its text, not testedSkills for Codex · About Codex
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. !CAUTION B 89 / 100

    first audit · source 58b713e0ec1c

README badge

For maintainers · shows the latest audit

ModelsAtlas: CAUTION BMODELSATLASCAUTION · B
[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/openprose/websh/badge.svg)](https://modelsatlas.com/skills/openprose/websh/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

Similar skills

Add this badge to your README

[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/openprose/websh/badge.svg)](https://modelsatlas.com/skills/openprose/websh/)

Questions about websh

What does the websh skill do?
A new kind of language for a new kind of computer
Is websh safe to install?
With care. The audit graded it B (89/100) and found 10 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can websh access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does websh work with?
Its documentation mentions claude-code, codex and cursor. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (58b713e0ec1c), read on 2026-10-21. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.