{"_id":"@commercetools/commercetools-ai-plugin-sdd","name":"@commercetools/commercetools-ai-plugin-sdd","dist-tags":{"alpha":"0.0.1","latest":"0.0.1"},"versions":{"0.0.1":{"name":"@commercetools/commercetools-ai-plugin-sdd","version":"0.0.1","description":"Overlay installer that wires commercetools skills into GitHub Spec Kit and OpenSpec projects deterministically — without forking either framework.","type":"module","bin":{"ct-sdd":"bin/ct-sdd.mjs"},"scripts":{"test":"node --test"},"engines":{"node":">=18"},"keywords":["commercetools","spec-driven-development","spec-kit","openspec","agent-skills","claude-code"],"license":"MIT","author":{"name":"commercetools"},"repository":{"type":"git","url":"git+https://github.com/commercetools/commercetools-ai-plugins.git"},"gitHead":"2328b6160317f31149b7a637c8633b9521483dce","_id":"@commercetools/commercetools-ai-plugin-sdd@0.0.1","bugs":{"url":"https://github.com/commercetools/commercetools-ai-plugins/issues"},"homepage":"https://github.com/commercetools/commercetools-ai-plugins#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-QXLhxxJtUjbfrO4ZQ5OyGzDexaYIMrEIOLrjWFu1wzOWobqaQsTEaY9WoMMdw3M3fR1sJ+dJYU7Bp6hCfZIpkg==","shasum":"8ef964ed0792ef60ab49658b8e323361acd4ba0a","tarball":"https://registry.npmjs.org/@commercetools/commercetools-ai-plugin-sdd/-/commercetools-ai-plugin-sdd-0.0.1.tgz","fileCount":12,"unpackedSize":25117,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFkeZFMj2TA+PoBd/avXMz8ZRO+2D+LgtlkWRm3mbNKeAiEAzlEJvEtlEgxx9BLW+F+eBdtzwn/6R2Izq8dr/4iYt1g="}]},"_npmUser":{"name":"chukwuemeka","email":"chukwuemeka.ajima@commercetools.com"},"directories":{},"maintainers":[{"name":"commercetools-admin","email":"npmjs@commercetools.com"},{"name":"emmenko","email":"emmenko@gmail.com"},{"name":"hajoeichler","email":"eichler.hajo@gmail.com"},{"name":"tdeekens","email":"nerd@tdeekens.name"},{"name":"jenschude","email":"jens.schulze@commercetools.com"},{"name":"chukwuemeka","email":"chukwuemeka.ajima@commercetools.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/commercetools-ai-plugin-sdd_0.0.1_1785767555721_0.014209979453942534"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T14:32:35.575Z","0.0.1":"2026-08-03T14:32:35.853Z","modified":"2026-08-03T14:32:36.121Z"},"maintainers":[{"name":"commercetools-admin","email":"npmjs@commercetools.com"},{"name":"emmenko","email":"emmenko@gmail.com"},{"name":"hajoeichler","email":"eichler.hajo@gmail.com"},{"name":"tdeekens","email":"nerd@tdeekens.name"},{"name":"jenschude","email":"jens.schulze@commercetools.com"},{"name":"chukwuemeka","email":"chukwuemeka.ajima@commercetools.com"}],"description":"Overlay installer that wires commercetools skills into GitHub Spec Kit and OpenSpec projects deterministically — without forking either framework.","homepage":"https://github.com/commercetools/commercetools-ai-plugins#readme","keywords":["commercetools","spec-driven-development","spec-kit","openspec","agent-skills","claude-code"],"repository":{"type":"git","url":"git+https://github.com/commercetools/commercetools-ai-plugins.git"},"author":{"name":"commercetools"},"bugs":{"url":"https://github.com/commercetools/commercetools-ai-plugins/issues"},"license":"MIT","readme":"# @commercetools/commercetools-ai-plugin-sdd\n\nKeep vanilla Spec Kit / OpenSpec — this overlay wires in commercetools skills deterministically.\n\nIt patches a **spec-driven development** project (GitHub Spec Kit or OpenSpec) so\nthat any spec, plan, or task touching commercetools reliably loads the right\n`commercetools-*` skill at the right phase — without forking either framework.\n\n## Quick start\n\n```bash\n# in a project already initialized with `specify init` or `openspec init`:\nnpx @commercetools/commercetools-ai-plugin-sdd init\n```\n\nThat's it. The overlay detects which framework(s) are present and applies its\nmarker blocks. Re-running is safe (idempotent), and `remove` restores the project\nexactly.\n\n## Commands\n\n```\nct-sdd init    [--framework speckit|openspec] [--dry-run] [--pin <version>]\nct-sdd remove  [--framework speckit|openspec] [--dry-run]\nct-sdd status  [--framework speckit|openspec]\n```\n\n- `--framework` — act on only one framework (default: every one detected).\n- `--dry-run` — print what would change, write nothing.\n- `--pin <version>` — abort unless the bundled overlay matches `<version>`. The\n  overlay content is pinned by the package version, so pin by installing a\n  specific package version (`...@0.1.0`); this flag guards against using the\n  wrong one.\n- `--cwd <dir>` — operate in `<dir>` instead of the current directory.\n\nDetection: `.specify/` → Spec Kit, `openspec/` → OpenSpec.\n\n## What it patches\n\nEvery change is wrapped in removable marker blocks — nothing outside the markers\nis ever rewritten.\n\n**Spec Kit** (`.specify/`)\n| File | Block | Effect |\n|---|---|---|\n| `.specify/memory/constitution.md` | `platform-skills-constitution` | Adds the three platform-skill articles (skill resolution, task annotation, no unverified API surface). |\n| `.specify/templates/plan-template.md` | `platform-skills-resolution` | Adds a required **Platform Skills Resolution** section the agent fills during `/speckit.plan`. |\n| `.specify/templates/tasks-template.md` | `task-skill-annotation` | Extends the task grammar so each task carries a `[SKILL: <name>]` token, read at implement time. |\n\n**OpenSpec** (`openspec/`)\n| File | Block | Effect |\n|---|---|---|\n| `openspec/config.yaml` | `platform-skills-conventions` | Adds a `context:` block + per-artifact `rules:` (proposal, tasks) that select the matching `commercetools-*` skill and annotate commercetools tasks. |\n\nThe load-bearing mechanism is the **template patch**: because `tasks.md` is\nre-read task-by-task during implementation, the `[SKILL: …]` token is physically\nin context at the moment code is written — no reliance on skill-triggering luck.\n\n## Marker convention\n\n```\n<!-- ct-sdd:begin v=1 id=<slug> -->\n…injected content…\n<!-- ct-sdd:end id=<slug> -->\n```\n\nYAML files (`config.yaml`) use `#`-comment markers wrapping real YAML keys. The\ninstaller anchors each block to a named section when it can, and appends at\nend-of-file otherwise. Re-running `init` replaces a block in place (keyed by\n`id`); `remove` strips blocks by marker and restores the file byte-for-byte.\n\n## Uninstall\n\n```bash\nnpx @commercetools/commercetools-ai-plugin-sdd remove\n```\n\n## Caveats\n\n- **OpenSpec `config.yaml`.** The overlay appends real `context:` and `rules:`\n  keys. If your `config.yaml` already defines those keys *outside* the ct-sdd\n  markers, merge them by hand — the installer will not silently overwrite your\n  values (they'd become duplicate YAML keys; run `status` and reconcile).\n- **Upstream template churn.** If Spec Kit renames a section the overlay anchors\n  to, `init` still succeeds by appending at end-of-file and prints a warning. The\n  nightly drift canary (`scripts/canary.mjs`, run in CI against the latest upstream\n  `specify init` / `openspec init`) turns that warning into a red build so it is\n  fixed before it reaches you. Never pin your Spec Kit/OpenSpec version to this\n  overlay — pin only the overlay.\n\n## Development\n\n```bash\nnode --test                                   # unit tests\nnode scripts/canary.mjs <projectDir> <framework> # drift check against a real project\n```\n","readmeFilename":"README.md","_rev":"1-5193bd3d660b931f4397d03f6cca896f"}