Skip to content
langgenius/dify (opens in a new tab)

A production-grade project with strong momentum, but complex local dev setup and unclear path to first code contribution will frustrate many newcomers.

TypeScript★ 145,333750 open issuesOther
Overall score: 72 out of 100
Holding

last scored 2026-06-15

Readiness lenses

The same repo, two ways: how ready it is for an AI coding agent, and for a human newcomer. Switch lenses to see each one's score and checks.

How ready the repo is for an AI coding agent to read, build, and operate it.

28 of 35 checks passed across 6 categories.

  • Machine Orientation

    6 checks passed2 problems found

    • lowllms.txt present

      An llms.txt is the emerging machine-orientation standard — a curated map for LLMs.

      Fix: Add an llms.txt pointing at the key docs and entry points.

    • lowArchitecture doc

      An ARCHITECTURE doc hands an agent the module map instead of making it infer one.

      Fix: Add an ARCHITECTURE.md describing the major components and how they fit.

    • README present — An agent reconstructs what the repo is and how to work in it from the README first.
    • Agent instructions file — AGENTS.md / CLAUDE.md is the direct, machine-read channel for entry points and conventions.
    • Agent instructions stay lean — A bloated instructions file burns context and measurably hurts more than it helps.
    • Repository description set — The one-line description is the fastest orientation signal an agent reads.
    • Topics set — GitHub topics situate the repo's domain and stack for an agent at a glance.
    • Contribution conventions are written down — A contributor guide is where an agent learns the branch, commit, and review conventions it must follow.
  • Reproducible Setup

    6 checks passed0 problems found

    • Lockfile committed — Without a lockfile two clones can resolve different dependency trees — the build isn't reproducible.
    • Runtime / toolchain pinned — An unpinned runtime makes an agent guess the version a clean environment needs.
    • Version pins are exact — A floating pin (a bare major, or a range) still drifts between installs.
    • Env template present — A .env.example tells an agent which configuration keys it must supply to run.
    • Container or dev-container — A Dockerfile / compose / devcontainer removes 'works on my machine' from setup.
    • Dev container — A .devcontainer gives an agent a one-command, fully-declared environment.
  • Code Navigability

    1 check passed1 problem found

    • lowTypeScript strict mode on

      Strict typing gives an agent typed signatures to anchor an edit on, not guesses.

      Fix: Turn on `strict` in tsconfig.json.

    • Conventional source layout — A recognised src/ · lib/ · app/ layout lets an agent localise code without spelunking.
  • Verification Surface

    5 checks passed2 problems found

    • mediumTest command defined

      A `test` script is the documented, discoverable way to run the suite.

      Fix: Add a `test` script (package.json / Makefile / Taskfile) that runs the suite.

    • lowBuild command

      A documented build command is the discoverable way for an agent to produce artifacts.

      Fix: Add a `build` script that produces the distributable.

    • Tests present — Runnable tests are the ground truth an agent checks its own edits against.
    • Lint command defined — A linter an agent can run catches a class of mistakes before they ship.
    • CI configured — Readable CI is the feedback loop an agent reads to know what 'green' means here.
    • Task runner present — A Makefile / Taskfile / justfile gives an agent a single index of the project's commands.
    • Typecheck command — A typecheck script lets an agent catch type errors before they ship.
  • Agent Safety

    8 checks passed0 problems found

    • No committed .env — A tracked real .env hands secrets to anything — including an agent — that reads the repo.
    • No exposed secrets — Secret-shaped literals in tracked files are a live credential leak.
    • .gitignore covers env files — An ignore rule for .env is what keeps the next careless commit from leaking secrets.
    • CODEOWNERS present — CODEOWNERS marks the 'don't touch without review' zones an agent should respect.
    • Automated dependency updates — Dependabot / Renovate keeps dependencies patched without a human in the loop.
    • .gitignore present — A .gitignore is the first guard against an agent committing secrets or build junk.
    • Security policy — A SECURITY.md is where an autonomous security agent reads this repo's rules before acting on it.
    • License makes the code reusable — Without a license an agent cannot safely copy, redistribute, or vendor any of this code.
  • Context Economy

    2 checks passed2 problems found

    • lowGenerated / vendored files marked

      A .gitattributes linguist marker tells tools (and agents) what to skip.

      Fix: Mark generated/vendored paths in .gitattributes (linguist-generated / linguist-vendored).

    • lowNo oversized source file

      A single file in the hundreds of KB blows past an agent's effective context window.

      Fix: Split the largest files along their natural seams.

    • Dependencies not vendored in — A committed node_modules / vendor tree drowns the real signal an agent needs.
    • Build output not committed — Generated dist/ · build/ output is noise an agent has to read past.

Where the grip slips

  1. highOpen Door+15 pts if fixed

    Missing or ambiguous license statement in snapshot

    The snapshot lists 'License: Other,' which does not clearly indicate to a newcomer whether this is truly open-source and reusable. Visitors cannot verify legal safety on GitHub without reading the LICENSE file, and the 'Other' tag creates friction and doubt.

    Fix: Display the exact SPDX license identifier (e.g., 'Apache-2.0', 'MIT') in the GitHub UI and prominently in the README. Add a one-line license shield badge to the top of the README (e.g., `[![License: Apache-2.0](...)`).

  2. highGetting Running+14 pts if fixed

    Local source development setup is underdocumented and complex

    The Makefile shows the dev setup (docker middleware, web, api), but newcomers must infer the sequence and tooling. The Makefile targets don't explain *why* three separate environments are needed, what docker-compose.middleware.yaml does, or how to run the full stack locally. The README only mentions Docker Compose for the all-in-one setup and a generic link to 'deploying from source code' in docs.

    Fix: Add a DEVELOPMENT.md file at the repo root with: step-by-step local setup (e.g., 'Run `make dev-setup`, then `make dev-api` and `make dev-web` in separate terminals'), explanation of what each Makefile target does, a checklist to verify the stack is running (e.g., 'curl http://localhost/api/health'), and troubleshooting for common failures. Link from README.

  3. highFinding Your Way+12 pts if fixed

    No architecture or codebase overview for newcomers

    With 12,565+ files across api/, web/, and docker/, and no high-level architecture document in the root or README, a newcomer cannot build a mental map. The agent skills directory hints at internal structure, but there's no diagram or guide explaining how api, web, and backend-services interact.

    Fix: Add an ARCHITECTURE.md file at the repo root with: a brief ASCII or Mermaid diagram showing api → backend → web data flow, a 2–3 sentence summary of each major module, and where to find more detail. Link it prominently from the README.

  4. highPath To Contribute+11 pts if fixed

    CONTRIBUTING.md content not visible; path to first PR unclear

    The README references CONTRIBUTING.md, but the snapshot does not include its content. Without seeing it, a newcomer cannot verify whether it covers: issue selection, dev setup for contributions, test expectations, PR conventions, or code-review norms. The Makefile shows `make lint` and `make test` but no guidance on when/how to use them in a PR workflow.

    Fix: Ensure CONTRIBUTING.md includes: (1) a quick checklist for setting up a dev environment for contributors, (2) how to pick a beginner-labeled issue, (3) step-by-step PR workflow (fork, branch, test, lint, submit), (4) what tests and linting checks must pass, and (5) expected review time. Reference Makefile targets by name.

  5. mediumPath To Contribute+9 pts if fixed

    No beginner-labeled issues or explicit issue-selection guidance

    The README directs newcomers to GitHub Issues and GitHub Discussions, but the snapshot does not show labels like 'good-first-issue' or 'beginner-friendly' in the .github/ISSUE_TEMPLATE files or issue triage strategy. With 750 open issues, a newcomer must manually scan to find work at their level.

    Fix: Add labels 'good-first-issue' and 'help-wanted' to the GitHub label schema, and triage existing issues (at least 5–10 recent ones) with these labels. In CONTRIBUTING.md, add a link: 'Start here: [Issues labeled good-first-issue](https://github.com/langgenius/dify/labels/good-first-issue)'.

  6. mediumGetting Running+8 pts if fixed

    Multiple required .env files with no unified template or env setup script

    The Makefile copies docker/.env.example, web/.env.example, and api/.env.example, but a newcomer must manually understand which env variables are critical for local dev. There's no single script or checklist explaining which vars are required vs. optional, or what happens if they're wrong (e.g., does the app fail to start, or silently degrade?).

    Fix: Create a setup script (e.g., `scripts/setup-dev-env.sh`) that copies all .env.example files and validates required variables are set. Output a summary of what each var does and where to get values (e.g., 'OPENAI_API_KEY: Get from https://platform.openai.com'). Mention it in DEVELOPMENT.md.

  7. lowGetting Running+5 pts if fixed

    Unpinned minor versions in package.json and dev dependencies

    package.json uses 'catalog:' for all devDependencies, which likely points to a workspace catalog (e.g., pnpm workspace), but the snapshot does not show the catalog definition. A newcomer cannot verify pinned versions without inspecting pnpm-lock.yaml, and the 'catalog:' reference is opaque to someone unfamiliar with pnpm workspaces.

    Fix: In package.json or a linked docs file, explain the 'catalog:' pattern (e.g., 'Versions are pinned in pnpm-workspace.yaml'). Better: show exact versions in package.json itself for clarity, or add a comment in the README explaining that the workspace uses a shared version catalog and link to it.

  8. lowFirst Impression+4 pts if fixed

    README assumes LLM domain knowledge without context

    The README uses jargon like 'RAG,' 'ReAct,' 'LLMOps,' and 'Function Calling' without definitions. Someone new to LLMs or AI frameworks will not understand what Dify does or why they need it, even though the pitch is clear for insiders.

    Fix: Add a short 'What is Dify?' glossary section in the README or link to a 'Glossary.md' file explaining: RAG, agents, workflows, LLM, function calling, observability, and LLMOps in 1–2 sentences each. Or add tooltips in the feature list (e.g., '**RAG Pipeline**: Retrieval-Augmented Generation—tools to...').

Show your score

Latch badge
[![Latch score](https://latch.fyi/api/badge/580b4cec-a142-48ab-9c81-1090df9c813a)](https://latch.fyi/langgenius/dify)

Share this analysis

https://latch.fyi/langgenius/dify

Fixed some issues? Re-analyze to measure your progress →

Copy the whole report

Grab the entire verdict in one go — a Markdown block for a README or an issue, plain text, or a prompt you can paste straight into an LLM.

Was this verdict fair?

One tap helps — or tell us more.