Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpdoc Md Laravel Package

clean/phpdoc-md

clean/phpdoc-md generates clean Markdown documentation from PHP source code and PHPDoc comments. It parses classes, methods, properties, and docblocks, then outputs readable Markdown suitable for READMEs, wikis, or static docs. Easy to run and integrate into build or CI workflows for up-to-date API...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. clean/phpdoc-md is a standalone, dev-time CLI utility that parses PHPDoc blocks and emits Markdown. It is not a runtime library, service provider, or framework component, so it does not enter the application's request path or container. For a Laravel codebase this positions it as a build/documentation toolchain dependency (require-dev) rather than an architectural commitment — low coupling, low blast radius, and trivially reversible. The output is static Markdown, which composes cleanly with existing docs pipelines (repo /docs, GitHub Pages, MkDocs, Docusaurus, internal wikis). The trade-off is that it is a "second documentation system" alongside any existing phpDocumentor/Scribe/IDE-based approach, so the real architectural question is not integration difficulty but whether a Markdown-first API reference is a gap worth filling at all.

Integration feasibility. High on mechanics, low on confidence. Adoption is a single Composer require plus a wrapper script; a TPM can scope this as a one-sprint spike with a hard go/no-go gate. The friction points are ordinary for a 44-star, single-maintainer package: unknown repository provenance (the registry reports unknown), no release since 2022-11-19, and an implicit dependency on nikic/php-parser or similar AST tooling whose major versions move quickly. Laravel projects are unusually sensitive to transitive parser conflicts because PHPStan, Pint, Rector, and IDE helpers all pull the same packages — a version pin collision here can block upgrades elsewhere in the toolchain.

Technical risk. The dominant risk is abandonment, not correctness. Three years without a release means no support for PHP 8.3/8.4 syntax, readonly properties, enums, first-class callables, or property hooks, and no fixes for parser regressions. Secondary risks: documentation drift (generated output committed but not regenerated), silent partial output (parsers typically skip or mangle unparseable constructs rather than failing loudly, producing docs that look complete but aren't), and the classic single-maintainer bus factor. The 2.02 composite score with an opportunity sub-score of 1.52 reads as "underloved niche utility" — the opportunity signal suggests whitespace in the Markdown-docs niche rather than a package on an upward trajectory. A 44-star footprint also means thin public evidence of edge-case handling; expect to be the first to hit your particular failures.

Key questions for the vendor/owner.

  1. Who maintains this, and is there a stated support or deprecation policy? The repository metadata being unresolvable is a red flag to clear before adoption.
  2. What is the exact PHP and parser dependency constraint, and does it resolve alongside our current PHPStan/Rector/Pint versions on PHP 8.2+?
  3. Does the generator fail the process on parse errors, or degrade silently? This determines whether it can gate CI.
  4. How are namespaces, traits, interfaces, and Laravel-specific constructs (facades, Eloquent magic properties, attribute-based routing) rendered? Eloquent models in particular lose nearly all their meaningful surface to static analysis.
  5. Is output deterministic and diff-stable, so generated docs can be committed and reviewed in PRs?
  6. What is the escape hatch — is the output format templated/customizable, or is forking the only path to a fix?

Verdict. Approve as a time-boxed spike in a non-critical repo; do not approve as a load-bearing documentation system without a fork-and-own decision and a named internal owner.

Integration Approach

Stack fit. Clean fit at the edges of the stack: composer require --dev clean/phpdoc-md, a thin Composer script or Artisan command wrapping the binary, output to a gitignored or committed /docs/api directory. It should never be a production dependency, never autoloaded at runtime, and never referenced from application code. Keep it in the same tier as Pint and PHPStan — developer tooling with no deploy artifact impact.

Migration path. There is no migration in the traditional sense; this is additive. The pragmatic path is:

  1. Shadow mode — run the generator on one bounded namespace (e.g. app/Services or a single package) and diff the output against hand-written docs to judge quality.
  2. Parallel run — if an existing phpDocumentor or Scribe setup is in place, generate both for one release cycle and compare coverage and readability.
  3. Cutover or discard — retire the incumbent only if the Markdown output is judged sufficient by the consuming audience (internal devs vs. external API consumers).

If the package proves unusable, the exit is deleting a dev dependency and the generated folder — among the cheapest reversals available.

Compatibility. Gate on a lockfile resolution test before anything else: install into a throwaway branch of the actual monorepo/service and run composer update --dry-run to confirm no parser or PHP constraint conflict with PHPStan, Rector, Laravel Pint, or laravel/framework. Verify behaviour on the oldest and newest PHP versions the team supports. For Laravel 11/12 on PHP 8.3+, assume the package will need patching until proven otherwise. Treat "installs cleanly on our real dependency graph" as the single most informative compatibility signal available given the package's age.

Sequencing.

  • Week 1: Provenance and licence check (MIT confirmed; repository resolution outstanding), lockfile resolution test, single-namespace shadow run.
  • Week 2: Quality review of output with 2–3 senior engineers; decide fork-vs-adopt-vs-reject; define the CI job and publishing target.
  • Week 3+: If adopted, wire into CI on a scheduled or pre-release trigger, add the generated-docs-diff check to PR review, and document the regeneration command in the contributor guide.
  • Deferred: Custom templating, multi-package aggregation, and public-facing publishing — all contingent on the spike passing.

Do not sequence this ahead of any planned PHP or Laravel major upgrade; land it after, so a parser conflict cannot be mistaken for an upgrade blocker.

Operational Impact

Maintenance. Expect to own this. A package with no release in three years and an unresolvable repository is effectively source-available rather than maintained. Budget a named owner and a realistic trickle of ongoing effort — pinning parser versions, patching new-syntax handling, and regenerating docs — or accept it as a disposable tool that gets ripped out when it breaks. The worst outcome is a committed, unreviewed docs folder that nobody regenerates: documentation debt disguised as automation.

Support. No vendor, no SLA, no guaranteed upstream fixes. Support is community-optional at 44 stars, which in practice means self-support. Mitigate by vendoring a fork under an internal namespace if the tool proves valuable, ensuring at least two engineers understand the codebase, and recording the decision in an ADR with explicit revisit triggers (e.g. "re-evaluate on PHP 8.5 or first parser failure").

Scaling. Comfortable within its niche: static generation is linear in codebase size and runs offline. For large Laravel monorepos, watch memory ceilings and generation time — AST-based generators on tens of thousands of files can be slow or memory-hungry, and there is no evidence of optimisation work in recent years. Scope generation per-package or per-namespace rather than repo-wide if runtime becomes a problem. Scaling of output quality is the harder constraint: the more Laravel-idiomatic the code (facades, magic properties, attributes), the less the generated docs will tell you.

Failure modes.

  • Silent incompleteness — modern syntax unparsed or skipped, yielding docs that appear authoritative but omit classes or members. Highest-severity failure because it erodes trust invisibly.
  • Dependency deadlock — a parser constraint pinning the team to an old PHPStan/Rector, blocking security or framework upgrades. Detect early via the lockfile test.
  • Doc drift — generated output committed once and never refreshed; mitigated by a CI check that fails on uncommitted diff.
  • Generator crash on edge-case files — one pathological file aborting the whole run; mitigate with per-namespace invocation and non-zero-exit handling so CI fails loudly rather than publishing partial docs.
  • Upstream disappearance — repository unreachable today; Composer's cache and any committed lockfile are the only continuity guarantees. Vendor a copy if adoption proceeds.

Ramp-up. Very low for consumers (Markdown is universally readable) and low for operators (one command, one CI step). The genuine ramp-up cost is the judgement work: deciding what the docs are for, who reads them, and whether auto-generated API reference beats curated narrative docs for this audience. For most Laravel teams the honest answer is that curated guides and IDE tooling already cover 80% of the need, and this package competes for the remaining slice. Ramp-up is hours; the decision to keep it running is the expensive part.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core