Skip to content
Back to skills

Props Evaluator

BSecurity

Operate the live props cluster as evaluator — fetch credentials from k8s, call the API at props.allegedly.works, trigger critic/grader runs, and inspect results.

  • 11 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 9, 2026
devopspythonbashapibackendperformance

Works with

  • api

Security analysis

B75/100
  • criticalSends environment variables or credentials to an external URL
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add agentydragon/ducktape --skill props_evaluator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Props Evaluator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Props Evaluator
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/agentydragon-props-evaluator/badge)](https://www.skillsdirectory.com/skills/agentydragon-props-evaluator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: props_evaluator
description: Operate the live props cluster as evaluator — fetch credentials from k8s, call the API at props.allegedly.works, trigger critic/grader runs, and inspect results.
allowed-tools: Bash, Read, Grep, Glob, WebFetch, Task
---

# Props Evaluator Access

Operate the production props deployment at `https://props.allegedly.works` using
evaluator credentials retrieved from the cluster.

## Credentials

The evaluator password lives in a k8s secret scoped to the `props` namespace:

```bash
EVALUATOR_PASSWORD=$(kubectl get secret props-evaluator-credentials -n props \
  -o jsonpath='{.data.password}' | base64 -d)
EVALUATOR_CREDS=$(echo -n "evaluator:$EVALUATOR_PASSWORD" | base64 -w0)
```

Use as a `Bearer` token on every request:

```bash
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  https://props.allegedly.works/api/stats/overview
```

## Base URL

`https://props.allegedly.works`

Health check: `GET /health` → `{"status":"ok"}`

## API Reference

@props/docs/backend_api.md

### Access by caller role

All `/api/gt/*` and `/api/stats/*` endpoints use per-caller RLS via the caller's
Postgres credentials — there is no agent-type gate at the HTTP layer.

| Caller                | `/api/gt/*`            | `/api/stats/*`         | `/api/runs/*` |
| --------------------- | ---------------------- | ---------------------- | ------------- |
| Admin (postgres user) | All data               | All data               | Full access   |
| Evaluator             | All data (BYPASSRLS)   | All data (BYPASSRLS)   | Read-only     |
| `critic_dev_optimize` | TRAIN split only       | TRAIN split only       | Read-only     |
| `critic`              | Own run only           | Own run only           | Read-only     |
| `grader`              | Assigned snapshot only | Assigned snapshot only | Read-only     |

Full endpoint list and request shapes: fetch `/openapi.json` from the live server.

## Triggering Runs

```bash
# POST /api/runs/critic — trigger a critic run
curl -s -X POST https://props.allegedly.works/api/runs/critic \
  -H "Authorization: Bearer $EVALUATOR_CREDS" \
  -H "Content-Type: application/json" \
  -d '{
    "definition_id": "latest",
    "example": {
      "kind": "file_set",
      "snapshot_slug": "ducktape/2025-09-03-00",
      "files_hash": "8e2209f20bd1df0c5bc4073dfff739fe"
    },
    "critic_model": "gpt-oss-20b-128k",
    "timeout_seconds": 1800,
    "budget_usd": 0.0
  }'
```

`budget_usd = 0.0` for `gpt-oss-20b-128k` (cluster inference is free).

Top file-set examples (fastest to run):

| Rank | `snapshot_slug`                | `files_hash`                       | TPs | Occurrences |
| ---- | ------------------------------ | ---------------------------------- | --- | ----------- |
| 1    | `ducktape/2025-09-03-00`       | `8e2209f20bd1df0c5bc4073dfff739fe` | 33  | 39          |
| 2    | `ducktape/2025-11-20-00`       | `bb8aff17944a6348a8089790457e3094` | 15  | 31          |
| 3    | `ducktape/2025-11-26-00`       | `6e416fb1d095abc7fdc79131434c7dac` | 20  | 21          |
| 4    | `ducktape/2025-11-21-00`       | `15702f4d16234db852e973e31323fbdd` | 21  | 21          |
| 5    | `gmail-archiver/2025-12-17-00` | `9e218584782810e5a65195da8f63931a` | 14  | 21          |

## Polling Run Status

```bash
# List recent runs
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  "https://props.allegedly.works/api/runs?limit=10" | python3 -m json.tool

# Get specific run
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  "https://props.allegedly.works/api/runs/<run_id>" | python3 -m json.tool

# Active runs
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  https://props.allegedly.works/api/runs/active | python3 -m json.tool
```

## Viewing Stats

```bash
# Overview (definitions + example counts)
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  https://props.allegedly.works/api/stats/overview | python3 -m json.tool

# Per-definition performance by image digest
curl -s -H "Authorization: Bearer $EVALUATOR_CREDS" \
  "https://props.allegedly.works/api/stats/definitions/<image_digest>" | python3 -m json.tool
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.