tourze/claude-todo-bundle
A Symfony bundle that adds todo and task management to your application, with Claude integration for tracking and organizing work items. Provides ready-to-use services, entities, and configuration to wire lightweight task lists into existing projects with minimal setup.
The 0.0.1 tag is the package's initial release and its changelog is a GitHub auto-generated stub containing nothing but a compare link — there is no README excerpt, feature list, migration guide, or documented API surface in the release notes. Treat this as an unvetted spike dependency, not a foundation.
composer show -a tourze/claude-todo-bundle and read the package's composer.json before writing code. The -bundle suffix is the Symfony naming convention, so check type (library vs symfony-bundle), whether extra.laravel.providers or extra.symfony.bundle-class is present, and whether symfony/* appears in require. If it is a Symfony bundle, it will not auto-register in Laravel and there is no php artisan surface to expect."tourze/claude-todo-bundle": "0.0.1", not ^0.0.1. Caret constraints on a 0.0.x line resolve to >=0.0.1 <0.0.2, so you get the pin by accident — but being explicit documents intent and prevents a teammate from "helpfully" loosening it to ^0.1.composer.json (PHP constraint, autoload map, requires), src/ for a *ServiceProvider or *Bundle class, any config/ or Resources/config/ directory, and tests/ — at 0.0.1 the tests are the only reliable spec for behavior.php artisan list (if console commands ship, they will appear here) and php artisan about, then exercise the package's single obvious entry point. Only after that decide whether it belongs in a real application.Because the public API is undocumented at 0.0.1, the working pattern is containment: let the package touch exactly one place in your codebase.
TodoGateway, ClaudeTaskRunner) and implement it with the package's classes inside. When 0.1.0 renames or removes things — likely — you edit one file instead of grepping the app.config/app.php or bootstrap/providers.php. Either way, add a conditional binding so a fresh clone without the package installed still boots:
$this->app->bind(TodoGateway::class, fn () =>
class_exists(\Tourze\ClaudeTodo\TodoClient::class)
? new PackageTodoGateway()
: new NullTodoGateway()
);
routes/console.php — vendor command signatures are the least stable surface in any 0.0.x package.php artisan vendor:publish --provider=...) and commit the published file so environment drift is reviewable. If no config is publishable, keep settings in your own config/claude-todo.php and inject them.0.0.2 to see what broke.0.0.1 release notes contain only a Full Changelog link to a single commit range. There is no UPGRADING.md, no deprecation notices, and no stated semver policy. Diff tags yourself (https://github.com/tourze/claude-todo-bundle/compare/0.0.1...0.0.2) before every bump; do not trust the release page.tourze/* packages are frequently Symfony-first. If composer.json requires symfony/console, symfony/config, or symfony/dependency-injection, you are adding a framework subtree to a Laravel app for one feature. Weigh that against writing the 40 lines yourself.extra.laravel.providers exists and that composer dump-autoload has run. php artisan about and php artisan tinker → app()->getLoadedProviders() confirm whether the provider is live. On Laravel 11+, providers listed in bootstrap/providers.php are the expected path.^0.0.1 behaves like 0.0.1. If you later write ^0.0, Composer allows >=0.0.0 <0.1.0 and can pull a feature release with breaking changes into production. Stay exact until there is a documented 1.0 API.0.0.1 there is no evidence of events, contracts, or a driver system. Prefer composition (your wrapper) over subclassing vendor classes; inheritance locks you to internals that will move.composer why tourze/claude-todo-bundle (is it already a transitive dep?), composer show -a for available versions and dependents, php artisan vendor:publish --provider="..." to surface hidden config, and dd(app()->make(...)) on the container binding to inspect the resolved object graph.0.0.1 tag with an empty changelog and no README summary in the release is a low-maturity signal. Budget for the possibility of abandonment: keep the wrapper interface, and be prepared to reimplement behind it.src/ directly and note method signatures in your adapter's docblocks — that note is what you'll diff against when the next release lands.How can I help you explore Laravel packages today?