workrr trust Preview

Standard · workrr artifact layout v0.1

Where your artifact lives, and what it's called

A layout convention for AI agent artifacts in a git repository: skills, MCP servers, agent context files and rulesets. Follow it and your artifact can be certified, found and verified. The certifier checks the must rules today. The should rules raise the certificate's level or band. Free to adopt, Apache-2.0.

1. One folder, one artifact

An artifact is one folder (or one file) in a repository, at a commit. The certificate covers a digest of every file in that folder, and names the repository, commit and path it came from. workrr never copies or hosts the artifact. Anyone gets it from your repository and checks that it hashes to the certified digest.

So the folder is the unit of trust. Keep everything the artifact needs inside it, and nothing it doesn't.

2. Location

ArtifactPut it atpath in the workflow
Skillskills/<name>/SKILL.mdskills/<name>
MCP serverservers/<name>/server.json, or the repo root for a one-server reposervers/<name> or .
Agent contextAGENTS.md or CLAUDE.md at the repo rootAGENTS.md (a single file)
Rulesetrules/<name>/rules/<name>

A repo with a single skill may keep SKILL.md at the root and use path: .. That certifies the whole repository, so everything in it must follow §5. With more than one artifact, give each its own folder; never nest one artifact inside another's folder.

my-agent-tools/
├── skills/
│   ├── csv-summary/
│   │   ├── SKILL.md
│   │   ├── workrr.json        # test command (optional, for Tested)
│   │   ├── LICENSE
│   │   ├── scripts/summarize.py
│   │   └── tests/test_summarize.py
│   └── pdf-extract/
│       └── SKILL.md …
├── servers/
│   └── weather/
│       ├── server.json
│       └── src/ …
├── rules/
│   └── secure-coding/ …
├── AGENTS.md
└── .github/workflows/
    ├── workrr-csv-summary.yml
    └── workrr-pdf-extract.yml

3. Naming

4. Files by type

The certifier detects the type from the folder's contents, in this order:

If the folder containsTypeRequirements
SKILL.mdskillmust YAML frontmatter with non-empty name and description.
should description says when to use it ("Use when …"), the body has headings or numbered steps, and allowed-tools lists the tools it needs.
server.jsonMCP servershould be valid JSON with a name, in the MCP registry server.json format, plus a README.md.
AGENTS.md or CLAUDE.mdagent contextshould be self-contained: anything it tells an agent to read is inside the certified path.
anything elseother (rulesets, prompts, configs)should include a README.md that says what it is and how to load it.

5. What may be inside

These are the baseline policy (workrr-baseline-v0.1). Every file in the folder is hashed, except .git.

6. Tests

Declare a test command in workrr.json inside the artifact folder:

{ "test": { "command": "python -m pytest tests" } }

The tests are part of the artifact, so the digest covers them. The certifier runs them in a separate job that has no signing permission, and binds the result to the artifact digest.

See the guide for test commands that work in the certifier's runner.

7. The certify workflow

One workflow file per artifact, calling the reusable certifier at a released tag:

# .github/workflows/workrr-csv-summary.yml
name: workrr-csv-summary
on:
  push:
    branches: [main]   # your default branch
    tags: ["v*"]
  workflow_dispatch:
jobs:
  certify:
    permissions:
      contents: read
      id-token: write
      attestations: write
    uses: workrr-trust/certify/.github/workflows/certify.yml@v0.1.5
    with:
      path: skills/csv-summary

One file per artifact keeps each run and its certificate easy to find; several jobs in one workflow also work from @v0.1.5. The repository must be public for a public Rekor entry. The guide covers the rest.

No workflow: public scans

If you'd rather not add an outside workflow, you don't have to. workrr can run the same certifier in its own public repository (scan.yml) against a public commit of yours. It never runs your code. The result has the level scanned:

The layout rules above apply the same way. Details: public scans.

When a scan fails: Flagged

A public scan that fails a security check (a high or critical scan rule, a compiled binary, or a symlink out of the folder) signs a finding instead of a certificate. It states the rule, file, line and commit, and anyone can reproduce it with workrr verify-finding. The artifact shows Flagged in the ledger, its badge and skills.workrr.ai, which offers no install for it. A finding states facts, not intent: some pattern matches are innocent. Push a fix and the new commit is re-scanned automatically; disagree with a finding in a public issue. There is no opt-out from scanning public code. How findings work.

Levels, least to most scrutiny: Scanned (workrr read a public commit) · Signed (your CI signed it) · Tested (and your tests passed) · Reproduced (two independent forges agree).

8. Checklist

This is version 0.1 of the layout. Changes are announced in the certifier changelog, and the certifier's checks are the reference: artifact.ts, policy.ts. The certificate format is in the spec.