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
-
auth team-auth 1 TODOcoverage 92% commits 55%
-
billing team-billing 4 TODOscoverage 74% commits 40%
-
search team-discovery 7 TODOscoverage 61% commits 35%
-
onboarding team-growth 0 TODOscoverage 88% commits 70%
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.
-
Organize by feature
Put each business feature in its own folder inside a
featuresfolder, or flag any folder withfeature: truein its README.features/ ├── auth/ ├── billing/ └── search/
-
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
-
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.
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 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
| Feature | Owner | Files |
|---|---|---|
| auth | @team-auth | 2 |
| billing | @team-billing | 2 |
Reviewers requested: my-org/team-auth my-org/team-billing
Set it up with GitHub ActionsTechnology 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