{"id":51006561,"url":"https://github.com/promptphp/deck","last_synced_at":"2026-07-08T20:00:33.127Z","repository":{"id":341110490,"uuid":"1168892395","full_name":"promptphp/deck","owner":"promptphp","description":"A Laravel package for versioned AI prompt management with variable interpolation, performance tracking \u0026 A/B testing.","archived":false,"fork":false,"pushed_at":"2026-06-24T22:09:47.000Z","size":786,"stargazers_count":98,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"0.x","last_synced_at":"2026-07-02T04:20:02.829Z","etag":null,"topics":["ai","larvel","php","prompt","prompt-engineering"],"latest_commit_sha":null,"homepage":"https://deck.promptphp.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/promptphp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/AGENTS.md","dco":null,"cla":null},"funding":{"github":"veeqtoh","custom":"https://www.paypal.com/paypalme/veeqtoh"}},"created_at":"2026-02-27T23:09:48.000Z","updated_at":"2026-06-27T16:55:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/promptphp/deck","commit_stats":null,"previous_names":["veeqtoh/prompt-forge","veeqtoh/prompt-deck","promptphp/prompt-deck","promptphp/deck"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/promptphp/deck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/promptphp%2Fdeck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/promptphp%2Fdeck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/promptphp%2Fdeck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/promptphp%2Fdeck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/promptphp","download_url":"https://codeload.github.com/promptphp/deck/tar.gz/refs/heads/0.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/promptphp%2Fdeck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35276781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","larvel","php","prompt","prompt-engineering"],"created_at":"2026-06-20T21:00:19.830Z","updated_at":"2026-07-08T20:00:33.119Z","avatar_url":"https://github.com/promptphp.png","language":"PHP","funding_links":["https://github.com/sponsors/veeqtoh","https://www.paypal.com/paypalme/veeqtoh"],"categories":["Natural Language Processing"],"sub_categories":["Utilities \u0026 Tools"],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"/docs/logo/banner.svg\" alt=\"Prompt Deck Logo\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://packagist.org/packages/promptphp/deck\"\u003e\n    \u003cimg src=\"https://img.shields.io/packagist/v/promptphp/deck?style=flat-square\" alt=\"Latest Version on Packagist\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://packagist.org/packages/promptphp/deck\"\u003e\n    \u003cimg src=\"https://img.shields.io/packagist/php-v/promptphp/deck?style=flat-square\" alt=\"PHP from Packagist\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/promptphp/deck/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/promptphp/deck?style=flat-square\" alt=\"GitHub license\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://packagist.org/packages/promptphp/deck\"\u003e\n    \u003cimg src=\"https://img.shields.io/packagist/dt/veeqtoh/prompt-deck?style=flat-square\" alt=\"Total Downloads on Packagist\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://laravel-news.com/prompt-deck-manage-ai-prompts-as-versioned-files-in-laravel/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Featured%20in%20Laravel%20News-F9322C?style=flat-square\u0026logo=laravel\u0026logoColor=white\" alt=\"Featured in Laravel News\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Introduction\n\nDeck, formerly Prompt Deck, provides AI prompt management for Laravel and PHP.\n\nOrganise your AI agent instructions as versioned files, compare prompt performance, and activate the right version across your app with variable interpolation, tracking, A/B testing, and Laravel AI SDK integration.\n\n\u003e [!IMPORTANT]\n\u003e Prompt Deck is now **Deck by PromptPHP**.\n\u003e\n\u003e From `v0.4.0`, the package moved from `veeqtoh/prompt-deck` to `promptphp/deck`, and the namespace changed from `Veeqtoh\\PromptDeck` to `PromptPHP\\Deck`.\n\u003e\n\u003e Upgrading from `v0.3.x`? See the [upgrade guide](UPGRADE.md).\n\n## Quick Start\n\n### Installation\n\n```bash\ncomposer require promptphp/deck\n```\n\nPublish the config and migrations\n\n```bash\nphp artisan vendor:publish --provider=\"PromptPHP\\Deck\\Providers\\DeckServiceProvider\"\n\n# Run migrations.\nphp artisan migrate\n```\n\n### Creating a Prompt\n\nUse the Artisan command to create a versioned prompt\n\n```bash\nphp artisan make:prompt order-summary\n```\n\nThis creates the following structure\n\n```txt\nresources/prompts/order-summary/\n├── metadata.json\n├── v1/\n│   ├── system.md\n│   └── user.md\n└── v2/\n    ├── system.md\n    └── user.md\n```\n\nEdit `resources/prompts/order-summary/v1/system.md` with your prompt content. Use `{{ $variable }}` syntax for dynamic values:\n\n```markdown\nYou are a {{ $tone }} customer service agent.\nSummarise the following order for the customer: {{ $order }}.\n```\n\n### Using a Prompt\n\nLoad and render prompts with the `Deck` facade\n\n```php\nuse PromptPHP\\Deck\\Facades\\Deck;\n\n// Load the active version of a prompt.\n$prompt = Deck::get('order-summary');\n\n// Render a role with variables.\n$prompt-\u003esystem(['tone' =\u003e 'friendly', 'order' =\u003e $orderDetails]);\n// \"You are a friendly customer service agent. Summarise the following order...\"\n\n// Build a messages array ready for any chat-completion API.\n$messages = $prompt-\u003etoMessages(['tone' =\u003e 'friendly', 'order' =\u003e $orderDetails]);\n// [['role' =\u003e 'system', 'content' =\u003e '...']]\n```\n\n### Versioning\n\nCreate a new version of an existing prompt\n\n```bash\nphp artisan make:prompt order-summary\n# Automatically creates v2, v3, etc.\n```\n\nActivate a specific version\n\n```bash\nphp artisan prompt:activate order-summary v2\n\n# or\n\nphp artisan prompt:activate order-summary 2\n```\n\nOr load a specific version programmatically\n\n```php\n$prompt = Deck::get('order-summary', 'v2');\n```\n\n### Laravel AI SDK Integration\n\nIf you use the [Laravel AI SDK](https://laravel.com/docs/ai-sdk), add the `HasPromptTemplate` trait to your agents. This way, you do not need to define the `instructions()` method as it is provided automatically.\n\n```php\nuse PromptPHP\\Deck\\Concerns\\HasPromptTemplate;\n\nclass OrderAgent extends Agent\n{\n    use HasPromptTemplate;\n\n    // instructions() and promptMessages() are provided automatically.\n}\n```\n\nRunning `make:agent` will also auto-scaffold a matching prompt directory.\n\nFor the complete guide, see the [full documentation](#documentation) below.\n\n---\n\n## Documentation\n\nFull documentation can be found at [https://deck.promptphp.com/](https://deck.promptphp.com/) or the [docs](docs/) directory on GitHub.\n\n## Contributing\n\nThank you for considering contributing to Deck by PromptPHP. Please open an issue or submit a pull request on [GitHub](https://github.com/promptphp/deck).\n\n## Code of Conduct\n\nWe follow the Laravel [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). We expect you to abide by these guidelines as well.\n\n## Security Vulnerabilities\n\nIf you discover a security vulnerability within Deck by PromptPHP, please email Victor Ukam at [victorjohnukam@gmail.com](victorjohnukam@gmail.com). All security vulnerabilities will be addressed promptly.\n\n## License\n\nDeck by PromptPHP is open-sourced software licensed under the [MIT license](LICENSE).\n\n## Support\n\nThis library is created by [Victor Ukam](https://victorukam.com) with contributions from the [Open Source Community](https://github.com/promptphp/deck/graphs/contributors). If you've found this package useful, please consider [sponsoring this project](https://github.com/sponsors/veeqtoh). It will go a long way to help with maintenance.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpromptphp%2Fdeck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpromptphp%2Fdeck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpromptphp%2Fdeck/lists"}