{"id":18202580,"url":"https://github.com/timhagn/lint-md-fm","last_synced_at":"2025-10-07T19:11:26.761Z","repository":{"id":66277322,"uuid":"399878375","full_name":"timhagn/lint-md-fm","owner":"timhagn","description":"GitHub Action linting markdown \u0026 its frontmatter content.","archived":false,"fork":false,"pushed_at":"2021-10-21T11:37:25.000Z","size":2358,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T20:18:30.609Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/timhagn.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-25T16:01:20.000Z","updated_at":"2021-10-21T11:37:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"44f47057-4204-4177-b64d-73a9c44a2cd9","html_url":"https://github.com/timhagn/lint-md-fm","commit_stats":{"total_commits":141,"total_committers":3,"mean_commits":47.0,"dds":"0.23404255319148937","last_synced_commit":"2b4421fe58da1c9875c4548fcc38d205db097015"},"previous_names":[],"tags_count":102,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timhagn%2Flint-md-fm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timhagn%2Flint-md-fm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timhagn%2Flint-md-fm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timhagn%2Flint-md-fm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timhagn","download_url":"https://codeload.github.com/timhagn/lint-md-fm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247706220,"owners_count":20982567,"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-03T10:04:28.491Z","updated_at":"2025-10-07T19:11:26.679Z","avatar_url":"https://github.com/timhagn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lint-md-fm\n\n**GitHub Action linting markdown \u0026amp; its frontmatter content.**\n\n## Development\n\nThis repo has been created with `yarn`.\n\nTo be able to test the action also install [`act`](https://github.com/nektos/act).\n\nFurther, to publish the action without `node_modules` coming in the way,\ninstall [ncc](https://www.npmjs.com/package/@vercel/ncc).\n\nTo ease formatting, `prettier` is installed and may be called for testing with:\n\n```shell\nyarn format\n```\n\nand with\n\n```shell\nyarn format:fix\n```\n\nto automatically fix formatting.\n\n## Info\n\nMore info on creating JavaScript GitHub actions may be found on\n[GitHub](https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action).\n\n---\n\n## Markdown Frontmatter \u0026 project files linter\n\nThis action checks all added files of a push / PR to the\n[solana-labs/ecosystem](https://github.com/solana-labs/ecosystem) repo.\n\n## Inputs\n\n| **Input Name**      | **Required** | **Default**                     | **Description**                                                                                                |\n| ------------------- | ------------ | ------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| repoToken           | true         | -                               | The `GITHUB_TOKEN` to be bale to post comments on the PR.                                                      |\n| debug               | false        | false                           | Show additional info.                                                                                          |\n| changed-files       | true         | -                               | Which files to lint, get from [tj-actions/changed-files](https://github.com/marketplace/actions/changed-files) |\n| directories         | false        | \"projects\", \"img\"               | Multiple directories to search in.                                                                             |\n| markdown-extensions | true         | \".md\", \".mdx\"                   | Multiple extensions of Markdown files to check for.                                                            |\n| image-extensions    | false        | \".svg\", \".png\", \".jpg\", \".jpeg\" | Multiple extensions of image files to check for.                                                               |\n| fuzzy-search        | false        | true                            | Should the existing projects be checked for duplicates with nearest neighbor (fuzzy) search.                   |\n| force-check         | false        | false                           | Check all files instead of only added ones.                                                                    |\n\n## Outputs\n\n## `changed`\n\nWhich files where changed.\n\n## Example usage\n\n```yaml\n- name: Lint Current PR\n  id: lint\n  uses: timhagn/lint-md-fm@v1.0.12\n  with:\n    changed-files: ${{ steps.changed_files.outputs.all_modified_files }}\n    directories: |\n      projects\n      img\n    markdown-extensions: |\n      md\n      mdx\n    image-extensions: |\n      png\n      svg\n      jpg\n      jpeg\n    fuzzy-search: true\n```\n\n---\n\n## TODO\n\nAdapt this action to one we can use to check the\n[ecosystem projects](https://github.com/solana-labs/ecosystem) for:\n\n- [x] project files in a PR not correctly named `{project-name}.md` with `.md` ext\n- [x] missing or misnamed logo files\n- [x] logo files in the wrong format (not SVG / PNG / JPG)\n- [x] (only for bonus-points: image sizes)\n- [x] categories not in the `CATEGORY_MAPPING`\n- [x] add strict / fuzzy matching for `slug` \u0026 `title` duplicate checking\n- [x] cleaned up reporting / logging\n- [x] adapt this README file to the functionality of the final action\n\nPossible additions:\n\n- [x] add `force-check` option to check all files\n- [ ] get `CATEGORY_MAPPING` from solana-com (API call)\n\nFind [`gray-matter`](https://www.npmjs.com/package/gray-matter) already\ninstalled to work with Markdown \u0026 Frontmatter.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimhagn%2Flint-md-fm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimhagn%2Flint-md-fm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimhagn%2Flint-md-fm/lists"}