From veeva-pack
Performs CRUD operations on Veeva Vault documents using Python, REST API, and VQL. For life sciences document management integrations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/veeva-pack:veeva-hello-worldThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create, retrieve, and query documents in Veeva Vault -- the fundamental CRUD operations. Uses the Vault REST API with VQL (Vault Query Language) for data retrieval.
Create, retrieve, and query documents in Veeva Vault -- the fundamental CRUD operations. Uses the Vault REST API with VQL (Vault Query Language) for data retrieval.
import requests, os
vault_url = "https://myvault.veevavault.com/api/v24.1"
headers = {"Authorization": session_id}
# VQL is SQL-like but Vault-specific
query = "SELECT id, name__v, type__v, status__v, created_date__v FROM documents LIMIT 10"
response = requests.post(f"{vault_url}/query", headers=headers, data={"q": query})
result = response.json()
for doc in result.get("data", []):
print(f"{doc['name__v']} | Type: {doc['type__v']} | Status: {doc['status__v']}")
doc_id = 123
response = requests.get(f"{vault_url}/objects/documents/{doc_id}", headers=headers)
doc = response.json()
print(f"Document: {doc['document']['name__v']}")
print(f"Version: {doc['document']['major_version_number__v']}.{doc['document']['minor_version_number__v']}")
# Create document metadata
doc_data = {
"name__v": "Protocol Amendment 001",
"type__v": "Trial Document",
"subtype__v": "Protocol",
"lifecycle__v": "General Lifecycle",
}
response = requests.post(f"{vault_url}/objects/documents", headers=headers, data=doc_data)
new_id = response.json()["id"]
print(f"Created document: {new_id}")
with open("protocol.pdf", "rb") as f:
response = requests.post(
f"{vault_url}/objects/documents/{new_id}/file",
headers={**headers, "Content-Type": "application/octet-stream"},
data=f,
)
print(f"File uploaded: {response.json()['responseStatus']}")
Protocol Amendment 001 | Type: Trial Document | Status: Draft
Document: Protocol Amendment 001
Version: 0.1
Created document: 456
File uploaded: SUCCESS
| Error | Cause | Solution |
|---|---|---|
INVALID_DATA in VQL | Wrong field name | Check object metadata |
PARAMETER_REQUIRED | Missing required field | Add type__v, lifecycle__v |
OPERATION_NOT_ALLOWED | Wrong document state | Check lifecycle state |
Proceed to veeva-local-dev-loop for development workflow.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin veeva-packGuides Veeva Vault deployments with REST API, VQL queries, and VAPIL Java SDK for document management, CRM, and clinical operations.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.