--- name: ignore description: "Manage global ignore patterns for lint-relative-paths. TRIGGERS - statusline ignore, add ignore pattern, lint ignore, path lint exclude." allowed-tools: Read, Bash, TodoWrite, TodoRead, AskUserQuestion argument-hint: "[add|list|remove] [pattern]" model: haiku --- > **Navigation**: [Plugin CLAUDE.md](../../CLAUDE.md) | [Root CLAUDE.md](../../../../CLAUDE.md) # Global Ignore Patterns Manage global ignore patterns for the `lint-relative-paths` linter. > **Self-Evolving Skill**: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues. ## Purpose Some repositories intentionally use relative paths in markdown (e.g., `../docs/file.md`) instead of repo-root paths (e.g., `/docs/file.md`). This command manages a global ignore file that skips path validation for matching workspaces. ## Actions | Action | Description | Example | | -------- | --------------------------------------- | ----------------------------------------- | | `add` | Add a pattern to the global ignore file | `/statusline-tools:ignore add my-repo` | | `list` | Show current patterns | `/statusline-tools:ignore list` | | `remove` | Remove a pattern from the ignore file | `/statusline-tools:ignore remove my-repo` | ## Pattern Matching Patterns use **substring matching**. A pattern matches if the workspace path contains the pattern. **Example**: Pattern `alpha-forge` matches: - `/Users/user/projects/alpha-forge` - `/Users/user/eon/alpha-forge.worktree-feature-x` - `/home/user/code/alpha-forge-v2` ## Ignore File Location `~/.claude/lint-relative-paths-ignore` Lines starting with `#` are comments. ## Execution ### Skip Logic - If action + pattern provided -> execute directly - If only `list` provided -> show patterns immediately - If no arguments -> use AskUserQuestion flow ### Workflow 1. **Check Current State**: Run `list` to show existing patterns 2. **Action Selection**: Use AskUserQuestion to select action: - "Add a new pattern" -> prompt for pattern - "Remove an existing pattern" -> show current patterns to select - "Just view current patterns" -> display and exit 3. **Pattern Input**: For add/remove, AskUserQuestion with examples 4. **Execute**: Run the management script 5. **Verify**: Confirm changes applied ### AskUserQuestion Flow (No Arguments) When invoked without arguments, guide the user interactively: ``` Question: "What would you like to do with lint-relative-paths ignore patterns?" Options: - "Add pattern" -> "Add a new repository pattern to skip path linting" - "List patterns" -> "Show all current ignore patterns" - "Remove pattern" -> "Remove an existing pattern from the ignore list" ``` For "Add pattern": ``` Question: "Enter the repository pattern to ignore" Note: Patterns use substring matching. Example: 'alpha-forge' matches any path containing 'alpha-forge'. ``` ### Direct Execution (With Arguments) Parse `$ARGUMENTS` and run the management script: ```bash /usr/bin/env bash << 'IGNORE_SCRIPT_EOF' PLUGIN_DIR="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/marketplaces/cc-skills/plugins/statusline-tools}" bash "$PLUGIN_DIR/scripts/manage-ignore.sh" $ARGUMENTS IGNORE_SCRIPT_EOF ``` ## Manual Editing The ignore file can also be edited manually: ```bash # View current patterns cat ~/.claude/lint-relative-paths-ignore # Add a pattern manually echo "my-repo-pattern" >> ~/.claude/lint-relative-paths-ignore ``` ## Troubleshooting | Issue | Cause | Solution | | --------------------- | ------------------------- | ---------------------------------------------------- | | Pattern not matching | Substring match is strict | Use broader pattern (e.g., `forge` vs `alpha-forge`) | | Ignore file not found | ~/.claude doesn't exist | Create with `mkdir -p ~/.claude` | | Permission denied | File not writable | Check file permissions with `ls -la` | | Script not found | Plugin not installed | Reinstall plugin from marketplace | ## Post-Execution Reflection After this skill completes, check before closing: 1. **Did the command succeed?** — If not, fix the instruction or error table that caused the failure. 2. **Did parameters or output change?** — If the underlying tool's interface drifted, update Usage examples and Parameters table to match. 3. **Was a workaround needed?** — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround. Only update if the issue is real and reproducible — not speculative.