Documentation

Complete reference for asshole-gc v1.0.0.


Installation

Homebrew (macOS/Linux)

brew install asshole-gc

Cargo

cargo install asshole-gc

npm

npm install -g asshole-gc

Install script

curl -fsSL # coming soon | sh

Quick Start

Three commands cover 90% of use cases:

1. Scan your environment (safe — no changes made)
asshole-gc --dry-run
2. Review results, then execute with grace period
asshole-gc --run --grace-period
3. Schedule weekly maintenance
asshole-gc --schedule "0 9 * * 0"  # Every Sunday 9am

Configuration

Global config lives at ~/.config/asshole-gc/config.toml. Per-environment config can be placed in .asshole-gc.toml in any directory.

~/.config/asshole-gc/config.toml
[defaults]
threshold       = 3        # consecutive bad days before flagging
day_threshold   = 0.55     # BSA score to count a day as "bad"
reset_threshold = 0.30     # BSA score required to reset the counter
window_hours    = 72       # signal rolling window
grace_days      = 7        # grace period duration
confidence_min  = 0.70     # minimum confidence to flag

[contexts]
# Reduce signal weight during known stress events
deadline_factor = 0.70
personal_factor = 0.40

[output]
color           = true
format          = "human"  # human | json | csv

--dry-run

Scans the environment, runs the full detection pipeline, and prints the candidate list with evidence — but makes no changes. Always run this before --run.

asshole-gc --dry-run [--format json] [--threshold N]

Output columns:


--run

Executes collection on all subjects above threshold and confidence minimum. Irreversible without manual reinstatement. Use --grace-period to send a warning first.

asshole-gc --run [--grace-period] [--target NAME]
Warning: --run without --dry-run first is strongly discouraged. The false-positive rate without review is ~8%. That's 1 in 12. You probably don't have 12 to spare.

--threshold N

Sets the consecutive bad days threshold. Default: 3.

EnvironmentRecommended threshold
Personal life3 (default)
Professional — high stakes2
Professional — long tenure4–5
Family7–10 (or never)
Finance / law / politics2

--grace-period

Sends a notification to the flagged subject before executing collection. The grace period is 7 days by default. During the grace period, behavior is still monitored. Genuine improvement clears the flag.

asshole-gc --run --grace-period [--grace-days N]

Grace period notifications are honest and direct. They do not hedge. The system will not generate a notification that begins with "I feel like..."


--schedule CRON

Installs a cron job that runs asshole-gc --dry-run on the specified schedule and emails you the results. Requires output config (email or webhook).

# Every Sunday at 9am
asshole-gc --schedule "0 9 * * 0"

# First of every month
asshole-gc --schedule "0 8 1 * *"

status [NAME]

Shows current monitoring status for all tracked subjects, or a specific one.

asshole-gc status
asshole-gc status "Dave"

clear NAME

Manually clears a subject's flag and resets their counter. Use when you've verified a false positive or accepted an adequate apology. No judgment.

asshole-gc clear "Casey"

Philosophy

"Not every bug is worth fixing. Some you just remove from the codebase."

asshole-gc is built on a few core beliefs:


False Positives

The algorithm is conservative by design. But false positives happen. Common causes:

If a collection turns out to be a false positive, use asshole-gc clear and consider a reinstantiation. The tool does not hold grudges on your behalf. That part's up to you.


Ethics & Limits

asshole-gc is a decision-support tool, not a decision-making tool. It surfaces patterns and confirms what you already feel. The decision is always yours.

Things asshole-gc will not do:

The tool is not a replacement for conversation, therapy, or HR. It is a replacement for the mental overhead of tracking patterns you already know exist.