一键导入
lint
Run all configured linters across the full project, including whole-project-only linters. Use when user says "/lint", "lint project", or "run linters".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run all configured linters across the full project, including whole-project-only linters. Use when user says "/lint", "lint project", or "run linters".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Watch Slack
Automate macOS apps via the accessibility tree using the agent-desktop CLI. Snapshot UI, click/type/select by element ref, manage windows, screenshot. Use when asked to control, drive, or automate a Mac app, read or act on on-screen UI, "snapshot an app", or "/agent-desktop".
Install and configure the agent-desktop CLI for macOS accessibility automation, honoring Eric's aube supply-chain hardening. Use when asked to install agent-desktop, fix "Native binary not found", or "/setup-agent-desktop".
Set up the Renaissance AR CLI tool. Use when user says "/setup-renaissance" or when renaissance commands fail with config errors.
Set up the unanet CLI tool for timesheet automation. Use when user says "/setup-unanet" or needs to configure Unanet credentials.
Set up the wengage CLI tool for checking school grades. Use when user says "/setup-wengage" or needs to configure Wengage credentials.
| name | lint |
| description | Run all configured linters across the full project, including whole-project-only linters. Use when user says "/lint", "lint project", or "run linters". |
| tools | Bash, Read |
Run configured linters across the full project. Includes whole-project-only linters (brakeman, clippy) that don't run in the PostToolUse hook.
/lint — Run all enabled linters on the full project/lint ruby — Run only Ruby linters/lint reek — Run only the reek linter/lint semgrep — Run only Semgrep (tool linter)/lint --fix — Run autofix on all files first, then lintArguments after /lint are parsed as:
--fix → run autofix commands before lintingPROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
PROJECT_HASH=$(echo "$PROJECT_DIR" | tr '/' '-' | sed 's/^-//')
CONFIG_FILE="$HOME/.claude/code-lint/$PROJECT_HASH/config.json"
If no config exists, tell the user to run /setup-lint first.
Read and parse the config JSON.
Parse arguments to determine what to run:
--fix → enable autofix modeFor each enabled linter in scope:
Find all matching files (using file_patterns), excluding paths that match exclude_patterns. Run the linter on all matching files at once (most linters accept multiple files or directories).
cd "$PROJECT_DIR"
# If --fix mode, run autofix first
bundle exec rubocop -A --fail-level=error .
# Then run the lint check
bundle exec rubocop .
Run these against the project root:
cd "$PROJECT_DIR"
bundle exec brakeman -q
cargo clippy -- -D warnings
After running per-language linters, check the tool_linters section of the config. For each enabled tool linter:
If the argument to /lint matches a tool linter name (e.g. /lint semgrep), run only that tool linter.
For Semgrep, build the command with configured rulesets:
cd "$PROJECT_DIR"
# Build --config flags from rulesets array
# e.g. rulesets: ["p/default", "p/security-audit"] → --config p/default --config p/security-audit
semgrep scan --quiet --config p/default --config p/security-audit .
# With --fix mode:
semgrep scan --autofix --quiet --config p/default .
Respect exclude_patterns — pass each value as a --exclude flag (these are path prefixes/globs, not regex):
semgrep scan --quiet --config p/default --exclude "node_modules/" --exclude "vendor/" .
For each linter, capture:
Group results by language and linter:
## Lint Results
**Project:** /path/to/project
### Ruby (42 files)
**rubocop** — 3 issues
app/models/user.rb:15:5 Style/GuardClause: Use guard clause
app/models/user.rb:28:3 Metrics/MethodLength: Method too long (15/10)
app/services/auth.rb:8:1 Layout/EmptyLines: Extra blank line
**reek** — 1 issue
app/models/user.rb:10 FeatureEnvy: process refers to config more than self
**brakeman** — No issues
### Shell (5 files)
**shellcheck** — No issues
---
**Summary:** 4 issues found (3 rubocop, 1 reek)
If issues were found and autofix is available:
Read the relevant reference docs for fix patterns:
${CLAUDE_PLUGIN_ROOT}/references/ruby-patterns.md${CLAUDE_PLUGIN_ROOT}/references/js-ts-patterns.md${CLAUDE_PLUGIN_ROOT}/references/python-patterns.md${CLAUDE_PLUGIN_ROOT}/references/go-patterns.md${CLAUDE_PLUGIN_ROOT}/references/rust-patterns.md${CLAUDE_PLUGIN_ROOT}/references/markdown-patterns.md${CLAUDE_PLUGIN_ROOT}/references/html-patterns.md${CLAUDE_PLUGIN_ROOT}/references/shell-patterns.md${CLAUDE_PLUGIN_ROOT}/references/semgrep-patterns.mdIf CLAUDE_PLUGIN_ROOT is not set, find references relative to this SKILL.md (two directories up: ../../references/).
/setup-lint