{"adoption": {"forks": 70, "observed_at": "2026-09-03T02:15:17.669158+00:00", "stars": 1166}, "canonical_url": "https://ross.abutalabs.com/products/squawk", "card": {"archived": false, "artifact_type": "cli-tool", "description": "🐘 Linter for Postgres migrations & SQL", "domain": ["databases", "developer-tools", "backend", "testing"], "enriched": true, "function": ["linter", "developer-tools", "cli", "ci-cd"], "health_score": 100, "homepage": "https://squawkhq.com", "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["sbdchd/squawk"], "name": "sbdchd/squawk", "platform": ["cli", "windows", "browser", "editor-plugin", "rust"], "pushed_at": "2026-09-02T23:56:25+00:00", "repo": "sbdchd/squawk", "stars": 1166, "tags": ["postgres", "sql", "migrations", "database-migrations", "schema-safety", "language-server", "github-action", "wasm", "linux", "macos", "docker"], "topics": ["rust", "postgres", "sql", "linter", "postgresql"], "urls": [], "use_cases": ["lint postgres migration files before deploying", "prevent downtime from ALTER TABLE statements that take exclusive locks", "check SQL for unsafe index creation without CONCURRENTLY", "enforce best practices like timestamptz and identity columns in schema", "add migration linting to pull requests via GitHub Actions", "lint SQL files in CI to catch risky schema changes"], "what_it_is": "Squawk is a linter for Postgres migrations and SQL that catches statements which could cause downtime, such as blocking locks or breaking schema changes. It ships as a CLI (npm, pip, binaries, Docker), a WASM playground, a VSCode extension with a language server, and GitHub Action/App integrations.", "when_to_avoid": ["you use a non-Postgres database whose locking behavior differs", "your migrations are generated by an ORM and you cannot act on raw SQL warnings", "you need a full SQL formatter or query optimizer rather than a safety linter"], "when_to_choose": ["your team runs Postgres with SQL migration files and wants to avoid migration-caused outages", "you want automated review comments on schema changes in pull requests", "you need editor feedback on SQL migrations via VSCode or a language server"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/squawk", "repo": "sbdchd/squawk", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.669158+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.650199+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9407052ee51398769ed1bfb94f360d87795e7c3a635f2c76709f7223ac5af1ce", "fetched_at": "2026-09-03T02:15:17.669158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sbdchd/squawk"}, {"content_hash": "7b6745813c839614cd8546b8eb4299663e4a52ee20be770f9ad80ec4fbfb6968", "fetched_at": "2026-08-29T12:36:54.728657+00:00", "kind": "homepage", "missing": false, "url": "https://squawkhq.com"}, {"content_hash": "365e4692701917ec0d7100d8da7b22f374569e53e7fe74b1f3a5c074b1c56681", "fetched_at": "2026-08-29T12:36:54.737607+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs"}, {"content_hash": "5749e386176863bc5ea4348a9fdb29eff5c8632d045541ef45322336d7a3a3d2", "fetched_at": "2026-08-29T12:36:54.739443+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/rules"}, {"content_hash": "dcf10cc2d000a5fcc210dccf37e471e0118e3c5cd96c8bda387fec2cb8ff0a9f", "fetched_at": "2026-08-29T12:36:54.741162+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/github_app"}, {"content_hash": "a8ff1cc5562f26dbe7fbbed077a106c7637ea690f557104350ed1abc08eb455e", "fetched_at": "2026-08-29T12:36:54.743065+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/ban-char-field"}, {"content_hash": "f99d98f89348ff347cdafefdc405a3ed11326c07366fa372aea8964cfefb040f", "fetched_at": "2026-08-29T12:36:54.744733+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-int"}, {"content_hash": "70fada2eeb32aa92ca963ec4cff534219412dec4b69286e3c810d02c6adca2e7", "fetched_at": "2026-08-29T12:36:54.746408+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-bigint-over-smallint"}, {"content_hash": "404287e6d0bd1bbc6a97dcc0e1502a384231ae15f082253778dd2eb8f58d7b55", "fetched_at": "2026-08-29T12:36:54.748105+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-identity"}, {"content_hash": "0f74b4f68b195604168fa6ef443075132229ab493e38d23f3b6da909fca52e0f", "fetched_at": "2026-08-29T12:36:54.749994+00:00", "kind": "site_page", "missing": false, "url": "https://squawkhq.com/docs/prefer-timestamptz"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 88}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2279, "days_push": 0, "days_rel": 1, "gap_med": 6, "n_releases_24m": 82}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}