Dont mind me
You might have skills, but I got quirks!
npx -y skills add detro/quirks --skill dont-mind-meAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manages the creation and update of gitignore and other ignore files in repositories. It leverages templates from github/gitignore or other online sources, combines multiple technologies/IDEs, supports subdirectory-specific ignore files, and understands a wide range of famous ignore formats like .dockerignore, .npmignore, and more.
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
17.1 KB, as published. Nobody here has run it
Don't Mind Me
Authored and maintained by Ivan De Marino.
This skill manages the creation, combination, and update of ignore files (such as .gitignore, .dockerignore, .npmignore, and more) within any repository. It uses the community-vetted templates from the official github/gitignore repository as well as other reliable online sources, supporting multi-technology projects and sub-directory specific rules.
When to Use
- Bootstrapping a new repository with standard ignore rules for a language (e.g., Rust, Python, Go) or IDE (e.g., VS Code, IntelliJ, Xcode).
- Updating an existing
.gitignoreor other ignore files when adding a new framework, language, or developer tool to a project. - Setting up specialized ignore files such as
.dockerignore(to reduce container build context size) or.npmignore(to exclude test/development files from npm packages). - Adding sub-directory specific ignores to restrict or customize rules within complex or monorepo layouts.
When Not to Use
- Standard code refactoring tasks that do not involve configuring file ignore patterns.
- Managing git repository configurations (e.g.,
.gitattributes,.gitconfig) or performing standard version control operations (e.g., branch switching, merging), unless specifically committing the newly created ignore files.
Inputs
| Input | Required | Description |
|---|---|---|
| tech_or_language | Yes | The programming languages, frameworks, or tools to ignore (e.g., Rust, Node, Python). Can be multiple. |
| ides_or_tools | No | The development environments, editors, or operating systems to ignore (e.g., VisualStudioCode, JetBrains, macOS). |
| ignore_type | No | The type of ignore file to manage. Defaults to .gitignore. |
| target_directory | No | The directory path where the ignore file should be placed (defaults to the root directory .). |
I Know, For Example, About Those Types of Ignores
Below is a non-exhaustive list of the diverse types of ignore files used across version control, build systems, deployment platforms, formatters, and search tools that this skill knows how to configure:
| Ignore File | Primary Technology / Tool | Typical Use / Ignored Items | Pattern Syntax & Nuances |
|---|---|---|---|
.gitignore | Git VCS | Development artifacts, logs, dependencies, IDE settings | Standard git ignore patterns: supports unanchored (*.log) vs anchored (/debug.log), negation (!), and doublestar recursive directory globbing (**/logs). |
.cvsignore | CVS VCS | Legacy CVS build targets | Early 1990s predecessor to .gitignore. Standard simple glob matching. |
.hgignore | Mercurial VCS | Mercurial repository ignores | Supports multiple syntax styles in a single file via syntax: glob or syntax: regexp. |
.bzrignore | Bazaar VCS | Bazaar repository ignores | Controls files ignored for registration in Bazaar. |
P4IGNORE | Perforce VCS | Perforce workspace ignores | Ignored patterns specified in local workspace files or the environment. |
.ignore | Search/FS Tools (e.g., ripgrep, fd) | General tool-agnostic file filtering | Shared search-ignore file format supported natively by ripgrep and fd. |
.dockerignore | Docker Container Tool | Docker build context exclusions | Shrinks the Docker build context. Uses Go's filepath.Match syntax, differing slightly from Git's unanchored directory matching behavior. |
.containerignore | Podman / Buildah | OCI container build context | OCI-compliant alternative to .dockerignore. |
.npmignore | npm / Node.js package manager | npm package publishing exclusions | Prevents publishing source files/assets. Falls back to .gitignore rules if .npmignore is not present. |
.helmignore | Helm | Helm Chart files | Filters out files when packaging/uploading Kubernetes charts. |
.vscodeignore | VS Code Extension Packaging | VS Code extension assets | Excludes development files when publishing or packaging extensions. |
.gcloudignore | Google Cloud CLI | Cloud upload files | Controls what files are uploaded during gcloud app deployments and build triggers. |
.vercelignore | Vercel Deployment | Deployment artifact exclusions | Legacy name was .nowignore. Ignores files from being sent to Vercel builds. |
.slugignore | Heroku Cloud Platform | Heroku slug compilation | Excludes source/config files from the final Heroku container runtime slug. |
.ebignore | AWS Elastic Beanstalk | Beanstalk environment uploads | Controls files ignored by the EB CLI during deployment. |
.cfignore | Cloud Foundry | Cloud Foundry deployment | Excludes development files from push bundles to Cloud Foundry space. |
.artifactignore | Azure DevOps | Azure Artifacts packaging | Reference and configuration for publishing Azure Artifacts. |
.funcignore | Azure Functions CLI | Function app package | Controls what gets packaged and uploaded for serverless functions. |
.prettierignore | Prettier Formatter | Formatting target exclusions | Avoids auto-formatting vendor, minified, or build files. |
.eslintignore | ESLint Linter | Linting target exclusions | Prevents linting third-party libraries, compiled scripts, or build directories. |
.stylelintignore | Stylelint CSS Linter | Style linting exclusions | Prevents CSS/SCSS linting for third-party styles or build outputs. |
.rgignore | ripgrep Search Tool | Search-specific exclusions | Ignores files/dirs during search (often legacy now in favor of .ignore). |
.agignore | The Silver Searcher (ag) | Search-specific exclusions | Excludes directories/files from Silver Searcher index. |
.chefignore | Chef Configuration | Chef repository cookbooks | Ignores files during upload/management of Chef cookbooks. |
CODEOWNERS | GitHub / GitLab / Gitea | Code ownership definition | Uses Gitignore-style globs but generally drops negation (!), character ranges ([]), and backslash escaping (\#). |
Workflow
Step 1: Detect Targets & Directory Scope
Before writing any ignore file, clarify the scope and targets:
- Identify Target Directory: Check if the file goes to the repository root (e.g.,
./.gitignore) or to a specific subdirectory (e.g.,./services/api/.gitignore).- Why: Path-based rules act differently when defined inside a subdirectory. If a pattern like
/targetis declared in a root-level ignore file, it matches onlytargetat the root. If it is declared inservices/api/.gitignore, it matchesservices/api/target.
- Why: Path-based rules act differently when defined inside a subdirectory. If a pattern like
- Determine Ignore Type: Check if you are writing
.gitignoreor another ignore file (e.g.,.dockerignore,.npmignore). - Scan Project Tech: Look at the project files to suggest the best languages, IDEs, and environments if the user didn't specify them.
- For example: if a
Cargo.tomlexists, suggestRust. Ifpackage.jsonexists, suggestNode.
- For example: if a
Step 2: Fetch Base Templates from github/gitignore
Retrieve official, community-tested templates from the github/gitignore repository using your high-level platform fetch tool (like fetch or agentic_fetch):
- Determine Template Filename:
- Language templates reside at:
(e.g.,https://raw.githubusercontent.com/github/gitignore/main/<Language>.gitignoreRust.gitignore,Python.gitignore,Go.gitignore) - Global templates (IDEs, OSs, Global tools) reside at:
(e.g.,https://raw.githubusercontent.com/github/gitignore/main/Global/<IDE-or-OS>.gitignoreVisualStudioCode.gitignore,macOS.gitignore,JetBrains.gitignore)
- Language templates reside at:
- Handle Capitalization & Spacing: The GitHub repository is case-sensitive. Ensure proper capitalization (e.g.
Rustrather thanrust,Gorather thango). - Handle Missing Templates / Alternatives:
- If a specific tool or framework isn't listed in the official
github/gitignorerepo, perform a search or fetch from alternative reliable sources (likehttps://www.toptal.com/developers/gitignore/api/<tech>).
- If a specific tool or framework isn't listed in the official
Step 3: Combine and Deduplicate
When combining templates for multiple technologies (e.g., Python + VS Code + macOS):
- Separate with Clear Headers: Add a clear header for each template to make the file easy to read and update later.
# ========================================== # Created by dont-mind-me: Rust # ========================================== ... (Rust rules here) ... # ========================================== # Created by dont-mind-me: VisualStudioCode # ========================================== ... (VS Code rules here) ... - Deduplicate Rules: Keep track of identical rules across different templates (e.g.,
.DS_Storeappearing in both macOS and other templates) and only include the rule in the first section it appears, or group common global files into their own section.- Why: Clean files prevent confusion and reduce processing overhead for git or build systems.
Step 4: Adapt Syntax for Other Ignore Formats
If configuring an ignore file other than .gitignore, translate Git-style patterns into the correct target format:
.dockerignore:- Why: Docker build contexts are loaded from the root context path. Rules are resolved using Go's
filepath.Match, which doesn't support unanchored directory matching like Git does (e.g.,buildignores bothbuildfile andbuild/directory recursively in git, but in Docker, you should use**/buildor specify nested paths). - How: Convert unanchored directory patterns by ensuring they are covered recursively. Keep rules specific to the files needed for the container build.
- Why: Docker build contexts are loaded from the root context path. Rules are resolved using Go's
.npmignore:- Why:
.npmignoreprevents shipping internal development artifacts to registry bundles, making packages lightweight and secure. - How: Maintain a subset of
.gitignoretargets, ensuring files like compiled binaries, tests, mock files, and configuration dotfiles are excluded.
- Why:
.hgignore:- Why: Mercurial supports regexes as well as globs.
- How: Write a
syntax: globheader at the top to safely reuse standard globbing patterns.
Step 5: Write and Verify the Ignore File
- Verify Existing Content: If the target ignore file already exists, do not overwrite it blindly. Read it first to identify if there are any custom rules defined by the user. Preserve those custom rules in their own section (e.g.,
# Custom Rules). - Write the Content: Write the newly constructed ignore content to the target path.
- Run Verification:
- Run
git statusor checking tools to verify that previously untracked build artifacts are now ignored correctly.
- Run
Validation
- The ignore file is created at the correct relative path (
target_directory). - Each included technology or environment template has a clear, separated header.
- Duplicated lines across combined templates are eliminated.
- Existing custom rules are fully preserved and not overwritten.
- The syntax matches the requirements of the requested
ignore_type(e.g.,.dockerignoreor.hgignore).
Common Pitfalls
| Pitfall | Solution |
|---|---|
| Casing mismatch on GitHub URLs | Always verify the correct template filename casing on the github/gitignore repository before fetching. Fall back to search or Toptal gitignore API if casing is unclear. |
| Overwriting custom developer rules | Always read the existing ignore file first, extract custom non-templated rules, and merge them safely rather than completely replacing the file. |
| Ignoring files that are already tracked by git | Git does not retroactively ignore files that are already tracked. If a user asks to ignore a file that is already tracked, advise them to run git rm --cached <file> to stop tracking it. |
| Path resolution in subdirectories | Ensure subdirectory .gitignore rules use relative paths relative to that subdirectory, not relative to the repository root. |