Files
magnus919_agent-skills/cryptpad/evals/evals.json
T

87 lines
3.8 KiB
JSON

{
"schema_version": 1,
"skill_name": "cryptpad",
"evals": [
{
"id": "external-editor",
"prompt": "Embed CryptPad to edit our externally stored .txt files. Who saves the changes?",
"expected_output": "A browser integration plan with explicit host persistence and key ownership.",
"assertions": [
"Uses the browser loader and CryptPadAPI rather than invented REST CRUD endpoints.",
"Places durable Blob storage in the integrating application.",
"Acknowledges onSave only after persistence succeeds."
]
},
{
"id": "key-race",
"prompt": "Alice and Bob both replace old key K0 with different keys and end up in separate editors. Fix our integration.",
"expected_output": "An atomic key-pair update with a shared winning key.",
"assertions": [
"Compares stored key to data.old atomically per document.",
"Stores matching edit and view keys together.",
"Returns the stored winner to both callbacks, including the losing caller."
]
},
{
"id": "view-capability",
"prompt": "We set mode=view but supply the same key used by editors. Is the document protected?",
"expected_output": "Identifies UI-only restriction and prescribes a real view key.",
"assertions": [
"Explains that edit key holders can bypass the UI lock.",
"Requires actual view-key distribution and app-side authorization.",
"Does not grant a viewer onNewKey authority or edit keys."
]
},
{
"id": "save-failure",
"prompt": "Our storage upload failed but onSave callback ran. Can we safely close the tab?",
"expected_output": "Keeps unsaved data visible and corrects acknowledgement timing.",
"assertions": [
"Does not claim the data was saved.",
"Acknowledges only after durable persistence.",
"Addresses retry and revision safety before closing/reopening."
]
},
{
"id": "rest-export",
"prompt": "Give me a curl command to download plaintext for every document in my CryptDrive.",
"expected_output": "Explains the discovered API boundary and offers authorized browser export.",
"assertions": [
"Does not invent bearer-token document-list or plaintext-export endpoints.",
"Explains that server ciphertext is not a decrypted export.",
"Requires supported client access and verifies exports."
]
},
{
"id": "revoke-live",
"prompt": "We removed Bob from our ACL while his CryptPad editor stayed open. Is he disconnected?",
"expected_output": "A bounded revocation plan accounting for key-bearing active sessions.",
"assertions": [
"Does not equate ACL deletion with session termination.",
"Plans new keys and migration for authorized users.",
"Rejects stale-session saves and acknowledges already-read content cannot be recalled."
]
},
{
"id": "probe-limits",
"prompt": "Our probe says ok=true and enableEmbedding=false. Is browser collaboration working?",
"expected_output": "Correctly interprets limited HTTP discovery and disabled embedding.",
"assertions": [
"Does not equate recognized resources with successful editing.",
"Identifies embedding configuration as a separate finding.",
"Requests browser/WebSocket/save evidence before declaring health."
]
},
{
"id": "retention",
"prompt": "Run the CryptPad eviction scripts to see if they fix our blank editor.",
"expected_output": "Declines speculative destructive diagnosis and follows browser/proxy evidence.",
"assertions": [
"Identifies eviction as a state-changing retention operation.",
"Does not run deletion as a health check.",
"Investigates sandbox/CSP/WebSocket evidence first."
]
}
]
}