Skip to content
Open
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
42 changes: 42 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# AGENTS.md

Guidance for coding agents working in `github.com/sourcegraph/go-jsonschema`, an
**experimental** Go library for reading JSON Schema (draft-07) documents and
generating Go types from them.

## Layout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

this repo is so small I wonder how useful documenting this is


- `jsonschema/` — core library: schema types, parsing, walking, URI handling.
- `compiler/` — generates Go source from JSON Schemas (parser, resolver,
generators); golden-file fixtures live in `compiler/testdata/`.
- `cmd/go-jsonschema-compiler/` — CLI that emits Go types from schema files.
- `internal/` — test helpers (`testutil`) and the official JSON Schema test
suite runner (`jsonschematestsuite`).
- `testdata/` — shared schema fixtures (e.g. the draft-07 meta-schema).

## Setup

The official test suite is vendored as a git submodule. After cloning, run:

```sh
git submodule update --init --recursive

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

this is useful information! Same with conventions below

```

## Build, test, run

```sh
go run ./cmd/go-jsonschema-compiler -pkg schema -o out.go schema.json
```

The CLI accepts one or more JSON Schema files; `-pkg` sets the emitted package
name and `-o` writes to a file instead of stdout.

## Conventions

- Standard Go formatting (`gofmt`); generated output is run through
`go/format`.
- Compiler tests are golden-file based: each `compiler/testdata/<case>/` holds a
`schema.json` input and a `want.go` expected output. Update the corresponding
`want.go` when intentionally changing generated code.
- CI (`.github/workflows/go-ci.yml`) checks out submodules recursively and runs
`go test ./...`; keep that command green.