Factory.ai
All Reports

Typer

Python

Strong Testing

Typer reaches Level 3 with 86% Testing pass rate. Currently becoming autonomous-capable with 27/59 criteria passing (46%). Key areas for improvement include the opportunities listed below.

Strengths

01
Testing (86%)
Includes Integration Tests Exist, Test Coverage Thresholds, Test Isolation.
02
Formatter
Ruff formatter configured in pyproject.toml, runs via 'ruff format' in scripts/lint.sh
03
Large File Detection
Pre-commit hook 'check-added-large-files' configured in .pre-commit-config.yaml

Opportunities

01
Cyclomatic Complexity
Add complexity analysis to identify and refactor overly complex functions.
02
Feature Flag Infrastructure
Add feature flags to enable safer deployments and gradual rollouts.
03
Skills
Create .factory/skills to give agents reusable, tested capabilities for common tasks.

All Criteria

Style & Validation6/11 (55%)
—code_modularizationSkipped - small library (16 Python files) where module boundaries not meaningful
✗cyclomatic_complexityRuff complexity rule C901 explicitly ignored in pyproject.toml [tool.ruff.lint] ignore list
✗dead_code_detectionNo dead code detection tools (vulture, knip, ts-prune) configured
✗duplicate_code_detectionNo duplicate code detection (jscpd, PMD CPD) configured
✓formatterRuff formatter configured in pyproject.toml, runs via 'ruff format' in scripts/lint.sh
✓large_file_detectionPre-commit hook 'check-added-large-files' configured in .pre-commit-config.yaml
✓lint_configRuff configured in pyproject.toml [tool.ruff.lint] with rules E, W, F, I, B, C4, UP, TID
—n_plus_one_detectionSkipped - no database/ORM usage in library
✗naming_consistencyNo naming convention rules in ruff or mypy config, none in docs
✓pre_commit_hooks.pre-commit-config.yaml with ruff check/format hooks, runs via uv
✓strict_typingmypy strict mode enabled: [tool.mypy] strict = true
✗tech_debt_trackingTODO comments exist in code (typer/params.py) but no CI scanner tracks them
✓type_checkmypy configured with strict = true in pyproject.toml [tool.mypy]
Build System8/11 (73%)
✗agentic_developmentNo agent co-authorship found in last 100 commits (no droid or AI agent identifiers)
—automated_pr_reviewSkipped - gh CLI available but no automation generating review comments found
✓build_cmd_docREADME.md documents 'pip install typer' and usage instructions
—build_performance_trackingSkipped - no build caching (turbo/nx) or build metrics tracking configured
—dead_feature_flag_detectionSkipped - prerequisite feature_flag_infrastructure not met
✓deployment_frequency30 releases in last year via gh release list, multiple releases per week (0.21.1 on 2026-01-06)
✓deps_pinneduv.lock file committed with pinned dependencies
✓fast_ci_feedbackCI checks complete in 4-6.5 minutes across recent PRs (all under 10 minute threshold)
✗feature_flag_infrastructureNo feature flag system (LaunchDarkly, Statsig, etc.) configured
—heavy_dependency_detectionSkipped - library not bundled for browser, no bundle size analysis needed
—monorepo_toolingSkipped - single application repository, not a monorepo
—progressive_rolloutSkipped - not applicable for library package
✓release_automationpublish.yml workflow automates PyPI publishing on release creation using uv publish
✓release_notes_automationlatest-changes.yml workflow automates release notes to docs/release-notes.md using tiangolo/latest-changes action
—rollback_automationSkipped - not applicable for library package
✓single_command_setupREADME documents single command 'pip install typer' for setup
✗unused_dependencies_detectionNo unused dependency detection (depcheck, deptry, pip-extra-reqs) configured
✓vcs_cli_toolsgh CLI installed and authenticated (verified with gh auth status)
—version_drift_detectionSkipped - single application repository, not a monorepo
Testing6/7 (86%)
—flaky_test_detectionSkipped - no retry config (pytest-rerunfailures) or flaky test tracking found
✓integration_tests_existtest_cli/ tests run actual CLI via subprocess, constitutes integration testing for CLI library
✓test_coverage_thresholdssmokeshow.yml enforces 100% coverage threshold (SMOKESHOW_GITHUB_COVERAGE_THRESHOLD: 100)
✓test_isolationpytest-xdist with --numprocesses=auto in scripts/test.sh enables parallel test execution
✓test_naming_conventionspytest configured with standard test_*.py naming pattern, enforced by test discovery
✗test_performance_trackingNo test timing output (--durations) or test analytics platform integration configured
✓unit_tests_exist202 test files found (test_*.py pattern) in tests/ directory
✓unit_tests_runnablepytest --collect-only succeeded, collected 95 items
Documentation3/7 (43%)
✗agents_mdNo AGENTS.md file found in repository root
✗agents_md_validationPrerequisite agents_md not met - no AGENTS.md exists
—api_schema_docsSkipped - library without HTTP API (no OpenAPI/GraphQL schema needed)
✓automated_doc_generationbuild-docs.yml and deploy-docs.yml automate MkDocs build and Cloudflare Pages deployment
✓documentation_freshnessCONTRIBUTING.md modified within last 180 days (git log verified)
✓readmeREADME.md exists with comprehensive setup, usage, and examples (14KB file)
✗service_flow_documentedNo architecture diagrams (*.mermaid, *.puml) or service dependency docs found
✗skillsNo skills directory found (.factory/skills/, .skills/, .claude/skills/)
Dev Environment0/2 (0%)
—database_schemaSkipped - library without database
✗devcontainerNo .devcontainer/devcontainer.json found
—devcontainer_runnableSkipped - no devcontainer configured
✗env_templateNo .env.example file and .env is checked into repo (contains TERMINAL_WIDTH config)
—local_services_setupSkipped - library without external service dependencies
Debugging & Observability1/8 (13%)
✗alerting_configuredNo alerting (PagerDuty, OpsGenie) configured
—circuit_breakersSkipped - library without external service calls
✓code_quality_metricssmokeshow posts coverage status to PRs via GitHub API (smokeshow.yml workflow)
✗deployment_observabilityNo deployment monitoring dashboards (Datadog, Grafana) or deploy notifications documented
✗distributed_tracingNo tracing (OpenTelemetry, X-Request-ID) configured in library code
✗error_tracking_contextualizedNo error tracking (Sentry, Bugsnag, Rollbar) configured
—health_checksSkipped - library not deployed as service
✗metrics_collectionNo metrics instrumentation (Datadog, Prometheus, New Relic) found
—profiling_instrumentationSkipped - profiling not meaningful for library package
✗runbooks_documentedNo runbooks directory or references to runbooks/playbooks in README or docs
✗structured_loggingNo logging library (winston, pino, structlog, loguru) in dependencies or source code
Security1/7 (14%)
—automated_security_reviewSkipped - gh api code-scanning returned 403 unauthorized, cannot verify
—branch_protectionRequires GitHub admin API access to verify branch protection rules (skipped).
✗codeownersNo CODEOWNERS file in root or .github/ directory
—dast_scanningSkipped - library not deployed as web service
✓dependency_update_automationdependabot.yml configured for github-actions and uv (Python) with daily schedule
✗gitignore_comprehensive.gitignore has 'env' but NOT '.env' - .env file is checked into repo (security risk)
✗log_scrubbingNo log sanitization configured (no logging library)
—pii_handlingSkipped - library doesn't process personal data
—privacy_complianceSkipped - library doesn't collect end-user data
—secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
✗secrets_management.env file checked into repo, no secrets manager integration, no .env.example template
Task Discovery2/4 (50%)
✗backlog_healthMany issues >365 days old (some from 2020-2021), >50% are stale without recent activity
✓issue_labeling_systemConsistent labels exist: bug, feature, question, docs, investigate (verified in issue list)
✓issue_templates.github/ISSUE_TEMPLATE/ exists with config.yml and privileged.yml templates
✗pr_templatesNo .github/pull_request_template.md found
Product & Analytics0/2 (0%)
✗error_to_insight_pipelineNo error tracking integration (Sentry-GitHub) or automated issue creation from errors
✗product_analytics_instrumentationNo analytics (Mixpanel, Amplitude, PostHog) instrumentation found

Ready to build the software of the future?

Start building

Arrow Right Icon