agentleFS
seqraseqra/opentaint/skills/run-scan/SKILL.md

run-scan

Skill172 starsChanged 2 months agoApache-2.0View on GitHub

Run an OpenTaint scan on project and produces the SARIF report. Use whenever the user asks to scan or re-scan a project

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run an OpenTaint scan over the project model and collect its findings

    line 12
  2. Very specific:

    All three sit next to the report under .opentaint/results/:

    line 57
  3. Very specific:

    if the scan failed at config-load on a malformed model: the engine error and the offending file under .opentaint/pass-through or …

    line 67
  4. Distinctive:

    if no SARIF came out even at 16G: that the scan is left failed, with the setup used (full scan command with ruleset, model dirs, model)

    line 68
  5. Very specific:

    Never hand-edit the project model to change scan results — this skill only reads it.

    line 72

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skill: Run Scan

Run an OpenTaint scan over the project model and collect its findings

Inputs

Provided by the caller, fall back to the default value when omitted. Ask back only when a required input is missing and has no sensible default

  • project-root (optional) — root of the target project. Opentaint keeps all analysis artifacts under the fixed <project-root>/.opentaint/ directory, so every .opentaint/... path below resolves there. Default: current directory
  • rule-ids (optional) — full rule IDs to restrict the scan to
  • max-memory (optional) — a --max-memory value to run scan with. Default: unset (engine default 8G)

Workflow

1. Run the scan

Scan the pre-built model at .opentaint/project. Write the report to .opentaint/results/report.sarif and load both the built-in ruleset and the project's own rules under .opentaint/rules:

opentaint scan --project-model .opentaint/project \
  -o .opentaint/results/report.sarif \
  --ruleset builtin --ruleset .opentaint/rules \
  --track-external-methods
  • --rule-id <full-id> — restrict to specific executable rules (repeatable, one per input rule ID); referenced library rules remain available without listing their IDs separately. Omit to run all loaded rules
  • --passthrough-models .opentaint/pass-through — add when that directory exists: passThrough configs override built-ins at the rule level, a provided rule overriding a built-in only when it matches one
  • --dataflow-models .opentaint/dataflow — add when that directory exists: code-based models, one project per batch

Both model-dir flags walk their trees recursively; pass each parent directory once, not every package or batch separately.

The scan is long — run it in the background and wait for it to finish. Leave --timeout at the engine default (900s); the CLI ends the analysis itself and writes whatever SARIF it has.

2. Retry once on out-of-memory

Start at the 8G default. An out-of-memory failure at 8G — even when the engine still wrote a partial SARIF — is not an acceptable result: retry once at --max-memory 16G before collecting anything. Never higher (more RAM won't improve results), one bump only. When the caller passed max-memory, run at it from the first attempt instead

3. Collect the report, or escalate

A SARIF is complete enough to use even alongside the two normal scan errors — a timeout (the CLI ended the analysis and wrote what it had), or an out-of-memory at 16G (after §2's bump), take it as-is. The other two outcomes are not results to accept. A config-load failure on a malformed model is fixed, not bumped: report the engine error and the offending file under .opentaint/pass-through/.opentaint/dataflow per Output so it can be repaired and rescanned. No SARIF at all, even at 16G, is a plain failure: report it per Output with the scan setup.

Output

Short and concise report of what was done

Artifacts:

All three sit next to the report under .opentaint/results/:

  • .opentaint/results/report.sarif — findings with code-flow traces
  • .opentaint/results/dropped-external-methods.yaml — external methods where dataflow facts were killed for lack of a model
  • .opentaint/results/approximated-external-methods.yaml — external methods already modeled

Summary:

  • finding count, and dropped-vs-modeled external-method counts
  • whether memory was bumped to 16G
  • if the scan failed at config-load on a malformed model: the engine error and the offending file under .opentaint/pass-through or .opentaint/dataflow (located from the error), so it can be fixed and rescanned — this is not an out-of-memory failure and 16G won't help
  • if no SARIF came out even at 16G: that the scan is left failed, with the setup used (full scan command with ruleset, model dirs, model)

Constraints

  • Never hand-edit the project model to change scan results — this skill only reads it. If the model is wrong, rebuild it at the model stage rather than patching project.yaml or anything under it

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.