App-Project-Doctor

 view release on metacpan or  search on metacpan

script/project-doctor  view on Meta::CPAN

0.02

=head1 SYNOPSIS

  project-doctor [options] [PATH]

  Options:
    --check NAMES    Run only the named checks (comma-separated)
    --skip  NAMES    Skip the named checks (comma-separated)
    --fix            Apply all fixes non-interactively
    --no-fix         Report only; never prompt for fixes
    --format FORMAT  Output format: text (default), json, tap
    --verbose, -v    Show per-finding detail for all checks
    --quiet,   -q    Suppress banner and passing checks
    --help,    -h    Show this help
    --man            Show full manual page

=head1 DESCRIPTION

Runs a suite of diagnostics against a Perl CPAN distribution and reports
on tests, CI configuration, META validity, POD coverage, dependency
declarations, licensing, GitHub Actions workflows, security hygiene, and
CPAN upload readiness.

Fixable issues are listed at the end; the user is prompted (or fixes are
applied automatically with C<--fix>).

=head1 EXAMPLES

  # Check the current directory
  project-doctor

  # Check a specific distribution
  project-doctor ~/src/My-Dist

  # Run only the Tests and POD checks
  project-doctor --check=Tests,Pod

  # JSON output for editor integration
  project-doctor --format=json --no-fix

  # CI usage: fail the build on any error
  project-doctor --no-fix --format=tap

=head1 EXIT STATUS

  0   No errors found
  1   One or more errors found

=head1 CHECKS

In default execution order:

  Tests           Test suite exists and passes
  CI              CI configuration is present
  GitHubActions   Workflow files validate cleanly
  Meta            META.yml/json is present and complete
  Pod             All modules have valid POD
  Dependencies    Used modules are declared as prerequisites
  License         LICENSE file is present and consistent with META
  Security        strict/warnings present; no hardcoded credentials
  CpanReadiness   Version format, Changes, MANIFEST, README present

=head1 LIMITATIONS

The fix context is built from C<PATH>, not from the detected root.  In the
rare case where C<PATH> is not the project root (e.g. a subdirectory), the
Context may have a different root than Doctor used.

=head1 AUTHOR

Nigel Horne C<< <njh@nigelhorne.com> >>

=head1 LICENSE

Copyright (C) 2026 Nigel Horne.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut



( run in 1.343 second using v1.01-cache-2.11-cpan-bbcb1afb8fc )