{"_id":"@bernierllc/ai-prompt-builder","_rev":"8-049c53e392ad0a1384853feaac7657a0","name":"@bernierllc/ai-prompt-builder","dist-tags":{"latest":"1.7.0"},"versions":{"1.0.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.0.0","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"80fbdd9a13d042872c35ce78eb1feea15292d868","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.0.0.tgz","fileCount":24,"integrity":"sha512-vQ3Sgrw8MnhqtwmCux34xZGn3ZGgb3Od3ZM9xKf0HrgVzN0PqAaFwNqpHkGOvjyj+qtsyjiZtOvoiA7JuA+o5w==","signatures":[{"sig":"MEQCIFaREPflyt5QuRvyMRKJAGomMFq87OthaIjEpp5nC0S6AiBwHN4ghjhEEksRhatSh6uaNr5ySrJOEGTNA+TrqG777A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105368},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"23cb70629713b68790295f47e906b67b423084ea","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.6.0","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.0.0_1762367115524_0.7142782548378621","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/ai-prompt-builder","version":"1.0.2","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"498215fc5f72f6099e5c674a67e807b92b56311e","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.0.2.tgz","fileCount":38,"integrity":"sha512-ph1v9qHkmZPfc3DJ3WJckjccK67tqjS/aGjIKyp7peO/a+3DOCcUiBlxf0H4YYeBWj46zKLpcu5FdvdYmIiBgA==","signatures":[{"sig":"MEYCIQCUfaRIimxdcIbHe16qCh8aVWJAKuOCOSjOET1dNc0vgAIhAOCK/GCDvKJsZQs2+EHgjhQZspEE99zYgISfNtVmWnUJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268137},"main":"dist/index.js","_from":"file:bernierllc-ai-prompt-builder-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/310a747a88d4c49c2c551bfb9cad6b4d/bernierllc-ai-prompt-builder-1.0.2.tgz","_integrity":"sha512-ph1v9qHkmZPfc3DJ3WJckjccK67tqjS/aGjIKyp7peO/a+3DOCcUiBlxf0H4YYeBWj46zKLpcu5FdvdYmIiBgA==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.6.2","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.0.2_1764635838156_0.07891770405246312","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.2.0","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"9bf0d705cf7d446802ef856ebc2abc2ec8c1ec96","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.2.0.tgz","fileCount":25,"integrity":"sha512-PwAkOkILk5DFD4RW3nHX2kVw4S89qBczw4jgPXDIooD6XAj2vv6+740z8XNwC9X/a1c/2E22SmCSwHONthEi3g==","signatures":[{"sig":"MEUCIQCalYLvr3v9ejDLZdIJPoyrF5sG7MFUZu4sOswUK+xQDAIgf47z7orxyBBSsH6hkRrchXg7CIOJWEijYlLsE7pTUTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108025},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.2.0_1767642280986_0.003906701066489715","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.3.0","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"769560434c694aee39cffb2bafda4731c422c4d9","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.3.0.tgz","fileCount":25,"integrity":"sha512-KK4O1BYVIPz6S1tmRGjgbC7SNSw1dXAdIuFQItd3ERLMVB6ClEmSmKWwhSnEXDQV9hcHOlvYT/3i7qlF2kzUSw==","signatures":[{"sig":"MEUCIHbJcQmv6Hq4/rHCtImztOfrjLv9aqU/Blx+zSirg0RjAiEA8YJHZW3lfPtMspySqQXJ4OEqfTe8LFTh2dXVaerMrTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108374},"main":"dist/index.js","_from":"file:bernierllc-ai-prompt-builder-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"_resolved":"/tmp/431ce73f190e805111301106660221b0/bernierllc-ai-prompt-builder-1.3.0.tgz","_integrity":"sha512-KK4O1BYVIPz6S1tmRGjgbC7SNSw1dXAdIuFQItd3ERLMVB6ClEmSmKWwhSnEXDQV9hcHOlvYT/3i7qlF2kzUSw==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.11.0","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.3.0_1773077956446_0.6051021877824823","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@bernierllc/ai-prompt-builder","version":"1.3.1","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e66cdd345778a788bb9b84a28389249e5b62a995","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.3.1.tgz","fileCount":25,"integrity":"sha512-ILH7KFat2K8c9rvzIPgUMJ2NXP1ThsEsoHGqimbWxBKevti/wbkMAUHsyx/APvaLsIwv2Ue90Jckt+bEJq5t5A==","signatures":[{"sig":"MEYCIQDGu2DkqTR00/5/hV8guoGW44kLfkZgHGcSBqwzNnq+rAIhAIKFya/5PTvkZCOQiyH0Il1205oAyCyzUzX1bxFAPRQS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108593},"main":"dist/index.js","_from":"file:bernierllc-ai-prompt-builder-1.3.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"_resolved":"/tmp/ad3af179842c5f5b021fab1a1807d2d4/bernierllc-ai-prompt-builder-1.3.1.tgz","_integrity":"sha512-ILH7KFat2K8c9rvzIPgUMJ2NXP1ThsEsoHGqimbWxBKevti/wbkMAUHsyx/APvaLsIwv2Ue90Jckt+bEJq5t5A==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.11.0","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.3.1_1773081112467_0.8719009420096899","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.5.0","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"4ec22d4390ef6a5ec4a29ddb2e20d3782bdc93c6","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.5.0.tgz","fileCount":14,"integrity":"sha512-9fVQcAWdu4pAWyJaVA5A0/TSHGj9J83KA7f4UOR+/k5Q2KWVi26iWUpoiNNUPJaxchCJ6tfb/C3/QBbfRY6ATw==","signatures":[{"sig":"MEUCIG83NpDu3ziaEb3QunV+33vGZX9HmJhTVsXeZT8y0LzOAiEAsyqXIsZzQfObhosNMYxKE6JrmSnAA05a5gaya+rdaGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48078},"main":"dist/index.js","_from":"file:bernierllc-ai-prompt-builder-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-prompt-builder/bernierllc-ai-prompt-builder-1.5.0.tgz","_integrity":"sha512-9fVQcAWdu4pAWyJaVA5A0/TSHGj9J83KA7f4UOR+/k5Q2KWVi26iWUpoiNNUPJaxchCJ6tfb/C3/QBbfRY6ATw==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.14.1","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.5.0_1779233787507_0.237203704341181","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.6.0","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/ai-prompt-builder@1.6.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d5de5639c371c6beb81c7feed843f955a8e2f255","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.6.0.tgz","fileCount":14,"integrity":"sha512-xwKOuMiQe7w9ncutf7W4nCQSgkKQWzeuRla6ac7QHs5ACK1gNBSO11BUX0bBI9cDUlZiDpnwkN06AcOGM6oZEQ==","signatures":[{"sig":"MEYCIQCloufZra/ZjvBjG7O+ixQ1/Eo0ANcgu4yiqd3Vph60RwIhAPy2Yn/Wddk7Onysq6MoVOU3qAcM7KWULS6IGZELQm/M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48078},"main":"dist/index.js","_from":"file:bernierllc-ai-prompt-builder-1.6.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-prompt-builder/bernierllc-ai-prompt-builder-1.6.0.tgz","_integrity":"sha512-xwKOuMiQe7w9ncutf7W4nCQSgkKQWzeuRla6ac7QHs5ACK1gNBSO11BUX0bBI9cDUlZiDpnwkN06AcOGM6oZEQ==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"not-applicable","docs-suite":"ready"}},"_npmVersion":"11.14.1","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-prompt-builder_1.6.0_1779240889084_0.38413974389914807","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@bernierllc/ai-prompt-builder","version":"1.7.0","description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","main":"dist/index.js","types":"dist/index.d.ts","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"bernierllc":{"category":"core","integration":{"neverhub":"not-applicable","logger":"not-applicable","docs-suite":"ready"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest --no-watch","test:coverage":"jest --coverage --no-watch","lint":"eslint src/**/*.ts","clean":"rm -rf dist"},"_id":"@bernierllc/ai-prompt-builder@1.7.0","_integrity":"sha512-8SyKzvNuB6yvz/D5QdAYNJwK81k1NU4r31SSQFDWWKpHdw2ZEH50s+tQfABMoFB7zSVArrLPtWsPsC/NqmMttg==","_resolved":"/home/runner/work/tools/tools/packages/core/ai-prompt-builder/bernierllc-ai-prompt-builder-1.7.0.tgz","_from":"file:bernierllc-ai-prompt-builder-1.7.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-8SyKzvNuB6yvz/D5QdAYNJwK81k1NU4r31SSQFDWWKpHdw2ZEH50s+tQfABMoFB7zSVArrLPtWsPsC/NqmMttg==","shasum":"ba779273daa8255889aa9099d56b05168e1f4628","tarball":"https://registry.npmjs.org/@bernierllc/ai-prompt-builder/-/ai-prompt-builder-1.7.0.tgz","fileCount":14,"unpackedSize":48078,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID+vCBLw8wq7rhM4ZIpsN83B1cInoFLcWysJEIkv1Jy/AiEAsRf8v1nufC0NrLZYyWbg5Mxwttkj/iUSEuuolMCKdTc="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a1f9f0dc-04dc-4ad8-a80a-295804bd5726"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-prompt-builder_1.7.0_1779249619365_0.1392543190004143"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-05T18:25:15.438Z","modified":"2026-05-20T04:00:19.696Z","1.0.0":"2025-11-05T18:25:15.713Z","1.0.2":"2025-12-02T00:37:18.357Z","1.2.0":"2026-01-05T19:44:41.129Z","1.3.0":"2026-03-09T17:39:16.589Z","1.3.1":"2026-03-09T18:31:52.616Z","1.5.0":"2026-05-19T23:36:27.651Z","1.6.0":"2026-05-20T01:34:49.330Z","1.7.0":"2026-05-20T04:00:19.542Z"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","keywords":["ai","prompts","templates","prompt-engineering","llm","gpt","claude","content-generation"],"description":"Reusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/ai-prompt-builder\n\nReusable prompt templates for common AI tasks (content review, social generation, rewriting) with variable substitution and context building.\n\n## Installation\n\n```bash\nnpm install @bernierllc/ai-prompt-builder\n```\n\n## Features\n\n- **Pre-built Templates**: Ready-to-use prompts for common AI tasks\n- **Variable Substitution**: Simple `{{variable}}` syntax for dynamic content\n- **Type Safety**: Full TypeScript support with strict typing\n- **Composition**: Combine multiple prompts together\n- **Validation**: Automatic validation of required variables\n- **Sanitization**: Built-in escaping for safe variable substitution\n- **Conditional Sections**: Add sections based on runtime conditions\n- **Zero Dependencies**: Pure utility with no external dependencies\n\n## Quick Start\n\n### Using Pre-built Templates\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\n// Content review prompt\nconst reviewPrompt = PromptBuilder.contentReview(blogContent, {\n  checkGrammar: true,\n  checkSEO: true,\n  checkReadability: true,\n  targetAudience: 'JavaScript developers'\n});\n\n// Social media generation\nconst twitterPrompt = PromptBuilder.socialGeneration(blogContent, {\n  platform: 'twitter',\n  tone: 'professional',\n  includeHashtags: true,\n  includeCTA: true\n});\n\n// Commit message rewriting\nconst commitPrompt = PromptBuilder.commitRewrite('added user auth', {\n  type: 'feat',\n  scope: 'auth'\n});\n```\n\n### Using the Builder Pattern\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\nconst prompt = new PromptBuilder()\n  .setTemplate('Analyze this {{type}}: {{content}}')\n  .setVariables({\n    type: 'code',\n    content: 'function hello() { return \"world\"; }'\n  })\n  .addSection({\n    content: 'Focus on performance',\n    condition: true\n  })\n  .build();\n\nconsole.log(prompt.content);\n```\n\n### Using Named Templates\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\nconst builder = PromptBuilder.fromTemplate('contentReview');\nbuilder.setVariables({\n  content: 'Your blog content here',\n  criteria: '- Grammar\\n- SEO\\n- Readability'\n});\n\nconst result = builder.build();\nif (result.success) {\n  console.log(result.content);\n} else {\n  console.error('Missing variables:', result.missingVariables);\n}\n```\n\n## API Reference\n\n### PromptBuilder\n\nMain class for building AI prompts.\n\n#### Static Methods\n\n##### `contentReview(content: string, options?: ReviewOptions): string`\n\nGenerate a content review prompt.\n\n**Options:**\n- `checkGrammar?: boolean` - Check grammar and spelling (default: true)\n- `checkSEO?: boolean` - Check SEO optimization (default: true)\n- `checkReadability?: boolean` - Check readability metrics (default: true)\n- `checkTone?: boolean` - Check tone and voice\n- `targetAudience?: string` - Target audience description\n- `focusAreas?: string[]` - Additional focus areas\n\n**Example:**\n```typescript\nconst prompt = PromptBuilder.contentReview(blogPost, {\n  checkGrammar: true,\n  checkSEO: true,\n  checkReadability: true,\n  targetAudience: 'Software developers',\n  focusAreas: ['Technical accuracy', 'Code examples']\n});\n```\n\n##### `socialGeneration(content: string, options: SocialGenerationOptions): string`\n\nGenerate a social media post from blog content.\n\n**Options:**\n- `platform: string` - Platform (twitter, linkedin, facebook, instagram)\n- `tone?: string` - Desired tone (default: 'professional')\n- `includeHashtags?: boolean` - Include hashtags\n- `includeCTA?: boolean` - Include call-to-action\n- `maxLength?: number` - Maximum length (platform defaults apply)\n- `targetAudience?: string` - Target audience\n\n**Example:**\n```typescript\nconst prompt = PromptBuilder.socialGeneration(blogContent, {\n  platform: 'twitter',\n  tone: 'casual',\n  includeHashtags: true,\n  includeCTA: true,\n  targetAudience: 'Web developers'\n});\n```\n\n##### `commitRewrite(originalCommit: string, options?: CommitRewriteOptions): string`\n\nRewrite commit messages following conventional commit format.\n\n**Options:**\n- `type?: string` - Conventional commit type (default: 'feat')\n- `scope?: string` - Scope of the change\n- `breaking?: boolean` - Include breaking change indicator\n- `maxSubjectLength?: number` - Maximum subject line length (default: 50)\n\n**Example:**\n```typescript\nconst prompt = PromptBuilder.commitRewrite('fixed bug in login form', {\n  type: 'fix',\n  scope: 'auth',\n  breaking: false\n});\n```\n\n##### `blogPostSuggestions(context: string, count: number, targetAudience: string, category: string): string`\n\nGenerate blog post topic suggestions.\n\n**Example:**\n```typescript\nconst prompt = PromptBuilder.blogPostSuggestions(\n  'TypeScript best practices for enterprise applications',\n  5,\n  'Senior developers',\n  'Software Engineering'\n);\n```\n\n##### `compose(prompts: string[], separator?: string): string`\n\nCompose multiple prompts together.\n\n**Example:**\n```typescript\nconst reviewPrompt = PromptBuilder.contentReview(content);\nconst socialPrompt = PromptBuilder.socialGeneration(content, { platform: 'twitter' });\n\nconst combined = PromptBuilder.compose([reviewPrompt, socialPrompt]);\n// Prompts are separated by '\\n\\n---\\n\\n' by default\n```\n\n##### `fromTemplate(templateName: string): PromptBuilder`\n\nCreate a builder from a named template.\n\n**Example:**\n```typescript\nconst builder = PromptBuilder.fromTemplate('contentReview');\nbuilder.setVariables({ content: '...', criteria: '...' });\nconst result = builder.build();\n```\n\n#### Instance Methods\n\n##### `setTemplate(template: string): PromptBuilder`\n\nSet the template string. Returns `this` for chaining.\n\n##### `setVariable(name: string, value: string | number | boolean): PromptBuilder`\n\nSet a single variable. Returns `this` for chaining.\n\n##### `setVariables(variables: Record<string, string | number | boolean>): PromptBuilder`\n\nSet multiple variables at once. Returns `this` for chaining.\n\n##### `addSection(section: TemplateSection): PromptBuilder`\n\nAdd a conditional section. Returns `this` for chaining.\n\n**Example:**\n```typescript\nbuilder.addSection({\n  content: 'Additional instructions here',\n  condition: shouldInclude\n});\n```\n\n##### `build(sanitize?: boolean): SubstitutionResult`\n\nBuild the final prompt. Sanitizes variables by default.\n\n**Returns:**\n```typescript\n{\n  success: boolean;\n  content: string;\n  missingVariables: string[];\n}\n```\n\n### VariableSubstitutor\n\nUtility class for variable substitution and validation.\n\n#### Static Methods\n\n##### `extractVariables(template: string): string[]`\n\nExtract all variable names from a template.\n\n**Example:**\n```typescript\nconst vars = VariableSubstitutor.extractVariables('Hello {{name}}, you are {{age}}');\n// Returns: ['name', 'age']\n```\n\n##### `substitute(template: string, variables: Record<string, any>, required?: string[]): SubstitutionResult`\n\nSubstitute variables in a template.\n\n**Example:**\n```typescript\nconst result = VariableSubstitutor.substitute(\n  'Hello {{name}}',\n  { name: 'John' },\n  ['name']\n);\n// Returns: { success: true, content: 'Hello John', missingVariables: [] }\n```\n\n##### `escape(value: string): string`\n\nEscape special characters in variable values.\n\n**Example:**\n```typescript\nconst escaped = VariableSubstitutor.escape('Line 1\\nLine 2 \"quoted\"');\n// Returns: 'Line 1\\\\nLine 2 \\\\\"quoted\\\\\"'\n```\n\n##### `isValidVariableName(name: string): boolean`\n\nValidate variable names (alphanumeric, underscore, hyphen only).\n\n**Example:**\n```typescript\nVariableSubstitutor.isValidVariableName('user_name'); // true\nVariableSubstitutor.isValidVariableName('user@name'); // false\n```\n\n##### `sanitize(variables: Record<string, any>): Record<string, any>`\n\nSanitize variables object by escaping values and validating names.\n\n**Example:**\n```typescript\nconst sanitized = VariableSubstitutor.sanitize({\n  name: 'John\\nDoe',\n  age: 30\n});\n// Returns: { name: 'John\\\\nDoe', age: 30 }\n```\n\n### Templates\n\nPre-built template utilities.\n\n#### Functions\n\n##### `getTemplate(name: string): PromptTemplate | undefined`\n\nGet a template by name.\n\n##### `listTemplates(): string[]`\n\nList all available template names.\n\n##### `hasTemplate(name: string): boolean`\n\nCheck if a template exists.\n\n#### Available Templates\n\n- `contentReview` - Review content for quality, grammar, SEO, and readability\n- `socialGeneration` - Generate social media posts from blog content\n- `commitRewrite` - Rewrite commit messages following conventional commit format\n- `blogPostSuggestions` - Generate blog post topic suggestions\n- `codeReview` - Review code for quality, best practices, and potential issues\n- `textSummary` - Summarize long text into key points\n\n**Example:**\n```typescript\nimport { listTemplates, getTemplate } from '@bernierllc/ai-prompt-builder';\n\nconsole.log(listTemplates());\n// ['contentReview', 'socialGeneration', 'commitRewrite', ...]\n\nconst template = getTemplate('contentReview');\nconsole.log(template.requiredVariables);\n// ['content', 'criteria']\n```\n\n## Advanced Usage\n\n### Custom Templates\n\nCreate custom templates with variable substitution:\n\n```typescript\nconst customTemplate = `\nReview this {{contentType}}:\n\n{{content}}\n\nRequirements:\n{{requirements}}\n\nProvide {{outputFormat}} format.\n`;\n\nconst builder = new PromptBuilder(customTemplate);\nbuilder.setVariables({\n  contentType: 'blog post',\n  content: 'Your content here...',\n  requirements: '- Grammar\\n- SEO\\n- Tone',\n  outputFormat: 'JSON'\n});\n\nconst result = builder.build();\n```\n\n### Conditional Sections\n\nAdd sections that only appear when certain conditions are met:\n\n```typescript\nconst builder = new PromptBuilder('Main prompt content');\n\nbuilder.addSection({\n  content: 'Check for security vulnerabilities',\n  condition: options.checkSecurity\n});\n\nbuilder.addSection({\n  content: 'Target audience: ' + audience,\n  condition: audience !== undefined\n});\n\nconst result = builder.build();\n```\n\n### Variable Validation\n\nValidate required variables before building:\n\n```typescript\nconst builder = PromptBuilder.fromTemplate('contentReview');\nbuilder.setVariables({\n  content: blogContent,\n  criteria: '- Grammar\\n- SEO'\n});\n\nconst result = builder.build();\nif (!result.success) {\n  console.error('Missing variables:', result.missingVariables);\n  // Handle error\n} else {\n  // Use result.content\n}\n```\n\n### Composition\n\nCombine multiple prompts for complex workflows:\n\n```typescript\n// Create individual prompts\nconst reviewPrompt = PromptBuilder.contentReview(content, {\n  checkGrammar: true,\n  checkSEO: true\n});\n\nconst socialPrompt = PromptBuilder.socialGeneration(content, {\n  platform: 'twitter',\n  includeHashtags: true\n});\n\nconst commitPrompt = PromptBuilder.commitRewrite('initial draft');\n\n// Compose them together\nconst workflow = PromptBuilder.compose([\n  reviewPrompt,\n  socialPrompt,\n  commitPrompt\n], '\\n\\n=== NEXT STEP ===\\n\\n');\n\n// Send to AI model\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Not applicable\n\n**Justification**: This is a pure utility package with no runtime state, side effects, or error conditions that require logging. The PromptBuilder class is stateless and deterministic - it simply constructs prompt strings from templates and variables. All errors are thrown as exceptions that calling code can handle, and there are no background operations, network calls, or state changes that would benefit from structured logging.\n\n**Pattern**: Pure functional utility - no logger integration needed.\n\n### NeverHub Integration\n**Status**: Not applicable\n\n**Justification**: This is a core utility package that provides prompt building functionality. It does not participate in service discovery, event publishing, or service mesh operations. It's a stateless utility that can be used by any service or application without requiring service registration or discovery.\n\n**Pattern**: Core utility - no service mesh integration needed.\n\n### Docs-Suite Integration\n**Status**: Ready\n\n**Format**: TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.\n\n## TypeScript Support\n\nThis package is written in TypeScript with strict mode enabled and includes complete type definitions.\n\n```typescript\nimport type {\n  ReviewOptions,\n  SocialGenerationOptions,\n  CommitRewriteOptions,\n  PromptTemplate,\n  SubstitutionResult\n} from '@bernierllc/ai-prompt-builder';\n```\n\n## Use Cases\n\n### AI Content Review Service\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\nclass ContentReviewService {\n  async reviewBlogPost(content: string): Promise<ReviewResult> {\n    const prompt = PromptBuilder.contentReview(content, {\n      checkGrammar: true,\n      checkSEO: true,\n      checkReadability: true,\n      targetAudience: 'Developers'\n    });\n\n    const aiResponse = await this.sendToAI(prompt);\n    return this.parseReviewResult(aiResponse);\n  }\n}\n```\n\n### Social Media Automation\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\nclass SocialMediaAutomation {\n  async generatePosts(blogContent: string): Promise<SocialPosts> {\n    const platforms = ['twitter', 'linkedin', 'facebook'];\n    const posts: Record<string, string> = {};\n\n    for (const platform of platforms) {\n      const prompt = PromptBuilder.socialGeneration(blogContent, {\n        platform,\n        includeHashtags: platform === 'twitter',\n        includeCTA: true\n      });\n\n      posts[platform] = await this.sendToAI(prompt);\n    }\n\n    return posts;\n  }\n}\n```\n\n### Git Commit Assistant\n\n```typescript\nimport { PromptBuilder } from '@bernierllc/ai-prompt-builder';\n\nclass CommitAssistant {\n  async improveCommitMessage(rawCommit: string): Promise<string> {\n    const prompt = PromptBuilder.commitRewrite(rawCommit, {\n      type: this.detectCommitType(rawCommit),\n      scope: this.detectScope(rawCommit)\n    });\n\n    return await this.sendToAI(prompt);\n  }\n}\n```\n\n## Performance\n\n- **Zero Runtime Dependencies**: Minimal bundle size\n- **Pure Functions**: No side effects, easy to test and cache\n- **Lazy Evaluation**: Templates are only processed when `build()` is called\n- **Memory Efficient**: No large data structures or caching\n\n## Error Handling\n\nThe package uses structured error responses:\n\n```typescript\nconst result = builder.build();\n\nif (!result.success) {\n  console.error('Build failed:', result.missingVariables);\n  // Handle missing variables\n} else {\n  // Use result.content\n}\n```\n\nExceptions are only thrown for invalid inputs:\n- Invalid template names\n- Invalid variable names (sanitize mode)\n\n## Testing\n\n```bash\n# Run tests\nnpm test\n\n# Run tests without watch mode\nnpm run test:run\n\n# Run tests with coverage\nnpm run test:coverage\n```\n\n**Test Coverage**: 90%+ (branches, functions, lines, statements)\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n\n## See Also\n\n- [@bernierllc/ai-content-generator](../ai-content-generator) - Uses this package for content generation prompts\n- [@bernierllc/ai-content-reviewer](../ai-content-reviewer) - Uses this package for review prompts\n- [@bernierllc/ai-social-generator](../ai-social-generator) - Uses this package for social media prompts\n","readmeFilename":"README.md"}