Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/skill-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Tessl Skill Review β€” runs on PRs that change any SKILL.md; posts scores as one PR comment.
# Docs: https://github.com/tesslio/skill-review
name: Tessl Skill Review

on:
pull_request:
branches: [development]
paths:
- "**/SKILL.md"

jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: tesslio/skill-review@main
# Optional quality gate (off by default β€” do not enable unless user asked):
# with:
# fail-threshold: 70
22 changes: 10 additions & 12 deletions docs/skills/aider/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
---
name: aider
description: Tari Ootle development instructions for Aider
description: "Scaffold, build, test, and deploy Tari Ootle templates (Rust β†’ WASM smart contracts) on Tari L2. Covers template authoring with #[template] macros, ResourceBuilder for fungible/NFT assets, Vault/Bucket lifecycle, transaction manifests, cross-component calls, access rules, client-side transaction building with ootle-rs, and local testing with tari_template_test_tooling. Use when developing, debugging, or deploying Tari Ootle templates and components."
---

These conventions guide development on the Tari Ootle platform β€” a decentralized application layer on Tari L2. Smart contracts ("templates") are written in Rust, compiled to WASM (`wasm32-unknown-unknown`), and deployed to the network as components with persistent on-chain state.

## Overview

Tari Ootle is a decentralized application platform built on the Tari Layer 2 network. You build **templates** (smart contracts) in Rust, compile them to WASM (`wasm32-unknown-unknown`), publish them to the network, and interact with deployed **components** (instances of templates) via transactions.
Tari Ootle is a decentralized application platform on Tari Layer 2. Build **templates** (smart contracts) in Rust, compile to WASM (`wasm32-unknown-unknown`), publish to the network, and interact with deployed **components** via transactions.

**Key concepts:**
- **Template** β€” A Rust module annotated with `#[template]` that defines the logic and state structure. Compiled to WASM and deployed to the network.
- **Component** β€” A live instance of a template on-chain. Holds state (struct fields) and exposes public methods.
- **Resource** β€” A native digital asset (fungible token or non-fungible NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.
- **Vault** β€” An on-chain container that holds exactly one type of resource. Must be stored in a component before the function returns.
- **Bucket** β€” A temporary container for resources during a transaction. Used to move assets between vaults or to/from method calls.
- **Transaction** β€” A set of instructions (CallFunction, CallMethod, etc.) that are signed, submitted, and executed atomically.
- **Template** β€” Rust module annotated with `#[template]`; defines logic and state. Compiled to WASM and deployed.
- **Component** β€” Live instance of a template on-chain. Holds state and exposes public methods.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While simplifying the key concepts is good, removing the phrase 'Cannot be copied or accidentally destroyed' for Resource might omit a crucial piece of information. This is a fundamental principle of resource-oriented programming and is important for developers to understand the asset safety guarantees of the platform. I'd suggest re-adding it for clarity.

Suggested change
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.

- **Vault** β€” On-chain container for exactly one resource type. Must be stored in a component before the function returns.
- **Bucket** β€” Temporary container for resources during a transaction. Moves assets between vaults or method calls.
- **Transaction** β€” Set of instructions (CallFunction, CallMethod, etc.) signed, submitted, and executed atomically.

**Crate ecosystem:**

Expand Down Expand Up @@ -303,8 +301,8 @@ pub fn do_something(&mut self, value: u64) {
## Resources

There are 4 resource types:
- **Public Fungible** β€” Interchangeable tokens (like ERC-20), amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens (like ERC-721), metadata visible on-chain
- **Public Fungible** β€” Interchangeable tokens, amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens, metadata visible on-chain
- **Confidential** β€” Fungible tokens with hidden amounts (Pedersen commitments)
- **Stealth** β€” Confidential UTXOs with hidden owners (TARI/tTARI is a stealth resource)

Expand Down
22 changes: 10 additions & 12 deletions docs/skills/amp/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
---
name: amp
description: Tari Ootle development instructions for Amp
description: "Scaffold, build, test, and deploy Tari Ootle templates (Rust β†’ WASM smart contracts) on Tari L2. Covers template authoring with #[template] macros, ResourceBuilder for fungible/NFT assets, Vault/Bucket lifecycle, transaction manifests, cross-component calls, access rules, client-side transaction building with ootle-rs, and local testing with tari_template_test_tooling. Use when developing, debugging, or deploying Tari Ootle templates and components."
---

Use these instructions when building Tari Ootle templates (WASM smart contracts) and client applications. This document covers accurate APIs and patterns from the codebase.

## Overview

Tari Ootle is a decentralized application platform built on the Tari Layer 2 network. You build **templates** (smart contracts) in Rust, compile them to WASM (`wasm32-unknown-unknown`), publish them to the network, and interact with deployed **components** (instances of templates) via transactions.
Tari Ootle is a decentralized application platform on Tari Layer 2. Build **templates** (smart contracts) in Rust, compile to WASM (`wasm32-unknown-unknown`), publish to the network, and interact with deployed **components** via transactions.

**Key concepts:**
- **Template** β€” A Rust module annotated with `#[template]` that defines the logic and state structure. Compiled to WASM and deployed to the network.
- **Component** β€” A live instance of a template on-chain. Holds state (struct fields) and exposes public methods.
- **Resource** β€” A native digital asset (fungible token or non-fungible NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.
- **Vault** β€” An on-chain container that holds exactly one type of resource. Must be stored in a component before the function returns.
- **Bucket** β€” A temporary container for resources during a transaction. Used to move assets between vaults or to/from method calls.
- **Transaction** β€” A set of instructions (CallFunction, CallMethod, etc.) that are signed, submitted, and executed atomically.
- **Template** β€” Rust module annotated with `#[template]`; defines logic and state. Compiled to WASM and deployed.
- **Component** β€” Live instance of a template on-chain. Holds state and exposes public methods.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While simplifying the key concepts is good, removing the phrase 'Cannot be copied or accidentally destroyed' for Resource might omit a crucial piece of information. This is a fundamental principle of resource-oriented programming and is important for developers to understand the asset safety guarantees of the platform. I'd suggest re-adding it for clarity.

Suggested change
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.

- **Vault** β€” On-chain container for exactly one resource type. Must be stored in a component before the function returns.
- **Bucket** β€” Temporary container for resources during a transaction. Moves assets between vaults or method calls.
- **Transaction** β€” Set of instructions (CallFunction, CallMethod, etc.) signed, submitted, and executed atomically.

**Crate ecosystem:**

Expand Down Expand Up @@ -303,8 +301,8 @@ pub fn do_something(&mut self, value: u64) {
## Resources

There are 4 resource types:
- **Public Fungible** β€” Interchangeable tokens (like ERC-20), amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens (like ERC-721), metadata visible on-chain
- **Public Fungible** β€” Interchangeable tokens, amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens, metadata visible on-chain
- **Confidential** β€” Fungible tokens with hidden amounts (Pedersen commitments)
- **Stealth** β€” Confidential UTXOs with hidden owners (TARI/tTARI is a stealth resource)

Expand Down
22 changes: 10 additions & 12 deletions docs/skills/antigravity/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
---
name: antigravity
description: Tari Ootle development instructions for Antigravity
description: "Scaffold, build, test, and deploy Tari Ootle templates (Rust β†’ WASM smart contracts) on Tari L2. Covers template authoring with #[template] macros, ResourceBuilder for fungible/NFT assets, Vault/Bucket lifecycle, transaction manifests, cross-component calls, access rules, client-side transaction building with ootle-rs, and local testing with tari_template_test_tooling. Use when developing, debugging, or deploying Tari Ootle templates and components."
---

Antigravity should use these instructions to help developers create Tari Ootle templates (WASM smart contracts) and client transactions with accurate APIs and patterns from the codebase.

## Overview

Tari Ootle is a decentralized application platform built on the Tari Layer 2 network. You build **templates** (smart contracts) in Rust, compile them to WASM (`wasm32-unknown-unknown`), publish them to the network, and interact with deployed **components** (instances of templates) via transactions.
Tari Ootle is a decentralized application platform on Tari Layer 2. Build **templates** (smart contracts) in Rust, compile to WASM (`wasm32-unknown-unknown`), publish to the network, and interact with deployed **components** via transactions.

**Key concepts:**
- **Template** β€” A Rust module annotated with `#[template]` that defines the logic and state structure. Compiled to WASM and deployed to the network.
- **Component** β€” A live instance of a template on-chain. Holds state (struct fields) and exposes public methods.
- **Resource** β€” A native digital asset (fungible token or non-fungible NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.
- **Vault** β€” An on-chain container that holds exactly one type of resource. Must be stored in a component before the function returns.
- **Bucket** β€” A temporary container for resources during a transaction. Used to move assets between vaults or to/from method calls.
- **Transaction** β€” A set of instructions (CallFunction, CallMethod, etc.) that are signed, submitted, and executed atomically.
- **Template** β€” Rust module annotated with `#[template]`; defines logic and state. Compiled to WASM and deployed.
- **Component** β€” Live instance of a template on-chain. Holds state and exposes public methods.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While simplifying the key concepts is good, removing the phrase 'Cannot be copied or accidentally destroyed' for Resource might omit a crucial piece of information. This is a fundamental principle of resource-oriented programming and is important for developers to understand the asset safety guarantees of the platform. I'd suggest re-adding it for clarity.

Suggested change
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.

- **Vault** β€” On-chain container for exactly one resource type. Must be stored in a component before the function returns.
- **Bucket** β€” Temporary container for resources during a transaction. Moves assets between vaults or method calls.
- **Transaction** β€” Set of instructions (CallFunction, CallMethod, etc.) signed, submitted, and executed atomically.

**Crate ecosystem:**

Expand Down Expand Up @@ -303,8 +301,8 @@ pub fn do_something(&mut self, value: u64) {
## Resources

There are 4 resource types:
- **Public Fungible** β€” Interchangeable tokens (like ERC-20), amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens (like ERC-721), metadata visible on-chain
- **Public Fungible** β€” Interchangeable tokens, amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens, metadata visible on-chain
- **Confidential** β€” Fungible tokens with hidden amounts (Pedersen commitments)
- **Stealth** β€” Confidential UTXOs with hidden owners (TARI/tTARI is a stealth resource)

Expand Down
22 changes: 11 additions & 11 deletions docs/skills/claude-code/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
---
name: claude-code
description: Tari Ootle development instructions for Claude Code
name: tari-ootle-cc
description: "Scaffold, build, test, and deploy Tari Ootle templates (Rust β†’ WASM smart contracts) on Tari L2. Covers template authoring with #[template] macros, ResourceBuilder for fungible/NFT assets, Vault/Bucket lifecycle, transaction manifests, cross-component calls, access rules, client-side transaction building with ootle-rs, and local testing with tari_template_test_tooling. Use when developing, debugging, or deploying Tari Ootle templates and components."
---

## Overview

Tari Ootle is a decentralized application platform built on the Tari Layer 2 network. You build **templates** (smart contracts) in Rust, compile them to WASM (`wasm32-unknown-unknown`), publish them to the network, and interact with deployed **components** (instances of templates) via transactions.
Tari Ootle is a decentralized application platform on Tari Layer 2. Build **templates** (smart contracts) in Rust, compile to WASM (`wasm32-unknown-unknown`), publish to the network, and interact with deployed **components** via transactions.

**Key concepts:**
- **Template** β€” A Rust module annotated with `#[template]` that defines the logic and state structure. Compiled to WASM and deployed to the network.
- **Component** β€” A live instance of a template on-chain. Holds state (struct fields) and exposes public methods.
- **Resource** β€” A native digital asset (fungible token or non-fungible NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.
- **Vault** β€” An on-chain container that holds exactly one type of resource. Must be stored in a component before the function returns.
- **Bucket** β€” A temporary container for resources during a transaction. Used to move assets between vaults or to/from method calls.
- **Transaction** β€” A set of instructions (CallFunction, CallMethod, etc.) that are signed, submitted, and executed atomically.
- **Template** β€” Rust module annotated with `#[template]`; defines logic and state. Compiled to WASM and deployed.
- **Component** β€” Live instance of a template on-chain. Holds state and exposes public methods.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While simplifying the key concepts is good, removing the phrase 'Cannot be copied or accidentally destroyed' for Resource might omit a crucial piece of information. This is a fundamental principle of resource-oriented programming and is important for developers to understand the asset safety guarantees of the platform. I'd suggest re-adding it for clarity.

Suggested change
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.

- **Vault** β€” On-chain container for exactly one resource type. Must be stored in a component before the function returns.
- **Bucket** β€” Temporary container for resources during a transaction. Moves assets between vaults or method calls.
- **Transaction** β€” Set of instructions (CallFunction, CallMethod, etc.) signed, submitted, and executed atomically.

**Crate ecosystem:**

Expand Down Expand Up @@ -301,8 +301,8 @@ pub fn do_something(&mut self, value: u64) {
## Resources

There are 4 resource types:
- **Public Fungible** β€” Interchangeable tokens (like ERC-20), amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens (like ERC-721), metadata visible on-chain
- **Public Fungible** β€” Interchangeable tokens, amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens, metadata visible on-chain
- **Confidential** β€” Fungible tokens with hidden amounts (Pedersen commitments)
- **Stealth** β€” Confidential UTXOs with hidden owners (TARI/tTARI is a stealth resource)

Expand Down
22 changes: 10 additions & 12 deletions docs/skills/github-copilot/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
---
name: github-copilot
description: Tari Ootle development instructions for GitHub Copilot
description: "Scaffold, build, test, and deploy Tari Ootle templates (Rust β†’ WASM smart contracts) on Tari L2. Covers template authoring with #[template] macros, ResourceBuilder for fungible/NFT assets, Vault/Bucket lifecycle, transaction manifests, cross-component calls, access rules, client-side transaction building with ootle-rs, and local testing with tari_template_test_tooling. Use when developing, debugging, or deploying Tari Ootle templates and components."
---

You are assisting with development on the **Tari Ootle** platform β€” a decentralized application layer built on Tari L2. Templates (smart contracts) are written in Rust, compiled to WASM (`wasm32-unknown-unknown`), and deployed to the network.

## Overview

Tari Ootle is a decentralized application platform built on the Tari Layer 2 network. You build **templates** (smart contracts) in Rust, compile them to WASM (`wasm32-unknown-unknown`), publish them to the network, and interact with deployed **components** (instances of templates) via transactions.
Tari Ootle is a decentralized application platform on Tari Layer 2. Build **templates** (smart contracts) in Rust, compile to WASM (`wasm32-unknown-unknown`), publish to the network, and interact with deployed **components** via transactions.

**Key concepts:**
- **Template** β€” A Rust module annotated with `#[template]` that defines the logic and state structure. Compiled to WASM and deployed to the network.
- **Component** β€” A live instance of a template on-chain. Holds state (struct fields) and exposes public methods.
- **Resource** β€” A native digital asset (fungible token or non-fungible NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.
- **Vault** β€” An on-chain container that holds exactly one type of resource. Must be stored in a component before the function returns.
- **Bucket** β€” A temporary container for resources during a transaction. Used to move assets between vaults or to/from method calls.
- **Transaction** β€” A set of instructions (CallFunction, CallMethod, etc.) that are signed, submitted, and executed atomically.
- **Template** β€” Rust module annotated with `#[template]`; defines logic and state. Compiled to WASM and deployed.
- **Component** β€” Live instance of a template on-chain. Holds state and exposes public methods.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While simplifying the key concepts is good, removing the phrase 'Cannot be copied or accidentally destroyed' for Resource might omit a crucial piece of information. This is a fundamental principle of resource-oriented programming and is important for developers to understand the asset safety guarantees of the platform. I'd suggest re-adding it for clarity.

Suggested change
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`.
- **Resource** β€” Native digital asset (fungible token or NFT). Created with `ResourceBuilder`. Cannot be copied or accidentally destroyed.

- **Vault** β€” On-chain container for exactly one resource type. Must be stored in a component before the function returns.
- **Bucket** β€” Temporary container for resources during a transaction. Moves assets between vaults or method calls.
- **Transaction** β€” Set of instructions (CallFunction, CallMethod, etc.) signed, submitted, and executed atomically.

**Crate ecosystem:**

Expand Down Expand Up @@ -303,8 +301,8 @@ pub fn do_something(&mut self, value: u64) {
## Resources

There are 4 resource types:
- **Public Fungible** β€” Interchangeable tokens (like ERC-20), amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens (like ERC-721), metadata visible on-chain
- **Public Fungible** β€” Interchangeable tokens, amounts visible on-chain
- **Public Non-Fungible** β€” Unique tokens, metadata visible on-chain
- **Confidential** β€” Fungible tokens with hidden amounts (Pedersen commitments)
- **Stealth** β€” Confidential UTXOs with hidden owners (TARI/tTARI is a stealth resource)

Expand Down
Loading