{"adoption": {"forks": 122, "observed_at": "2026-08-28T04:05:52.610011+00:00", "stars": 1907}, "canonical_url": "https://ross.abutalabs.com/products/packwerk", "card": {"archived": false, "artifact_type": "library", "description": "Good things come in small packages.", "domain": ["developer-tools", "web-development", "backend"], "enriched": true, "function": ["linter", "developer-tools", "cli"], "health_score": 100, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Shopify/packwerk"], "name": "Shopify/packwerk", "platform": ["ruby", "cli"], "pushed_at": "2026-08-26T01:36:53+00:00", "repo": "Shopify/packwerk", "stars": 1907, "tags": ["modularization", "architecture-boundaries", "rails", "code-structure", "static-analysis"], "topics": [], "urls": [], "use_cases": ["enforce package boundaries in a rails monolith", "modularize a large ruby codebase", "detect cross-package constant references", "define public APIs for ruby packages", "prevent dependency violations between modules", "gradually split a rails app into packages"], "what_it_is": "Packwerk is a Ruby gem from Shopify that enforces architectural boundaries and modularization in Rails applications by grouping files into packages and checking constant references against package dependencies. It helps large existing codebases become more modular incrementally without blocking development.", "when_to_avoid": ["your project is not Ruby or doesn't use Zeitwerk autoloading", "you need a general-purpose dependency graph visualizer rather than enforcement", "your codebase is small enough that modular boundaries add overhead without benefit"], "when_to_choose": ["you maintain a large Rails 6+ app using Zeitwerk and want enforced modularity", "you want to catch boundary violations in CI before code review", "you're incrementally decomposing a monolith into packages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/packwerk", "repo": "Shopify/packwerk", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.610011+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:11:14.972987+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb0328791e23c42e4e7864ee0261c3d8de716ce74a1179882771067db0834508", "fetched_at": "2026-08-28T04:05:52.610011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shopify/packwerk"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 67}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2170, "days_push": 8, "days_rel": 8, "gap_med": 199, "n_releases_24m": 4}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}