From procore-pack
Creates and manages Procore submittals via API: assign reviewers, update approvals, filter lists using Python requests. For construction project management.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin procore-packThis skill is limited to using the following tools:
Build a submittal workflow: create submittals, assign reviewers, track approvals, and manage the review cycle.
Implements full RFI workflows with Procore API: create detailed RFIs, assign, add responses, track status/days open, and close for construction projects.
Manages RFIs, submittals, change orders, draw requests, schedules, safety compliance, and lender reports for ground-up construction and renovation projects.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Build a submittal workflow: create submittals, assign reviewers, track approvals, and manage the review cycle.
procore-core-workflow-a (RFIs)submittal = requests.post(
f"{BASE}/projects/{project_id}/submittals",
headers={**headers, "Content-Type": "application/json"},
json={
"submittal": {
"title": "Concrete mix design — Foundation",
"specification_section": "03 30 00",
"description": "Concrete mix design for foundation pour, 4000 PSI.",
"received_from_id": 33333, # Subcontractor
"approver_id": 44444, # Project engineer
"due_date": "2026-04-20",
}
},
)
submittal_id = submittal.json()["id"]
print(f"Submittal #{submittal.json()['number']} created")
# Approve the submittal
requests.patch(
f"{BASE}/projects/{project_id}/submittals/{submittal_id}",
headers={**headers, "Content-Type": "application/json"},
json={"submittal": {"status_id": 2}}, # 2 = Approved
)
# Get all pending submittals
pending = requests.get(
f"{BASE}/projects/{project_id}/submittals",
headers=headers,
params={"filters[status_id]": 1}, # 1 = Open/Pending
)
for s in pending.json():
print(f" #{s['number']}: {s['title']} — Due: {s['due_date']}")
| Error | Cause | Solution |
|---|---|---|
422 Missing approver | Required field | Set approver_id |
403 Cannot approve | Not the approver | Only assigned approver can approve |
Handle events: procore-webhooks-events