Skip to content

fix: remove orphaned devai bootstrap shim from skeleton src#137

Merged
markshust merged 1 commit into
developfrom
feature/remove-orphaned-skeleton-prompts
Jun 24, 2026
Merged

fix: remove orphaned devai bootstrap shim from skeleton src#137
markshust merged 1 commit into
developfrom
feature/remove-orphaned-skeleton-prompts

Conversation

@markshust

Copy link
Copy Markdown
Collaborator

Problem

Creating a new project from marko/skeleton (e.g. composer create-project) left an unexpected src/Prompts/ directory in the generated app, containing DevAiPrompt.php and PostCreateHook.php (namespace Marko\Skeleton\Prompts).

Root cause

These were a half-built bootstrap shim meant to offer "Install marko/devai for AI-assisted development? [Y/n]" during project creation, then run composer require --dev marko/devai and hand off to marko devai:install. The feature was never finished:

  • No trigger — no scripts.post-create-project-cmd entry was ever added (confirmed via git log -S), so the hook never ran.
  • Not autoloadable — the shipped skeleton composer.json has no PSR-4 autoload block, so Marko\Skeleton\Prompts\* couldn't even load in a generated project.
  • Dead — the only references anywhere in the monorepo were the classes' own unit tests.

Because src/Prompts/ wasn't export-ignored, composer create-project copied it into every new project as dead code sitting in the user's own src/ namespace.

Why not move it into marko/devai?

It can't live there — a package can't bootstrap its own installation (devai isn't a default dependency; it's only in the skeleton suggest block). The bootstrap role is legitimately skeleton-side. But the real prompt/install machinery already exists and is properly tested in marko/devai (InstallCommand, InstallationOrchestrator, StdinPrompter/ConfirmationPrompterInterface); this shim just reimplemented the prompt and delegated to marko devai:install.

Change

  • Delete packages/skeleton/src/Prompts/{DevAiPrompt,PostCreateHook}.php and their tests under packages/skeleton/tests/Unit/Prompts/.
  • Drop the now-dead Marko\Skeleton\packages/skeleton/src/ autoload-dev mapping from the root composer.json (the directory no longer exists).

No working functionality is lost. If the create-time devai prompt is wanted later, it should be implemented properly as a post-create-project-cmd script that calls into devai's existing installer.

Verification

  • composer dump-autoload — clean, no warnings.
  • skeleton + devai test suites — 32 passed (198 assertions).

🤖 Generated with Claude Code

The skeleton shipped src/Prompts/{DevAiPrompt,PostCreateHook}.php — a
half-built "offer to install marko/devai on create-project" bootstrap.
It was never wired up:

- no scripts.post-create-project-cmd entry to invoke it (never added)
- no PSR-4 autoload in the shipped skeleton composer.json, so the classes
  weren't even loadable in a generated project
- only references anywhere were the classes' own unit tests

Because src/Prompts/ wasn't export-ignored, composer create-project copied
it into every new project as dead code under the user's own src/ namespace.

The real devai install machinery already lives in marko/devai
(InstallCommand, InstallationOrchestrator, StdinPrompter); this shim
duplicated the prompt logic and delegated to `marko devai:install` anyway.

Removes the two src classes plus their tests, and drops the now-dead
Marko\Skeleton\ src autoload-dev mapping (the directory no longer exists).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the bug Something isn't working label Jun 24, 2026
@markshust markshust merged commit 8a42462 into develop Jun 24, 2026
1 check passed
@markshust markshust deleted the feature/remove-orphaned-skeleton-prompts branch June 24, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant