A fluent answer does not show whether an AI agent used the required procedure. AWS's September 22 guide explains how Strands Evals and Amazon Bedrock AgentCore evaluate skill selection and instruction following from recorded runs. The two systems handle an absent evaluation differently, with consequences for anyone reading their pass flags.

The big change

  • What changed: These tools distinguish whether a procedure loaded, whether it suited the task and whether its steps were followed.
  • Why it matters: The inspected Strands code can mark an unjudged case as passing. A release decision based on that flag alone can overlook a required skill that never loaded.
  • What to watch: Check evaluation coverage alongside scores: which expected loads were observed, and which invocations had enough recorded evidence to judge.

Three checks answer different questions

The Agent Skills specification defines a skill around a SKILL.md file. Its name and description help an agent decide when to use it; the instruction body loads after activation. That separation makes successful loading a distinct question from appropriate selection or execution.

Check

Evidence and result

Limit

Strands SkillInvoked

Recorded successful load of a named skill; deterministic pass or fail

Does not assess suitability or execution

AgentCore selection accuracy

Invoked skill, request, prior context and catalog when available; model judgment of Yes or No

Does not judge a decision to invoke nothing

AgentCore instruction following

Loaded instructions and full session; five levels from fully followed to not followed

Assesses recorded step-following, not the underlying work's correctness

The pinned SkillInvoked implementation requires a matching load event with status loaded. Without a successful load, absent, failed or unresolved attempts fail this assertion. No judge model is called. This provides a direct check when a test case requires a particular skill.

AgentCore can produce zero results

According to AgentCore's documentation, both judges skip a tool call when neither invocation nor skill-body signals are detected. A session without detected skill invocations yields zero results.

A missing catalog does not stop selection judging: the evaluator uses the request and conversation context. Instruction following requires both the invoked skill and its loaded body, with the full session supplying evidence of subsequent steps.

Strands can return a passing N/A row

Source review reveals a different representation in Strands Evals commit 9ea55c9, inspected September 23. This describes that implementation, not every installed SDK version.

With a trajectory present but no invocation, the selection evaluator returns a not-applicable row: placeholder score 0.0, test_pass=true. Whether declining to use a skill was correct is outside that judge's scope.

The instruction-following evaluator also returns passing N/A rows for no invocation, a refused load or an unavailable body. A missing trajectory instead returns N/A with a false pass flag in both evaluators.

Their aggregate function excludes N/A rows from the mean. When every row is N/A, it preserves a placeholder zero and combines the rows' pass flags. The number and flag therefore need their label and reason to be interpreted correctly.

For required routing, pair the judges with a named-load assertion. For adherence, inspect whether instructions and execution evidence were captured before treating a passing flag as a judgment. BIG CHANGE reviewed documentation and source code; it did not execute these evaluators.