{"_id":"@dennisrongo/dsh-superpowers","_rev":"4-af4f16b5152c672049296c28ad800a24","name":"@dennisrongo/dsh-superpowers","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@dennisrongo/dsh-superpowers","version":"0.1.0","license":"MIT","_id":"@dennisrongo/dsh-superpowers@0.1.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"b9fe8426576de2b8625bd59bdc3f39f007cc999c","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-superpowers/-/dsh-superpowers-0.1.0.tgz","fileCount":4,"integrity":"sha512-i2t17dsmzAZMlnROKrjptVi9TiFBTPbGfqRiYHINxXVrkpuefzMlEhltV9gvFbbfHr4kXo+o98aH4XQvnhtldw==","signatures":[{"sig":"MEUCIQCxa+rzGqiHg8DbLNXgjBHdmWPS2IhWvQcnVF8FnAt9iAIgWuixSHhcraKFOaX3ALMVTXtb3Ir28gLKy+6U3K1ksCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-superpowers@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10581},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./package.json":"./package.json"},"gitHead":"af2fc63d3ef2600cff8b0f1f03bfb89aa8ed5c88","_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-superpowers"},"_npmVersion":"10.9.8","description":"Superpowers methodology bootstrap for dsh: injects the using-superpowers skill as a persistent system-prompt section (session start + compaction-safe)","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-superpowers_0.1.0_1787867478635_0.39026023157634393","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dennisrongo/dsh-superpowers","version":"0.2.0","license":"MIT","_id":"@dennisrongo/dsh-superpowers@0.2.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"322d9d6773da72b0be33625d4ddee7563f834b83","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-superpowers/-/dsh-superpowers-0.2.0.tgz","fileCount":4,"integrity":"sha512-kHfs3IonbSy2vgZ8h0ruM+iHkEes6Eked5+V76hkf9y63pdrCqSD8Yi318HEFySokRa6zxZjugbzGaLKszfNgA==","signatures":[{"sig":"MEUCICU5nhzu4wbPD65UN87W+TfLO9RwfLC7msA1KvDIcrOLAiEAvpYOp7L9sfgBLgLa6s3R8hO4zMcBKpxi+MFD0TcLoUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD8gVEC/tpuc7qU/kLdl4iA7hGUFPYmAbflVE+nLWk0FAIhAMWYuyGrXWztfgg+e8tcrTgK6AGLDeg6MUN1Luaq5wTr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-superpowers@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10581},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./package.json":"./package.json"},"gitHead":"e8ade9e9fdfff3981b3cd9753c3f79b0a4ba11e6","_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-superpowers"},"_npmVersion":"10.9.8","description":"Superpowers methodology bootstrap for dsh: injects the using-superpowers skill as a persistent system-prompt section (session start + compaction-safe)","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-superpowers_0.2.0_1787880983484_0.5267500591399172","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dennisrongo/dsh-superpowers","version":"0.3.0","license":"MIT","_id":"@dennisrongo/dsh-superpowers@0.3.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"327f522e4426e27e921fa0a9d41cd41a7e388ff4","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-superpowers/-/dsh-superpowers-0.3.0.tgz","fileCount":4,"integrity":"sha512-IzuKakXq5toD7WBJ8uMdlJqvmhz5KR/7sm9zIkDrikxw5wsPLiygWKkzFSzpZyuYW+v4uF8EehRGpDT1ETSIuQ==","signatures":[{"sig":"MEYCIQCAXbxjJVqdtDpIs1LqXIqyZsWKIj5LfgJuAlmw8bTvYwIhAIo4yxfsXXyJX0XawyUCorOfaIKEClPRpBHWLfr8iEkf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+IWCFy87ykvmioNDYrADRHPEbNMVYI08sSGgu+8hDIgIhAPElKfArAZnpbClDwk9uxiqs/u66oox5kZGlx0UW7qJ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-superpowers@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10581},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./package.json":"./package.json"},"gitHead":"377c8ef55a1bc9a64a99d08a7b73c398ae83b113","_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-superpowers"},"_npmVersion":"10.9.8","description":"Superpowers methodology bootstrap for dsh: injects the using-superpowers skill as a persistent system-prompt section (session start + compaction-safe)","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-superpowers_0.3.0_1787891256675_0.14066180138219386","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@dennisrongo/dsh-superpowers@0.4.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dist":{"shasum":"9c8a371b6c7548a76af272dbe5fd10e76f720ff6","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-superpowers/-/dsh-superpowers-0.4.0.tgz","fileCount":57,"integrity":"sha512-b/8EnJAvKEor4VDoUpf1o90UMHK1mAW83sPDH72erYZsgxnSwNV2FRDFrStJ9GGzJ20U6W+fwY/Qos7PDV5OvA==","signatures":[{"sig":"MEQCIC5vk7SKKie2PrwkidySrbATk1O0gC3VCMStZetp7LKwAiB267oLWEgrHBDLwkhrEnUXAEbufNvrVSwjcuyEClR+pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCYNzIwEbWfjJM6LAGMDDlJV6+zrsxvf4Td5PKD1tPreAIgaHiEu5i6ALg1arDtLn88ZgjM79dyv+ZdxcJw9HBVl3o="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-superpowers@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":400945},"main":"lib/index.js","name":"@dennisrongo/dsh-superpowers","type":"module","author":{"url":"https://www.youtube.com/@codingmenace","name":"Dennis Rongo"},"exports":{".":"./lib/index.js","./package.json":"./package.json"},"gitHead":"e3786cf6b1cf7a267fb5d1b97186cbc3aa4124d3","license":"MIT","scripts":{"test":"node test/smoke.mjs && node test/sabotage.mjs"},"version":"0.4.0","_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers#readme","keywords":["ai-coding-agent","claude-code-alternative","deepseek-harness","dsh","dsh-plugin"],"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-superpowers"},"_npmVersion":"10.9.8","description":"Superpowers for dsh: injects the using-superpowers bootstrap as a persistent system-prompt section (session start + compaction-safe) and serves the Superpowers skills to the skill catalog, bundled so a machine with no clone still gets them","directories":{},"maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"_nodeVersion":"22.23.2","dependencies":{"yaml":"^2.6.1"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-superpowers_0.4.0_1789592637012_0.0796771662178557"}}},"time":{"created":"2026-08-27T21:51:18.435Z","modified":"2026-09-16T21:03:57.401Z","0.1.0":"2026-08-27T21:51:18.786Z","0.2.0":"2026-08-28T01:36:23.561Z","0.3.0":"2026-08-28T04:27:36.777Z","0.4.0":"2026-09-16T21:03:57.091Z"},"bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"license":"MIT","homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers#readme","repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-superpowers"},"description":"Superpowers for dsh: injects the using-superpowers bootstrap as a persistent system-prompt section (session start + compaction-safe) and serves the Superpowers skills to the skill catalog, bundled so a machine with no clone still gets them","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"readme":"# dsh-superpowers\n\n[![npm](https://img.shields.io/npm/v/@dennisrongo/dsh-superpowers)](https://www.npmjs.com/package/@dennisrongo/dsh-superpowers)\n\n**npm:** [`@dennisrongo/dsh-superpowers`](https://www.npmjs.com/package/@dennisrongo/dsh-superpowers) ·\n**source:** [dennisrongo/dsh-plugins](https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-superpowers)\n\n> Mind the scope. The **unscoped** `dsh-superpowers` on npm is an unrelated plugin by another\n> author, so `add dsh-superpowers` fetches theirs, not this one.\n\nInjects the [Superpowers](https://github.com/obra/superpowers) methodology bootstrap\n(`skills/using-superpowers/SKILL.md`) into every dsh agent's system prompt as an ordered,\npersistent section — **and serves the 14 Superpowers skills to dsh's skill catalog**, so\nthey work on a machine that has never cloned anything.\n\nUpstream harnesses deliver the bootstrap via a SessionStart hook that must re-fire on\n`startup|clear|compact`. dsh has no hook shell, but its system prompt is a layered, ordered\nsection registry that is **reassembled after compaction** — so a single registered section\ncovers all three upstream trigger points for the life of the session, with no gap between\nsession start and the first compaction.\n\nBoth halves are independent: neither a missing clone nor a profile without a skills service\ncan take the other down, and neither stops dsh booting.\n\n### Where the skills come from\n\nThe plugin serves whichever it finds first — your clone if you have one, otherwise a pinned\nsnapshot bundled with the package:\n\n```\nsuperpowersRoot config → SUPERPOWERS_ROOT → probe of ~/… → bundled vendor/ snapshot\n```\n\n**A real clone always wins**, so `git pull` keeps working exactly as before. The snapshot is\nonly the floor that makes a fresh install work — without it, a machine with no clone gets a\nsilently empty catalog, since dsh reports a missing skills root as an empty list rather than\nan error.\n\nThe bootstrap prose is vendored only in that snapshot\n(`obra/superpowers@b36e082`, MIT © 2025 Jesse Vincent — see `vendor/PROVENANCE`). When the\nplugin resolves your clone instead, nothing from upstream is vendored at all.\n\n> **Already using `link-superpowers-skills.mjs`?** Set `skillProvider: false`, or the same 14\n> skills are listed twice — once by the junctions, once by this provider.\n\n## Updating the plugin\n\n```bash\ndsh plugin --profile <name> outdated\ndsh plugin --profile <name> update @dennisrongo/dsh-superpowers\n```\n\n`dsh plugin` forwards to pnpm. This plugin is host-only, so a **profile restart** is required\n— the section is read in `apply()`, and a browser refresh will not pick it up.\n\nThat updates the *adapter*. The methodology itself lives in your Superpowers clone and\nupdates separately:\n\n## Updating from upstream\n\n```bash\ncd <your superpowers clone> && git pull\n```\n\nTwo halves, and they are updated differently:\n\n| Half | How it is consumed | After a pull |\n|---|---|---|\n| The bootstrap prompt section | read from `<root>/skills/using-superpowers/SKILL.md` at profile start | **restart the profile** (read happens in `apply()`, not per session) |\n| The skills catalog | discovered by dsh from `<agentsHome>/skills` | nothing, *if* those entries are links — see below |\n\nLink the clone's skills in once, and a pull updates them in place:\n\n```bash\nnode scripts/link-superpowers-skills.mjs            # from the repo root\nnode scripts/link-superpowers-skills.mjs --dry-run  # preview\nnode scripts/link-superpowers-skills.mjs --restore  # undo, restoring saved copies\n```\n\nJunctions on Windows, directory symlinks on macOS/Linux. Real directories already in place\nare moved to `<agentsHome>/skills-backup-superpowers` before being replaced, so it is\nreversible. Re-run it after a pull that adds a **new** upstream skill.\n\n## Locating the clone\n\nResolution order, first hit wins:\n\n1. `superpowersRoot` in the profile's `cordis.patch.yml`\n2. the `SUPERPOWERS_ROOT` environment variable\n3. a probe of common clone locations under your home directory — `~/superpowers`,\n   `~/src`, `~/code`, `~/dev`, `~/git`, `~/repos`, `~/Projects`, `~/Documents`,\n   `~/Documents/GitHub`, all derived from `homedir()` so they work on any platform\n4. the **bundled `vendor/` snapshot**, which is always present\n\nBecause step 4 always succeeds, you get the bootstrap *and* the skills with no\nconfiguration at all. Set `superpowersRoot` when you want your own clone to be authoritative\n— it takes precedence, and then `git pull` (plus a profile restart) is the whole update\npath. The probe list is only a guess about where you keep clones.\n\nThe old \"no superpowers clone found\" warning is now reachable only when a root you\nconfigured explicitly is wrong.\n\n## Install (profile-level)\n\n```yaml\n# <profile>/cordis.patch.yml — add one row\n- id: superpowers\n  name: '@dennisrongo/dsh-superpowers'\n  config:\n    superpowersRoot: /absolute/path/to/superpowers\n```\n\nwith `pnpm add \"file:/absolute/path/to/dsh-plugins/plugins/dsh-superpowers\"` in the profile,\nor straight from GitHub:\n\n```bash\ndsh plugin --profile <name> add \"github:dennisrongo/dsh-plugins#path:/plugins/dsh-superpowers\"\n```\n\nThe folder is `plugins/dsh-superpowers` but the package is `@dennisrongo/dsh-superpowers`, so\nit installs under the scope. Mind the difference: the **unscoped** `dsh-superpowers` on npm is\nan unrelated plugin by another author, so `add dsh-superpowers` fetches theirs, not this one.\n\n## Config\n\n| key | default | meaning |\n|---|---|---|\n| `superpowersRoot` | `\"\"` → resolved (see above) | repo root containing `skills/using-superpowers/SKILL.md` |\n| `order` | `-50` | prompt section order (persona is 0; we sit before it) |\n| `enabled` | `true` | master switch; false silences every section and the skill provider |\n| `askWithOptions` | `true` | register the \"offer choices as choices\" section (below) |\n| `askWithOptionsOrder` | `-45` | order for that section |\n| `skillProvider` | `true` | serve the skills to dsh's catalog; set `false` if you deliver them another way |\n\n## Also: \"offer choices as choices\"\n\nA second, independent prompt section — hand-written here, nothing to do with the\nSuperpowers clone, and registered whether or not that clone exists.\n\ndsh can already render a real picker. `ask_user_question` accepts `options[]`\nwith a label and a one-line description, plus `multi_select`, and the shipped\nquestion UI turns that into a radiogroup or a checkbox group. What it cannot do\nis turn prose into controls: a structured surface exists only for an actual tool\ncall, and a tool call can only happen *during* a turn. So an answer that ends\n\"A or B?\" in markdown stays markdown forever, and you pay for it by typing a\nreply that the model then has to guess the meaning of.\n\nThis section asks the model to reach for the tool in exactly that moment — with\na recommended option first, and `multi_select` when more than one can apply. It\ndeliberately stands down in plan mode, where dsh's own rules make\n`exit_plan_mode` the single interaction and say so in terms that override later\nguidance.\n\nSet `askWithOptions: false` to drop it without touching the bootstrap.\n\n## Tests\n\n```bash\npnpm test    # offline, no harness, no clone needed\n```\n\nEvery failure mode in this plugin is **silent by design** — a missing clone, a bad root,\n`enabled: false`, an absent skills service and a malformed skill bundle all register nothing\nand let dsh boot normally. So a regression breaks nothing visibly; the bootstrap and the\ncatalog just stop reaching the model.\n\n35 checks pin section identity and order, frontmatter stripping, the resolution precedence\n(config > env > probe > vendored snapshot), the non-fatal warning path, the skill-provider\ncontract, and that registration goes through `ctx.effect`.\n\n`test/sabotage.mjs` then breaks `lib/index.js` 16 different ways and requires the suite to go\nred each time — a check that has never failed is decoration. Two checks escaped the first\nrun and were rewritten; see `AGENTS.md`.\n\n## Notes\n\n- The bootstrap body has its YAML frontmatter stripped — the model needs the behavioural\n  mandate, not the trigger metadata. If upstream restructures `SKILL.md`, that regex in\n  `lib/index.js` is the thing to check; failure is non-fatal and logs\n  `[dsh-superpowers] cannot read …`, so watch profile stderr after a pull.\n- `@deepseek-ai/schemastery` and `@deepseek-ai/cordis` are peers, supplied by your dsh\n  install. When this package is junctioned into a profile it resolves them through its own\n  `node_modules/@deepseek-ai/*` — run `scripts/dev-link.ps1` to create those, or the\n  harness fails to load the plugin with `ERR_MODULE_NOT_FOUND`.\n\n---\n\n## About the author\n\nPlugins and walkthroughs on [YouTube @codingmenace](https://www.youtube.com/@codingmenace) —\nI build AI coding tools in public, including DeepSeek Harness itself. More at\n[dennisrongo.com](https://dennisrongo.com/).\n","readmeFilename":"README.md","keywords":["ai-coding-agent","claude-code-alternative","deepseek-harness","dsh","dsh-plugin"],"author":{"url":"https://www.youtube.com/@codingmenace","name":"Dennis Rongo"}}