antithesis-research
Analyze a codebase to figure out how it should be tested with Antithesis: map the system, identify failure-prone areas and testable properties, and produce the research artifacts needed for workload and environment planning.
What this skill does
# Antithesis Research
## Purpose and Goal
Research a target system and produce scratchbook artifacts that unblock the rest of the workflow. Success means:
- `antithesis/scratchbook/sut-analysis.md` captures architecture, state, concurrency, and failure-prone areas
- `antithesis/scratchbook/property-catalog.md` lists concrete, testable properties with priorities
- `antithesis/scratchbook/deployment-topology.md` describes the minimal useful container topology
- `antithesis/scratchbook/properties/{slug}.md` captures per-property evidence trails and context
- `antithesis/scratchbook/property-relationships.md` maps suspected clusters and connections between properties
- `antithesis/scratchbook/evaluation/synthesis.md` records categorized evaluation findings and actions taken
## Prerequisites and Scoping
At the start of every research run, ask the user about external references:
> Before I start, are there docs, design notes, related repos, issue trackers, or anything else outside this directory tree that I should also consult? "Just this directory" is fine.
Capture the answer verbatim. Each external reference becomes a `path` (or URL) plus a brief `why` note. The orchestrator (this skill) holds the answer for the full duration of the run and threads it as input to every reference workflow that produces a top-level artifact: `sut-discovery.md`, `sut-analysis.md`, `property-discovery.md`, `deployment-topology.md`, `property-evaluation.md`. Each of those references' agent-instruction sections accepts the list as input. The list is also recorded in the provenance frontmatter of every top-level artifact (see `references/scratchbook-setup.md`).
Beyond the scope question, ask only for blockers or scoping decisions you cannot infer safely:
- The repo or codebase location, if it is not already clear
- Which subsystem or component matters most, if the work is narrower than the whole repo
- Known incidents, closed bugs, or specific failure modes worth targeting
If scratchbook artifacts already exist, treat them as inputs and extend them instead of rewriting them unless the user asks for a fresh pass.
## Definitions and Concepts
- **SUT:** System under test.
- **Workload:** A synthetic workload designed to exercise the target system
- **Safety property (correctness):** A bad thing never happens
- **Liveness property (progress):** A good thing eventually happens
- **Reachability property:** A code path or behavior is reachable or unreachable
- **Test Template:** A directory of test commands located at `/opt/antithesis/test/v1/{name}/`. There may be more than one test template. Each timeline executes commands from a single test template. Files or subdirectories prefixed with `helper_` are ignored by Antithesis.
- **Test Command:** An executable file in a Test Template with a valid prefix. Valid prefixes: `parallel_driver_`, `singleton_driver_`, `serial_driver_`, `first_`, `eventually_`, `finally_`, `anytime_`
- **Timeline:** A single linear execution of the target system and workload. Antithesis runs many timelines in parallel and branches them to search for interesting behaviors.
## Documentation Grounding
Use the `antithesis-documentation` skill to ground Antithesis-specific terminology and implementation advice.
- Properties and assertions: `https://antithesis.com/docs/properties_assertions/assertions.md`
- Sometimes assertions: `https://antithesis.com/docs/best_practices/sometimes_assertions/`
- Define test properties: `https://antithesis.com/docs/using_antithesis/sdk/define_test_properties/`
- SDK runtime modes and production behavior: `https://antithesis.com/docs/using_antithesis/sdk/`
- Optimize for testing: `https://antithesis.com/docs/best_practices/optimizing.md`
## Reference Files
| Reference | When to read |
| ----------------------------------- | --------------------------------------------------- |
| `references/scratchbook-setup.md` | Always — read first to initialize the workspace |
| `references/sut-discovery.md` | Discovering system characteristics through structured attention focuses |
| `references/sut-analysis.md` | General methodology for analyzing the codebase and understanding components |
| `references/property-discovery.md` | Discovering properties through structured attention focuses |
| `references/property-catalog.md` | Format and methodology for documenting properties |
| `references/faults.md` | Understanding fault types, quiet periods, and process fault availability |
| `references/deployment-topology.md` | Designing the container topology for Antithesis |
| `references/property-evaluation.md` | Evaluating the property catalog as a portfolio |
## Recommended Workflows
### Full research pass (new project)
1. Read `references/scratchbook-setup.md`
2. Read `references/sut-discovery.md` and `references/sut-analysis.md`
3. Analyze the system using the ensemble or single-agent workflow from `references/sut-discovery.md`
4. Scan the codebase for existing Antithesis SDK assertions. Search for imports
of the Antithesis SDK and calls to assertion functions (`assert_always!`,
`assert_sometimes!`, `assert_reachable!`, `assert_unreachable!`, or their
non-macro equivalents). For each assertion found, record the file path, line
number, assertion type, and message string. Write the results to
`antithesis/scratchbook/existing-assertions.md`. Begin the file with
provenance frontmatter per `references/scratchbook-setup.md`. If no
assertions are found, write the file with a note confirming the codebase has
no existing instrumentation.
5. Read `references/property-discovery.md` and `references/property-catalog.md`
6. Discover properties using the ensemble or single-agent workflow from `references/property-discovery.md`
7. Read `references/deployment-topology.md`
8. Design the deployment topology and write it to `antithesis/scratchbook/deployment-topology.md`
9. Read `references/property-evaluation.md`
10. Evaluate the property catalog using the ensemble or single-agent workflow from `references/property-evaluation.md`
11. Address evaluation findings: apply refinements, fill gaps, escalate biases to the user
12. Write or update all remaining findings in the scratchbook under `antithesis/scratchbook/`
### Targeted property research
1. Read `references/sut-discovery.md` and `references/sut-analysis.md` if the system model is missing or stale
2. Read `references/property-discovery.md` and `references/property-catalog.md`
3. Discover properties using the ensemble or single-agent workflow from `references/property-discovery.md`
4. Turn claimed guarantees, incidents, and bug reports into explicit properties, and choose the Antithesis assertion type that matches each one
5. Update `antithesis/scratchbook/property-catalog.md` and record assumptions or open questions
6. Write evidence files for new properties to `antithesis/scratchbook/properties/{slug}.md`
7. Update `antithesis/scratchbook/property-relationships.md` with any new clusters or connections
8. Read `references/property-evaluation.md`
9. Evaluate the updated property catalog using the ensemble or single-agent workflow from `references/property-evaluation.md`
10. Address evaluation findings: apply refinements, fill gaps, escalate biases to the user
### Property expansion (after triage)
1. Read `references/property-discovery.md` and `references/property-catalog.md`
2. Review triage findings from the `antithesis-triage` skill
3. Use the attention focuses from `references/property-discovery.md` to look for new properties inspired by triage findings
4. Update the relevant files in the scratchbook
5. Write evidence files for new properties to `antithesis/scratchbook/properties/{slug}.md`
6. Update `antithesis/scratchbook/property-relationships.md` with any new clusters or connections
7. If the expansion is substantial (a new category of properties Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.