{"id":18799574,"url":"https://github.com/l2silver/proofreadme","last_synced_at":"2025-06-23T05:05:31.582Z","repository":{"id":143011447,"uuid":"612943647","full_name":"l2silver/proofreadme","owner":"l2silver","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-16T01:44:33.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-23T05:02:48.880Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/l2silver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-12T13:01:48.000Z","updated_at":"2023-03-16T01:44:36.000Z","dependencies_parsed_at":"2023-05-21T00:45:26.143Z","dependency_job_id":null,"html_url":"https://github.com/l2silver/proofreadme","commit_stats":{"total_commits":3,"total_committers":1,"mean_commits":3.0,"dds":0.0,"last_synced_commit":"2ba0f576d4a9c691bbad792b337eb254d63c83a9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/l2silver/proofreadme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l2silver%2Fproofreadme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l2silver%2Fproofreadme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l2silver%2Fproofreadme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l2silver%2Fproofreadme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/l2silver","download_url":"https://codeload.github.com/l2silver/proofreadme/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l2silver%2Fproofreadme/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261417567,"owners_count":23155071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-07T22:15:47.304Z","updated_at":"2025-06-23T05:05:26.570Z","avatar_url":"https://github.com/l2silver.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proofreadme\nReadme enforcer/validation tool. Make sure your readme is still valid by running the logic in the readme.\n\n## Example\n````\n// README-example.md\n# Welcome\nWelcome to foobar. To setup and start the app use the following commands\n```\n# @prm-ignore-1 (ignores the next line in proofreadme validation)\nnpm install\n# @prm-wait-until-regex-output-/Listening on port/ (wait for response before allowing the next action to occur)\nnpm start\n```\nTo run e2e tests on the app, use\n```\n# @prm-final (when this command runs successfully, close all processes and exit with success signal)\nnpm run e2e\n```\n````\n---\n\n```\n$ proofreadme -p README-example.md -h # Welcome\n\u003e npm start ...\n\u003e npm run e2e ...\n\u003e README-example.md run successfully\n```\n\n### Explanation\nWe run proofreadme on the `README-example.md` file. First, we choose the header that we want to run commands from. We've chosen `### Welcome`. Then it runs the `npm start` command and waits for a specific output before allowing the next command to run. This is only necessary for tasks that we need to keep alive. When the next command `npm run e2e` finishes, we know that the process has executed successfully.\n\n## Why is proofreadme necessary?\nIt's not unusual for readme files to become stale, which makes it harder for new team members to get started on a project. By running proofreadme as a part of the ci process, there is some ability to reduce the likelihood of a stale readme file.\n\n## CLI commands\n\n### -h, --headers \u003cheaders\u003e (required)\nSelect which headers in the readme you would like to run the code segments from.\n\nExample:\n````\n# A Package\n## Setup\n```\nnpm install\n```\n## Advanced\n```\nnpx package --init\n```\n## Tests\n```\nnpm test\n```\n````\n---\n````\n$ proofreadme -h \"# A Package\"\n\u003e npm install\n\u003e npx package --init\n\u003e npm test\n````\n````\n$ proofreadme -h \"## Setup\" \"## Tests\"\n\u003e npm install\n\u003e npm test\n````\n\n### -p, --readme-path [path] (optional)\nProvide the path to the readme file. (By default, will look for `README.md`, `readme.md`, and `Readme.md`)\n\n````\n$ proofreadme -p ./READ-ME.md\n````\n\n## @prm-directives\n\n### @prm-ignore-x\nDo not run the next x lines.\n\nExample:\n```\necho 1\n# @prm-ignore-2\necho 2\necho 3\necho 4\n```\nOutput:\n```\n\u003e 1\n\u003e 4\n```\n\n### @prm-wait-until-regex-output-/x/\nFor the line that follows this directive, wait until the regex x matches the stdout before moving to the next command. This is useful when you want to run tests against another process, like a web server.\n\nExample:\n```\n# @prm-wait-until-regex-output-/Accepting connections/\nnpx serve -p 3001\ncurl http://localhost:3000\n```\nExplanation:\n\nThe curl command only fires after the serve command outputs `Accepting connections`.\n\n## Upcoming Features\n - [ ] @prm-threads-x (Run commands in different threads)\n - [ ] @prm-final-regex-output (When to exit long-running tasks)\n - [ ] @prm-section-match-/x/-/y/-z (Use a double regex to ensure that your readme includes all of the regex matches of a particular file)\n - [ ] @prm-file-folder-structure (Verifies that the project has the file-folder structure in the readme)\n - [ ] @prm-multiline-x (Run multiple lines with a single command)\n\n## Contributions\nContributions are welcome.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl2silver%2Fproofreadme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl2silver%2Fproofreadme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl2silver%2Fproofreadme/lists"}