arckit
April 16, 2026 ยท View on GitHub
arckit is the ARC repository validator and scaffolding CLI.
Requirements
- Go
1.26.1
Generic Markdown/YAML/text hygiene for this repository is handled by the
repository-root .pre-commit-config.yaml, not by arckit. That includes
advisory Markdown/YAML spelling checks and advisory external link checks.
arckit fmt is limited to ARC Markdown files under ARCs/arc-####.md and
adoption summaries under adoption/arc-####.yaml. It rewrites deterministic
ARC/adoption-specific structure only and does not overlap with the repository
pre-commit hooks on generic YAML formatting or linting.
If fmt reports invalid ARC front matter YAML, that is still an arckit
concern: the repository YAML hooks do not inspect YAML embedded in ARC Markdown
front matter.
Within that scope, fmt can sort numeric ARC relationship lists, reorder
canonical ARC level-2 sections, and reorder canonical adoption-summary mapping
keys such as top-level fields plus reference-implementation, adoption, and
summary.
arckit owns ARC-specific metadata, section, reference, maturity, and body-link
policy, including rejecting absolute links back into repository content such as
ARCs or assets. External raw HTML anchors are allowed.
Repo-Local Config
arckit auto-discovers an optional repository-root .arckit.jsonc file for all
validate commands. The file is JSON with comments and supports only repo-local
suppression rules. There is no --config flag and no user-local configuration.
Supported keys:
ignoreArcs: ignore an ARC number across its ARC, adoption, and asset footprintignoreRules: ignore a rule everywhereignoreByArc: ignore rules for exact ARC numbers or inclusive ARC ranges like50-60
Migration suppressions are allowed temporarily when the repository is moving historical ARC files to a new canonical encoding or ARC body/reference policy.
Example:
{
"ignoreArcs": [42],
"ignoreRules": ["R:020"],
"ignoreByArc": {
"43": ["R:009", "R:013"],
"50-60": ["R:011"]
}
}
Invalid .arckit.jsonc content stops validation with exit code 2.
Common Commands
cd arckit
find . -name '*.go' -print0 | xargs -0 gofmt -w -s
go vet ./...
go test ./...
go build ./cmd/arckit
go run ./cmd/arckit fmt ../ARCs/arc-0000.md
go run ./cmd/arckit summary repo ..
Examples
cd arckit
go run ./cmd/arckit validate repo ..
go run ./cmd/arckit summary repo ..
go run ./cmd/arckit validate arc ../ARCs/arc-0000.md
go run ./cmd/arckit validate arc \
--enforce-rule R:004 \
--enforce-rule R:008 \
--enforce-rule R:025 \
--enforce-rule R:032 \
../ARCs/arc-0000.md
go run ./cmd/arckit validate arc --ignore-config ../ARCs/arc-0000.md
go run ./cmd/arckit validate adoption ../adoption/arc-0042.yaml
go run ./cmd/arckit validate links ../ARCs/arc-0000.md
go run ./cmd/arckit fmt ../ARCs/arc-0000.md
validate adoption and validate repo both require the canonical vetted adopters
registry at ../adoption/vetted-adopters.yaml. Per-ARC adoption actor names must
be lower-kebab-case identifiers present in the matching registry category.
They also enforce that summary.adoption-readiness matches the tracked adopter
count thresholds.
When formatting adoption summaries, arckit fmt normalizes
summary.adoption-readiness from the tracked adopter count: low for fewer than
3 adopters, medium for 3-4 adopters, and high for 5 or more adopters.
summary repo writes a local markdown review artifact at ../arc-summary.md by
default for ARC Editor workflow use. It is a report generator, not a validation gate.