{"_id":"@dan323/easier-life-skills","_rev":"7-7bf38d3a729cfd0e6040576494b30840","name":"@dan323/easier-life-skills","dist-tags":{"latest":"1.9.1"},"versions":{"1.5.1":{"name":"@dan323/easier-life-skills","version":"1.5.1","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.5.1","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"df56b536e6220dfd9e4e74a91916f7bca5cd133e","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.5.1.tgz","fileCount":8,"integrity":"sha512-o7xSW743sAZjNZskBFSWZDheriy8HVGQTYGEhqZN3MHcqKlb2LVRF0TVcJbfugGAZg97YuDLGLBX3kdOfWPNmA==","signatures":[{"sig":"MEYCIQCoKYjagDmOFa9Z7Aa15563mJfmX0EuwU5mZGBqY3lkdAIhAKomZ3bHSVgfZUJxdqcwT7kq0Oy1yHpxVowMszxbjimU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29872},"type":"module","engines":{"node":">=18"},"gitHead":"03ca2caaea3313236c271a34cc01255f53bca0d8","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.9.4","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.5.1_1779004127560_0.15918270752859076","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@dan323/easier-life-skills","version":"1.5.2","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.5.2","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"2a1ba40f15bde0e6e423b1b6f7da2d4af5c61900","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.5.2.tgz","fileCount":8,"integrity":"sha512-WGxk7OhkSKYPbXPt/ObOM21QtH6WOUhgnb108lzD4KRN0371W0FzNnAHbISe/CGy+0MYCyPiNrCA1/Hhicx5PQ==","signatures":[{"sig":"MEQCIH8ZijzWhYaZ+r4e57c4KUiq/7WXFfYIeoDIz8pZ7588AiBjcdcxINxlTy31qMaChBfaCHvNj2Pp8PRG2ZlG591asg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29826},"type":"module","engines":{"node":">=18"},"gitHead":"03ca2caaea3313236c271a34cc01255f53bca0d8","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.9.4","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.5.2_1779004316639_0.21521590245010702","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@dan323/easier-life-skills","version":"1.6.0","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.6.0","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"69ec7a7444fed19a3f9c9c9bb163761f0174b3f0","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.6.0.tgz","fileCount":8,"integrity":"sha512-UducQR8VUv8/wC9wlAzRMag51gBFXzlMS/EJHVlwyMrA57g4acD9rufQJGfk/jRiHpeHggzjg949NTeWzD2C8w==","signatures":[{"sig":"MEUCIQDYMla2ucyPiC4vI6fgbT7iZI4jHvDExkZg7uCZI1uaaAIgNJi+ANpBVu587KJdBbIlNU5LgZtL7OjmwZzAVzTLff8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33096},"type":"module","engines":{"node":">=18"},"gitHead":"c1f016eb96a147186809ed2820d0841650f7d7d2","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.6.0_1779005429038_0.11500106692003897","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@dan323/easier-life-skills","version":"1.7.0","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.7.0","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"f3d0df23d23807134f3b171d9de7c91d10a7a71e","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.7.0.tgz","fileCount":8,"integrity":"sha512-Eqx/eDHhCrvYF7AQV1t3SvHwZtZE994/UyikStKrYb2eA2b/EGWQvrNR2ZPj4mw2ITeRvk2vFKOwNKzCoGkWUw==","signatures":[{"sig":"MEUCIQC1HzyPZaKzV6jj7CgBjyzrMXuxiUfGxSPCGYbaIlJyDQIgQ2OoOOs7dNVj0conFhEHwVYOF8WYe8U2AIiFt9c2j/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39733},"type":"module","engines":{"node":">=18"},"gitHead":"561de10d4ec9e49c0c04e2d74d2fb1f15cb95754","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.7.0_1779006399056_0.10221032014698328","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@dan323/easier-life-skills","version":"1.8.0","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.8.0","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"3edc911e79bea8fa26517b26771a52b4521abbcd","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.8.0.tgz","fileCount":8,"integrity":"sha512-PpcxrtZuvVqSQlitqom8i+WEYpEpPdt0lgLN46YD7ZvcWU2aK7mwNsb0kiYkOnXW3/sT8N6Vg0gJQ1EdlakU1A==","signatures":[{"sig":"MEQCICSbKqOD1zNZ3JMiTYr8sjQFhH5MXo0MdbuMu4SPjKgyAiB5BwBI7Zj0ReBoCPCLmaG0L3iOKlhy1PMKcUM7P0bniw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47254},"type":"module","engines":{"node":">=18"},"gitHead":"6337a3c7b24d036850e1012a4a0064df612d8506","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.8.0_1779007477792_0.40380540023264033","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@dan323/easier-life-skills","version":"1.9.0","keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","_id":"@dan323/easier-life-skills@1.9.0","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"homepage":"https://github.com/dan323/easier-life-skills#readme","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"bin":{"easier-life-skills":"dist/bin/install.js"},"dist":{"shasum":"dbf08b70f0d18e49b4e63ae0d0a889d7e7a01361","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.9.0.tgz","fileCount":8,"integrity":"sha512-G+t4r9FyFIirugwky/Kz9vtvaFGgYrnL/CvFL2pRdkc5Mzfwtbl3QQHIkFkFVsOAvVQE4WI4rgmLuwyd2ov6Lw==","signatures":[{"sig":"MEQCIFBttm1f++hZH7nEMU+Nt7hvU5uFOyIRAwDtRR8GY53sAiAF7icT2XrhrL7b0+Y0wDCsAYEUTr9QGCo8BqigSLctTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51855},"type":"module","engines":{"node":">=18"},"gitHead":"6807418595f5c5615c824fd1cb056959e8d9f844","scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"repository":{"url":"git+https://github.com/dan323/easier-life-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"Install Claude Code skills from the easier-life-skills marketplace","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easier-life-skills_1.9.0_1779439553495_0.5584213840061425","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@dan323/easier-life-skills","version":"1.9.1","description":"Install Claude Code skills from the easier-life-skills marketplace","type":"module","bin":{"easier-life-skills":"dist/bin/install.js"},"scripts":{"build":"tsc -p .","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run clean && npm run build"},"engines":{"node":">=18"},"keywords":["claude","claude-code","skills","plugins","ai"],"author":{"name":"dan323"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dan323/easier-life-skills.git"},"_id":"@dan323/easier-life-skills@1.9.1","gitHead":"a096c7fb2233ba3b2917fe75e3f0cf8fe13af8e8","bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"homepage":"https://github.com/dan323/easier-life-skills#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-A48C5SS147DC01Tp+gBeT31WT/R6hatuLpOg/EBSVKwnwuoMGnY7Z3e77WusQTMIY/meCDMLZbjtUbxMlT9jgg==","shasum":"c5ab7e57314a7aaba15773a7e35474df5b37e384","tarball":"https://registry.npmjs.org/@dan323/easier-life-skills/-/easier-life-skills-1.9.1.tgz","fileCount":8,"unpackedSize":51835,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCtHGfgKCIiLrR5gQzqHmvqN/MCN61dka8C82cviDP0DAIgXnpAJUrga4sya3PGk3JhJyXr3Ipy/QZ9EfbnMLqqL5g="}]},"_npmUser":{"name":"dan323","email":"danconsa@hotmail.com"},"directories":{},"maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easier-life-skills_1.9.1_1781308154864_0.8418993344989358"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T07:48:47.478Z","modified":"2026-06-12T23:49:15.130Z","1.5.1":"2026-05-17T07:48:47.733Z","1.5.2":"2026-05-17T07:51:56.791Z","1.6.0":"2026-05-17T08:10:29.171Z","1.7.0":"2026-05-17T08:26:39.197Z","1.8.0":"2026-05-17T08:44:37.933Z","1.9.0":"2026-05-22T08:45:53.651Z","1.9.1":"2026-06-12T23:49:15.015Z"},"bugs":{"url":"https://github.com/dan323/easier-life-skills/issues"},"author":{"name":"dan323"},"license":"MIT","homepage":"https://github.com/dan323/easier-life-skills#readme","keywords":["claude","claude-code","skills","plugins","ai"],"repository":{"type":"git","url":"git+https://github.com/dan323/easier-life-skills.git"},"description":"Install Claude Code skills from the easier-life-skills marketplace","maintainers":[{"name":"dan323","email":"danconsa@hotmail.com"}],"readme":"# @dan323/easier-life-skills\n\nCLI installer for the [easier-life-skills](https://github.com/dan323/easier-life-skills) Claude Code marketplace.\n\n## How it works\n\nEvery install goes through Claude Code's `claude plugin marketplace add` + `claude plugin install` so the plugin lands at `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/` and is registered in `~/.claude/plugins/installed_plugins.json`. From that moment on, `claude plugin list`, `claude plugin update`, and `claude plugin uninstall` all see and operate on it — no parallel install path, no bespoke registry.\n\nThe installer routes per source repo:\n\n- **Source repo has `.claude-plugin/marketplace.json`** → `claude plugin marketplace add <owner>/<repo>` (if not already registered) + `claude plugin install <pluginName>@<repo>`.\n- **Source repo is plugin-only** (no marketplace.json — e.g. `mattpocock/skills`) → the installer synthesises a per-plugin shim marketplace at `~/.config/easier-life-skills/shims/<pluginName>/.claude-plugin/marketplace.json` whose single plugin entry uses Claude Code's `source: { source: \"url\", url: \"https://github.com/<owner>/<repo>\" }` mechanism. The shim is registered via `claude plugin marketplace add <shim-path>`, then `claude plugin install <pluginName>@<pluginName>` pulls the upstream repo through Claude Code's normal install path. The shim marketplace is named after the plugin (so it never collides with the upstream marketplace names) and is the same single file no matter how many times it's installed.\n\nThe npx side handles three things on top of those `claude plugin` calls:\n\n- Fetching the marketplace's `skills_index.json` so `--list` and `--search` work as fast offline discovery.\n- Caching the marketplace registration list at the start of each run, so already-registered marketplaces are skipped silently.\n- De-duping plugin installs per session, so a bundle that draws 8 skills from one plugin only emits one `claude plugin install`.\n\n## Usage\n\nNo install needed — run directly with `npx`:\n\n```bash\n# Discovery (does not require claude on $PATH)\nnpx @dan323/easier-life-skills --list\nnpx @dan323/easier-life-skills --search logging\n\n# Install (delegates to: claude plugin marketplace add + claude plugin install)\nnpx @dan323/easier-life-skills --plugin cost-tracker      # hook-only plugin\nnpx @dan323/easier-life-skills --skill changelog           # resolves to parent plugin\nnpx @dan323/easier-life-skills --bundle backend-developer\n\n# Update all plugins installed from this marketplace\n#   (delegates to: claude plugin list --json + claude plugin update)\nnpx @dan323/easier-life-skills --update\n\n# Update a single installed plugin\nnpx @dan323/easier-life-skills --update changelog\n\n# Uninstall an installed plugin\nnpx @dan323/easier-life-skills --uninstall changelog\n\n# Preview the claude commands without running them\nnpx @dan323/easier-life-skills --bundle backend-developer --dry-run\n\n# Skip confirmation prompt\nnpx @dan323/easier-life-skills --skill changelog --yes\n```\n\n## What each flag does\n\n| Flag               | Delegates to                                                                                                                                                                                                                                                                                                                                                                          |\n|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `--list`           | No claude calls (reads `skills_index.json` only). Shows plugins, skills, and bundles.                                                                                                                                                                                                                                                                                                  |\n| `--search <query>` | No claude calls. Matches both plugins (by name, description, category, or any entity they ship) and skills (by name, description, keywords).                                                                                                                                                                                                                                            |\n| `--plugin <name>`  | Install a plugin by name — works for any plugin, including hook/agent/command/MCP-only plugins that don't ship a skill. Same routing as `--skill`: marketplace add + plugin install (or shim+install for plugin-only sources).                                                                                                                                                          |\n| `--skill <name>`   | If the skill's source has marketplace.json: `claude plugin marketplace add <owner>/<repo>` (if missing) + `claude plugin install <pluginName>@<repo>`. If plugin-only: writes a shim marketplace.json under `~/.config/easier-life-skills/shims/<pluginName>/`, registers it via `claude plugin marketplace add <shim-path>`, then `claude plugin install <pluginName>@<pluginName>`. |\n| `--bundle <id>`    | Same as `--skill` but looped over every skill in the bundle. Marketplace registrations and plugin installs are cached per session (8 skills from one plugin → one install). Shim marketplaces are written / registered once per plugin-only repo.                                                                                                                                     |\n| `--update`            | `claude plugin list --json` to find plugins from any of the marketplaces this index knows about (real upstream marketplaces *plus* the synthetic shim marketplaces this installer registered), then `claude plugin update <pluginName>@<marketplace>` for each.                                                                                                                       |\n| `--update <name>`     | Same, but only one plugin (errors with exit 1 if `<name>` isn't installed from one of the marketplaces this index covers).                                                                                                                                                                                                                                                            |\n| `--uninstall <name>`  | `claude plugin list --json` to verify the plugin is installed from a marketplace this index knows about, then `claude plugin uninstall <pluginName>@<marketplace>`. Errors with exit 1 if `<name>` isn't installed from a known marketplace.                                                                                                                                          |\n| `--dry-run`           | Prints the claude commands and shim writes that *would* run, doesn't execute them.                                                                                                                                                                                                                                                                                                    |\n| `--yes`               | Skips the confirmation prompt before any install/update/uninstall.                                                                                                                                                                                                                                                                                                                    |\n\n## Bundles\n\nRun `npx @dan323/easier-life-skills --list` to see the up-to-date set. Highlights:\n\n| Bundle                   | Mix of sources                                                                       |\n|--------------------------|--------------------------------------------------------------------------------------|\n| `backend-developer`      | dan323/easier-life-skills only                                                       |\n| `open-source-maintainer` | dan323/easier-life-skills only                                                       |\n| `tdd-practitioner`       | mattpocock/skills (plugin-only, cloned) + obra/superpowers + anthropics/skills       |\n| `planning-and-execution` | dan323/easier-life-skills + obra/superpowers                                         |\n| `skill-author`           | dan323/easier-life-skills + anthropics/skills + mattpocock/skills + obra/superpowers |\n| `frontend-designer`      | anthropics/skills only                                                               |\n\n## Requirements\n\n- Node.js 18+\n- [Claude Code](https://claude.ai/code) — the `claude` CLI must be on `$PATH` for `--skill`, `--bundle`, and `--update`. `--list` and `--search` work without it.\n\n## After Installing\n\nRestart Claude Code to pick up the newly-installed (or updated) plugin. Whether the install went through a real upstream marketplace or a shim marketplace, the plugin is registered in `~/.claude/plugins/installed_plugins.json` by the time `npx` returns and `claude plugin list` shows it like any other.\n\nTo uninstall: run `npx @dan323/easier-life-skills --uninstall <pluginName>` — the installer looks up the right marketplace and delegates to `claude plugin uninstall <pluginName>@<marketplace>`. Alternatively, call `claude plugin uninstall <pluginName>@<marketplace>` directly. The shim marketplace files under `~/.config/easier-life-skills/shims/<plugin>/` are safe to leave in place (they're tiny and idempotent) — re-installing the same plugin reuses the existing shim.\n","readmeFilename":"README.md"}