{"id":16719214,"url":"https://github.com/reiddraper/freshlinks","last_synced_at":"2025-03-21T21:30:37.052Z","repository":{"id":42722459,"uuid":"284865885","full_name":"reiddraper/freshlinks","owner":"reiddraper","description":"Freshlinks checks that the relative links between your markdown pages are correct, and helps keep them that way!","archived":false,"fork":false,"pushed_at":"2023-03-05T10:07:08.000Z","size":2469,"stargazers_count":16,"open_issues_count":9,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-20T16:19:39.363Z","etag":null,"topics":["actions","linter","markdown","parser","testing","url","verification"],"latest_commit_sha":null,"homepage":"","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/reiddraper.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null}},"created_at":"2020-08-04T03:19:00.000Z","updated_at":"2025-02-27T21:57:19.000Z","dependencies_parsed_at":"2023-02-06T12:30:33.589Z","dependency_job_id":null,"html_url":"https://github.com/reiddraper/freshlinks","commit_stats":{"total_commits":44,"total_committers":2,"mean_commits":22.0,"dds":"0.022727272727272707","last_synced_commit":"596f7f5bc8a562b1b98cde1448fa8bca3cd0539b"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":"actions/typescript-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiddraper%2Ffreshlinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiddraper%2Ffreshlinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiddraper%2Ffreshlinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiddraper%2Ffreshlinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reiddraper","download_url":"https://codeload.github.com/reiddraper/freshlinks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244874093,"owners_count":20524572,"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":["actions","linter","markdown","parser","testing","url","verification"],"created_at":"2024-10-12T21:40:59.528Z","updated_at":"2025-03-21T21:30:36.267Z","avatar_url":"https://github.com/reiddraper.png","language":"TypeScript","readme":"Freshlinks checks that the relative links between your markdown pages are correct, and helps keep them that way! You can use Freshlinks as a GitHub Action, where it will annotate your PR and tell you exactly where the mistaken link is. Or, you can use it from the command-line, installed with NPM.\n\n## GitHub Action\n\n\u003cimg src=\"img/freshlinks-github-action-screenshot.png\" alt=\"Freshlinks GitHub Action screenshot\" width=\"800\"/\u003e\n\nThe Freshlinks GitHub Action can be installed with adding the following workflow file:\n\n### `.github/workflows/freshlinks.yml`\n\n```yml\nname: Freshlinks\non: [push]\n\njobs:\n  freshlinks:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n\n      - name: Freshlinks\n        uses: reiddraper/freshlinks@v0.0.5\n        with:\n          # Put in a glob pattern to find the\n          # files you want Freshlinks to scan\n          glob: \"docs/**/*.md\"\n          # An optional bool to enable link\n          # suggestions: default to `true`\n          suggestions: true\n          # An *optional* error message template\n          # to provide your own error message to users.\n          # See the rest of the README for details\n          error-template: |\n            Oops! You made a mistake with {{ link }}\n            {{ #suggestion }}\n            [Clippy] Maybe try {{ suggested_link }}?\n            {{ /suggestion }}\n```\n\n### Error template syntax\n\nA custom error message can be provided, which will be used when creating Check Annotations. This is useful if you'd like to tailor the error message to point to documentation for your organization or project.\nThe syntax uses [mustache](https://mustache.github.io/) templates, which are documented in more detail on the [manual page](https://mustache.github.io/mustache.5.html).\n\nFreshlinks supports the following tags:\n\n- `link`: The broken link, as it appeared in the markdown document\n- `suggestion`: A mustache \"section\", to be used like `{{ #suggestion }} ... {{ /suggestion }}\n- `suggested_link`: A suggested 'fix' to the link, used inside of a `suggestion` section\n\nHere's an example:\n\n```mustache\nOops! You made a mistake with {{ link }}\n{{ #suggestion }}\n[Clippy] Maybe try {{ suggested_link }}?\n{{ /suggestion }}\n```\n\nThe line which suggests an alternative will only be rendered if a suggestion was found.\n\n## Command-line or Node project\n\nFreshlinks can be used programmatically as a library, or from the command-line:\n\n```shell\nnpm install --save-dev freshlinks\n```\n\nFreshlinks will scan any files provided as arguments, so you'll frequently use it like:\n\n```\n$ git ls-files '*.md' | xargs npx freshlinks\n```\n\nFreshlinks has pretty colorized output:\n\n\u003cimg src=\"img/freshlinks-cli-output.png\" alt=\"Freshlinks command-line output\" width=\"600\"/\u003e\n\n## [LICENSE](LICENSE)\n\nFreshlinks is released under the MIT License.\n\n## Changelog\n\nView the [changelog](CHANGELOG.md) to follow new releases.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freiddraper%2Ffreshlinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freiddraper%2Ffreshlinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freiddraper%2Ffreshlinks/lists"}