{"id":50219613,"url":"https://github.com/cowprotocol/bundles-template","last_synced_at":"2026-05-26T11:02:32.356Z","repository":{"id":359295602,"uuid":"1245376849","full_name":"cowprotocol/bundles-template","owner":"cowprotocol","description":"Starting point for protocols looking to integrate CoW Protocol with Atomic Bundles","archived":false,"fork":false,"pushed_at":"2026-05-21T07:40:55.000Z","size":344,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T14:50:42.579Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Just","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cowprotocol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T06:59:36.000Z","updated_at":"2026-05-21T06:59:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cowprotocol/bundles-template","commit_stats":null,"previous_names":["cowprotocol/bundles-template"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cowprotocol/bundles-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowprotocol%2Fbundles-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowprotocol%2Fbundles-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowprotocol%2Fbundles-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowprotocol%2Fbundles-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cowprotocol","download_url":"https://codeload.github.com/cowprotocol/bundles-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowprotocol%2Fbundles-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33517124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-26T11:02:09.860Z","updated_at":"2026-05-26T11:02:32.350Z","avatar_url":"https://github.com/cowprotocol.png","language":"Just","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Contract Template\n\nTemplate for creating new smart contract projects.\n\nThis project is meant to be used as a templated during the creation of new Github repositories (will show in the `Create a new repository \u003e Configuration \u003e Start with a template` selector).\n\nIt will contain some useful configuration files and scripts, that can be used also with existing projects (manually copied).\n\n## Usage\n\n### Just commands\n\nInstall `just` on your machine, then run `just help` to see the available commands.\n\n### Build\n\n```shell\njust build\n```\n\nProject contracts should keep simple caret pragmas like `^0.8` so downstream projects can import them with older compatible Solidity 0.8 compilers.\n\nIf specific features are needed (like PUSH0 in 0.8.20 for gas optimizations or transient storage/better `via-ir` in 0.8.34), you can use it but make sure to keep the caret (`^`).\n\n### Test\n\n```shell\njust test\n```\n\n### Format\n\n```shell\njust fmt\n```\n\n### Local tooling\n\nFoundry should be installed locally and pinned to `v1.7.0`.\nCI uses the same Foundry version.\n\nInstall Foundry with:\n\n```shell\nfoundryup --install v1.7.0\n```\n\nCheck that the expected version is active with:\n\n```shell\nforge --version\n```\n\nThe output should end in `v1.7.0`.\n\nSolhint and Slither are pinned as local development dependencies under `dev/`.\n\nThe pnpm and uv setups wait 7 days before installing newly released packages, matching CoW repos and giving more review time than a 2-day delay.\n\nInstall them with:\n\n```shell\npnpm --dir dev install --frozen-lockfile\nuv sync --project dev --locked\n```\n\nRun the pinned local tools through `just`. `just lint` checks Forge formatting and Solhint, and `just slither` checks contracts under `src`.\n\n```shell\njust lint\njust slither\n```\n\n### Pre-commit hooks\n\nInstall the hooks with:\n\n```shell\njust register-hooks\n```\n\nThe pre-push hooks run `just lint`, `just slither`, and `just coverage-check`.\nYou can bypass hooks with `--no-verify`, but CI remains the source of truth.\n\nThe root config applies to all Solidity files.\nThe `script/` and `test/` folders have a small override config for their own style.\n\n### Gas Snapshots\n\n```shell\njust snapshot\n```\n\n### Deploy\n\n```shell\nforge script script/Counter.s.sol:CounterScript --rpc-url \u003cyour_rpc_url\u003e --private-key \u003cyour_private_key\u003e\n```\n\n## New project creation checklist\n\nThe following operations need to be performed after this repository has been created.\n\n- [ ] Discuss and confirm the project license with the team lead before starting implementation work. You must set this up before writing project code.\n  - [ ] The license is very likely going to be one of the following:\n    - [ ] `MIT OR Apache-2.0` for projects with low strategic relevance (included by default in the template).\n    - [ ] `LGPL-3.0-or-later` for projects with high strategic relevance.\n    - [ ] In some cases, a different license may be needed.\n  - [ ] If it's `MIT OR Apache-2.0`, the license is already included. Otherwise, remove the existing license files and add the selected license as a file in the repository root.\n  - [ ] Update `dev/package.json` with the selected license.\n  - [ ] Update each Solidity smart contract's `SPDX-License-Identifier` with the selected license.\n- [ ] In GitHub repo settings:\n  - [ ] Add a new ruleset called \"Protected branches\" and include the following changes:\n    - Enforcement status: active\n    - Target branches: Include default branch\n    - Require linear history\n    - Require a pull request before merging\n      - Required approvals: 1\n      - Allowed merge methods: Squash\n    - Block force pushes\n  - [ ] In General → Features → Pull requests:\n    - Select \"Pull request title and description\" in \"Default commit message\" option\n    - Unckeck \"Allow merge commits\" option\n    - Check \"Allow auto-merge\" option\n- [ ] Run `forge install` to install the dependencies. This will create a new `foundry.lock` file which you should commit to the project\n- [ ] Set up [Local tooling](#local-tooling) so Solhint and Slither use the pinned project versions\n- [ ] Update the project details in `dev/package.json`, including `name` and `description`\n- [ ] Make sure you use the [latest version of Solidity](https://github.com/argotorg/solidity/releases) by updating the `solc` version in `foundry.toml`\n- [ ] Once all entries in this list are checked, delete this section from the readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowprotocol%2Fbundles-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcowprotocol%2Fbundles-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowprotocol%2Fbundles-template/lists"}