{"id":50084235,"url":"https://github.com/josharsh/active-listening","last_synced_at":"2026-05-27T01:33:01.660Z","repository":{"id":356731687,"uuid":"1221108734","full_name":"josharsh/active-listening","owner":"josharsh","description":"Claude Code skill that detects your preferences during conversation and remembers them across sessions","archived":false,"fork":false,"pushed_at":"2026-05-09T12:22:49.000Z","size":16,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T14:36:52.893Z","etag":null,"topics":["ai-preferences","claude","claude-code","claude-skill","developer-tools","productivity","skill-md"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josharsh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T19:06:42.000Z","updated_at":"2026-05-09T12:23:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/josharsh/active-listening","commit_stats":null,"previous_names":["josharsh/active-listening"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/josharsh/active-listening","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josharsh%2Factive-listening","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josharsh%2Factive-listening/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josharsh%2Factive-listening/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josharsh%2Factive-listening/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josharsh","download_url":"https://codeload.github.com/josharsh/active-listening/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josharsh%2Factive-listening/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33546836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-preferences","claude","claude-code","claude-skill","developer-tools","productivity","skill-md"],"created_at":"2026-05-22T18:00:36.857Z","updated_at":"2026-05-27T01:33:01.641Z","avatar_url":"https://github.com/josharsh.png","language":"Shell","funding_links":[],"categories":["Skills"],"sub_categories":["Community Skills"],"readme":"# Active Listening\n\nA human-readable preference manager for Claude Code. Detects what you care about, organizes it, and gives you full control.\n\nSay things like \"never push without asking\" or \"always use const\" — Active Listening saves them to a categorized markdown file you can read, edit, share, and version control.\n\n## Install\n\nIn Claude Code, run:\n\n```\n/plugin marketplace add josharsh/active-listening\n```\n\nOr manually:\n\n```bash\nmkdir -p ~/.claude/skills/active-listening\ncurl -sL https://raw.githubusercontent.com/josharsh/active-listening/main/skills/active-listening/SKILL.md \\\n  -o ~/.claude/skills/active-listening/SKILL.md\n```\n\n## How It Works\n\nActive Listening monitors your messages for preference patterns:\n\n**Auto-saved** (high confidence):\n- \"Never push to main without asking\"\n- \"Always use strict mode\"\n- \"Remember: our API is on port 3001\"\n- \"From now on, use vitest instead of jest\"\n- \"Make sure to run lint before committing\"\n- \"Don't use any in TypeScript\"\n\n**Confirmed first** (medium confidence):\n- \"I prefer tabs over spaces\"\n- \"I like to keep functions small\"\n- \"Going forward, let's use pnpm\"\n\n**Ignored** (not preferences):\n- Past tense: \"I never used var before\"\n- Questions: \"Should I always use const?\"\n- Hypotheticals: \"If I were to always...\"\n\n## Demo\n\n```\n❯ /plugin marketplace add josharsh/active-listening\n  ⎿  Successfully added marketplace: active-listening\n\n❯ /active-listening\n⏺ Active Listening enabled. No saved preferences yet.\n\n❯ Please ensure that when I ask you to code in mobile native design language\n  you follow the mobile native guidelines by google mobile design and apple\n  mobile design. (in terms of scale, spacing, fonts, and clean UI design\n  principles for mobile screens)\n\n⏺ I noticed a preference: Follow Google Material Design and Apple HIG\n  guidelines for scale, spacing, fonts, and clean UI when coding mobile\n  native designs.\n\n  This is a clear directive — saving it now.\n\n⏺ Update(~/.claude/active-listening/preferences.md)\n  ⎿  ## Architecture\n     +- Follow Google Material Design and Apple HIG guidelines (scale,\n     +  spacing, fonts, clean UI) when coding mobile native designs\n     +  *(2026-04-26)*\n\n⏺ Saved: Follow Google Material Design and Apple HIG guidelines (scale,\n  spacing, fonts, clean UI) when coding mobile native designs under\n  Architecture.\n```\n\nEvery future session with `/active-listening` will load this preference automatically.\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `/active-listening` | Activate and load saved preferences |\n| `/active-listening show` | Display all categorized preferences |\n| `/active-listening forget \u003ctext\u003e` | Remove a specific preference |\n| `/active-listening clear` | Reset all preferences (with confirmation) |\n| `/active-listening status` | Show count, categories, and sync status |\n| `/active-listening no-sync` | Stop writing to CLAUDE.local.md |\n| `/active-listening sync` | Resume writing to CLAUDE.local.md |\n\nYou can also use natural language: \"show my preferences\", \"forget the preference about pushing\", \"clear all preferences\".\n\n## Preferences File\n\nPreferences are stored as categorized markdown at `~/.claude/active-listening/preferences.md`:\n\n```markdown\n# Active Listening — Learned Preferences\n\n## Git \u0026 Version Control\n- Never push to main without asking first *(2026-04-22)*\n\n## Coding Style\n- Always use const over let *(2026-04-22)*\n\n## Project Config\n- API runs on port 3001 *(2026-04-22)*\n```\n\nCategories are auto-assigned by keyword detection: Git \u0026 Version Control, Coding Style, Project Config, Testing, Communication, Architecture, and General (catch-all).\n\n## Testing\n\nTests are defined in `tests.json` and compatible with [skillmother](https://github.com/josharsh/skillmother):\n\n```bash\nskillmother test ~/Development/active-listening/\n```\n\n## Why Not Just Use CLAUDE.md or Auto Memory?\n\nClaude Code has built-in memory (Auto Memory, `/remember`, CLAUDE.md). They work. Active Listening is different in a few specific ways:\n\n**Transparency.** Auto Memory writes to an opaque MEMORY.md that you don't control. Active Listening writes to a categorized markdown file — you see exactly what was saved and why.\n\n**Precision.** Auto Memory captures everything it thinks is useful. Active Listening specifically targets preference statements with confidence tiers — auto-saving \"Never push without asking\" while confirming \"I prefer tabs over spaces\" and ignoring \"I never used var before.\"\n\n**Management.** No other tool gives you `show`, `forget`, `clear`, and `status` commands for your preferences. You can review what Claude learned, remove things that are wrong, and start fresh.\n\n**Zero infrastructure.** No SQLite, no MCP server, no hooks, no background processes. One SKILL.md file. Works anywhere Claude Code runs.\n\n**Portability.** Your preferences file is plain markdown. Copy it to another machine, commit it to a dotfiles repo, or share team conventions with colleagues.\n\nIf Auto Memory and CLAUDE.md cover your needs, use them — they're great. Active Listening is for people who want to see and manage what Claude remembers about them.\n\n## CLAUDE.local.md Sync\n\nBy default, Active Listening also writes every preference to `CLAUDE.local.md` in your project. This means preferences work automatically in future sessions — even without activating the skill.\n\n```markdown\n## Active Listening Preferences\n- Never push to main without asking first\n- Always use const over let\n- API runs on port 3001\n```\n\nThis enhances Claude Code's built-in system rather than replacing it. Your preferences become first-class instructions that Claude follows from session start.\n\nTo disable: `/active-listening no-sync` or just say \"don't write to CLAUDE.local.md\".\n\n## How Preferences Are Applied\n\n**With CLAUDE.local.md sync (default):** Preferences are applied automatically every session via Claude Code's built-in CLAUDE.local.md loading. No activation needed.\n\n**Without sync:** Activate with `/active-listening` at the start of a session to read the preferences file and apply all saved rules as constraints.\n\n## Uninstalling\n\n```bash\nrm -rf ~/.claude/skills/active-listening\nrm -rf ~/.claude/active-listening  # also removes saved preferences\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosharsh%2Factive-listening","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosharsh%2Factive-listening","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosharsh%2Factive-listening/lists"}