complete-milestone

Mark an existing milestone as completed. This creates a MilestoneCompleted attestation referencing the milestone.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "complete-milestone" with this command: npx skills add show-karma/skills/show-karma-skills-complete-milestone

Complete Milestone

Mark an existing milestone as completed. This creates a MilestoneCompleted attestation referencing the milestone.

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 milestone lives

milestoneUID

Yes The milestone's attestation UID

reason

Yes Completion explanation (1-5000 chars)

proofOfWork

No URL to proof (demo, PR, deployment, etc.)

Finding the Milestone UID

Search for the project, then fetch grants and milestones:

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 and milestones 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"]}') for m in g.get('milestones', []): mt = m.get('data', {}).get('title', m.get('title', 'Untitled')) print(f' Milestone: {mt} | UID: {m["uid"]}') "

Natural Language Mapping

User says Action

"complete milestone X" Look up milestone UID, ask for reason

"mark milestone 0xabc... as done" Use UID, ask for reason

"we finished the v2 deployment" Ask which project/grant/milestone, use as reason

"complete milestone with proof: https://..." Extract proof URL, ask for milestone UID

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": "completeMilestone", "params": { "chainId": 10, "milestoneUID": "0xmilestone...uid", "reason": "All deliverables completed. Smart contracts deployed and audited.", "proofOfWork": "https://github.com/myproject/releases/tag/v2.0" } }'

After Success

Display the result using the standard output format. The completion will be automatically indexed by the system.

Edge Cases

Scenario Response

Milestone name given instead of UID Look it up via project → grant → milestones

No proof of work That's fine, it's optional — just ask for the reason

Multiple milestones to complete Process them one by one

Milestone not found "Could not find that milestone. Check the project/grant or provide the UID."

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

skill-creator

No summary provided by upstream source.

Repository SourceNeeds Review
General

find-opportunities

No summary provided by upstream source.

Repository SourceNeeds Review
General

create-project

No summary provided by upstream source.

Repository SourceNeeds Review
General

create-project-update

No summary provided by upstream source.

Repository SourceNeeds Review