{"id":23524286,"url":"https://github.com/yankeexe/good-first-issues","last_synced_at":"2025-10-19T03:32:09.564Z","repository":{"id":40684955,"uuid":"299592642","full_name":"yankeexe/good-first-issues","owner":"yankeexe","description":"Find good first issues from your commandline! 🚀","archived":false,"fork":false,"pushed_at":"2025-02-03T08:16:24.000Z","size":98,"stargazers_count":116,"open_issues_count":1,"forks_count":31,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-11T04:11:27.760Z","etag":null,"topics":["beginner-friendly","cli","cli-app","github","github-api","good-first-issue","hacktoberfest","python-cli"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/good-first-issues/","language":"Python","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/yankeexe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"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}},"created_at":"2020-09-29T11:15:03.000Z","updated_at":"2025-05-03T16:48:09.000Z","dependencies_parsed_at":"2024-04-15T10:48:11.676Z","dependency_job_id":"e6cdca6f-04de-44cd-8dcc-280d3e1a2671","html_url":"https://github.com/yankeexe/good-first-issues","commit_stats":{"total_commits":60,"total_committers":6,"mean_commits":10.0,"dds":0.25,"last_synced_commit":"ff41998a33983941cb41be1e04cd1ee6cd67f236"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankeexe%2Fgood-first-issues","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankeexe%2Fgood-first-issues/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankeexe%2Fgood-first-issues/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankeexe%2Fgood-first-issues/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yankeexe","download_url":"https://codeload.github.com/yankeexe/good-first-issues/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514649,"owners_count":21920340,"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":["beginner-friendly","cli","cli-app","github","github-api","good-first-issue","hacktoberfest","python-cli"],"created_at":"2024-12-25T18:15:27.674Z","updated_at":"2025-10-19T03:32:09.555Z","avatar_url":"https://github.com/yankeexe.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/vTgsBoQ.png\" width=\"100\" alt=\"Good First Issues\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\u003cstrong\u003e Good First Issues\u003c/strong\u003e \u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFind good first issues right from your CLI!\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/pypi/v/good-first-issues?style=flat-square\u0026color=black\"/\u003e\n\u003cimg src=\"https://img.shields.io/pypi/pyversions/good-first-issues?style=flat-square\u0026color=black\" /\u003e\n\u003cimg src=\"https://img.shields.io/pypi/l/good-first-issues?style=flat-square\u0026color=black\"/\u003e\n\u003cimg src=\"https://static.pepy.tech/badge/good-first-issues\"/\u003e\n\n\u003c/p\u003e\n\n## 📦 Installation\n\n\u003e Requires **Python 3.9 or higher**.\n\n```bash\n$ pip install good-first-issues --upgrade\n\n# Using uvx\n\n$ uvx --from good-first-issues gfi\n```\n\nThe CLI uses the alias `gfi` to run commands.\n\n\u003cimg src=\"https://i.imgur.com/UM4e9vQ.png\" width=\"800\" /\u003e\n\n## Contents\n- [📦 Installation](#-installation)\n  - [🔑 Create GitHub Personal Access Token](#-create-github-personal-access-token)\n- [🚀 Usage](#-usage)\n  - [🏢 Query all repos in an organization](#-query-all-repos-in-an-organization)\n  - [📦 Query a single repo in an organization](#-query-a-single-repo-in-an-organization)\n  - [👨‍💻 Query all repos in a user profile](#-query-all-repos-in-a-user-profile)\n  - [📦 Query a single repo in a user profile](#-query-a-single-repo-in-a-user-profile)\n  - [🐙 Query all repos with topic `hacktoberfest`](#-query-all-repos-with-topic-hacktoberfest)\n    - [Query all repos with topic 'hacktoberfest' in an organization or in a user profile](#query-all-repos-with-topic-hacktoberfest-in-an-organization-or-in-a-user-profile)\n  - [📏 Search for issues within a certain period](#-search-for-issues-within-a-certain-period)\n  - [⚖️ Limit output](#️-limit-output)\n  - [🌐 View issues on browser](#-view-issues-on-browser)\n  - [👀 Show the CLI version](#-show-the-cli-version)\n- [🔨 Contributing](#-contributing)\n\n### 🔑 Create GitHub Personal Access Token\n\nThe CLI requires GitHub Personal Access Token to make requests to the GitHub API.\n\n\u003e Get [GitHub Fine-grained Personal Access Token](https://github.com/settings/tokens?type=beta)\n\nYou can add a Description to your token, select \"Public Repositories (read-only)\" and select _Generate token_.\n\n**Provide token to CLI:**\n\n```bash\n$ gfi config\n```\n\nToken is stored locally on `/home/\u003cusername\u003e/.gfi/good-first-issues` file.\n\n**Token in environment variable:**\n\nStore the token with the name `GFITOKEN` in your environment.\n\n## 🚀 Usage\n\nGitHub provides API to fetch user and organization data. [Personal Access Token](#create-github-personal-access-token) is required for authentication and data fetching.\n\n### 🏢 Query all repos in an organization\n\n```bash\n$ gfi search \"rust-lang\"\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/B8zRd1z.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n### 📦 Query a single repo in an organization\n\n```bash\n$ gfi search \"facebook\" --repo \"jest\"\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/XayYGEd.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n### 👨‍💻 Query all repos in a user profile\n\n```bash\n$ gfi search \"yankeexe\" --user\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/LnPrk4A.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n### 📦 Query a single repo in a user profile\n\n`--user` flag not required here.\n\n```bash\n$ gfi search \"yankeexe\" --repo \"good-first-issues\"\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/ywGT9VQ.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n\n### 🐙 Query all repos with topic `hacktoberfest`\n\n```bash\n$ gfi search --hacktoberfest\n\n$ gfi search -hf\n\n$ gfi search -hf --period \"30 days\"\n\n$ gfi search -hf --limit 10 --period \"48 hours\"\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/6Ch5BFG.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n\n### 📏 Search for issues within a certain period\n\nBy default, no period is set and users are shown whatever data is fetched from the GitHub API.\n\nTo filter good first issues within a certain period, use the following commands:\n\n```bash\n\n# Query all organization repos\n$ gfi search \"rust-lang\" -p \"30 hours\"\n\n# Query a specific repo in an organization\n$ gfi search \"rust-lang\" --repo \"rust\" -p \"30 mins\"\n\n# Query repos with the topic hacktoberfest\n$ gfi search -hf -p \"100 days\"\n\n# Query all user repos\n$ gfi search \"yankeexe\" --user -p \"600 hrs\"\n\n# Query a specific repo of a user\n$ gfi search \"yankeexe\" --user --repo \"good-first-issues\" -p \"600 days\"\n```\n\n```bash\n# Example Usage:\n--period 1 m,min,mins,minutes\n\n--period 2 h,hr,hour,hours,hrs\n\n--period 3 d,day,days\n\n```\n\n### ⚖️ Limit output\n\nThe output is limited to display 10 issues by default. Use `--limit` flag to set the number of issues for output or `--all` for no limits.\n\nLimit the issues to 12\n\n```bash\n$ gfi search \"facebook\" --limit 12\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/WdXhA4Z.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\nView all issues found.\n\n```bash\n$ gfi search \"rust-lang\" --all\n```\n\n### 🌐 View issues on browser\n\nIt's hard to navigate through all the issues when you have the `--all` flag enabled, you can view the issues on your browser with ease using the `--web` flag.\n\n```bash\n$ gfi search \"facebook\" --all --web\n```\n\n\u003e \u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eDemo\u003c/strong\u003e\u003c/summary\u003e\n\u003e \u003cimg src = \"https://i.imgur.com/AukVqdk.gif\" width=\"700\" alt=\"demo of timezone cli search\" /\u003e\n\n\u003c/details\u003e\n\n### 👀 Show the CLI version\n\n```bash\n$ gfi version\n```\n\n## 🔨 Contributing\n\nFor guidance on setting up a development environment and how to make a contribution to `good-first-issues`, see the [contributing guidelines](https://github.com/yankeexe/good-first-issues/blob/master/CONTRIBUTING.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyankeexe%2Fgood-first-issues","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyankeexe%2Fgood-first-issues","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyankeexe%2Fgood-first-issues/lists"}