{"id":49494,"library":"template-subscriber-migration-system","title":"Template Subscriber Migration System","description":"A GitHub Actions helper library (v0.2.3, pre-1.0, monthly releases) for upstream template repositories to publish migration bundles and for downstream subscriber repositories to opt into controlled migration PRs. Provides three CLI binaries – publish-template-migration, subscriber-template-sync, and handle-template-sync-command – along with example workflows. Unlike raw git-based sync or manual cherry-picks, it offers a formal approve/revise/decline lifecycle for template changes in drifted subscriber repos. Requires Node >=20.","status":"active","version":"0.2.3","language":"javascript","source_language":"en","source_url":"https://github.com/CorieW/template-subscriber-migration-system","tags":["javascript","github-actions","migration","template","subscriber","openai"],"install":[{"cmd":"npm install template-subscriber-migration-system","lang":"bash","label":"npm"},{"cmd":"yarn add template-subscriber-migration-system","lang":"bash","label":"yarn"},{"cmd":"pnpm add template-subscriber-migration-system","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Runtime requirement: Node >=20","package":"node","optional":false},{"reason":"Designed to be used within GitHub Actions workflows","package":"github-actions","optional":true}],"imports":[{"note":"Use npx with --package flag to ensure correct package is used. Since v0.2.0, the package ships multiple binaries; require() not applicable.","wrong":"npm exec template-subscriber-migration-system -- publish-template-migration","symbol":"publish-template-migration","correct":"npx --yes --package template-subscriber-migration-system@latest -- publish-template-migration"},{"note":"Avoid global install; use npx with explicit package name to avoid version conflicts.","wrong":"npx subscriber-template-sync","symbol":"subscriber-template-sync","correct":"npx --yes --package template-subscriber-migration-system@latest -- subscriber-template-sync"},{"note":"This package exports only CLI binaries, not a JavaScript module. Do not attempt to import it programmatically.","wrong":"require('template-subscriber-migration-system')","symbol":"handle-template-sync-command","correct":"npx --yes --package template-subscriber-migration-system@latest -- handle-template-sync-command"}],"quickstart":{"code":"name: Sync upstream template\non:\n  schedule:\n    - cron: '0 0 * * 0'\n  workflow_dispatch:\n\nenv:\n  TEMPLATE_SYNC_PACKAGE: template-subscriber-migration-system@latest\n\njobs:\n  sync:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Discover and apply latest migration\n        run: |\n          npx --yes --package ${{ env.TEMPLATE_SYNC_PACKAGE }} -- subscriber-template-sync\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}","lang":"yaml","description":"Shows a complete GitHub Actions workflow that runs weekly to discover the newest template migration and open a subscriber PR."},"warnings":[{"fix":"Upgrade Node to version 20 or later.","message":"Node.js 18 support dropped in v0.2.0. Requires Node >=20.","severity":"breaking","affected_versions":">=0.2.0"},{"fix":"Set GITHUB_TOKEN in the workflow environment.","message":"CLI binaries require GITHUB_TOKEN environment variable. Running without it will fail with authentication errors.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Replace `migration_path` with `subscriber_dir` in your config file.","message":"The config option `migration_path` was renamed to `subscriber_dir` in v0.2.0. Old configs silently ignored.","severity":"deprecated","affected_versions":">=0.1.0 <0.2.0"},{"fix":"Use `TEMPLATE_SYNC_PACKAGE` as the environment variable name.","message":"Workflow example snippets use `TEMPORARY` (typo) instead of `TEMPLATE_SYNC_PACKAGE` in some versions.","severity":"gotcha","affected_versions":"0.1.x"},{"fix":"Pin to a specific version in production workflows, e.g., `template-subscriber-migration-system@0.2.3`.","message":"Pre-1.0 version: breaking changes may occur in minor or patch releases. Pin to exact version or use @latest with caution.","severity":"gotcha","affected_versions":"<1.0.0"}],"env_vars":null,"search_vec":"'-1.0':12 '20':82 'action':7,86 'along':52 'approve/revise/decline':71 'base':60 'binari':37 'bundl':22 'chang':75 'cherri':65 'cherry-pick':64 'cli':36 'command':51 'control':31 'downstream':25 'drift':77 'exampl':54 'formal':70 'git':59 'git-bas':58 'github':6,85 'github-act':84 'handl':48 'handle-template-sync-command':47 'helper':8 'javascript':83 'librari':9 'lifecycl':72 'manual':63 'migrat':3,21,32,41,87 'month':13 'node':81 'offer':68 'openai':90 'opt':29 'pick':66 'pre':11 'provid':34 'prs':33 'publish':20,39 'publish-template-migr':38 'raw':57 'releas':14 'repo':79 'repositori':18,27 'requir':80 'subscrib':2,26,43,78,89 'subscriber-template-sync':42 'sync':45,50,61 'system':4 'templat':1,17,40,44,49,74,88 'three':35 'unlik':56 'upstream':16 'v0.2.3':10 'workflow':55","created_at":"2026-06-07T17:02:03.868738+00:00","updated_at":"2026-06-07T17:02:03.868738+00:00","problems":[{"fix":"Add `env: { GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} }` to the workflow step.","cause":"Command requires a GitHub token to create PRs or access releases.","error":"Error: GITHUB_TOKEN environment variable not set"},{"fix":"Run `npx --yes --package template-subscriber-migration-system@latest subscriber-template-sync` instead of just `subscriber-template-sync`.","cause":"Global install of package missing; npx not resolving the binary.","error":"Command not found: subscriber-template-sync"},{"fix":"Ensure the upstream template has published a migration bundle via `publish-template-migration` before running subscriber sync.","cause":"No GitHub Release tagged with the expected migration pattern exists.","error":"Could not find migration bundle for [ref]"},{"fix":"Verify the `subscriber_dir` path in your config file points to an existing directory within the repository.","cause":"The subscriber directory specified in config is missing.","error":"ValidationError: `subscriber_dir` path does not exist"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/CorieW/template-subscriber-migration-system#readme","github":"https://github.com/CorieW/template-subscriber-migration-system","docs":null,"changelog":null,"pypi":null,"npm":"template-subscriber-migration-system","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","productivity"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}