Claude-code-plugins-plus-skills procore-core-workflow-a

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/procore-pack/skills/procore-core-workflow-a" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-procore-core-workflow-a && rm -rf "$T"
manifest: plugins/saas-packs/procore-pack/skills/procore-core-workflow-a/SKILL.md
source content

Procore Core Workflow A

Overview

Build a complete RFI workflow: create, assign, respond, track, and close RFIs using the Procore API.

Prerequisites

  • Completed
    procore-hello-world
    with project access

Instructions

Step 1: Create RFI with Full Details

rfi_data = {
    "rfi": {
        "subject": "HVAC duct routing — Level 2 conflict",
        "question_body": "The HVAC ducts conflict with structural beams at grid B-4. Need routing alternatives.",
        "assignee_id": 11111,
        "rfi_manager_id": 22222,
        "due_date": "2026-04-15",
        "priority": "high",
        "cost_impact": "yes",
        "schedule_impact": "yes",
    }
}
rfi = requests.post(
    f"{BASE}/projects/{project_id}/rfis",
    headers={**headers, "Content-Type": "application/json"},
    json=rfi_data,
)
rfi_id = rfi.json()["id"]

Step 2: Add Response to RFI

response = requests.post(
    f"{BASE}/projects/{project_id}/rfis/{rfi_id}/responses",
    headers={**headers, "Content-Type": "application/json"},
    json={
        "response": {
            "body": "Route ducts below beam using 8-inch offset. See attached drawing.",
        }
    },
)

Step 3: Track RFI Status

rfi_detail = requests.get(f"{BASE}/projects/{project_id}/rfis/{rfi_id}", headers=headers)
data = rfi_detail.json()
print(f"RFI #{data['number']}: {data['status']['name']}")
print(f"  Days open: {data.get('days_open', 0)}")
print(f"  Responses: {len(data.get('responses', []))}")

Step 4: Close RFI

requests.patch(
    f"{BASE}/projects/{project_id}/rfis/{rfi_id}",
    headers={**headers, "Content-Type": "application/json"},
    json={"rfi": {"status": "closed"}},
)

Output

  • RFI created with full metadata (priority, impacts, due date)
  • Responses added to RFI thread
  • Status tracked through lifecycle
  • RFI closed upon resolution

Error Handling

ErrorCauseSolution
422 Invalid assignee
User not on projectVerify user is a project member
403 Cannot close
Not RFI managerOnly RFI manager can close
Missing responsesRFI in draft statusDistribute RFI first

Resources

Next Steps

Submittal workflow:

procore-core-workflow-b