Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 47 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,36 +11,75 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- Renamed the package from `veeqtoh/prompt-deck` to `promptphp/deck`.
- Renamed the PHP namespace from `Veeqtoh\PromptDeck` to `PromptPHP\Deck`.
- Renamed the public package identity from Prompt Deck to Deck by PromptPHP.
- Updated installation, usage, README, badges, documentation links, and package metadata to reflect the new PromptPHP organisation.

### Removed

- Removed the old `Veeqtoh\PromptDeck` public namespace.
- Removed old Prompt Deck naming from the main public API.

## [0.3.1] - 2026-05-17

### Added

- Mintlify documentation structure under the `docs` directory. [#5](https://github.com/promptphp/deck/pull/5)
- Documentation configuration, navigation, logo assets, favicon, and landing page content for the docs site.
- Dedicated documentation pages for installation, configuration, commands, prompt management, Laravel AI SDK integration, tracking, testing, and API reference.

### Changed

- Reworked the documentation from flat markdown files into organised Mintlify MDX pages.
- Updated documentation navigation and internal links for the new docs structure.
- Updated README logo/banner display and package badges. [#6](https://github.com/promptphp/deck/pull/6)
- Updated documentation copy and spelling consistency.

### Fixed

- Fixed stale documentation links and docs navigation paths.
- Fixed README badge markup and logo references.

## [0.2.1] - 2026-03-28

### Added

- This CHANGELOG file to hopefully serve as an evolving CHANGELOG.
- This CHANGELOG file to document project updates.
- GitHub Actions workflow for automated testing.
- `.gitattributes` file to manage text file handling and export-ignore rules.
- Laravel News feature badge in the README.

### Changed

- Refined Composer package keywords for better clarity and discoverability.

### Fixed

- README and documentation.
- README and documentation updates.

## [0.2.0] - 2026-03-27

### Added

- Support for Laravel 13. [#3](https://github.com/veeqtoh/prompt-deck/pull/3)
- Configuration option to toggle auto-scaffolding of prompts on agent creation
- This CHANGELOG file to hopefully serve as an evolving CHANGELOG.
- Support for Laravel 13. [#3](https://github.com/promptphp/deck/pull/3)
- Configuration option to toggle auto-scaffolding of prompts on agent creation.

### Fixed

- README and documentation.
- README and documentation updates.

## [0.1.0] - 2026-03-04

### Added

- First version. [#1](https://github.com/veeqtoh/prompt-deck/pull/1)
- First version. [#1](https://github.com/promptphp/deck/pull/1)
- Core versioned prompt management.
- File-based prompt storage using structured prompt directories.
- Variable interpolation for prompt templates.
- Artisan commands for creating, listing, testing, diffing, and activating prompts.
- Prompt execution tracking support.
- A/B testing support through versioned prompt activation and tracking.
- Optional Laravel AI SDK integration.
- README documenting the package.
- Link to package's full documentation: [full documentation](https://vu-ddaf4ff3.mintlify.app/).
- Link to the package's full documentation.
70 changes: 43 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,53 @@
<p align="center"><img src="/docs/logo/banner.svg" alt="Prompt Deck Logo"></p>

<p align="center">
<a href="https://packagist.org/packages/veeqtoh/prompt-deck"><img src="https://img.shields.io/packagist/v/veeqtoh/prompt-deck?style=flat-square" alt="Latest Version on Packagist"></a>
<a href="https://packagist.org/packages/veeqtoh/prompt-deck"><img src="https://img.shields.io/packagist/php-v/veeqtoh/prompt-deck?style=flat-square" alt="PHP from Packagist"></a>
<a href="https://github.com/veeqtoh/prompt-deck/blob/master/LICENSE"><img src="https://img.shields.io/github/license/veeqtoh/prompt-deck?style=flat-square" alt="GitHub license"></a>
<a href="https://packagist.org/packages/veeqtoh/prompt-deck">
<img src="https://img.shields.io/packagist/dt/veeqtoh/prompt-deck?style=flat-square" alt="Total Downloads on Packagist">
</a>
<a href="https://laravel-news.com/prompt-deck-manage-ai-prompts-as-versioned-files-in-laravel/">
<img src="https://img.shields.io/badge/Featured%20in%20Laravel%20News-F9322C?style=flat-square&logo=laravel&logoColor=white" alt="Featured in Laravel News">
</a>
<a href="https://packagist.org/packages/promptphp/deck">
<img src="https://img.shields.io/packagist/v/promptphp/deck?style=flat-square" alt="Latest Version on Packagist">
</a>
<a href="https://packagist.org/packages/promptphp/deck">
<img src="https://img.shields.io/packagist/php-v/promptphp/deck?style=flat-square" alt="PHP from Packagist">
</a>
<a href="https://github.com/promptphp/deck/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/promptphp/deck?style=flat-square" alt="GitHub license">
</a>
<a href="https://packagist.org/packages/promptphp/deck">
<img src="https://img.shields.io/packagist/dt/promptphp/deck?style=flat-square" alt="Total Downloads on Packagist">
</a>
<a href="https://laravel-news.com/prompt-deck-manage-ai-prompts-as-versioned-files-in-laravel/">
<img src="https://img.shields.io/badge/Featured%20in%20Laravel%20News-F9322C?style=flat-square&logo=laravel&logoColor=white" alt="Featured in Laravel News">
</a>
</p>

## Introduction

Prompt Deck helps you organise your AI Agents instructions as structured, version-controlled files, making it easy to iterate, compare, and activate prompt versions across your Laravel / PHP application. It provides variable interpolation, performance tracking, A/B testing, and optional seamless integration with the Laravel AI SDK.
Deck, formerly Prompt Deck, provides AI prompt management for Laravel and PHP.

Organise 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.

> [!IMPORTANT]
> Prompt Deck is now **Deck by PromptPHP**.
>
> From `v0.4.0`, the package moved from `veeqtoh/prompt-deck` to `promptphp/deck`, and the namespace changed from `Veeqtoh\PromptDeck` to `PromptPHP\Deck`.
>
> Upgrading from `v0.3.x`? See the [upgrade guide](UPGRADE.md).

## Quick Start

### Installation

```bash
composer require veeqtoh/prompt-deck
composer require promptphp/deck
```

Publish the config and migrations

```bash
php artisan vendor:publish --provider="Veeqtoh\PromptDeck\Providers\PromptDeckServiceProvider"
php artisan vendor:publish --provider="PromptPHP\Deck\Providers\DeckServiceProvider"

# Run migrations.
php artisan migrate
```

### Creating a Prompt

Use the Artisan command to create a versioned prompt
Expand All @@ -42,7 +58,7 @@ php artisan make:prompt order-summary

This creates the following structure

```
```txt
resources/prompts/
└── order-summary/
├── v1/
Expand All @@ -59,19 +75,19 @@ Summarise the following order for the customer: {{ $order }}.

### Using a Prompt

Load and render prompts with the `PromptDeck` facade
Load and render prompts with the `Deck` facade

```php
use Veeqtoh\PromptDeck\Facades\PromptDeck;
use PromptPHP\Deck\Facades\Deck;

// Load the active version of a prompt
$prompt = PromptDeck::get('order-summary');
// Load the active version of a prompt.
$prompt = Deck::get('order-summary');

// Render a role with variables
// Render a role with variables.
$prompt->system(['tone' => 'friendly', 'order' => $orderDetails]);
// "You are a friendly customer service agent. Summarise the following order..."

// Build a messages array ready for any chat-completion API
// Build a messages array ready for any chat-completion API.
$messages = $prompt->toMessages(['tone' => 'friendly', 'order' => $orderDetails]);
// [['role' => 'system', 'content' => '...']]
```
Expand All @@ -94,15 +110,15 @@ php artisan prompt:activate order-summary v2
Or load a specific version programmatically

```php
$prompt = PromptDeck::get('order-summary', 'v2');
$prompt = Deck::get('order-summary', 'v2');
```

### Laravel AI SDK Integration

If 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.

```php
use Veeqtoh\PromptDeck\Concerns\HasPromptTemplate;
use PromptPHP\Deck\Concerns\HasPromptTemplate;

class OrderAgent extends Agent
{
Expand All @@ -120,24 +136,24 @@ For the complete guide, see the [full documentation](#documentation) below.

## Documentation

Full documentation can be found on the [Prompt Deck website](https://vu-ddaf4ff3.mintlify.app/) or the [docs](docs/) directory on GitHub.
Full documentation can be found at [https://deck.promptphp.com/](https://deck.promptphp.com/) or the [docs](docs/) directory on GitHub.

## Contributing

Thank you for considering contributing to Prompt Deck! Please open an issue or submit a pull request on [GitHub](https://github.com/veeqtoh/prompt-deck).
Thank you for considering contributing to Deck by PromptPHP. Please open an issue or submit a pull request on [GitHub](https://github.com/promptphp/deck).

## Code of Conduct

While we aren't affiliated with Laravel, we follow the Laravel [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). We expect you to abide by these guidelines as well.
We follow the Laravel [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). We expect you to abide by these guidelines as well.

## Security Vulnerabilities

If you discover a security vulnerability within Prompt Deck, please email Victor Ukam at [victorjohnukam@gmail.com](victorjohnukam@gmail.com). All security vulnerabilities will be addressed promptly.
If 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.

## License

Prompt Deck is open-sourced software licensed under the [MIT license](LICENSE).
Deck by PromptPHP is open-sourced software licensed under the [MIT license](LICENSE).

## Support

This library is created by [Victor Ukam](https://victorukam.com) with contributions from the [Open Source Community](https://github.com/veeqtoh/prompt-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.
This 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.
162 changes: 162 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# Upgrade Guide

- [Update Composer](#update-composer)
- [Update namespaces](#update-namespaces)
- [Update Laravel AI SDK trait imports](#update-laravel-ai-sdk-trait-imports)
- [Update config publishing](#update-config-publishing)
- [Update environment variables](#update-environment-variables)
- [Clear Laravel caches](#clear-laravel-caches)
- [Database notes](#database-notes)

## Upgrading from Prompt Deck `v0.3.x` to Deck `v0.4.0`

Deck `v0.4.0` is a breaking release.

The package has moved from `veeqtoh/prompt-deck` to `promptphp/deck`, and the PHP namespace has changed from `Veeqtoh\PromptDeck` to `PromptPHP\Deck`.

## 1. Update Composer

Remove the old package:

```bash
composer remove veeqtoh/prompt-deck
```

Install the new package:

```bash
composer require promptphp/deck:^0.4
```

## 2. Update namespaces

Replace:

```php
Veeqtoh\PromptDeck
```

with:

```php
PromptPHP\Deck
```

Common replacements:

```php
use Veeqtoh\PromptDeck\Facades\PromptDeck;
```

becomes:

```php
use PromptPHP\Deck\Facades\Deck;
```

And usage changes from:

```php
$prompt = PromptDeck::get('order-summary');
```

to:

```php
$prompt = Deck::get('order-summary');
```

## 3. Update Laravel AI SDK trait imports

Replace:

```php
use Veeqtoh\PromptDeck\Concerns\HasPromptTemplate;
```

with:

```php
use PromptPHP\Deck\Concerns\HasPromptTemplate;
```

## 4. Update config publishing

>> [!IMPORTANT]
> The config file is now changed from **prompt-deck.php** to **deck.php**.

If you previously published the config file, simply republish the config:

```bash
php artisan vendor:publish --tag=deck-config
```

or rename from

```bash
config/prompt-deck.php
```

to:

```bash
config/deck.php
```

## 5. Update environment variables

Replace old `PROMPTDECK_*` variables with `DECK_*`.

```txt
PROMPTDECK_CACHE_ENABLED=true
PROMPTDECK_CACHE_STORE=file
PROMPTDECK_CACHE_TTL=3600
PROMPTDECK_CACHE_PREFIX=prompt-deck:
PROMPTDECK_TRACKING_ENABLED=true
PROMPTDECK_DB_CONNECTION=null
PROMPTDECK_SCAFFOLD_ON_MAKE_AGENT=true
```

becomes:

```txt
DECK_CACHE_ENABLED=true
DECK_CACHE_STORE=file
DECK_CACHE_TTL=3600
DECK_CACHE_PREFIX=deck:
DECK_TRACKING_ENABLED=true
DECK_DB_CONNECTION=null
DECK_SCAFFOLD_ON_MAKE_AGENT=true
```

## 6. Clear Laravel caches

```bash
php artisan optimize:clear
composer dump-autoload
```

## 7. Database notes

No database table migration is required for the rename.

The existing tracking tables remain:

```txt
prompt_versions
prompt_executions
```

These table names describe the domain concept, not the old package name, so they are intentionally unchanged.

### Summary of changes

| Old | New |
| --------------------------- | --------------------- |
| `veeqtoh/prompt-deck` | `promptphp/deck` |
| `Veeqtoh\PromptDeck` | `PromptPHP\Deck` |
| `PromptDeck` facade | `Deck` facade |
| `PromptDeckServiceProvider` | `DeckServiceProvider` |
| `config/prompt-deck.php` | `config/deck.php` |
| `config('prompt-deck.*')` | `config('deck.*')` |
| `PROMPTDECK_*` env vars | `DECK_*` env vars |
Loading