OpenHarness End-to-End Evals
HKUDS/OpenHarness
Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.
Agent Script DSL for deterministic Agentforce agents. An agent skill from Jaganpro/sf-skills.
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscript --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sf-ai-agentscript .claude/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .claude/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscriptType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscript --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sf-ai-agentscript .agents/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .agents/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscript --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sf-ai-agentscript .cursor/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .cursor/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Jaganpro/sf-skills.git --path skills/sf-ai-agentscript--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscript --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sf-ai-agentscript .gemini/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .gemini/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscriptInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sf-ai-agentscript .github/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .github/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Jaganpro/sf-skills sf-ai-agentscript --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jaganpro/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sf-ai-agentscript .opencode/skills/sf-ai-agentscript && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sf-ai-agentscript" agent skill from https://github.com/Jaganpro/sf-skills/tree/main/skills/sf-ai-agentscript into .opencode/skills/sf-ai-agentscript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sf-ai-agentscript", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sf-ai-agentscriptAgent Script DSL for deterministic Agentforce agents. An agent skill from Jaganpro/sf-skills.
Sf AI Agentscript is an agent skill from Jaganpro/sf-skills. Agent Script DSL for deterministic Agentforce agents. TRIGGER when: user writes or edits .agent files, builds FSM-based agents, uses Agent Script CLI (sf agent generate authoring-bundle, sf agent validate authoring-bundle, sf agent preview, sf agent publish authoring-bundle, sf agent activate), or asks about deterministic agent patterns, slot filling, or instruction resolution. DO NOT TRIGGER when: Builder metadata work (use sf-ai-agentforce), agent testing (use sf-ai-agentforce-testing), or persona design (use…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 90 other files, including scripts, reference files and assets (for example `CREDITS.md`, `README.md` and `VALIDATION.md`). Compatibility notes: Requires Agentforce license and API v66.0+; Einstein Agent User is required for Service Agents only
It sits in Testing & QA, covering Agent evaluation and testing. The repository describes itself as: [ARCHIVED — migrated to forcedotcom/afv-library] Salesforce Skills for Agentic Coding Tools — Apex, Flow, LWC, SOQL, Agentforce, Data Cloud, OmniStudio. Read-only archive; active… The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 53c9956. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
sfFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developer.salesforce.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires Agentforce license and API v66.0+; Einstein Agent User is required for Service Agents only
From compatibility in the SKILL.md frontmatter.
Sf AI Agentscript loads about 3.8k tokens when it runs, and up to ~117k if it reads all its reference files. Until then it costs about 140 tokens; SKILL.md has 1,232 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Jaganpro/sf-skills at commit 53c9956, republished under its MIT licence (© Jaganpro). 1,232 words, ~3,779 tokens.
.claude/skills/sf-ai-agentscript/SKILL.md (or your agent's skills folder). This skill also uses 86 other files; get the full folder from GitHub.Agent Script is the code-first path for deterministic Agentforce agents. Use this skill when the user is authoring .agent files, building finite-state topic flows, or needs repeatable control over routing, variables, actions, and publish behavior.
Start with the shortest guide first: references/activation-checklist.md
Migrating from the Builder UI? Use references/migration-guide.md
Use sf-ai-agentscript when the work involves:
.agent filessf agent generate authoring-bundle, sf agent validate authoring-bundle, sf agent preview, sf agent publish authoring-bundle, sf agent activate)Delegate elsewhere when the user is:
GenAiFunction, GenAiPlugin, GenAiPromptTemplate, Models API, custom Lightning types) → sf-ai-agentforceIf the user is in Builder Script / Canvas view but the outcome is a .agent authoring bundle, keep the work in sf-ai-agentscript.
Ask for or infer:
Before you author or fix any .agent file, verify these first:
start_agent blockTrue / Falseelse if and no nested ifactions: block@inputs in set expressionslinked variables have no defaultslinked variables do not use object / list typesagent_type@actions. prefixes consistentlyrun @actions.X only when X is a topic-level action definition with target:@system_variables.user_input contains/startswith/endswith for intent routingis_displayable: False + is_used_by_planner: True@outputs.X is scalar — inspect the output schema before branching or assignmentFor the expanded version, use references/activation-checklist.md.
| Agent type | Required | Forbidden / caution |
|---|---|---|
AgentforceServiceAgent | Valid default_agent_user, correct permissions, target-org checks, prefer sf org create agent-user | Publishing without a real Einstein Agent User |
AgentforceEmployeeAgent | Explicit agent_type | Supplying default_agent_user |
Full details: references/agent-user-setup.md
Use this order for consistency in this skill's examples and reviews:
config:
variables:
system:
connection:
knowledge:
language:
start_agent:
topic:Official Salesforce materials present top-level blocks in differing sequences, and local validation evidence indicates multiple orderings compile. Treat this as a style convention, not a standalone correctness or publish blocker.
| Field | Rule |
|---|---|
developer_name | Must match folder / bundle name |
description | Public docs/examples should use this config field |
agent_type | Set explicitly every time |
default_agent_user | Service Agents only |
Local tooling also accepts agent_description: for compatibility, but this skill's public docs and examples should prefer description:.
else ififif bodiesactions:inputs: / outputs: blocksdescription and labelCanonical rule set: references/syntax-reference.md and references/validator-rule-catalog.md
.agentconfig, system, start_agent, and topics firstinputs: and outputs:available when for deterministic tool visibilityinstructions: ->.agent authoring and edits in source control.sf agent generate authoring-bundle --no-spec only when the user wants local bundle scaffolding.sf agent generate agent-spec as optional ideation / topic bootstrap, not the default workflow.sf agent create or sf agent generate template.Validation already runs automatically on write/edit. Use the CLI before publish:
sf agent validate authoring-bundle --api-name MyAgent -o TARGET_ORG --jsonThe validator covers structure, runtime gotchas, target readiness, and org-aware Service Agent checks. Rule IDs live in references/validator-rule-catalog.md.
Use the preview loop before publish:
start / send / end subcommands, not bare sf agent preview--authoring-bundle, always choose a mode explicitly: --simulate-actions or --use-live-actionsFull loop: references/preview-test-loop.md
sf agent publish authoring-bundle --api-name MyAgent -o TARGET_ORG --json
# Manual activation
sf agent activate --api-name MyAgent -o TARGET_ORG
# CI / deterministic activation of a known BotVersion
sf agent activate --api-name MyAgent --version <n> -o TARGET_ORG --jsonPublishing does not activate the agent.
For automation, prefer --version <n> --json so activation is deterministic and machine-readable.
These execute as code, not suggestions:
available when guardsset / transition torun @actions.X only when X is a topic-level action definition with target:Important distinction:
set, transition to, and run @actions.X for a target-backed topic actionreasoning.actions: utilities / delegations such as @utils.setVariables, @utils.transition, and {!@actions.X} instruction referencesIf you need deterministic behavior for something that is currently modeled as a reasoning-level utility, either:
set / transition to, orrun that actionSee references/instruction-resolution.md and references/architecture-patterns.md.
| Task | Delegate to | Why |
|---|---|---|
Build flow:// targets | sf-flow | Flow creation / validation |
| Build Apex action targets | sf-apex | @InvocableMethod and business logic |
| Test topic routing / actions | sf-ai-agentforce-testing | Formal test specs and fix loops |
| Deploy / publish | sf-deploy | Deployment orchestration |
| Symptom | Likely cause | Read next |
|---|---|---|
Internal Error during publish | invalid Service Agent user or missing action I/O | references/agent-user-setup.md, references/actions-reference.md |
invalid input/output parameters on prompt template action | Target template is in Draft status — activate it first | references/action-prompt-templates.md |
| Parser rejects conditionals | else if, nested if, empty if body | references/syntax-reference.md |
| Action target issues | missing Flow / Apex target, inactive Flow, bad schemas | references/actions-reference.md |
| Prompt template runs but user sees blank response | prompt output marked is_displayable: True | references/production-gotchas.md, references/action-prompt-templates.md |
| Prompt action runs but planner behaves like output is missing | output hidden from direct display but not planner-visible | references/production-gotchas.md, references/actions-reference.md |
ACTION_NOT_IN_SCOPE on run @actions.X | run points at a utility / delegation / unresolved action instead of a topic-level target-backed definition | references/syntax-reference.md, references/instruction-resolution.md |
| Deterministic cancel / revise / URL checks behave inconsistently | raw @system_variables.user_input matching or string-method guards are being used as control-flow-critical validation | references/syntax-reference.md, references/production-gotchas.md |
@outputs.X comparisons or assignments behave unexpectedly | the action output is structured/wrapped, not a plain scalar | references/actions-reference.md, references/syntax-reference.md |
| Preview and runtime disagree | linked vars / context / known platform issues | references/known-issues.md |
| Validate passes but publish fails | org-specific user / permission / retrieve-back issue | references/production-gotchas.md, references/cli-guide.md |
| Score | Meaning |
|---|---|
| 90+ | Deploy with confidence |
| 75–89 | Good, review warnings |
| 60–74 | Needs focused revision |
| < 60 | Block publish |
Full rubric: references/scoring-rubric.md
© Jaganpro, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 86 other files (scripts, references, assets) in skills/sf-ai-agentscript of Jaganpro/sf-skills.
Open the folder on GitHubat commit 53c9956
Sf AI Agentscript next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sf AI Agentscript this skillJaganpro/sf-skills | 424 | — | ~3.8k | Automated safety check: Pass | MIT | |
| OpenHarness End-to-End EvalsHKUDS/OpenHarness | 16k | 1 repos | ~2.1k | Automated safety check: Notes | MIT | |
| Skill Testdatabricks-solutions/ai-dev-kit | 1.9k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Senpi Agent QA Harnesscode-yeongyu/senpi | 472 | — | ~2.7k | Automated safety check: Notes | MIT | |
| Caliper Harness Smoke Testedonadei/caliper | 207 | — | ~664 | Automated safety check: Pass | MIT | |
| Eval Triage And Improvementmicrosoft/eval-guide | 138 | — | ~5.9k | Automated safety check: Pass | MIT |
HKUDS/OpenHarness
Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.
databricks-solutions/ai-dev-kit
Testing framework for evaluating Databricks skills. An agent skill from databricks-solutions/ai-dev-kit.
code-yeongyu/senpi
Checks changes to the senpi coding agent by driving the real CLI from source in an isolated sandbox, over RPC, terminal UI, mock model and CLI smoke channels.
edonadei/caliper
Runs caliper's smoke evals against the real agent CLIs after a harness or MCP change, with a dry-run plan, failure triage and a report to attach to the PR.
microsoft/eval-guide
A skill your agent uses when the user's Copilot Studio agent evaluations have come back and they need to interpret scores, diagnose root causes of underperforming test cases, find remediation steps…
microsoft/eval-guide
Eval enablement accelerator — help customers think through "what does good look like" for their AI agent, then generate a structured eval plan and test cases they can use immediately.
Jaganpro/sf-skills
Agentforce session tracing extraction and analysis. An agent skill from Jaganpro/sf-skills.
Jaganpro/sf-skills
Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows.
Jaganpro/sf-skills
Salesforce architecture diagrams using Mermaid with ASCII fallback.
Jaganpro/sf-skills
AI-powered image generation for Salesforce visuals via Nano Banana Pro.
Jaganpro/sf-skills
Creates and validates Salesforce Flows with 110-point scoring.
Jaganpro/sf-skills
Salesforce integration architecture with 120-point scoring. An agent skill from Jaganpro/sf-skills.
Categories
Agent Script DSL for deterministic Agentforce agents. An agent skill from Jaganpro/sf-skills. Sf AI Agentscript is an agent skill from Jaganpro/sf-skills. Agent Script DSL for deterministic Agentforce agents.
Sf AI Agentscript fits situations like: edits .agent files; builds FSM-based agents; uses Agent Script CLI (sf agent generate authoring-bundle; sf agent validate authoring-bundle.
Run `npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a claude-code`. Or copy the skill folder (skills/sf-ai-agentscript in Jaganpro/sf-skills) into .claude/skills/sf-ai-agentscript in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a codex`. Or copy the skill folder (skills/sf-ai-agentscript in Jaganpro/sf-skills) into .agents/skills/sf-ai-agentscript in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Jaganpro/sf-skills --skill sf-ai-agentscript -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sf-ai-agentscript, .gemini/skills/sf-ai-agentscript, .github/skills/sf-ai-agentscript and .opencode/skills/sf-ai-agentscript in your project.
Going by SKILL.md and its folder, Sf AI Agentscript needs the command-line tools its instructions call (sf). Compatibility (from SKILL.md): Requires Agentforce license and API v66.0+; Einstein Agent User is required for Service Agents only.
SKILL.md names 2 domains. As links in the text: developer.salesforce.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Sf AI Agentscript is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 113k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sf AI Agentscript: OpenHarness End-to-End Evals (HKUDS/OpenHarness, 16k stars), Skill Test (databricks-solutions/ai-dev-kit, 1.9k stars), Senpi Agent QA Harness (code-yeongyu/senpi, 472 stars) and Caliper Harness Smoke Test (edonadei/caliper, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Jaganpro (a GitHub user) maintains it in Jaganpro/sf-skills, which has 424 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on April 27, 2026.
Source: Jaganpro/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.