{"id":50514245,"url":"https://github.com/resq-software/dev","last_synced_at":"2026-06-02T22:32:10.606Z","repository":{"id":346092293,"uuid":"1188479015","full_name":"resq-software/dev","owner":"resq-software","description":"Developer setup for ResQ — one command to get started","archived":false,"fork":false,"pushed_at":"2026-04-16T22:37:34.000Z","size":115,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T00:33:33.851Z","etag":null,"topics":["bootstrapping","dev-environment","developer-experience","git-hooks","nix-flakes","reproducible-builds","shell-scripting"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/resq-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-22T06:05:08.000Z","updated_at":"2026-04-16T22:37:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/resq-software/dev","commit_stats":null,"previous_names":["resq-software/dev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/resq-software/dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resq-software%2Fdev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resq-software%2Fdev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resq-software%2Fdev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resq-software%2Fdev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resq-software","download_url":"https://codeload.github.com/resq-software/dev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resq-software%2Fdev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33840213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bootstrapping","dev-environment","developer-experience","git-hooks","nix-flakes","reproducible-builds","shell-scripting"],"created_at":"2026-06-02T22:32:09.907Z","updated_at":"2026-06-02T22:32:10.594Z","avatar_url":"https://github.com/resq-software.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e🛠 ResQ Dev Setup\u003c/h1\u003e\n  \u003cp\u003e\u003cem\u003eOne command to bootstrap the entire ResQ development environment.\u003c/em\u003e\u003c/p\u003e\n\n  [![License](https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square)](LICENSE)\n  [![Shell](https://img.shields.io/badge/Shell-bash-4EAA25?style=flat-square)](#)\n  [![Nix](https://img.shields.io/badge/Nix-flakes-5277C3?style=flat-square)](#)\n  [![Make](https://img.shields.io/badge/GNU-Make-A42E2B?style=flat-square)](#)\n\u003c/div\u003e\n\n---\n\n## ⚡ Onboarding in one curl\n\n```bash\n# Default clone target is ~/resq; override with RESQ_DIR=...\ncurl -fsSL https://raw.githubusercontent.com/resq-software/dev/main/install.sh | sh\n```\n\nWhat happens, in order:\n\n1. Installs `gh` (GitHub CLI) if missing\n2. Authenticates with GitHub\n3. Installs [Nix](https://nixos.org) via the [Determinate Systems installer](https://github.com/DeterminateSystems/nix-installer) for reproducible toolchains\n4. Lets you choose which repo to clone\n5. Runs `nix develop` to build the dev environment\n6. Installs the canonical git hooks (delegating to `resq pre-commit`)\n7. Offers to scaffold a repo-type-specific `local-pre-push` (auto-detects Rust / Python / Node / .NET / C++ / Nix)\n\nRun unattended (CI / provisioning):\n\n```bash\nREPO=npm YES=1 RESQ_DIR=/srv/work \\\n  curl -fsSL https://raw.githubusercontent.com/resq-software/dev/main/install.sh | sh\n```\n\n---\n\n## 📦 Repositories\n\n| Repo | What | Languages |\n|---|---|---|\n| [`programs`](https://github.com/resq-software/programs) | Solana on-chain programs | Rust (Anchor) |\n| [`dotnet-sdk`](https://github.com/resq-software/dotnet-sdk) | .NET client libraries | C# |\n| [`pypi`](https://github.com/resq-software/pypi) | Python packages (MCP + DSA) | Python |\n| [`crates`](https://github.com/resq-software/crates) | Rust workspace (CLI + DSA + `resq` binary) | Rust |\n| [`npm`](https://github.com/resq-software/npm) | TypeScript packages (UI + DSA) | TypeScript |\n| [`vcpkg`](https://github.com/resq-software/vcpkg) | C++ libraries | C++ |\n| [`viz`](https://github.com/resq-software/viz) | Visualization library (.NET) | C# |\n| [`landing`](https://github.com/resq-software/landing) | Marketing site | TypeScript |\n| [`docs`](https://github.com/resq-software/docs) | Documentation site | MDX |\n| [`dev`](https://github.com/resq-software/dev) | This repo — install scripts and onboarding | Shell / PowerShell |\n\nPublic repos sync to the monorepo automatically.\n\n---\n\n## 🛠 Standalone scripts\n\nEach script can be run on its own without going through the full onboarding flow.\n\n| Script | Use case | Bootstrap |\n|---|---|---|\n| `install.sh` / `install.ps1` | Full onboarding — installs prereqs, clones a repo, sets up dev env + hooks | `curl -fsSL .../install.sh \\| sh` |\n| `install-hooks.sh` / `install-hooks.ps1` | Drop the canonical git hooks into any repo. Asks to scaffold `local-pre-push` if `resq` is on PATH | `cd \u003crepo\u003e \u0026\u0026 curl -fsSL .../install-hooks.sh \\| sh` |\n| `install-resq.sh` | Install the `resq` CLI binary from the latest GitHub Release (SHA256-verified). Falls back to `cargo install --git` if no release asset matches the host platform | `curl -fsSL .../install-resq.sh \\| sh` |\n\nCommon env vars across all of them:\n- `RESQ_DEV_REF=\u003csha\\|tag\u003e` — pin to a specific revision instead of rolling `main`\n- `YES=1` — skip prompts (CI / provisioning)\n- `GIT_HOOKS_SKIP=1` — disable installed hooks for a session\n- `RESQ_SKIP_LOCAL_SCAFFOLD=1` — opt out of the `local-pre-push` scaffold prompt\n\n---\n\n## 🚀 Quick Start per Repo\n\n| Repo | Language | Setup |\n|------|----------|-------|\n| programs | Rust / Anchor | `anchor build` |\n| dotnet-sdk | C# / .NET 9 | `dotnet restore` |\n| pypi | Python | `uv sync` |\n| crates | Rust | `cargo build` |\n| npm | TypeScript | `bun install` |\n| vcpkg | C++ | `cmake --preset default` |\n| viz | C# / .NET 9 | `dotnet restore` |\n| landing | Next.js | `bun install \u0026\u0026 bun dev` |\n| docs | MDX / Mintlify | `mintlify dev` |\n\n\n## Contributor guide\n\nEvery ResQ repo ships an `AGENTS.md` at the root — the canonical plain-text dev guide. That's where the build/test/lint commands, architecture notes, and standards for that specific repo live. Read it first.\n\nOrg-wide guidance (onboarding, hooks contract, commit format, PR process) lives in the `.github` org repo: [CONTRIBUTING.md](https://github.com/resq-software/.github/blob/main/CONTRIBUTING.md), [SECURITY.md](https://github.com/resq-software/.github/blob/main/SECURITY.md), [CODE_OF_CONDUCT.md](https://github.com/resq-software/.github/blob/main/CODE_OF_CONDUCT.md). Every public repo falls back to those automatically.\n\n\n## 🔧 Toolchain\n\nEverything is pinned via Nix flakes. No \"works on my machine\" issues.\n\n| Language | Tools |\n|---|---|\n| Rust | `rustc`, `cargo`, `clippy`, `rustfmt`, `cargo-deny` |\n| TypeScript | `bun`, `node`, `turbo` |\n| Python | `python 3.12`, `uv`, `ruff`, `mypy` |\n| C# | `dotnet 9` |\n| C++ | `gcc`, `cmake`, `clang-format` |\n| Protobuf | `buf`, `protoc` |\n| Solana | `solana-cli`, `anchor` |\n\n## ✅ Quality gates — canonical git hooks\n\nSix hook shims live in [`resq-software/crates`](https://github.com/resq-software/crates/tree/master/crates/resq-cli/templates/git-hooks) — embedded in the `resq` binary *and* served at a stable raw URL. `install-hooks.sh` picks the best path automatically:\n\n1. **`resq` on PATH** → calls `resq hooks install`, which scaffolds the 6 canonical hooks from the templates embedded in the binary. Offline, versioned with the installed `resq`.\n2. **No `resq`** → falls back to `curl` from `resq-software/crates/master/.../templates/git-hooks/`.\n\nThe hooks delegate logic back to the `resq` binary (`resq pre-commit`, etc.), so updates roll out via `cargo install --git` (or `install-resq.sh`) without editing every repo.\n\n| Hook | What it gates |\n|---|---|\n| `pre-commit` | `resq pre-commit` — copyright, secrets, audit, polyglot format |\n| `commit-msg` | Conventional Commits + `!` marker; blocks `WIP:` / `fixup!` / `squash!` on main |\n| `prepare-commit-msg` | Prepends `[TICKET-123]` from branch name |\n| `pre-push` | Force-push guard, branch-naming convention (`feat/`, `fix/`, …, `changeset-release/*` allowed) |\n| `post-checkout` / `post-merge` | Notifies on lock-file changes (Cargo, bun, uv, flake) |\n\nEach hook then dispatches to `.git-hooks/local-\u003chook-name\u003e` (if executable) — the **only** place a repo commits hook customization. Generate one with the right language template:\n\n```bash\nresq hooks scaffold-local --kind auto    # detects rust/python/node/dotnet/cpp/nix\n```\n\n`resq hooks doctor` reports drift, `resq hooks update` re-syncs from the embedded canonical, `resq hooks status` prints a one-line shell-friendly summary.\n\nThe canonical content lives in exactly one place: [`crates/resq-cli/templates/git-hooks/`](https://github.com/resq-software/crates/tree/master/crates/resq-cli/templates/git-hooks). The crates repo's own `.git-hooks/` (for dog-fooding) is kept identical via `hooks-sync.yml`. The `dev/` repo used to ship a third copy and was retired in Phase 4 — `install-hooks.sh` now fetches from the crates source (or lets `resq hooks install` do it offline). Bats + Rust integration tests cover the hook behavior end-to-end.\n\n## 📄 License\n\nApache License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresq-software%2Fdev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fresq-software%2Fdev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresq-software%2Fdev/lists"}