
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.
- Installs
- 630
- Last 24h
- +9
- Trending rank
- #8957
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/antithesishq/antithesis-skills --skill antithesis-research- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads antithesis-research automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Antithesis Research
Skill version: 2026-10-21 4f8d80b
Purpose and Goal
Research a target system and produce scratchbook artifacts that unblock the rest of the workflow. Success means:
antithesis/scratchbook/sut-analysis.mdcaptures architecture, state, concurrency, and failure-prone areasantithesis/scratchbook/property-catalog.mdlists concrete, testable properties with prioritiesantithesis/scratchbook/deployment-topology.mddescribes the minimal useful container topologyantithesis/scratchbook/properties/{slug}.mdcaptures per-property evidence trails and contextantithesis/scratchbook/property-relationships.mdmaps suspected clusters and connections between propertiesantithesis/scratchbook/evaluation/synthesis.mdrecords 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). Any agent that receives the external references treats each as a lead to validate, not a fact — see references/validating-claims.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 withhelper_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/concepts/properties_assertions/assertions.md - Sometimes assertions:
https://antithesis.com/docs/concepts/properties_assertions/sometimes_assertions.md - Define test properties:
https://antithesis.com/docs/reference/sdk/define_test_properties.md - SDK runtime modes and production behavior:
https://antithesis.com/docs/reference/sdk.md - 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/validating-claims.md | How to treat claims from docs and issues — validate before building on them |
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)
- Read
references/scratchbook-setup.md - Read
references/sut-discovery.mdandreferences/sut-analysis.md - Analyze the system using the ensemble or single-agent workflow from
references/sut-discovery.md - 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 toantithesis/scratchbook/existing-assertions.md. Begin the file with provenance frontmatter perreferences/scratchbook-setup.md. If no assertions are found, write the file with a note confirming the codebase has no existing instrumentation. - Read
references/property-discovery.mdandreferences/property-catalog.md - Discover properties using the ensemble or single-agent workflow from
references/property-discovery.md - Read
references/deployment-topology.md - Design the deployment topology and write it to
antithesis/scratchbook/deployment-topology.md - Read
references/property-evaluation.md - Evaluate the property catalog using the ensemble or single-agent workflow from
references/property-evaluation.md - Address evaluation findings: apply refinements, fill gaps, escalate biases to the user
- Write or update all remaining findings in the scratchbook under
antithesis/scratchbook/
Targeted property research
- Read
references/sut-discovery.mdandreferences/sut-analysis.mdif the system model is missing or stale - Read
references/property-discovery.mdandreferences/property-catalog.md - Discover properties using the ensemble or single-agent workflow from
references/property-discovery.md - Turn claimed guarantees into explicit properties. For incidents and bug reports, confirm the reported defect is a real system defect before making it a property (see
references/validating-claims.md). Choose the Antithesis assertion type that matches each one - Update
antithesis/scratchbook/property-catalog.mdand record assumptions or open questions - Write evidence files for new properties to
antithesis/scratchbook/properties/{slug}.md - Update
antithesis/scratchbook/property-relationships.mdwith any new clusters or connections - Read
references/property-evaluation.md - Evaluate the updated property catalog using the ensemble or single-agent workflow from
references/property-evaluation.md - Address evaluation findings: apply refinements, fill gaps, escalate biases to the user
Property expansion (after triage)
- Read
references/property-discovery.mdandreferences/property-catalog.md - Review triage findings from the
antithesis-triageskill - Use the attention focuses from
references/property-discovery.mdto look for new properties inspired by triage findings - Update the relevant files in the scratchbook
- Write evidence files for new properties to
antithesis/scratchbook/properties/{slug}.md - Update
antithesis/scratchbook/property-relationships.mdwith any new clusters or connections - If the expansion is substantial (a new category of properties or more than 3
new properties), read
references/property-evaluation.mdand evaluate the updated catalog. Small expansions of 1-3 properties in existing categories do not require a full evaluation pass.
General Guidance
- Prefer specific, checkable guarantees over vague goals like "test failover"
- If the system's docs or comments claim a guarantee, make it a property to test — the property verifies the claim; don't state in the analysis that the guarantee holds
- A bug report in an issue is a lead, not a fact. Confirm the reported defect is a real system defect before building anything on it (see
references/validating-claims.md) - Record not just the invariant, but why the chosen Antithesis assertion type is the right semantic fit for that property
- Use
Sometimes(cond)for liveness or non-trivial semantic states, not for invariants that must hold on every evaluation and not as a substitute forReachable(...) - Identify where surgical SUT-side assertions would give materially better search guidance than workload-only checks, especially for rare, dangerous, timing-sensitive, or externally invisible states
- Remember that Antithesis SDK assertions do not crash the program on failure; they are intended to be safe in production code and usually become low-overhead fallbacks or no-ops outside Antithesis
- Focus on timing-sensitive, concurrency-sensitive, and partial-failure scenarios where Antithesis is strongest
- Keep the deployment topology minimal; every extra container expands state space
- Write down assumptions and open questions in the scratchbook instead of keeping them implicit
- If only part of the research is requested, still update the relevant scratchbook files and note what remains undone
Output
antithesis/scratchbook/sut-analysis.mdantithesis/scratchbook/existing-assertions.mdantithesis/scratchbook/property-catalog.mdantithesis/scratchbook/deployment-topology.mdantithesis/scratchbook/property-relationships.mdantithesis/scratchbook/properties/{slug}.md(one per cataloged property)antithesis/scratchbook/evaluation/synthesis.mdantithesis/scratchbook/evaluation/{lens}.md(one per evaluation lens)
All top-level scratchbook artifacts (everything in the list above except per-property evidence files) include provenance frontmatter recording sut_path, commit, updated, and external_references. Per-property evidence files inherit context from property-catalog.md and do not need their own frontmatter. See references/scratchbook-setup.md.
These outputs should be concrete enough for the antithesis-setup skill and the antithesis-workload skill to use directly.
Self-Review
Before declaring this skill complete, review your work against the criteria below. If your agent supports spawning sub-agents, create a new agent with fresh context to perform this review — give it the path to this skill file and have it read all output artifacts. A fresh-context reviewer catches blind spots that in-context review misses. If your agent does not support sub-agents, perform the review yourself: re-read the success criteria at the top of this file, then systematically check each item below against your actual output.
Review criteria:
antithesis/scratchbook/sut-analysis.mdexists and covers architecture, state management, concurrency model, and failure-prone areasantithesis/scratchbook/existing-assertions.mdexists and lists all Antithesis SDK assertions found in the codebase (or explicitly states none were found)- Evidence files correctly distinguish between instrumentation that already exists in the codebase, instrumentation that is partially present, and instrumentation that is missing — no evidence file suggests adding an assertion that is already there
antithesis/scratchbook/property-catalog.mdexists, has provenance frontmatter perreferences/scratchbook-setup.md, and lists concrete, testable properties — not vague goals like "test failover"- Every top-level artifact begins with provenance frontmatter per
references/scratchbook-setup.md - The
external_referenceslist reflects the user's stated scope answer; entries that were referenced have awhynote explaining their use - The scope question was asked at the start of the run, and the user's answer was passed to every sub-agent that performed analysis
- Each property has a descriptive kebab-case slug as its canonical ID
- Each property has a priority and a rationale for its chosen Antithesis assertion type (
Always,Sometimes,Reachable, etc.) - Properties that need internal branch guidance or replay anchors call out likely SUT-side instrumentation points, not just workload-visible checks
antithesis/scratchbook/deployment-topology.mdexists and describes a minimal container topology — every container is justified- Every cataloged property has a corresponding evidence file at
antithesis/scratchbook/properties/{slug}.mdthat captures the evidence trail, relevant code paths, and key observations - Each property's catalog entry includes an Open Questions list that mirrors the unresolved questions from its evidence file (short summaries; full context stays in the evidence file). Resolved questions are removed; remaining questions are tagged per
references/property-catalog.md("Open Questions Conventions"). - Each
(partial: ...)or(needs human input)tag is backed by an investigation log entry in the evidence file (seereferences/property-catalog.md"Investigation Log") that records what was examined, what was found, and what wasn't. Untagged (not yet investigated) questions don't require a log entry. Unresolved questions that need human input are an acceptable outcome — they must be visible in the catalog overview, not buried in evidence files. - Properties invalidated by investigation are marked in the catalog with the reason
antithesis/scratchbook/property-relationships.mdexists and groups related properties into clusters with brief notes on suspected connections and dominance- Every property slug referenced in
property-relationships.mdcorresponds to a property in the catalog - Properties focus on timing-sensitive, concurrency-sensitive, and partial-failure scenarios where Antithesis is strongest
- Claimed guarantees from docs or comments are represented as properties to test, and the analysis does not state any guarantee as an established fact
- Any statement that a specific defect exists, taken from a bug report, cites primary evidence that the defect is real and rules out the reporter's environment or config — not just a link to the issue or a matching symptom
- Property evaluation was performed:
antithesis/scratchbook/evaluation/synthesis.mdexists with categorized findings - Evaluation refinements have been applied to the catalog
- Evaluation gaps have been filled via targeted discovery, and the resulting properties are in the catalog with evidence files
- Evaluation biases (if any) have been presented to the user with supporting evidence
- The outputs are concrete enough for
antithesis-setupandantithesis-workloadto use directly — no ambiguous steps or missing details
FAQ
What does the antithesis-research skill do?
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.
How do I install antithesis-research?
Run npx skills add https://github.com/antithesishq/antithesis-skills --skill antithesis-research in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/antithesis-research/ (personal) or .claude/skills/antithesis-research/ (project).
Which AI agents can use antithesis-research?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is antithesis-research safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains antithesis-research?
It is published by antithesishq in antithesishq/antithesis-skills, and it is an official skill from the maker of the technology it covers. It has 630 recorded installs.
More from antithesishq/antithesis-skills
antithesis-documentation
antithesishq/antithesis-skills
Use Antithesis documentation efficiently for product, workflow, and integration questions. Prefer the snouty docs CLI when available, and otherwise request markdown versions of documentation pages directly.
antithesis-triage
antithesishq/antithesis-skills
Triage Antithesis test reports to understand what happened in a run: look up runs, check status, investigate failed properties (assertions), view metadata, download logs, search events across all timelines, inspect findings, and examine environmental details. Load after a run completes or when investigating a failure.
antithesis-workload
antithesishq/antithesis-skills
Implement Antithesis workloads by turning the property catalog into SDK assertions and test commands, then refine coverage after triage.
antithesis-setup
antithesishq/antithesis-skills
Scaffold the Antithesis harness with docker-compose: initialize the working directory, write Dockerfiles and docker-compose.yaml with build directives, and prepare to submit your first Antithesis test run. If the desired setup is Kubernetes, defer to the antithesis-setup-k8s skill.
antithesis-debug
antithesishq/antithesis-skills
Run a bash script inside an Antithesis run at a chosen moment with snouty runs exec, from the terminal and without a browser. Use it for scripted forensics on a run: process and container inspection, on-disk evidence, gdb attach, and general debugging. Covers command usage, the live-session requirement, common workflows and errors, and how virtual time and perturbation limit what a debugger can see.
antithesis-launch
antithesishq/antithesis-skills
Launch an Antithesis run with snouty by discovering the harness layout, building the right Docker Compose config, running snouty validate, bailing on validation failure, and then submitting snouty launch with sane metadata. Use when the user wants to send, submit, or launch an Antithesis run. This skill takes duration in minutes as input.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。