Install
openclaw skills install fpt-cliThis skill should be used when OpenClaw needs to install, configure, inspect, or operate `fpt-cli` for Autodesk Flow Production Tracking / ShotGrid workflows, especially for auth setup, schema/entity reads, structured searches, and safe write previews.
openclaw skills install fpt-cliProvide a stable, agent-optimized workflow for using fpt-cli from OpenClaw.
This skill follows the Agent DX principles from "You Need to Rewrite Your CLI for AI Agents":
Keep the agent behavior aligned with the repository contract:
Use this skill when any of the following is needed:
fpt-clifilter_dsl, structured search, or additional_filter_presets--dry-run firstDetermine whether the task should use a released binary or a source checkout.
references/install-and-auth.md and prefer release archives plus checksum verification over pipe-to-shell installers.vx cargo run -p fpt-cli -- ... and vx just ....Load credentials through environment variables instead of putting secrets directly on the command line. Never trigger browser-based OAuth flows in headless environments.
Preferred variables:
| Variable | Required | Auth modes | Description |
|---|---|---|---|
FPT_SITE | required | all | Full URL of the ShotGrid / FPT site, e.g. https://example.shotgrid.autodesk.com |
FPT_AUTH_MODE | required | all | Auth strategy: script, user_password, or session_token |
FPT_SCRIPT_NAME | required | script | Name of the API script credential registered in ShotGrid |
FPT_SCRIPT_KEY | required | script | Secret key for the script credential; quote the value when it contains special characters |
FPT_USERNAME | required | user_password | ShotGrid user login (usually an email address) |
FPT_PASSWORD | required | user_password | Password for the ShotGrid user account |
FPT_AUTH_TOKEN | optional | user_password | One-time 2FA token; only needed when the site enforces two-factor authentication |
FPT_SESSION_TOKEN | required | session_token | A pre-obtained ShotGrid session token; use when script or password credentials are unavailable |
FPT_API_VERSION | optional | all | Override the ShotGrid REST API version, e.g. v1.1; defaults to the CLI built-in value when omitted |
Allow SG_* variables only as compatibility fallback when FPT_* is not available.
Do not rely on pre-trained knowledge to determine command signatures or entity/field names. Pre-trained knowledge goes stale. Guessing causes syntax errors and hallucinates parameters.
Pattern: fetch command list first, then fetch only the contracts you need.
# Step 1: get all command names (cheap — no full payload)
fpt inspect list --output json
# Step 2: fetch contract for specific commands you will actually use
fpt inspect command entity.find --output json
fpt inspect command entity.batch.count --output json
# Step 3: verify entity and field names before composing queries
fpt schema entities --output json
fpt schema fields Shot --output json
Using inspect list before inspect command keeps context window usage low.
Using capabilities returns the full payload for all commands — use it only when you need an overview.
Prefer the smallest command that satisfies the task.
entity.get when the entity id is known.entity.find-one when only one match is needed.entity.find when multiple matches or collection metadata are needed.entity.batch.* when repeating the same operation over many inputs.entity.batch.count when counting records across multiple entity types — do not call entity.count once per type.schema.entities and schema.fields before guessing entity or field names.Large API responses can consume significant context window and degrade reasoning.
Always limit the fields you request:
# Good: request only the fields you need
fpt entity get Shot 123 --fields code,sg_status_list --output json
# Good: use fields param in find input
fpt entity find Shot --input '{"fields": ["code", "sg_status_list"]}' --output json
# Good: batch count across multiple types in one call
fpt entity batch count --input '["Shot","Asset","Task"]' --output json
Do not request all fields when you only need a few.
Use entity.batch.* commands instead of looping single-entity calls.
Default to --output json unless a human explicitly needs a different view.
This keeps OpenClaw orchestration stable and lowers prompt/token overhead.
The CLI validates inputs against hallucination patterns. These checks cannot be bypassed:
? or # — do not embed query parameters in entity names.
Wrong: entity get "Shot?fields=code" 123
Right: entity get Shot 123 --fields code%2e%2e instead of .. will cause double-encoding failures.The CLI operates in a zero-trust model: all inputs are validated as if they came from an untrusted source.
For non-trivial filters:
search JSON when building native _search payloadsadditional_filter_presets for "latest"-style workflows--filter-dsl for concise human-authored boolean logicRead references/query-patterns.md for examples.
For writes:
--dry-run first when supported — treat dry-run output as the request-plan contract--yes)# Always preview before mutating
fpt entity create Version --input @payload.json --dry-run --output json
# Then execute only after reviewing the plan
fpt entity create Version --input @payload.json --output json
When something fails:
auth testinspect command <name>references/install-and-auth.mdreferences/query-patterns.md