diff --git a/README.md b/README.md index f0afc8e..8b87e51 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,14 @@ Community examples, open to everyone. This is the section external contributions | [`peer-kudos-home-card`](examples/peer-kudos-home-card) | An Extend app with a Home page card, custom business object, and orchestration that lets employees celebrate peer contributions and notifies managers. | Extend App | | [`pto-policy-agent-skill`](examples/pto-policy-agent-skill) | A markdown skill that teaches an agent to answer employee questions about PTO, leave accrual, rollover, and sick leave policy with clear escalation rules. | Agent Skill | | [`stock-notifications`](examples/stock-notifications) | An Extend app that fetches Workday's current stock price from an external API and displays it on a home page card. | Extend App | +| [`workday-ai-gateway-skill`](examples/workday-ai-gateway-skill) | A markdown skill that reviews an AI Gateway or AWS starter call and keeps secrets out of the page. | Agent Skill | +| [`workday-apis-skill`](examples/workday-apis-skill) | A markdown skill that chooses and reviews a Workday Graph, WQL, REST, or SOAP call. | Agent Skill | +| [`workday-developer-copilot-skill`](examples/workday-developer-copilot-skill) | A markdown skill that shapes a prompt for Workday Developer Copilot and lists what must not be pasted. | Agent Skill | +| [`workday-extend-skill`](examples/workday-extend-skill) | A markdown skill that reviews an Extend app shell and data model: AMD routes, SMD auth, business objects, and security domains. | Agent Skill | +| [`workday-home-cards-skill`](examples/workday-home-cards-skill) | A markdown skill that reviews a Workday Home card definition and its tenant setting. | Agent Skill | +| [`workday-orchestrate-skill`](examples/workday-orchestrate-skill) | A markdown skill that reviews an Orchestrate flow for Maya file shape, expressions, and secrets. | Agent Skill | +| [`workday-pmd-skill`](examples/workday-pmd-skill) | A markdown skill that reviews an Extend page for a security domain, endpoint failures, widget ids, labels, and secrets. | Agent Skill | +| [`workday-skill`](examples/workday-skill) | A markdown skill that chooses which Workday agent skill to apply when a task starts a new app or touches more than one artifact. | Agent Skill | | [`wql-anniversary-celebrations`](examples/wql-anniversary-celebrations) | An orchestration that queries Workday via WQL for active workers celebrating milestone work anniversaries and formats an announcement digest payload for collaboration channels. | Orchestration | diff --git a/examples/workday-ai-gateway-skill/README.md b/examples/workday-ai-gateway-skill/README.md new file mode 100644 index 0000000..b253226 --- /dev/null +++ b/examples/workday-ai-gateway-skill/README.md @@ -0,0 +1,21 @@ +# Workday AI Gateway Skill + +## What it is + +A markdown skill that reviews an AI Gateway call or an AWS starter flow from the Workday catalog. It covers document intelligence, WQL generation, sentiment analysis, and the AWS starter apps. + +## What's inside + +- `SKILL.md` is the skill: Gateway and AWS call rules, plus the catalog apps to copy. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-ai-gateway-skill/SKILL.md b/examples/workday-ai-gateway-skill/SKILL.md new file mode 100644 index 0000000..56a79b4 --- /dev/null +++ b/examples/workday-ai-gateway-skill/SKILL.md @@ -0,0 +1,34 @@ +--- +name: workday-ai-gateway +description: Reviews Workday AI Gateway calls and the AWS starter pattern in the Workday catalog. Use when editing document intelligence, WQL generation, sentiment analysis, or AWS Translate, Textract, Comprehend, or badge flows. Do not use for ordinary .pmd layout or for prompts to Workday Developer Copilot. +--- + +# Workday AI Gateway + +Review the Gateway or AWS call. Report only genuine problems. The page still follows `workday-pmd`. The flow still follows `workday-orchestrate`. + +| Need | Open first | +| --- | --- | +| Natural language to WQL | `catalog/generateWQL` | +| Document intelligence | `catalog/documentIntelligenceWithTheAIGateway` | +| AWS Translate, Textract, and Comprehend | `catalog/AWSStarterKit` | +| Badge photo and EventBridge | `catalog/AWSBadgeGenerator` | +| Sentiment on stored text | `catalog/charitableDonationsWithSentimentAnalysis` | + +## Rules + +- Call the Gateway from an orchestration or an Extend endpoint inside the Workday boundary. Do not send worker documents from the browser to a public model. +- Follow the call shape in the catalog sample you opened. Do not invent a Gateway path. +- Treat model output as untrusted until the page or flow validates required fields. +- Call AWS from the orchestration, not from the page. Store credentials in the tenant secret store. +- Never write a secret, tenant host, access key, or webhook into a page, an AMD, or this skill. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "Where should the AWS secret key be stored?" +- "Can the page call Textract directly?" +- "The model omitted a required field. What should the flow do?" diff --git a/examples/workday-ai-gateway-skill/example.json b/examples/workday-ai-gateway-skill/example.json new file mode 100644 index 0000000..7aecef9 --- /dev/null +++ b/examples/workday-ai-gateway-skill/example.json @@ -0,0 +1,16 @@ +{ + "title": "Workday AI Gateway Skill", + "description": "A markdown skill that reviews an AI Gateway or AWS starter call and keeps secrets out of the page.", + "type": "Agent Skill", + "components": [ + "AWS Integration" + ], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-apis-skill/README.md b/examples/workday-apis-skill/README.md new file mode 100644 index 0000000..4ea7ae4 --- /dev/null +++ b/examples/workday-apis-skill/README.md @@ -0,0 +1,21 @@ +# Workday APIs Skill + +## What it is + +A markdown skill that picks Graph, WQL, REST, or SOAP and then reviews the call. It points at catalog samples for each protocol. + +## What's inside + +- `SKILL.md` is the skill: how to choose an API, and the rules for each call style. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-apis-skill/SKILL.md b/examples/workday-apis-skill/SKILL.md new file mode 100644 index 0000000..1d03624 --- /dev/null +++ b/examples/workday-apis-skill/SKILL.md @@ -0,0 +1,35 @@ +--- +name: workday-apis +description: Chooses and reviews Workday REST, SOAP, Graph API, and WQL calls. Use when editing .graphquery or .wqlquery files, or when writing REST, SOAP, OAuth, or pagination handling. Do not use for .pmd layout or .orchestration step structure. +--- + +# Workday APIs + +Pick the API, then review the call. Report only genuine problems. + +| Need | API | Open first | +| --- | --- | --- | +| A few fields in one round trip | Graph | `catalog/vehicleRegistration/presentation/graphQueries` | +| Create or update one resource | REST | `catalog/updateWorkdayAccounts` | +| Bulk XML | SOAP | `catalog/workerInboundImageUpload` | +| A report or extract | WQL | `catalog/employeeRecognition/presentation/wqlQueries` and `catalog/wql` | +| One Graph call that creates a record | Graph | `catalog/createSpotBonus` | + +## Rules + +- Store a Graph query as `.graphquery` JSON with `id` and `query`. The page sets `graphQuery.queryId` to that id, `baseUrlType` `workday-graph`, and `httpMethod` `POST`. +- Store a WQL query in `presentation/wqlQueries/.wqlquery` with `id`, `parameters`, and `query`. Every `<% name %>` token is listed in `parameters`. +- Get a REST token with the client-credentials grant. Never write the client id, client secret, or access token into a source file. +- Page REST results with `limit` (maximum 100) and `offset`. On 429, back off. On 401, refresh the token. +- Address SOAP by the tenant service host name. Do not pin an IP. Keep the envelope in an orchestration, not in a page. +- Never log a token or a body that contains pay or a government identifier. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "The page needs five worker fields. Which API do I use?" +- "Where does the Graph query text live?" +- "The REST call returns 429. What should the client do?" diff --git a/examples/workday-apis-skill/example.json b/examples/workday-apis-skill/example.json new file mode 100644 index 0000000..8349011 --- /dev/null +++ b/examples/workday-apis-skill/example.json @@ -0,0 +1,18 @@ +{ + "title": "Workday APIs Skill", + "description": "A markdown skill that chooses and reviews a Workday Graph, WQL, REST, or SOAP call.", + "type": "Agent Skill", + "components": [ + "Graph API", + "WQL" + ], + "products": [ + "Workday REST API", + "Workday SOAP API" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-developer-copilot-skill/README.md b/examples/workday-developer-copilot-skill/README.md new file mode 100644 index 0000000..e864578 --- /dev/null +++ b/examples/workday-developer-copilot-skill/README.md @@ -0,0 +1,21 @@ +# Workday Developer Copilot Skill + +## What it is + +A markdown skill that writes a prompt for the product Workday Developer Copilot. It names the artifact to generate and the data that must stay out of the prompt. + +## What's inside + +- `SKILL.md` is the skill: prompt contents and the privacy limits. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-developer-copilot-skill/SKILL.md b/examples/workday-developer-copilot-skill/SKILL.md new file mode 100644 index 0000000..566a38d --- /dev/null +++ b/examples/workday-developer-copilot-skill/SKILL.md @@ -0,0 +1,30 @@ +--- +name: workday-developer-copilot +description: Shapes prompts for the product Workday Developer Copilot. Use when the user names Workday Developer Copilot and wants a prompt for an Extend model, a PMD page, an orchestration, or an API payload. Do not use for reviewing application source. +--- + +# Workday Developer Copilot + +Write one prompt the user can paste. Then list what you left out. Do not invent tenant data to fill the prompt. + +After Copilot returns JSON, check a page with `workday-pmd`, a model with `workday-extend`, and a flow with `workday-orchestrate`. A generated page that uses `rootWidget` does not match catalog `.pmd` files. Rebuild it as `id`, `securityDomains`, `endPoints`, and `presentation`. + +## The prompt names + +- The artifact: business object, PMD page, orchestration, or API payload. +- Widget ids and field labels when the target is a page. +- The data source or route name when the target is a page or a flow. +- The HTTP method, path, and scope when the target is an API call. +- Multi-line JSON with 2-space indentation. + +## Do not paste + +- A client secret, access token, refresh token, certificate, or webhook URL. +- Production worker rows, pay, bank data, government ids, or documents. +- A tenant hostname. Say "sandbox tenant" instead. + +## Test questions + +- "Write a Workday Developer Copilot prompt for a PMD page that registers a vehicle." +- "Can I paste this access token so Copilot can test the call?" +- "Copilot returned a page with rootWidget. What should I do next?" diff --git a/examples/workday-developer-copilot-skill/example.json b/examples/workday-developer-copilot-skill/example.json new file mode 100644 index 0000000..6fcfe60 --- /dev/null +++ b/examples/workday-developer-copilot-skill/example.json @@ -0,0 +1,14 @@ +{ + "title": "Workday Developer Copilot Skill", + "description": "A markdown skill that shapes a prompt for Workday Developer Copilot and lists what must not be pasted.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-extend-skill/README.md b/examples/workday-extend-skill/README.md new file mode 100644 index 0000000..9f5ac47 --- /dev/null +++ b/examples/workday-extend-skill/README.md @@ -0,0 +1,21 @@ +# Workday Extend Skill + +## What it is + +A markdown skill that reviews or writes an Extend app shell and model. It checks AMD tasks, SMD authentication, business objects, security domains, and the app manifest. + +## What's inside + +- `SKILL.md` is the skill: shell, model, and security rules, plus the review output format. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-extend-skill/SKILL.md b/examples/workday-extend-skill/SKILL.md new file mode 100644 index 0000000..a9fd826 --- /dev/null +++ b/examples/workday-extend-skill/SKILL.md @@ -0,0 +1,35 @@ +--- +name: workday-extend +description: Reviews and writes Workday Extend app shells and data models. Use when editing .amd, .smd, .businessobject, .businessprocess, .securitydomain, .attachment, or appManifest.json. Do not use for .pmd pages, .card files, or .orchestration flows. +--- + +# Workday Extend + +Review or write the Extend app shell and model. Report only genuine problems. + +Open first: `catalog/vehicleRegistration`. For a business process, also open `catalog/tuitionReimbursement`. + +If the file is `.pmd`, `.script`, `.card`, or `.orchestration`, stop. Those belong to the page, card, or orchestration skill. + +## Rules + +- Register each page as an AMD task with `id`, `routingPattern`, and `page.id`. `routingPattern` starts with `/`. The hub task uses `"/"`. +- Set `page.id` to the `.pmd` file's `id`. +- Set `applicationId` to the same value as `appManifest.json` `referenceId`. +- Keep Workday base URLs in `dataProviders` with `{{apiGatewayEndpoint}}` and `site.applicationId`. Never write a `*.workday.com` host. +- Set SMD `siteAuth.authTypes` to scheme `SSO` and id `sso`. Map status codes 401, 404, 500, and 503 to a real error page. +- List every `languages[].code` that has a file in `presentation/presentationLabels/`. +- Put `.amd` and `.smd` in `presentation/`. Put business objects, security domains, and business processes in `model/`. +- Use catalog field types: `TEXT`, `INTEGER`, `DATE`, `BOOLEAN`, `DECIMAL`, `SINGLE_INSTANCE`. A worker reference uses `target` `WORKER` and `secureByTarget: true`. +- Give every page a `securityDomains` entry, and use that same name on the business object's `defaultSecurityDomains`. +- Never put an API key, password, or token in an AMD, SMD, or business object. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "Does this AMD route match a page id?" +- "Is the security domain name the same on the model and the page?" +- "This data provider uses a workday.com host. What should replace it?" diff --git a/examples/workday-extend-skill/example.json b/examples/workday-extend-skill/example.json new file mode 100644 index 0000000..0c4af14 --- /dev/null +++ b/examples/workday-extend-skill/example.json @@ -0,0 +1,16 @@ +{ + "title": "Workday Extend Skill", + "description": "A markdown skill that reviews an Extend app shell and data model: AMD routes, SMD auth, business objects, and security domains.", + "type": "Agent Skill", + "components": [ + "Model" + ], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-home-cards-skill/README.md b/examples/workday-home-cards-skill/README.md new file mode 100644 index 0000000..147ee35 --- /dev/null +++ b/examples/workday-home-cards-skill/README.md @@ -0,0 +1,21 @@ +# Workday Home Cards Skill + +## What it is + +A markdown skill that reviews or writes a Workday Home card. It checks the card definition, the tenant setting, and the task the card launches. + +## What's inside + +- `SKILL.md` is the skill: card file rules and the catalog cards to copy. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-home-cards-skill/SKILL.md b/examples/workday-home-cards-skill/SKILL.md new file mode 100644 index 0000000..35dbafe --- /dev/null +++ b/examples/workday-home-cards-skill/SKILL.md @@ -0,0 +1,32 @@ +--- +name: workday-home-cards +description: Reviews and writes Workday Home cards. Use when editing .card, .carddefinition, or .cardtenantsetting files, or when placing a card on Workday Home. Do not use for ordinary .pmd pages that are not cards. +--- + +# Workday Home Cards + +Review or write Home card files. Report only genuine problems. + +Open first: `catalog/employeeRecognition/cards/createRecognitionCard.carddefinition`. For a tenant setting, open `catalog/workFromAlmostAnywhere/cards`. + +## Rules + +- Store the Home card in `cards/.carddefinition` at the app root. +- Set a stable `id`. Employee Recognition uses `createRecognitionCard`. A page `cardContainer` references that id as `cardId`. +- Use `presentation.type` `inlineCard`, `header.type` `cardHeader`, and `body.type` `simpleCard`. +- Keep the icon on a file the app already ships. Do not invent an icon name. +- Add a footer action whose `taskReference.taskId` is an AMD task id when the card launches a page. +- Add a `.cardtenantsetting` beside the definition when the card is launched from Home. Include `securityDomains` and a `routePath` that starts with `/`. +- A card file does not appear on Home by itself. Place it in Workday Home settings after deploy. +- Never hardcode a tenant host or a secret in the card. +- In-page cards that are not on Home live in `presentation/cards/*.card`. Copy tags from `catalog/pmdWidgetDictionary/presentation/cards/`. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "Where does a Home card definition live?" +- "The card launches a page. What must the footer name?" +- "Is a .carddefinition enough for the card to show on Home?" diff --git a/examples/workday-home-cards-skill/example.json b/examples/workday-home-cards-skill/example.json new file mode 100644 index 0000000..9e88de9 --- /dev/null +++ b/examples/workday-home-cards-skill/example.json @@ -0,0 +1,16 @@ +{ + "title": "Workday Home Cards Skill", + "description": "A markdown skill that reviews a Workday Home card definition and its tenant setting.", + "type": "Agent Skill", + "components": [ + "Card" + ], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-orchestrate-skill/README.md b/examples/workday-orchestrate-skill/README.md new file mode 100644 index 0000000..34cd134 --- /dev/null +++ b/examples/workday-orchestrate-skill/README.md @@ -0,0 +1,21 @@ +# Workday Orchestrate Skill + +## What it is + +A markdown skill that reviews or writes an orchestration. It checks the Maya flow shape used by the catalog, expression safety, and credentials. + +## What's inside + +- `SKILL.md` is the skill: flow, expression, and security rules. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-orchestrate-skill/SKILL.md b/examples/workday-orchestrate-skill/SKILL.md new file mode 100644 index 0000000..f6b6be1 --- /dev/null +++ b/examples/workday-orchestrate-skill/SKILL.md @@ -0,0 +1,31 @@ +--- +name: workday-orchestrate +description: Reviews and writes Workday Orchestrate and Integration App flows. Use when editing .orchestration or .suborchestration files, listeners, or Orchestrate expression language. Do not use for .pmd pages or .amd files. +--- + +# Workday Orchestrate + +Review or write orchestration files. Report only genuine problems. + +Open first: `catalog/orchestrateForIntegrationsSampler/orchestration/GetWorkers.orchestration`. For a real outbound integration, open `catalog/employeeDemographicOutbound`. + +## Rules + +- Keep `flowVersion`, `_type` `Flow`, and `_value` when editing a catalog flow. Add a step by cloning a nearby step in the same file. +- Keep the flow name equal to the file name without `.orchestration`. +- Do not rewrite a Maya flow into a simplified `listener` and `steps` document. Use that shape only to decide what the flow must do. +- Use single quotes for string literals inside an expression. Use `?.` before a field that may be missing, and `??` for a fallback. +- Use `jsonpath()` for JSON and `xpath()` for XML. Do not hand-parse either. +- Use client credentials for a headless system-to-system call. Never put a client secret, password, or certificate body in the orchestration JSON. +- Grant an Integration System User only the GET or PUT operations the flow calls. +- Retry status codes 429, 500, 502, 503, and 504. Do not retry 400 or 401. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "Can I replace this Maya flow with a listener and steps JSON object?" +- "Where should the client secret live?" +- "Which HTTP status codes should the outbound step retry?" diff --git a/examples/workday-orchestrate-skill/example.json b/examples/workday-orchestrate-skill/example.json new file mode 100644 index 0000000..1d38d6d --- /dev/null +++ b/examples/workday-orchestrate-skill/example.json @@ -0,0 +1,16 @@ +{ + "title": "Workday Orchestrate Skill", + "description": "A markdown skill that reviews an Orchestrate flow for Maya file shape, expressions, and secrets.", + "type": "Agent Skill", + "components": [ + "Orchestration" + ], + "products": [ + "Workday Orchestrate" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-pmd-skill/README.md b/examples/workday-pmd-skill/README.md new file mode 100644 index 0000000..9945a30 --- /dev/null +++ b/examples/workday-pmd-skill/README.md @@ -0,0 +1,21 @@ +# Workday PMD Skill + +## What it is + +A markdown skill that reviews or writes an Extend page. It checks security domains, endpoint failure codes, widget ids, localization labels, and secrets. + +## What's inside + +- `SKILL.md` is the skill: page, widget, script, and chart rules. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-pmd-skill/SKILL.md b/examples/workday-pmd-skill/SKILL.md new file mode 100644 index 0000000..9523e8e --- /dev/null +++ b/examples/workday-pmd-skill/SKILL.md @@ -0,0 +1,35 @@ +--- +name: workday-pmd +description: Reviews and writes Workday Extend presentation files. Use when editing .pmd pages, .script files, chart pages, or .properties localization bundles. Do not use for .card, .carddefinition, .cardtenantsetting, .amd, or .orchestration files. +--- + +# Workday PMD + +Review or write pages, scripts, and charts. Report only genuine problems. + +Open first: `catalog/pmdWidgetDictionary`. For scripts, open `catalog/pmdScripting`. For charts, open `catalog/chartDictionary`. For a real page with endpoints, open `catalog/vehicleRegistration/presentation/home.pmd`. + +## Rules + +- Set the page `id` to the AMD task's `page.id`. +- Give every page a `securityDomains` entry that matches the business object's `defaultSecurityDomains`. +- Give every widget an `id`. +- Put data calls in `endPoints`. Set `baseUrlType` to a key declared in the AMD `dataProviders`. +- Call Graph with `httpMethod` `POST` and `graphQuery.queryId` set to the `.graphquery` file's `id`. +- Set `authType` to `sso` on Workday endpoints. +- List `failOnStatusCodes` for at least 400 and 403 on every endpoint. +- Bind with `<% ... %>`. Put user-facing copy in `<% presentationLabels.KeyName %>` and in `presentation/presentationLabels/`. +- Never leave a `console.*` call in a page or a binding. +- Never write a `*.workday.com` host, client secret, token, or webhook in the page. +- Copy widget tags from `catalog/pmdWidgetDictionary/presentation/`. Do not invent a widget type. +- Put scripts in `presentation/scripts/` and end each script with an export object. Include the script from the page before calling it. + +## Output format + +For each issue, state the file and line, name the rule, and show a short before and after. Skip clean files. + +## Test questions + +- "This page has no securityDomains. Is that a problem?" +- "The endpoint fails on 400 only. What is missing?" +- "A label is hardcoded in the page. Where should the text live?" diff --git a/examples/workday-pmd-skill/example.json b/examples/workday-pmd-skill/example.json new file mode 100644 index 0000000..050d98d --- /dev/null +++ b/examples/workday-pmd-skill/example.json @@ -0,0 +1,16 @@ +{ + "title": "Workday PMD Skill", + "description": "A markdown skill that reviews an Extend page for a security domain, endpoint failures, widget ids, labels, and secrets.", + "type": "Agent Skill", + "components": [ + "Presentation" + ], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/workday-skill/README.md b/examples/workday-skill/README.md new file mode 100644 index 0000000..267afeb --- /dev/null +++ b/examples/workday-skill/README.md @@ -0,0 +1,21 @@ +# Workday Skill Router + +## What it is + +A markdown skill that tells an agent which other Workday skill to open. Use it when a task starts a new app or touches pages, models, and orchestrations together. + +## What's inside + +- `SKILL.md` is the skill: a decision table, the runtime choice, and the catalog folder layout. + +## How to use it + +1. Read `SKILL.md`. +2. Add that file to your agent using your platform's skill setup. +3. Ask the test questions at the bottom of `SKILL.md` and confirm the agent names the rule it is using. + + +## Before you deploy + +This folder is markdown only. There is no app reference id, tenant host, secret, or worker id to replace. Do not add those values when you adapt the skill. + diff --git a/examples/workday-skill/SKILL.md b/examples/workday-skill/SKILL.md new file mode 100644 index 0000000..6cd0bca --- /dev/null +++ b/examples/workday-skill/SKILL.md @@ -0,0 +1,46 @@ +--- +name: workday +description: Chooses which Workday skill to apply when starting an app or when a task spans more than one artifact. Use when the user asks to build a new Workday app, choose Extend versus an Integration App versus an API, or the change touches pages, models, orchestrations, and queries together. +--- + +# Workday + +Pick one skill and one catalog sample. Do not restate that skill's rules. If the task is a single file type, stop and use only the matching skill. + +## Decision + +| You are building or changing | Skill | Open first | +| --- | --- | --- | +| App shell, AMD, SMD, business object, security domain, business process, manifest | `workday-extend` | `catalog/vehicleRegistration` | +| Model plus approval business process | `workday-extend` | `catalog/tuitionReimbursement` | +| `.pmd`, `.script`, charts, `.properties` | `workday-pmd` | `catalog/pmdWidgetDictionary` | +| `.card`, `.carddefinition`, `.cardtenantsetting` | `workday-home-cards` | `catalog/employeeRecognition/cards` | +| `.orchestration`, `.suborchestration` | `workday-orchestrate` | `catalog/orchestrateForIntegrationsSampler` | +| Outbound integration file | `workday-orchestrate` | `catalog/employeeDemographicOutbound` | +| `.graphquery`, `.wqlquery`, REST, SOAP | `workday-apis` | `catalog/vehicleRegistration/presentation/graphQueries` | +| AI Gateway or an AWS starter call | `workday-ai-gateway` | `catalog/generateWQL` | +| A prompt for Workday Developer Copilot | `workday-developer-copilot` | `catalog/generateWQL` | + +## Which runtime + +- User-facing UI inside Workday: Extend (`workday-extend` plus `workday-pmd`). +- Headless sync, file drop, schedule, or business event: an Integration App (`workday-orchestrate`). +- A caller outside Workday reading or writing data: an API (`workday-apis`). Use Graph for an exact field set, REST for one resource, SOAP for bulk XML, and WQL for reporting. + +## Layout + +Match the catalog sample. Do not invent a tree. + +- `presentation/` for `.amd`, `.smd`, `.pmd`, `graphQueries/`, `wqlQueries/`, `scripts/`, `presentationLabels/`, and in-page `.card` files +- `model/` for business objects, security domains, and business processes +- `orchestration/` for flows +- `cards/` at the app root for `.carddefinition` and `.cardtenantsetting` +- `attributes/` and `appManifest.json` at the app root + +Copy only apps under `catalog/`. Do not invent security domain ids, routes, or endpoints. + +## Test questions + +- "I need a new Extend app with a page and a business object. Where do I start?" +- "This change is only a .pmd file. Which skill applies?" +- "Should this be an orchestration or a REST call?" diff --git a/examples/workday-skill/example.json b/examples/workday-skill/example.json new file mode 100644 index 0000000..69b5b35 --- /dev/null +++ b/examples/workday-skill/example.json @@ -0,0 +1,14 @@ +{ + "title": "Workday Skill Router", + "description": "A markdown skill that chooses which Workday agent skill to apply when a task starts a new app or touches more than one artifact.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday Extend" + ], + "authors": [ + "srivilliamsai" + ], + "tutorial": "", + "source": "community" +}