Skip to main content

clarity-check

Clarity pre-deployment validation — syntax checking, deprecated keyword detection, sender check analysis, error propagation review, and test verification.

Informações da origem

Repositório
aibtcdev/skills
Última atividade na origem
24 de março de 2026 às 23:16
Idioma detectado do SKILL.md
inglês
Estrelas
10
Forks
44

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
2 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
clarity-check
description
Clarity pre-deployment validation — syntax checking, deprecated keyword detection, sender check analysis, error propagation review, and test verification.
metadata
{"author":"whoabuddy","author-agent":"Arc","user-invocable":"false","arguments":"validate | checklist","entry":"clarity-check/SKILL.md","requires":"","tags":"read-only, l2, infrastructure"}
# Clarity Check Skill Pre-deployment validation gate for Clarity smart contracts. Runs automated checks for syntax errors, deprecated keywords, incorrect sender checks, error propagation issues, and missing tests. Pairs with the existing `contract` skill for deploy operations. ## Usage This is a doc-only skill. Agents read this file to understand available checks and invoke them through the skill framework. The CLI interface below documents the planned implementation. ``` bun run clarity-check/clarity-check.ts <subcommand> [options] ``` ## Subcommands ### validate Run all automated checks against a Clarity contract file. ``` bun run clarity-check/clarity-check.ts validate --source <path-to-file.clar> [--project-dir <clarinet-project-dir>] ``` Options: - `--source` (required) — Path to the `.clar` source file to validate - `--project-dir` (optional) — Clarinet project directory for `clarinet check` integration; auto-detected from source path if omitted Output: ```json { "file": "contracts/my-contract.clar", "passed": false, "checks": [ { "name": "syntax", "status": "pass", "description": "clarinet check passes" }, { "name": "deprecated-keywords", "status": "fail", "description": "Deprecated keywords found", "findings": [ { "line": 15, "keyword": "block-height", "replacement": "stacks-block-height", "severity": "warning" } ] }, { "name": "sender-checks", "status": "warn", "description": "Sender check analysis", "findings": [ { "line": 22, "issue": "Token transfer uses contract-caller instead of tx-sender", "recommendation": "Use tx-sender for token operations to preserve human identity through proxies", "severity": "warning" } ] } ], "summary": { "total": 7, "pass": 5, "fail": 1, "warn": 1 } } ``` ### checklist Generate a human-readable pre-deployment checklist for a contract, combining automated checks with manual verification items. ``` bun run clarity-check/clarity-check.ts checklist --source <path-to-file.clar> [--project-dir <clarinet-project-dir>] ``` Options: - `--source` (required) — Path to the `.clar` source file - `--project-dir` (optional) — Clarinet project directory Output: ```json { "file": "contracts/my-contract.clar", "automated": [ {"check": "clarinet check passes", "status": "pass"}, {"check": "No deprecated keywords", "status": "fail", "details": "Found: block-height on line 15"}, {"check": "Correct sender checks", "status": "warn", "details": "1 finding"}, {"check": "Error propagation uses try!", "status": "pass"}, {"check": "No dead code or unused features", "status": "pass"}, {"check": "Events follow structured format", "status": "pass"}, {"check": "Error codes are unique", "status": "pass"} ], "manual": [ "Verify tests exist and pass (npm test)", "Check execution costs in clarinet console (::get_costs)", "Review post-conditions for all token operations", "Verify trait whitelisting if external contracts are called", "Test on testnet before mainnet deployment", "Document contract address after deployment" ] } ``` ## Checks Performed ### Automated | Check | What it detects | |-------|----------------| | Syntax | `clarinet check` errors and warnings | | Deprecated keywords | `block-height` (use `stacks-block-height`), other legacy keywords | | Sender checks | `tx-sender` vs `contract-caller` misuse in token operations | | Error propagation | `unwrap!` used where `try!` is more appropriate for recoverable errors | | Dead code | Unused private functions, unreachable branches | | Event format | Events missing `notification`/`payload` structure | | Error code uniqueness | Duplicate error code constants | | Public function returns | Functions missing `(response ok err)` return type | ### Manual (Checklist Only) | Check | Why it matters | |-------|---------------| | Tests exist and pass | Ensures behavior is verified | | Execution costs | Prevents exceeding block limits | | Post-conditions | Protects users from unexpected token transfers | | Trait whitelisting | Prevents unauthorized contract interactions | | Testnet deployment | Catches issues before mainnet | ## Notes - Requires `clarinet` CLI installed locally for syntax checking - If `clarinet` is not found, syntax check is skipped with a warning - Static analysis only — does not execute the contract or run tests - Use `clarity-test-scaffold` to generate tests, then `clarity-audit` for deep review - Complements `clarinet check` by adding Clarity-specific best practice checks that the compiler doesn't enforce
Ver no GitHub