create-grant-update
SKILL.md
Create Grant Update
Post a progress update on an existing grant. This creates a GrantUpdate attestation referencing the grant.
See Agent API Reference for auth, base URL, and error handling.
Prerequisite
If KARMA_API_KEY is not set in the environment, invoke the /setup-agent skill first, then continue with this skill.
Required Information
| Field | Required | Description |
|---|---|---|
chainId |
Yes | Chain where the grant lives |
grantUID |
Yes | The grant's attestation UID |
title |
Yes | Update title (1-200 chars) |
text |
Yes | Update content (1-10000 chars) |
Finding the Grant UID
If the user knows the project name, search for it then fetch its grants:
# Step 1: Find the project
curl -s "${BASE_URL}/v2/projects?q=PROJECT_NAME&limit=5&page=1" | python3 -c "
import sys, json
data = json.load(sys.stdin)
for p in data.get('payload', []):
d = p.get('details', {})
print(f'Title: {d.get(\"title\", \"N/A\")} | Chain: {p[\"chainID\"]} | UID: {p[\"uid\"]}')
"
# Step 2: Get grants for the project
curl -s "${BASE_URL}/v2/projects/PROJECT_UID_OR_SLUG/grants" | python3 -c "
import sys, json
data = json.load(sys.stdin)
grants = data if isinstance(data, list) else data.get('payload', data.get('data', []))
for g in grants:
d = g.get('details', {})
title = d.get('title', d.get('data', {}).get('title', 'Untitled')) if isinstance(d, dict) else 'Untitled'
print(f'Grant: {title} | UID: {g[\"uid\"]}')
"
Natural Language Mapping
| User says | Action |
|---|---|
| "post a grant update on project X" | Look up project grants, ask which grant if multiple |
| "update grant 0xabc... with progress" | Use UID directly, ask for title and text |
| "report progress on my Optimism grant" | Look up by project + community name |
| "we finished phase 1 of the grant" | Ask which project/grant, use as update content |
Making the Request
BASE_URL="${KARMA_API_URL:-https://gapapi.karmahq.xyz}"
curl -s -X POST "${BASE_URL}/v2/agent/execute" \
-H "Content-Type: application/json" \
-H "x-api-key: ${KARMA_API_KEY}" \
-d '{
"action": "createGrantUpdate",
"params": {
"chainId": 10,
"grantUID": "0xgrant...uid",
"title": "Phase 1 Complete",
"text": "We completed all Phase 1 deliverables including..."
}
}'
After Success
Display the result using the standard output format. The update will be automatically indexed by the system.
Edge Cases
| Scenario | Response |
|---|---|
| Project has multiple grants | List them and ask the user which one |
| Grant UID not known | Help look it up via project name |
| No title provided | Generate a sensible title from the text |
| Grant not found | "Could not find that grant. Check the project name or provide the grant UID." |
Weekly Installs
6
Repository
show-karma/skillsGitHub Stars
1
First Seen
13 days ago
Security Audits
Installed on
gemini-cli6
github-copilot6
codex6
kimi-cli6
cursor6
amp6