{
  "markdown": "# Hush\n\nAn [Agent Skill](https://github.com/vercel-labs/skills) that enforces self-documenting naming and minimal, high-signal comments in AI-generated and AI-edited code.\n\n## What it does\n\n- Prefers a rename over a comment whenever a name alone can carry the meaning.\n- Caps ordinary comments at ~3 lines, breaking lines at clause boundaries — clarity of the break outranks the line count.\n- Writes full doc comments with usage examples for public/exported API surfaces (library boundaries), with no length cap there.\n- Always comments non-obvious behavior — invariants, workarounds, gotchas — regardless of public/private visibility.\n- Comments a branch (`if`/`for`/`while`/`switch`) only when its condition or body can't be inferred from the names involved.\n\nSee [`skills/hush/SKILL.md`](skills/hush/SKILL.md) for the full ruleset.\n\n## Install\n\nWith the [skills CLI](https://github.com/vercel-labs/skills) (`npx skills`):\n\n```bash\nnpx skills add ro80t/hush\n```\n\nUpdate later with:\n\n```bash\nnpx skills update hush\n```\n\nThis installs `skills/hush/SKILL.md` into the right directory for your agent (`.claude/skills/`, `~/.codex/skills/`, `.cursor/rules/`, etc.) — the skill file itself is agent-agnostic.\n\n### Claude Code plugin marketplace\n\nThis repo self-hosts a Claude Code marketplace (`.claude-plugin/marketplace.json` + `plugin.json`). Add it as a marketplace source, then install:\n\n```bash\n/plugin marketplace add ro80t/hush\n/plugin install hush@hush\n```\n\n### Codex plugin marketplace\n\nSame pattern for Codex (`.codex-plugin/marketplace.json` + `plugin.json`, pointing at the same `skills/` directory):\n\n```bash\ncodex plugin marketplace add ro80t/hush\ncodex plugin install hush\n```\n\n### Manual install\n\nCopy `skills/hush/` into whichever directory your agent scans for skills (e.g. `~/.claude/skills/hush/`, `~/.codex/skills/hush/`).\n\n### Everyone else\n\nAgents that don't support a skills/plugin system read plain instruction files. `skills/hush/SKILL.md` is the single source of truth — the block between `<!-- RULE-SUMMARY:START -->` and `<!-- RULE-SUMMARY:END -->` is extracted verbatim into every file below by `npm run sync` (`node scripts/sync-rules.mjs`). Edit `SKILL.md`, run `npm run sync`, and every adapter updates together — no hand-copying, and no symlinks (a symlink would drag SKILL.md's YAML frontmatter and worked Examples into files that must stay plain instructions, and breaks on a GitHub zip download or a Windows checkout without symlink support). `npm run check` reruns the sync and fails if anything is out of date — wire it into CI to catch drift.\n\n| Agent / editor | File |\n|---|---|\n| GitHub Copilot | `.github/copilot-instructions.md` |\n| Cursor | `.cursor/rules/hush.mdc` |\n| Windsurf | `.windsurf/rules/hush.md` |\n| Cline | `.clinerules/hush.md` |\n| Kiro | `.kiro/steering/hush.md` |\n| Qoder | `.qoder/rules/hush.md` |\n| Generic `.agents/` convention (OpenCode, Devin, etc.) | `.agents/rules/hush.md` |\n| Gemini CLI | `GEMINI.md`, referenced by `gemini-extension.json`'s `contextFileName` |\n\nRoot-level `AGENTS.md` and `CLAUDE.md` are **not** part of this list — see [Developing this repo](#developing-this-repo).\n\n## Developing this repo\n\n`skills/hush/SKILL.md` is the only file you hand-edit; everything else in this\nsection is generated by `npm run sync`. See [`AGENTS.md`](AGENTS.md) for the\nfull dev guide (this is what an agent working on hush itself should read —\n`CLAUDE.md` just points here with one Claude-specific note).\n\nThis repo also dogfoods its own skill: `.claude/skills/hush/SKILL.md` and\n`.agents/skills/hush/SKILL.md` are full copies of `skills/hush/SKILL.md`,\nplaced where Claude Code and other `.agents/skills/`-aware agents auto-discover\nproject-local skills — so opening this repo directly loads Hush for the session.\n\n## Repo layout\n\n```tree\nhush/\n  skills/\n    hush/\n      SKILL.md              # the skill itself — name + description frontmatter, then the full ruleset + examples\n  .claude/\n    skills/hush/SKILL.md     # generated full copy — Claude Code project-local dogfood\n  .agents/\n    skills/hush/SKILL.md     # generated full copy — generic .agents/skills/ dogfood\n    rules/hush.md            # generated condensed copy — distributed to consumer projects\n  .claude-plugin/\n    plugin.json              # Claude Code plugin manifest\n    marketplace.json         # self-hosted Claude Code marketplace listing\n  .codex-plugin/\n    plugin.json              # Codex plugin manifest (points \"skills\" at ./skills/)\n    marketplace.json         # self-hosted Codex marketplace listing\n  scripts/\n    sync-rules.mjs           # generates every file below from SKILL.md\n  AGENTS.md                 # hand-maintained — dev guide for people working on hush itself\n  CLAUDE.md                 # hand-maintained — points at AGENTS.md, Claude-specific note\n  GEMINI.md                 # generated — Gemini CLI context file\n  gemini-extension.json     # Gemini CLI extension manifest, contextFileName: GEMINI.md\n  .github/copilot-instructions.md\n  .cursor/rules/hush.mdc\n  .windsurf/rules/hush.md\n  .clinerules/hush.md\n  .kiro/steering/hush.md\n  .qoder/rules/hush.md\n  README.md\n  LICENSE\n```\n\nAdding a sibling skill later (e.g. a `hush-review` that audits an existing diff for comment-noise) just means a new `skills/<name>/SKILL.md` directory — no other changes needed.\n\n## License\n\nMIT — see [`LICENSE`](LICENSE).\n",
  "bytes": 5375,
  "sha": "44bc8cc8a5811239662044589c8a92d65fdc7f7b2a9f952c322c32283d38de8c",
  "repo_slug": "ro80t/hush",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ro80t_hush_45822e16/readme"
}