Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/popfd-lint
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/lint
Tools it pre-approves 26
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(make:*),Bash(cargo:*),Bash(npm:*),Bash(yarn:*),Bash(pnpm:*),Bash(govet:*),Bash(golangci-lint:*),Bash(dotnetformat:*),Bash(gradle:*),Bash(mvn:*),
Show 14 more
Bash(ruff:*),Bash(flake8:*),Bash(pylint:*),Bash(eslint:*),Bash(cat:*),Bash(ls:*),Bash(sha256sum:*),Bash(mkdir:*),Bash(mktemp:*),Bash(tail:*),Bash(rm:*),Read,Write,Glob
What's inside
- Skill name
lint- Description
- Use when the user asks to lint or check code style. Auto-detects the linter and runs the appropriate lint command.
- License
- MIT
- Allowed tools
- Bash(make:*),, Bash(cargo:*),, Bash(npm:*),, Bash(yarn:*),, Bash(pnpm:*),, Bash(go, vet:*),, Bash(golangci-lint:*),, Bash(dotnet, format:*),, Bash(gradle:*),, Bash(mvn:*),, Bash(ruff:*),, Bash(flake8:*),, Bash(pylint:*),, Bash(eslint:*),, Bash(cat:*),, Bash(ls:*),, Bash(sha256sum:*),, Bash(mkdir:*),, Bash(mktemp:*),, Bash(tail:*),, Bash(rm:*),, Read,, Write,, Glob
- Instructions
- 106 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Agent Skills spec issues
- files: referenced but missing: scripts/init.sh
Files (1)
- SKILL.md
SKILL.md (first lines)
# Lint the project
## Memory (toolchain cache)
Before detecting, check if `.sweatshop/memory.json` exists and
contains a `toolchain.lint` entry. If it does:
1. Read the stored `config_file` and `config_hash`.
2. Hash the current config file: `sha256sum <config_file>`.
3. If the hash matches, use the stored `command` directly —
skip all detection logic below.
4. If the hash differs or the config file no longer exists,
the entry is stale — proceed with detection.
If `.sweatshop/memory.json` does not exist or has no
`toolchain.lint` key, proceed with detection.
## Detection
Auto-detect the project's linter by checking for the presence
of lint configuration and build files in the project root,
then run the appropriate lint command.
Detection order (use the first match found):
1. Makefile / GNUmakefile -> make lint
2. Cargo.toml -> cargo clippy
3. package.json -> npm run lint (or yarn/pnpm if lockfile present)
4. go.mod -> golangci-lint run (fallback: go vet ./...)
5. *.csproj / *.sln -> dotnet format --verify-no-changes
6. build.gradle / build.gradle.kts -> gradle check
7. pom.xml -> mvn checkstyle:check
8. ruff.toml / pyproject.toml with ruff -> ruff check .
9. .flake8 / setup.cfg with flake8 -> flake8 .
10. .pylintrc -> pylint .
## Write back to memory
After successful detection, write the result to
`.sweatshop/memory.json` under `toolchain.lint`:
```json
{
"command": "<resolved command>",
"config_file": "<file that triggered detection>",
"config_hash": "sha256:<hash>",
"detected_at": "<ISO 8601 timestamp>"
}
```
Run the plugin's `scripts/init.sh` to ensure `.sweatshop/`
exists (use Glob to locate it, then `bash <path>`). If the file
already exists, merge — do not overwrite other keys.
## Output handling
A clean lint run has no signal — the exit code is the
message. Violations are the value when they occur. Run the
resolved command through this wrapper to keep clean runs
cheap:
```bash
out=$(mktemp)
<resolved command> >"$out" 2>&1
ec=$?
if [ $ec -ne 0 ]; then
tail -c 20000 "$out"
echo "---"
echo "Lint violations found (exit $ec)"
else
echo "Lint OK — no violations"
fi
rm -f "$out"
exit $ec
```
On success the Bash result is a single `Lint OK` line. On
non-zero exit the tail of the output surfaces the violations.
### Verbose mode
If the user's invocation includes `--verbose` or `-v`, skip
the wrapper entirely and run the resolved command directly so
the full output streams into context. Strip the flag before
passing remaining arguments to the underlying lint command.
## Rules
CRITICAL: If no linter is detected, report this clearly and
do NOT guess or run arbitrary commands.
CRITICAL: Always use the output-handling wrapper unless the
user requested verbose mode. Do not invoke the lint command
raw — that defeats the token-reduction the wrapper provides,
and a routing hook blocks bare lint commands. The hook
recognizes a legitimate run by the `mktemp` wrapper this skill
emits, so the wrapper is load-bearing: drop it and the command
is denied.
CRITICAL: When the wrapper surfaces violations, report them
verbatim so the user can decide whether to fix or ignore.
If the user provides additional arguments, pass them through
to the underlying lint command (after stripping the
`--verbose` / `-v` flag if present).From POPFD/claude-sweatshop, MIT.
More from POPFD/claude-sweatshop
- 0.496score
requesting-review
POPFD
Use when a plan or implementation step is ready for review.
SkillCFreshness: C★ 1Claude Code +9 - 0.496score
executing-plans
POPFD
Use when you have an approved plan to execute step by step with TDD, review gates, and atomic commits.
SkillCFreshness: C★ 1Claude Code +9 - 0.472score
commit-changes
POPFD
Use when the user asks to commit, save changes, or create a git commit.
SkillCFreshness: C★ 1Claude Code +9 - 0.468score
build
POPFD
Use when the user asks to build or compile the project.
SkillCFreshness: C★ 1Claude Code +9 - 0.467score
writing-plans
POPFD
Use when you have a spec or requirements and need to break work into implementation steps with acceptance criteria.
SkillCFreshness: C★ 1Claude Code +9 - 0.432score
requirements-analysis
POPFD
Use when starting new features or significant changes.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
research
POPFD
Use when you need deep context about a codebase area, external references, or prior art before planning or making decisions.
SkillDFreshness: D★ 1Claude Code +9 - 0.429score
verification
POPFD
Use before claiming work is complete, fixed, or passing.
SkillDFreshness: D★ 1Claude Code +9 - 0.428score
onboard
POPFD
Use when setting up claude-sweatshop in a project for the first time.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 8, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/POPFD/claude-sweatshop
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from POPFD
- 0.496score
requesting-review
POPFD
Use when a plan or implementation step is ready for review.
SkillCFreshness: C★ 1Claude Code +9 - 0.496score
executing-plans
POPFD
Use when you have an approved plan to execute step by step with TDD, review gates, and atomic commits.
SkillCFreshness: C★ 1Claude Code +9 - 0.472score
commit-changes
POPFD
Use when the user asks to commit, save changes, or create a git commit.
SkillCFreshness: C★ 1Claude Code +9 - 0.468score
build
POPFD
Use when the user asks to build or compile the project.
SkillCFreshness: C★ 1Claude Code +9 - 0.467score
writing-plans
POPFD
Use when you have a spec or requirements and need to break work into implementation steps with acceptance criteria.
SkillCFreshness: C★ 1Claude Code +9 - 0.432score
requirements-analysis
POPFD
Use when starting new features or significant changes.
SkillDFreshness: D★ 1Claude Code +9
Cite this page
lint skill. Agent Mart. https://agentmart.dev/skills/popfd-lint (last updated 2026-10-24)