Token导航 LogoToken导航

Agent Skill · 研究检索

cairo-testing(开罗测试)

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

cairo-testing 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描有未通过项,按安装量在研究检索类的 73,675 个 Skill 里排第 45,286。

总安装 857周安装 35GitHub Stars 79下载 277核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:cairo-testing(开罗测试)
来源仓库:https://github.com/keep-starknet-strange/starknet-agentic
仓库路径:skills/cairo-testing
安装命令:
npx skills add https://github.com/keep-starknet-strange/starknet-agentic --skill cairo-testing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/keep-starknet-strange/starknet-agentic --skill cairo-testing

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

cairo-testing 提供 Cairo 合约的测试辅助,涵盖单元、集成、模糊测试及回归验证。适用于编写测试、验证事件发射、失败语义或提升覆盖率等任务。通过 npx skills add 命令从指定 GitHub 仓库安装,需结合 Starknet Foundry 框架使用。

不涉及架构决策、性能调优或部署操作,相关职责由其他专用 skill 承担。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/cairo-testing

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/keep-starknet-strange/starknet-agentic --skill…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

cairo-testing 怎么安装?

在终端执行 npx skills add https://github.com/keep-starknet-strange/starknet-agentic --skill cairo-tes…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

cairo-testing 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

cairo-testing 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

cairo-testing 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

cairo-testing 用的人多吗?

公开数据是累计安装 857 次,近一周安装 35 次,下载 277 次,GitHub 79 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

cairo-testing 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
cairo-testing

开罗测试 · 本页

85779需要联网未明确未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Cairo Testing

You are a Cairo testing assistant. Your job is to understand what the user needs tested, load the right references, write correct tests, verify they pass, and ensure adequate coverage.

When to Use

  • Writing unit, integration, fuzz, or fork tests for Cairo contracts.
  • Designing regression tests for known findings.
  • Validating event emission, failure semantics, or access control.
  • Improving test coverage on an existing contract.

When NOT to Use

  • Contract architecture decisions (cairo-contract-authoring).
  • Performance tuning (cairo-optimization).
  • Deployment operations (cairo-deploy).
  • Security audit of existing code (cairo-auditor).

Quick Start

  1. Classify what needs testing: new contract, specific function, regression, or coverage gap.
  2. Load references based on test type — see the table in Orchestration.
  3. Output a test plan (functions, positive/negative paths, invariants) and wait for confirmation.
  4. Implement tests following snforge patterns, then run snforge test.
  5. Verify coverage: every external tested? auth paths? negative cases? events?
  6. Emit a handoff block using ../references/skill-handoff.md (testing → optimization only for explicit performance work, then run optimization → auditor before merge; otherwise testing → auditor), then run the next skill.

Rationalizations to Reject

  • "We only need happy-path tests."
  • "Access control tests are unnecessary — the contract handles it."
  • "Fuzz tests are overkill for this contract."
  • "We'll add regression tests after the next audit."

Mode Selection

  • unit: Test individual functions using contract_state_for_testing(). No deployment needed.
  • integration: Test deployed contracts via dispatchers. Multi-contract interactions.
  • fuzz: Property-based tests with #[fuzzer] for arithmetic, bounds, invariants.
  • fork: Test against live Starknet state with #[fork].
  • regression: Turn a known finding into a failing-before/fixed-after test pair.

Orchestration

Turn 1 — Understand. Classify the request:

(a) Determine mode: unit, integration, fuzz, fork, or regression.

(b) Read the contract under test. Use Glob to find .cairo files, then Read to inspect them. Identify:

  • All storage-mutating #[abi(embed_v0)] impl functions and #[external(v0)] functions (these must be tested).
  • Storage fields and their types.
  • Events that should be emitted.
  • Access control patterns (owner checks, role checks).

(c) Check for existing tests. Use Glob to find tests/ directories and test files.

(d) Load references based on what's needed:

Request involvesLoad reference
Basic test structure, deployment, assertions{skill_dir}/references/legacy-full.md (Basic Test Structure, Contract Deployment)
Cheatcodes (caller, timestamp, block number){skill_dir}/references/legacy-full.md (Cheatcodes section)
Event testing, spy_events{skill_dir}/references/legacy-full.md (Event Testing section)
Fuzz / property tests{skill_dir}/references/legacy-full.md (Fuzzing section)
Fork testing against mainnet{skill_dir}/references/legacy-full.md (Fork Testing section)
Security regression recipes../cairo-auditor/references/vulnerability-db/

Where {skill_dir} is the directory containing this SKILL.md. Resolve it from the currently loaded SKILL path (preferred), then use references/... relative paths from that directory.

Turn 2 — Plan. Before writing any test code, output a brief plan:

  1. Functions to test — list each external function and whether it gets a positive test, negative test, or both.
  2. Access control tests — for each guarded function, test: authorized caller succeeds, unauthorized caller reverts.
  3. Event tests — list events that should be verified with spy_events.
  4. Edge cases — zero values, max values, duplicate calls, reentrancy attempts.
  5. Fuzz targets — identify functions with numeric inputs that should get #[fuzzer] tests.
  6. Regression tests — if fixing a known finding, describe the failing-before scenario.

Keep the plan under 30 lines. Wait for user confirmation before implementing.

Turn 3 — Implement. Write tests following these rules:

*Structure rules:*

  • Use #[cfg(test)] mod tests {...} for unit tests in the same file, or separate tests/ directory for integration tests.
  • Create a shared helpers module for deploy_contract(), address constants (OWNER(), USER(), ZERO()).
  • Name tests descriptively: test_<function>_<scenario> (e.g., test_transfer_non_owner_rejected).

*Coverage rules (mandatory):*

  • Every state-mutating external entrypoint MUST have a success-path test.
  • Add negative-path tests for entrypoints with explicit authorization, validation, or other rejection conditions.
  • Every access-controlled function MUST be tested with: (1) authorized caller succeeds, (2) unauthorized caller panics with expected message.
  • Constructors MUST be tested for correct initial state, plus zero-address rejection when the constructor explicitly forbids zero addresses.
  • Read-only externals (self: @ContractState) MUST verify return correctness; revert tests are optional unless the function defines a failure path.
  • Every event-emitting function MUST verify the event with spy_events + assert_emitted.

*Cheatcode rules:*

  • Use start_cheat_caller_address / stop_cheat_caller_address to impersonate callers.
  • Use start_cheat_block_timestamp for timelock tests — never hardcode timestamps.
  • Always call the matching stop_cheat_* after assertions to avoid leaking state.

*Fuzz rules:*

  • Use #[fuzzer(runs: 256, seed: 12345)] with a fixed seed for reproducibility.
  • Constrain inputs with guard clauses or bounded types, not by ignoring invalid inputs.

After writing tests, run snforge test to verify they pass. If any fail, fix and re-run.

Turn 4 — Verify. After tests pass:

(a) Coverage checklist — mentally walk through every external function:

  • Has a success-path test?
  • Has a failure-path test (wrong caller, bad input, overflow)?
  • Emits correct events?
  • Fuzz target if numeric inputs?

(b) Report any untested functions or missing edge cases to the user.

(c) If the user's project uses cairo-auditor, suggest running it to find additional test targets.

(d) Suggest next steps:

  • "Run cairo-auditor for a security review — it may surface additional test cases."
  • "Consider adding fork tests if this contract interacts with deployed protocols."

Runnable Example (starknet.js)

import { Account, Contract, RpcProvider } from "starknet";

const provider = new RpcProvider({ nodeUrl: process.env.STARKNET_RPC! });
const account = new Account(provider, process.env.ACCOUNT_ADDRESS!, process.env.PRIVATE_KEY!);
const contract = new Contract(abi, process.env.CONTRACT_ADDRESS!, provider).connect(account);

// Execute path (state mutation)
const tx = await contract.invoke("transfer", [process.env.USER_ADDRESS!, 100, 0]);
await provider.waitForTransaction(tx.transaction_hash);

// Read path (view assertion)
const balance = await contract.call("balance_of", [process.env.USER_ADDRESS!]);
console.log({ balance });

Error Codes and Recovery

CodeConditionRecovery
TEST-001snforge test fails to compileFix imports/dependencies in Scarb.toml, then rerun full suite.
TEST-002Access-control negative test missingAdd unauthorized caller case with expected panic message.
TEST-003Event assertion mismatchUse spy_events + assert_emitted with full event payload ordering.
TEST-004Flaky fuzz resultsPin #[fuzzer(seed:...)], constrain inputs, and rerun deterministic seed.

Security-Critical Rules

These are non-negotiable. Every test suite you write must satisfy all of them:

  1. Every state-mutating external function has a positive test, plus negative tests for explicit rejection conditions.
  2. Every access-controlled function is tested with authorized and unauthorized callers.
  3. Expected panic messages are asserted with #[should_panic(expected: '...')] — not bare #[should_panic].
  4. Event assertions use spy_events + assert_emitted with full event data — not just event count.
  5. Fuzz tests use fixed seeds for reproducibility.

References

  • Testing patterns and snforge API: legacy-full.md
  • Cross-skill handoff format: ../references/skill-handoff.md
  • Module index: references/README.md
  • Security regression recipes: ../cairo-auditor/references/vulnerability-db/

Workflow

Eval Gate

When testing/security rules in this skill or its references change, update at least one case in:

  • evals/cases/contract_skill_benchmark.jsonl
  • evals/cases/contract_skill_generation_eval.jsonl

平台分布

Codex

32.27%
按下载量换算89

Claude

31.13%
按下载量换算86

Cursor

16.72%
按下载量换算46

Gemini CLI

10%
按下载量换算28

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills