{
  "markdown": "# claudecode-skills\n\nTwo skills that configure **Claude Code itself** — the prompt-cache TTL and the\nstatus line — by patching `settings.json` without losing a single unrelated\nkey. Packaged as one plugin named `claudecode`, installable on six coding-agent\nharnesses.\n\nEverything they need ships inside the plugin. A machine that has never cloned\n`dEitY719/dotfiles` gets the same result as one that has.\n\n## Skills\n\n| Skill | Invoke | What it does |\n|-------|--------|--------------|\n| `cache-ttl` | `/claudecode:cache-ttl [1h\\|5m]` | Flips `env.ENABLE_PROMPT_CACHING_1H` — sets it to `\"1\"` for a 1-hour prompt cache, deletes it (and an emptied `.env`) to go back to the 5-minute default. Prints the before -> after value. |\n| `statusline-setup` | `/claudecode:statusline-setup [--dry-run]` | Copies the bundled `statusline-command.sh` + `statusline-tokens.sh` into the Claude config dir, makes them executable, and sets `.statusLine` to run the installed path. Backs up a modified destination file first. |\n\nBoth target `${CLAUDE_CONFIG_DIR:-$HOME/.claude}`, so a multi-account setup\nconfigures each account by exporting that variable before the call.\n\n### Visual guides and worked examples (GitHub Pages)\n\nLanding page: <https://deity719.github.io/claudecode-skills/>\n\n- `cache-ttl` — [visual guide](https://deity719.github.io/claudecode-skills/skill-guides/cache-ttl.html) · [usage example](https://deity719.github.io/claudecode-skills/skill-output/cache-ttl-usage.html) (settings.json to settings.json, one env key)\n- `statusline-setup` — [visual guide](https://deity719.github.io/claudecode-skills/skill-guides/statusline-setup.html) · [usage example](https://deity719.github.io/claudecode-skills/skill-output/statusline-setup-usage.html) (bundled assets to installed status line)\n\n## Safety contract\n\nBoth scripts behave identically at the edges, and the tests enforce it:\n\n- **`jq` or nothing.** No `jq` on PATH prints install guidance and exits 3.\n  There is no `sed` / `python` fallback — a half-parsed JSON edit that \"usually\n  works\" is worse than a refusal.\n- **Invalid JSON is never overwritten.** A `settings.json` that fails\n  `jq -e .` is copied to `settings.json.bak` and the script exits 4 having\n  written nothing.\n- **Lossless merge.** `hooks`, `model`, `permissions`, `statusLine`, `env` —\n  everything unrelated survives. Writes go through a temp file in the target\n  directory and an atomic `mv`, so a `jq` failure cannot truncate the real file.\n- **One key each.** `cache-ttl` touches `env.ENABLE_PROMPT_CACHING_1H`;\n  `statusline-setup` touches `statusLine`. Neither touches anything else.\n\nRestart Claude Code for either change to take effect.\n\n## Prerequisites\n\n- `jq`\n- **bash 4.4+** for `statusline-setup` — `statusline-command.sh` uses\n  associative arrays. macOS ships bash 3.2; `brew install bash` first.\n\n## Install\n\n### Claude Code\n\n```\n/plugin marketplace add dEitY719/claudecode-skills\n/plugin install claudecode@claudecode-skills\n```\n\n### Codex\n\n```\ncodex plugin install dEitY719/claudecode-skills\n```\n\n### Kimi CLI\n\n```\nkimi plugin install dEitY719/claudecode-skills\n```\n\n### Hermes Agent\n\n```\nhermes plugins install dEitY719/claudecode-skills\n```\n\n### OpenCode\n\nSee [`.opencode/INSTALL.md`](.opencode/INSTALL.md).\n\n### Gemini CLI / Antigravity\n\n```\ngemini extensions install https://github.com/dEitY719/claudecode-skills\n```\n\nAntigravity (`agy`) shares `~/.gemini`, so it inherits the install.\n\n## Harness support\n\nBoth skills are one `Bash` call over a bundled POSIX-sh script, so they port\ncleanly everywhere. The per-harness tool mappings are documented once, in\n[`dEitY719/harness-skills/references/`](https://github.com/dEitY719/harness-skills/tree/main/references)\n(dotfiles #1410 F-5).\n\n| Skill | Claude Code | Codex | Kimi | Gemini / Antigravity | Hermes | OpenCode |\n|-------|:-----------:|:-----:|:----:|:--------------------:|:------:|:--------:|\n| `cache-ttl` | full | full | full | full | full | full |\n| `statusline-setup` | full | full | full | full | full | full |\n\nThe status line only renders inside Claude Code, but installing it from another\nharness works — the scripts do not care who runs them.\n\n## Layout\n\nManifests live at the repo root and all point at one flat `skills/` directory:\n\n```\n.\n├── skills/\n│   ├── cache-ttl/{SKILL.md, scripts/, references/}\n│   └── statusline-setup/{SKILL.md, scripts/, assets/, references/}\n├── tests/run.sh                                    POSIX-sh, no framework\n├── .claude-plugin/{marketplace,plugin}.json        Claude Code\n├── .codex-plugin/plugin.json                       Codex\n├── .kimi-plugin/plugin.json                        Kimi CLI\n├── .hermes-plugin/{plugin.yaml,__init__.py}        Hermes Agent\n├── .opencode/plugins/claudecode.js + INSTALL.md    OpenCode\n├── .agents/plugins/marketplace.json                Antigravity\n├── gemini-extension.json + GEMINI.md               Gemini CLI\n├── package.json\n├── CLAUDE.md · AGENTS.md -> CLAUDE.md\n└── LICENSE\n```\n\nOnly Claude Code understands a nested `plugins/<name>/skills/` layout. The other\nfive harnesses resolve manifests at the repo root and a skills tree at\n`./skills/`, so this repo keeps everything flat. See [`CLAUDE.md`](CLAUDE.md) for\nthe full rationale and contribution rules.\n\nThe `.kimi-plugin/` manifest is pre-provisioned: Kimi CLI is not installed on the\nmaintainer's machines yet, and shipping the manifest now costs nothing and saves\na migration later.\n\n## Tests\n\n```sh\nsh tests/run.sh\n```\n\nPlain POSIX sh, no framework. It points `CLAUDE_CONFIG_DIR` at a temp directory\nand asserts every bullet of the safety contract above, printing `PASS`/`FAIL`\nper case and exiting non-zero on the first failure.\n\n## CI\n\n[`.github/workflows/validate.yml`](.github/workflows/validate.yml) calls the\nreusable workflow owned by\n[`dEitY719/harness-skills`](https://github.com/dEitY719/harness-skills/blob/main/.github/workflows/skill-check.yml)\n(dotfiles #1410 D-10) — manifest parsing, required files, skill frontmatter,\nprogressive-disclosure line limits, the Codex description budget, version\nagreement, shellcheck, and an emoji gate.\n\nThere are no checks defined in this repo. To change what is validated here, open\na PR against `harness-skills`.\n\nThe emoji gate is passed `allow-emoji-paths: skills/statusline-setup/assets/`:\nthose two files are verbatim third-party payload and their rendered status line\nuses emoji glyphs. Nothing else in the repo may carry one.\n\n## Provenance\n\n`skills/statusline-setup/assets/statusline-{command,tokens}.sh` are a snapshot of\n[`dEitY719/dotfiles`](https://github.com/dEitY719/dotfiles)\n`claude/statusline-{command,tokens}.sh` at commit `b23e4d9`. They **do not track\nupstream** — re-bundling when dotfiles changes is a deliberate manual act, and\nthat drift is an explicit Non-Goal of dotfiles #1751 rather than a defect.\n\n`statusline-tokens.sh` is byte-identical to its source. `statusline-command.sh`\ncarries one deliberate deviation: upstream hard-codes an organisation-internal\nuser id and usage-API host in its Bedrock cost segment, so the bundled copy\nreads them from `CLAUDE_STATUSLINE_USAGE_ID` / `CLAUDE_STATUSLINE_USAGE_API`\n(plus optional `CLAUDE_STATUSLINE_BUDGET`, default 175) and keeps the segment\noff unless both are set. An unconfigured install makes no network call.\n\nYou do not export those by hand. Claude Code injects `settings.json`'s `env`\nblock into the status line command's environment, so the skill asks for the two\nvalues when the machine needs them and `install-statusline.sh --usage-id ID\n--usage-api URL [--budget N]` writes them into `env` with the same lossless jq\nmerge it uses for `statusLine`. An omitted flag leaves that key untouched.\n\nThis repo answers dotfiles #1751. It is a sibling of `authoring-skills`,\n`harness-skills`, and the other split-out plugin repos from the\ndotfiles #1410 migration.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n",
  "bytes": 7882,
  "sha": "dee6534a7226d8e0da867e5107928438722ec085ecf6ebd7fa8b456546744adc",
  "repo_slug": "deity719/claudecode-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_deity719_claudecode_skills_dc0d4737/readme"
}