Agent skill

Test Runner Architecture

by ISET in ISET/isetcam

A skill your agent uses when modifying the shared ieRunTutorialExampleTests engine, changing the canonical run-record/checkpoint schema, adding a thin tutorial/example test wrapper for a new…

MITAuto-check passed

Install Test Runner Architecture

skills CLI
$ npx skills add ISET/isetcam --skill test-runner-architecture -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ISET/isetcam test-runner-architecture --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ISET/isetcam.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/test-runner-architecture .claude/skills/test-runner-architecture && rm -rf skills-src

Use ~/.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/

Facts

Skill name
test-runner-architecture
GitHub stars
176
Token cost
~2.6k tokens
SKILL.md length
1,087 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when modifying the shared ieRunTutorialExampleTests engine, changing the canonical run-record/checkpoint schema, adding a thin tutorial/example test wrapper for a new…

  • Works in 4 steps: common path exclusions; → repository skipPathPatterns; → % SkipFile source marker; and → …
  • Modifying the shared ieRunTutorialExampleTests engine
  • SKILL.md covers Purpose, Entry Points, Public Interface and Canonical Run Record, plus 9 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Test Runner Architecture is an agent skill from ISET/isetcam. Use when modifying the shared ieRunTutorialExampleTests engine, changing the canonical run-record/checkpoint schema, adding a thin tutorial/example test wrapper for a new repository (e.g. an ISET3D wrapper), or changing ieTestReport internals. Not for ordinary day-to-day test running — see testing-workflow for that.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Open source version of the original ISET, a complement to ISETBIO. The licence is MIT.

When your agent uses it

  • Modifying the shared ieRunTutorialExampleTests engine
  • Changing the canonical run-record/checkpoint schema
  • Adding a thin tutorial/example test wrapper for a new repository (e.g

Example prompts

  • “/test-runner-architecture”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. common path exclusions;
  2. repository skipPathPatterns;
  3. % SkipFile source marker; and
  4. conditionalSkipFcn for environment-dependent cases.

What it can do on your machine

Read from SKILL.md and the folder at commit 17146a9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are matlab).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Test Runner Architecture loads about 2.6k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 1,087 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from ISET/isetcam at commit 17146a9, republished under its MIT licence (© ISET). 1,087 words, ~2,592 tokens.

Download SKILL.mdSave it as .claude/skills/test-runner-architecture/SKILL.md (or your agent's skills folder).
name
test-runner-architecture
description
Use when modifying the shared ieRunTutorialExampleTests engine, changing the canonical run-record/checkpoint schema, adding a thin tutorial/example test wrapper for a new repository (e.g. an ISET3D wrapper), or changing ieTestReport internals. Not for ordinary day-to-day test running — see testing-workflow for that.

Tutorial and Example Test Architecture

Purpose

ISET repositories run tutorials and examples as smoke tests with one shared architecture. The architecture must:

  • use the same return value and checkpoint format in every repository;
  • survive MATLAB termination with a readable checkpoint;
  • isolate scripts so figures, variables, and ISET session data do not accumulate;
  • support explicit file skips through % SkipFile;
  • produce one report format through ieTestReport; and
  • require only thin repository-specific entry points.

ISETCam owns the shared implementation because ISETBio, ISET3D, and related repositories already depend on ISETCam.

Entry Points

The four entry points are:

  • ieTutorialTest
  • ieExampleTest
  • isetbioTutorialTest
  • isetbioExampleTest

All four entry points are thin configuration wrappers over the shared ieRunTutorialExampleTests engine. They return the same canonical run record, and checkpoint.mat contains that identical record.

ieTestReport accepts MATLAB unit-test results, a canonical run record, a checkpoint file, or a run directory. Temporary adapters remain for checkpoints and result arrays created by the pre-engine runners.

Public Interface

Shared execution engine

ISETCam provides one public execution function:

matlab
run = ieRunTutorialExampleTests(config)

config is a scalar struct with these required fields:

FieldMeaning
repositoryNameDisplay name such as ISETCam, ISETBio, or ISET3D
repositoryRootAbsolute repository root
suiteKindtutorials or examples
runnerNamePublic wrapper name

Optional fields are:

FieldDefaultMeaning
selector''One file name or relative/full path to run
start''First selected file to run
skipPathPatterns{}Repository-specific path exclusions
conditionalSkipFcn[]Optional function returning a skip reason
setupFcn[]Repository-specific path/dependency setup

The engine supplies common defaults for discovery, % SkipFile, logging, cleanup, error capture, and reporting. Repository wrappers must not copy the engine's helper functions.

Thin repository wrappers

Each repository keeps two small public entry points in its top-level validate/ directory:

matlab
function run = isetbioExampleTest(varargin)
[selector,start] = localParseSelection(varargin{:});

config = struct();
config.repositoryName = 'ISETBio';
config.repositoryRoot = isetbioRootPath;
config.suiteKind = 'examples';
config.runnerName = mfilename;
config.selector = selector;
config.start = start;
config.skipPathPatterns = {'library'};

run = ieRunTutorialExampleTests(config);
end

ISETCam uses ieTutorialTest and ieExampleTest. Other repositories use <repository>TutorialTest and <repository>ExampleTest.

The public wrappers accept one optional name-value pair:

matlab
repositoryTutorialTest('selection','t_oneTutorial')
repositoryTutorialTest('start','t_firstTutorialToRun')

With no arguments, a wrapper runs the complete suite. selection runs only the named file, while start runs the named file and all subsequent files in the deterministically sorted plan.

Canonical Run Record

The function return value and the contents of checkpoint.mat are the same versioned run struct, so completed and interrupted runs report identically.

Required top-level fields:

text
schemaVersion
repositoryName
repositoryRoot
suiteKind
runnerName
targetDir
selector
state                 % Running or Completed
startedAt
lastEventAt
finishedAt
plannedFiles
currentIndex
currentFile
results
runDir
checkpointFile
progressFile

results is a struct array with this contract:

text
file
status                % Passed, Failed, or Skipped
error                 % compact error text for Failed, otherwise empty
startedAt
finishedAt
durationSeconds

If MATLAB terminates, state remains Running. ieTestReport interprets the difference between plannedFiles and results as unfinished work and reports currentFile as the last active file.

Increment schemaVersion only for incompatible checkpoint changes. ieTestReport should give a clear error for unsupported future versions.

Discovery and Selection

  • Recursively discover t_*.m and s_*.m below the target directory.
  • Sort by normalized relative path for deterministic execution.
  • Do not execute .mlx files. Plain-text Live Code .m is the canonical source, and executing .mlx introduces name-shadowing and renderer crashes.
  • A selector may be a bare stem, file name, relative path, or full path.
  • start accepts the same forms and trims the selected plan so execution begins with that file.
  • Duplicate stems are configuration errors and should be reported before the run begins.

Skipping

The common source marker is:

matlab
% SkipFile

The engine may continue recognizing % UTTBSkip during migration, but new files must use % SkipFile.

Skip decisions occur in this order:

  1. common path exclusions;
  2. repository skipPathPatterns;
  3. % SkipFile source marker; and
  4. conditionalSkipFcn for environment-dependent cases.

A skipped result should eventually include a machine-readable reason. Until that field is added, place the reason in nearby source comments and the progress log.

Script Isolation and Cleanup

Each script runs from its own directory inside a helper function workspace. The engine performs the same lifecycle before and after every script:

  1. set wait bar off;
  2. set init clear true;
  3. call ieInit to close figures and reset vcSESSION;
  4. execute the script and capture errors;
  5. call ieInit again; and
  6. flush pending graphics events.

Tutorial/example smoke runs should start in a dedicated MATLAB session because ieInit intentionally closes figures. Preferences changed by the engine are restored when the complete run exits normally.

No script may depend on variables or ISET objects created by an earlier script.

Show full SKILL.md (433 more words)Show less

Durable Progress and Crash Recovery

Create one run directory below <repositoryRoot>/local containing:

text
checkpoint.mat
progress.log
planned-files.txt

Update the checkpoint:

  • before the first script;
  • immediately before each script;
  • immediately after each pass, failure, or skip; and
  • after normal run completion.

Write checkpoints atomically: save a temporary MAT file in the run directory, then rename it to checkpoint.mat. A crash must not leave the only checkpoint partially written.

The first implementation remains in-process. A later process execution mode may launch one MATLAB process per file so a renderer/native crash does not stop the remaining suite. The canonical run record and report interface must not change when this mode is added.

Reporting

ieTestReport remains the single display function for:

  1. MATLAB TestResult arrays from unit tests;
  2. an in-memory tutorial/example run struct; and
  3. a checkpoint file or containing run directory.

Examples:

matlab
ieTestReport(run)
ieTestReport(run,'List',{'failed','skipped'})
ieTestReport('/path/to/checkpoint.mat','List','all')

For script suites the default report prints counts for planned, completed, passed, failed, skipped, and unfinished files. Requested lists may include passed, failed, and skipped files; failed lists include compact error text.

Runners should call ieTestReport(run) after normal completion instead of maintaining their own summary printer.

Shared Implementation Location

The shared engine, reporter, public runners, and focused infrastructure tests live in ISETCam's top-level validate/ directory. The implementation uses one public engine plus local helpers rather than many small public utilities. Keep ieTestReport public.

Validation Contract

ISETCam maintains tests for the shared engine using temporary synthetic repositories and scripts. Cover:

  • pass, failure, and % SkipFile results;
  • deterministic discovery and selector matching;
  • duplicate-name rejection;
  • before/after state isolation;
  • atomic checkpoint updates;
  • interrupted checkpoint reporting;
  • passed/failed/skipped file lists; and
  • compatibility with MATLAB unit-test reporting.

Every repository adds a small contract test asserting that both wrappers return the canonical schema. Repository tests should not duplicate engine unit tests.

Extension Plan

Additional repositories — ready for adoption
  1. Add the two thin wrappers to ISET3D.
  2. Supply only repository-specific skips and setup hooks.
  3. Add wrapper schema contract tests.
  4. Document the commands in that repository's shared agent instructions.
Optional process isolation and resume — future
  1. Add per-script process isolation for suites vulnerable to native graphics crashes.
  2. Add resume-from-checkpoint using unfinished planned files.
  3. Keep the run schema and ieTestReport interface unchanged.

Acceptance Criteria

The architecture is complete when:

  • all repositories use one ISETCam execution engine;
  • repository wrappers contain configuration, not copied runner logic;
  • normal returns and checkpoints contain the same versioned run record;
  • ieTestReport is the only summary/list implementation;
  • .mlx files are not executed by smoke runners;
  • state is reset between every script;
  • interrupted runs are readable without a MATLAB return value; and
  • adding a repository requires only two thin wrappers and configuration tests.

© ISET, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/test-runner-architecture of ISET/isetcam.

Open the folder on GitHubat commit 17146a9

Compare with similar skills

Test Runner Architecture 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.

Test Runner Architecture compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Test Runner Architecture this skillISET/isetcam176—~2.6kAutomated safety check: PassMIT
Make Changesremix-run/remix33k—~2.4kAutomated safety check: PassMIT
Orch Change Featureaffaan-m/ECC275k1 repos~420Automated safety check: PassMIT
Change Managementsickn33/agentic-awesome-skills47k2 repos~3.5kAutomated safety check: PassMIT
Agent Test Long Runnerruvnet/ruflo74k2 repos~426Automated safety check: PassMIT
Depot GitHub RunnersPostHog/posthog40k—~2.8kAutomated safety check: PassCustom licence

Similar skills

  • Make Changes

    remix-run/remix

    Create or update Remix repo change files under packages//.changes.

    33k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Orchestrate altering an existing, working feature to new desired behavior — update its tests to the new spec, change the implementation to match, review, and gated commit.

    275k GitHub starsUsed in 1 repo~420 tokens
    Auto-check passed
  • Change Management

    sickn33/agentic-awesome-skills

    Implement change management processes. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~3.5k tokens
    DevOps & CloudAuto-check passed
  • Agent skill for test-long-runner - invoke with $agent-test-long-runner

    74k GitHub starsUsed in 2 repos~426 tokens
    Agent WorkflowsAuto-check passed
  • Depot GitHub Runners

    PostHog/posthog

    Official

    Configures Depot-managed GitHub Actions runners as a drop-in replacement for GitHub-hosted runners.

    40k GitHub stars~2.8k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Implement a pnpm feature, bug fix, or refactor by checking existing capabilities, prioritizing code reuse and deduplication, assessing architecture impact, and validating the final change.

    37k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from ISET/isetcam

  • A skill your agent uses when adding, editing, or deciding where to place a file in tutorials/ or examples/, when naming a new t.m, s.m, or data.m script, or when asked about the difference between a…

    176 GitHub stars~810 tokensUpdated 13 days ago
    Auto-check passed
  • A skill your agent uses when setting up or troubleshooting a MATLAB session for this repository — configuring the VS Code MATLAB extension, MATLAB Desktop vs.

    176 GitHub stars~1.3k tokensUpdated 13 days ago
    Auto-check passed
  • Matlab Evaluation

    ISET/isetcam

    A skill your agent uses when running, testing, or publishing MATLAB .m scripts from ISETCam or the local Psych 221 teaching repository in a non-interactive MATLAB session, including locating MATLAB…

    176 GitHub stars~1.2k tokensUpdated 13 days ago
    Auto-check passed
  • A skill your agent uses when converting an ISETCam tutorial or example .m file into a self-contained HTML file for a wiki page — iePublish, spublishTutorials, spublishExamples, embedding figures or…

    176 GitHub stars~1.4k tokensUpdated 13 days ago
    Auto-check passed
  • Testing Workflow

    ISET/isetcam

    A skill your agent uses when running or choosing ISETCam tests after a code change — ieUnitTest, ieTutorialTest, ieExampleTest, ieTestReport, selecting/starting a partial run, the % SkipFile marker…

    176 GitHub stars~1.4k tokensUpdated 13 days ago
    Auto-check passed

Questions about Test Runner Architecture

What does Test Runner Architecture do?

A skill your agent uses when modifying the shared ieRunTutorialExampleTests engine, changing the canonical run-record/checkpoint schema, adding a thin tutorial/example test wrapper for a new…. Test Runner Architecture is an agent skill from ISET/isetcam.g.

When should I use Test Runner Architecture?

Test Runner Architecture fits situations like: modifying the shared ieRunTutorialExampleTests engine; changing the canonical run-record/checkpoint schema; adding a thin tutorial/example test wrapper for a new repository (e.g.

How do I install Test Runner Architecture in Claude Code?

Run `npx skills add ISET/isetcam --skill test-runner-architecture -a claude-code`. Or copy the skill folder (.github/skills/test-runner-architecture in ISET/isetcam) into .claude/skills/test-runner-architecture in your project. Claude Code loads it when a task matches its description.

How do I install Test Runner Architecture in Codex?

Run `npx skills add ISET/isetcam --skill test-runner-architecture -a codex`. Or copy the skill folder (.github/skills/test-runner-architecture in ISET/isetcam) into .agents/skills/test-runner-architecture in your project. Codex loads it when a task matches its description.

Can I use Test Runner Architecture in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ISET/isetcam --skill test-runner-architecture -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-runner-architecture, .gemini/skills/test-runner-architecture, .github/skills/test-runner-architecture and .opencode/skills/test-runner-architecture in your project.

What does Test Runner Architecture need to run?

SKILL.md names no scripts, command-line tools or credentials: Test Runner Architecture is instructions for the agent only.

Does Test Runner Architecture access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Test Runner Architecture safe to install?

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. Review the folder before installing.

What licence does Test Runner Architecture use?

Test Runner Architecture is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Test Runner Architecture use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Test Runner Architecture?

Skills that share tags, products or a category with Test Runner Architecture: Make Changes (remix-run/remix, 33k stars), Orch Change Feature (affaan-m/ECC, 275k stars), Change Management (sickn33/agentic-awesome-skills, 47k stars) and Agent Test Long Runner (ruvnet/ruflo, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Test Runner Architecture?

ISET (a GitHub organization) maintains it in ISET/isetcam, which has 176 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on September 25, 2026.

Source: ISET/isetcam on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.