Custom, Composition, and Regression Strategies
Four strategies for advanced use cases: custom (text-based multi-turn instructions, no coding), custom scripts (JavaScript transformations), layer (compose multiple strategies sequentially), and retry (regression testing from historical failures). These let you create user-defined approaches, chain strategies into sophisticated attack chains, and learn from past failures.
Use this skill when
- Creating a custom multi-turn strategy from natural language instructions (no coding)
- Writing custom JavaScript strategy transforms for programmatic control
- Composing multiple strategies sequentially (
layer) — e.g. jailbreak → base64, agentic → multimodal - Building a regression test suite that learns from past failures (
retry) - Chaining agentic + multimodal strategies (e.g. hydra → audio, crescendo → image)
- Automating manual red team discoveries into reusable strategies
- Creating named strategy variants for different attack personas
Do not use this skill when
- You need standard static encoding strategies → use
promptfoo-strategies-static - You need standard dynamic/iterative strategies → use
promptfoo-strategies-dynamic - You need standard multi-turn strategies → use
promptfoo-strategies-multi-turn - You need indirect prompt injection via web pages → use
promptfoo-strategies-indirect-injection
🛡️ Edge cases (mandatory handling)
- Layer ordering rules — agentic strategies (hydra, crescendo, goat, jailbreak) must come FIRST (max 1); multimodal strategies (audio, image) must come LAST (max 1); text transforms (base64, rot13, leetspeak) go in between. Violating this corrupts the attack.
- Transforms before agentic modify the attack goal — placing
base64beforejailbreak:hydraencodes the goal itself, not each turn. Rarely useful. - Multiple agentic or multiple multimodal strategies in one layer — invalid; only 1 agentic first, 1 multimodal last.
retryis target-specific — only retries test cases that previously failed against the SAME target system (identified by target label). Ensure consistent labels across runs.retryruns first in the pipeline — other strategies build upon historical test cases.retryuses local database only — Cloud sharing of retry test cases across teams is coming soon.- Custom strategy scripts need
strategyIdin metadata — preserve originalpluginIdvia spread operator while addingstrategyId. - Custom text-based strategies — the AI has access to the objective, current turn number, turns remaining, and conversation history. Write instructions accordingly.
- Labels for multiple layer strategies — without labels, layer strategies are deduplicated by their steps. Use
labelto have multiple distinct layer strategies in the same config. - Test case multiplication — some strategies multiply test cases (e.g. global
language: ['en', 'es', 'fr']multiplies by 3). Plan test counts to avoid excessive evaluation time.
🎯 Core workflow
- Choose approach — load
references/approach-selection.mdfor custom text vs custom script vs layer vs retry. - Custom text strategy — load
references/custom-text.mdforid: customwithstrategyText, no coding required. - Custom script strategy — load
references/custom-script.mdforfile://custom-strategy.jswith JavaScriptactionfunction. - Layer composition — load
references/layer.mdfor chaining strategies, ordering rules, valid/invalid patterns, agentic + multimodal. - Retry regression — load
references/retry.mdforid: retryconfig,numTests,plugins, target-specific retry. - Custom provider for multimodal — load
references/custom-provider.mdfor handling hybrid audio/image payloads from layer. - Checklist — run
references/checklist.mdbefore declaring done.
🎯 Core principles (summary)
custom(text-based) — write natural language instructions for multi-turn strategies. No coding. The AI follows your instructions across conversation turns. Good for automating manual discoveries.- Custom strategy scripts — JavaScript
action(testCases, injectVar, config)function for full programmatic control. Transform test cases, call external APIs, create unique attack vectors. layer— compose multiple strategies sequentially. Two modes: transform chain (all static) and agentic + per-turn transforms (agentic first, multimodal last). Enables sophisticated attack chains.retry— regression testing that automatically incorporates previously failed test cases. Target-specific (same label). Runs first in pipeline. 50-70% ASR increase from historical knowledge.- Layer ordering — agentic first (max 1), text transforms middle, multimodal last (max 1). Violating this corrupts the attack.
- Labels for multiple layers — use
labelfield to have multiple distinct layer strategies in the same config. retryis target-specific — only retries failures against the same target (by label). Ensure consistent labels.- Custom scripts preserve metadata — spread
...testCase.metadatato keeppluginIdwhile addingstrategyId.
📦 Strategy catalog
| Strategy | ID | Cost | ASR | Description |
|---|---|---|---|---|
| Custom (text-based) | custom |
Variable | Variable | Natural language multi-turn instructions, no coding |
| Custom Script | file://custom-strategy.js |
Variable | Variable | JavaScript action function for programmatic control |
| Layer | layer |
Cumulative | Cumulative | Compose multiple strategies sequentially |
| Retry | retry |
Low | 50-70% | Regression testing from historical failures |
References
references/approach-selection.md— decision matrix: custom text vs custom script vs layer vs retryreferences/custom-text.md—id: customwithstrategyText, instruction patterns, stateful vs stateless, named variants, debuggingreferences/custom-script.md— JavaScriptactionfunction,file://custom-strategy.js, config options, example scriptreferences/layer.md— chaining strategies, ordering rules, valid/invalid patterns, agentic + multimodal, labels, step-level plugin targetingreferences/retry.md—id: retryconfig,numTests,plugins, target-specific retry, how it works, best practicesreferences/custom-provider.md— handling hybrid audio/image payloads from layer strategy, hybrid JSON formatreferences/checklist.md— approach, custom, layer, retry, multimodal provider checklist