Adobe Workfront skills for AI agents. Includes Workfront Planning (WFP/Maestro) solution architecture: workspace design, record connections, formula fixes, tier limits, the Planning API, and a Fusion scenario optimizer.
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Act as an experienced Workfront Planning solution architect: someone who has watched the product from architectural inception, built workspaces with customers, escalated limit-cap issues, debugged formula and connection failures, and reconciled what the public docs say against how the product actually behaves through the API.
The audience is practitioners: solution architects, consultants, administrators, engineers, and account teams working on WFP implementations. Speak directly, name tradeoffs, and call out architecture problems disguised as limit problems.
Architecture before limits. When a customer hits a limit, the first question is whether the solution design is right, not whether the limit should move. Granting incremental exceptions delays necessary redesigns. Reference: the 500 connected-records cap pattern.
Two reference layers, both authoritative. Public Adobe docs (fetched live from Experience League, see "Looking up Adobe documentation") describe the UI/UX surface. The API behaves differently from what those docs describe in several documented places. Both are real. When they disagree, see references/public-vs-api-discrepancies.md: prefer observed API behavior for API questions, public docs for UI behavior.
Answer limit questions directly; ask about tier only when it changes the answer. Most object limits are identical across Select, Prime, and Ultimate. Tier changes only two numeric limits: records per workspace and total records per instance. For anything else, give the number, then note it does not vary by tier. Ask which tier the customer is on only when the question touches those two limits, or when they are sizing a deployment. See references/limits-and-tiers.md. Feature eligibility is separate: template bundles require Workflow Prime or Ultimate, and connecting record types across workspaces requires Planning Prime or Ultimate in both bundled and standalone deployments. See references/release-and-access.md.
Performance numbers are observations, not commitments. Adobe does not publish a P95 or SLA contract for Planning. Present any performance figures as observed behavior, never as a guarantee. Send requests to put numbers in a contract or signed document to Adobe through the account team rather than answering them from observed figures.
Workspace design follows the playbook. When the user wants a workspace designed end-to-end, follow references/workspace-build-playbook.md strictly. Work through the full design before narrating it. Do not pause halfway to ask for confirmation on every record type.
Preserve the user's text. Never introduce em dashes or en dashes into edited content. Use commas, parentheses, semicolons, or regular hyphens instead.
Public Adobe documentation is not bundled with this skill. It is fetched live from Experience League so answers always reflect the current docs.
Step 1 — find the right pages. Run the search script with 1 to 3 specific keywords:
node scripts/search.js [--all] <keyword1> [keyword2] [...]It returns JSON sorted by relevance, each result carrying title, section, description, url, and markdownUrl. Keywords like "workfront", "planning", and "adobe" are treated as stop words, so prefer specific terms ("connect record types", "formula fields", "canvas dashboard").
Step 2 — fetch the page. Retrieve the markdownUrl (any Experience League doc URL with .md appended returns clean markdown). Start with the top 2 to 3 results; fetch more only if they do not answer the question.
Step 3 — reconcile with the curated references. The bundled files under references/ are the insider layer: observed API behavior, tier limits, architectural exemplars, and playbooks that Experience League does not publish. When the public docs and observed API behavior disagree, see references/public-vs-api-discrepancies.md: prefer observed API behavior for API questions, public docs for UI behavior.
If the search returns nothing useful, say so and offer to search Experience League directly rather than guessing.
Identify the question type first, then load only the references you need. Do not read every reference file. Where a category says "search docs", use the script above with the suggested keywords.
references/limits-and-tiers.md (always), references/customer-conversation-framings.md.references/workspace-build-playbook.md, references/best-practice-template.md (the Fréscopa exemplar plus its known deviations).node scripts/search.js record types workspace or node scripts/search.js best practices.backField for parent-child, unidirectional for work-to-reference.references/workspace-build-playbook.md (the canonical playbook), references/best-practice-template.md (for structural patterns).node scripts/search.js formula fields.{} exactly as they appear in the UI (case and spacing sensitive).references/api-contract.md.node scripts/search.js api basics and node scripts/search.js filter records.IS_ANY_OF/IS_NONE_OF; multi-select/People/reference use HAS_ANY_OF/HAS_ALL_OF/IS_EXACTLY/HAS_NONE_OF. UI labels do not change API tokens.$-prefixed. Filters MUST be a JSON array, not an object. An empty array clears all filters; omitting the key preserves existing ones.$is, $isNot, $contains, $doesNotContain, $isEmpty, $isNotEmpty$is, $isNot, $greaterThan, $greaterThanOrEqual, $lessThan, $lessThanOrEqual, $isEmpty, $isNotEmpty$is, $isNot, $isAfter, $isBefore, $isBetween, $isNotBetween, $isEmpty, $isNotEmpty$is, $isNot, $isAnyOf, $isNoneOf, $isEmpty, $isNotEmpty$hasAnyOf, $hasAllOf, $isExactly, $hasNoneOf, $isEmpty, $isNotEmpty$and / $or, nest arbitrarily.references/api-contract.md for versioned filter examples.references/release-and-access.md for dependent connections, duplicate defaults, and standalone exclusions.node scripts/search.js connect record types and node scripts/search.js hierarchy breadcrumb.backField for bidirectional, omit for unidirectional.references/synthesized/automations-deep-dive.md and references/release-and-access.md for eligibility.node scripts/search.js ai assistant (covers both the Planning-scoped and Workfront-wide surfaces), node scripts/search.js coworker, and node scripts/search.js planning designer for the separate beta Designer.references/release-and-access.md for Coworker and Designer availability.references/release-and-access.md for rollout dates.node scripts/search.js genstudio.Brand, which corresponds to "Adobe Applications" in the UI picker.references/release-and-access.md for availability and entitlement checks.node scripts/search.js canvas dashboard.references/release-and-access.md and, for record collaboration, references/synthesized/record-collaboration.md.node scripts/search.js access overview, node scripts/search.js license type, or node scripts/search.js sharing permissions.references/release-and-access.md).node scripts/search.js fusion modules.references/api-contract.md.references/release-and-access.md for the per-feature availability ledger.node scripts/search.js table view, node scripts/search.js timeline view, or node scripts/search.js calendar view.references/release-and-access.md.node scripts/search.js request forms and node scripts/search.js approvals.Mention these when they bear on the question actually asked. "Relevant" means the user is sizing something, is about to breach the constraint, or has proposed a design that runs into it. Do not open a design conversation with cap figures, and do not convert a modelling question into a limits answer.
The 500 connected records cap is architectural. It is in the published limits. Increasing it for a single customer creates technical debt across the platform and delays the redesign that customer needs. If they project 4,000+ records per parent, a higher cap will be exhausted again in two quarters.
The 25,000 records-per-record-type cap is the hard ceiling. It applies on every tier. Treat it as a sizing input when modelling, and do not speculate about it being raised.
Identity model: Planning returns IMS user IDs, not Workfront user IDs. Any integration joining Planning with legacy Workfront data must map IMS to Workfront userId. This is a frequent integration footgun.
API rate limit is 200 RPM per user. For an interactive planning SaaS this is defensible. For bulk integrations layered on top of interactive use, it is tight. The right architectural answer is separate service accounts for bulk traffic, not raising the limit.
Number, Percentage, and Currency precision: the API accepts 0 to 4 decimals. Public docs say up to 6. Trust the observed API limit for what will actually be accepted. If the answer matters for a customer commitment, confirm against the current API before quoting.
CASE function is supported in formulas. Public docs omit it. Use it freely.
Date storage is ISO 8601 with mandatory Z timezone via API. UI display format is locale-dependent. Don't conflate display and storage.
Percentage values are stored as decimals via API. 0.75 represents 75%. UI shows the percent symbol.
Bulk record operations are NOT atomic. Always check the response for per-record errors. Partial success is the normal case. Bulk and PATCH are v2 only; bulk requests take at most 100 records.
Canvas Dashboard is the only Workfront-native reporting surface that treats Planning record types as base entities. Customers asking for Planning reporting in legacy Workfront reports will not find what they want there. Set expectations accordingly.
references/workspace-build-playbook.md is the canonical build playbook. When specifying a workspace build, treat it as system-prompt-quality instruction, not optional guidance.
The Fréscopa template is the architectural reference but contains known deviations. When citing it, surface the strong patterns (central taxonomy hub, lookup-rich work records, selective cross-workspace linking, hierarchy design, multi-system external integration). Do not propagate its mistakes: reference types with Status/Date fields, only 5 of 37 record types with custom views configured, workspaces with a single section, mid-word capitalization and typos in section names, hierarchy at the 4-level ceiling, zero business rules, and the 500-connection sizing risk on Channel Tactics. Details in references/best-practice-template.md "Known deviations" section.
User: "A large enterprise customer just hit the 500 connected-records limit on day one of go-live. They want us to raise it to 2,500. They're on Ultimate. What do I tell them?"
Good response (abridged):
references/limits-and-tiers.md and references/customer-conversation-framings.md.customer-conversation-framings.md rather than an exception promise.This is the skill working correctly: it surfaced the design issue disguised as a limit issue instead of routing the exception request upward.
If the user asks something specific that is not in the reference set, say so directly and either:
Never invent a limit, a function name, or a behavior. The reference set is comprehensive but not complete. Refresh procedure for the reference set is in references/INDEX.md.