{"id":45136736,"url":"https://github.com/chenxin-yan/crust","last_synced_at":"2026-06-05T22:00:59.117Z","repository":{"id":339110356,"uuid":"1155861826","full_name":"chenxin-yan/crust","owner":"chenxin-yan","description":"A TypeScript-first, Bun-native CLI framework with composable modules.","archived":false,"fork":false,"pushed_at":"2026-05-06T09:35:07.000Z","size":3223,"stargazers_count":381,"open_issues_count":11,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T10:10:49.990Z","etag":null,"topics":["bun","bunjs","cli","framework","javascript","typescript"],"latest_commit_sha":null,"homepage":"https://crustjs.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chenxin-yan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"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-02-12T01:39:39.000Z","updated_at":"2026-05-06T09:35:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chenxin-yan/crust","commit_stats":null,"previous_names":["chenxin-yan/crust"],"tags_count":140,"template":false,"template_full_name":null,"purl":"pkg:github/chenxin-yan/crust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxin-yan%2Fcrust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxin-yan%2Fcrust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxin-yan%2Fcrust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxin-yan%2Fcrust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenxin-yan","download_url":"https://codeload.github.com/chenxin-yan/crust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxin-yan%2Fcrust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32922893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"online","status_checked_at":"2026-05-12T02:00:06.338Z","response_time":102,"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":["bun","bunjs","cli","framework","javascript","typescript"],"created_at":"2026-02-20T00:00:57.400Z","updated_at":"2026-05-13T11:02:12.994Z","avatar_url":"https://github.com/chenxin-yan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"assets/crust-logo.png\" alt=\"Crust logo\" width=\"120\"\u003e\n  \u003cbr\u003e\n  Crust\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003eA TypeScript-first, Bun-native CLI framework with composable modules.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/chenxin-yan/crust/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/@crustjs/crust\" alt=\"license\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/chenxin-yan/crust\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/chenxin-yan/crust\" alt=\"stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://crustjs.com\"\u003eWebsite \u0026 Docs\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"./CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://github.com/chenxin-yan/crust/issues\"\u003eIssues\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://discord.gg/sQF8hdN6Ht\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n## What is Crust?\n\nCrust is a modern CLI framework built specifically for TypeScript and Bun. It provides a modular architecture for building command-line tools with features like command routing, argument parsing, interactive prompts, validation, and persistence—all with first-class TypeScript support.\n\n## Who uses Crust?\n\n- [Nia CLI](https://github.com/nozomio-labs/nia-cli) by [Nozomio Labs](https://www.trynia.ai/)\n\n## Getting Started\n\n```sh\nbun create crust my-cli\ncd my-cli\nbun run dev\n```\n\n## Packages\n\n| Package                                                                | Description                                                                      | Version                                                                                                   | Downloads                                                                                                        |\n| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| [`@crustjs/crust`](https://www.npmjs.com/package/@crustjs/crust)       | CLI tooling — build and distribute standalone executables                        | [![npm](https://img.shields.io/npm/v/@crustjs/crust)](https://www.npmjs.com/package/@crustjs/crust)       | [![downloads](https://img.shields.io/npm/dm/@crustjs/crust)](https://www.npmjs.com/package/@crustjs/crust)       |\n| [`@crustjs/core`](https://www.npmjs.com/package/@crustjs/core)         | Core: command definition, arg parsing, routing, plugins, errors                  | [![npm](https://img.shields.io/npm/v/@crustjs/core)](https://www.npmjs.com/package/@crustjs/core)         | [![downloads](https://img.shields.io/npm/dm/@crustjs/core)](https://www.npmjs.com/package/@crustjs/core)         |\n| [`@crustjs/plugins`](https://www.npmjs.com/package/@crustjs/plugins)   | Official plugins: help, version, autocomplete                                    | [![npm](https://img.shields.io/npm/v/@crustjs/plugins)](https://www.npmjs.com/package/@crustjs/plugins)   | [![downloads](https://img.shields.io/npm/dm/@crustjs/plugins)](https://www.npmjs.com/package/@crustjs/plugins)   |\n| [`@crustjs/style`](https://www.npmjs.com/package/@crustjs/style)       | Terminal styling foundation                                                      | [![npm](https://img.shields.io/npm/v/@crustjs/style)](https://www.npmjs.com/package/@crustjs/style)       | [![downloads](https://img.shields.io/npm/dm/@crustjs/style)](https://www.npmjs.com/package/@crustjs/style)       |\n| [`@crustjs/progress`](https://www.npmjs.com/package/@crustjs/progress) | Progress indicators for async CLI tasks                                          | [![npm](https://img.shields.io/npm/v/@crustjs/progress)](https://www.npmjs.com/package/@crustjs/progress) | [![downloads](https://img.shields.io/npm/dm/@crustjs/progress)](https://www.npmjs.com/package/@crustjs/progress) |\n| [`@crustjs/prompts`](https://www.npmjs.com/package/@crustjs/prompts)   | Interactive terminal prompts                                                     | [![npm](https://img.shields.io/npm/v/@crustjs/prompts)](https://www.npmjs.com/package/@crustjs/prompts)   | [![downloads](https://img.shields.io/npm/dm/@crustjs/prompts)](https://www.npmjs.com/package/@crustjs/prompts)   |\n| [`@crustjs/validate`](https://www.npmjs.com/package/@crustjs/validate) | Validation helpers                                                               | [![npm](https://img.shields.io/npm/v/@crustjs/validate)](https://www.npmjs.com/package/@crustjs/validate) | [![downloads](https://img.shields.io/npm/dm/@crustjs/validate)](https://www.npmjs.com/package/@crustjs/validate) |\n| [`@crustjs/store`](https://www.npmjs.com/package/@crustjs/store)       | DX-first, typed persistence for CLI apps with config/data/state/cache separation | [![npm](https://img.shields.io/npm/v/@crustjs/store)](https://www.npmjs.com/package/@crustjs/store)       | [![downloads](https://img.shields.io/npm/dm/@crustjs/store)](https://www.npmjs.com/package/@crustjs/store)       |\n| [`@crustjs/skills`](https://www.npmjs.com/package/@crustjs/skills)     | Agent skill generation from Crust command definitions                            | [![npm](https://img.shields.io/npm/v/@crustjs/skills)](https://www.npmjs.com/package/@crustjs/skills)     | [![downloads](https://img.shields.io/npm/dm/@crustjs/skills)](https://www.npmjs.com/package/@crustjs/skills)     |\n| [`@crustjs/create`](https://www.npmjs.com/package/@crustjs/create)     | Headless scaffolding engine for building create-xxx tools                        | [![npm](https://img.shields.io/npm/v/@crustjs/create)](https://www.npmjs.com/package/@crustjs/create)     | [![downloads](https://img.shields.io/npm/dm/@crustjs/create)](https://www.npmjs.com/package/@crustjs/create)     |\n| [`create-crust`](https://www.npmjs.com/package/create-crust)           | Project scaffolding tool                                                         | [![npm](https://img.shields.io/npm/v/create-crust)](https://www.npmjs.com/package/create-crust)           | [![downloads](https://img.shields.io/npm/dm/create-crust)](https://www.npmjs.com/package/create-crust)           |\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=chenxin-yan%2Fcrust\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=chenxin-yan/crust\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=chenxin-yan/crust\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=chenxin-yan/crust\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenxin-yan%2Fcrust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenxin-yan%2Fcrust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenxin-yan%2Fcrust/lists"}