Repository navigation
Modernize tooling and CI to match seaport - #8
Merged
Merged
Conversation
Pinned lint tools from GitHub releases (Biome, taplo, lefthook, shellcheck, shfmt, actionlint), forge fmt/lint with src/ excluded, a SHA-256 guard on src/, Foundry 1.9.0, actions pinned by SHA, npm publish with provenance, AGENTS.md, and a refreshed README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The concurrency group does not guarantee FIFO ordering, so an older run can execute last and force the daily tag back to an older commit without a branch-tip check.
1 open issue
What changed in this PR
Modernizes seaport-types tooling and CI to align with seaport while preserving the Solidity sources and dependency-free npm package.
Changes:
- Adds pinned lint tools, formatting configuration, and checksum protection for frozen Solidity sources.
- Enables build and lint checks on pull requests and main, and updates publishing and tagging workflows.
- Refreshes installation instructions and contributor guidance.
| File | Description |
|---|---|
yarn.lock |
Removes the empty lockfile. |
scripts/lint.sh |
Adds local check, fix, and freeze commands. |
scripts/install-tools.sh |
Installs pinned, checksum-verified lint tools. |
scripts/frozen-contracts.sha256 |
Records checksums for frozen Solidity sources. |
README.md |
Updates package, installation, and development documentation. |
package.json |
Uses repository metadata compatible with npm provenance. |
lefthook.yml |
Adds optional pre-commit formatting hooks. |
foundry.toml |
Excludes frozen sources from formatting and linting. |
biome.json |
Configures formatting and lint rules. |
AGENTS.md |
Documents source restrictions and contributor commands. |
.taplo.toml |
Configures TOML formatting. |
.gitignore |
Allows dotfiles while ignoring installed tools. |
.github/workflows/test.yml |
Enables automated build and lint checks. |
.github/workflows/tag.yml |
Updates daily tagging and concurrency configuration. |
.github/workflows/publish.yml |
Updates Node and enables npm provenance. |
.github/pull_request_template.md |
Adds contribution prompts and source restrictions. |
.github/actions/setup-foundry/action.yml |
Adds reusable, cached Foundry setup. |
.editorconfig |
Defines shared editor formatting settings. |
Review effort: Balanced
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Brings this repo's tooling in line with seaport after its modernization (#1427 to #1431). No
.solfile changes:git diff origin/main -- src/is empty.The package stays on npm, since seaport-core and seaport-js depend on
seaport-types@1.6.3. It still has no dependencies.Lint tooling
scripts/install-tools.shis copied from seaport. It installs Biome, taplo, lefthook, shellcheck, shfmt, and actionlint into.tools/binfrom each tool's GitHub release, checked against a pinned SHA-256. Nothing comes from a package registry.scripts/lint.sh check|fix|freezeruns what CI runs.src/is compiled into the deployed Seaport 1.6 bytecode through seaport-core, sofoundry.tomlexcludes it fromforge fmtandforge lint.lefthook.ymlrepeats the exclude, becauseforge fmtwith explicit file paths ignores globs in[fmt] ignore.scripts/frozen-contracts.sha256pins every file insrc/, and the lint job fails if one changes.lint_on_build = falsedrops the "AST source not found" warnings Foundry 1.9.0 printed on every build for the constants-only files..editorconfig,.taplo.toml,biome.json, and an optional lefthook pre-commit hook.CI
test.ymlnow runs on pushes to main and on pull requests (it was manual only). It has a build job (forge build --sizes) and a lint job. The oldforge teststep is gone because the repo has no tests, and theciprofile it set never existed.setup-foundrycomposite action seaport uses.permissions:block, andtest.ymlcancels superseded PR runs.publish.ymlkeeps therelease: createdtrigger and theNPM_TOKENsecret. It now uses Node 26 and runsnpm publish --provenance --access publicwithid-token: write.package.jsongets the object form ofrepository, which npm checks against the workflow's repo for provenance.tag.ymlkeeps the same tag name and branches. It drops the deprecated::set-outputcommands and pushes only the new tag instead of--tags.Other
AGENTS.mdwith the rule aboutsrc/, commands, and publishing. No CLAUDE.md.stale.yml: the repo has no open issues.yarn.lockand the.*line in.gitignore, which ignored every new dotfile.Verification
scripts/lint.sh checkpasses locally with Foundry 1.9.0.forge buildcompiles all 35 files.src/file makes the frozen-source check fail.npm pack --dry-runlists the same 38 files as before: the 35 sources, LICENSE, README.md, and package.json.publish.ymlandtag.ymlonly run on a release or a push to main, so this PR doesn't exercise them.🤖 Generated with Claude Code