Skip to content
Features GitHub

Open source · Rust · Any language

Every feature of your codebase, mapped.

Features is a CLI and web dashboard that finds the features in your project, shows who owns them, and measures their history, coverage and technical debt. It works with any programming language or framework.

$ npx features-cli@latest serve ./src
src/features
4 features
  • auth team-auth 1 TODO
    coverage 92% commits 55%
  • billing team-billing 4 TODOs
    coverage 74% commits 40%
  • search team-discovery 7 TODOs
    coverage 61% commits 35%
  • onboarding team-growth 0 TODOs
    coverage 88% commits 70%
feature fix refactor

How it works

From folders to insights in three steps

Features reads the structure you already have. Group code by feature, run the CLI, and every report is generated for you.

  1. Organize by feature

    Put each business feature in its own folder inside a features folder, or flag any folder with feature: true in its README.

    features/
    ├── auth/
    ├── billing/
    └── search/
  2. Run the CLI

    One binary, written in Rust. Install it with npm or cargo, or run it on the fly with npx.

    $ features scan ./src
    $ features serve ./src
    $ features codeowners ./src
  3. Explore and share

    Browse the dashboard, publish a static build, export JSON or comment on pull requests.

    • Dashboard
    • JSON report
    • CODEOWNERS
    • PR comment

Capabilities

One tool, every question about your features

Who owns this? How healthy is it? What did this pull request touch? Features answers from the code itself, so the answers never go stale.

  • List every feature

    Scan any folder and get the full tree of features, nested features included.

  • Find the owner

    Know which team owns a feature, a folder or a single file in one command.

  • Read the history

    Get the git log of each feature, split into feature, fix and refactor commits.

  • Surface the docs

    README descriptions and decision records (ADR) are attached to their feature.

  • Coverage by feature

    LCOV and Cobertura reports are mapped back to each feature automatically.

  • Track technical debt

    TODOs found in the code are counted per feature so debt stays visible.

  • Measure everything

    Lines of code, files and the repartition of commit types for every feature.

  • Generate CODEOWNERS

    Turn feature ownership into a CODEOWNERS file, kept in sync on each run.

  • Ping the right teams

    List the features and owners touched by a change, right in your pull request.

  • Map feature flags

    Annotate code with comments to track flags, experiments and dependencies.

Web dashboard

A dashboard your whole team can read

Run features serve for a live dashboard refreshed on every file change, or features build to publish a static version anywhere.

Insights page of the Features dashboard: totals of features and owners, and a table of every feature with its owner, dates, files, lines, TODOs and changes
Insights: every feature with its owner, size, TODOs and commit history, filterable with queries like owner:john AND lines:>1000.
Dependency graph of the Features dashboard: features as nodes colored by owner, with parent, child and sibling links and circular dependencies in red
Dependencies: a graph of the imports between features, colored by owner, with circular dependencies flagged.
Ownership tab of the Features dashboard: a table of owners with their number of features, files, lines and annotations
Ownership: what each team owns, in features, files, lines and annotated flags.

Explore the live demo

Code review

Know which teams a change touches

features diff maps every changed file to its closest feature and owner. Post it as a pull request comment, or request reviews from the owning teams automatically.

features diff src --since origin/master
Features touched since origin/master (merge base 1a2b3c4):

  Auth (features/auth) - owner: team-auth
    M src/features/auth/login.ts
    R src/features/auth/old.ts -> src/features/billing/moved.ts

  Billing (features/billing) - owner: team-billing
    R src/features/auth/old.ts -> src/features/billing/moved.ts
    D src/features/billing/legacy.ts

Files outside any feature:
    M README.md

github-actions commented

on pull request

Features touched by this pull request

FeatureOwnerFiles
auth@team-auth2
billing@team-billing2

Reviewers requested: my-org/team-auth my-org/team-billing

Set it up with GitHub Actions

Technology agnostic

Works with the stack you already have

Features only reads folders, READMEs, git history and comments. Feature annotations are recognized in all these languages.

  • Rust
  • TypeScript
  • JavaScript
  • Python
  • Go
  • Java
  • Kotlin
  • Swift
  • C#
  • C/C++
  • Scala
  • Ruby
  • Perl
  • Lua
  • SQL
  • Bash
  • CSS/SCSS
  • YAML
  • TOML
  • HTML/XML

See your features in one command

No configuration, no account. Point the CLI at a folder and open the dashboard.

$ npx features-cli@latest serve ./src