Back to skills
SKILL.md
Taste Lints
ASecurityUse when you say `run taste lints`, `check file size`, or `lint taste invariants`. Custom lints with agent-readable remediation instructions for file size, naming conventions, structured logging, and complexity.
- 47 stars
- 0 votes
- 0 copies
- 4 views
- Added May 27, 2026
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add rjmurillo/ai-agents --skill taste-lints --agent claude-codeAre you the author of Taste Lints?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/rjmurillo-taste-lints)---
name: taste-lints
version: 1.0.0
description: Use when you say `run taste lints`, `check file size`, or `lint taste invariants`. Custom lints with agent-readable remediation instructions for file size, naming conventions, structured logging, and complexity.
license: MIT
metadata:
routing:
role: lifecycle
invoker: review
trigger: review invokes taste-lints as one of its four local quality axes
user-facing: false
---
# Taste Lints
Custom lints where error messages become agent-readable remediation instructions.
Inspired by [OpenAI Harness Engineering](https://openai.com/index/harness-engineering/):
> "We statically enforce structured logging, naming conventions for schemas and types,
> file size limits, and platform-specific reliability requirements with custom lints.
> Because the lints are custom, we write the error messages to inject remediation
> instructions into agent context."
## Triggers
| Trigger Phrase | Operation |
|----------------|-----------|
| `run taste lints` | taste_lints.py on staged or specified files |
| `check file size` | taste_lints.py with file-size rule only |
| `check naming conventions` | taste_lints.py with naming rule only |
| `lint taste invariants` | taste_lints.py full scan |
| `taste lint report` | taste_lints.py with JSON output |
## When to Use
Use this skill when:
- Writing or editing source files (catch taste violations early)
- Preparing code for PR submission
- Reviewing code for style and convention compliance
- Adding new files to the project
## Taste Invariants
### 1. File Size Limits
Files exceeding line thresholds indicate poor cohesion.
| Threshold | Lines | Severity |
|-----------|-------|----------|
| Warning | 301-500 | warning |
| Error | 501+ | error |
### 2. Naming Conventions
| Pattern | Rule | Applies To |
|---------|------|------------|
| `snake_case` | Python files, functions, variables | `*.py` |
| `kebab-case` | Skill directories, YAML files | `.claude/skills/`, `*.yml` |
| `PascalCase` | PowerShell functions, classes | `*.ps1`, `*.psm1` |
| `UPPER_CASE` | Constants, environment variables | All languages |
| `invoke_` prefix | Hook scripts | `.claude/hooks/` |
### 3. Function Complexity
Functions exceeding cyclomatic complexity 10 need decomposition.
### 4. Skill Prompt Size
Skills exceeding 500 lines need progressive disclosure refactoring.
## Process
1. Run `python3 .claude/skills/taste-lints/scripts/taste_lints.py` with target files
2. Review AGENT_REMEDIATION blocks in output
3. Apply suggested fixes
4. Re-run to confirm compliance
## Scripts
| Script | Platform | Usage |
|--------|----------|-------|
| `scripts/taste_lints.py` | Python 3.11+ | Scan staged files, diff scopes, directories, or explicit files for taste invariant violations |
```bash
# Scan staged files
python3 .claude/skills/taste-lints/scripts/taste_lints.py --git-staged
# Scope to a pull request diff (only files changed vs the base branch)
python3 .claude/skills/taste-lints/scripts/taste_lints.py --diff-scope "origin/$BASE_BRANCH"
# Scan specific files
python3 .claude/skills/taste-lints/scripts/taste_lints.py path/to/file.py
# Scan a directory
python3 .claude/skills/taste-lints/scripts/taste_lints.py --directory src/
# JSON output
python3 .claude/skills/taste-lints/scripts/taste_lints.py --format json --git-staged
# Run specific rules only
python3 .claude/skills/taste-lints/scripts/taste_lints.py --rules file-size,naming
```
## Exit Codes
| Code | Meaning |
|------|---------|
| 0 | No violations found |
| 1 | Script error (bad arguments, file not found) |
| 10 | Violations detected |
## Verification
After execution:
- [ ] Script exits with code 0 for clean input or 10 when violations are expected
- [ ] Output lists every scanned file count and violation count
- [ ] AGENT_REMEDIATION blocks include actionable fixes for each violation
- [ ] JSON output parses when `--format json` is used
## Suppression
Add a comment to suppress a specific rule on a file:
```python
# taste-lint: ignore file-size
```
Valid rules: `file-size`, `naming`, `complexity`, `skill-size`
Files in this skill
- SKILL.md
- scripts/taste_lints.py
Attribution
Comments
Loading comments…