AutoJack Labs · exploratory synthesis

ProSkills × AutoVault

Two layers, one supply chain for agent skills. The store finds a skill; the vault decides whether it actually runs — gated, signed, deduped, scoped, and rendered as one canonical SKILL.md per agent.

Status: concept draft, nothing shipped For review: Jack · M Asif Rahman Date: 27 Oct 2026
2,388 indexed skills reviewer scores install-via-AutoVault trust.toml tiers signed installs dedup + scoping feedback loop

The seam

A storefront and a vault, with a hard boundary between them

ProSkills and AutoVault solve two different problems that are easy to conflate. ProSkills answers "does a skill for this exist, and is it any good?" AutoVault answers "should this agent, on this machine, be allowed to run it — and in what form?" Keeping those concerns on opposite sides of a signed boundary is the whole idea.

Layer 1 · remote

ProSkills — discovery & storefront

2,388

indexed skills, each with reviewer scores

  • Search, categories, and ranking across the catalog
  • Human + automated reviewer scores (quality, safety, maintenance)
  • Versions, changelogs, publisher identity
  • Emits a signed install intent, not the executable itself

Layer 2 · local

AutoVault — gated signed install

per-agent

native rendering under local policy

  • Verifies signatures before anything touches disk
  • trust.toml tiers decide auto / prompt / block
  • Dedup by content hash, scoping per agent & project
  • Renders one canonical SKILL.md each agent reads natively
Design principle. The store is advisory; the vault is authoritative. A 5-star skill with a perfect reviewer score still gets no execution rights until local trust.toml says yes. The score informs policy — it never is policy.

End to end

From a search box to a running skill — and back

One pass through the pipe. Blue stages live in the store; gold stages live in the vault on the agent's machine.

1
ProSkills

Discover

Agent or human searches 2,388 skills, compares reviewer scores, picks a version.

2
ProSkills

Install intent

"Install via AutoVault" mints a signed manifest: skill id, version, content hash, publisher, review snapshot.

3
AutoVault

Verify + gate

Vault checks signature and publisher, then maps the review snapshot onto trust.toml: auto-install, prompt, or block.

4
AutoVault

Dedup + scope

If the content hash already exists, reuse it. Otherwise stage once in the content-addressed store and scope it to the requesting agent/project.

5
AutoVault

Render canonical SKILL.md

Emit one SKILL.md per agent in that agent's native layout — Claude, Cursor, Codex all read their own flavour of the same source.

6
AutoVault

Run

Agent uses the skill. Vault records invocations, errors, and overrides locally.

7
ProSkills

Feedback

Anonymized signals — installs kept/removed, error rates, trust decisions — flow back and nudge reviewer scores.

Topic 1

The install-via-AutoVault button

The button is the handshake. In the store it looks like one click; underneath it hands AutoVault a signed intent and gets out of the way. The store never ships code directly — it ships a verifiable pointer plus the review context the vault needs to make a local decision.

🧰
pdf-form-filler
v2.4.1 · publisher: asif-labs · hash 9f3c…a71b
★ 4.7 · review 92
Idle — click to watch the handshake the button triggers.

What the button actually carries

install-intent.json — signed by ProSkills, consumed by AutoVault
// Not the skill. A signed pointer the vault can verify offline.
{
  "skill": "pdf-form-filler",
  "version": "2.4.1",
  "contentHash": "sha256:9f3c…a71b",   // drives dedup
  "publisher": { "id": "asif-labs", "keyId": "k_7d2" },
  "review": { "stars": 4.7, "score": 92, "flags": [] },
  "source": "https://proskills/registry/pdf-form-filler/2.4.1",
  "sig": "ed25519:…"              // store attestation
}

One button, three outcomes

Depending on trust.toml, the same click either installs silently, raises a consent prompt, or refuses with a reason. The store UI stays identical.

Offline-verifiable

The vault checks the publisher signature against pinned keys. No live call to the store is required to decide safety — the intent is self-contained.

Deep-link friendly

autovault://install?intent=… lets the web storefront hand off to the local daemon, or an agent can POST the intent to the vault's local socket.

Idempotent

Re-clicking a skill already present is a no-op after the hash check — you land on "already installed, scoped here" rather than a duplicate.

Topic 2

Review scores mapped to trust policy

ProSkills produces a score; AutoVault owns the policy. The mapping is deliberately simple and local-overridable — the operator sets the thresholds, the store just supplies the number. A default trust.toml might read:

~/.autovault/trust.toml
# Tiers are evaluated top-down; first match wins.
[tiers.verified]
min_review   = 90
publishers   = ["asif-labs", "autojack"]   # pinned keys
action       = "auto"                        # install without prompt
scopes       = ["agent", "project"]

[tiers.community]
min_review   = 70
action       = "prompt"                      # one consent click
scopes       = ["project"]

[tiers.untrusted]
min_review   = 0
action       = "block"                       # manual --force override only

[overrides]
deny_flags   = ["network-exfil", "shell-root"]  # block regardless of score
allowlist    = ["pdf-form-filler"]             # always auto, any score
Store signalDefault tierVault actionDefault scope
review ≥ 90 & pinned publisherverifiedauto — silent installagent + project
review 70–89communityprompt — consent clickproject only
review < 70 or unknown publisheruntrustedblock — explicit --forcenone until forced
any score + denied capability flagoverrideblock — non-negotiablenone
on allowlistpinnedauto regardless of scoreoperator-defined
Score drift is a policy event, not a silent change. If a verified skill's review score later drops below its tier threshold (a regression, a new CVE, a maintenance flag), the vault doesn't auto-uninstall — it marks the install stale and surfaces it at the next scope check. Trust is re-earned, not revoked behind the agent's back.

Topic 3

One canonical SKILL.md, rendered natively per agent

This is the part most "skill marketplaces" get wrong: they ship one format and hope every runtime tolerates it. AutoVault inverts that. There is one canonical source of record per installed skill, and the vault renders it into whatever shape each agent natively reads — Claude's SKILL.md + frontmatter, Cursor rules, a Codex tool spec — all projected from the same bytes.

canonical SKILL.md (vault-owned, content-addressed, one per skill)
---
name: pdf-form-filler
version: 2.4.1
hash: sha256:9f3c…a71b
trust: verified          # resolved locally, not shipped
scope: [agent:claude, project:autohub]
capabilities: [fs:read, fs:write:./out]
---

# PDF Form Filler
Fills AcroForm fields from a JSON map. Deterministic,
no network. Use when a user hands you a fillable PDF.

Rendered per agent — same source, native shape

→ Claude

Dropped as .claude/skills/pdf-form-filler/SKILL.md with the frontmatter the agent expects. Trust + scope fields resolved from local policy.

→ Cursor

Projected into a .cursor/rules entry with the same description and capability bounds, in Cursor's native rule grammar.

→ Codex / CLI

Exposed as a tool spec (AGENTS.md block or JSON schema) so a terminal agent can call it without reading Markdown prose.

Single source of truth

Edit or revoke once in the vault; every agent's rendered copy regenerates. No drift between a skill's "Claude version" and "Cursor version".

Why canonical matters for dedup. Because the canonical form is content-addressed by hash, two agents asking for the same skill share one stored copy. The per-agent renders are cheap projections over it — the heavy, signed payload exists exactly once on disk.

Topic 4

Feedback signals back to the store

The loop only closes if the vault tells the store what happened after install — but without leaking what the agent actually did. AutoVault emits coarse, anonymized signals that let ProSkills sharpen reviewer scores for everyone, while keeping local project data local.

Retention

Kept vs. uninstalled within N days. A skill people install and immediately remove is a strong negative signal the stars won't catch.

Error rate

Invocation failures / crashes per install, bucketed. Feeds a "reliability" sub-score distinct from popularity.

Trust decisions

How often operators --force past a block, or demote a "verified" skill. Reveals mismatch between store score and real-world trust.

Dedup hits

Content-hash collisions across installs confirm which version is genuinely canonical and surface silent re-publishes under the same version.

feedback-signal.json — aggregated, no payloads, opt-in
{
  "skill": "pdf-form-filler",
  "version": "2.4.1",
  "window": "7d",
  "retained": 0.94,          // kept after a week
  "errorRate": 0.011,
  "forcedInstalls": 0,
  "trustDemotions": 0
  // no filenames, no prompts, no project data
}
Consent is a tier, too. Feedback emission should itself respect trust.toml — an air-gapped or privacy-strict operator sets feedback = "off" and the vault still works; it just stops contributing to the shared score. The store degrades gracefully to review-only signal.

Where we're unsure

Open questions

What could bite us

Risks

High

Store score as implied execution grant

If operators treat a high ProSkills score as "safe to auto-run," the local gate becomes theater. The UX must keep the vault's authority visible, not bury it behind a green checkmark.

High

Supply-chain re-publish under same version

A skill that changes bytes but keeps its version number defeats dedup and trust pinning. The content hash must be the identity, and a hash change on a pinned version should force re-review, not silent update.

Medium

Renderer injection

The per-agent render writes into .claude/, .cursor/, etc. A malicious canonical doc could try to smuggle instructions through frontmatter the target agent over-trusts. Render must sanitize, not pass through.

Medium

trust.toml sprawl

Per-agent, per-project overrides make the effective policy hard to reason about. Need a autovault explain <skill> that prints which tier/override actually decided.

Medium

Feedback de-anonymization

Even coarse signals, correlated over small populations, can leak. Rare skill + small window = identifiable operator. Needs k-anonymity thresholds before a signal is emitted.

Low

Offline staleness

An air-gapped vault can't see score drift or revocations. Acceptable, but installs should carry a "last verified" date so the operator knows the trust decision is aging.

The one-line risk. The value of this system is that the store is advisory and the vault is authoritative. Every risk above is some version of that boundary leaking — scores becoming grants, versions becoming mutable, renders becoming injection, signals becoming surveillance. Guard the seam and the rest holds.