# How to Contribute a New Tool to FckSignups: The Complete Contribution Process for Adding New Tools

> Learn the FckSignups contribution process for adding new tools. Follow our guide to submit an issue, run automation or manually add data, and open a pull request to enhance FckSignups.

- Repository: [Abdullah/FckSignups](https://github.com/BraveOPotato/FckSignups)
- Tags: how-to-guide
- Published: 2026-09-08

---

**To contribute a new tool to the FckSignups repository, submit a structured GitHub issue using the provided template and either run the [`addToolAutomation.py`](https://github.com/BraveOPotato/FckSignups/blob/main/addToolAutomation.py) script to auto-populate metadata or manually append the tool object to [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json), then open a pull request against the `main` branch.**

The FckSignups project (also referred to as NoSignups) maintains a curated directory of open-source tools that require no user registration. Understanding the **contribution process for adding new tools** ensures your submission meets the required schema and quality standards defined in the repository's automated tooling and contribution guidelines.

## Understanding the Tool Schema and Categories

Before initiating a contribution, verify your tool complies with the guidelines specified in [`/README.md`](https://github.com/BraveOPotato/FckSignups/blob/main//README.md) (lines 75-81). Each entry must conform to the **Tool schema** defined in the README (lines 37-51) and be added to the [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) file.

**Required fields for every tool:**

- **id** – URL-safe unique identifier
- **name** – Human-readable tool name
- **description** – Brief summary (≤ 140 characters)
- **url** – Direct link to the live tool
- **category** – Must be one of: `productivity`, `design`, `development`, `writing`, `privacy`, `utilities`, `data`, `media`, or `education`
- **tags** – Array of 3-5 keywords for searchability
- **github** – Repository URL (must be open-source)
- **license** – SPDX license identifier
- **stars** – GitHub star count
- **addedAt** – ISO date string (YYYY-MM-DD)
- **section** – Typically `meets-criteria`

## Step-by-Step Contribution Process for Adding New Tools

### Submit a Structured GitHub Issue

Begin by creating a new issue using the template located at [`.github/ISSUE_TEMPLATE/request-to-add-a-tool.md`](https://github.com/BraveOPotato/FckSignups/blob/main/.github/ISSUE_TEMPLATE/request-to-add-a-tool.md). This template automatically applies the `tool-submission` label and enforces the required data structure.

Fill in the `<SUBMISSION>` block with:
- Tool name and description
- Live URL and GitHub repository link
- Proposed category and relevant tags

### Automated Processing with addToolAutomation.py

The recommended workflow uses the automation script to parse your issue and query the GitHub API. The script [`management_tools/addToolAutomation.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/addToolAutomation.py) leverages [`management_tools/githubBridge.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/githubBridge.py) to fetch accurate star counts and license information.

Run the script from the repository root:

```bash
python management_tools/addToolAutomation.py

```

When prompted, provide the issue URL:

```bash
Issue URL: https://github.com/BraveOPotato/FckSignups/issues/456

```

The script parses the submission block, queries the API, and inserts the completed object into [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) (referenced in [`management_tools/addTool.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/addTool.py) as `JSON_PATH = "../tools.json"`). Output will resemble:

```json
{
  "id": "my-awesome-tool",
  "name": "My Awesome Tool",
  "description": "An awesome no‑signup web app",
  "url": "https://awesome.example.com",
  "category": "productivity",
  "tags": ["awesome", "no‑signup"],
  "github": "https://github.com/user/awesome-tool",
  "license": "MIT",
  "stars": 987,
  "addedAt": "2026-09-08",
  "section": "meets-criteria"
}

```

### Manual Addition to tools.json

If you prefer manual editing, open [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) and locate the `"tools"` array. Append a new object following the schema above. Ensure the JSON is valid and the `github` URL points to an open-source repository. Save the file and commit your changes.

### Validate Changes Locally

Verify your addition renders correctly by running the development server:

```bash
npm install
npm run dev

```

Navigate to `http://localhost:5173` and confirm the tool appears in its designated category with accurate metadata.

### Create and Submit a Pull Request

Push your branch to GitHub and open a pull request against the `main` branch. Maintainers will review for compliance with the no-signup philosophy, open-source licensing, and schema accuracy before merging.

## Key Files in the Contribution Workflow

| File | Purpose |
|------|---------|
| **[`.github/ISSUE_TEMPLATE/request-to-add-a-tool.md`](https://github.com/BraveOPotato/FckSignups/blob/main/.github/ISSUE_TEMPLATE/request-to-add-a-tool.md)** | Structured template for new tool submissions |
| **[`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json)** | Central data store containing all tool entries |
| **[`management_tools/addToolAutomation.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/addToolAutomation.py)** | Automates metadata retrieval and JSON insertion |
| **[`management_tools/githubBridge.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/githubBridge.py)** | GitHub API wrapper for fetching stars and license data |
| **[`management_tools/addTool.py`](https://github.com/BraveOPotato/FckSignups/blob/main/management_tools/addTool.py)** | Defines configuration paths and helper functions |
| **[`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md)** | Contains contribution guidelines and schema definitions |

## Summary

- The **contribution process for adding new tools** centers on the [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) file and structured GitHub issues.
- Use the **issue template** at [`.github/ISSUE_TEMPLATE/request-to-add-a-tool.md`](https://github.com/BraveOPotato/FckSignups/blob/main/.github/ISSUE_TEMPLATE/request-to-add-a-tool.md) to ensure consistent data submission.
- Run **[`addToolAutomation.py`](https://github.com/BraveOPotato/FckSignups/blob/main/addToolAutomation.py)** to automatically fetch GitHub stars and license data via the [`githubBridge.py`](https://github.com/BraveOPotato/FckSignups/blob/main/githubBridge.py) module.
- Manual edits require strict adherence to the JSON schema with fields like `id`, `category`, and `section`.
- Validate locally using `npm run dev` before submitting your pull request to `main`.

## Frequently Asked Questions

### What information is required to submit a new tool?

You must provide the tool name, description (140 characters maximum), live URL, GitHub repository link, category from the predefined list, and 3-5 descriptive tags. The repository must be open-source, as the automation scripts query the GitHub API for license and star count verification.

### How does the addToolAutomation.py script work?

The script prompts for a GitHub issue URL, parses the `<SUBMISSION>` block using regex, then calls [`githubBridge.py`](https://github.com/BraveOPotato/FckSignups/blob/main/githubBridge.py) to query the GitHub REST API. It retrieves the exact star count and SPDX license identifier, constructs the JSON object, and appends it to [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json) at the path defined in [`addTool.py`](https://github.com/BraveOPotato/FckSignups/blob/main/addTool.py).

### What categories are available for tool classification?

FckSignups accepts nine predefined category IDs: `productivity`, `design`, `development`, `writing`, `privacy`, `utilities`, `data`, `media`, and `education`. These are defined in the Categories table in [`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md) and enforced by the automation scripts when processing new submissions.

### How do I verify my changes before submitting a pull request?

After updating [`tools.json`](https://github.com/BraveOPotato/FckSignups/blob/main/tools.json), run `npm install` followed by `npm run dev` to start the local development server. Browse to `http://localhost:5173` to visually confirm the tool appears in the correct category with accurate metadata, ensuring no JSON syntax errors exist before creating your PR against the `main` branch.