From argo
Deploy AgentDefinition metadata + register the eval suite with Testing Center, with Trust Layer + eval-regression gating. Refuses to deploy if /argo:trust-layer-audit or /argo:agent-test fail.
How this skill is triggered — by the user, by Claude, or both
Slash command
/argo:agent-deployThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are deploying an **agent** — AgentDefinition + AgentVersion + topics + actions + sub-agents — and registering its eval suite with Testing Center so future runs are tracked. This is the agent-side counterpart to `/argo:diff-deploy` for code.
You are deploying an agent — AgentDefinition + AgentVersion + topics + actions + sub-agents — and registering its eval suite with Testing Center so future runs are tracked. This is the agent-side counterpart to /argo:diff-deploy for code.
source "${CLAUDE_PLUGIN_ROOT}/hooks/lib/config.sh"
source "${CLAUDE_PLUGIN_ROOT}/hooks/lib/sf-cli.sh"
sf_cli_check || exit 2
ORG="$(sf_config_get '.platform.defaultTargetOrg' "$ENV")"
AGENT_DIR="$(sf_config_get '.paths.agentDefinitions // empty' "$ENV")"
[[ -z "$AGENT_DIR" ]] && AGENT_DIR="force-app/main/default/botDefinitions"
$ARGUMENTS:
<agent-name> — deploy this agent (must exist under <AGENT_DIR>/<name>/)--validate — dry-run via sf project deploy start --dry-run--skip-evals — deploy without running eval gates (NOT recommended; emits a warning)--skip-trust — skip /argo:trust-layer-audit (NOT recommended; emits a warning)--target-org <alias> / --env <name> — overrides--ci — machine outputThe skill refuses to deploy unless the following pass (or are explicitly skipped with the --skip-* flags):
/argo:trust-layer-audit <agent-name> --ci exits 0/argo:agent-test <agent-name> --ci --fail-on error exits 0/argo:agent-eval-trend pr <agent-name> exits 0/argo:agent-discover <agent-name> --ci confirms source existsIf any fails, emit a [agent-deploy] BLOCKED message with the failing gate name and the underlying skill's output.
AGENT_PATH="${AGENT_DIR}/${NAME}"
[[ -d "$AGENT_PATH" ]] || { echo "[agent-deploy] not found: ${AGENT_PATH}" >&2; exit 2; }
gate_trust=0; gate_eval=0; gate_trend=0
[[ "$SKIP_TRUST" != "1" ]] && /argo:trust-layer-audit "$NAME" --ci || gate_trust=$?
[[ "$SKIP_EVALS" != "1" ]] && /argo:agent-test "$NAME" --ci --fail-on error || gate_eval=$?
[[ "$SKIP_EVALS" != "1" ]] && /argo:agent-eval-trend pr "$NAME" || gate_trend=$?
if (( gate_trust + gate_eval + gate_trend > 0 )); then
echo "[agent-deploy] BLOCKED: gates failed (trust=${gate_trust} eval=${gate_eval} trend=${gate_trend})" >&2
exit 1
fi
(If --validate, the gates still run — better to know early; the deploy itself is the dry-run.)
Bundle every file under the agent directory plus any cross-referenced bridge specs:
SOURCES=("$AGENT_PATH")
# If actions reference MCP bridges, include them in the deploy
for spec in mcp/bridges/*.json; do
if grep -lqE "$(basename "$spec" .json)" "${AGENT_PATH}/actions"/*.action-meta.xml 2>/dev/null; then
SOURCES+=("$spec")
fi
done
sf project deploy start \
--target-org "$ORG" \
${VALIDATE:+--dry-run} \
$(printf -- "--source-dir %q " "${SOURCES[@]}") \
--wait 30 \
--json
After a successful (non-validate) deploy, register evals via the sf CLI:
for case_file in tests/agent-evals/${NAME}/*.json; do
sf agent test register-case --target-org "$ORG" --agent "$NAME" --file "$case_file" --json
done
This makes the eval suite visible in the Testing Center UI for ongoing monitoring.
By default, deploys produce an inactive new AgentVersion. The deploy step does NOT auto-activate — operators activate via Setup or via:
sf data update record \
--target-org "$ORG" \
--sobject AgentVersion \
--where "BotDefinitionDeveloperName='${NAME}' AND VersionNumber=$(latest_version)" \
--values "Status='Active'"
The skill prints the activation command rather than running it. Activation is an explicit operator decision that should not be automated by default.
echo '{"deployedAt":"...","org":"...","agent":"'"$NAME"'","version":"v3","validate":'"$VALIDATE"'}' \
>> "${CLAUDE_PLUGIN_DATA:-$HOME/.claude/plugin-data}/argo/agent-deploys/<project>/history.jsonl"
Default Markdown:
# Agent Deploy: order_helper
Pre-deploy gates:
✅ Trust Layer audit: 0 findings
✅ Eval suite: 8/8 passed (0.91 overall)
✅ Eval regression: no regressions vs main
✅ Agent discover: source verified
Deploy:
✅ AgentDefinition + 3 topics + 5 actions + 1 sub-agent + 2 MCP bridge specs
Org: DevVM
Mode: dry-run (--validate) [or: applied (12.4s)]
Eval registration with Testing Center:
✅ 8 cases registered for ongoing monitoring
## To activate the new version:
sf data update record --target-org DevVM --sobject AgentVersion ... \
--values "Status='Active'"
## Or via Setup
Setup → Agents → order_helper → Versions → "Activate" on v3
CI mode JSON: {"agent":"order_helper","gates":{"trust":"pass","evals":"pass","regression":"pass"},"deployId":"0Af...","validateOnly":false,"casesRegistered":8}.
--skip-trust and --skip-evals are escape hatches for emergencies, not standard practice. The output makes that clearnpx claudepluginhub vhmarquez/argo --plugin argoGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.