MCPcopy Index your code
hub / github.com/algorandfoundation/ARCs

github.com/algorandfoundation/ARCs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,057 symbols 2,926 edges 98 files 260 documented · 25% 1 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Algorand Request for Comments (ARCs)

This is the official repository for Algorand Request for Comments (ARCs).

Responsibilities:

  • defining the canonical process / style guidelines / artifacts for ARCs,
  • enforcing the process and artifacts correctness,
  • storing ARCs artifacts and history.

Canonical Venues

Before submitting a new ARC, please refer to the ARC-0.

1. Pre-ARC discussion

Canonical venue: GitHub Discussions

Used for:

  • validating whether a new ARC is needed,
  • checking duplication with existing ARCs,
  • collecting early ecosystem feedback,
  • determining sponsor classification,
  • deciding whether a reference implementation is required.

2. ARC text

Canonical venue: one GitHub Pull Request per numbered ARC

Used for:

  • normative ARC content,
  • revisions to the specification,
  • status field updates,
  • corrections and clarifications.

3. ARC tracking

Canonical venue: one GitHub Issue per numbered ARC

Used for:

  • gate decisions,
  • checklist completion,
  • status transition records,
  • links to the reference implementation,
  • link to the adoption summary artifact,
  • confirmation that any newly named adopters were added to adoption/vetted-adopters.yaml,
  • confirmation that a Final ARC still has at least one tracked adopter in its adoption summary.

The ARC front matter is the canonical place for status, sponsor, implementation-required, implementation-url, and implementation-maintainer. Adoption summaries track implementation status and adoption evidence, not ARC-owned identity metadata.

4. Reference implementation

Canonical venue: dedicated implementation repository

Used for:

  • code,
  • tests,
  • examples,
  • conformance artifacts,
  • implementation issue tracking.

When sponsor: Foundation, the canonical implementation repository lives under the Algorand Foundation organization.

When sponsor: Ecosystem, the canonical implementation repository lives under the Algorand Ecosystem organization.

5. External discussion channels

Mailing lists, Discord, forums, calls, and social channels are non-canonical.

Any material conclusion reached outside GitHub must be copied into the relevant Pre-ARC discussion or ARC tracking issue.

Pull Request Templates

Use the appropriate PR template for the type of change:

Pull Request Validation

The repository CI/CD and release policy is defined in .github/ci-cd-release-specs.md.

ARC-Kit

arckit is the ARC repository validator and scaffolding CLI used by the pull request workflows for ARC-specific validation only.

Its fmt command is intentionally narrow: it rewrites deterministic ARC/adoption-specific structure in ARCs/arc-####.md and adoption/arc-####.yaml only. It does not replace any shared repository hygiene hooks or take over generic YAML formatting and linting.

Generic repository hygiene is handled separately through the repository-root .pre-commit-config.yaml. That shared hook config owns Markdown linting, whitespace/newline checks, YAML syntax/formatting, advisory Markdown/YAML spelling checks, and advisory external link reachability checks.

arckit owns ARC-specific metadata, section, reference, and body-link rules, including rejection of absolute links back into repository content such as ARCs or assets. External raw HTML anchors are allowed.

The canonical offline repository gate is:

arckit validate repo .

This is the authoritative machine validation check for ARC repository artifacts.

When present, the repository-root .arckit.jsonc file is applied automatically by all arckit validate ... commands. It supports repo-local suppressions for:

  • ignoreArcs: skip an ARC number across its ARC, adoption, and asset footprint;
  • ignoreRules: skip a rule everywhere;
  • ignoreByArc: skip rules for exact ARC numbers or inclusive ARC ranges.

Invalid .arckit.jsonc content fails validation.

During staged ARC validation migrations, .arckit.jsonc may temporarily suppress rules for historical ARC files. The PR workflow still re-enforces R:021 and R:031 through R:038 for changed ARC Markdown files before merge.

Example:

{
  "ignoreArcs": [42],
  "ignoreRules": ["R:020"],
  "ignoreByArc": {
    "43": ["R:009", "R:013"],
    "50-60": ["R:011"]
  }
}

To run the same validation locally, use both layers:

pre-commit run --all-files
cd arckit
go build ./cmd/arckit
go run ./cmd/arckit validate repo ..

The default blocking pre-commit hooks are fail-only. They report hygiene violations but do not rewrite files. Advisory hooks such as codespell and lychee run separately from that required surface.

If you want hook-managed autofix locally, run the manual-stage fixers explicitly and then rerun pre-commit run --all-files:

pre-commit run mixed-line-ending-fix --all-files --hook-stage manual
pre-commit run end-of-file-fix --all-files --hook-stage manual
pre-commit run trailing-whitespace-fix --all-files --hook-stage manual
pre-commit run yamlfmt-fix --all-files --hook-stage manual

Useful related commands:

pre-commit run codespell --all-files --hook-stage manual
pre-commit run lychee --all-files --hook-stage manual
cd arckit
go run ./cmd/arckit validate arc ../ARCs/arc-0000.md
go run ./cmd/arckit validate links ../ARCs/arc-0000.md
go run ./cmd/arckit fmt ../ARCs/arc-0000.md

If your pull request changes arckit/**, also run the tool validation checks:

cd arckit
find . -name '*.go' -print0 | xargs -0 gofmt -w -s
go vet ./...
go test ./...
go build ./cmd/arckit

Extension points exported contracts — how you extend this code

BinaryState (Interface)
(no doc) [2 implementers]
assets/arc-0059/contracts/clients/ControlledAddressClient.ts
CAIP122 (Interface)
(no doc)
assets/arc-0060/arc60wallet.api.ts
BinaryState (Interface)
(no doc) [2 implementers]
assets/arc-0059/contracts/clients/MutableARC59Client.ts
FIDO2ClientData (Interface)
(no doc)
assets/arc-0060/arc60wallet.api.ts
BinaryState (Interface)
(no doc) [2 implementers]
assets/arc-0059/contracts/clients/Arc59Client.ts
HDWalletMetadata (Interface)
(no doc)
assets/arc-0060/arc60wallet.api.ts
StdSigData (Interface)
(no doc)
assets/arc-0060/arc60wallet.api.ts
StdSigDataResponse (Interface)
(no doc)
assets/arc-0060/arc60wallet.api.ts

Core symbols most depended-on inside this repo

Contains
called by 83
arckit/internal/adoption/registry.go
_parse_abi_args
called by 48
assets/arc-0020/smart_contracts/artifacts/smart_asa/smart_asa_client.py
update
called by 44
assets/arc-0059/contracts/clients/MutableARC59Client.ts
ExecuteArgs
called by 32
arckit/internal/cli/root.go
asset_transfer
called by 29
assets/arc-0020/smart_contracts/smart_asa/contract.py
signData
called by 22
assets/arc-0060/arc60wallet.api.ts
Load
called by 21
arckit/internal/arc/load.go
asset_opt_in
called by 20
assets/arc-0020/smart_contracts/smart_asa/contract.py

Shape

Function 467
Method 433
Class 106
Struct 38
Interface 9
TypeAlias 2
Enum 1
Route 1

Languages

Python46%
Go35%
TypeScript19%

Modules by API surface

assets/arc-0020/smart_contracts/artifacts/smart_asa/smart_asa_client.py198 symbols
assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py94 symbols
assets/arc-0059/contracts/clients/MutableARC59Client.ts58 symbols
assets/arc-0059/contracts/clients/Arc59Client.ts55 symbols
assets/arc-0059/contracts/clients/ControlledAddressClient.ts39 symbols
assets/arc-0020/tests/test_asset_transfer.py32 symbols
arckit/internal/cli/root_test.go31 symbols
arckit/internal/cli/fmt.go31 symbols
assets/arc-0020/smart_contracts/smart_asa/contract.py27 symbols
arckit/internal/arc/validate.go25 symbols
arckit/internal/arc/arc_test.go22 symbols
assets/arc-0020/tests/conftest.py19 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add ARCs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact