Skip to main content

The Extra variable

extra lets you parameterize a workflow without editing its steps. A prompt can reference {{extra.<key>}}, and each scan supplies the actual values. It's how one workflow adapts to many targets.

How to use it

Reference a sub-key of extra anywhere in a prompt:

The following repo {{repo_full}} is a CTF challenge.
The CTF goal is {{extra.goal}}.
You are {{extra.actor}} with permissions "{{extra.permissions}}".

From workflow to scan

The lifecycle is automatic:

  1. You reference extra keys

    When you save a workflow, open·kritt scans your prompts and records every distinct extra.<key> you referenced.

  2. The scan form asks for them

    When someone creates a scan with that workflow, the form shows a field for each expected extra key.

  3. Values are required and injected

    Every expected key must be filled in - the scan is rejected otherwise - and the values are injected into the render context so {{extra.goal}} resolves at run time.

Why it's useful

The same "solve this challenge" or "audit this service" workflow can be reused across targets by changing only the extra values - the goal, the actor's role, the permissions, the notes - instead of forking the prompts.

Next: how many results fan out across steps with batches.