Algorand TypeScript
Write, test, deploy, and troubleshoot Algorand TypeScript smart contracts.
Quick Start
algokit init -n my-project -t typescript --answer preset_name production --defaults
cd my-project
algokit project run build # Compile .algo.ts → ARC-56 + typed client
algokit project run test # Run Vitest tests
algokit localnet start # Start local network
algokit project deploy localnet # Deploy
Critical Rules
- File extension: Contract files MUST use
.algo.ts
- NEVER use
number: Use uint64 and Uint64() for all numeric values in contracts
- Always
clone() storage reads/writes: clone(this.box(k).value) — see syntax-types.md decision table
fee: Uint64(0) on all inner transactions: Prevents app account drain; caller covers via fee pooling
- Fund app account before box operations: Box storage requires MBR funding
- NEVER use PyTEAL, Beaker, or raw TEAL: Only use Algorand TypeScript (PuyaTs)
- Always search docs first: Use Kapa MCP or web search before writing contract code
- Always include tests: Use
algorandFixture for E2E integration tests
- Understand AVM constraints: See
algorand-core skill for the foundational mental model
Reference Guide
Read the specific reference file for your task. Each file is self-contained.
Contract Syntax
- syntax-types.md — AVM types (
uint64, bytes, bigint), number rules, clone(), value semantics, union type workarounds, array rules
- syntax-storage.md —
GlobalState, LocalState, BoxMap, Box, MBR funding patterns, @contract decorator for dynamic keys, choosing storage types
- syntax-methods.md — Method visibility (
public/private), @abimethod/@readonly decorators, transaction-type parameters, lifecycle methods, emit() events, assertMatch with comparison operators
- syntax-transactions.md —
gtxn typed access, ABI method transaction parameters, itxn inner transactions, itxnCompose/itxn.submitGroup, fee pooling, asset creation
Testing
- testing.md — E2E test examples (HelloWorld, BoxStorage, LocalStorage, StructInBox) + unit testing with
TestExecutionContext
Deployment and Client Interaction
- deploy-interaction.md — Factory deployment, typed client calls,
newGroup() chaining, .simulate(), struct-as-tuple returns, box references, populateAppCallResources, coverAppCallInnerTransactionFees, amount helpers, .addr.toString() gotcha
Migration
Troubleshooting
- errors.md — Contract errors (assert, opcode budget, box MBR, inner txn) + transaction errors (overspend, asset not opted in, account not found)
Canonical Example Repos
Search these repositories for real-world code examples:
algorandfoundation/devportal-code-examples — Primary examples in projects/typescript-examples/contracts/ (HelloWorld, BoxStorage, LocalStorage, StructInBox, etc.)
algorandfoundation/puya-ts — Compiler examples in examples/ (hello_world_arc4, voting, amm)
algorandfoundation/algokit-typescript-template — AlgoKit project template
algorandfoundation/algokit-utils-ts — AlgoKit Utils TypeScript SDK
Cross-References
- New to Algorand? Read
algorand-core skill first for AVM mental model
- Project scaffolding and CLI: See
algorand-project-setup skill
- React frontends: See
algorand-frontend skill
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: algorand-devrel-algorand-agent-skills-algorand-typescript3description: Algorand TypeScript4---56# Algorand TypeScript78Write, test, deploy, and troubleshoot Algorand TypeScript smart contracts.910## Quick Start1112```bash13algokit init -n my-project -t typescript --answer preset_name production --defaults14cd my-project15algokit project run build # Compile .algo.ts → ARC-56 + typed client16algokit project run test # Run Vitest tests17algokit localnet start # Start local network18algokit project deploy localnet # Deploy19```2021## Critical Rules2223- **File extension**: Contract files MUST use `.algo.ts`24- **NEVER use `number`**: Use `uint64` and `Uint64()` for all numeric values in contracts25- **Always `clone()` storage reads/writes**: `clone(this.box(k).value)` — see syntax-types.md decision table26- **`fee: Uint64(0)` on all inner transactions**: Prevents app account drain; caller covers via fee pooling27- **Fund app account before box operations**: Box storage requires MBR funding28- **NEVER use PyTEAL, Beaker, or raw TEAL**: Only use Algorand TypeScript (PuyaTs)29- **Always search docs first**: Use Kapa MCP or web search before writing contract code30- **Always include tests**: Use `algorandFixture` for E2E integration tests31- **Understand AVM constraints**: See `algorand-core` skill for the foundational mental model3233## Reference Guide3435Read the specific reference file for your task. Each file is self-contained.3637### Contract Syntax3839- [syntax-types.md](./references/syntax-types.md) — AVM types (`uint64`, `bytes`, `bigint`), number rules, `clone()`, value semantics, union type workarounds, array rules40- [syntax-storage.md](./references/syntax-storage.md) — `GlobalState`, `LocalState`, `BoxMap`, `Box`, MBR funding patterns, `@contract` decorator for dynamic keys, choosing storage types41- [syntax-methods.md](./references/syntax-methods.md) — Method visibility (`public`/`private`), `@abimethod`/`@readonly` decorators, transaction-type parameters, lifecycle methods, `emit()` events, `assertMatch` with comparison operators42- [syntax-transactions.md](./references/syntax-transactions.md) — `gtxn` typed access, ABI method transaction parameters, `itxn` inner transactions, `itxnCompose`/`itxn.submitGroup`, fee pooling, asset creation4344### Testing4546- [testing.md](./references/testing.md) — E2E test examples (HelloWorld, BoxStorage, LocalStorage, StructInBox) + unit testing with `TestExecutionContext`4748### Deployment and Client Interaction4950- [deploy-interaction.md](./references/deploy-interaction.md) — Factory deployment, typed client calls, `newGroup()` chaining, `.simulate()`, struct-as-tuple returns, box references, `populateAppCallResources`, `coverAppCallInnerTransactionFees`, amount helpers, `.addr.toString()` gotcha5152### Migration5354- [migration-from-tealscript.md](./references/migration-from-tealscript.md) — TEALScript → Algorand TypeScript 1.0 migration with 13 changes55- [migration-from-beta.md](./references/migration-from-beta.md) — Beta → 1.0 migration with 13 breaking changes5657### Troubleshooting5859- [errors.md](./references/errors.md) — Contract errors (assert, opcode budget, box MBR, inner txn) + transaction errors (overspend, asset not opted in, account not found)6061## Canonical Example Repos6263Search these repositories for real-world code examples:6465- **`algorandfoundation/devportal-code-examples`** — Primary examples in `projects/typescript-examples/contracts/` (HelloWorld, BoxStorage, LocalStorage, StructInBox, etc.)66- **`algorandfoundation/puya-ts`** — Compiler examples in `examples/` (hello_world_arc4, voting, amm)67- **`algorandfoundation/algokit-typescript-template`** — AlgoKit project template68- **`algorandfoundation/algokit-utils-ts`** — AlgoKit Utils TypeScript SDK6970## Cross-References7172- **New to Algorand?** Read `algorand-core` skill first for AVM mental model73- **Project scaffolding and CLI**: See `algorand-project-setup` skill74- **React frontends**: See `algorand-frontend` skill7576---77> Converted and distributed by [TomeVault](https://tomevault.io/claim/algorand-devrel) — claim your Tome and manage your conversions.78<!-- tomevault:4.0:skill_md:2026-04-11 -->