{"id":49273747,"url":"https://github.com/jeremydev87/maximus","last_synced_at":"2026-05-07T06:04:39.595Z","repository":{"id":352120000,"uuid":"1213525187","full_name":"JeremyDev87/maximus","owner":"JeremyDev87","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-25T00:11:07.000Z","size":451,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-25T02:17:52.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/JeremyDev87.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","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},"funding":{"github":["JeremyDev87"]}},"created_at":"2026-04-17T13:26:34.000Z","updated_at":"2026-04-25T00:11:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JeremyDev87/maximus","commit_stats":null,"previous_names":["jeremydev87/maximus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JeremyDev87/maximus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremyDev87%2Fmaximus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremyDev87%2Fmaximus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremyDev87%2Fmaximus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremyDev87%2Fmaximus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JeremyDev87","download_url":"https://codeload.github.com/JeremyDev87/maximus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremyDev87%2Fmaximus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32265997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"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-04-25T15:04:13.636Z","updated_at":"2026-05-07T06:04:39.576Z","avatar_url":"https://github.com/JeremyDev87.png","language":"Rust","funding_links":["https://github.com/sponsors/JeremyDev87"],"categories":[],"sub_categories":[],"readme":"# Maximus\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/JeremyDev87/maximus/blob/master/LICENSE)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/JeremyDev87/maximus/blob/master/README.md\"\u003e한국어\u003c/a\u003e |\n  \u003ca href=\"https://github.com/JeremyDev87/maximus/blob/master/README.en.md\"\u003eEnglish\u003c/a\u003e |\n  \u003ca href=\"https://github.com/JeremyDev87/maximus/blob/master/README.zh-CN.md\"\u003e中文\u003c/a\u003e |\n  \u003ca href=\"https://github.com/JeremyDev87/maximus/blob/master/README.es.md\"\u003eEspañol\u003c/a\u003e |\n  \u003ca href=\"https://github.com/JeremyDev87/maximus/blob/master/README.ja.md\"\u003e日本語\u003c/a\u003e\n\u003c/p\u003e\n\nBring order to chaotic configs.\n\nMaximus is a CLI that audits scattered project configuration files, untangles conflicts and duplication, and helps teams keep their development environment organized.\n\nModern projects stand on top of countless config layers like `tsconfig`, `eslint`, `prettier`, `vite`, `jest`, `next.config`, and `.env`. Maximus restores order when that setup starts to drift.\n\n## Canonical Runtime\n\nMaximus now uses the Rust runtime as its canonical implementation.\n\n- The root `@jeremyfellaz/maximus` npm package is a thin launcher, and the actual execution path is delegated to platform-specific prebuilt Rust binaries.\n- The published npm wrapper and GitHub Action also target that Rust runtime path by default.\n- The published npm entrypoint is now `npx @jeremyfellaz/maximus audit`, `npx @jeremyfellaz/maximus doctor`, and `npx @jeremyfellaz/maximus fix`, while the installed binary name stays `maximus`.\n- `src/**/*.js` stays in the repository as frozen reference code for parity work and comparisons. When no native Rust runtime is available, it only serves as a limited compatibility fallback; it is no longer the primary implementation surface for new runtime or distribution behavior. Rust remains the canonical runtime for Maximus config files and Rust-only flags such as `--only`.\n- Historical rewrite planning notes may still exist in maintainer workflows, but public contributor guidance should follow tracked repo docs such as `CONTRIBUTING.md`, `docs/roadmap.md`, `docs/runtime-transition.md`, and `docs/architecture/checker-authoring.md`.\n\nSee the [runtime transition document](https://github.com/JeremyDev87/maximus/blob/master/docs/runtime-transition.md) for the transition boundary and contributor rules.\n\n## What It Does\n\n- Detects config conflicts\n- Detects duplicate config sources\n- Warns on outdated TypeScript options\n- Checks broken path alias wiring\n- Analyzes ESLint / Prettier conflicts\n- Checks missing or mismatched environment variables\n- Generates a recommended project-structure report\n\n## Commands\n\n```bash\nnpx @jeremyfellaz/maximus audit\nnpx @jeremyfellaz/maximus doctor\nnpx @jeremyfellaz/maximus fix\n```\n\n### `audit`\n\nInspects the current config state of a project and summarizes the highest-risk issues.\n\n### `doctor`\n\nA more explanatory diagnostic mode than `audit`, with prioritization and structural guidance.\n\n### `fix`\n\nApplies only safe automatic fixes.\n\nCurrent MVP auto-fixes:\n\n- Create `.env.example` from concrete `.env` files\n- Append missing keys to `.env.example`\n\n## Audit Signal Policy\n\n### Env contract\n\nMaximus treats contract files such as `.env.example` as shareable interfaces. The `env-example-secret` warning now considers both the key name and the value shape.\n\n- Keys such as `*_TOKEN`, `*_SECRET`, `*_PASSWORD`, `*_SERVICE_KEY`, `PRIVATE_KEY`, `*_API_KEY`, and `*_ACCESS_KEY` still warn when they contain non-placeholder values.\n- High-confidence secret value shapes still warn regardless of the key name, including `sk_live_`, `sk_test_`, `ghp_`, `github_pat_`, `xoxb-`, `xoxp-`, `xoxa-`, AWS `AKIA...`, Google `AIza...`, and private key blocks.\n- Public or config-like identifiers such as `NEXT_PUBLIC_*_CLIENT_ID`, URLs, repository names, labels, dates, percentages, and hours do not warn only because the value is long.\n- Blank values, `change-me`, `example`, `placeholder`, `your-*`, `localhost`, `127.0.0.1`, `true`, `false`, `0`, and `1` are treated as placeholders.\n\nEnv keys that are missing locally but injected by CI or hosting can be declared in `maximus.config.json` or `.maximusrc.json`.\n\n```json\n{\n  \"env\": {\n    \"ciInjectedKeys\": [\"GH_COLLECTOR_TOKEN\"],\n    \"optionalLocalKeys\": [\"NEXT_PUBLIC_OKTA_DOMAIN\"]\n  }\n}\n```\n\nBoth lists are exact keys excluded from `env-missing-concrete`. There is no glob or prefix matching contract, so write concrete key names instead of patterns such as `VERCEL_*`. Unknown config fields fail parsing instead of being ignored silently.\n\n### TypeScript config\n\nNo-op excludes that only repeat TypeScript's default excluded directories, such as `exclude: [\"node_modules\"]`, are hidden from the default audit output. Non-default excludes that carry project intent, such as `generated/**/*.ts` or `dist/**/*.d.ts`, still produce the existing `Info` finding when they do not remove any included files. Warnings for `include` patterns that match no files are unchanged.\n\n## Example Output\n\n```text\nMaximus audit\nTarget: /workspace/my-app\n\nStatus: attention needed\nFindings: 1 error, 2 warnings, 1 info\nFixes available: 1\n\nFindings\n- [error] Path alias target does not exist\n  file: packages/web/tsconfig.json\n  detail: @ui/* points to src/missing/*\n  hint: Update or remove the stale alias target.\n\n- [warn] Missing .env.example contract\n  file: .env\n  detail: Runtime env files exist, but .env.example is missing.\n  hint: Run `maximus fix` to create a blank contract file.\n```\n\n## GitHub Action\n\n\u003c!-- release-docs:start --\u003e\nAfter release tags are published, GitHub Actions use the same npm-wrapper entrypoint as well.\n\n```yaml\n- uses: JeremyDev87/maximus@\u003crelease-tag\u003e\n  with:\n    command: audit\n    path: .\n```\n\nDefault inputs:\n\n- `command`: `audit`, `doctor`, `fix`\n- `path`: project path to inspect, default `.`\n- `registry-url`: optional npm registry override for pre-release smoke or private registry validation\n- `release-tag`: replace this with a published release tag, for example `v0.1.0`\n\nMaintainers should use the [release operator runbook](https://github.com/JeremyDev87/maximus/blob/master/docs/release-operator-runbook.md) for alpha or stable releases and same-tag reruns. Release Drafter only refreshes draft notes on `master`; actual publication stays in the tag-driven release workflow.\n\u003c!-- release-docs:end --\u003e\n\n## Local Development\n\n```bash\nnpm test\ncargo test --workspace\nnode ./bin/maximus.js audit ./test/fixtures/clean-project\n```\n\n`node ./bin/maximus.js` prefers the Rust CLI built inside the repository (`target/debug/maximus`, `target/release/maximus`) and otherwise looks for an installed platform-specific Rust binary. If you do not have a local binary yet, build one with `cargo build -p maximus-cli`. When no Rust runtime is available, `src/**/*.js` still provides a compatibility fallback for the basic `audit` / `doctor` / `fix --dry-run` flow, but config auto-loading and Rust-only flags such as `--only`, `--skip`, and `--fail-on` still require the native Rust runtime.\n\nThat fallback path exists for compatibility verification and reference preservation. It is not the default development surface for new canonical runtime behavior.\n\n## Recommended For\n\n- Teams running monorepos or multi-package repositories\n- Teams struggling to manage many config files\n- Teams where new hires frequently get stuck during setup\n\n## Contributing\n\nContributions are welcome. If you want to add a new check, improve fix safety, or reduce false positives, start with [CONTRIBUTING.md](https://github.com/JeremyDev87/maximus/blob/master/CONTRIBUTING.md) and the [runtime transition document](https://github.com/JeremyDev87/maximus/blob/master/docs/runtime-transition.md) first, because the canonical runtime and distribution surface are now Rust-first and `src/**/*.js` is kept as frozen reference code.\n\nIf you want a quick map of where to start in the current repository, read the [contributor roadmap](https://github.com/JeremyDev87/maximus/blob/master/docs/roadmap.md), [good first issues](https://github.com/JeremyDev87/maximus/blob/master/docs/good-first-issues.md), and [checker ideas](https://github.com/JeremyDev87/maximus/blob/master/docs/checker-ideas.md). These docs separate the implemented surface from backlog-style ideas.\n\nFor release preparation, promotion, or rerun policy, use the [release operator runbook](https://github.com/JeremyDev87/maximus/blob/master/docs/release-operator-runbook.md).\n\n## Security\n\nIf you believe you found a security issue, please do not open a public issue first. Use [SECURITY.md](https://github.com/JeremyDev87/maximus/blob/master/SECURITY.md) for the private reporting path.\n\n## Sponsor\n\nIf Maximus helps your team keep config chaos under control, you can support ongoing maintenance via [GitHub Sponsors](https://github.com/sponsors/JeremyDev87).\n\n## License\n\nMaximus is released under the [MIT License](https://github.com/JeremyDev87/maximus/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremydev87%2Fmaximus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeremydev87%2Fmaximus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremydev87%2Fmaximus/lists"}