Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"name": "anti-slop",
"name": "curt",
"owner": {
"name": "NovusEdge",
"url": "https://github.com/NovusEdge"
},
"plugins": [
{
"name": "anti-slop",
"name": "curt",
"source": "./",
"description": "Enforce clear technical prose — STE grammar, no AI buzzwords, no LinkedIn cadence",
"description": "Makes Claude Code write like Curt: terse, no buzzwords, no flattery. STE grammar and an anti-slop linter.",
"keywords": [
"writing",
"style",
Expand Down
8 changes: 4 additions & 4 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "anti-slop",
"displayName": "anti-slop",
"name": "curt",
"displayName": "Curt",
"version": "0.3.0",
"description": "Enforce clear technical prose — STE grammar, no AI buzzwords, no LinkedIn cadence",
"description": "Makes Claude Code write like Curt: terse, no buzzwords, no flattery. STE grammar and an anti-slop linter.",
"author": {
"name": "NovusEdge"
},
"license": "MIT",
"homepage": "https://github.com/NovusEdge/anti-slop",
"homepage": "https://github.com/NovusEdge/curt",
"keywords": [
"writing",
"style",
Expand Down
8 changes: 4 additions & 4 deletions .pre-commit-hooks.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
- id: anti-slop
name: anti-slop
- id: curt
name: curt
description: Check prose for AI-generated patterns and STE violations
entry: tools/lint.py --check
language: script
types: [markdown]

- id: anti-slop-commit-msg
name: anti-slop (commit message)
- id: curt-commit-msg
name: curt (commit message)
description: Check the commit message for AI-generated patterns and STE violations
entry: tools/lint.py --check --strip-comments
language: script
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# anti-slop
# curt

Makes Claude Code stop writing like a chatbot. No "you're absolutely right", no recap of the diff you just read, no `leverage` where `use` works.
Curt makes Claude Code stop writing like a chatbot. No "you're absolutely right", no recap of the diff you just read, no `leverage` where `use` works.

The rules load before the model writes. A linter catches the rest.

Expand All @@ -9,14 +9,14 @@ The rules load before the model writes. A linter catches the rest.
Inside Claude Code:

```
/plugin marketplace add NovusEdge/anti-slop
/plugin install anti-slop@anti-slop
/plugin marketplace add NovusEdge/curt
/plugin install curt@curt
```

From a shell:

```shell
curl -fsSL https://raw.githubusercontent.com/NovusEdge/anti-slop/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/NovusEdge/curt/main/install.sh | bash

# or, from a local checkout:
./install.sh --local
Expand All @@ -41,8 +41,8 @@ No hard word cap. Anthropic tried one (100 words) in April 2026 and pulled it fo
## Usage

```
/anti-slop:anti-slop prose: comments, docstrings, commits, PRs, docs
/anti-slop:anti-slop-code code: narrator comments, dead generality, mock tests
/curt:anti-slop prose: comments, docstrings, commits, PRs, docs
/curt:anti-slop-code code: narrator comments, dead generality, mock tests
```

Env: `ANTI_SLOP_REMIND_EVERY` (reminder cadence, default 9), `ANTI_SLOP_TOOL_GUARD` (`ask`, `deny`, `off`).
Expand Down
12 changes: 9 additions & 3 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Changed

- Renamed the project from anti-slop to curt. Re-add the marketplace as `NovusEdge/curt` and install `curt@curt`. The rules it enforces stay the anti-slop discipline, so the `ANTI_SLOP_*` env vars and the ignore markers are unchanged.

## [0.3.0]

### Added
Expand Down Expand Up @@ -32,6 +38,6 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and

- The prose linter, the banned-vocabulary and sycophancy layers, and the session-start directive.

[0.3.0]: https://github.com/NovusEdge/anti-slop/releases/tag/v0.3.0
[0.2.0]: https://github.com/NovusEdge/anti-slop/releases/tag/v0.2.0
[0.1.0]: https://github.com/NovusEdge/anti-slop/releases/tag/v0.1.0
[0.3.0]: https://github.com/NovusEdge/curt/releases/tag/v0.3.0
[0.2.0]: https://github.com/NovusEdge/curt/releases/tag/v0.2.0
[0.1.0]: https://github.com/NovusEdge/curt/releases/tag/v0.1.0
2 changes: 1 addition & 1 deletion docs/hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The prose-lint hooks never block. `PostToolUse` and `UserPromptSubmit` carry the

## Configuration

`ANTI_SLOP_REMIND_EVERY` sets the reminder cadence (default 9). `ANTI_SLOP_TOOL_GUARD` sets the guard posture (below). Turn the whole plugin off with `/plugin disable anti-slop`.
`ANTI_SLOP_REMIND_EVERY` sets the reminder cadence (default 9). `ANTI_SLOP_TOOL_GUARD` sets the guard posture (below). Turn the whole plugin off with `/plugin disable curt`.

## Tool discipline

Expand Down
6 changes: 3 additions & 3 deletions docs/linting.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ pip install tree-sitter tree-sitter-language-pack
## Pre-commit hook

```yaml
- repo: https://github.com/NovusEdge/anti-slop
- repo: https://github.com/NovusEdge/curt
rev: main
hooks:
- id: anti-slop # markdown files
- id: anti-slop-commit-msg # the commit message
- id: curt # markdown files
- id: curt-commit-msg # the commit message
stages: [commit-msg]
```

Expand Down
22 changes: 11 additions & 11 deletions install.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/usr/bin/env bash
# anti-slop installer
# Usage: curl -fsSL https://raw.githubusercontent.com/NovusEdge/anti-slop/main/install.sh | bash
# curt installer
# Usage: curl -fsSL https://raw.githubusercontent.com/NovusEdge/curt/main/install.sh | bash
# ./install.sh --local # install from this checkout instead of GitHub

set -euo pipefail

REPO="NovusEdge/anti-slop"
REPO="NovusEdge/curt"
MODE="${1:-remote}"

if ! command -v claude &> /dev/null; then
Expand All @@ -24,27 +24,27 @@ echo "Adding marketplace from $SOURCE ..."
# `add` fails when the marketplace is already registered. Grepping the list
# output instead ties the installer to a format that is not a contract.
claude plugin marketplace add "$SOURCE" --scope user 2>/dev/null \
|| claude plugin marketplace update anti-slop
|| claude plugin marketplace update curt

echo "Installing plugin ..."
claude plugin uninstall anti-slop@anti-slop --scope user >/dev/null 2>&1 || true
claude plugin install anti-slop@anti-slop --scope user
claude plugin uninstall curt@curt --scope user >/dev/null 2>&1 || true
claude plugin install curt@curt --scope user

cat <<'EOF'

Installed. Restart Claude Code, then:

/anti-slop:anti-slop invoke the skill
/plugin disable anti-slop turn the hooks off
/curt:anti-slop invoke the skill
/plugin disable curt turn the hooks off

Standalone linter (no Claude Code needed):

python3 ~/.claude/plugins/cache/anti-slop/anti-slop/*/tools/lint.py file.md
python3 ~/.claude/plugins/cache/curt/curt/*/tools/lint.py file.md

Pre-commit hook:

- repo: https://github.com/NovusEdge/anti-slop
- repo: https://github.com/NovusEdge/curt
rev: main
hooks:
- id: anti-slop
- id: curt
EOF
Loading