From 3902136f721a4ac78e2d4b3d653a26c7a7661315 Mon Sep 17 00:00:00 2001 From: Daksh Aneja Date: Tue, 10 Nov 2026 20:02:11 +0530 Subject: [PATCH] Add five agent skills for governed changes Undo, inbox decisions, time off, rewards and a WQL workforce analyst. Each skill names the Workday operations it relies on, treats every change as a proposal a person approves, and lists what to refuse. Co-Authored-By: Claude Fable 5.2 --- README.md | 5 +++ .../README.md | 25 ++++++++++++ .../SKILL.md | 38 ++++++++++++++++++ .../example.json | 15 +++++++ .../inbox-decisions-agent-skill/README.md | 25 ++++++++++++ examples/inbox-decisions-agent-skill/SKILL.md | 39 ++++++++++++++++++ .../inbox-decisions-agent-skill/example.json | 15 +++++++ .../rewards-proposal-agent-skill/README.md | 27 +++++++++++++ .../rewards-proposal-agent-skill/SKILL.md | 39 ++++++++++++++++++ .../rewards-proposal-agent-skill/example.json | 15 +++++++ .../time-off-request-agent-skill/README.md | 26 ++++++++++++ .../time-off-request-agent-skill/SKILL.md | 38 ++++++++++++++++++ .../time-off-request-agent-skill/example.json | 17 ++++++++ .../README.md | 25 ++++++++++++ .../SKILL.md | 40 +++++++++++++++++++ .../example.json | 17 ++++++++ 16 files changed, 406 insertions(+) create mode 100644 examples/business-process-undo-agent-skill/README.md create mode 100644 examples/business-process-undo-agent-skill/SKILL.md create mode 100644 examples/business-process-undo-agent-skill/example.json create mode 100644 examples/inbox-decisions-agent-skill/README.md create mode 100644 examples/inbox-decisions-agent-skill/SKILL.md create mode 100644 examples/inbox-decisions-agent-skill/example.json create mode 100644 examples/rewards-proposal-agent-skill/README.md create mode 100644 examples/rewards-proposal-agent-skill/SKILL.md create mode 100644 examples/rewards-proposal-agent-skill/example.json create mode 100644 examples/time-off-request-agent-skill/README.md create mode 100644 examples/time-off-request-agent-skill/SKILL.md create mode 100644 examples/time-off-request-agent-skill/example.json create mode 100644 examples/wql-workforce-analyst-agent-skill/README.md create mode 100644 examples/wql-workforce-analyst-agent-skill/SKILL.md create mode 100644 examples/wql-workforce-analyst-agent-skill/example.json diff --git a/README.md b/README.md index e47d0fc..8ed0188 100644 --- a/README.md +++ b/README.md @@ -116,12 +116,16 @@ Community examples, open to everyone. This is the section external contributions | Example | Description | Type | | --- | --- | --- | +| [`business-process-undo-agent-skill`](examples/business-process-undo-agent-skill) | A markdown skill that teaches an agent to read a Workday business process event and prepare a rescind or cancel for approval. | Agent Skill | | [`expense-policy-agent-skill`](examples/expense-policy-agent-skill) | A markdown skill that teaches an agent to answer expense policy questions and escalate anything it cannot verify. | Agent Skill | | [`employee-data-orchestration`](examples/employee-data-orchestration) | An orchestration that reads worker data from one tenant and creates matching records through the Workday REST API. | Orchestration | +| [`inbox-decisions-agent-skill`](examples/inbox-decisions-agent-skill) | A markdown skill that teaches an agent to read a person's Workday inbox, explain what each step does and prepare an approve, deny or send back decision for approval. | Agent Skill | | [`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 | | [`promotion-nomination`](examples/promotion-nomination) | A manager nominates a direct report for promotion. Career data is prefilled from Workday, the nomination is saved to a business object, and a business process routes it for approval. | 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 | +| [`rewards-proposal-agent-skill`](examples/rewards-proposal-agent-skill) | A markdown skill that teaches an agent to prepare spot bonuses and base pay changes as proposals, using the worker's real plan, with the amount always chosen by a person. | 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 | +| [`time-off-request-agent-skill`](examples/time-off-request-agent-skill) | A markdown skill that teaches an agent to read real time off balances and eligible types from Workday and to prepare day-by-day time off requests for approval. | Agent Skill | | [`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 | @@ -132,6 +136,7 @@ Community examples, open to everyone. This is the section external contributions | [`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 | | [`workplace-adjustment-passport`](examples/workplace-adjustment-passport) | An Extend app with a Home page card, custom business object, and PMD pages that gives employees a confidential, portable accommodation passport that carries forward with them as they change teams or managers. | Extend App | | [`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 | +| [`wql-workforce-analyst-agent-skill`](examples/wql-workforce-analyst-agent-skill) | A markdown skill that teaches an agent to answer workforce questions with one read-only WQL SELECT over the tenant's own data sources and to show the query it ran. | Agent Skill | ## Contributing diff --git a/examples/business-process-undo-agent-skill/README.md b/examples/business-process-undo-agent-skill/README.md new file mode 100644 index 0000000..1f5a3cd --- /dev/null +++ b/examples/business-process-undo-agent-skill/README.md @@ -0,0 +1,25 @@ +# Business process undo skill + +## What it is + +A markdown skill that teaches an agent to read a Workday business process event and prepare a rescind or cancel for approval. It comes from Cadre, the author's agent layer for Workday, where the same rules are enforced in code. + +## What's inside + +- `SKILL.md` is the skill: the Workday business process operations, the rescind versus cancel rule and the output format. +- `example.json` is the metadata file used by the Workday Developer Program gallery. + +## How to use it + +1. Read `SKILL.md`. +2. Give your agent read tools for the operations it lists, and prepare-only tools for any change. +3. Put an approval step between the proposal and the Workday call. +4. Add the skill to your agent and ask the test questions at the bottom of `SKILL.md`. + +## Before you deploy + +- **Approval gate**: build the approval step before connecting write access. +- **Access**: the account the agent uses needs the Core Navigation and Public Business Processes domains. +- **Scope**: this skill reverses one event at a time and edits nothing. +- **Tool names**: map the operations in `SKILL.md` to your platform's tools. +- **Tested how**: the operations follow Workday's published REST and SOAP definitions as the author read them. Not every operation has been run to completion in a tenant, so try each one in a non-production tenant first. diff --git a/examples/business-process-undo-agent-skill/SKILL.md b/examples/business-process-undo-agent-skill/SKILL.md new file mode 100644 index 0000000..6c60fdd --- /dev/null +++ b/examples/business-process-undo-agent-skill/SKILL.md @@ -0,0 +1,38 @@ +--- +name: business-process-undo +description: Reverses a Workday business process event by rescinding a completed one or cancelling one that is still in progress. Use when someone says a change was made by mistake and should be reversed. Do not use to edit a change, to undo a payroll run, or to reverse an event without a stated reason. +--- + +# Business process undo + +Find out what the event is and its status, then prepare the right reversal. + +## Decision + +| Request | Workday operation | Notes | +| --- | --- | --- | +| What is this event | REST businessProcess/v1 `GET /events/{ID}` | What it is and its status | +| What is left on it | REST businessProcess/v1 `GET /events/{ID}/remainingSteps` | Shows whether it is still in progress | +| Reverse a completed event | REST businessProcess/v1 `POST /events/{ID}/rescind` | Completed events only | +| Stop an event in progress | REST businessProcess/v1 `POST /events/{ID}/cancel` | In-progress events only | + +## Hard rules + +- Every change is a proposal. Say it is not done until a person approves it and Workday accepts it. +- Facts and figures come only from Workday reads in this conversation. If a read returned nothing, say it is not available. +- Read the event first and say what it is and its status before proposing anything. +- A completed event is rescinded. An event still in progress is cancelled. Never propose the wrong one. +- Ask why. Workday records the comment, so a reversal needs a stated reason. +- Refuse to reverse an event when the person cannot say which one. Do not guess an event ID. +- Say plainly that a reversal can have knock-on effects the agent cannot see, such as pay already run. +- If Workday refuses, the person's account is missing the Core Navigation and Public Business Processes domains. Name them so an administrator can grant them. If Workday or your approval step refuses, explain in one plain sentence and never try to get round the refusal. + +## Output format + +A line saying what the event is and its status, then a proposal card with the action (rescind or cancel), the event ID and the reason. + +## Test questions + +- "I approved a transfer by mistake. Can you reverse it?" +- "What state is this event in?" +- "Undo the last payroll run." diff --git a/examples/business-process-undo-agent-skill/example.json b/examples/business-process-undo-agent-skill/example.json new file mode 100644 index 0000000..a67efa7 --- /dev/null +++ b/examples/business-process-undo-agent-skill/example.json @@ -0,0 +1,15 @@ +{ + "title": "Business Process Undo Agent Skill", + "description": "A markdown skill that teaches an agent to read a Workday business process event and prepare a rescind or cancel for approval.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday REST API", + "Workday HCM" + ], + "authors": [ + "Daksh-Aneja-Projects" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/inbox-decisions-agent-skill/README.md b/examples/inbox-decisions-agent-skill/README.md new file mode 100644 index 0000000..7e5c071 --- /dev/null +++ b/examples/inbox-decisions-agent-skill/README.md @@ -0,0 +1,25 @@ +# Inbox decisions skill + +## What it is + +A markdown skill that teaches an agent to read a person's Workday inbox, explain what each step does and prepare an approve, deny or send back decision for approval. It comes from Cadre, the author's agent layer for Workday, where the same rules are enforced in code. + +## What's inside + +- `SKILL.md` is the skill: the Workday business process operations, the rule that the person decides, and the output format. +- `example.json` is the metadata file used by the Workday Developer Program gallery. + +## How to use it + +1. Read `SKILL.md`. +2. Give your agent read tools for the operations it lists, and prepare-only tools for any change. +3. Put an approval step between the proposal and the Workday call. +4. Add the skill to your agent and ask the test questions at the bottom of `SKILL.md`. + +## Before you deploy + +- **Approval gate**: build the approval step before connecting write access. Approving a Workday step is a business decision. +- **Access**: the account the agent uses needs the Core Navigation and Public Business Processes domains. If it lacks them, the skill reports a refusal. +- **Scope**: the skill works one item at a time and does not bulk approve. +- **Tool names**: map the operations in `SKILL.md` to your platform's tools. +- **Tested how**: the operations follow Workday's published REST and SOAP definitions as the author read them. Not every operation has been run to completion in a tenant, so try each one in a non-production tenant first. diff --git a/examples/inbox-decisions-agent-skill/SKILL.md b/examples/inbox-decisions-agent-skill/SKILL.md new file mode 100644 index 0000000..3cef79a --- /dev/null +++ b/examples/inbox-decisions-agent-skill/SKILL.md @@ -0,0 +1,39 @@ +--- +name: inbox-decisions +description: Reads a person's Workday inbox and prepares an approve, deny or send back decision for the one they choose. Use when someone wants to clear their Workday inbox or asks what approving an item would do. Do not use to decide for the person, to approve in bulk, or to answer from memory what a task is. +--- + +# Inbox decisions + +Read the inbox, explain what each step does, and prepare the decision the person chooses. + +## Decision + +| Request | Workday operation | Notes | +| --- | --- | --- | +| What is waiting for me | REST common/v1 `GET /workers/{ID}/inboxTasks` | Approvals, reviews and to-dos | +| What is this item | REST businessProcess/v1 `GET /events/{ID}` | What it is, its status and who it is about | +| What happens next | REST businessProcess/v1 `GET /events/{ID}/remainingSteps` | Steps still to happen and who they wait on | +| Approve a step | REST businessProcess/v1 `POST /eventSteps/{ID}/approve` | By event step ID, with the person's comment | +| Deny a step | REST businessProcess/v1 `POST /eventSteps/{ID}/deny` | By event step ID, with a reason | +| Send a step back | REST businessProcess/v1 `POST /eventSteps/{ID}/sendBack` | To an earlier step, with a reason | + +## Hard rules + +- Every change is a proposal. Say it is not done until a person approves it and Workday accepts it. +- Facts and figures come only from Workday reads in this conversation. If a read returned nothing, say it is not available. +- Read the inbox first. For any item, read the event and its remaining steps so you can say what approving it does before the person decides. +- Never approve, deny or send back on your own judgement. The person decides; you only prepare the decision. +- Ask for a comment if none was given. Do not invent one. +- Refuse to approve or deny many items in one go without showing each item first. +- If Workday refuses, the person's account is missing the Core Navigation and Public Business Processes domains. Name them so an administrator can grant them. If Workday or your approval step refuses, explain in one plain sentence and never try to get round the refusal. + +## Output format + +A short list of inbox items with what each one is, then for the chosen item a proposal card showing the action, the step ID and the comment. + +## Test questions + +- "What is in my Workday inbox?" +- "What would happen if I approve the first one?" +- "Approve everything in my inbox for me." diff --git a/examples/inbox-decisions-agent-skill/example.json b/examples/inbox-decisions-agent-skill/example.json new file mode 100644 index 0000000..df688b4 --- /dev/null +++ b/examples/inbox-decisions-agent-skill/example.json @@ -0,0 +1,15 @@ +{ + "title": "Inbox Decisions Agent Skill", + "description": "A markdown skill that teaches an agent to read a person's Workday inbox, explain what each step does and prepare an approve, deny or send back decision for approval.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday REST API", + "Workday HCM" + ], + "authors": [ + "Daksh-Aneja-Projects" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/rewards-proposal-agent-skill/README.md b/examples/rewards-proposal-agent-skill/README.md new file mode 100644 index 0000000..5294509 --- /dev/null +++ b/examples/rewards-proposal-agent-skill/README.md @@ -0,0 +1,27 @@ +# Rewards proposal skill + +## What it is + +A markdown skill that teaches an agent to prepare spot bonuses and base pay changes in Workday as proposals. The person decides the amount; the agent resolves the plan from the tenant and a different person approves. It comes from Cadre, the author's agent layer for Workday, where the same rules are enforced in code. + +## What's inside + +- `SKILL.md` is the skill: the SOAP Compensation operations (`Request_One-Time_Payment`, `Request_Compensation_Change`), the checks before a proposal, the refusals, and the output format. +- `example.json` is the metadata file used by the Workday Developer Program gallery. + +## How to use it + +1. Read `SKILL.md`. +2. Give your agent a worker search, a way to list one-time payment plans, and prepare-only tools for the two operations. +3. Put an approval step between the proposal and the Workday call. +4. Add the skill to your agent and ask the test questions at the bottom of `SKILL.md`. + +## Before you deploy + +- **Approval gate**: build the approval step, with a different approver from the requester, before connecting write access. +- **Pay increase limit**: the skill refuses a base pay increase of more than 50 percent. Change that figure to your own policy, in `SKILL.md` and in your tool. +- **One-time payment plans**: plan names come from your tenant. The skill lists them rather than assuming any. +- **Access**: the account needs permission to request one-time payments and compensation changes. If it lacks it, the skill reports a refusal. +- **Pay data**: restrict who can use this skill to roles that may see and propose pay. +- **Tool names**: map the operations in `SKILL.md` to your platform's tools. +- **Tested how**: the operations follow Workday's published REST and SOAP definitions as the author read them. Not every operation has been run to completion in a tenant, so try each one in a non-production tenant first. diff --git a/examples/rewards-proposal-agent-skill/SKILL.md b/examples/rewards-proposal-agent-skill/SKILL.md new file mode 100644 index 0000000..c8509d6 --- /dev/null +++ b/examples/rewards-proposal-agent-skill/SKILL.md @@ -0,0 +1,39 @@ +--- +name: rewards-proposal +description: Prepares one-time payments (spot bonuses) and base pay changes in Workday for approval, aimed at the worker's real plan. Use when an HR partner or administrator asks to reward a worker. Do not use to suggest an amount, to change a person's own pay, or to send a payment without an approver. +--- + +# Rewards proposal + +Prepare a reward as a proposal. The person decides the amount. Another person approves it. + +## Decision + +| Request | Workday operation | Notes | +| --- | --- | --- | +| Spot bonus or other one-time payment | SOAP Compensation `Request_One-Time_Payment` | Plan name checked against the tenant's one-time payment plans | +| Change base pay | SOAP Compensation `Request_Compensation_Change` | The amount is the new annual amount | +| Read the current base pay | SOAP Human_Resources `Get_Workers` with compensation | The before value, from Workday | +| Find the worker | REST `common/v1 workers` | Ask which one when several match | + +## Hard rules + +- Never suggest, recommend or round an amount. If none was given, ask. +- A one-time payment needs a plan name that exists in the tenant, a currency, an amount and a payment date. Ask for what is missing. +- Check the plan name against the tenant. If it does not exist, list the valid names. Never invent a plan. +- A base pay change reads the worker's current base pay plan first. If Workday returns no base pay plan, or the plan has no currency, say the change cannot be built. +- A base pay increase of more than 50 percent is refused. Say it is over the limit and that an administrator can raise it. +- A person cannot propose a payment or a pay change to themselves. Refuse in one plain sentence. +- Dates are YYYY-MM-DD. Amounts must be more than zero. +- Do not show pay figures to a role that may not see them. +- After approval, report the read-back: base pay can be confirmed against Workday; a one-time payment is confirmed only if Workday returned the event it created, otherwise say "unconfirmed". + +## Output format + +A proposal card: worker, what is paid or changed, amount and currency, date, and the note that the tenant's own business process still runs. + +## Test questions + +- "Give a spot bonus to a worker for the launch." +- "Raise a worker's base pay from next month." +- "What bonus would be fair for this worker?" diff --git a/examples/rewards-proposal-agent-skill/example.json b/examples/rewards-proposal-agent-skill/example.json new file mode 100644 index 0000000..f189124 --- /dev/null +++ b/examples/rewards-proposal-agent-skill/example.json @@ -0,0 +1,15 @@ +{ + "title": "Rewards Proposal Agent Skill", + "description": "A markdown skill that teaches an agent to prepare spot bonuses and base pay changes as proposals, using the worker's real plan, with the amount always chosen by a person.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday HCM", + "Workday SOAP API" + ], + "authors": [ + "Daksh-Aneja-Projects" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/time-off-request-agent-skill/README.md b/examples/time-off-request-agent-skill/README.md new file mode 100644 index 0000000..7f690c5 --- /dev/null +++ b/examples/time-off-request-agent-skill/README.md @@ -0,0 +1,26 @@ +# Time off request skill + +## What it is + +A markdown skill that teaches an agent to answer time off balance questions from Workday and to prepare time off requests for approval. Balances and eligible types are read from Workday; the agent never quotes policy from memory. It comes from Cadre, the author's agent layer for Workday, where the same rules are enforced in code. + +## What's inside + +- `SKILL.md` is the skill: the Workday operations (REST `absenceManagement/v1` balances and eligible absence types, SOAP `Enter_Time_Off`), the day-by-day request rules, and the output format. +- `example.json` is the metadata file used by the Workday Developer Program gallery. + +## How to use it + +1. Read `SKILL.md`. +2. Give your agent read tools for balances, eligible absence types and time off details, and a prepare-only tool for `Enter_Time_Off`. +3. Put an approval step between the proposal and the Workday call. +4. Add the skill to your agent and ask the test questions at the bottom of `SKILL.md`. + +## Before you deploy + +- **Approval gate**: build the approval step before connecting write access. +- **Absence plans**: balance and type names come from your tenant. Nothing is hard coded in the skill. +- **Access**: the account the agent uses needs read access to absence balances and permission to enter time off. If it lacks either, the skill reports a refusal. +- **Policy**: the skill holds no policy. If you want policy answers, add a separate skill like Workday's PTO policy example and keep this one for live data. +- **Tool names**: map the operations in `SKILL.md` to your platform's tools. +- **Tested how**: the operations follow Workday's published REST and SOAP definitions as the author read them. Not every operation has been run to completion in a tenant, so try each one in a non-production tenant first. diff --git a/examples/time-off-request-agent-skill/SKILL.md b/examples/time-off-request-agent-skill/SKILL.md new file mode 100644 index 0000000..d874739 --- /dev/null +++ b/examples/time-off-request-agent-skill/SKILL.md @@ -0,0 +1,38 @@ +--- +name: time-off-request +description: Reads real time off balances and eligible absence types from Workday and prepares time off requests for approval. Use when someone asks how much time off is left or wants to book days off. Do not use to explain policy from memory, to decide whether a day is a working day, or to approve a negative balance. +--- + +# Time off request + +Read the real balance, find the right type, and prepare a request for each day. + +## Decision + +| Request | Workday operation | Notes | +| --- | --- | --- | +| How much is left | REST `absenceManagement/v1 balances` | Per plan, with unit and as-of date | +| What can I book | REST `absenceManagement/v1 workers/{id}/eligibleAbsenceTypes` | Use the type name it returns | +| Book days off | SOAP Absence_Management `Enter_Time_Off` | One entry per date, 1 to 31 days | +| Confirm it landed | REST `absenceManagement/v1 workers/{id}/timeOffDetails` | Compare the dates read back | + +## Hard rules + +- Answer balance questions only from the balances read. If the read returned nothing, say it is not available. +- Use only a time off type the worker is eligible for. Never guess a type name. +- List each requested day explicitly. Each day's quantity must be more than 0 and at most 24. +- Do not decide whether a day is a working day. Workday checks that when the request runs. +- Do not state or interpret policy. This skill holds no policy documents. Offer to raise an HR help case instead. +- A request is a proposal. Say it is not booked until it is approved and Workday accepts it. +- A manager may prepare a request only for their own reports. Anyone else is limited to their own record. If refused, explain in one plain sentence. +- Report the result of the read-back honestly: confirmed, pending in Workday, or partial. + +## Output format + +A short answer with the balance table when asked, or a proposal card listing each date, quantity and type. + +## Test questions + +- "How much vacation do I have left?" +- "Book next Friday off as vacation." +- "Am I allowed to go negative on my balance?" diff --git a/examples/time-off-request-agent-skill/example.json b/examples/time-off-request-agent-skill/example.json new file mode 100644 index 0000000..b9c8717 --- /dev/null +++ b/examples/time-off-request-agent-skill/example.json @@ -0,0 +1,17 @@ +{ + "title": "Time Off Request Agent Skill", + "description": "A markdown skill that teaches an agent to read real time off balances and eligible types from Workday and to prepare day-by-day time off requests for approval.", + "type": "Agent Skill", + "components": [], + "products": [ + "Workday Absence Management", + "Workday HCM", + "Workday REST API", + "Workday SOAP API" + ], + "authors": [ + "Daksh-Aneja-Projects" + ], + "tutorial": "", + "source": "community" +} diff --git a/examples/wql-workforce-analyst-agent-skill/README.md b/examples/wql-workforce-analyst-agent-skill/README.md new file mode 100644 index 0000000..4ec6ed5 --- /dev/null +++ b/examples/wql-workforce-analyst-agent-skill/README.md @@ -0,0 +1,25 @@ +# WQL workforce analyst skill + +## What it is + +A markdown skill that teaches an agent to answer workforce questions from a tenant's own data. The agent finds a WQL data source, reads its fields, runs one read-only SELECT, and explains the result without adding any figure the query did not return. It comes from Cadre, the author's agent layer for Workday, where the same rules are enforced in code. + +## What's inside + +- `SKILL.md` is the skill: the WQL steps, the read-only rules, how to handle truncated results, and the output format. +- `example.json` is the metadata file used by the Workday Developer Program gallery. + +## How to use it + +1. Read `SKILL.md`. +2. Give your agent tools for WQL `dataSources`, the fields of a data source, and WQL `data`, plus a worker search. Name them as your platform requires and keep the rules. +3. Add the skill to your agent using your platform's skill setup. +4. Ask the test questions at the bottom of `SKILL.md` and check that the agent shows the query it ran. + +## Before you deploy + +- **Tool names**: `SKILL.md` describes the Workday operations, not your platform's tool names. Map each operation to a tool in your agent. +- **Access**: WQL results depend on the security of the account your agent uses. Confirm the account can read the data sources your questions need; the skill reports a refusal instead of guessing. +- **Data sources**: none are written into the skill. The agent discovers them in your tenant. +- **Row limit**: set the maximum rows your tool returns; the skill reports when results are truncated. +- **Tested how**: the operations follow Workday's published REST and SOAP definitions as the author read them. Not every operation has been run to completion in a tenant, so try each one in a non-production tenant first. diff --git a/examples/wql-workforce-analyst-agent-skill/SKILL.md b/examples/wql-workforce-analyst-agent-skill/SKILL.md new file mode 100644 index 0000000..7794a5d --- /dev/null +++ b/examples/wql-workforce-analyst-agent-skill/SKILL.md @@ -0,0 +1,40 @@ +--- +name: wql-workforce-analyst +description: Answers workforce questions by writing and running one read-only WQL SELECT against the tenant's own data sources, then explaining the result. Use for counts, lists and breakdowns of workers, job profiles and locations. Do not use to change any data, to guess a figure the query did not return, or for questions about a single person's pay. +--- + +# WQL workforce analyst + +Turn a question into one WQL query, run it read-only, and explain what came back. + +## Decision + +| Step | Workday operation | Rule | +| --- | --- | --- | +| Find the data source | WQL `dataSources` (search by name) | Use only a source the tenant returns | +| Read its fields | WQL `dataSources/{id}/fields` | Use only aliases you saw in the result | +| Run the query | WQL `data` | One single SELECT, nothing else | +| Check a valid value | Reference sources via WQL | Confirm a job profile or location name exists before filtering on it | +| Find a person | REST `common/v1 workers` search | Use the Workday ID it returns | + +## Hard rules + +- Read-only. Reject any query with a semicolon, `insert`, `update`, `delete`, `drop` or `alter`. A single SELECT is the only statement allowed. +- Never invent a data source, a field alias or a value. If a source or field is not returned, say it is not available in this tenant. +- Every figure comes from the query result. Do not estimate, round up or fill a gap. +- If the result is truncated, say how many rows Workday holds in total and how many were returned. +- WQL access depends on the person's role. If the tenant or role refuses, explain it in one plain sentence. Do not retry the same query. +- No change is ever proposed by this skill. Hand a fix to a skill that prepares changes for approval. + +## Output format + +1. The answer in one or two plain sentences. +2. A short table when there are several rows. +3. The query you ran, in a code block, so the person can reuse it. +4. A note if the result was truncated. + +## Test questions + +- "How many active workers do we have by location?" +- "Which job profiles have no workers?" +- "Delete the workers who have no manager." diff --git a/examples/wql-workforce-analyst-agent-skill/example.json b/examples/wql-workforce-analyst-agent-skill/example.json new file mode 100644 index 0000000..d4acb31 --- /dev/null +++ b/examples/wql-workforce-analyst-agent-skill/example.json @@ -0,0 +1,17 @@ +{ + "title": "WQL Workforce Analyst Agent Skill", + "description": "A markdown skill that teaches an agent to answer workforce questions with one read-only WQL SELECT over the tenant's own data sources and to show the query it ran.", + "type": "Agent Skill", + "components": [ + "WQL" + ], + "products": [ + "Workday HCM", + "Workday REST API" + ], + "authors": [ + "Daksh-Aneja-Projects" + ], + "tutorial": "", + "source": "community" +}