AXLR / Catalog / programming

gitignore_gen

Build a .gitignore from named stacks (Python, Node, Go, Rust, Java, Maven, Gradle, C, C++, Dotnet, VisualStudio, Swift, Ruby, Rails, Android, Unity, Terraform, Flutter, macOS, Windows, Linux, JetBrains, VisualStudioCode, Vim and more: 44 templates with common aliases), combined in the order given with a header per section and repeated patterns removed when that cannot change what is ignored. The templates are bundled from github/gitignore (CC0-1.0) at a pinned commit, recorded in the output.

Install

/tools install gitignore_gen
/tools install gitignore_gen@1.0.0

In a console session, or let the model find it in normal mode: axlr_catalog describes it and axlr_install_tool asks for the same install card. The card reads catalog axlr · gitignore_gen 1.0.0 · verified once the index signature, the manifest digest and every file digest check out. Then the model runs it with axlr_run_tool gitignore_gen; each run is approved as a local_exec.

Arguments

One JSON object on stdin, validated against the schema before the program starts.

nametyperequireddefaultmeaning
stacksarray of stringnoStack names or aliases, e.g. ["Python", "macOS", "vscode"]. items ≥ 1; items ≤ 50
commentsbooleannotrueKeep the templates' comment lines
dedupebooleannotrueDrop patterns already present in an earlier section
extraarray of stringno[]Your own patterns, appended in a Custom section
list_stacksbooleannoOnly list the available stacks
Input schema (JSON)
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "stacks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 50,
      "description": "Stack names or aliases, e.g. [\"Python\", \"macOS\", \"vscode\"]"
    },
    "comments": {
      "type": "boolean",
      "default": true,
      "description": "Keep the templates' comment lines"
    },
    "dedupe": {
      "type": "boolean",
      "default": true,
      "description": "Drop patterns already present in an earlier section"
    },
    "extra": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Your own patterns, appended in a Custom section"
    },
    "list_stacks": {
      "type": "boolean",
      "description": "Only list the available stacks"
    }
  }
}

Example

Input

{
  "stacks": [
    "C",
    "C++"
  ],
  "comments": false
}

Output (stdout)

{
  "stacks": [
    "C",
    "C++"
  ],
  "sections": [
    {
      "name": "C",
      "path": "C.gitignore",
      "patterns": 36,
      "duplicates_dropped": 0
    },
    {
      "name": "C++",
      "path": "C++.gitignore",
      "patterns": 20,
      "duplicates_dropped": 19
    }
  ]
}

Files

The command the install card registers is python3 gitignore_gen.py, run in the workspace with PATH and HOME as its only environment. Each file's SHA-256 is in the signed index; the console checks them before showing the card and again before writing.

gitignore_gen.py · sha256 089d8f6df2049bccf920b1f0e11ead63092225d177640614f3a9e9f806d6612b
#!/usr/bin/env python3
"""Build a .gitignore from named stacks (Python, Node, Go, macOS, JetBrains...): the
github/gitignore templates bundled in templates.json, combined in the order given, with a
header per section and repeated patterns removed when that cannot change the result.

Input (JSON on stdin):
  stacks       list of stack names or aliases, e.g. ["Python", "macOS", "vscode"]
  comments     keep the templates' own comment lines (default true)
  dedupe       drop patterns already present earlier (default true)
  extra        your own patterns, appended in a final section (optional)
  list_stacks  true: only list the available stacks and their aliases
"""
import json
import pathlib
import sys

DATA = pathlib.Path(__file__).resolve().parent / "templates.json"


def fail(message):
    print(json.dumps({"error": message}))
    sys.exit(2)


def load():
    try:
        return json.loads(DATA.read_text(encoding="utf-8"))
    except (OSError, ValueError) as error:
        fail(f"cannot read the bundled templates.json: {error}")


def index(data):
    names = {}
    for name, t in data["templates"].items():
        for key in [name] + t["aliases"]:
            names[key.lower()] = name
    return names


def main():
    try:
        request = json.load(sys.stdin)
    except ValueError as error:
        fail(f"stdin is not JSON: {error}")
    if not isinstance(request, dict):
        fail("stdin must be a JSON object")
    extra_keys = sorted(set(request) - {"stacks", "comments", "dedupe", "extra", "list_stacks"})
    if extra_keys:
        fail(f"unknown field(s): {', '.join(extra_keys)}")
    data = load()
    source = {"repository": data["repository"], "commit": data["commit"], "commit_date": data["commit_date"],
              "license": data["license"], "fetched": data["fetched"]}
    if request.get("list_stacks"):
        print(json.dumps({"stacks": [{"name": n, "kind": t["kind"], "path": t["path"], "aliases": t["aliases"]}
                                     for n, t in data["templates"].items()], "source": source}))
        return
    for key in ("comments", "dedupe", "list_stacks"):
        if key in request and not isinstance(request[key], bool):
            fail(f"{key} must be true or false")
    stacks = request.get("stacks")
    if not isinstance(stacks, list) or not stacks or not all(isinstance(s, str) for s in stacks):
        fail("stacks must be a non-empty list of names such as [\"Python\", \"macOS\"] (list_stacks: true lists them)")
    if len(stacks) > 50:
        fail("at most 50 stacks")
    extra = request.get("extra", [])
    if not isinstance(extra, list) or not all(isinstance(s, str) and "\n" not in s for s in extra):
        fail("extra must be a list of one-line patterns")
    names = index(data)
    chosen, unknown = [], []
    for s in stacks:
        name = names.get(s.strip().lower())
        if name is None:
            unknown.append(s)
        elif name not in chosen:
            chosen.append(name)
    if unknown:
        fail(f"unknown stack(s): {', '.join(unknown)}; available: {', '.join(data['templates'])}")
    keep_comments = request.get("comments", True)
    dedupe = request.get("dedupe", True)

    out = [f"# Generated from github/gitignore ({data['commit'][:7]}, {data['commit_date']}, CC0-1.0): "
           + ", ".join(chosen), ""]
    first_at = {}         # pattern -> position of its first emission
    last_negation = -1    # position of the last emitted negation (!pattern)
    position = 0
    sections = []
    sources = [(n, data["templates"][n]["lines"], data["templates"][n]["path"]) for n in chosen]
    if extra:
        sources.append(("Custom", extra, None))
    for name, lines, path in sources:
        header = f"### {name} ###" + (f" (github/gitignore {path})" if path else "")
        body, dropped, kept = [], 0, 0
        for raw in lines:
            line = raw.rstrip("\r")
            stripped = line.strip()
            if not stripped:
                if body and body[-1] != "":
                    body.append("")
                continue
            if stripped.startswith("#"):
                if keep_comments:
                    body.append(line)
                continue
            if dedupe and not stripped.startswith("!") and line in first_at and first_at[line] > last_negation:
                dropped += 1
                continue
            body.append(line)
            kept += 1
            position += 1
            if stripped.startswith("!"):
                last_negation = position
            first_at.setdefault(line, position)
        while body and body[-1] == "":
            body.pop()
        out.append(header)
        out.extend(body)
        out.append("")
        sections.append({"name": name, "path": path, "patterns": kept, "duplicates_dropped": dropped})
    content = "\n".join(out).rstrip("\n") + "\n"
    print(json.dumps({"content": content, "stacks": chosen, "sections": sections,
                      "patterns": sum(s["patterns"] for s in sections), "source": source}))


if __name__ == "__main__":
    main()
templates.json · sha256 fce98379c6645b8731d0b6752eb0c7439f3f4569aec7fa25f5cccb90840f29d8
{
 "source": "github/gitignore",
 "repository": "https://github.com/github/gitignore",
 "commit": "0e5d690153ca3da8a4a1aef2d053406f408f531c",
 "commit_date": "2026-10-02",
 "license": "CC0-1.0",
 "fetched": "2026-10-18",
 "raw_url": "https://raw.githubusercontent.com/github/gitignore/0e5d690153ca3da8a4a1aef2d053406f408f531c/<path>",
 "templates": {
  "Python": {
   "path": "Python.gitignore",
   "kind": "language",
   "aliases": [
    "py",
    "python3",
    "django",
    "flask"
   ],
   "lines": [
    "# Byte-compiled / optimized / DLL files",
    "__pycache__/",
    "*.py[codz]",
    "*$py.class",
    "",
    "# C extensions",
    "*.so",
    "",
    "# Distribution / packaging",
    ".Python",
    "build/",
    "develop-eggs/",
    "dist/",
    "downloads/",
    "eggs/",
    ".eggs/",
    "lib/",
    "lib64/",
    "parts/",
    "sdist/",
    "var/",
    "wheels/",
    "share/python-wheels/",
    "*.egg-info/",
    ".installed.cfg",
    "*.egg",
    "MANIFEST",
    "",
    "# PyInstaller",
    "#   Usually these files are written by a python script from a template",
    "#   before PyInstaller builds the exe, so as to inject date/other infos into it.",
    "*.manifest",
    "*.spec",
    "",
    "# Installer logs",
    "pip-log.txt",
    "pip-delete-this-directory.txt",
    "",
    "# Unit test / coverage reports",
    "htmlcov/",
    ".tox/",
    ".nox/",
    ".coverage",
    ".coverage.*",
    ".cache",
    "nosetests.xml",
    "coverage.xml",
    "*.cover",
    "*.py.cover",
    "*.lcov",
    ".hypothesis/",
    ".pytest_cache/",
    "cover/",
    "",
    "# Translations",
    "*.mo",
    "*.pot",
    "",
    "# Django stuff:",
    "*.log",
    "local_settings.py",
    "db.sqlite3",
    "db.sqlite3-journal",
    "",
    "# Flask stuff:",
    "instance/",
    ".webassets-cache",
    "",
    "# Scrapy stuff:",
    ".scrapy",
    "",
    "# Sphinx documentation",
    "docs/_build/",
    "",
    "# PyBuilder",
    ".pybuilder/",
    "target/",
    "",
    "# Jupyter Notebook",
    ".ipynb_checkpoints",
    "",
    "# IPython",
    "profile_default/",
    "ipython_config.py",
    "",
    "# pyenv",
    "#   For a library or package, you might want to ignore these files since the code is",
    "#   intended to run in multiple environments; otherwise, check them in:",
    "# .python-version",
    "",
    "# pipenv",
    "#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.",
    "#   However, in case of collaboration, if having platform-specific dependencies or dependencies",
    "#   having no cross-platform support, pipenv may install dependencies that don't work, or not",
    "#   install all needed dependencies.",
    "# Pipfile.lock",
    "",
    "# uv",
    "#   Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.",
    "#   This is especially recommended for binary packages to ensure reproducibility, and is more",
    "#   commonly ignored for libraries.",
    "# uv.lock",
    "",
    "# poetry",
    "#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.",
    "#   This is especially recommended for binary packages to ensure reproducibility, and is more",
    "#   commonly ignored for libraries.",
    "#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control",
    "# poetry.lock",
    "# poetry.toml",
    "",
    "# pdm",
    "#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.",
    "#   pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.",
    "#   https://pdm-project.org/en/latest/usage/project/#working-with-version-control",
    "# pdm.lock",
    "# pdm.toml",
    ".pdm-python",
    ".pdm-build/",
    "",
    "# pixi",
    "#   Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.",
    "# pixi.lock",
    "#   Pixi creates a virtual environment in the .pixi directory, just like venv module creates one",
    "#   in the .venv directory. It is recommended not to include this directory in version control.",
    ".pixi/*",
    "!.pixi/config.toml",
    "",
    "# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm",
    "__pypackages__/",
    "",
    "# Celery stuff",
    "celerybeat-schedule*",
    "celerybeat.pid",
    "",
    "# Redis",
    "*.rdb",
    "*.aof",
    "*.pid",
    "",
    "# RabbitMQ",
    "mnesia/",
    "rabbitmq/",
    "rabbitmq-data/",
    "",
    "# ActiveMQ",
    "activemq-data/",
    "",
    "# SageMath parsed files",
    "*.sage.py",
    "",
    "# Environments",
    ".env",
    ".envrc",
    ".venv",
    "env/",
    "venv/",
    "ENV/",
    "env.bak/",
    "venv.bak/",
    "",
    "# Spyder project settings",
    ".spyderproject",
    ".spyproject",
    "",
    "# Rope project settings",
    ".ropeproject",
    "",
    "# mkdocs/Zensical documentation",
    "/site",
    "",
    "# mypy",
    ".mypy_cache/",
    ".dmypy.json",
    "dmypy.json",
    "",
    "# Pyre type checker",
    ".pyre/",
    "",
    "# pytype static type analyzer",
    ".pytype/",
    "",
    "# Cython debug symbols",
    "cython_debug/",
    "",
    "# PyCharm",
    "#   JetBrains specific template is maintained in a separate JetBrains.gitignore that can",
    "#   be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore",
    "#   and can be added to the global gitignore or merged into this file.  For a more nuclear",
    "#   option (not recommended) you can uncomment the following to ignore the entire idea folder.",
    "# .idea/",
    "",
    "# Abstra",
    "#   Abstra is an AI-powered process automation framework.",
    "#   Ignore directories containing user credentials, local state, and settings.",
    "#   Learn more at https://abstra.io/docs",
    ".abstra/",
    "",
    "# Visual Studio Code",
    "#   Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore that",
    "#   can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore",
    "#   and can be added to the global gitignore or merged into this file. However, if you prefer, you",
    "#   could uncomment the following to ignore the entire vscode folder",
    "# .vscode/",
    "# Temporary file for partial code execution",
    "tempCodeRunnerFile.py",
    "",
    "# Ruff stuff:",
    ".ruff_cache/",
    "",
    "# PyPI configuration file",
    ".pypirc",
    "",
    "# Marimo",
    "marimo/_static/",
    "marimo/_lsp/",
    "__marimo__/",
    "",
    "# Streamlit",
    ".streamlit/secrets.toml"
   ]
  },
  "Node": {
   "path": "Node.gitignore",
   "kind": "language",
   "aliases": [
    "nodejs",
    "javascript",
    "js",
    "typescript",
    "ts",
    "npm",
    "yarn"
   ],
   "lines": [
    "# Logs",
    "logs",
    "*.log",
    "npm-debug.log*",
    "yarn-debug.log*",
    "yarn-error.log*",
    "lerna-debug.log*",
    "",
    "# Diagnostic reports (https://nodejs.org/api/report.html)",
    "report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json",
    "",
    "# Runtime data",
    "pids",
    "*.pid",
    "*.seed",
    "*.pid.lock",
    "",
    "# Directory for instrumented libs generated by jscoverage/JSCover",
    "lib-cov",
    "",
    "# Coverage directory used by tools like istanbul",
    "coverage",
    "*.lcov",
    "",
    "# nyc test coverage",
    ".nyc_output",
    "",
    "# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)",
    ".grunt",
    "",
    "# Bower dependency directory (https://bower.io/)",
    "bower_components",
    "",
    "# node-waf configuration",
    ".lock-wscript",
    "",
    "# Compiled binary addons (https://nodejs.org/api/addons.html)",
    "build/Release",
    "",
    "# Dependency directories",
    "node_modules/",
    "jspm_packages/",
    "",
    "# Snowpack dependency directory (https://snowpack.dev/)",
    "web_modules/",
    "",
    "# TypeScript cache",
    "*.tsbuildinfo",
    "",
    "# Optional npm cache directory",
    ".npm",
    "",
    "# Optional eslint cache",
    ".eslintcache",
    "",
    "# Optional stylelint cache",
    ".stylelintcache",
    "",
    "# Optional REPL history",
    ".node_repl_history",
    "",
    "# Output of 'npm pack'",
    "*.tgz",
    "",
    "# Yarn Integrity file",
    ".yarn-integrity",
    "",
    "# dotenv environment variable files",
    ".env",
    ".env.*",
    "!.env.example",
    "",
    "# parcel-bundler cache (https://parceljs.org/)",
    ".cache",
    ".parcel-cache",
    "",
    "# Next.js build output",
    ".next",
    "out",
    "",
    "# Nuxt.js build / generate output",
    ".nuxt",
    "dist",
    ".output",
    "",
    "# Gatsby files",
    ".cache/",
    "# Comment in the public line in if your project uses Gatsby and not Next.js",
    "# https://nextjs.org/blog/next-9-1#public-directory-support",
    "# public",
    "",
    "# vuepress build output",
    ".vuepress/dist",
    "",
    "# vuepress v2.x temp directory",
    ".temp",
    "",
    "# Sveltekit cache directory",
    ".svelte-kit/",
    "",
    "# vitepress build output",
    "**/.vitepress/dist",
    "",
    "# vitepress cache directory",
    "**/.vitepress/cache",
    "",
    "# Docusaurus cache and generated files",
    ".docusaurus",
    "",
    "# Serverless directories",
    ".serverless/",
    "",
    "# FuseBox cache",
    ".fusebox/",
    "",
    "# DynamoDB Local files",
    ".dynamodb/",
    "",
    "# Firebase cache directory",
    ".firebase/",
    "",
    "# TernJS port file",
    ".tern-port",
    "",
    "# Stores Visual Studio Code versions used for testing Visual Studio Code extensions",
    ".vscode-test",
    "",
    "# pnpm",
    ".pnpm-store",
    "",
    "# yarn v3",
    ".pnp.*",
    ".yarn/*",
    "!.yarn/patches",
    "!.yarn/plugins",
    "!.yarn/releases",
    "!.yarn/sdks",
    "!.yarn/versions",
    "",
    "# Vite files",
    "vite.config.js.timestamp-*",
    "vite.config.ts.timestamp-*",
    ".vite/",
    "",
    "# Astro generated types",
    ".astro/",
    "",
    "# Turbo Repo",
    ".turbo"
   ]
  },
  "Deno": {
   "path": "Deno.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Deno",
    "# https://deno.com/",
    "",
    "# Cache directory (when using project-local DENO_DIR)",
    "# https://docs.deno.com/runtime/fundamentals/setup/#deno_dir",
    ".deno/",
    "",
    "# Coverage reports",
    "# https://docs.deno.com/runtime/reference/cli/coverage/",
    "coverage/",
    "*.lcov"
   ]
  },
  "Go": {
   "path": "Go.gitignore",
   "kind": "language",
   "aliases": [
    "golang"
   ],
   "lines": [
    "# If you prefer the allow list template instead of the deny list, see community template:",
    "# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore",
    "#",
    "# Binaries for programs and plugins",
    "*.exe",
    "*.exe~",
    "*.dll",
    "*.so",
    "*.dylib",
    "",
    "# Test binary, built with `go test -c`",
    "*.test",
    "",
    "# Code coverage profiles and other test artifacts",
    "*.out",
    "coverage.*",
    "!coverage.go",
    "*.coverprofile",
    "profile.cov",
    "",
    "# Dependency directories (remove the comment below to include it)",
    "# vendor/",
    "",
    "# Go workspace file",
    "go.work",
    "go.work.sum",
    "",
    "# env file",
    ".env",
    "",
    "# Editor/IDE",
    "# .idea/",
    "# .vscode/"
   ]
  },
  "Rust": {
   "path": "Rust.gitignore",
   "kind": "language",
   "aliases": [
    "cargo"
   ],
   "lines": [
    "# Generated by Cargo",
    "# will have compiled files and executables",
    "debug",
    "target",
    "",
    "# These are backup files generated by rustfmt",
    "**/*.rs.bk",
    "",
    "# MSVC Windows builds of rustc generate these, which store debugging information",
    "*.pdb",
    "",
    "# Generated by cargo mutants",
    "# Contains mutation testing data",
    "**/mutants.out*/",
    "",
    "# rustc will dump stack traces when hitting an internal compiler error to PWD",
    "rustc-ice-*.txt",
    "",
    "# RustRover",
    "#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can",
    "#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore",
    "#  and can be added to the global gitignore or merged into this file.  For a more nuclear",
    "#  option (not recommended) you can uncomment the following to ignore the entire idea folder.",
    "#.idea/"
   ]
  },
  "Java": {
   "path": "Java.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Compiled class file",
    "*.class",
    "",
    "# Log file",
    "*.log",
    "",
    "# BlueJ files",
    "*.ctxt",
    "",
    "# Mobile Tools for Java (J2ME)",
    ".mtj.tmp/",
    "",
    "# Package Files #",
    "*.jar",
    "*.war",
    "*.nar",
    "*.ear",
    "*.zip",
    "*.tar.gz",
    "*.rar",
    "",
    "# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml",
    "hs_err_pid*",
    "replay_pid*"
   ]
  },
  "Kotlin": {
   "path": "Kotlin.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Compiled class file",
    "*.class",
    "",
    "# Log file",
    "*.log",
    "",
    "# BlueJ files",
    "*.ctxt",
    "",
    "# Mobile Tools for Java (J2ME)",
    ".mtj.tmp/",
    "",
    "# Package Files #",
    "*.jar",
    "*.war",
    "*.nar",
    "*.ear",
    "*.zip",
    "*.tar.gz",
    "*.rar",
    "",
    "# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml",
    "hs_err_pid*",
    "replay_pid*",
    "",
    "# Kotlin Gradle plugin data, see https://kotlinlang.org/docs/whatsnew20.html#new-directory-for-kotlin-data-in-gradle-projects",
    ".kotlin/"
   ]
  },
  "Scala": {
   "path": "Scala.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "*.class",
    "*.tasty",
    "*.log",
    "",
    "# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml",
    "hs_err_pid*"
   ]
  },
  "Maven": {
   "path": "Maven.gitignore",
   "kind": "build",
   "aliases": [
    "mvn"
   ],
   "lines": [
    "target/",
    "pom.xml.tag",
    "pom.xml.releaseBackup",
    "pom.xml.versionsBackup",
    "pom.xml.next",
    "release.properties",
    "dependency-reduced-pom.xml",
    "buildNumber.properties",
    ".mvn/timing.properties",
    "# https://maven.apache.org/tools/wrapper/#Usage_with_or_without_Binary_JAR",
    ".mvn/wrapper/maven-wrapper.jar",
    "",
    "# Eclipse m2e generated files",
    "# Eclipse Core",
    ".project",
    "# JDT-specific (Eclipse Java Development Tools)",
    ".classpath"
   ]
  },
  "Gradle": {
   "path": "Gradle.gitignore",
   "kind": "build",
   "aliases": [],
   "lines": [
    ".gradle",
    "**/build/",
    "!**/src/**/build/",
    "",
    "# Ignore Gradle GUI config",
    "gradle-app.setting",
    "",
    "# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)",
    "!gradle-wrapper.jar",
    "",
    "# Avoid ignore Gradle wrapper properties",
    "!gradle-wrapper.properties",
    "",
    "# Cache of project",
    ".gradletasknamecache",
    "",
    "# Eclipse Gradle plugin generated files",
    "# Eclipse Core",
    ".project",
    "# JDT-specific (Eclipse Java Development Tools)",
    ".classpath"
   ]
  },
  "C": {
   "path": "C.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Prerequisites",
    "*.d",
    "",
    "# Object files",
    "*.o",
    "*.ko",
    "*.obj",
    "*.elf",
    "",
    "# Linker output",
    "*.ilk",
    "*.map",
    "*.exp",
    "",
    "# Precompiled Headers",
    "*.gch",
    "*.pch",
    "",
    "# Libraries",
    "*.lib",
    "*.a",
    "*.la",
    "*.lo",
    "",
    "# Shared objects (inc. Windows DLLs)",
    "*.dll",
    "*.so",
    "*.so.*",
    "*.dylib",
    "",
    "# Executables",
    "*.exe",
    "*.out",
    "*.app",
    "*.i*86",
    "*.x86_64",
    "*.hex",
    "",
    "# Debug files",
    "*.dSYM/",
    "*.su",
    "*.idb",
    "*.pdb",
    "",
    "# Kernel Module Compile Results",
    "*.mod*",
    "*.cmd",
    ".tmp_versions/",
    "modules.order",
    "Module.symvers",
    "Mkfile.old",
    "dkms.conf",
    "",
    "# debug information files",
    "*.dwo"
   ]
  },
  "C++": {
   "path": "C++.gitignore",
   "kind": "language",
   "aliases": [
    "cpp",
    "cplusplus",
    "cxx"
   ],
   "lines": [
    "# Prerequisites",
    "*.d",
    "",
    "# Compiled Object files",
    "*.slo",
    "*.lo",
    "*.o",
    "*.obj",
    "",
    "# Precompiled Headers",
    "*.gch",
    "*.pch",
    "",
    "# Linker files",
    "*.ilk",
    "",
    "# Debugger Files",
    "*.pdb",
    "",
    "# Compiled Dynamic libraries",
    "*.so",
    "*.dylib",
    "*.dll",
    "*.so.*",
    "",
    "# Fortran module files",
    "*.mod",
    "*.smod",
    "",
    "# Compiled Static libraries",
    "*.lai",
    "*.la",
    "*.a",
    "*.lib",
    "",
    "# Executables",
    "*.exe",
    "*.out",
    "*.app",
    "",
    "# Build directories",
    "build/",
    "Build/",
    "build-*/",
    "",
    "# CMake generated files",
    "CMakeFiles/",
    "CMakeCache.txt",
    "cmake_install.cmake",
    "Makefile",
    "install_manifest.txt",
    "compile_commands.json",
    "",
    "# Temporary files",
    "*.tmp",
    "*.log",
    "*.bak",
    "*.swp",
    "",
    "# vcpkg",
    "vcpkg_installed/",
    "",
    "# debug information files",
    "*.dwo",
    "",
    "# test output & cache",
    "Testing/",
    ".cache/"
   ]
  },
  "CMake": {
   "path": "CMake.gitignore",
   "kind": "build",
   "aliases": [],
   "lines": [
    "CMakeLists.txt.user",
    "CMakeCache.txt",
    "CMakeFiles",
    "CMakeScripts",
    "Testing",
    "Makefile",
    "cmake_install.cmake",
    "install_manifest.txt",
    "compile_commands.json",
    "CTestTestfile.cmake",
    "_deps",
    "CMakeUserPresets.json",
    "",
    "# CLion",
    "#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can",
    "#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore",
    "#  and can be added to the global gitignore or merged into this file.  For a more nuclear",
    "#  option (not recommended) you can uncomment the following to ignore the entire idea folder.",
    "#cmake-build-*"
   ]
  },
  "Dotnet": {
   "path": "Dotnet.gitignore",
   "kind": "language",
   "aliases": [
    ".net",
    "dotnet-core",
    "csharp",
    "c#",
    "fsharp"
   ],
   "lines": [
    "## A streamlined .gitignore for modern .NET projects",
    "## including temporary files, build results, and",
    "## files generated by popular .NET tools. If you are",
    "## developing with Visual Studio, the VS .gitignore",
    "## https://github.com/github/gitignore/blob/main/VisualStudio.gitignore",
    "## has more thorough IDE-specific entries.",
    "##",
    "## Get latest from https://github.com/github/gitignore/blob/main/Dotnet.gitignore",
    "",
    "# Build results",
    "[Dd]ebug/",
    "[Dd]ebugPublic/",
    "[Rr]elease/",
    "[Rr]eleases/",
    "x64/",
    "x86/",
    "[Ww][Ii][Nn]32/",
    "[Aa][Rr][Mm]/",
    "[Aa][Rr][Mm]64/",
    "bld/",
    "[Bb]in/",
    "[Oo]bj/",
    "[Ll]og/",
    "[Ll]ogs/",
    "",
    "# .NET Core",
    "project.lock.json",
    "project.fragment.lock.json",
    "artifacts/",
    "",
    "# ASP.NET Scaffolding",
    "ScaffoldingReadMe.txt",
    "",
    "# NuGet Packages",
    "*.nupkg",
    "# NuGet Symbol Packages",
    "*.snupkg",
    "",
    "# dotenv environment variables file",
    ".env",
    "",
    "# Others",
    "~$*",
    "*~",
    "CodeCoverage/",
    "",
    "# MSBuild Binary and Structured Log",
    "*.binlog",
    "",
    "# MSTest test Results",
    "[Tt]est[Rr]esult*/",
    "[Bb]uild[Ll]og.*",
    "",
    "# NUnit",
    "*.VisualState.xml",
    "TestResult.xml",
    "nunit-*.xml"
   ]
  },
  "VisualStudio": {
   "path": "VisualStudio.gitignore",
   "kind": "editor",
   "aliases": [
    "vs",
    "visual-studio"
   ],
   "lines": [
    "## Ignore Visual Studio temporary files, build results, and",
    "## files generated by popular Visual Studio add-ons.",
    "##",
    "## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore",
    "",
    "# User-specific files",
    "*.rsuser",
    "*.suo",
    "*.user",
    "*.userosscache",
    "*.sln.docstates",
    "*.env",
    "",
    "# User-specific files (MonoDevelop/Xamarin Studio)",
    "*.userprefs",
    "",
    "# Mono auto generated files",
    "mono_crash.*",
    "",
    "# Build results",
    "[Dd]ebug/",
    "[Dd]ebugPublic/",
    "[Rr]elease/",
    "[Rr]eleases/",
    "",
    "[Dd]ebug/x64/",
    "[Dd]ebugPublic/x64/",
    "[Rr]elease/x64/",
    "[Rr]eleases/x64/",
    "bin/x64/",
    "obj/x64/",
    "",
    "[Dd]ebug/x86/",
    "[Dd]ebugPublic/x86/",
    "[Rr]elease/x86/",
    "[Rr]eleases/x86/",
    "bin/x86/",
    "obj/x86/",
    "",
    "[Ww][Ii][Nn]32/",
    "[Aa][Rr][Mm]/",
    "[Aa][Rr][Mm]64/",
    "[Aa][Rr][Mm]64[Ee][Cc]/",
    "bld/",
    "[Oo]bj/",
    "[Oo]ut/",
    "[Ll]og/",
    "[Ll]ogs/",
    "",
    "# Build results on 'Bin' directories",
    "**/[Bb]in/*",
    "# Uncomment if you have tasks that rely on *.refresh files to move binaries",
    "# (https://github.com/github/gitignore/pull/3736)",
    "#!**/[Bb]in/*.refresh",
    "",
    "# Visual Studio 2015/2017 cache/options directory",
    ".vs/",
    "# Uncomment if you have tasks that create the project's static files in wwwroot",
    "#wwwroot/",
    "",
    "# Visual Studio 2017 auto generated files",
    "Generated\\ Files/",
    "",
    "# MSTest test Results",
    "[Tt]est[Rr]esult*/",
    "[Bb]uild[Ll]og.*",
    "*.trx",
    "",
    "# NUnit",
    "*.VisualState.xml",
    "TestResult.xml",
    "nunit-*.xml",
    "",
    "# Approval Tests result files",
    "*.received.*",
    "",
    "# Build Results of an ATL Project",
    "[Dd]ebugPS/",
    "[Rr]eleasePS/",
    "dlldata.c",
    "",
    "# Benchmark Results",
    "BenchmarkDotNet.Artifacts/",
    "",
    "# .NET Core",
    "project.lock.json",
    "project.fragment.lock.json",
    "artifacts/",
    ".artifacts/",
    "",
    "# ASP.NET Scaffolding",
    "ScaffoldingReadMe.txt",
    "",
    "# StyleCop",
    "StyleCopReport.xml",
    "",
    "# Files built by Visual Studio",
    "*_i.c",
    "*_p.c",
    "*_h.h",
    "*.ilk",
    "*.meta",
    "*.obj",
    "*.idb",
    "*.iobj",
    "*.pch",
    "*.pdb",
    "*.ipdb",
    "*.pgc",
    "*.pgd",
    "*.rsp",
    "# but not Directory.Build.rsp, as it configures directory-level build defaults",
    "!Directory.Build.rsp",
    "*.sbr",
    "*.tlb",
    "*.tli",
    "*.tlh",
    "*.tmp",
    "*.tmp_proj",
    "*_wpftmp.csproj",
    "*.log",
    "*.tlog",
    "*.vspscc",
    "*.vssscc",
    ".builds",
    "*.pidb",
    "*.svclog",
    "*.scc",
    "",
    "# Chutzpah Test files",
    "_Chutzpah*",
    "",
    "# Visual C++ cache files",
    "ipch/",
    "*.aps",
    "*.ncb",
    "*.opendb",
    "*.opensdf",
    "*.sdf",
    "*.cachefile",
    "*.VC.db",
    "*.VC.VC.opendb",
    "",
    "# Visual Studio profiler",
    "*.psess",
    "*.vsp",
    "*.vspx",
    "*.sap",
    "",
    "# Visual Studio Trace Files",
    "*.e2e",
    "",
    "# TFS 2012 Local Workspace",
    "$tf/",
    "",
    "# Guidance Automation Toolkit",
    "*.gpState",
    "",
    "# ReSharper is a .NET coding add-in",
    "_ReSharper*/",
    "*.[Rr]e[Ss]harper",
    "*.DotSettings.user",
    "",
    "# TeamCity is a build add-in",
    "_TeamCity*",
    "",
    "# DotCover is a Code Coverage Tool",
    "*.dotCover",
    "",
    "# AxoCover is a Code Coverage Tool",
    ".axoCover/*",
    "!.axoCover/settings.json",
    "",
    "# Coverlet is a free, cross platform Code Coverage Tool",
    "coverage*.json",
    "coverage*.xml",
    "coverage*.info",
    "",
    "# Visual Studio code coverage results",
    "*.coverage",
    "*.coveragexml",
    "",
    "# NCrunch",
    "_NCrunch_*",
    ".NCrunch_*",
    ".*crunch*.local.xml",
    "nCrunchTemp_*",
    "",
    "# MightyMoose",
    "*.mm.*",
    "AutoTest.Net/",
    "",
    "# Web workbench (sass)",
    ".sass-cache/",
    "",
    "# Installshield output folder",
    "[Ee]xpress/",
    "",
    "# DocProject is a documentation generator add-in",
    "DocProject/buildhelp/",
    "DocProject/Help/*.HxT",
    "DocProject/Help/*.HxC",
    "DocProject/Help/*.hhc",
    "DocProject/Help/*.hhk",
    "DocProject/Help/*.hhp",
    "DocProject/Help/Html2",
    "DocProject/Help/html",
    "",
    "# Click-Once directory",
    "publish/",
    "",
    "# Publish Web Output",
    "*.[Pp]ublish.xml",
    "*.azurePubxml",
    "# Note: Comment the next line if you want to checkin your web deploy settings,",
    "# but database connection strings (with potential passwords) will be unencrypted",
    "*.pubxml",
    "*.publishproj",
    "",
    "# Microsoft Azure Web App publish settings. Comment the next line if you want to",
    "# checkin your Azure Web App publish settings, but sensitive information contained",
    "# in these scripts will be unencrypted",
    "PublishScripts/",
    "",
    "# NuGet Packages",
    "*.nupkg",
    "# NuGet Symbol Packages",
    "*.snupkg",
    "# The packages folder can be ignored because of Package Restore",
    "**/[Pp]ackages/*",
    "# except build/, which is used as an MSBuild target.",
    "!**/[Pp]ackages/build/",
    "# Uncomment if necessary however generally it will be regenerated when needed",
    "#!**/[Pp]ackages/repositories.config",
    "# NuGet v3's project.json files produces more ignorable files",
    "*.nuget.props",
    "*.nuget.targets",
    "",
    "# Microsoft Azure Build Output",
    "csx/",
    "*.build.csdef",
    "",
    "# Microsoft Azure Emulator",
    "ecf/",
    "rcf/",
    "",
    "# Windows Store app package directories and files",
    "AppPackages/",
    "BundleArtifacts/",
    "Package.StoreAssociation.xml",
    "_pkginfo.txt",
    "*.appx",
    "*.appxbundle",
    "*.appxupload",
    "",
    "# Visual Studio cache files",
    "# files ending in .cache can be ignored",
    "*.[Cc]ache",
    "# but keep track of directories ending in .cache",
    "!?*.[Cc]ache/",
    "",
    "# Others",
    "ClientBin/",
    "~$*",
    "*~",
    "*.dbmdl",
    "*.dbproj.schemaview",
    "*.jfm",
    "*.pfx",
    "*.publishsettings",
    "orleans.codegen.cs",
    "",
    "# Since there are multiple workflows, uncomment next line to ignore bower_components",
    "# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)",
    "#bower_components/",
    "",
    "# RIA/Silverlight projects",
    "Generated_Code/",
    "",
    "# Backup & report files from converting an old project file",
    "# to a newer Visual Studio version. Backup files are not needed,",
    "# because we have git ;-)",
    "_UpgradeReport_Files/",
    "Backup*/",
    "UpgradeLog*.XML",
    "UpgradeLog*.htm",
    "ServiceFabricBackup/",
    "*.rptproj.bak",
    "",
    "# SQL Server files",
    "*.mdf",
    "*.ldf",
    "*.ndf",
    "",
    "# Business Intelligence projects",
    "*.rdl.data",
    "*.bim.layout",
    "*.bim_*.settings",
    "*.rptproj.rsuser",
    "*- [Bb]ackup.rdl",
    "*- [Bb]ackup ([0-9]).rdl",
    "*- [Bb]ackup ([0-9][0-9]).rdl",
    "",
    "# Microsoft Fakes",
    "FakesAssemblies/",
    "",
    "# GhostDoc plugin setting file",
    "*.GhostDoc.xml",
    "",
    "# Node.js Tools for Visual Studio",
    ".ntvs_analysis.dat",
    "node_modules/",
    "",
    "# Visual Studio 6 build log",
    "*.plg",
    "",
    "# Visual Studio 6 workspace options file",
    "*.opt",
    "",
    "# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)",
    "*.vbw",
    "",
    "# Visual Studio 6 workspace and project file (working project files containing files to include in project)",
    "*.dsw",
    "*.dsp",
    "",
    "# Visual Studio 6 technical files",
    "*.ncb",
    "*.aps",
    "",
    "# Visual Studio LightSwitch build output",
    "**/*.HTMLClient/GeneratedArtifacts",
    "**/*.DesktopClient/GeneratedArtifacts",
    "**/*.DesktopClient/ModelManifest.xml",
    "**/*.Server/GeneratedArtifacts",
    "**/*.Server/ModelManifest.xml",
    "_Pvt_Extensions",
    "",
    "# Paket dependency manager",
    "**/.paket/paket.exe",
    "paket-files/",
    "",
    "# FAKE - F# Make",
    "**/.fake/",
    "",
    "# CodeRush personal settings",
    "**/.cr/personal",
    "",
    "# Python Tools for Visual Studio (PTVS)",
    "**/__pycache__/",
    "*.pyc",
    "",
    "# Cake - Uncomment if you are using it",
    "#tools/**",
    "#!tools/packages.config",
    "",
    "# Tabs Studio",
    "*.tss",
    "",
    "# Telerik's JustMock configuration file",
    "*.jmconfig",
    "",
    "# BizTalk build output",
    "*.btp.cs",
    "*.btm.cs",
    "*.odx.cs",
    "*.xsd.cs",
    "",
    "# OpenCover UI analysis results",
    "OpenCover/",
    "",
    "# Azure Stream Analytics local run output",
    "ASALocalRun/",
    "",
    "# MSBuild Binary and Structured Log",
    "*.binlog",
    "MSBuild_Logs/",
    "",
    "# AWS SAM Build and Temporary Artifacts folder",
    ".aws-sam",
    "",
    "# NVidia Nsight GPU debugger configuration file",
    "*.nvuser",
    "",
    "# MFractors (Xamarin productivity tool) working folder",
    "**/.mfractor/",
    "",
    "# Local History for Visual Studio",
    "**/.localhistory/",
    "",
    "# Visual Studio History (VSHistory) files",
    ".vshistory/",
    "",
    "# BeatPulse healthcheck temp database",
    "healthchecksdb",
    "",
    "# Backup folder for Package Reference Convert tool in Visual Studio 2017",
    "MigrationBackup/",
    "",
    "# Ionide (cross platform F# VS Code tools) working folder",
    "**/.ionide/",
    "",
    "# Fody - auto-generated XML schema",
    "FodyWeavers.xsd",
    "",
    "# VS Code files for those working on multiple tools",
    ".vscode/*",
    "!.vscode/settings.json",
    "!.vscode/tasks.json",
    "!.vscode/launch.json",
    "!.vscode/extensions.json",
    "!.vscode/*.code-snippets",
    "",
    "# Local History for Visual Studio Code",
    ".history/",
    "",
    "# Built Visual Studio Code Extensions",
    "*.vsix",
    "",
    "# Windows Installer files from build outputs",
    "*.cab",
    "*.msi",
    "*.msix",
    "*.msm",
    "*.msp",
    "",
    "# Official VS Code C# Dev Kit Extension exclusion",
    "#*.lscache"
   ]
  },
  "Swift": {
   "path": "Swift.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Xcode",
    "#",
    "# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore",
    "",
    "## User settings",
    "xcuserdata/",
    "",
    "## Obj-C/Swift specific",
    "*.hmap",
    "",
    "## App packaging",
    "*.ipa",
    "*.dSYM.zip",
    "*.dSYM",
    "",
    "## Playgrounds",
    "timeline.xctimeline",
    "playground.xcworkspace",
    "",
    "# Swift Package Manager",
    "#",
    "# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.",
    "# Packages/",
    "# Package.pins",
    "# Package.resolved",
    "# *.xcodeproj",
    "#",
    "# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata",
    "# hence it is not needed unless you have added a package configuration file to your project",
    "# .swiftpm",
    "",
    ".build/",
    "",
    "# CocoaPods",
    "#",
    "# We recommend against adding the Pods directory to your .gitignore. However",
    "# you should judge for yourself, the pros and cons are mentioned at:",
    "# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control",
    "#",
    "# Pods/",
    "#",
    "# Add this line if you want to avoid checking in source code from the Xcode workspace",
    "# *.xcworkspace",
    "",
    "# Carthage",
    "#",
    "# Add this line if you want to avoid checking in source code from Carthage dependencies.",
    "# Carthage/Checkouts",
    "",
    "Carthage/Build/",
    "",
    "# fastlane",
    "#",
    "# It is recommended to not store the screenshots in the git repo.",
    "# Instead, use fastlane to re-generate the screenshots whenever they are needed.",
    "# For more information about the recommended setup visit:",
    "# https://docs.fastlane.tools/best-practices/source-control/#source-control",
    "",
    "fastlane/report.xml",
    "fastlane/Preview.html",
    "fastlane/screenshots/**/*.png",
    "fastlane/test_output"
   ]
  },
  "Objective-C": {
   "path": "Objective-C.gitignore",
   "kind": "language",
   "aliases": [
    "objc"
   ],
   "lines": [
    "# Xcode",
    "#",
    "# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore",
    "",
    "## User settings",
    "xcuserdata/",
    "",
    "## Obj-C/Swift specific",
    "*.hmap",
    "",
    "## App packaging",
    "*.ipa",
    "*.dSYM.zip",
    "*.dSYM",
    "",
    "# CocoaPods",
    "#",
    "# We recommend against adding the Pods directory to your .gitignore. However",
    "# you should judge for yourself, the pros and cons are mentioned at:",
    "# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control",
    "#",
    "# Pods/",
    "#",
    "# Add this line if you want to avoid checking in source code from the Xcode workspace",
    "# *.xcworkspace",
    "",
    "# Carthage",
    "#",
    "# Add this line if you want to avoid checking in source code from Carthage dependencies.",
    "# Carthage/Checkouts",
    "",
    "Carthage/Build/",
    "",
    "# fastlane",
    "#",
    "# It is recommended to not store the screenshots in the git repo.",
    "# Instead, use fastlane to re-generate the screenshots whenever they are needed.",
    "# For more information about the recommended setup visit:",
    "# https://docs.fastlane.tools/best-practices/source-control/#source-control",
    "",
    "fastlane/report.xml",
    "fastlane/Preview.html",
    "fastlane/screenshots/**/*.png",
    "fastlane/test_output"
   ]
  },
  "Ruby": {
   "path": "Ruby.gitignore",
   "kind": "language",
   "aliases": [
    "gem",
    "bundler"
   ],
   "lines": [
    "*.gem",
    "*.rbc",
    "/.config",
    "/coverage/",
    "/InstalledFiles",
    "/pkg/",
    "/spec/reports/",
    "/spec/examples.txt",
    "/test/tmp/",
    "/test/version_tmp/",
    "/tmp/",
    "",
    "# Used by dotenv library to load environment variables.",
    "# .env",
    "",
    "# Ignore Byebug command history file.",
    ".byebug_history",
    "",
    "## Specific to RubyMotion:",
    ".dat*",
    ".repl_history",
    "build/",
    "*.bridgesupport",
    "build-iPhoneOS/",
    "build-iPhoneSimulator/",
    "",
    "## Specific to RubyMotion (use of CocoaPods):",
    "#",
    "# We recommend against adding the Pods directory to your .gitignore. However",
    "# you should judge for yourself, the pros and cons are mentioned at:",
    "# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control",
    "#",
    "# vendor/Pods/",
    "",
    "## Documentation cache and generated files:",
    "/.yardoc/",
    "/_yardoc/",
    "/doc/",
    "/rdoc/",
    "",
    "## Environment normalization:",
    "/.bundle/",
    "/vendor/bundle",
    "/lib/bundler/man/",
    "",
    "# for a library or gem, you might want to ignore these files since the code is",
    "# intended to run in multiple environments; otherwise, check them in:",
    "# Gemfile.lock",
    "# .ruby-version",
    "# .ruby-gemset",
    "",
    "# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:",
    ".rvmrc",
    "",
    "# Used by RuboCop. Remote config files pulled in from inherit_from directive.",
    "# .rubocop-https?--*"
   ]
  },
  "Rails": {
   "path": "Rails.gitignore",
   "kind": "framework",
   "aliases": [
    "rubyonrails",
    "ruby-on-rails"
   ],
   "lines": [
    "*.rbc",
    "capybara-*.html",
    ".rspec",
    "/db/*.sqlite3",
    "/db/*.sqlite3-journal",
    "/db/*.sqlite3-[0-9]*",
    "/public/system",
    "/coverage/",
    "/spec/tmp",
    "*.orig",
    "rerun.txt",
    "pickle-email-*.html",
    "",
    "# Ignore all logfiles and tempfiles.",
    "/log/*",
    "/tmp/*",
    "!/log/.keep",
    "!/tmp/.keep",
    "",
    "# TODO Comment out this rule if you are OK with secrets being uploaded to the repo",
    "config/initializers/secret_token.rb",
    "config/master.key",
    "",
    "# Only include if you have production secrets in this file, which is no longer a Rails default",
    "# config/secrets.yml",
    "",
    "# dotenv, dotenv-rails",
    "# TODO Comment out these rules if environment variables can be committed",
    ".env",
    ".env*.local",
    "",
    "## Environment normalization:",
    "/.bundle",
    "/vendor/bundle",
    "",
    "# these should all be checked in to normalize the environment:",
    "# Gemfile.lock, .ruby-version, .ruby-gemset",
    "",
    "# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:",
    ".rvmrc",
    "",
    "# if using bower-rails ignore default bower_components path bower.json files",
    "/vendor/assets/bower_components",
    "*.bowerrc",
    "bower.json",
    "",
    "# Ignore pow environment settings",
    ".powenv",
    "",
    "# Ignore Byebug command history file.",
    ".byebug_history",
    "",
    "# Ignore node_modules",
    "node_modules/",
    "",
    "# Ignore precompiled javascript packs",
    "/public/packs",
    "/public/packs-test",
    "/public/assets",
    "",
    "# Ignore yarn files",
    "/yarn-error.log",
    "yarn-debug.log*",
    ".yarn-integrity",
    "",
    "# Ignore uploaded files in development",
    "/storage/*",
    "!/storage/.keep",
    "/public/uploads"
   ]
  },
  "Elixir": {
   "path": "Elixir.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "/_build",
    "/cover",
    "/deps",
    "/doc",
    "/.fetch",
    "erl_crash.dump",
    "*.ez",
    "*.beam",
    "/config/*.secret.exs",
    ".elixir_ls/"
   ]
  },
  "Haskell": {
   "path": "Haskell.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "dist",
    "dist-*",
    "cabal-dev",
    "*.o",
    "*.hi",
    "*.hie",
    "*.chi",
    "*.chs.h",
    "*.dyn_o",
    "*.dyn_hi",
    ".hpc",
    ".hsenv",
    ".cabal-sandbox/",
    "cabal.sandbox.config",
    "*.prof",
    "*.aux",
    "*.hp",
    "*.eventlog",
    ".stack-work/",
    "cabal.project.local",
    "cabal.project.local~",
    ".HTF/",
    ".ghc.environment.*"
   ]
  },
  "R": {
   "path": "R.gitignore",
   "kind": "language",
   "aliases": [
    "rstats"
   ],
   "lines": [
    "# History files",
    ".Rhistory",
    ".Rapp.history",
    "",
    "# Session Data files",
    ".RData",
    ".RDataTmp",
    "",
    "# User-specific files",
    ".Ruserdata",
    "",
    "# Example code in package build process",
    "*-Ex.R",
    "",
    "# Output files from R CMD build",
    "/*.tar.gz",
    "",
    "# Output files from R CMD check",
    "/*.Rcheck/",
    "",
    "# RStudio files",
    ".Rproj.user/",
    "",
    "# produced vignettes",
    "vignettes/*.html",
    "vignettes/*.pdf",
    "",
    "# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3",
    ".httr-oauth",
    "",
    "# knitr and R markdown default cache directories",
    "*_cache/",
    "/cache/",
    "",
    "# Temporary files created by R markdown",
    "*.utf8.md",
    "*.knit.md",
    "",
    "# R Environment Variables",
    ".Renviron",
    ".env",
    "",
    "# pkgdown site",
    "docs/",
    "",
    "# translation temp files",
    "po/*~",
    "",
    "# RStudio Connect folder",
    "rsconnect/"
   ]
  },
  "Julia": {
   "path": "Julia.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# Files generated by invoking Julia with --code-coverage",
    "*.jl.cov",
    "*.jl.*.cov",
    "",
    "# Files generated by invoking Julia with --track-allocation",
    "*.jl.mem",
    "*.jl.*.mem",
    "",
    "# System-specific files and directories generated by the BinaryProvider and BinDeps packages",
    "# They contain absolute paths specific to the host computer, and so should not be committed",
    "deps/deps.jl",
    "deps/build.log",
    "deps/downloads/",
    "deps/usr/",
    "deps/src/",
    "",
    "# Build artifacts for creating documentation generated by the Documenter package",
    "docs/build/",
    "docs/site/",
    "",
    "# File generated by Pkg, the package manager, based on a corresponding Project.toml",
    "# It records a fixed state of all packages used by the project. As such, it should not be",
    "# committed for packages, but should be committed for applications that require a static",
    "# environment.",
    "Manifest*.toml",
    "",
    "# File generated by the Preferences package to store local preferences",
    "LocalPreferences.toml",
    "JuliaLocalPreferences.toml",
    "",
    "# Conda environment and metadata created in the project directory by the CondaPkg package",
    ".CondaPkg/"
   ]
  },
  "Dart": {
   "path": "Dart.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    "# See https://www.dartlang.org/guides/libraries/private-files",
    "",
    "# Files and directories created by pub",
    ".dart_tool/",
    ".packages",
    "build/",
    "# If you're building an application, you may want to check-in your pubspec.lock",
    "pubspec.lock",
    "",
    "# Directory created by dartdoc",
    "# If you don't generate documentation locally you can remove this line.",
    "doc/api/",
    "",
    "# dotenv environment variables file",
    ".env*",
    "",
    "# Avoid committing generated Javascript files:",
    "*.dart.js",
    "# Produced by the --dump-info flag.",
    "*.info.json",
    "# When generated by dart2js. Don't specify *.js if your",
    "# project includes source files written in JavaScript.",
    "*.js",
    "*.js_",
    "*.js.deps",
    "*.js.map",
    "",
    ".flutter-plugins",
    ".flutter-plugins-dependencies"
   ]
  },
  "Flutter": {
   "path": "Flutter.gitignore",
   "kind": "framework",
   "aliases": [],
   "lines": [
    "# Miscellaneous",
    "*.class",
    "*.lock",
    "*.log",
    "*.pyc",
    "*.swp",
    ".buildlog/",
    ".history",
    "",
    "",
    "",
    "# Flutter repo-specific",
    "/bin/cache/",
    "/bin/internal/bootstrap.bat",
    "/bin/internal/bootstrap.sh",
    "/bin/mingit/",
    "/dev/benchmarks/mega_gallery/",
    "/dev/bots/.recipe_deps",
    "/dev/bots/android_tools/",
    "/dev/devicelab/ABresults*.json",
    "/dev/docs/doc/",
    "/dev/docs/flutter.docs.zip",
    "/dev/docs/lib/",
    "/dev/docs/pubspec.yaml",
    "/dev/integration_tests/**/xcuserdata",
    "/dev/integration_tests/**/Pods",
    "/packages/flutter/coverage/",
    "version",
    "analysis_benchmark.json",
    "",
    "# packages file containing multi-root paths",
    ".packages.generated",
    "",
    "# Flutter/Dart/Pub related",
    "**/doc/api/",
    ".dart_tool/",
    ".flutter-plugins",
    ".flutter-plugins-dependencies",
    "**/generated_plugin_registrant.dart",
    ".packages",
    ".pub-preload-cache/",
    ".pub/",
    "build/",
    "flutter_*.png",
    "linked_*.ds",
    "unlinked.ds",
    "unlinked_spec.ds",
    "",
    "# Android related",
    "**/android/**/gradle-wrapper.jar",
    ".gradle/",
    "**/android/captures/",
    "**/android/gradlew",
    "**/android/gradlew.bat",
    "**/android/local.properties",
    "**/android/**/GeneratedPluginRegistrant.java",
    "**/android/key.properties",
    "*.jks",
    "",
    "# iOS/XCode related",
    "**/ios/**/*.mode1v3",
    "**/ios/**/*.mode2v3",
    "**/ios/**/*.moved-aside",
    "**/ios/**/*.pbxuser",
    "**/ios/**/*.perspectivev3",
    "**/ios/**/*sync/",
    "**/ios/**/.sconsign.dblite",
    "**/ios/**/.tags*",
    "**/ios/**/.vagrant/",
    "**/ios/**/DerivedData/",
    "**/ios/**/Icon?",
    "**/ios/**/Pods/",
    "**/ios/**/.symlinks/",
    "**/ios/**/profile",
    "**/ios/**/xcuserdata",
    "**/ios/.generated/",
    "**/ios/Flutter/.last_build_id",
    "**/ios/Flutter/App.framework",
    "**/ios/Flutter/Flutter.framework",
    "**/ios/Flutter/Flutter.podspec",
    "**/ios/Flutter/Generated.xcconfig",
    "**/ios/Flutter/ephemeral",
    "**/ios/Flutter/app.flx",
    "**/ios/Flutter/app.zip",
    "**/ios/Flutter/flutter_assets/",
    "**/ios/Flutter/flutter_export_environment.sh",
    "**/ios/ServiceDefinitions.json",
    "**/ios/Runner/GeneratedPluginRegistrant.*",
    "",
    "# macOS",
    "**/Flutter/ephemeral/",
    "**/Pods/",
    "**/macos/Flutter/GeneratedPluginRegistrant.swift",
    "**/macos/Flutter/ephemeral",
    "**/xcuserdata/",
    "",
    "# Windows",
    "**/windows/flutter/generated_plugin_registrant.cc",
    "**/windows/flutter/generated_plugin_registrant.h",
    "**/windows/flutter/generated_plugins.cmake",
    "",
    "# Linux",
    "**/linux/flutter/generated_plugin_registrant.cc",
    "**/linux/flutter/generated_plugin_registrant.h",
    "**/linux/flutter/generated_plugins.cmake",
    "",
    "# Coverage",
    "coverage/",
    "",
    "# Symbols",
    "app.*.symbols",
    "",
    "# Exceptions to above rules.",
    "!**/ios/**/default.mode1v3",
    "!**/ios/**/default.mode2v3",
    "!**/ios/**/default.pbxuser",
    "!**/ios/**/default.perspectivev3",
    "!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages",
    "!/dev/ci/**/Gemfile.lock"
   ]
  },
  "Zig": {
   "path": "Zig.gitignore",
   "kind": "language",
   "aliases": [],
   "lines": [
    ".zig-cache/",
    "zig-out/",
    "zig-pkg/",
    "*.o"
   ]
  },
  "Android": {
   "path": "Android.gitignore",
   "kind": "platform",
   "aliases": [],
   "lines": [
    "# Gradle files",
    ".gradle/",
    "build/",
    ".kotlin/",
    "",
    "# Local configuration file (sdk path, etc)",
    "local.properties",
    "",
    "# Log/OS Files",
    "*.log",
    "",
    "# Android Studio generated files and folders",
    "captures/",
    ".externalNativeBuild/",
    ".cxx/",
    "*.aab",
    "*.apk",
    "output-metadata.json",
    "",
    "# IntelliJ",
    "*.iml",
    ".idea/",
    "misc.xml",
    "deploymentTargetDropDown.xml",
    "render.experimental.xml",
    "",
    "# Keystore files",
    "*.jks",
    "*.keystore",
    "",
    "# Google Services (e.g. APIs or Firebase)",
    "google-services.json",
    "",
    "# Android Profiling",
    "*.hprof"
   ]
  },
  "Unity": {
   "path": "Unity.gitignore",
   "kind": "framework",
   "aliases": [
    "unity3d"
   ],
   "lines": [
    "# This .gitignore file should be placed at the root of your Unity project directory",
    "#",
    "# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore",
    "#",
    "# Recommended: add any editor/OS/tool-specific ignore rules from the Global/ templates as needed.",
    "# See: https://github.com/github/gitignore/tree/main/Global",
    "#",
    ".utmp/",
    "/[Ll]ibrary/",
    "/[Tt]emp/",
    "/[Oo]bj/",
    "/[Bb]uild/",
    "/[Bb]uilds/",
    "/[Ll]ogs/",
    "/[Uu]ser[Ss]ettings/",
    "*.log",
    "",
    "# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.",
    "*.blend1",
    "*.blend1.meta",
    "",
    "# MemoryCaptures can get excessive in size.",
    "# They also could contain extremely sensitive data",
    "/[Mm]emoryCaptures/",
    "",
    "# Recordings can get excessive in size",
    "/[Rr]ecordings/",
    "",
    "# Uncomment this line if you wish to ignore the asset store tools plugin",
    "# /[Aa]ssets/AssetStoreTools*",
    "",
    "# Autogenerated Jetbrains Rider plugin",
    "/[Aa]ssets/Plugins/Editor/JetBrains*",
    "# Jetbrains Rider personal-layer settings",
    "*.DotSettings.user",
    "",
    "# Visual Studio cache directory",
    ".vs/",
    "",
    "# Gradle cache directory",
    ".gradle/",
    "",
    "# Autogenerated VS/MD/Consulo solution and project files",
    "ExportedObj/",
    ".consulo/",
    "*.csproj",
    "*.unityproj",
    "*.sln",
    "*.slnx",
    "*.suo",
    "*.tmp",
    "*.user",
    "*.userprefs",
    "*.pidb",
    "*.booproj",
    "*.svd",
    "*.pdb",
    "*.mdb",
    "*.opendb",
    "*.VC.db",
    "",
    "# Unity3D generated meta files",
    "*.pidb.meta",
    "*.pdb.meta",
    "*.mdb.meta",
    "",
    "# Unity3D generated file on crash reports",
    "sysinfo.txt",
    "",
    "# Mono auto generated files",
    "mono_crash.*",
    "",
    "# Builds",
    "*.apk",
    "*.aab",
    "*.unitypackage",
    "*.unitypackage.meta",
    "*.app",
    "",
    "# Crashlytics generated file",
    "crashlytics-build.properties",
    "",
    "# TestRunner generated files",
    "InitTestScene*.unity*",
    "",
    "# Addressables default ignores, before user customizations",
    "/ServerData",
    "/[Aa]ssets/StreamingAssets/aa*",
    "/[Aa]ssets/AddressableAssetsData/link.xml*",
    "/[Aa]ssets/Addressables_Temp*",
    "# By default, Addressables content builds will generate addressables_content_state.bin",
    "# files in platform-specific subfolders, for example:",
    "# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin",
    "/[Aa]ssets/AddressableAssetsData/*/*.bin*",
    "",
    "# Visual Scripting auto-generated files",
    "/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db",
    "/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta",
    "/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers",
    "/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta",
    "",
    "# Auto-generated scenes by play mode tests",
    "/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*",
    "",
    "# UI Toolkit auto generated files",
    "/UIElementsSchema/",
    "",
    "# Auto-generated cache in Assets folder",
    "/[Aa]ssets/[Ss]ceneDependencyCache*"
   ]
  },
  "UnrealEngine": {
   "path": "UnrealEngine.gitignore",
   "kind": "framework",
   "aliases": [
    "unreal",
    "ue4",
    "ue5"
   ],
   "lines": [
    "# Visual Studio 2015 user specific files",
    ".vs/",
    "",
    "# Compiled Object files",
    "*.slo",
    "*.lo",
    "*.o",
    "*.obj",
    "",
    "# Precompiled Headers",
    "*.gch",
    "*.pch",
    "",
    "# Compiled Dynamic libraries",
    "*.so",
    "*.dylib",
    "*.dll",
    "",
    "# Fortran module files",
    "*.mod",
    "",
    "# Compiled Static libraries",
    "*.lai",
    "*.la",
    "*.a",
    "*.lib",
    "",
    "# Executables",
    "*.exe",
    "*.out",
    "*.app",
    "*.ipa",
    "",
    "# These project files can be generated by the engine",
    "*.xcodeproj",
    "*.xcworkspace",
    "*.sln",
    "*.suo",
    "*.opensdf",
    "*.sdf",
    "*.VC.db",
    "*.VC.opendb",
    ".vsconfig",
    "",
    "# Precompiled Assets",
    "SourceArt/**/*.png",
    "SourceArt/**/*.tga",
    "",
    "# Binary Files",
    "Binaries/*",
    "Plugins/**/Binaries/*",
    "",
    "# Builds",
    "Build/*",
    "",
    "# Whitelist PakBlacklist-<BuildConfiguration>.txt files",
    "!Build/*/",
    "Build/*/**",
    "!Build/*/PakBlacklist*.txt",
    "",
    "# Don't ignore icon files in Build",
    "!Build/**/*.ico",
    "",
    "# Built data for maps",
    "*_BuiltData.uasset",
    "",
    "# Configuration files generated by the Editor",
    "Saved/*",
    "",
    "# Compiled source files for the engine to use",
    "Intermediate/*",
    "Plugins/**/Intermediate/*",
    "",
    "# Cache files for the editor to use",
    "DerivedDataCache/*"
   ]
  },
  "Terraform": {
   "path": "Terraform.gitignore",
   "kind": "tool",
   "aliases": [
    "tf"
   ],
   "lines": [
    "# Local .terraform directories",
    ".terraform/",
    "",
    "# .tfstate files",
    "*.tfstate",
    "*.tfstate.*",
    "",
    "# Crash log files",
    "crash.log",
    "crash.*.log",
    "",
    "# Exclude all .tfvars files, which are likely to contain sensitive data, such as",
    "# password, private keys, and other secrets. These should not be part of version",
    "# control as they are data points which are potentially sensitive and subject",
    "# to change depending on the environment.",
    "*.tfvars",
    "*.tfvars.json",
    "",
    "# Ignore override files as they are usually used to override resources locally and so",
    "# are not checked in",
    "override.tf",
    "override.tf.json",
    "*_override.tf",
    "*_override.tf.json",
    "",
    "# Ignore transient lock info files created by terraform apply",
    ".terraform.tfstate.lock.info",
    "",
    "# Include override files you do wish to add to version control using negated pattern",
    "# !example_override.tf",
    "",
    "# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan",
    "# example: *tfplan*",
    "",
    "# Ignore CLI configuration files",
    ".terraformrc",
    "terraform.rc",
    "",
    "# Optional: ignore graph output files generated by `terraform graph`",
    "# *.dot",
    "",
    "# Optional: ignore plan files saved before destroying Terraform configuration",
    "# Uncomment the line below if you want to ignore planout files.",
    "# planout"
   ]
  },
  "Laravel": {
   "path": "Laravel.gitignore",
   "kind": "framework",
   "aliases": [],
   "lines": [
    "/vendor/",
    "node_modules/",
    "npm-debug.log",
    "yarn-error.log",
    "",
    "# Laravel 4 specific",
    "bootstrap/compiled.php",
    "app/storage/",
    "",
    "# Laravel 5 & Lumen specific",
    "public/storage",
    "public/hot",
    "",
    "# Laravel 5 & Lumen specific with changed public path",
    "public_html/storage",
    "public_html/hot",
    "",
    "storage/*.key",
    ".env",
    "Homestead.yaml",
    "Homestead.json",
    "/.vagrant",
    ".phpunit.result.cache",
    "/.phpunit.cache",
    "",
    "/public/build",
    "/storage/pail",
    ".env.backup",
    ".env.production",
    ".phpactor.json",
    "auth.json"
   ]
  },
  "Nextjs": {
   "path": "Nextjs.gitignore",
   "kind": "framework",
   "aliases": [
    "next",
    "next.js"
   ],
   "lines": [
    "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.",
    "",
    "# dependencies",
    "/node_modules",
    "/.pnp",
    ".pnp.js",
    "",
    "# testing",
    "/coverage",
    "",
    "# next.js",
    "/.next/",
    "/out/",
    "",
    "# production",
    "/build",
    "",
    "# misc",
    ".DS_Store",
    "*.pem",
    "",
    "# debug",
    "npm-debug.log*",
    "yarn-debug.log*",
    "yarn-error.log*",
    "",
    "# local env files",
    ".env*.local",
    ".env",
    "",
    "# vercel",
    ".vercel",
    "",
    "# typescript",
    "*.tsbuildinfo",
    "next-env.d.ts"
   ]
  },
  "TeX": {
   "path": "TeX.gitignore",
   "kind": "language",
   "aliases": [
    "latex"
   ],
   "lines": [
    "## Core latex/pdflatex auxiliary files:",
    "*.aux",
    "*.lof",
    "*.log",
    "*.lot",
    "*.fls",
    "*.out",
    "*.toc",
    "*.fmt",
    "*.fot",
    "*.cb",
    "*.cb2",
    ".*.lb",
    "",
    "## Intermediate documents:",
    "*.dvi",
    "*.xdv",
    "*-converted-to.*",
    "# these rules might exclude image files for figures etc.",
    "# *.ps",
    "# *.eps",
    "# *.pdf",
    "",
    "## Generated if empty string is given at \"Please type another file name for output:\"",
    ".pdf",
    "",
    "## Bibliography auxiliary files (bibtex/biblatex/biber):",
    "*.bbl",
    "*.bbl-SAVE-ERROR",
    "*.bcf",
    "*.bcf-SAVE-ERROR",
    "*.blg",
    "*-blx.aux",
    "*-blx.bib",
    "*.run.xml",
    "",
    "## Build tool auxiliary files:",
    "*.fdb_latexmk",
    "*.synctex",
    "*.synctex(busy)",
    "*.synctex.gz",
    "*.synctex.gz(busy)",
    "*.pdfsync",
    "*.rubbercache",
    "rubber.cache",
    "",
    "## Build tool directories for auxiliary files",
    "# latexrun",
    "latex.out/",
    "",
    "## Auxiliary and intermediate files from other packages:",
    "# algorithms",
    "*.alg",
    "*.loa",
    "",
    "# achemso",
    "acs-*.bib",
    "",
    "# amsthm",
    "*.thm",
    "",
    "# attachfile2",
    "*.atfi",
    "",
    "# beamer",
    "*.nav",
    "*.pre",
    "*.snm",
    "*.vrb",
    "",
    "# changes",
    "*.soc",
    "*.loc",
    "",
    "# comment",
    "*.cut",
    "",
    "# context",
    "*.tuc",
    "*.tui",
    "*.tuo",
    "",
    "# cprotect",
    "*.cpt",
    "",
    "# elsarticle (documentclass of Elsevier journals)",
    "*.spl",
    "",
    "# endnotes",
    "*.ent",
    "",
    "# fixme",
    "*.lox",
    "",
    "# feynmf/feynmp",
    "*.mf",
    "*.mp",
    "*.t[1-9]",
    "*.t[1-9][0-9]",
    "*.tfm",
    "",
    "#(r)(e)ledmac/(r)(e)ledpar",
    "*.end",
    "*.?end",
    "*.[1-9]",
    "*.[1-9][0-9]",
    "*.[1-9][0-9][0-9]",
    "*.[1-9]R",
    "*.[1-9][0-9]R",
    "*.[1-9][0-9][0-9]R",
    "*.eledsec[1-9]",
    "*.eledsec[1-9]R",
    "*.eledsec[1-9][0-9]",
    "*.eledsec[1-9][0-9]R",
    "*.eledsec[1-9][0-9][0-9]",
    "*.eledsec[1-9][0-9][0-9]R",
    "",
    "# glossaries",
    "*.acn",
    "*.acr",
    "*.glg",
    "*.glg-abr",
    "*.glo",
    "*.glo-abr",
    "*.gls",
    "*.gls-abr",
    "*.glsdefs",
    "*.lzo",
    "*.lzs",
    "*.slg",
    "*.slo",
    "*.sls",
    "",
    "# uncomment this for glossaries-extra (will ignore makeindex's style files!)",
    "# *.ist",
    "",
    "# gnuplot",
    "*.gnuplot",
    "*.table",
    "",
    "# gnuplottex",
    "*-gnuplottex-*",
    "",
    "# gregoriotex",
    "*.gaux",
    "*.glog",
    "*.gtex",
    "",
    "# htlatex",
    "*.4ct",
    "*.4tc",
    "*.idv",
    "*.lg",
    "*.trc",
    "*.xref",
    "",
    "# hypdoc",
    "*.hd",
    "",
    "# hyperref",
    "*.brf",
    "",
    "# knitr",
    "*-concordance.tex",
    "# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files",
    "# *.tikz",
    "*-tikzDictionary",
    "",
    "# latexindent will create succesive backup files by default",
    "#*.bak*",
    "",
    "# listings",
    "*.lol",
    "",
    "# luatexja-ruby",
    "*.ltjruby",
    "",
    "# makeidx",
    "*.idx",
    "*.ilg",
    "*.ind",
    "",
    "# minitoc",
    "*.maf",
    "*.mlf",
    "*.mlt",
    "*.mtc[0-9]*",
    "*.slf[0-9]*",
    "*.slt[0-9]*",
    "*.stc[0-9]*",
    "",
    "# minted",
    "_minted*",
    "*.data.minted",
    "*.pyg",
    "",
    "# morewrites",
    "*.mw",
    "",
    "# newpax",
    "*.newpax",
    "",
    "# nomencl",
    "*.nlg",
    "*.nlo",
    "*.nls",
    "",
    "# pax",
    "*.pax",
    "",
    "# pdfpcnotes",
    "*.pdfpc",
    "",
    "# sagetex",
    "*.sagetex.sage",
    "*.sagetex.py",
    "*.sagetex.scmd",
    "",
    "# scrwfile",
    "*.wrt",
    "",
    "# spelling",
    "*.spell.bad",
    "*.spell.txt",
    "",
    "# svg",
    "svg-inkscape/",
    "",
    "# sympy",
    "*.sout",
    "*.sympy",
    "sympy-plots-for-*.tex/",
    "",
    "# pdfcomment",
    "*.upa",
    "*.upb",
    "",
    "# pythontex",
    "*.pytxcode",
    "pythontex-files-*/",
    "",
    "# tcolorbox",
    "*.listing",
    "",
    "# thmtools",
    "*.loe",
    "",
    "# TikZ & PGF",
    "*.dpth",
    "*.md5",
    "*.auxlock",
    "",
    "# titletoc",
    "*.ptc",
    "",
    "# todonotes",
    "*.tdo",
    "",
    "# vhistory",
    "*.hst",
    "*.ver",
    "",
    "# easy-todo",
    "*.lod",
    "",
    "# xcolor",
    "*.xcp",
    "",
    "# xmpincl",
    "*.xmpi",
    "",
    "# xindy",
    "*.xdy",
    "",
    "# xypic precompiled matrices and outlines",
    "*.xyc",
    "*.xyd",
    "",
    "# endfloat",
    "*.ttt",
    "*.fff",
    "",
    "# Latexian",
    "TSWLatexianTemp*",
    "",
    "## Editors:",
    "# WinEdt",
    "*.bak",
    "*.sav",
    "",
    "# latexindent.pl",
    "*.bak[0-9]*",
    "",
    "# Texpad",
    ".texpadtmp",
    "",
    "# LyX",
    "*.lyx~",
    "",
    "# Kile",
    "*.backup",
    "",
    "# gummi",
    ".*.swp",
    "",
    "# KBibTeX",
    "*~[0-9]*",
    "",
    "# TeXnicCenter",
    "*.tps",
    "",
    "# auto folder when using emacs and auctex",
    "./auto/*",
    "*.el",
    "",
    "# expex forward references with \\gathertags",
    "*-tags.tex",
    "",
    "# standalone packages",
    "*.sta",
    "",
    "# Makeindex log files",
    "*.lpz",
    "",
    "# xwatermark package",
    "*.xwm",
    "",
    "# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib",
    "# option is specified. Footnotes are the stored in a file with suffix Notes.bib.",
    "# Uncomment the next line to have this generated file ignored.",
    "#*Notes.bib"
   ]
  },
  "JupyterNotebooks": {
   "path": "community/Python/JupyterNotebooks.gitignore",
   "kind": "tool",
   "aliases": [
    "jupyter",
    "ipynb"
   ],
   "lines": [
    "# gitignore template for Jupyter Notebooks",
    "# website: http://jupyter.org/",
    "",
    ".ipynb_checkpoints",
    "*/.ipynb_checkpoints/*",
    "",
    "# IPython",
    "profile_default/",
    "ipython_config.py",
    "",
    "# Jupyter lab virtual documents",
    "# https://jupyterlab-lsp.readthedocs.io/en/2.x/Configuring.html#virtual_documents_dir",
    ".virtual_documents/",
    "",
    "# Remove previous ipynb_checkpoints",
    "#   git rm -r .ipynb_checkpoints/"
   ]
  },
  "macOS": {
   "path": "Global/macOS.gitignore",
   "kind": "os",
   "aliases": [
    "mac",
    "osx",
    "darwin"
   ],
   "lines": [
    "# General",
    ".DS_Store",
    ".localized",
    "__MACOSX/",
    ".AppleDouble",
    ".LSOverride",
    "Icon[\r]",
    "",
    "# Resource forks",
    "._*",
    "",
    "# Files and directories that might appear in the root of a volume",
    ".DocumentRevisions-V100",
    ".fseventsd",
    ".Spotlight-V100",
    ".TemporaryItems",
    ".Trashes",
    ".VolumeIcon.icns",
    ".com.apple.timemachine.donotpresent",
    ".com.apple.timemachine.supported",
    ".PKInstallSandboxManager",
    ".PKInstallSandboxManager-SystemSoftware",
    ".hotfiles.btree",
    ".vol",
    ".file",
    ".disk_label*",
    "lost+found",
    ".HFS+ Private Directory Data[\r]",
    "",
    "# Directories potentially created on remote AFP share",
    ".AppleDB",
    ".AppleDesktop",
    "Network Trash Folder",
    "Temporary Items",
    ".apdisk",
    "",
    "# Mac OS 6 to 9",
    "Desktop DB",
    "Desktop DF",
    "TheFindByContentFolder",
    "TheVolumeSettingsFolder",
    ".FBCIndex",
    ".FBCSemaphoreFile",
    ".FBCLockFolder",
    "",
    "# Quota system",
    ".quota.group",
    ".quota.user",
    ".quota.ops.group",
    ".quota.ops.user",
    "",
    "# TimeMachine",
    "Backups.backupdb",
    ".MobileBackups",
    ".MobileBackups.trash",
    "MobileBackups.trash",
    "tmbootpicker.efi"
   ]
  },
  "Windows": {
   "path": "Global/Windows.gitignore",
   "kind": "os",
   "aliases": [
    "win"
   ],
   "lines": [
    "# Windows thumbnail cache files",
    "Thumbs.db",
    "Thumbs.db:encryptable",
    "ehthumbs.db",
    "ehthumbs_vista.db",
    "",
    "# Dump file",
    "*.stackdump",
    "",
    "# Folder config file",
    "[Dd]esktop.ini",
    "",
    "# Recycle Bin used on file shares",
    "$RECYCLE.BIN/",
    "",
    "# Windows Installer files",
    "*.cab",
    "*.msi",
    "*.msix",
    "*.msm",
    "*.msp",
    "",
    "# Windows shortcuts",
    "*.lnk"
   ]
  },
  "Linux": {
   "path": "Global/Linux.gitignore",
   "kind": "os",
   "aliases": [],
   "lines": [
    "*~",
    "",
    "# temporary files which can be created if a process still has a handle open of a deleted file",
    ".fuse_hidden*",
    "",
    "# Metadata left by Dolphin file manager, which comes with KDE Plasma",
    ".directory",
    "",
    "# Linux trash folder which might appear on any partition or disk",
    ".Trash-*",
    "",
    "# .nfs files are created when an open file is removed but is still being accessed",
    ".nfs*",
    "",
    "# Log files created by default by the nohup command",
    "nohup.out"
   ]
  },
  "JetBrains": {
   "path": "Global/JetBrains.gitignore",
   "kind": "editor",
   "aliases": [
    "intellij",
    "idea",
    "pycharm",
    "webstorm",
    "goland",
    "clion",
    "rider"
   ],
   "lines": [
    "# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider",
    "# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839",
    "",
    "# User-specific stuff",
    ".idea/**/workspace.xml",
    ".idea/**/tasks.xml",
    ".idea/**/usage.statistics.xml",
    ".idea/**/dictionaries",
    ".idea/**/shelf",
    "",
    "# AWS User-specific",
    ".idea/**/aws.xml",
    "",
    "# Generated files",
    ".idea/**/contentModel.xml",
    "",
    "# Sensitive or high-churn files",
    ".idea/**/dataSources/",
    ".idea/**/dataSources.ids",
    ".idea/**/dataSources.local.xml",
    ".idea/**/sqlDataSources.xml",
    ".idea/**/dynamic.xml",
    ".idea/**/uiDesigner.xml",
    ".idea/**/dbnavigator.xml",
    "",
    "# Gradle",
    ".idea/**/gradle.xml",
    ".idea/**/libraries",
    "",
    "# Gradle and Maven with auto-import",
    "# When using Gradle or Maven with auto-import, you should exclude module files,",
    "# since they will be recreated, and may cause churn.  Uncomment if using",
    "# auto-import.",
    "# .idea/artifacts",
    "# .idea/compiler.xml",
    "# .idea/jarRepositories.xml",
    "# .idea/modules.xml",
    "# .idea/*.iml",
    "# .idea/modules",
    "# *.iml",
    "# *.ipr",
    "",
    "# CMake",
    "cmake-build-*/",
    "",
    "# Mongo Explorer plugin",
    ".idea/**/mongoSettings.xml",
    "",
    "# File-based project format",
    "*.iws",
    "",
    "# IntelliJ",
    "out/",
    "",
    "# mpeltonen/sbt-idea plugin",
    ".idea_modules/",
    "",
    "# JIRA plugin",
    "atlassian-ide-plugin.xml",
    "",
    "# Cursive Clojure plugin",
    ".idea/replstate.xml",
    "",
    "# SonarLint plugin",
    ".idea/sonarlint/",
    "# see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119",
    ".idea/sonarlint.xml",
    "",
    "# Crashlytics plugin (for Android Studio and IntelliJ)",
    "com_crashlytics_export_strings.xml",
    "crashlytics.properties",
    "crashlytics-build.properties",
    "fabric.properties",
    "",
    "# Editor-based HTTP Client",
    ".idea/httpRequests",
    "http-client.private.env.json",
    "",
    "# Android studio 3.1+ serialized cache file",
    ".idea/caches/build_file_checksums.ser",
    "",
    "# Apifox Helper cache",
    ".idea/.cache/.Apifox_Helper",
    ".idea/ApifoxUploaderProjectSetting.xml",
    "",
    "# Github Copilot persisted session migrations, see: https://github.com/microsoft/copilot-intellij-feedback/issues/712#issuecomment-3322062215",
    ".idea/**/copilot.data.migration.*.xml"
   ]
  },
  "VisualStudioCode": {
   "path": "Global/VisualStudioCode.gitignore",
   "kind": "editor",
   "aliases": [
    "vscode",
    "code"
   ],
   "lines": [
    "# Visual Studio Code",
    ".vscode/*",
    "!.vscode/settings.json",
    "!.vscode/tasks.json",
    "!.vscode/launch.json",
    "!.vscode/extensions.json",
    "!.vscode/*.code-snippets",
    "!*.code-workspace",
    "",
    "# Built Visual Studio Code Extensions",
    "*.vsix"
   ]
  },
  "Vim": {
   "path": "Global/Vim.gitignore",
   "kind": "editor",
   "aliases": [
    "neovim",
    "nvim"
   ],
   "lines": [
    "# Swap",
    "[._]*.s[a-v][a-z]",
    "# comment out the next line if you don't need vector files",
    "!*.svg",
    "[._]*.sw[a-p]",
    "[._]s[a-rt-v][a-z]",
    "[._]ss[a-gi-z]",
    "[._]sw[a-p]",
    "",
    "# Session",
    "Session.vim",
    "Sessionx.vim",
    "",
    "# Temporary",
    ".netrwhist",
    "*~",
    "# Auto-generated tag files",
    "tags",
    "# Persistent undo",
    "[._]*.un~"
   ]
  },
  "Emacs": {
   "path": "Global/Emacs.gitignore",
   "kind": "editor",
   "aliases": [],
   "lines": [
    "# -*- mode: gitignore; -*-",
    "*~",
    "\\#*\\#",
    "/.emacs.desktop",
    "/.emacs.desktop.lock",
    "*.elc",
    "auto-save-list",
    "tramp",
    ".\\#*",
    "",
    "# Org-mode",
    ".org-id-locations",
    "*_archive",
    "",
    "# flymake-mode",
    "*_flymake.*",
    "",
    "# eshell files",
    "/eshell/history",
    "/eshell/lastdir",
    "",
    "# elpa packages",
    "/elpa/",
    "",
    "# reftex files",
    "*.rel",
    "",
    "# AUCTeX auto folder",
    "/auto/",
    "",
    "# cask packages",
    ".cask/",
    "dist/",
    "",
    "# Flycheck",
    "flycheck_*.el",
    "",
    "# server auth directory",
    "/server/",
    "",
    "# projectiles files",
    ".projectile",
    "",
    "# directory configuration",
    ".dir-locals.el",
    "",
    "# network security",
    "/network-security.data",
    "",
    "# undo-tree",
    "*.~undo-tree~"
   ]
  },
  "Eclipse": {
   "path": "Global/Eclipse.gitignore",
   "kind": "editor",
   "aliases": [],
   "lines": [
    ".metadata",
    "bin/",
    "tmp/",
    "*.tmp",
    "*.bak",
    "*.swp",
    "*~.nib",
    "local.properties",
    ".settings/",
    ".loadpath",
    ".recommenders",
    "",
    "# External tool builders",
    ".externalToolBuilders/",
    "",
    "# Locally stored \"Eclipse launch configurations\"",
    "*.launch",
    "",
    "# PyDev specific (Python IDE for Eclipse)",
    "*.pydevproject",
    "",
    "# CDT-specific (C/C++ Development Tooling)",
    ".cproject",
    "",
    "# CDT- autotools",
    ".autotools",
    "",
    "# Java annotation processor (APT)",
    ".factorypath",
    "",
    "# PDT-specific (PHP Development Tools)",
    ".buildpath",
    "",
    "# sbteclipse plugin",
    ".target",
    "",
    "# Tern plugin",
    ".tern-project",
    "",
    "# TeXlipse plugin",
    ".texlipse",
    "",
    "# STS (Spring Tool Suite)",
    ".springBeans",
    "",
    "# Code Recommenders",
    ".recommenders/",
    "",
    "# Annotation Processing",
    ".apt_generated/",
    ".apt_generated_tests/",
    "",
    "# Scala IDE specific (Scala & Java development for Eclipse)",
    ".cache-main",
    ".scala_dependencies",
    ".worksheet",
    "",
    "# Uncomment this line if you wish to ignore the project description file.",
    "# Typically, this file would be tracked if it contains build/dependency configurations:",
    "#.project"
   ]
  },
  "Xcode": {
   "path": "Global/Xcode.gitignore",
   "kind": "editor",
   "aliases": [],
   "lines": [
    "## User settings",
    "xcuserdata/"
   ]
  },
  "VirtualEnv": {
   "path": "Global/VirtualEnv.gitignore",
   "kind": "tool",
   "aliases": [
    "venv",
    "virtualenv"
   ],
   "lines": [
    "# Virtualenv",
    "# https://realpython.com/python-virtual-environments-a-primer/#the-virtualenv-project",
    ".venv/",
    "venv/",
    ".python-version",
    "",
    "# pyenv: Simple Python Version Management",
    "pyvenv.cfg",
    "",
    "# pip: package installer for Python",
    "pip-selfcheck.json",
    "",
    "# Custom python interpreter",
    ".Python",
    "[Bb]in",
    "[Ii]nclude",
    "[Ll]ib",
    "[Ll]ib64",
    "[Ll]ocal",
    "[Ss]cripts"
   ]
  }
 }
}

Where it is served

The registry serves only AXLR clients, so a browser gets 403; fetch with a User-Agent that starts with axlr:

curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/gitignore_gen/1.0.0/manifest.json
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/gitignore_gen/1.0.0/gitignore_gen.py
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/gitignore_gen/1.0.0/templates.json