mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-22 00:56:35 +03:00
87 lines
3.8 KiB
JSON
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."
|
|
]
|
|
}
|
|
]
|
|
}
|