# Welcome to Hivel

Drive engineering excellence and maximize business outcomes.

Hivel is an intelligence platform providing Software Engineering Leaders with **actionable insights** from Dev Tools, empowering them to unlock their organization's full potential. These insights empower **hi**gh-**vel**ocity teams, and **boost business impact**.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td></td><td><strong>Using Hivel</strong><br><em>know the ins and outs of Hivel's main features</em></td><td></td><td><a href="/pages/6y5Pn2MpjkLLtp5NsvTb">/pages/6y5Pn2MpjkLLtp5NsvTb</a></td><td><a href="/files/BW6uJMHDttoAIDMfVTfP">/files/BW6uJMHDttoAIDMfVTfP</a></td></tr><tr><td></td><td><strong>Metrics &#x26; Definitions</strong><br><em>dive deep into the metrics</em></td><td></td><td><a href="/pages/ryxs4pJqsAMR6kqO0DvG">/pages/ryxs4pJqsAMR6kqO0DvG</a></td><td><a href="/files/uTcrToTz2LmsK5RANd2T">/files/uTcrToTz2LmsK5RANd2T</a></td></tr><tr><td></td><td><strong>Setup</strong><br><em>configure Hivel to match your workflow</em></td><td></td><td><a href="/pages/I1klDhBSlZ7eyT1Qtxqa">/pages/I1klDhBSlZ7eyT1Qtxqa</a></td><td><a href="/files/WJeAC2U7N3HDuqjAoI2r">/files/WJeAC2U7N3HDuqjAoI2r</a></td></tr><tr><td></td><td><strong>Integrations</strong><br><em>connect with the most widely used tools and derive correlation</em></td><td></td><td><a href="/pages/0DjYyMycz6IX42k8sXub">/pages/0DjYyMycz6IX42k8sXub</a></td><td><a href="/files/NyprBpGSMlyOHTSxeRLr">/files/NyprBpGSMlyOHTSxeRLr</a></td></tr><tr><td></td><td><strong>Best Practices</strong></td><td><em>keep up with the latest industry trends</em></td><td><a href="/pages/XL7gUZtfgNubD29pU9gT">/pages/XL7gUZtfgNubD29pU9gT</a></td><td><a href="/files/XiTAY5cVYtoWzsQf22HC">/files/XiTAY5cVYtoWzsQf22HC</a></td></tr><tr><td></td><td><strong>AI Adoption</strong></td><td><em>Measure you AI adoption &#x26; usage</em></td><td><a href="/pages/TDwZzXtzymMsjcnRRsrV">/pages/TDwZzXtzymMsjcnRRsrV</a></td><td><a href="/files/yMs9lzyGtfI0BPl8snFq">/files/yMs9lzyGtfI0BPl8snFq</a></td></tr></tbody></table>


# Landing Page

In case this is the first time, follow these steps, or skip to step 8

1. Understand what Hivel is at a high level - brief overview
2. Sign up to Hivel
3. Integrate (if first user or admin or if integrations has not been done yet)
4. Wait for data to come
5. Set up - teams, users
6. Take a look at the metrics to get an idea of how it is showing up for the teams and authors
7. In case something feels off - edit configurations to suit the workflow - reach out to us in case if you have any doubts or need more configurations
8. Take a tour of Hivel and the features it offers
9. Read through the best practices and how to improve the metrics and overall team performance
10. Set up Goals on Hivel based on metrics you reviewed for you team or the org.
11. Learn how to use Hivel week in week out, month in month out
12. Give us feedback and reach out to us for any queries


# Landing page v0.1

## **Welcome to Hivel**

We’re excited to have you here! Think of this page as your starting point. It’s the place you can always come back to if you ever feel a little lost. We’ll walk you through the journey step by step - and along the way, you’ll find links to videos, guides, and best practices you can explore at your own pace.

<details>

<summary><strong>Getting Started</strong></summary>

* [<mark style="color:purple;">Intro to Hivel</mark>](#get-to-know-hivel)
* [<mark style="color:purple;">Sign up</mark>](#sign-up-1)
* [<mark style="color:purple;">Integrations</mark>](#connect-your-tools)

</details>

<details>

<summary><strong>Setup and metrics</strong></summary>

* [<mark style="color:purple;">Teams and Users</mark>](#shape-your-teams)
* [<mark style="color:purple;">Data Validation</mark>](#double-check-your-data)
* [<mark style="color:purple;">Understand your Metrics</mark>](#understand-your-metrics)
* [<mark style="color:purple;">Adjust Configurations</mark>](#adjust-if-needed)

</details>

<details>

<summary> <strong>Features, Best Practices, and Goals</strong></summary>

* [<mark style="color:purple;">Hivel's Features</mark>](#explore-hivels-main-features)
* [<mark style="color:purple;">Best Practices</mark>](#learn-best-practices)
* [<mark style="color:purple;">Goals</mark>](#set-goals)
* [<mark style="color:purple;">Make Hivel part of the rhythm</mark>](#make-hivel-part-of-the-rhythm-1)

</details>

***

### **Get to Know Hivel**

At its heart, Hivel connects your Git, Jira, and other tools to give you a clear picture of how your teams are building software, where the bottlenecks are, and what can be improved.

{% columns %}
{% column %}

<p align="center">A quick video intro of Hivel</p>

{% embed url="<https://www.youtube.com/watch?t=1s&v=9VJ2hiMvPpE>" %}
{% endcolumn %}

{% column %}

<p align="center">A 15-min walkthrough of Hivel, by its Founder</p>

{% embed url="<https://www.youtube.com/watch?v=kzwm1pbGqTI>" %}
{% endcolumn %}
{% endcolumns %}

#### Check out an interactive walkthrough of Hivel

{% embed url="<https://hivel.storylane.io/share/p9ymqissf0mw>" %}

***

### **Sign Up**

If you haven’t already, [create your Hivel account](https://app.hivel.ai/signup). It only takes a minute, and you’ll be ready to invite your teammates once you’re in.

<p align="center"><a href="/pages/tadiyekXuTfiCsDjdEPg" class="button primary" data-icon="rocket-launch">How to sign up to Hivel</a></p>

***

### **Connect Your Tools**

Hivel comes alive once it’s connected. If you’re the first user or an admin, you’ll be prompted to set up integrations with your SCM, any PM tools, AI tools, among others. Already integrated? Great you can skip ahead.

<p align="center"><a href="/pages/0DjYyMycz6IX42k8sXub" class="button primary" data-icon="link">Integrations Guide</a>  <a href="https://app.hivel.ai/settings/integrations" class="button secondary" data-icon="right-long">Integrations page on Hivel</a></p>

***

### **Let the Data Flow**

Once integrations are set, Hivel starts pulling in your data. Depending on the size of your projects, it may take a little while. You don’t need to wait around - we’ll let you know when it’s ready.

***

### **Shape Your Teams**

Now’s the time to set up teams and add users. Organizing things the way your company works makes the insights that follow much more meaningful.

In case teams have already been set up, you can go through your teams to get an idea of whether everyone is considered and it is set up properly.

<p align="center"><a href="/pages/mnNJze39nI0D8gSkcI0k" class="button primary" data-icon="cable-car">Teams</a>  <a href="https://app.hivel.ai/settings/teams" class="button secondary" data-icon="right-long">Teams page on Hivel</a></p>

<p align="center"><a href="/pages/Qz4aymXmZu7mAfwi1LWC" class="button primary" data-icon="screen-users">Users</a>  <a href="https://app.hivel.ai/settings/users" class="button secondary" data-icon="right-long">Users page on Hivel</a></p>

{% content-ref url="/pages/Kcsm112Y5JMf7EnIR1df" %}
[Team & User Management FAQs](/faqs/team-and-user-management-faqs)
{% endcontent-ref %}

***

### **Double-Check Your Data**

Trust in your data matters. Take a moment to cross-check Hivel’s numbers with what you see in your SCM and PM tool for starters. This quick validation helps you feel confident in the insights you’re looking at.

<p align="center"><a href="/pages/8WWQYoOBcT6mm9vhRrqO" class="button primary" data-icon="cloud-check">How to validate the data on Hivel</a></p>

***

### **Understand Your Metrics**

This is the fun part - you’ll start seeing dashboards that show how your teams and developers are working. Don’t worry if it feels new; just spend a little time getting familiar with the view.

<p align="center"><a href="/pages/1yhoXPL29LMS8d5e3Ahf" class="button primary" data-icon="chart-scatter">Read about the Cockpit</a>  <a href="https://app.hivel.ai/dashboard/custom-dashboards" class="button secondary" data-icon="right-long">Check out Cockpit on Hivel</a><br><sup><sub><em>(where you will find most of the metrics)</em></sub></sup>                                                                                                                 </p>

<p align="center"><a href="/pages/ryxs4pJqsAMR6kqO0DvG" class="button primary" data-icon="chart-line">Metrics and Definitions</a></p>

***

### **Adjust if Needed**

Every workflow is different. If something doesn’t look quite right, you can tweak configurations until they feel just right. And if you’re stuck, we’re only a [click away](mailto:support@hivel.ai).

{% hint style="warning" %}
Please note: It’s very likely that another admin has already adjusted these configurations. We recommend checking in with your team before making any further changes.
{% endhint %}

{% hint style="info" %}
Please note: Configuration changes do not impact past metrics in Hivel; they apply only to new data going forward. For consistency across all time periods, please reach out to us.
{% endhint %}

<p align="center"><a href="/pages/nulJwoKP4wgBdmVFx7L3" class="button primary" data-icon="gear">Read about the configurations here</a>  <a href="https://app.hivel.ai/settings/configuration" class="button secondary" data-icon="right-long">Configurations page on Hivel</a></p>

***

### **Explore Hivel's Main Features**

Once you’ve got the basics in place, explore what Hivel has to offer - from goals to detailed dashboards.

Here are some functionalities we encourage you to check out first:

* <a href="/pages/1yhoXPL29LMS8d5e3Ahf" class="button primary">Cockpit</a>
* <a href="/pages/j0c0LZvzuIDOTn8cXJ76" class="button primary">Investment</a>
* <a href="/pages/rsPVjRVTJgROOSrOQsGf" class="button primary">Pull Request Screen</a>
* <a href="/pages/AJFFHbZKH1BUCM2vx5B4" class="button primary">Activity</a>
* <a href="/pages/rZoeujO26KvtfpO1a1mr" class="button primary">Download Reports</a>

***

### **Learn Best Practices**

We’ve gathered proven ways teams use Hivel to speed up delivery and improve quality. These are small habits that add up to big wins.

<p align="center"><a href="/pages/XL7gUZtfgNubD29pU9gT" class="button primary" data-icon="thumbs-up">Best practices</a></p>

<p align="center"><a href="/pages/x2GpMaZyBbPXQvMugzA6" class="button primary" data-icon="chart-line-up">Steps to take to improve the metrics and performance</a></p>

***

### **Set Goals**

With your data in place, it’s time to set goals for your teams or the whole org. Goals keep everyone moving in the same direction and help you measure progress over time.

<p align="center"><a href="/pages/oVRxvlEtUJjGMbxjB7O8" class="button primary" data-icon="bullseye-pointer">Read up on Goals feature and how to set them up</a>  <a href="https://app.hivel.ai/dashboard/goals" class="button secondary" data-icon="right-long">New button</a></p>

***

### **Make Hivel Part of the Rhythm**

The real magic happens when Hivel becomes part of your team’s weekly and monthly check-ins. Look at trends, revisit goals, and celebrate improvements.

<p align="center"><a href="/pages/VgxHNmPE052SlvTc7g1M" class="button primary" data-icon="glasses">Developer's Guide to Hivel</a></p>

<p align="center"><a href="/pages/VTCiOMZmZoYYnvlQa5W1" class="button primary" data-icon="user-tie">Leader's Guide to Hivel</a></p>

<p align="center">&#x3C;space for managers></p>

***

{% hint style="success" %}
✨ **Tip:** You don’t have to do it all at once. Even if you pause after Step 3 or Step 6, you can always come back here and pick up where you left off.
{% endhint %}

***

<h3 align="center"><strong>Share Your Thoughts</strong></h3>

Your feedback helps us make Hivel better. If you notice something that could be improved or want to see a new feature, let us know. We love hearing from you.

<p align="center">👉 <a href="mailto:support@hivel.ai">support@hivel.ai</a></p>


# Using Hivel

**Welcome to Hivel’s Knowledge Base**\
Your go-to guide for getting the most out of Hivel - from tracking performance and managing goals to optimizing your engineering workflows. Explore how to enhance productivity, streamline collaboration, and make the most of every feature. All your essential Hivel know-how, in one place.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Cockpit</td><td><a href="/pages/1yhoXPL29LMS8d5e3Ahf">/pages/1yhoXPL29LMS8d5e3Ahf</a></td></tr><tr><td>Investment</td><td><a href="/pages/j0c0LZvzuIDOTn8cXJ76">/pages/j0c0LZvzuIDOTn8cXJ76</a></td></tr><tr><td>Pull Request Screen</td><td><a href="/pages/rsPVjRVTJgROOSrOQsGf">/pages/rsPVjRVTJgROOSrOQsGf</a></td></tr><tr><td>AI Adoption</td><td><a href="/pages/TDwZzXtzymMsjcnRRsrV">/pages/TDwZzXtzymMsjcnRRsrV</a></td></tr><tr><td>Goals</td><td><a href="/pages/oVRxvlEtUJjGMbxjB7O8">/pages/oVRxvlEtUJjGMbxjB7O8</a></td></tr><tr><td>Coding Screen</td><td><a href="/pages/QASW5qGBDPGeAQ4Vblt7">/pages/QASW5qGBDPGeAQ4Vblt7</a></td></tr><tr><td>Activity</td><td><a href="/pages/AJFFHbZKH1BUCM2vx5B4">/pages/AJFFHbZKH1BUCM2vx5B4</a></td></tr><tr><td>Dev360</td><td><a href="/pages/XwR5ckkr03SSVzsOf6xb">/pages/XwR5ckkr03SSVzsOf6xb</a></td></tr><tr><td>Process Screen</td><td><a href="/pages/NBgbKKxL0iPsk3GvHA10">/pages/NBgbKKxL0iPsk3GvHA10</a></td></tr><tr><td>Work Item Breakdown</td><td><a href="/pages/UbaoJQLwj2mFxBCnqpAM">/pages/UbaoJQLwj2mFxBCnqpAM</a></td></tr><tr><td>Coding Hotspots</td><td><a href="/pages/Zy3Ah7ZNZ4WfTG7epcBL">/pages/Zy3Ah7ZNZ4WfTG7epcBL</a></td></tr><tr><td>Hivel Quadrant</td><td><a href="/pages/kRO3KJrhTLKp1MVZI3rR">/pages/kRO3KJrhTLKp1MVZI3rR</a></td></tr><tr><td>Performance Appraisal</td><td><a href="/pages/onnfjcjLHbkr5cCZDMpw">/pages/onnfjcjLHbkr5cCZDMpw</a></td></tr><tr><td>Lucy</td><td><a href="/pages/gmqBgXJ9TBbkspemExfk">/pages/gmqBgXJ9TBbkspemExfk</a></td></tr><tr><td>Hivel Score</td><td><a href="/pages/lrOB4mtEkq2mjVH32ZvB">/pages/lrOB4mtEkq2mjVH32ZvB</a></td></tr></tbody></table>


# Cockpit

Cockpit is your centralized command center for engineering insights. It brings together all your boards and templates into a streamlined view, making it easy to track key engineering metrics, explore trends, and derive insights without jumping across multiple screens.

With quick access to favorites, flexible filtering, drilldowns across time and teams, Cockpit helps you move from high-level visibility to actionable understanding in just a few clicks.

{% embed url="<https://drive.google.com/file/d/1xhlCdUYPxB9S_ObLNs76YcPVXanQ9H9h/view?usp=sharing>" %}

## Key features

#### Unified View of Boards & Templates

* Access **all created boards** and **Hivel-provided templates** in a single place.
* Easily differentiate between **private boards**, **public boards**, and **templates** with clear visual indicators.

#### **Favorites & Quick Access**

**Pin frequently used boards** to the side menu for instant access.

<figure><img src="/files/NggjjZztMs6rW0eIrOw4" alt=""><figcaption></figcaption></figure>

#### **Metrics list**

**Hover over any template card** to quickly view a list of all metrics included in the board.

<figure><img src="/files/ZFgL7iOCvwNThY7mwdmw" alt=""><figcaption></figcaption></figure>

#### **Board Ownership**&#x20;

See **who created a board and when it was created** for better tracking and collaboration.

<figure><img src="/files/a5K1MSunJjUPc7d26S9j" alt=""><figcaption></figcaption></figure>

## Features available for the boards

#### Create your own board for set of metrics and save filters

* Navigate to '**All Boards**', Click the '**Create dashboard**' button, and create your customized board by giving the board name, description, and type of board.
* Select the metrics and click on '**Apply Changes**.'

<div data-with-frame="true"><figure><img src="/files/MiVkKPrj4LjHTo5xZIxX" alt=""><figcaption></figcaption></figure></div>

* You can tailor the dashboard to your liking and select a single team, multiple teams, one repository, or a group of repositories.
* Choose a specific date range to focus on the period that is most relevant to your analysis.
* Click on the '**Save Filter**' button, give the filter name, and save it for future reference.
* Upon saving, the filter's unique URL is automatically updated in the browser’s address bar.

<div data-with-frame="true"><figure><img src="/files/ht63QrUNHHGKHqIrj86p" alt=""><figcaption></figcaption></figure></div>

* Mark any dashboard as your favourite through the ☆ icon for it to be available directly from the left panel.
* Switching from **graphical to tabular view** gives you a bird's eye view of all the teams and metrics in one single view, for further export and drilldown.

<div data-with-frame="true"><figure><img src="/files/lxkuMEbjCakNuUQuQN9Z" alt=""><figcaption></figcaption></figure></div>

#### **Drilldown from Quarterly to Daily Levels**

<div data-with-frame="true"><figure><img src="/files/n59f9OxBQIWuP50hWcko" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/XT8EfQ0hvFxFtvIjdJYy" alt=""><figcaption></figcaption></figure></div>

* Start at a quarterly overview and **drill down into monthly, weekly, or daily trends** for deeper insights.
* View pull requests (PRs) related to specific time periods for better traceability and exclude outliers.

<div data-with-frame="true"><figure><img src="/files/Q1v9uPYecBrfDk0Paa5I" alt=""><figcaption></figcaption></figure></div>

#### Dashboard Access & Permissions

<div data-with-frame="true"><figure><img src="/files/woHMYuU84r13ixfmwoPH" alt=""><figcaption></figcaption></figure></div>

* **Public Dashboards:** Visible to everyone in the organization, but only the owner can modify them.
* **Private Dashboards:** Only the owner can view, edit, and delete them.

#### Workspaces & Team Views

<div data-with-frame="true"><figure><img src="/files/30qtHU5DwbdVD356wJAG" alt=""><figcaption></figcaption></figure></div>

* If [Workspaces are enabled from the configuration](/configurations/general-configurations), users can view the combination of both Teams and Workspaces for a more structured and categorized view of performance metrics.
* This allows for **cross-team and cross-workspace comparisons**, helping organizations track performance across different projects and initiatives.

#### Side-by-Side Team Comparison

<div data-with-frame="true"><figure><img src="/files/uGOSNUKwKgz0eU6VflyQ" alt=""><figcaption></figcaption></figure></div>

* Compare **selected teams side by side** to **analyze performance trends over time**.
* Easily track progress across multiple teams and benchmark their efficiency, cycle time, and other critical metrics.

#### TV Mode:

You can select the TV icon at the top right corner to switch the dashboard display to TV mode, optimizing it for larger screens.

<div data-with-frame="true"><figure><img src="/files/WIAIJpVT3oVe4RE3n1Rl" alt=""><figcaption></figcaption></figure></div>

#### Download Report:

Next to the TV view icons, find the ‘**Download** ’icons. Click on this to download an image of the currently displayed graph or chart for offline reference.

<div data-with-frame="true"><figure><img src="/files/R61MvrWYJPI1GVEVtPAN" alt=""><figcaption></figcaption></figure></div>

For further guidance or support with Custom Dashboards, feel free to reach out to our support team at [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).

***

#### More details

Only the board owners can delete or modify, delete, or change the access of their created dashboards.


# How to download reports

Downloading reports in CSV format is a convenient way to analyze your data offline. In Hivel, you can download reports from the **Cockpit Pro, Pull Request, and Settings** screens. Below are step-by-step instructions for each type of report.<br>

**Cockpit Pro reports:**

Cockpit Pro reports can be downloaded for data in the Speed, Quality, or Throughput buckets. To pull data from all buckets simultaneously, switch to tabular view and select "All." Here’s how to download a Cockpit report:

{% embed url="<https://app.storylane.io/share/vg6uueclt5yv>" %}

1. Navigate to Cockpit Pro screen.
2. Choose the relevant date range.
3. Apply filters for the desired team, repository, or projects.
4. Switch to tabular view.
5. Under the graphical/tabular option, click on the "Export to CSV" option. The file will be downloaded instantly with the columns and fields as visible in the platform.

**Pull Request reports:**

The Pull Request report includes all data available for each PR in the Pull Request screen. Here’s how to download a Pull Request report:

1. Navigate to Pull Request screen.
2. Apply filters to narrow down the relevant PRs.
3. Click on the "Export CSV" button.
4. The report will be sent to your mail.

#### **Other reports:**

**Settings -> Download Reports:**

You can download 4 kind of reports for the date range and teams that you select:

1. **Activity** - Number of Active days where the engineers had some Git activity for the selected time period.
2. **Activity (Raw)** - Detailed information on commits and PRs in various stages (merged, reviewed, opened, declined).
3. **Code Base Changes (Raw)** - Summary of codebase changes (across New Work, Rework, and Maintenance) for the selected time period for the selected teams.
4. **Commits part of PR Merged** - Details on commits that are part of PRs merged into the destination branch, including Lines of Changes, Rework, Maintenance, New Work, and other important information.
5. **Goals** - Targets and the values of the metrics based on the frequency.

These reports will be sent to your mail, please check your spam folder in case you do not receive it within a few minutes.<br>

<div data-with-frame="true"><figure><img src="/files/RWuVfpLEhmbzjgNc3Nm5" alt=""><figcaption></figcaption></figure></div>

If you encounter any issues or have further questions, feel free to contact us at <support@hivel.ai>.


# Meetings Breakdown

The Meetings Breakdown feature provides an overview of your team's meeting schedules, helping you identify if they're overwhelmed by excessive long meetings.

<div data-with-frame="true"><figure><img src="/files/rduk7S71gqCIr7Gg5ieQ" alt=""><figcaption></figcaption></figure></div>

This feature can be accessed while creating a new custom dashboard or by navigating to the custom dashboards page -> selecting any metric -> "Meetings Breakdown" from the dropdown.

<div data-with-frame="true"><figure><img src="/files/qlQYYdNkvt7aSXoZZ9mJ" alt=""><figcaption><p><em>Accessing from another metric screen</em></p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/w5AeIWzaPvRfUE3MV1M9" alt=""><figcaption><p><em>Adding the metric as part of new dashboard creation</em></p></figcaption></figure></div>

#### The total time spent is broken down into the following categories of meetings:

1\. **Deep** - If the gap between two meetings is more than 2 hours, it's considered Deep work. This allows developers to focus on their tasks without interruption. *Ideally majority of the developers' time should be in this category.*

2\. **Shallow** - When the gap between two meetings is less than 2 hours, it's classified as Shallow work, as frequent meetings require context switching.

3\. **Private** - All meetings marked as Private in Google Calendar or personal time blocks fall under this category.

4\. **Team** - These are meetings with three or more people from the same organization.

5\. **External** - Meetings that include at least one person from outside the organization.

6\. **One\_On\_One** - Meetings involving just two people from the same organization.<br>

You can filter this data based on specific teams and dates to gain the insights you need.<br>

If google calendar is not integrated with Hivel yet, please follow the steps mentioned [here](https://hivel.zendesk.com/hc/en-in/articles/19341040186909-How-to-integrate-Google-Calendar-in-Hivel).

If you encounter any issues or have further questions, feel free to contact us at <support@hivel.ai>.


# Understand metric trends with AI Insights

Hivel already shows you the numbers - but now the AI Insights explains what they mean. When you review metrics on the Cockpit board, AI Insights automatically interprets trends and provides context for your team's engineering performance, so you can spend less time asking "why" and more time acting.

<div data-with-frame="true"><figure><img src="/files/hh09fDCDhjAjqAYB9QUw" alt=""><figcaption></figcaption></figure></div>

### How AI Insights works

AI Insights analyzes the data currently selected on your Cockpit board and generates interpretation based on that snapshot. You'll see insights that help you identify patterns, understand performance shifts, and spot early potential bottlenecks

**When you'll see insights:**

* Whenever you view a Cockpit board with time-range or filter selection applied
* For any combination of metrics on your dashboard

**When insights aren't generated:**

* Single-day selections (insufficient data for meaningful trend interpretation)

### What insights include

Insights provide context in two ways:

**Trend interpretation**: Why a metric is moving up, down, or staying flat based on your selected data

**Relative context**: Comparison metrics that help you understand performance in relation to other dimensions (e.g., how a metric compares across teams or time periods)

### Next steps you can take

Once you've reviewed insights on a board, drill into specific dashboards to investigate bottlenecks in more detail or dig deeper into root causes.

### What is required to enable this

Like all the other AI related features - this requires an AI consent for us to start generating these insights.

The AI consent can be enabled in the **Configurations section -> AI -> AI Insights**

<div data-with-frame="true"><figure><img src="/files/9Mx2AW7cvlqO74f39vT5" alt="" width="372"><figcaption><p>In Cockpit, the toggle will enable/disable the insights</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/0kKac7g4V5R1nUniAfCU" alt="" width="563"><figcaption><p>AI Insights toggle in Configuration screen</p></figcaption></figure></div>

### Related articles

* [Understanding your Cockpit dashboard](/using-hivel/cockpit)


# Investment

View the effort breakdown across work item types and investment across epics to ensure they are aligned to business objectives.

The Investment Screen provides a detailed view of your team's efforts as tracked in your project management tool. It is divided into four sections, each offering specific insights into different aspects of your team's work:

[<mark style="color:purple;">**Work Item**</mark>](#h_01hywypcmca37vt49c4764ms90) | [<mark style="color:purple;">**Epic**</mark>](#id-01hywzfvmctbkdjc1x2wn46w6h) | [<mark style="color:purple;">**Product and Allocation**</mark>](#id-01hywzmp6s17w4s3z0h4ks82cj) | [<mark style="color:purple;">**Delivery**</mark>](#id-01hyx089atjhwfc8anp8q73ajw)

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5KAIOUWph0JLSgQqbzyT%2Fuploads%2FjtymE5wbJj6QWo3xJLJQ%2FInvestment.mp4?alt=media&token=ab13d20a-f242-4449-80dc-e09c94275222>" %}

### **Sections:** <a href="#h_01hyx2e4t4s1edt663bwbjq25b" id="h_01hyx2e4t4s1edt663bwbjq25b"></a>

#### **Work Item** <a href="#h_01hywypcmca37vt49c4764ms90" id="h_01hywypcmca37vt49c4764ms90"></a>

* Gain visibility into the volume of work items or story points per sprint and type. This helps you assess whether your team is working within capacity or if there is room for improvement.

<div data-with-frame="true"><figure><img src="/files/tjYf58sxxCnNJ5GIC3tJ" alt=""><figcaption></figcaption></figure></div>

1. **Filter on work item types:** Click on any work item type to filter the graph data for only that type. The available types will be based on the items created in your Jira project and board.

<div data-with-frame="true"><figure><img src="/files/4UBIM2IDf5IiND2yewzk" alt="" width="563"><figcaption></figcaption></figure></div>

2. **Sprint-level drilldown:** Click on a particular sprint bar to view detailed fields of each Jira work items within that sprint.

<div data-with-frame="true"><figure><img src="/files/gLpBacO6dG890R0D3F8G" alt=""><figcaption></figcaption></figure></div>

3. **Filter to identify missing hygiene:** You can apply additional filters such as "Missing Epics," "Missing Assignee," and "Missing Story Points" to identify work items with missing hygiene and ensure they are updated for proper tracking.

{% hint style="info" %}
All the sections in Investment follow a similar above behaviour of filtering on work item type, sprints and arriving at the drilldown.
{% endhint %}

#### **Epic** <a href="#id-01hywzfvmctbkdjc1x2wn46w6h" id="id-01hywzfvmctbkdjc1x2wn46w6h"></a>

* This section provides visibility into the volume of tickets and story points at both the Epic and sprint levels. It helps you understand the efforts spent on specific Epics within each sprint.
* Similar to the Work Item section, you can drill down into items by clicking on a sprint and filter by selecting a particular Epic from the available options.

<div data-with-frame="true"><figure><img src="/files/8f7gb7FJWcedNHcj5cYI" alt=""><figcaption></figcaption></figure></div>

#### **Product and Allocation** <a href="#id-01hywzmp6s17w4s3z0h4ks82cj" id="id-01hywzmp6s17w4s3z0h4ks82cj"></a>

Hivel's Products and Allocation sections helps you see where your team's efforts are going. It shows how resources are split across your products through Jira tickets. By mapping your custom Jira labels in Hivel, you can get a clear picture of this distribution and make smarter investment decisions.

<div data-with-frame="true"><figure><img src="/files/VY8knaP4zLKXkHuaC8b6" alt=""><figcaption><p><em>Products section</em></p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/gKsII1tv5jVIK8QtPPuz" alt=""><figcaption><p>Allocation</p></figcaption></figure></div>

For more information on how to set up this functionality, please refer to [<mark style="color:purple;">this article</mark>](/using-hivel/investment/how-to-set-up-products-and-allocation-tabs-in-the-investment-screen).

#### **Delivery** <a href="#id-01hyx089atjhwfc8anp8q73ajw" id="id-01hyx089atjhwfc8anp8q73ajw"></a>

The **Delivery Accuracy** graphs offer insights into the completion rate of planned efforts within a sprint and highlight any unplanned items that were addressed, as well as any delays encountered.

<div data-with-frame="true"><figure><img src="/files/ZMDNIwDjquVnxmbTxspp" alt=""><figcaption></figcaption></figure></div>

The delivery bar chart data is categorized into two main sections: Completed and Spillover. Each section is further divided into Planned and Unplanned.

* **Completed** : Work Items/Story Points completed before the sprint closes.
* **Spillover** : Work Items/Story Points not completed by the time the sprint closes.
* **Planned** : Work Items/Story Points created before the sprint starts.
* **Unplanned** : Work Items/Story Points created after the sprint starts.

#### **Delivery Trend** <a href="#h_01hzf0crtvgz5rkv4ha91qk0bk" id="h_01hzf0crtvgz5rkv4ha91qk0bk"></a>

<div data-with-frame="true"><figure><img src="/files/WYn0kRa8NurfeETdGmg8" alt=""><figcaption></figcaption></figure></div>

The **Delivery Trend** chart helps you track and evaluate your team’s sprint execution by combining two key metrics:

1\. **Say-Do Ratio**

This measures the accuracy of sprint planning by comparing what was **committed at the start of the sprint** to what was **actually delivered**.

* **Formula:**\
  `(Work Delivered from Sprint Start / Work Committed at Sprint Start) × 100`
* **What it means:**
  * A **high Say-Do Ratio** (>100%) could indicate **significant ad-hoc work** is being added and completed, possibly reducing focus on planned items.
  * A **low Say-Do Ratio** (<100%) suggests that the team is **overcommitting** or **facing blockers**, pointing to potential areas where expectations or planning should be adjusted.

***

2\. **Delivery Rate**

This measures how much of the **total work taken up during the sprint -** both planned and ad-hoc - was actually delivered.

* **Formula:**\
  `(Total Work Delivered / Total Work Taken Up in Sprint) × 100`
* **What it means:**
  * Always shown as a percentage out of 100%.
  * A **high Delivery Rate** indicates effective throughput, regardless of how work entered the sprint.
  * A **low Delivery Rate** may signal capacity issues, scope creep, or blockers mid-sprint.

***

#### 🧠 Why Both Metrics Matter

When used together, **Say-Do Ratio** and **Delivery Rate** provide a fuller picture of sprint health:

* If both metrics are **high**, the team is likely performing well and adapting effectively.
* If **Delivery Rate is high but Say-Do Ratio is low**, the team is completing work but not sticking to the original plan (possible unplanned work).
* If **both are low**, the team may be overcommitting or facing blockers that need investigation.
* If **Say-Do Ratio is high but Delivery Rate is low**, it might indicate too much ad-hoc work was started but not completed.

Use these insights to improve sprint planning, manage expectations, and identify areas where the team may need support or process adjustments.

***

### **Filters:** <a href="#h_01hzf0crtvgz5rkv4ha91qk0bk" id="h_01hzf0crtvgz5rkv4ha91qk0bk"></a>

In each of the sections, there are certain filters that can be applied to reflect only the relevant data:

* **Boards/Sub boards** : Boards refer to Jira Projects and Sub boards refer to the boards inside a Jira project. You can select only one Board at a time, but you can select any number of Sub boards within that Board. All subsequent filters will apply on the selected Boards/Sub board filter.
* **Sprints** *(only for Work Item, Epic, and Delivery sections)* : Use this filter to display data based on specific sprints. By default, the latest 5 sprints will be selected.
* **Assignees** *(only for Work Item, Epic, and Delivery sections)* : To filter out data for the Assignees of Jira tickets.
* **Tickets/Story Points** : Choose to view the data as either the count of tickets or the sum of story points.
* **Date filter** (*only for Product and Allocation sections)* : Filter the Product and Allocation data for a specified time period.

&#x20;

For more information or assistance, please contact our support team at [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).


# Work Item Age

**Work Item Age** is a key metric that provides insight into how long it takes for a team to resolve a ticket/item, from its creation to its completion.

{% hint style="info" %}
**Formula:**

Work Item Age = Completion Date - Creation Date
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/BTtAdkv87WVAJBQDcMd8" alt=""><figcaption></figcaption></figure></div>

#### **Example**:

* **Creation Date**: August 1, 2024
* **Completion Date**: August 5, 2024
* **Work Item Age**: 4 days

#### Why Is Work Item Age Important?

Work Item Age is a critical metric for several reasons:

* **Team Efficiency**: A lower Work Item Age indicates that your team is resolving issues quickly, which is a sign of efficiency. A higher Issue Age might suggest bottlenecks or delays in the workflow that need to be addressed.
* **Customer Satisfaction**: For customer-facing teams, reducing Work Item Age is essential. Faster resolution times lead to higher customer satisfaction and a better overall experience.


# How to set up Products & Allocation tabs in the Investment Screen?

Hivel's Products and Allocation feature helps you see where your team's efforts are going. It shows how resources are split across your products through Jira tickets. By mapping your custom Jira labels in Hivel, you can get a clear picture of this distribution and make smarter investment decisions. Let’s walk through how to set this up.

<div data-with-frame="true"><figure><img src="/files/YQmDC7xUmgqfKbzlDEnw" alt="" width="563"><figcaption><p><em>Product section</em></p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/NtOepHfHW7Egd68TVoQz" alt="" width="563"><figcaption><p><em>Allocation section</em></p></figcaption></figure></div>

#### &#x20;**To populate the graphs**, Hivel requires information about two custom fields:

* **Product/Projects:** This field categorizes work into distinct product lines or projects in ways you may want to monitor effort spread across projects. Examples include Payments, Data Engineering, Checkout, AI, and Compliance.
* **Work Type:** This field categorizes tasks based on their nature or purpose such as OKRs, initiatives and more. Examples include Roadmap, Tech Debt, R\&D, Customer Success, KTLO (Keep the Lights On), etc.

<div data-with-frame="true"><figure><img src="/files/E7tloNDVRjAvAjfQjAD3" alt="" width="329"><figcaption></figcaption></figure></div>

These custom fields enable better organization and tracking of tasks within the Hivel platform, allowing teams to effectively manage their work and visualize progress across different product lines and types of work.

Please note that we can use any name for the above that you may be or prefer using internally.

{% hint style="info" %}
If you don't have the custom fields set up on Jira yet, you can [<mark style="color:purple;">**follow the instructions here**</mark>](/using-hivel/investment/how-to-add-custom-fields-for-product-and-allocation-label-in-jira) to create them.
{% endhint %}

**Once you have custom fields**, follow these steps:

1. **Go to Settings screen**
2. Under Investment Configuration, set the 2 custom fields for Product and Allocation.<br>

   <div data-with-frame="true"><figure><img src="/files/s1IRQxa8foYmcriFEp75" alt=""><figcaption></figcaption></figure></div>

That's it, all done!

The new data will be within 24 hours.

In case the data does not show up, please reach out to [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).


# How to add Custom fields for Product and Allocation Label in Jira

Here are the steps to add custom fields in Jira to map Product and Allocation Label in Hivel:-

1. &#x20;**Access Jira Administration**: Log in to Jira as an administrator.
2. After successful login, go to the **Settings** (gear) icon in the top right corner near the profile and click on it. Then, select "Issues" from the dropdown.

   <figure><img src="https://hivel.zendesk.com/hc/article_attachments/17619139344669" alt="" width="375"><figcaption></figcaption></figure>
3. **Navigate to Custom Fields**: After clicking on "**Issues**" on the left the side panel, under the fields there is "**Custom fields"**, click on it.

   <figure><img src="https://hivel.zendesk.com/hc/article_attachments/17619139345949" alt="" width="188"><figcaption></figcaption></figure>
4. **Select Field Type:** Now you will be redirected to select field type; you can select any of the following field types "Select List(single choice)" or "Short Text(plain text only)." Jira offers various types such as text field, select list, date picker, etc.

   <figure><img src="https://hivel.zendesk.com/hc/article_attachments/17619139349405" alt="" width="375"><figcaption></figcaption></figure>
5. **Configure the Field:** Provide a name for the custom field and configure any additional options based on the field type you selected. For example, if you're creating a dropdown select list, you'll need to define the list of options.

   <figure><img src="https://hivel.zendesk.com/hc/article_attachments/17619125679389" alt="" width="375"><figcaption></figcaption></figure>
6. **Associate with Screens:** Choose the screens where you want the custom field to appear, preferably all screens, so select all. Screens determine where the field will be displayed when users create or edit issues and update.
7. **Add to Projects:** Now, in the left panel, Click on "Project Settings" and drag and drop all the projects that need those custom fields.

**Note:** Repeat the above steps to create additional custom fields if needed. After creating the custom fields, you can add them to the details of the Jira ticket to capture relevant information.


# Pull Request

Pull Requests are the holy grail of any software development process, and getting a 360-degree view into them, and the ability to filter to see the PRs that may require your attention is necessary.

### You can use data on this screen to:

* Consistently get a view of the process, proactively coach the team and remind them of your best practices or SLA.
* Show the reviewer reviewing most PRs and schedule a knowledge-sharing session.
* Look at the PRs that are open for longer, and clear roadblocks to push them to production.&#x20;
* If your average cycle time is higher than expected, you can look at the PRs or engineers swinging the most toward this number.

### Graphical view

The graphical view shows five trend charts that help you spot patterns over time.

<div data-with-frame="true"><figure><img src="/files/txnMIMjZN4Lz5i9vQoqz" alt=""><figcaption></figcaption></figure></div>

#### PR Overview

Shows the number of PRs opened and PRs merged per time interval. Use this to track throughput trends and see whether your team is keeping up with review demand or building up a backlog.

#### PR Size vs Review Time

Compares PR size categories (small, medium, large, extra-large) against the average review time for each size band. Use this to understand whether larger PRs are slowing down your review process.

<div><figure><img src="/files/vpz8laElPwfTXi10oxRZ" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="/files/jCCMJH425JaZ4XTwxN5B" alt="" width="563"><figcaption></figcaption></figure></div>

#### Cycle Time Analysis

Shows how many PRs exceeded the cycle time threshold (default: 5 days) in each time interval.

#### Unaccounted PRs

Shows merged PRs with no linked Jira or ClickUp ticket over time - a signal for work that isn't being tracked in your project management tool.

#### Top Modified Repos

Shows the most active repositories by PR count, with each bar broken down into New Work, Rework, and Maintenance categories. Use this to spot repos with unusually high maintenance or rework ratios.

<div data-with-frame="true"><figure><img src="/files/Bn9bYtn6bmJ25L8Kcvcq" alt=""><figcaption></figcaption></figure></div>

### Tabular View

#### Major metrics and what they mean

<div data-with-frame="true"><figure><img src="/files/0bHm1pBNHenWxr37KZrQ" alt=""><figcaption></figcaption></figure></div>

1. **Release Merge Frequency** is the total number of PRs merged to release branch in that selected time period/total number of days in the selected time period.
2. **Hotfix Rate** is the number of hotfix PRs merged to release branch over the total number of PRs merged to release branch.
3. **Hotfix Resolution Rate** shows the average cycle time of the hotfix PRs.
4. **Unreviewed PRs** gives the number of PRs that were merged without any approval.

#### **Other metrics and filters:**

<div data-with-frame="true"><figure><img src="/files/8vXgOW38E4v2O7lTUcTV" alt=""><figcaption></figcaption></figure></div>

* **Unaccounted Work** includes all PRs that are not linked to Jira or any other project management tool's tickets.
* **Ready to Review** shows all PRs that are open and are pending a review or approval.
* **Ready to Merge** shows all PRs that have been approved and are awaiting merge.
* **PRs > 400 LoC** helps you track larger PRs over a certain number of lines of code in the selected time period. The larger the PR, the slower it moves through the review cycle and the higher the probability of bugs.&#x20;
  * The threshold of 400 LoC is modifiable from Configurations screen.
* **Cycle time > 5 days** shows all PRs merged in that time period with cycle time greater than 5 days.
  * The threshold of 5 days is modifiable from Configurations screen.
* **Flashy Review** is used to identify PRs which were reviewed very fast and indicate ineffective review. By default PRs > 200 LoC with a review time < 5minutes, are considered flashy, [<mark style="color:purple;">but this is configurable</mark>](/configurations/branch-configurations#flashy-review).

<div data-with-frame="true"><figure><img src="/files/Iv06TJW7cVFEJS9YDJcu" alt="" width="93"><figcaption></figcaption></figure></div>

* By default, the PRs are filtered are based on the author of the PR which is filtered on the Teams and User filter - but this can be adjusted in the PR screen by selecting "Reviewed By" or "Closed By".


# Comments Categorization

**Explainer Video:**

{% embed url="<https://www.loom.com/share/9817f8d8d624425882eb19e30189368b?sid=6c0f130c-e80c-43db-ac3a-c10cd0542667>" %}

The "Comments Category" column in the Pull Requests tab is an AI-powered feature that automatically analyzes and categorizes comments into specific labels based on their content.

This feature helps you quickly understand the overall sentiment and focus of the comments within each pull request, making it easier to address issues and manage code reviews.

&#x20;

**We categorize the Pull request in the below categories:**

#### <mark style="color:purple;">**Type 1:**</mark>

* ***LGTM**:* PRs that are merged without significant issues or objections i.e. comments indicating approval, positive feedback on the implementation, or minor suggestions that are quickly addressed without major revisions.
  * *For example, "Great job! This looks perfect and works as expected."*<br>
* ***Refactor**:* PRs that need significant changes to improve code quality or structure before they can be merged i.e. comments suggesting extensive changes, restructuring, or optimization of the code.
  * *For example, "The algorithm here can be optimized for better performance."*<br>
* ***Buggy**:* PRs that introduce new bugs or issues into the codebase i.e. comments highlighting bugs, regressions, or issues that break existing functionality.
  * *For example, "This change breaks the login functionality."*<br>
* ***Controversial**:* PRs that generate significant debate or disagreement among reviewers i.e. comments that show differing opinions or disputes on the implementation, approach, or necessity of the changes.
  * *For example, "I don't think this approach is the best solution."*

#### <mark style="color:purple;">**Type 2:**</mark>

* ***Code Quality**:* Comments focused on the overall design, architecture, and cleanliness of the code i.e. feedback related to code organization, modularity, adherence to design patterns, and overall structural improvements.
  * *For example, "This module should be broken down into smaller, more manageable components."*<br>
* ***Readability**:* Comments aimed at improving the readability of the code and the adequacy of its documentation i.e. feedback about code clarity, naming conventions, comments within the code, and the presence and quality of documentation.
  * *For example, "Variable names should be more descriptive."*<br>
* ***Testing**:* Comments that address the sufficiency and quality of tests and error handling mechanisms. Suggestions or concerns regarding unit tests, integration tests, error handling, edge cases, and the robustness of the code against failures.
  * *For example, "Error handling is not sufficient here; consider adding more checks."*<br>
* ***Compliance**:* Comments that ensure the code adheres to industry standards, coding guidelines, and best practices i.e. feedback on adherence to coding standards, security practices, regulatory compliance, and the use of recommended libraries or frameworks.
  * *For example, "This code doesn't comply with our security guidelines."*<br>
* ***Maintainability:*** Comments that focus on the long-term maintenance and scalability of the code. Suggestions for making the code easier to maintain, extending its functionality, or improving performance to handle larger scale or more complex operations.
  * *For example, "This code will be hard to maintain; consider refactoring."*

#### <mark style="color:purple;">**Type 3: Special Cases for Categorization:**</mark>

* When a comment consists of a single word, it is categorized as a *"**One Word Comment**"*.
* If a pull request has no comments, it is categorized as *"**No Comment**"*.
* When a pull request cannot be categorized based on its comments due to various reasons, it is categorised as ***"No Value"***.

&#x20;

**Wherever applicable, each PR will be categorized into either one or two of the above types. For example -**&#x20;

* "Looks good to me. Well done on keeping the code clean and efficient!"
  * Categories: ***LGTM, Code Quality***
* “Consider refactoring this function to reduce its complexity and improve readability.”
  * Categories: ***Refactor, Readability***
* “There's a bug in the validation logic. Please fix it before merging”
  * Categories: ***Buggy***
* "Looks good to me. Well done on keeping the code clean and efficient!"\
  "Can you add more comments to this section for better understanding?"
  * Categories: ***LGTM, Readability***
* "There's a bug in the validation logic. Please fix it before merging."\
  "Make sure to add unit tests to cover this scenario."
  * Categories: ***Buggy, Testing***

<div data-with-frame="true"><figure><img src="/files/eXaEbvD8GsTnVdAYjvE1" alt="" width="160"><figcaption><p><em>Examples</em></p></figcaption></figure></div>

**Please note:** For this feature to work, we process the metadata through AI.

&#x20;

If you cannot see this column in the Pull Request screen, please contact our support team at [<mark style="color:purple;">support@hivel.ai</mark>](https://support@hivel.ai/)


# Review Cycles

A review cycle is defined as the sequence of comments and commits within a PR. Each cycle is counted when a comment or request for change is followed by a commit or approved by someone. This cycle can repeat multiple times, indicating multiple review cycles within the same PR.

<div data-with-frame="true"><figure><img src="/files/AwVJNPkvgxsWU6vVPrJg" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
*This field can be found in the PR screen as a column.*
{% endhint %}

Understanding the review cycle count helps in assessing the thoroughness and efficiency of the review process. High review cycle counts might indicate thorough reviews or potential issues in the code requiring multiple revisions, whereas low counts might suggest either fewer issues or potentially less thorough reviews.

#### Below is the explanation on how it gets calculated:

1\. **Review Cycle = 0**\
&#x20; \- If a pull request has neither comments nor approval, the review cycle count is 0.

2\. **Review Cycle = 1**\
&#x20; \- If a pull request has been approved with or without comments, the review cycle count is 1. This accounts for the fact that some form of review has taken place (the approval), even if no comments were left.

***`Example`***  A PR is created and a reviewer approves it without leaving any comments. Then review cycle count is 1 because the PR was reviewed (approved) even though no comments were made.

3\. **Review Cycle is more than 1**\
&#x20; \- For pull requests with both comments and commits, the review cycle count is calculated based on the number of comment-commit pairs. Each sequence where a comment is followed by a commit is counted as one review cycle. This means that for each set of comments followed by a commit, the review cycle count increases.

***`Example`*** A PR is created, and a reviewer leaves comments. The developer makes changes and commits those changes. This sequence repeats.\
&#x20;            \- ***Result***: The review cycle count is incremented for each comment-commit pair.\
&#x20;            \- 1st Cycle: Reviewer comments -> Developer commits changes (Cycle 1)\
&#x20;            \- 2nd Cycle: Reviewer comments again -> Developer commits changes again (Cycle 2)\
&#x20;            \- The review cycle count is the number of these comment-commit sequences.

&#x20;

If you encounter any issues or have further questions, feel free to contact us at [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).


# How to exclude outlier commits and PRs?

Are some known outliers (like extra large commits) skewing your average metrics? Fear not, you can exclude them from your reports easily. Here's how -&#x20;

Click the **Exclude button**<img src="/files/cIh14iyZ8BEnyiATLqqR" alt="" data-size="line"> on the&#x20;

* right panel in Process screen to exclude a PR.
* right panel in Coding screen to exclude a Commit.
* "PR size" column in Pull Request screen to exclude a PR.

<div data-with-frame="true"><figure><img src="/files/JGVjcUOhpLf0qQcJYrtj" alt="" width="272"><figcaption></figcaption></figure></div>

* All screens will be **updated instantly**. Only Cockpit will take 24 hours to reflect the change.
* You can also **include** a PR/commit after it's been excluded by clicking on the<img src="/files/RBNFzzOpe9E82feSZDUY" alt="" data-size="line">icon in the **Excluded Items** section in Settings page.

<div data-with-frame="true"><figure><img src="/files/kdTOIVHo2mtfzYYmYMB1" alt="" width="340"><figcaption></figcaption></figure></div>


# Process Flow

The Process Flow Screen in Hivel gives you a visual breakdown of your cycle time—from writing code to merging it into production. This view is designed to help you identify bottlenecks, track engineering efficiency, and make data-driven improvements.

{% embed url="<https://app.storylane.io/share/6fzb73xo4wl8>" %}

### 🔍 View the PRs Behind Any Metric

Click on any metric to instantly see the pull requests contributing to it.\
Noticed a spike? Just click on that time frame to view the PRs involved.

### **Dive Into PR Details**

Drill down into you version control and see the tickets associated with the PR. This gives you a clear picture of where time is being spent and who’s involved.

### ⚠️ Identify Bottlenecks

See how long each stage took for a specific PR. This helps you pinpoint where delays occur - whether it's extended coding time, slow reviews, or lag in merging.

### 🧹 Clean Up Outliers

If a spike is expected or due to a known outlier, you can **exclude specific PRs** from the board. This ensures your averages stay accurate and meaningful.<br>

**You can use data on this screen to:**

* See the stage at which your team is spending most of their time - coding, review, or release process.
* Averages could sometimes be deceiving, so check the right panel for all the PRs and their respective breakdown into various stages.
* You can look at your current sprints or past sprints and use this data during retrospectives.

{% hint style="info" %}
Refer [<mark style="color:purple;">here</mark>](/using-hivel/pull-request/how-to-exclude-outlier-commits-and-prs) to know how to exclude certain PRs and commits from the calculation.
{% endhint %}


# Goals

## 🎯 Using Goals in Hivel

The **Goals** feature in Hivel helps you set clear targets, track progress, and assess performance at both the **organization** and **team** levels. Whether you're aligning teams around strategic objectives or tracking key performance metrics, Goals provides the visibility and accountability to stay on track.

<div data-with-frame="true"><figure><img src="/files/iZjB4fvd3shbKi94pbiA" alt=""><figcaption></figcaption></figure></div>

***

### 📍 Where to Find Goals

You can access Goals Pro from the main navigation:

> **Overview → Goals (pro)**

***

### 🏢 Creating an Organization-Level Goal

<div data-with-frame="true"><figure><img src="/files/ZYnJ6yduo00RAubOL1XM" alt="" width="375"><figcaption></figcaption></figure></div>

1. Navigate to the **Goals (pro)** page.
2. Click **Set Goals**.
3. Select a **frequency**:
   * Monthly
   * Quarterly
4. Select the metrics you want to track by clicking on them.
5. Enter your **target value** for each metric.
   * The initial value will also be available for reference - the initial value of a metric is calculated by taking into account the time period of last completed quarter or last completed month, based on the frequency selected.
   * If industry benchmark data is available, it will appear here for comparison.
6. Click **Save & Continue**.

***

### 👥 Creating a Team-Level Goal

Follow the same steps as above, with one addition:

* **Select the team** the goal applies to.

***

### 📊 Viewing Progress

<div data-with-frame="true"><figure><img src="/files/iZjB4fvd3shbKi94pbiA" alt=""><figcaption></figcaption></figure></div>

The Goals dashboard displays real-time progress for each metric:

* **Metric Name**
* **Initial Value** (at the start of the goal)
* **Current Value**
* **Target Value**
* **Progress:**

<div data-with-frame="true"><figure><img src="/files/J58UpfW2VpOW1RpAAMy8" alt="" width="330"><figcaption></figcaption></figure></div>

***

### ✏️ Modifying Goals

<div data-with-frame="true"><figure><img src="/files/8AQN16YD7PZrK1WgHwpd" alt=""><figcaption></figcaption></figure></div>

You can update ongoing goals:

1. Open the goal's dashboard.
2. Click **Modify Goal**.
3. Update existing metric values or add new metrics.

   > ⚠️ **Note:** You cannot change the goal’s duration.

***

### 🗑️ Deleting Goals

<div data-with-frame="true"><figure><img src="/files/LA4MPijXfpFJYce3qg4R" alt="" width="161"><figcaption></figcaption></figure></div>

Only **ongoing goals** can be deleted:

1. Open the goal dashboard.
2. Click **Delete Goal**.
3. Confirm deletion when prompted:\
   \&#xNAN;*“The goal set will be completely deleted and cannot be retrieved. Are you sure you want to proceed?”*

> ⚠️ **Warning:** This action is permanent and will remove all associated metrics.

***

### ⏳ View History of the past goals and performance

<div data-with-frame="true"><figure><img src="/files/ti9nwFM8NOsy0Lyz6UjT" alt="" width="274"><figcaption></figcaption></figure></div>

Through this, you will be able to see what were the previous months/quarters goals and how much progress was made towards those goals.

<div data-full-width="true"><figure><img src="/files/2d1YsLyvylZggYXYjYpz" alt=""><figcaption></figcaption></figure> <figure><img src="/files/JofFFomaetsWSele83r4" alt=""><figcaption></figcaption></figure></div>

To download the goals and their progress into an excel, you can do that through the [Download Reports section](/using-hivel/cockpit/how-to-download-reports) under Settings.


# Coding

As we all may agree that engineering productivity cannot be measured by lines of code, it’s important to gain visibility into the percentage of code spent across various categories - **New Work**, **Maintenance**, and **Rework**.

<div data-with-frame="true"><figure><img src="/files/ojsH8U7hdP3wsJFOJ8kk" alt="" width="563"><figcaption></figcaption></figure></div>

### **Every line of code is classified into 3 categories, as explained below:**

#### New Work

New Work is the amount of work newly created, or in other words launching new features. Every new line of code that’s written is called New Work and this measures the innovation percentage spent by the team.

**How to use this data on a regular basis?**

* When the business is aiming to focus on innovation, watch out this space if the efforts are being put in the right direction
* Do you have a complex legacy project and delivering new features is being delayed? This metric can show you to make your strategic move.

#### Rework

Rework as the name suggests is working on something, and then modifying or deleting it. But, there’s a catch. Anything we build ought to be modified/deleted, but doing so within 30 days of writing the code originally is what’s classified as rework.

Why 30 days? Most agile teams have a 2 - 3 week sprint cycle and a code rewritten within 30 days can cover all possible cases of rework listed here.

**What are the causes for rework?**

* You write it first, and then polish it for performance or ease of maintenance
* Fix features based on bugs reported in QA or Prod
* Deliver the feature and then learn about changing scope or requirements
* Or, something works on your local, but throws errors when integrated with systems

While a certain amount of rework is normal for any team, watching out for increased rework in a given time can help address issues earlier in the process.

#### Maintenance

Maintenance or refactoring or tech debt is required for any teams and is classified as code that’s modified/deleted which was originally written prior to 30 days.

While most teams take time to work on tech debt, it’s inevitable to modify some old code while building new features. It’s helpful to watch the repos/projects causing most maintenance, monitor ROI of such projects and take up corrective actions.&#x20;

**What are the causes for maintenance?**

* Complex architecture can make building new features harder without touching old code
* Update applications to newer technologies or changing business requirements
* Reduce code-bloat by removing unnecessary features/code that’s not in use anymore.

{% hint style="info" %}
For a more detailed explanation on how New Work, Rework, and Maintenance work, please refer to [<mark style="color:purple;">**this article**</mark>](/using-hivel/coding/understanding-rework-new-work-and-maintenance).
{% endhint %}

***

#### **How to use this data on a regular basis?**

The first step is to baseline the numbers for each team to see the percentage of new work, rework, maintenance and collaboration. And then, monitor for trends to see if the team’s work is reflecting your initiatives and goals.

#### **What can be a few things to watch out for?**

High maintenance could be a signal for tech debt. High rework can be a signal to demand better requirements.

{% hint style="info" %}
Refer [<mark style="color:purple;">here</mark>](/using-hivel/pull-request/how-to-exclude-outlier-commits-and-prs) to know how to exclude certain PRs and commits from the calculation.
{% endhint %}


# Understanding Rework, New Work, and Maintenance

Key Scenarios Explained

First let us understand what does each of the metric mean:

#### **Maintenance**:

Maintenance is the lines of code modified that were written before the last 30 days. This is also synonymous with Refactor or Tech Debt.

<pre><code><strong>Maintenance Percentage =
</strong>(lines of code modified that were written prior to 30 days) / (total lines of code
added or modified)
</code></pre>

* It is 30 days by default but is configurable in the settings page.

#### **Rework**:

Rework refers to the changes made to code that was initially written within the last 30 days. It provides insights into the stability and quality of recent code changes. This can usually happen due to developer fixing QA bugs or responding to PR review feedback.

<pre><code><strong>Rework Percentage =
</strong>(lines of code modified that were written in the last 30 days) / (total lines of 
code added or modified)
</code></pre>

#### **New Work**:

It shows the total lines of code added or modified.

<pre><code><strong>New Work Percentage =
</strong>(lines of code that were written in the specified duration) / (total lines of code 
added or modified)
</code></pre>

### Here are some scenarios to help you understand the differences between Rework, New Work, and Maintenance (for the examples we will consider "T" as today):

### <mark style="color:purple;">**Scenario 1:**</mark> 2 lines of code were removed and replaced by 5 lines <a href="#id-01hz4dqp1y4x0eje94b53x3v07" id="id-01hz4dqp1y4x0eje94b53x3v07"></a>

**Before: T**

```javascript
let a = 10;
let b = a * 2;
```

**After: T + 10**

```javascript
let a = 10;
let b = 0;
if (a > 0) 
    b = a * 2;
else 
    b = 1;
```

**Rework** : **2**, since the lines were deleted/modified within 10 days

**New Work** : **5**, since in total 5 lines were added to the code

**Maintenance** : **0**

### <mark style="color:purple;">**Scenario 2:**</mark> 3 lines are added in before 1 line (the original 1 line is moved to last) <a href="#id-01hz4f1q3cfdemgyeh7vzw64p9" id="id-01hz4f1q3cfdemgyeh7vzw64p9"></a>

**Before: T**

```javascript
let total = 100;
```

**After: T + 60**

```javascript
let discount = 10;
let tax = 5;
let subtotal = 90;
let total = 100;
```

**Rework** : **0**, since there are no modifications in the existing lines of code

**Maintenance** : **0**, since there are no modifications in the existing lines of code

**New Work** : **3**, these are fresh lines of code and no changes were made to the existing lines, it will only be considered in New Work and not Rework or Maintenance.

### <mark style="color:purple;">**Scenario 3:**</mark> <a href="#id-01hz4f3g1bc8z1k9hs0qp4r6xk" id="id-01hz4f3g1bc8z1k9hs0qp4r6xk"></a>

***Case 1: Five lines of code were written 5 months ago and were modified today.***

***Case 2: Additional changes will be made to the same lines 10 days from now.***

* For the first case, since the original code was written 5 months ago, it will be considered as Maintenance.
* For the second case, since it is an updated version of the code and changes were done >10 days ago, it will be considered as Rework.

### <mark style="color:purple;">**Scenario 4:**</mark> A whitespace was added to one line, and the code was indented on another line <a href="#id-01hz4swzvwrph0fdx0d08gqbzn" id="id-01hz4swzvwrph0fdx0d08gqbzn"></a>

**Before: T**

```javascript
if(a > b){
    return a;
}
```

**After: T + 80**

```javascript
if (a > b) {  // Added a whitespace between 'if' and the parenthesis
        return a;   // Indented this line by an extra tab
}
```

**Rework** : **0**, whitespaces and indentations do not get considered as change

**Maintenance** : **0**, whitespaces and indentations do not get considered as change

**New Work** : **0**, since there were no additions to the lines

### <mark style="color:purple;">**Scenario 5:**</mark> I made some changes in .settings file, will those also be tracked in calculation? <a href="#id-01hz4t84g0wgrdwqfaaxbq27n6" id="id-01hz4t84g0wgrdwqfaaxbq27n6"></a>

* For our processing and calculations, we automatically exclude files and directories that start or end with the following: `.settings`, `dist`, `tmp`, `out-tsc`, `node_modules`, `bower_components`, `.idea`, `typings`, `.vscode`, `vendor/`, `coverage`.
* Additionally, if any files contain the following in their paths, they are also excluded: `src`, `assets`, `images`.
* All of these options can be adjusted on the settings page, where you can also specify additional files to be excluded.

### <mark style="color:purple;">**Scenario 6:**</mark> 1 word from 1 line was deleted <a href="#h_01hz4brgza025dfbjhbgdbhq0j" id="h_01hz4brgza025dfbjhbgdbhq0j"></a>

**Before: T**

```javascript
let greeting = "Hello, World!";
```

**After: T + 20**

```javascript
let greeting = "Hello!";
```

**Rework** : **1**, since modification was made to code within 20 days

**New Work** : **1**, since any change other than a complete line deletion is considered an edit

**Maintenance** : **0**

### <mark style="color:purple;">**Scenario 7:**</mark> 1 word from 1 line was deleted and replaced with another 1 word <a href="#id-01hz4d53q9h8pdw61zhfvw3dmf" id="id-01hz4d53q9h8pdw61zhfvw3dmf"></a>

**Before: T**

```javascript
let greeting = "Hello, World!";
```

**After: T + 60**

```javascript
let greeting = "Hello, Everyone!";
```

**Rework** : **0**, since no modifications were made within Rework period

**Maintenance** : **1**, since modifications were made to code post the Rework period of 30 days

**New Work** : **1**, since each character replaced or added in any line of code is considered as New Work

### <mark style="color:purple;">**Scenario 8:**</mark> 2 words from 1 line were deleted and replaced by 1 word <a href="#id-01hz4dchyakhr9r41defvf0fnz" id="id-01hz4dchyakhr9r41defvf0fnz"></a>

**Before: T**

```javascript
let status = "Task is pending";
```

**After: T + 5**

```javascript
let status = "Pending";
```

**Rework : 1**

* since modifications were made to the code within the Rework period of 30 days
* the LoC changed is 1 since we only consider the lines of code where changes were made, not the number of characters

**New Work** : **1**, since something was added to the line of code

**Maintenance : 0**

### <mark style="color:purple;">**Scenario 9:**</mark> 3 words were added towards the end of 1 existing line of code <a href="#id-01hz4dfqx1qn71x5jryhzcgjrg" id="id-01hz4dfqx1qn71x5jryhzcgjrg"></a>

**Before: T**&#x20;

```javascript
let message = "Hello";
```

**After: T + 90**

```javascript
let message = "Hello, how are you";
```

**Maintenance** : **1**

* since modifications were made to the code post the Rework period
* even though the code was added at the end, it is still part of a line of code and therefore will be considered as a change.

**New Work** : **1**, since something was added to the line of code

**Rework : 0**

&#x20;                                                                                                                                                                      &#x20;

For more information or assistance, please contact our support team at [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).


# Team Pulse

(formerly known as the Activity screen)

Make your standup calls more effective, data-driven, and short - saving time for everyone on the call. If you can save 15 mins of your standup call with a team of 8, that’s the bandwidth of an extra full resource to build your next big thing.

{% embed url="<https://app.storylane.io/share/xtn71m2ww1ka>" %}

This screen gives you a bird’s eye view of all the activity by your team, allowing you to see any traces of burnout or disproportionate workloads, anticipate risks like disengagement signals, by the amount of activity done, and see patterns based on previous weeks.

#### **You can use data on this screen to:**

* Make your stand up calls more effective by seeing what happened already, rather than asking the team during the call
* Make your retros more data driven by identifying patterns like burnout, idle time waiting for requirements or QA reports
* Monitor your average commits per week to get a sense of trends
* Monitor active engineer days to identify their flow zones and peak days

#### **Metrics and what they mean**

<div data-with-frame="true"><figure><img src="/files/GH7p5t6fjflV6wBi9YRN" alt=""><figcaption></figcaption></figure></div>

* **Active Days** is a good metric to see how many days per week your team is actively engaged in commits or PR-related activities. Engineers without any activity are excluded from this metric and shown separately.
  * Refer [<mark style="color:purple;">**here**</mark>](/metrics-and-definitions/throughput/how-are-active-days-calculated) for calculation of active days.
* **Avg. commits** filters out only the commits and shows the trend and patterns in workload.
* **Inactive Engineers** can clearly show if any engineers are working on non-programming activities like design, architecture, or off from work for that duration.
* **Commits**: Shows all regular commits done by the user within the selected date period.
* **Merge Commits**: Displays merge commits done by the user in the selected date period.
* **PRs Open**: Filters out the PRs that were opened by the user within the selected date period.
* **PRs Reviewed**: Lists the PRs reviewed by the user during the selected date period.
* **PRs Merged**: Shows the PRs merged by the user within the selected date period.
* **PRs Declined**: Filters out the PRs that were declined by the user in the selected date period.


# Dev360

Get a 360 degree view of the developer's activities

The Dev360 screen provides a comprehensive monthly view of a developer's activity in terms of GIT activities. This screen is particularly useful for gaining insights into the active days and throughput of a developer, which can be valuable during one-on-one discussions.

<div data-with-frame="true"><figure><img src="/files/tl9VwnTsnlAn76xnNuPl" alt=""><figcaption></figcaption></figure></div>

This screen shows the number of days a developer was involved in any GIT activity, such as commits, PRs (Pull Requests) opened, reviewed, merged, or declined. This visibility helps in understanding a developer's engagement and productivity over a given period.

\
**Filtering Activities:** You can filter the view based on specific activities like Commits, PRs Reviewed, etc.

**Detailed View:** Clicking on any bubble within the filtered view will provide basic details of that particular activity and a link to it.

### Filters Available in Dev360

#### General Filters

* **Teams**: Select the relevant team to filter the developers accordingly.
* **Users**: Choose the specific user to view their activities.
* **Date**: Set the desired date period to see activities within that timeframe.

#### Activity-Specific Filters

* **Commits**: Shows all regular commits done by the user within the selected date period.
* **Merge Commits**: Displays merge commits done by the user in the selected date period.
* **PRs Open**: Filters out the PRs that were opened by the user within the selected date period.
* **PRs Reviewed**: Lists the PRs reviewed by the user during the selected date period.
* **PRs Merged**: Shows the PRs merged by the user within the selected date period.
* **PRs Declined**: Filters out the PRs that were declined by the user in the selected date period.

### How to get to Dev 360

There are 2 ways in which you can access Dev360:

1. Straight from the main Hivel left panel.
2. By selecting one user in Activity or Cockpit.


# Work Item Breakdown

The Work Item Breakdown enables engineering leaders, managers, and teams to analyze issue creation patterns across multiple Jira projects in one unified view.

Unlike the traditional single-project work item tab, this dashboard gives users the flexibility to select multiple Jira projects, filter by types, and group the data over time (weekly, monthly, quarterly) - all while offering insights in both graphical and tabular formats.

#### You can either group by duration:

<div data-with-frame="true"><figure><img src="/files/FeqUptCdzMJJHbhbO9xD" alt="" width="563"><figcaption></figcaption></figure></div>

#### Or group by projects:

<div data-with-frame="true"><figure><img src="/files/Haj1RYcahOWbe2eJYOyO" alt="" width="563"><figcaption></figcaption></figure></div>

## 🔍 How It Helps Teams

* &#x20;Spot Workload Trends
  * Track how issue volume changes over time
  * Identify spikes is specific during key releases
* Compare Projects
  * View work item distribution across multiple Jira projects
  * Detect teams with high bug-to-feature ratios
* Identify Quality Issues
  * Focus only on bugs to catch recurring or post-release problems
  * Monitor bug inflow vs. resolution pace

***

#### Filters

**Group by** - Switches between Duration (time-based) and Projects (project-based) views. Changes the x-axis and column headers throughout.

**Date range** - Sets the time window for the data. Applies to both Graphical and Tabular formats.

**Projects** - Multi-select to include specific Jira or ClickUp projects. If no projects are selected, the data falls back to your default board.

**Work Item Type** - Multi-select to choose which issue types appear as series in the chart and rows in the table.

**Date Grouping** - When Group by Duration is active, choose the time bucket size: Weekly, Monthly, or Quarterly. This filter has no effect when Group by Projects is selected.

**View toggle** - Switch between Graphical Format (chart) and Tabular Format (table). Switching triggers a fresh data load for the new view.

***

#### Few things to note

* **Integration required**: Either Jira or ClickUp must be connected. If neither is connected, a prompt appears directing you to set up the integration in Settings → Integrations.
* **Issue type cap**: A maximum of 10 issue types can be displayed at once on this screen. Selecting more than 10 will show only the first 10.
* **Date Grouping in Projects mode**: The Date Grouping filter (Weekly/Monthly/Quarterly) only applies when Group by Duration is selected. In Projects mode, grouping by date has no effect.
* **No data state**: If the current filter combination returns no results, the chart shows "No data available for the selected filters." Try broadening your date range or adjusting your project and issue type selections.
* **Creation date basis**: All work item counts reflect when items were created, not when they were completed or moved to a sprint.


# Coding Hotspots

### **What is Coding Hotspots?**

Coding Hotspots feature helps engineering teams identify areas in the codebase that frequently experience bugs. By analyzing **JIRA issues, pull requests (PRs),** and **commit history**, it pinpoints files that are most often modified due to bug fixes. This enables teams to focus on problem areas, improve code stability, and enhance development efficiency.

<div data-with-frame="true"><figure><img src="/files/nc9g0P4hdBjB74cUx7Qs" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/qN5cRY4SdVJEi8MGeJDd" alt=""><figcaption></figcaption></figure></div>

### **How It Works**

1. **JIRA Issue & PR Tracking**
   * Links JIRA issues with their associated PRs and commits.
   * Categorizes commits based on related bug fixes.
2. **Repository & File Analysis**
   * Identifies frequently modified files within repositories.
   * Tracks how often each file appears in bug-related commits.
   * Provides insights into the most problematic files.
3. **Enhanced Data Tracking**
   * Shows assignees fixing issues.
   * Lists recent contributors and reviewers for each file.

### How to Use Coding Hotspots

* View repositories with the highest bug-related modifications.
* Drill down into specific files to analyze patterns.

#### Drill-Down Levels

1. **Level 1 (Repositories Overview):**
   * View repositories with frequent bug-related file changes.
2. **Level 2 (File-Level Analysis):**
   * See which files are modified most often, who worked on them, and their issue/PR count.
3. **Level 3 (Issue & PR Breakdown):**
   * View related JIRA issues, PRs, assignees, and contributors.
4. **Filters & Sorting**
   * Filter data by repository, time period (default: last 30 days), and issue type (default: Bug).
   * Customize views to focus on relevant problem areas.

### Key Insights

* Identify Problematic Code Areas: Quickly find files frequently associated with bugs.
* Track Developer Activity: See who contributes and reviews bug fixes.
* Improve Code Quality: Address recurring issues proactively.
* Optimize Workflows: Understand patterns and trends in bug-related modifications.


# Quality (SonarQube)

In the Quality screen you can see the result of SonarQube's analysis in terms of the bugs, vulnerabilities, and code smells reported in the repositories.

<figure><img src="/files/ipwrgkrYdwiziXEXjCZI" alt="" width="563"><figcaption></figcaption></figure>

By viewing bugs, code smells, and vulnerabilities reported by SonarQube, you gain a comprehensive understanding of your code's health, enabling you to address critical issues that can cause application failures, improve maintainability by adhering to coding standards, and mitigate security risks by identifying potential vulnerabilities.

You can filter on any of Bug, Vulnerability, or Code Smell graph to see the distribution of each. In the right side panel you will get links directly to a paritcular SonarQube issue.<br>

Below are definitions for Bug, Vulnerability, and Code Smell:

1. **Bug** - A coding mistake that can lead to an error or unexpected behavior at runtime.
2. **Vulnerability** - A point in your code that's open to attack.
3. **Code Smell** - A maintainability issue that makes your code confusing and difficult to maintain.

Please refer to SonarQube's documentation to know more about the [<mark style="color:purple;">issue statuses</mark>](https://docs.sonarsource.com/sonarqube/latest/user-guide/issues/solution-overview/#life-cycle) and [<mark style="color:purple;">severities</mark>](https://docs.sonarsource.com/sonarqube/latest/user-guide/issues/solution-overview/#life-cycle).


# Performance Appraisal

The Performance Appraisal screen in Hivel is a powerful tool that allows you to compare the performance of developers or teams using various key metrics. This feature helps you quickly identify where each individual or team stands and if there are any bottlenecks in specific areas.

<div data-with-frame="true"><figure><img src="/files/U8iCpqVB7Pb4XFikdyQh" alt=""><figcaption></figcaption></figure></div>

* **Compare Multiple Users**: Evaluate the performance of multiple users to understand individual contributions and identify areas for improvement.
* **Compare Multiple Teams**: Assess the performance of different teams to recognize overall team productivity and collaboration effectiveness.
* **Compare Users and Teams**: Compare the performance of individual users against their respective teams to see how each individual stacks up against the team's performance.

#### With this visibility you can:

* **Identify Bottlenecks:** Quickly spot areas where developers or teams might be facing challenges.
* **Promote Fair Evaluation**: Ensure fair and comprehensive performance evaluations by comparing relevant metrics.

#### The Performance Appraisal screen uses the following metrics to provide a comprehensive view of performance:

**`PR Open`** | **`Cycle Time`** | **`Commits`** | **`Coding Time`** | **`Merge Time`** | **`Review Time`**


# Alerts in Hivel

Alerts let you know when important engineering metrics cross the thresholds you care about, so you don’t have to constantly check dashboards.

## Why Alerts Matter

### For Executives (CTO, VP of Engineering)

* Get signals when org-wide delivery metrics move out of healthy ranges (like Cycle Time, MTTR, Release Merge Frequency, Change Failure Rate, etc.)
* Stay ahead of reliability issues without digging across dashboards
* Keep a steady pulse on team performance across the org

### For Engineering Managers/Team Leads

* Catch slowdowns early (for example: Cycle Time > 5 days)
* Monitor team-wide patterns before sprint planning or reviews
* Maintain alignment with expectations and avoid last-minute surprises

### For Developers

* Get nudges when your PRs wait too long for review
* Monitor personal patterns like coding time, review time, or PR activity
* Stay aware of your own trends without manually checking dashboards

## Alert Types (Scopes)

Hivel supports three alert scopes. Each scope controls what the alert monitors:

### 1. Organization-Level Alerts

* Watch metrics across the entire org
* Great for executives or central engineering operations
* Only admins / execs with “complete data visibility” can configure them

### 2. Team-Level Alerts

* Monitor metrics for a single team
* Ideal for managers responsible for specific groups

### 3. Personal Alerts

* Users can set alerts for themselves or any other individual, on teams they choose
* Great for PR reminders or personal productivity patterns

## Available Alert Metrics

Hivel supports alerts for the following metrics across your organization, teams, and personal workflows:

* **Delivery & Cycle Metrics -** Cycle Time, Coding Time, Review Time, Merge Time,  Release Merge Frequency&#x20;
* **Pull Request Metrics -** PRs Size, Number of PRs Opened, PRs Waiting for Review, PRs Waiting for Merge, PRs Merged&#x20;
* **Code Quality & Patterns -** Commit Frequency, Flashy Reviews, PRs Merged Without Review
* **Hotfix & Reliability -** Hotfix Resolution Time, Hotfix Rate
* **Team Activity & Progress -** Active Days, Completed Story Points, Closed Work Items Count

## Before You Start - Permissions

Make sure your role is assigned the correct permissions in the [Access Management](https://app.hivel.ai/settings/rbac) screen:

* **Modify Alerts** – Create/edit/delete alerts (Org & Team level)
* **View Alerts Menu** – Access the alert dashboard
* **Modify Alerts Config** – Configure Slack channels & digests (Org & Team level only)
* **Personal Alerts** – Create/edit personal alerts regardless of access to above permissions

<div data-with-frame="true"><figure><img src="/files/1GHlLKe0VWQureEY6fi5" alt="" width="563"><figcaption></figcaption></figure></div>

## How to Set Up an Alert (Step-by-Step)

Navigate to **Alerts** under **Overview**, choose the scope you want, and click on "New Alert".

<div data-with-frame="true"><figure><img src="/files/vppEuUup9Nc14a7tA5ae" alt="" width="563"><figcaption></figcaption></figure></div>

Here is a short walkthrough of the Alerts setup process:

<div data-with-frame="true"><figure><img src="/files/fM3Jr6EFjbyvXYfBYYvU" alt="" width="563"><figcaption></figcaption></figure></div>

#### 1. Choose your metric & set the threshold

Note:

* A metric can only have one alert per scope\
  \&#xNAN;*(Example: only one Cycle Time alert allowed at the org level)*
* Metrics already used at that level won’t appear in the dropdown

#### 2. Choose when the alert should fire

Hivel uses time-window averages, not real-time checks, to avoid spam.

You can either:

* Use an existing Digest schedule
* Or set a Custom schedule for just this alert (daily, weekly, or monthly)

> Note: If you choose a date above 28 for a monthly alert, the system will warn you that alerts won’t fire for the months that don’t have those dates.

#### 3. Select recipients

You can send alerts to:

* Slack
* Email
* Or both

> **Note:** For Slack, make sure you've integrated it with Hivel and set up the Slack channels ([details in this guide](https://docs.hivel.ai/using-hivel/alerts-in-hivel/setting-up-slack-to-receive-hivel-alerts)).

#### 4. Review & save

Review the Alert settings and click Save. Your alert will now appear in the Alerts table.

### When your Alert Fires

When a metric crosses your threshold, you'll receive a notification in your chosen channel (Email or Slack).

**What You'll See**

Each alert notification includes:

* **Alert Summary** – A clear, description of what triggered the alert (e.g., "Merge Time exceeded 3 days" or "5 PRs merged without review")
* **Metric Details** – The specific values that crossed your threshold, providing immediate context
* **"View in Hivel" Button** – A direct link to investigate further in the platform

<figure><img src="/files/fSuF1PVoRBzkGTWoU7kO" alt=""><figcaption></figcaption></figure>

**Taking Action**

Click the "View in Hivel" button to jump directly to the relevant data without digging through dashboards. Depending on the alert type, you'll land on:

* **Cockpit Page** – For org, team, or personal-level delivery and cycle metrics (Cycle Time, Merge Time, Review Time, etc.)
* **PR Page** – For pull request metrics (PRs Waiting for Review, PRs Merged Without Review, etc.)

The data is pre-filtered to show exactly what triggered the alert, so you can investigate the root cause immediately and take corrective action.

<figure><img src="/files/uWXSmI49cvKsPh5UQphL" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/nPyO3of1WxnpmzkoAe73" alt=""><figcaption></figcaption></figure>

**Scope & Coverage**

This experience works across all 18 alerts at the Organization, Team, and Personal levels, and is supported in both Email and Slack notifications. Whether you're reviewing alerts in your inbox or in Slack, you get the same contextual details and navigation shortcut.

### Creating a Digest (Optional)

Digests help you group multiple alerts into a single scheduled summary to avoid notification overload.

To create one:

1. Go to Alerts → Settings ⚙️ icon → Digests
2. Create a digest with a name, timing, recipients, and Slack channel or emails.

   <div data-with-frame="true"><figure><img src="/files/toUjFcpqd823iP4jL8WS" alt="" width="563"><figcaption></figcaption></figure></div>
3. Assign alerts to this digest during alert creation.

{% hint style="info" %}
**Note:** If a digest does not have any email recipients configured, you will not be able to add email addresses during alert creation. In this case, update the email recipients in the digest configuration first, and then proceed to create the alert.
{% endhint %}

## How Hivel Manages Alerts Behind the Scenes

* Only one alert per metric per scope is allowed.
* Each scope (Org, Team, Personal) can have its own Slack channel.
* If a digest is deleted, all linked alerts automatically switch to custom schedules using the digest’s original timing.
* If a Slack channel is deleted, alerts using only Slack are disabled until a new channel is added.
* If a team in an alert is deleted, the alert becomes inactive until updated.

## Need Help?

If you’re unable to see Alert options or need assistance setting things up, reach us at <support@hivel.ai>.


# Setting Up Slack to Receive Hivel Alerts

Follow these easy steps to set up your Slack channel for receiving alerts from Hivel.

{% hint style="info" %}
We suggest creating a dedicated Slack channel just for alerts, so updates stay visible and easy to track.
{% endhint %}

### **Steps to Set Up:**

1. **Integrate Slack with Hivel:**
   * Go to **Settings →** [**Integrations**](https://app.hivel.ai/settings/integrations) **→ Slack**.
   * Complete the integration process as outlined in [this guide](https://docs.hivel.ai/integrations/slack-integration-with-hivel).
2. **Add your Slack Channel ID:**

   * Create or open your Slack channel and copy the **Channel ID** from the "About" section.

   <div data-with-frame="true"><figure><img src="/files/vVPsiH4AQ2C6zY1R9PCn" alt="" width="563"><figcaption></figcaption></figure></div>

* Click the **Settings ⚙️** icon in the Alerts screen, and paste the Channel ID in the **Alerts Configuration** section.

<div data-with-frame="true"><figure><img src="/files/IYbaEsSAH0FOtl4dwwow" alt="" width="563"><figcaption></figcaption></figure></div>

3. **Invite "Hivel Alerts" Bot to Slack:**

* Type **`@Hivel Alerts`** in the Slack channel and invite the bot.

Once done, Hivel will start sending alerts to your Slack channel.

### Sending Alerts to Personal DMs instead of channels

1. Copy the member ID of the individual who should receive the alerts - by selecting the profile icon -> view full profile -> three dots on the right then "Copy member ID"
   1. Note - you can only configure one such channel personally. So in case you have configured your own member ID, you won't be able to add someone else's.

<div data-with-frame="true"><figure><img src="/files/acFk9gPbSNwsP6UWVQOz" alt="" width="563"><figcaption></figcaption></figure></div>

👉 **Need help?** Contact us at <support@hivel.ai>.


# Lucy

Lucy is the Hivel assistant that allows you to retrieve engineering metrics and trends through simple prompts.

Instead of navigating through multiple dashboards or Cockpit views, Lucy helps you quickly surface data such as team trends, contributor rankings, or potential hotspots across repositories.

Lucy is currently in **Beta**, so the scope of questions it can answer is gradually increasing. The goal at this stage is to help teams quickly explore trends and summaries without replacing the existing dashboards.

For deeper analysis or detailed drilldowns, the Cockpit dashboards remain the most reliable and comprehensive way to explore data.

{% hint style="info" %}
Lucy's scope is restricted to GIT-related metrics for the Beta phase.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/EMSkT6KGE55Q0efTYpQz" alt="" width="563"><figcaption></figcaption></figure></div>

***

## What Lucy Helps With

Lucy currently focuses on a few specific use cases where quick visibility is helpful.

### Generate Trends Across Multiple Metrics

Lucy can generate trend views for multiple metrics across a time period for the org or teams or authors.

This allows users to quickly understand how several engineering metrics move together without switching between different screens.

Example questions:

* Show the trend of cycle time, review time, and merge time for Team @Ninjas over the last 3 months
* Compare coding time and PR size trends for the @Payments team in the last quarter
* Show review time trend for @Harry in the last 60 days

**Why this is useful**

On the Cockpit dashboards you can drill into individual metrics. Lucy helps combine multiple metrics together in one quick view so that trends can be spotted faster.

***

### Identify Bottlenecks or Hotspots

Lucy can highlight potential bottlenecks across repositories for certain metrics.

**Example questions:**

* Which repositories have the highest unreviewed PRs
* Show repos with the highest hotfix rate in the last 90 days
* Identify teams with the most unreviewed PRs

These queries help quickly surface areas that may need attention before exploring them in detail in Cockpit.

<div data-with-frame="true"><figure><img src="/files/spcqT91jYnjs8iA8drra" alt="" width="563"><figcaption></figcaption></figure></div>

***

### Identify Top Contributors

Lucy can identify authors or teams that contribute the most toward specific metrics.

**Example questions:**

* Who are the top contributors in the @Payments repository this month
* Show authors with the highest number of merged PRs in the last 30 days
* Which teams contributed the most commits last quarter

This can help teams quickly identify activity levels across contributors or teams.

***

## Current State of Lucy

Lucy is currently in **Beta**, which means we are actively improving both the intelligence and the range of questions it can answer.

**At this stage:**

* The scope of supported questions is small
* Responses may be basic compared to Cockpit dashboards
* Trend representations may not always capture the full context of the data
* Some prompts may not return results if they fall outside the supported query patterns

Lucy is designed to **assist quick exploration**, not replace Cockpit dashboards or detailed analysis workflows.

***

## When to Use Lucy vs Cockpit

**Use Lucy when you want to:**

* Quickly check trends across multiple metrics
* Identify hotspots across repositories or teams
* Find top contributors or activity patterns

**Use Cockpit dashboards when you need:**

* Deep drilldowns
* Detailed PR level analysis
* Custom filters or precise metric investigation

***

## Example Prompts to Try

**Here are a few prompts that typically work well:**

• Show cycle time trend for the Y team in the last 3 months\
• Compare review time and coding time for Team X this quarter\
• Which repositories have the highest unreviewed PRs\
• Show the top contributors by merged PRs in the last 30 days\
• Identify repos with the highest hotfix rate this quarter

***

### How to enable Lucy

Lucy can be enabled from [Configurations](https://app.hivel.ai/settings/configuration) -> AI -> Lucy

<div data-with-frame="true"><figure><img src="/files/u6J4AaIQt2xQmyxcOiAw" alt="" width="563"><figcaption></figcaption></figure></div>


# Hivel Score

<table data-view="cards" data-full-width="true"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><h4>Org level score calculation</h4></td><td><a href="/pages/ZeWHojs64S1TewRU3N2Z">/pages/ZeWHojs64S1TewRU3N2Z</a></td></tr><tr><td align="center"><h4>Team level score calculation</h4></td><td><a href="/pages/b35glHGBjWn2P7rS8SpI">/pages/b35glHGBjWn2P7rS8SpI</a></td></tr></tbody></table>

{% embed url="<https://drive.google.com/file/d/1vlSqUweLQTIdhDFDqeeo7V7HncBHLI5d/view>" %}

Hivel Score provides engineering leaders with a fast, reliable snapshot of overall performance - without the need to navigate multiple dashboards. It brings together key signals like **speed, quality, and throughput** into a single, easy-to-understand score.

#### What is Hivel Score?

Hivel Score is an **aggregate, organization-level indicator** that reflects how your teams are performing across core engineering metrics. Each score is presented out of 100, making it simple to quickly assess performance at a glance.

<div data-with-frame="true"><figure><img src="/files/t6I1F9f0UHd1tvDkcIza" alt=""><figcaption></figcaption></figure></div>

#### How to interpret the score

* **Scores are contextual**: They are most meaningful when compared to a previous timeframe.
* **Trend-focused**: The score highlights whether metrics have improved, declined, or remained stable.
* **Drilldowns available**: Supporting metrics and percentage changes provide deeper insights into what’s driving the score.

#### Why it matters

Hivel Score is designed to help you:

1. **Quickly assess performance health** across teams or the entire organization
2. **Identify areas of improvement** by understanding metric-level changes
3. **Track score progress over time**

<div data-with-frame="true"><figure><img src="/files/C4YYEMHmn1yZE7uzylCH" alt=""><figcaption></figcaption></figure></div>

#### What you can configure

The metrics and weightages to be considered are completely configurable.

* Changes made to **sub-metric configurations** will impact the Hivel Score from the **current month onward only**.
* Changes made to **primary metric configurations** will **impact past, current, and future months**.

<div data-with-frame="true"><figure><img src="/files/wkUNvBKYbkpLDWRpTzra" alt=""><figcaption></figcaption></figure></div>

#### About scoring and stack ranking

The scoring system, along with the stack rank view, is intended to provide **directional clarity** - helping you understand how teams are progressing over time and where attention may be needed.

Rather than serving as a direct comparison tool, it offers a **relative view of performance trends**, making it easier to:

* Spot teams that are improving or facing challenges
* Highlight which metrics may need focus
* Understand how performance evolves across the organization

<div data-with-frame="true"><figure><img src="/files/rylZ4yTyaJEE6k4i9Hnk" alt=""><figcaption></figcaption></figure></div>


# Org level Hivel Score Calculation

***

### Setting Up Your Configuration

Before any scores are calculated, you'll need to complete a one-time configuration. This involves setting the **weight** you want to assign to each of the three performance buckets:

* **Speed** - How quickly your teams move
* **Quality** - The standard of work being delivered
* **Throughput** -The volume of work being completed

You can distribute the weights according to what matters most to your organization. The only rule is that the three weights must add up to **100%**. If they don't, you'll see a validation error and won't be able to save until this is corrected.

> **Note:** Scores will only start being calculated after your configuration is saved. You can revisit and update this configuration at any time from Settings.

<div data-with-frame="true"><figure><img src="/files/EaXoJj0SRbVZzFz2ULRO" alt="" width="563"><figcaption></figcaption></figure></div>

***

### How the Org-Level Hivel Score is Calculated

The score is built from the ground up - starting at individual metrics, rolling up to buckets, and finally combining into one org-level number.

#### Step 1: Metric Scores

Each bucket (Speed, Quality, Throughput) is made up of a fixed set of metrics - things like Commits, PRs Merged, or Review Time. Every metric is scored on a **0–100 scale** by comparing a team's value against all teams' performance over the past 6 months. This ensures scores always reflect relative performance across your org, not arbitrary thresholds. Teams with no activity on a metric receive a score of 0.

#### Step 2: Bucket Scores Per Team

Within each bucket, metrics carry predefined weights that reflect their relative importance. A team's bucket score is the weighted average of its individual metric scores.

#### Step 3: Org-Level Aggregation

For each bucket, the org score is calculated as a **developer-weighted average** across all top-level teams. This means larger teams have a proportionally greater influence on the org score, ensuring the number reflects your actual organizational makeup.

Once weighted averages are computed for all three buckets, your configured weights are applied to arrive at the **final Org Hivel Score**.

**Example**

| Team | Developers | Speed | Quality | Throughput |
| ---- | ---------- | ----- | ------- | ---------- |
| A    | 10         | 70    | 80      | 75         |
| B    | 5          | 60    | 65      | 70         |
| C    | 15         | 85    | 90      | 88         |

With configured weights of Speed 30%, Quality 40%, Throughput 30%, the final Org Hivel Score works out to **79.37**.

***

### When Can You View the Score?

Scores are available for **completed months only**. You won't see a score for the current, in-progress month - this ensures the data is complete and the score is accurate before it's displayed.

Use the **Duration Selector** to navigate between past months (full month selection only).

***

### What You'll See on the Dashboard

Once configured, the org-level dashboard gives you:

* **Hivel Score** for the selected month, along with a trend vs. the last 6 months
* **Score Trend Graph** - a line chart showing how your org score has moved over the past 6 months
* **Category Breakdown** - a bar view of your Speed, Quality, and Throughput scores. Click on any bar to see the individual metrics within that bucket, their scores, and how they compare to the 6-month average
* **Team Ranking Table** - a flat list of all teams ranked by their Hivel Score, showing:
  * Team Name
  * Score
  * % Change vs. 6-month average
  * Team score vs. Org score (% difference)

You can also use the **"See Users with Lowest Score"** toggle to identify individuals who may need additional support, and use **"View All Teams"** for a fuller view with optional cascading sub-team visibility.

***

### A Few Things to Keep in Mind

* Only **top-level teams** contribute to the Org Hivel Score
* If no data is available for a team or metric, a score of **0** is shown
* **Team vs. Org** comparisons are made at the overall score level only, not at the individual bucket level

***

*For questions or help with your configuration, please reach out to our support team.*


# Team level Hivel Score Calculation

### What is the Team-Level Hivel Score?

The Team-Level Hivel Score gives you a focused view of how a specific team - and its sub-teams - are performing across Speed, Quality, and Throughput. It uses the same scoring framework as the org level, but scoped to the team you select, letting you drill deeper into performance patterns within your org.

***

### Setting Up Your Configuration

The same configuration used at the org level applies here. If you've already set your bucket weights (Speed, Quality, Throughput totalling 100%), you're all set. Scores are calculated only after configuration is saved and are visible for completed months only.

<div data-with-frame="true"><figure><img src="/files/32KBvIcgYjuowhZtrdcO" alt="" width="563"><figcaption></figcaption></figure></div>

***

### How the Team-Level Hivel Score is Calculated

The score is built bottom-up - from individual metric scores, to bucket scores, to a final team score.

#### Step 1: Metric Scores (0–100 scale)

Each metric (e.g., Commits, Review Time) is scored by comparing a sub-team's value against all sub-teams' performance over a **rolling 6-month window**, including the current month. This keeps scores contextual and reflective of recent trends.

To ensure scores aren't skewed by extreme outliers or inactive periods, the following data cleaning is applied before scoring:

* Values of **0 are excluded** (treated as no activity)
* The **top and bottom 2%** of values are removed

The remaining values set the scoring range (min to max). Each sub-team's current month value is then plotted within this range to produce a 0–100 score. Sub-teams with no activity (zero value) score 0, while those at the very top of the range score 100.

**Example - Metric: Commits, Month: January**

Here's how 6 months of Commits data across sub-teams translates into January scores:

| Sub-Team | Jan Commits | Score             |
| -------- | ----------- | ----------------- |
| A        | 0           | 0 (no activity)   |
| B        | 120         | 36.6              |
| C        | 89          | 21.46             |
| D        | 300         | 100 (top outlier) |
| E        | 72          | 13.17             |
| F        | 0           | 0 (no activity)   |

After removing zeros and 2% outliers from all 6 months of data, the scoring range is set at **Min = 45, Max = 250**. Each sub-team's January value is scored within this range. Sub-team D's value of 300 falls above the top 2% threshold, so it automatically scores 100.

#### Step 2: Bucket Scores

Within each bucket, metrics carry predefined weights. A sub-team's bucket score is the weighted average of its individual metric scores.

*Example - Throughput bucket with Commits (60%) and PRs Merged (40%):* A sub-team scoring 80 on Commits and 70 on PRs Merged would receive a Throughput score of **76**.

#### Step 3: Final Team Hivel Score

The three bucket scores are combined using your configured weights to produce the final Hivel Score for each sub-team.

*Example - with Speed 30%, Quality 40%, Throughput 30%:* A sub-team with Speed = 60, Quality = 75, Throughput = 76 would receive a Hivel Score of **70.8**.

***

### What You'll See on the Dashboard

The team-level dashboard mirrors the org view, scoped to your selected team:

* **Hivel Score** for the selected month, with a 6-month trend
* **Score Trend Graph** - how the team's score has moved over the past 6 months
* **Category Breakdown** - Speed, Quality, and Throughput scores with expandable metric detail, including each metric's score, weight, and change vs. the 6-month average
* **Sub-Team Ranking Table** - all sub-teams ranked by score, showing % change vs. 6-month average

> If the selected team has no sub-teams, the dashboard will display a "No sub-teams available" message.

***

### A Few Things to Keep in Mind

* Scores use a **rolling 6-month window**, so they naturally adapt as your team's performance evolves
* Sub-teams with **no activity** on a metric receive a score of 0 for that metric
* Scores are only visible for **completed months** - no mid-month previews
* If no data is available, the score will show as **0**

***

*For questions or help with your configuration, please reach out to our support team.*


# Metrics & Definitions


# DORA Metrics

The DORA metrics are enabled after CI/CD (this will generate the Deployment Frequency and Delivery Lead Time metrics) is integrated and Incident Management is integrated (this will genearte the Change Failure Rate and Mean Time to Restore)

DORA metrics provide a standardized way to measure software delivery performance across engineering teams. By tracking deployment frequency, lead time, change failure rate, and time to restore, teams gain a consistent and objective understanding of how code moves from development to production and how reliably systems operate. These metrics help establish a shared baseline, making it easier to compare engineering health over time and identify systemic bottlenecks in the delivery process.

For engineering organizations, DORA metrics enable data-informed decisions and continuous improvement by aligning teams on practices that improve both delivery speed and system stability. Over time, this results in more predictable releases, faster incident recovery, and greater confidence among engineers and stakeholders through clear, trusted performance indicators.

{% hint style="info" %}
To get started on seeing the DORA metrics, you will have to integrate the CI/CD and Incident Management tool - to get visibility into the respective metrics.
{% endhint %}

### **Deployment Frequency**

The number of times that code changes are successfully deployed to production per day. This is calculated as an aggregate of all deployments in the time period selected.

### **Delivery Lead Time**

The time from first code commit of a PR to successful deployment in production. This is an average of all PRs that have been linked to deployments in the selected time period.

### **Change Failure Rate**

Number of incidents that required code changes / Total number of deployments in the time period.

Incidents typically involve hotfixes, rollbacks or outages.

Once the Incident Management is integrated, we get the number of incidents in a certain time period and out of those only the ones linked with any commits or pull requests will be considered for the calculation of Change Failure Rate

{% hint style="info" %}
Deployment API is also required to be integrated (i.e. data from CI/CD) so that that acts as the denominator
{% endhint %}

### **Mean Time to Restore**

The mean time to resolve incidents caused by code in production.

This is measured by **incident start date** to **resolved date.**


# Speed

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center">Cycle Time</td><td><a href="/pages/AI4ttvniPZAp0FfQ5H6T">/pages/AI4ttvniPZAp0FfQ5H6T</a></td></tr><tr><td align="center">Coding Time</td><td><a href="/pages/s2ZqKzgFQbPSz2nl8bGS">/pages/s2ZqKzgFQbPSz2nl8bGS</a></td></tr><tr><td align="center">Pickup Time</td><td><a href="/pages/HF3iogo5niuFSCn0pvlR">/pages/HF3iogo5niuFSCn0pvlR</a></td></tr><tr><td align="center">Review Time</td><td><a href="/pages/9N6yUlhUw05wjOi1Na0z">/pages/9N6yUlhUw05wjOi1Na0z</a></td></tr><tr><td align="center">Merge Time</td><td><a href="/pages/vILR3RiInp37eEG9vATg">/pages/vILR3RiInp37eEG9vATg</a></td></tr><tr><td align="center">Release Merge Freq.</td><td><a href="/pages/26gYI5HtX3DxrFBjxHci">/pages/26gYI5HtX3DxrFBjxHci</a></td></tr></tbody></table>

{% content-ref url="/pages/7avyaQ8i9x0ggtBWzC7C" %}
[How to improve Speed?](/improve-performance/how-to-improve-speed)
{% endcontent-ref %}

{% content-ref url="/pages/63IHmZvOzEb3YA1Nn4oX" %}
[How to balance speed and quality?](/improve-performance/how-to-balance-speed-and-quality)
{% endcontent-ref %}


# Cycle Time

<div data-with-frame="true"><figure><img src="/files/pKgFhMn8rF8CkZciDbAX" alt="" width="563"><figcaption></figcaption></figure></div>

#### Cycle time is the time it takes from the first commit to PR merged.

* If things are taking too long to release, it can impact the competitiveness of the product in the market, and customers may be waiting too long for requests.
* With the very smooth delivery system in place, things are moving rapidly. At this pace, even if we see production issues, things can be fixed faster, which is great for teams experimenting with new ideas.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/jQyoxfHbZaM08BSvIBdH" alt="" width="563"><figcaption></figcaption></figure></div>

#### Related articles

{% content-ref url="/pages/ZOgvQXDx1Ypi6jMQuehR" %}
[What to do if my Cycle Time is high?](/improve-performance/how-to-improve-speed/what-to-do-if-my-cycle-time-is-high)
{% endcontent-ref %}

{% content-ref url="/pages/ZJKU0PtNa07PLHe25Qv8" %}
[Are draft PRs considered for calculation of coding/cycle time?](/faqs/metrics-and-data-faqs/are-draft-prs-considered-for-calculation-of-coding-cycle-time)
{% endcontent-ref %}

{% content-ref url="/pages/m5b4XWrdychCZL5gQMKp" %}
[Why is there an abnormal spike in Cycle Time?](/faqs/metrics-and-data-faqs/why-is-there-an-abnormal-spike-in-cycle-time)
{% endcontent-ref %}

{% content-ref url="/pages/OUr4MfLGWfO8fI9v3Zb2" %}
[Why cannot I see cycle time against developers even though they have commits?](/faqs/metrics-and-data-faqs/why-cannot-i-see-cycle-time-against-developers-even-though-they-have-commits)
{% endcontent-ref %}


# Coding Time

<div data-with-frame="true"><figure><img src="/files/skEbjydy7gKnqXujM3m1" alt="" width="563"><figcaption></figcaption></figure></div>

**Coding Time is the time it takes from the first commit until a PR is open.**

* Short Coding Time represents less context switching by developers, small PR size and clear requirements, and great architecture.
* Longer coding time relates to committing large chunks of code, which could lead to a higher blast radius on production issues, longer review cycles, or sometimes even misses the review process due to fatigue.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/aFJZBTqyBYGwjQFjLxVp" alt="" width="563"><figcaption></figcaption></figure></div>

#### Related articles

{% content-ref url="/pages/Ov8M4jWznlogwpbG3NAu" %}
[What to do if my Coding Time is high?](/improve-performance/how-to-improve-speed/what-to-do-if-my-coding-time-is-high)
{% endcontent-ref %}

{% content-ref url="/pages/ZJKU0PtNa07PLHe25Qv8" %}
[Are draft PRs considered for calculation of coding/cycle time?](/faqs/metrics-and-data-faqs/are-draft-prs-considered-for-calculation-of-coding-cycle-time)
{% endcontent-ref %}


# Pickup time

Pickup time refers to the duration between when a PR was opened to when the first comment was done on the PR. This metric is an essential part of understanding a team's responsiveness and efficiency in handling code reviews.

<div data-with-frame="true"><figure><img src="/files/6JuzQLVPLX8teHXU3V1Q" alt=""><figcaption></figcaption></figure></div>

This metric can also be found in the Process screen and is the average of all PRs with at least 1 comment.

<div data-with-frame="true"><figure><img src="/files/3dS3ZdGrZZ8Y19Pyzeov" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
For calculation of Pickup time, only the PRs with at least 1 comment are considered. PRs without any comments are excluded.
{% endhint %}

Pickup time measures how quickly team members engage with a new pull request. A shorter pickup time often indicates a more active and responsive development team, which can lead to faster integration of changes.

Faster pickup times can lead to shorter cycle times, as the PR spends less time idle, waiting for initial feedback.

A focus on Pickup time can lead to a more efficient review process, reducing the overall cycle time and improving the software development lifecycle.

The Pickup time can be 0 if there are no comments in the PR.

#### Related articles

{% content-ref url="/pages/UTWwBRR1KT6jskHGNbYw" %}
[Why is pickup time not included in cycle time?](/faqs/metrics-and-data-faqs/why-is-pickup-time-not-included-in-cycle-time)
{% endcontent-ref %}


# Review Time

<div data-with-frame="true"><figure><img src="/files/y2RPcYOt53CWIxgCNblT" alt=""><figcaption></figcaption></figure></div>

#### Review Time is the time it takes a PR to be reviewed since it's Open.

* Low Review Time represents highly collaborative team dynamics, with reviewers moving things faster and delivering higher-quality features to customers.
* High review time represents limited reviewers in the team, and every occupied senior engineer not finding time to do code reviews slows down the cycle times.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/nYWoGGjbNVZHTiPecUbh" alt=""><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/C0TJ3XrvhitNriuSwyw7" %}
[What to do if my Review Time is high?](/improve-performance/how-to-improve-speed/what-to-do-if-my-review-time-is-high)
{% endcontent-ref %}


# Merge Time

<div data-with-frame="true"><figure><img src="/files/5b6U0wUf6pCa4fAU26zL" alt=""><figcaption></figcaption></figure></div>

#### Merge time is the duration between when a pull request is reviewed and when it is merged.

* Faster merge (lower number) times represent efficient release processes.
* Longer merge time could be due to inefficient CI/CD processes.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/XhqC8j5Xdo0rFVm2pYRe" alt=""><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/EDlQS5l4EoydSwL1WV6G" %}
[What to do if my Merge Time is high?](/improve-performance/how-to-improve-speed/what-to-do-if-my-merge-time-is-high)
{% endcontent-ref %}


# Release Merge Frequency

### **Release Merge Frequency**

<div data-with-frame="true"><figure><img src="/files/W3bx1IbwxUk4m1EVDUZL" alt=""><figcaption></figcaption></figure></div>

#### Formula =

```
(Total number of PRs merged to master or main in that selected time period) / 
(Total number of days in the time period)
```

* Release Merge frequency measures how often code is merged to the main/master branch. Elite Release Merge Frequency represents a stable and healthy delivery.
* This metric would help you understand the number of PRs being pushed to production in a given time. This can work independently of your sprint cycle time. You can learn more about them [<mark style="color:purple;">here</mark>](https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance).
* Too low Release Merge frequency indicates that there may be bottlenecks in review, or requirements, and teams are delivering features at a slower pace.
* High Release Merge frequency shows that your team can quickly provide value and react to feedback or changes.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/cT3xhKxBJpFYGhI9Xtss" alt=""><figcaption></figcaption></figure></div>


# Quality

{% content-ref url="/pages/Oh7o2SstSZU6e4BABvrT" %}
[How to improve Quality](/improve-performance/how-to-improve-quality)
{% endcontent-ref %}

{% content-ref url="/pages/63IHmZvOzEb3YA1Nn4oX" %}
[How to balance speed and quality?](/improve-performance/how-to-balance-speed-and-quality)
{% endcontent-ref %}


# Hotfix Rate

Hotfix Rate is defined as the percentage of changes to a production or live environment to fix any degraded service. In other words, hotfixes to address production bugs.

<div data-with-frame="true"><figure><img src="/files/44Vfn3XRInojX32zdzwJ" alt="" width="563"><figcaption></figcaption></figure></div>

The way Hivel identifies the PRs to be considered for CFR is through the configurations - through pull request patterns, JIRA issue types, or by patch version pattern.

<div data-with-frame="true"><figure><img src="/files/yhoINTAkXifZAbeYiP5m" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Please note: **the PRs considered for Hotfix Rate are a subset of the total PRs deployed to release branches.**
{% endhint %}

Know more about how to setup the configurations [<mark style="color:purple;">here</mark>](https://hivel.gitbook.io/knowlegebase/setup/configurations-explained/hotfix-configurations).

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/1n3fG8kCwTmVR1nMngw3" alt="" width="563"><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/Gum2b6JWkQTrUZsf6xrf" %}
[How to identify root cases of high change failure rates?](/improve-performance/how-to-improve-quality/how-to-identify-root-cases-of-high-change-failure-rates)
{% endcontent-ref %}

{% content-ref url="/pages/qvT5Y70xU01sAD0knK62" %}
[Building a feedback loop for continuous code improvement](/improve-performance/how-to-improve-quality/building-a-feedback-loop-for-continuous-code-improvement)
{% endcontent-ref %}


# Hotfix Resolution Time

<div data-with-frame="true"><figure><img src="/files/GNBBNKWdtexiUDCU5S1M" alt="" width="563"><figcaption></figcaption></figure></div>

**Hotfix Resolution Time** is the average time taken to recover from a failure in production.

On Hivel, it is measured as the **average cycle time of a Pull Request (PR) labeled as a hotfix**. In other words, the time taken for a hotfix PR from the first commit to when it is merged to the release branch.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/OC4tWqDCksng8esWPrlG" alt="" width="563"><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/zyXjINVbAvIleOyOMoP5" %}
[Strategies to Reduce Hotfix Resolution Time](/improve-performance/how-to-improve-quality/strategies-to-reduce-hotfix-resolution-time)
{% endcontent-ref %}

{% content-ref url="/pages/qvT5Y70xU01sAD0knK62" %}
[Building a feedback loop for continuous code improvement](/improve-performance/how-to-improve-quality/building-a-feedback-loop-for-continuous-code-improvement)
{% endcontent-ref %}


# Maintenance

{% hint style="info" %}
[<mark style="color:purple;">**Understand New Work, Rework, Maintenance through examples**</mark>](/using-hivel/coding/understanding-rework-new-work-and-maintenance)
{% endhint %}

### **Maintenance %**&#x20;

<div data-with-frame="true"><figure><img src="/files/FM3T5PSgsy5vpuFxK1dQ" alt="" width="563"><figcaption></figcaption></figure></div>

**Maintenance** refers to the lines of code modified that were written before the last 30 days / total lines of code added or modified.

* Less maintenance means that engineers write a very well-maintainable piece of code as the team builds new features.
* Higher maintenance represents a longer time to build new features or testing fatigue. When maintenance is high, estimates are usually off, as it's hard to account for maintenance during estimates.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/rlQjwycJKaaybdndv92i" alt="" width="563"><figcaption></figcaption></figure></div>


# Rework

{% hint style="info" %}
[<mark style="color:purple;">**Understand New Work, Rework, Maintenance through examples**</mark>](/using-hivel/coding/understanding-rework-new-work-and-maintenance)
{% endhint %}

### **Rework %**

<div data-with-frame="true"><figure><img src="/files/NzQNE1VnfdLGai1VI65z" alt=""><figcaption></figcaption></figure></div>

**Rework %** measures the number of changes made to code in the last 30 days.\
If the change is made to a code older than 30 days, it is automatically classified as [<mark style="color:purple;">maintenance</mark>](/metrics-and-definitions/quality/maintenance). (30 days is the default setting, you can configure it based on your internal process by going to **Settings -> Configuration**)

* Low rework means the code changes aren't done after the initial work, which indicates that the developers are pushing high-quality code the first time.
* High rework rates are caused by PR feedback, QA feedback, or an engineer trying to improve the code after committing. Too many changes.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/F4dl7dhemM7X6fHYFp1Y" alt=""><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/qu0kVyU7JQHrt0tLerxk" %}
[What to do if my Rework is high?](/improve-performance/how-to-improve-quality/what-to-do-if-my-rework-is-high)
{% endcontent-ref %}


# Unreviewed PRs

<div data-with-frame="true"><figure><img src="/files/ahyj7Ac6d78JAs6U15j6" alt=""><figcaption></figcaption></figure></div>

#### All merged PRs that do not have a review state are PRs merged without review.&#x20;

* Reviewing every PR saves a lot of post-production issues and can keep higher quality across.
* Merging PRs without review is a symptom of production issues or poor-quality code that could lead to higher maintenance issues in the future. Also, junior engineers miss out on learning opportunities.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/lmXWySQ3eXlLv9ewosEk" alt=""><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/rCCVl6PcU9i0FwS9a0ur" %}
[Best Practices for Ensuring Strong Pull Request Review Coverage](/improve-performance/how-to-improve-quality/best-practices-for-ensuring-strong-pull-request-review-coverage)
{% endcontent-ref %}

{% content-ref url="/pages/d0Bwgwr0hUbUY391RVlY" %}
[Best Practices for Team Ownership in Code Review](/improve-performance/how-to-improve-quality/best-practices-for-team-ownership-in-code-review)
{% endcontent-ref %}


# PR Reviewed

<div data-with-frame="true"><figure><img src="/files/YvyYjlCyOPrlumAMxpka" alt=""><figcaption></figcaption></figure></div>

#### PR reviewed percentage measures the proportion of pull requests (PRs) that have been reviewed (irrespective of who reviewed) compared to the total number of PRs merged during a specific time period.

This percentage is calculated using all PRs merged within that period. For the selected teams, it only includes PRs created by team members.

#### Related article

{% content-ref url="/pages/rCCVl6PcU9i0FwS9a0ur" %}
[Best Practices for Ensuring Strong Pull Request Review Coverage](/improve-performance/how-to-improve-quality/best-practices-for-ensuring-strong-pull-request-review-coverage)
{% endcontent-ref %}

{% content-ref url="/pages/d0Bwgwr0hUbUY391RVlY" %}
[Best Practices for Team Ownership in Code Review](/improve-performance/how-to-improve-quality/best-practices-for-team-ownership-in-code-review)
{% endcontent-ref %}

{% content-ref url="/pages/XtcnkpSORD6EHmnzIbFq" %}
[Why do some metrics like PRs reviewed or merged have more than 100%?](/faqs/metrics-and-data-faqs/why-do-some-metrics-like-prs-reviewed-or-merged-have-more-than-100)
{% endcontent-ref %}


# Flashy Reviews

<div data-with-frame="true"><figure><img src="/files/hIR36wKLMKLLkTBEtrG1" alt="" width="563"><figcaption></figcaption></figure></div>

Flashy Reviews % shows the percentage of Pull Requests larger than 200 Lines of Code merged with less than 5 minutes of review time.&#x20;

{% hint style="info" %}
This threshold is [<mark style="color:purple;">configurable</mark>](https://hivel.gitbook.io/knowlegebase/setup/configurations-explained/branch-configurations#flashy-review) in the Settings screen.
{% endhint %}

The more flashy reviews there are, the higher the chance of production bugs in the future because large PRs needed to be reviewed thoroughly before being merged.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/48KKAvoN3y7qL2zy1Pla" alt="" width="563"><figcaption></figcaption></figure></div>

#### Related article

{% content-ref url="/pages/YrsjJ4clSaQUapwjXqhf" %}
[What happens if there are too many Flashy Reviews and how to prevent them?](/improve-performance/how-to-improve-quality/what-happens-if-there-are-too-many-flashy-reviews-and-how-to-prevent-them)
{% endcontent-ref %}


# PRs > 400 LoC

PRs > 400 Lines of Change

<div data-with-frame="true"><figure><img src="/files/o35L3WuhiUpUBrj03C7V" alt="" width="563"><figcaption></figcaption></figure></div>

#### If the number of lines added and modified in a PR exceeds 400, it's classified as PRs > 400 LoC.

* PRs > 400 LoC take longer to review, are harder to roll back, and can cause more merge conflict issues. Developers are encouraged to keep PRs smaller, which can move things faster in the pipeline.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/b6Rr5iYkqKVtTjSAVg15" alt="" width="563"><figcaption></figcaption></figure></div>


# Throughput

Metrics are displayed based on the selected time frame.

<figure><img src="/files/aEapUnp7wtPT9Nq8r0n6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ENYPY8NDhbkX7UcCsI8h" alt=""><figcaption><p>Throughput screen measures volume of work </p></figcaption></figure>

#### These are the metrics present in this section:

* **Average PR size** :  Average number of lines modified during a selected time period
* **Commits**: Number of commits pushed.
* **PRs Open**:  Pull Requests (PR) opened during the selected time period.
* **PRs Merged**: The number of PR merged in the selected time period.
* [<mark style="color:purple;">**New Work%**</mark>](/metrics-and-definitions/throughput/new-work): It shows the total lines of code added or modified.
* **Closed Issue Count** : Number of issues closed&#x20;
* **Completed story points : Number of** story points completed
* [<mark style="color:purple;">**Active Days**</mark>](/metrics-and-definitions/throughput/how-are-active-days-calculated):  Average number of days in a week that a user/team is active on GIT.&#x20;
* **Codebase Changes** : The lines of code that were added , removed or modified.
* **Review Breakdown**: PRs reviewed by selected authors during the selected time period.
* **Merge Breakdown:** PRs merged by selected authors during the selected time period.

#### Related articles

{% content-ref url="/pages/91BMQcOmKybomkJc4cGh" %}
[How to improve planning and throughput](/improve-performance/how-to-improve-planning-and-throughput)
{% endcontent-ref %}

{% content-ref url="/pages/NH67ZVY1tg8KRArK9EUv" %}
[How to track, manage, and reduce technical debt?](/improve-performance/how-to-track-manage-and-reduce-technical-debt)
{% endcontent-ref %}

{% content-ref url="/pages/XtcnkpSORD6EHmnzIbFq" %}
[Why do some metrics like PRs reviewed or merged have more than 100%?](/faqs/metrics-and-data-faqs/why-do-some-metrics-like-prs-reviewed-or-merged-have-more-than-100)
{% endcontent-ref %}


# New Work%

{% hint style="info" %}
[<mark style="color:purple;">**Understand New Work, Rework, Maintenance through examples**</mark>](/using-hivel/coding/understanding-rework-new-work-and-maintenance)
{% endhint %}

**Total lines of code added or modified.**

<div data-with-frame="true"><figure><img src="/files/abGt52yBHV1lffjYIaB0" alt="" width="563"><figcaption></figcaption></figure></div>

* Low % of New Work indicates the team is trying to change old code even to build new features, which will impact the implementation of high blast radius and poor solid principles.\
  A **low percentage of New Work** means the team is often changing old code, even when building new features. This can lead to more bugs and make the code harder to manage. It may be a sign that the **architecture needs improvement**.\
  It's a signal to review the architecture.
* More New Work, along with slight [<mark style="color:purple;">Rework</mark>](/metrics-and-definitions/quality/rework) and [<mark style="color:purple;">Maintenance</mark>](/metrics-and-definitions/quality/maintenance) is always a good sign, as it indicates solid practices are in place, and the team can go ship new features at a faster pace as code is isolated.

#### Industry Benchmarking

<div data-with-frame="true"><figure><img src="/files/o018jaivPbPIXlRxsxKu" alt="" width="563"><figcaption></figcaption></figure></div>


# How are Active Days calculated

For this calculation, we consider any GIT activity, such as regular commits, merge commits, and PRs opened, reviewed, merged, and declined.\
\
The **active day value** indicates, on average, how many days out of a seven-day week a person or team has been active. Weekends are included in the calculation to ensure any work that happens during that time is also accounted for.

{% hint style="info" %}
If the duration is >= 7 :\
**Active days** =(CurrentActiveDays / (Selected time frame) / CurrentActiveAuthors) \* 7\
\
If the duration is  < 7 :\
**Active days** =(CurrentActiveDays / (Selected time frame) / CurrentActiveAuthors) \*1
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/H3hAC5wbft4vcUwIfJ0R" alt=""><figcaption><p>Active days on Cockpit</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/mwLHMopVYCqbYHFth8oA" alt=""><figcaption><p>Active days on Activity screen</p></figcaption></figure></div>

**For example:**\
(Time frame: February 1st - 10th)

* If the team worked for 10 days in February, and you have 3 active authors contributing to the work.\
  &#x20;Active days = (10/10/3) \* 7 = 2.3
* If the team worked for only 5 days in February, and you have 2 active authors contributing.\
  • Active days = (5/10/2) \* 1 = 0.25


# PRs Open, PRs Ready to Review or Merge

### PRs Open

{% hint style="info" %}
**Definition:** "PRs Open" is a throughput metric that counts the total number of PRs that were opened for review during a specific time period you select.
{% endhint %}

**Time Dependency:** This metric is tied to the selected timeframe. It includes all PRs opened within that period, even if they have already been reviewed and merged.

You can find this metric in Cockpit, Dashboards, Activity, Dev360, and set Goals for this metric.

<div data-with-frame="true"><figure><img src="/files/k6yoWURtTTZkmnvdUwAg" alt="" width="563"><figcaption></figcaption></figure></div>

### PRs Ready to Merge or Review

{% hint style="info" %}
**Definition:** "Ready to Review" and "Ready to Merge" are filters used on the Pull Request screen to display only those PRs that are currently open, meaning they have not yet been reviewed or merged.
{% endhint %}

**Independent of time filters:** These filters are not bound by any timeframe. It dynamically shows all PRs still awaiting review or merge as of now, regardless of when they were created.

<div data-with-frame="true"><figure><img src="/files/ohhEgSWBspObCp84aZ91" alt="" width="563"><figcaption></figcaption></figure></div>


# TFVC Metrics

## TFVC Board

<div data-with-frame="true"><figure><img src="/files/78gGzDT77I6HsCm83T2S" alt=""><figcaption></figcaption></figure></div>

**The TFVC Board is a dedicated Cockpit template for engineering teams using Team Foundation Version Control (TFVC) as their source control system.**

* TFVC operates on a centralised model where developers check in changesets directly to the server. Hivel maps this workflow into engineering metrics that give leaders visibility into team throughput, branching health, integration cadence, and code volume.
* All keyword-based metrics in this board are identified through the comments attached to changesets at the time of check-in. Consistent use of comment conventions by developers is essential for these metrics to reflect accurately.

***

### TFVC Changesets

<div data-with-frame="true"><figure><img src="/files/1pVq0oJfd2vKmTsAndLL" alt=""><figcaption></figcaption></figure></div>

**Total number of changesets checked in across all branches in a project for the selected time period.**

* A high changeset count signals active development and frequent commits - a healthy practice that keeps changes small and easier to manage. A sharp drop or spike in volume may indicate blocked workflows or an unusual surge in activity worth investigating.
* Frequent check-ins reduce the risk of large, conflicting changes and are a strong indicator of a continuous integration mindset within the team.

***

### TFVC Changeset Frequency

**Average number of changesets checked in per developer per day, across all branches, for the selected time period.**

* Low frequency can be a signal of infrequent commits, prolonged work-in-progress, or blocked developers.
* A healthy and consistent frequency suggests developers are contributing in regular, manageable increments rather than batching large, risky changes into a single check-in.

***

### Forward Integration (FI)

**Changesets checked in with the keywords FI or auto-merge in the changeset comment.**

* Forward Integration is the process of merging changes from a parent branch down into a child branch, keeping it current with upstream updates. Regular FI reduces the risk of large, painful merges later in the cycle.
* A low FI count over time may indicate branches are drifting apart, accumulating merge debt that can lead to complex conflicts during integration.

***

### Reverse Integration (RI)

**Changesets checked in with the keywords integrated or RI or Merge in the changeset comment.**

* Reverse Integration is the process of merging validated changes from a child branch back up into the parent branch. A healthy RI cadence indicates that work is completing and being folded back into the shared codebase.
* Prolonged gaps in RI activity can signal stalled deliverables or branches that have diverged significantly from the parent, increasing integration risk over time.

***

### TFVC PRs Merged

<div data-with-frame="true"><figure><img src="/files/ZzrXaS1i8d7RkhZm6Aa1" alt=""><figcaption></figcaption></figure></div>

**Changesets checked in with the keyword integrated in the changeset comment.**

* In a TFVC workflow, there is no native pull request mechanism. Hivel maps the concept of a merged PR to changesets containing the keyword integrated - representing work that has been reviewed and formally accepted into a branch.
* This gives engineering leaders a TFVC-equivalent measure of delivery throughput.

***

### TFVC Release Merge Frequency

**Changesets with the keyword integrated, calculated per developer per week.**

* A consistent release merge frequency reflects a team delivering work in a steady, predictable rhythm. A declining frequency may point to bottlenecks in review or integration processes.
* This metric is particularly useful when tracking team performance across sprints or release cycles, and for comparing delivery cadence across teams of different sizes.

***

### TFVC Average LOC Added

**Average number of lines of code added per changeset, across all changesets in the selected time period.**

* A steady, moderate LOC Added average suggests developers are making meaningful contributions without introducing excessively large changesets that are harder to review and roll back.
* Very high averages may indicate large, risky check-ins, while very low averages may reflect only superficial or minor updates to the codebase.

***

### TFVC Average LOC Removed

**Average number of lines of code removed per changeset, across all changesets in the selected time period.**

* Removing code - dead code, deprecated logic, redundant implementations is a positive practice that keeps the codebase lean and maintainable.
* Monitoring LOC Removed alongside LOC Added gives leaders a balanced view of whether the codebase is growing, shrinking, or being actively refactored.

***

### TFVC Average Codebase Changes

<div data-with-frame="true"><figure><img src="/files/YpatStlxQvyTmKVBoeaj" alt=""><figcaption></figcaption></figure></div>

**Average number of lines of code modified (added + removed) per changeset, across all changesets in the selected time period.**

* Codebase Changes = LOC Added + LOC Removed. It represents the total volume of code touched in a single check-in, averaged across all changesets in the selected period.
* Monitoring this metric helps identify check-ins that are disproportionately large which are harder to validate and carry a higher risk of introducing issues into the codebase.


# AI Adoption

AI Adoption helps you track how actively your teams are using AI coding tools across your organization. Using usage data from tools like GitHub Copilot and Cursor, this section surfaces clear metrics such as who is using AI, how often it is used, and how adoption is trending over time.

Use the Copilot and Cursor subarticles to understand exactly what each metric means, how the data is collected, and how to read these views to understand AI adoption across teams.

{% content-ref url="/pages/qyLhZb2vd89rdfCz9Bu7" %}
[Copilot Adoption](/ai-adoption/copilot-adoption)
{% endcontent-ref %}

{% content-ref url="/pages/fP1NPa5eiOG31yaTMP9q" %}
[GitHub Copilot: Expanded Metrics Guide](/ai-adoption/copilot-adoption/github-copilot-expanded-metrics-guide)
{% endcontent-ref %}

{% content-ref url="/pages/f9FCbzBf98hUdw4pOJne" %}
[Cursor Adoption](/ai-adoption/cursor-adoption)
{% endcontent-ref %}

{% content-ref url="/pages/ze2P2vSRg6GXItDKS8NM" %}
[Cursor: Expanded Metrics Guide](/ai-adoption/cursor-adoption/cursor-expanded-metrics-guide)
{% endcontent-ref %}


# Copilot Adoption

{% hint style="info" %}
Follow [<mark style="color:purple;">these steps</mark>](/integrations/ai-tools/github-copilot-integration) for integrating Copilot
{% endhint %}

The **Copilot Adoption** feature in Hivel provides you with valuable insights into the usage and effectiveness of GitHub Copilot within your organization. It helps you track how teams are interacting with Copilot, whether it is being used actively, and whether it is adding tangible value to your development.

## **Usage Activity**

This section helps you track the overall interaction with GitHub Copilot, segmented into two categories:

* **Active Users**: These are users who have interacted directly with Copilot by providing at least one instruction or input (e.g., typing a request or command for Copilot to process).
* **Passive Users**: These users have not directly interacted with Copilot by providing input, but they have accepted at least one suggestion from Copilot (e.g., using an auto-completion suggestion without actively prompting Copilot).

<div data-with-frame="true"><figure><img src="/files/9eFt1OHk8bGM4rxcCt0H" alt="" width="356"><figcaption></figcaption></figure></div>

**Graph:**

* The **Usage Activity** graph shows a daily trend for both **Active** and **Passive** users.
* The graph helps you track the **adoption rate** of GitHub Copilot across the organization.

<div data-with-frame="true"><figure><img src="/files/29X8CTyHRjo4sGQT6uut" alt="" width="563"><figcaption></figcaption></figure></div>

**Average Users:**

By examining the Average Active and Passive users, you get a clear picture of how many people are actively or passively engaging with Copilot.

***

## **Suggestions Acceptance**

This section provides insights into the acceptance of Copilot suggestions by developers. It answers key questions like:

* How many suggestions are actually being accepted?
* Which programming languages are seeing the most value from Copilot?

**Graph:**

* The graph breaks down suggestion acceptance rates by **programming language**.
* You can view the acceptance data in two formats:
  * **Percentage**: The acceptance rate of suggestions in each language.
  * **Raw Numbers**: This could be either the **number of suggestions** accepted or the **number of lines** of code that have been auto-completed by Copilot.

<div data-with-frame="true"><figure><img src="/files/pvJTG5UvV4oKLfRxJyuL" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/vCcdEdTFsZWa5qA9UOZM" alt="" width="563"><figcaption></figcaption></figure></div>

<div align="center"><figure><img src="/files/gA7FbnsWhVzzok0ytaNO" alt="" width="232"><figcaption></figcaption></figure> <figure><img src="/files/Uoyy0UuRQLnu6X4SPtXd" alt="" width="204"><figcaption></figcaption></figure></div>

**Languages:**

* By default, the top **10 languages** (based on suggestion volume) are displayed in the graph. However, you can adjust the filter to view suggestions for specific languages or to focus on different parameters.

<div data-with-frame="true"><figure><img src="/files/600YEJneozkQ4t1uLO6Y" alt="" width="260"><figcaption></figcaption></figure></div>

***

{% hint style="info" %}
**Why this matters**

This data helps you make informed decisions about whether to encourage further Copilot adoption or provide training and support to improve usage across teams.
{% endhint %}


# GitHub Copilot: Expanded Metrics Guide

GitHub Copilot offers insights into user activity through its **Copilot Metrics API**, which aggregates telemetry data from the IDE. These metrics are provided by GitHub, and Hivel’s platform visualizes them. Below is a guide to understanding these metrics and their key definitions.

***

#### 🔍 **Metric Categories**

These categories break down how Copilot metrics are measured:

| **Area**          | **Metrics Covered**                                                           |
| ----------------- | ----------------------------------------------------------------------------- |
| **Adoption**      | Assigned seats, Active users                                                  |
| **Engagement**    | Suggestions shown, Suggestions accepted, Active days per user                 |
| **Effectiveness** | Acceptance rate (lines accepted vs suggested), Total lines suggested/accepted |
| **Usage Depth**   | IDE vs Chat completions, average usage per day                                |

***

#### 🧮 **Key Metric Definitions**

**✅ Total Lines Suggested**

* **Definition**: The total number of lines suggested by GitHub Copilot, including inline, block, or multi-line completions.
* **Tracked Per**: User, per day

**✅ Total Lines Accepted**

* **Definition**: The lines from Copilot suggestions that the user accepts explicitly via IDE interactions (e.g., pressing Tab or Enter).
* **Tracked Per**: User, per day
* **Notes**: Even if the accepted suggestion is later deleted, it is still logged.<br>

**✅ Acceptance Rate**

* **Formula**:

  <figure><img src="/files/tDJecbA4JbDJW6DZG88N" alt=""><figcaption></figcaption></figure>
* **Definition**: The percentage of suggested lines that were accepted. This metric is a measure of adoption, not quality.
* **Implications**: A higher acceptance rate may indicate better alignment with developer intent or greater usability.

***

#### 👥 **User Classification**

**✅ Active Users**

* **Definition**: A user who has received at least one suggestion or has interacted with Copilot Chat on that day.

**⚠️ No formal “Passive” User Metric**

* **How to Identify**: You can estimate passive behavior by checking for:
  * A seat is assigned but no suggestions received or accepted in the last X days.
  * No threshold (e.g., 10 lines/day) is explicitly set for activity.

***

#### 🧱 **Technical Foundations**

* **Telemetry**: GitHub tracks usage metrics using telemetry from the user’s IDE (with opt-in).
* **Finalization**: Metrics are finalized at the end of each UTC day and have a 1-day lag.
* **Rolling Window**: Data is available for up to 28 days of history.

**⚠️ Known Limitations**

| **Scenario**                                            | **Counted in Metrics?** | **Notes**                                                                         |
| ------------------------------------------------------- | ----------------------- | --------------------------------------------------------------------------------- |
| **Full suggestion accepted via Tab/Enter**              | ✅ Yes                   | Counts as accepted lines.                                                         |
| **Partially accepted suggestions (some lines only)**    | ✅ Yes (partial)         | Only the accepted lines are logged.                                               |
| **Copy-pasting suggestion content (manual)**            | ❌ No                    | Only interactions via IDE UI are counted.                                         |
| **Rewriting code based on AI inspiration**              | ❌ No                    | GitHub does not capture intent through telemetry.                                 |
| **Accepting a suggestion, then deleting it soon after** | ✅ Yes                   | The deletion may not be fully filtered out, possibly inflating adoption slightly. |
| **Using Copilot in offline mode**                       | ❌ No                    | No telemetry is captured, so no metrics are logged.                               |
| **Chat suggestion used but edited before insertion**    | ❌/⚠️ Ambiguous          | Depends on how the chat event was logged in the system.                           |

**Summary**: Copilot metrics may not capture the full extent of AI influence, as partial usage, copy-pasting, and inspiration-driven code revisions are not tracked.

***

#### 📦 **Sample Copilot API Payload**

Here’s an example of a typical API payload with metrics:

```json
jsonCopy{
  "timestamp": "2025-07-29",
  "active_users": 21,
  "total_code_lines_suggested": 5800,
  "total_code_lines_accepted": 1640,
  "acceptance_rate": 28.27
}
```

In this example:

* **21 active users** interacted with Copilot.
* **5,800 lines** were suggested in total.
* **1,640 lines** were accepted.
* The **acceptance rate** is **28.27%**.

***

This guide provides an overview of the key metrics available via GitHub Copilot. By understanding these metrics, you can better track adoption, engagement, effectiveness, and usage depth of Copilot in your development environment.


# Cursor Adoption

{% hint style="info" %}
To integrate Cursor and start seeing the following metrics, see [*<mark style="color:purple;">**here**</mark>*](https://docs.hivel.ai/integrations/cursor-adoption).
{% endhint %}

{% embed url="<https://hivel.storylane.io/share/ybtlnqgtwwgd>" fullWidth="true" %}

Hivel's **Cursor Adoption** feature offers detailed insights into how well the Cursor AI is being utilized within a team or whole organization and how useful it is proving to be.

***

### Overview

**User Coverage Graph**

<div data-with-frame="true"><figure><img src="/files/OGG9CosXUPHpzUWK06le" alt="" width="563"><figcaption></figcaption></figure></div>

* This graph shows the trend of **active** and **inactive** users over different time periods (weekly, monthly, quarterly).
* It provides a high-level overview of Cursor adoption across teams and helps identify periods of higher or lower engagement.

#### **Suggestions Acceptance Rate**

<div data-with-frame="true"><figure><img src="/files/uFE1aCRNM9TZ36Mg0OKp" alt="" width="563"><figcaption></figcaption></figure></div>

* This metric shows how useful users find Cursor’s suggestions. A higher acceptance rate indicates that users are finding the suggestions useful enough to directly accept them.

#### **AI vs Manual Code**

<div data-with-frame="true"><figure><img src="/files/dicRSpFh2DMR3Lkkbgr4" alt="" width="563"><figcaption></figcaption></figure></div>

* This graph helps you understand the volume of **AI-generated code** versus manually written code in your codebase.
* Even if the suggestions acceptance rate is high, this graph reveals whether users are integrating Cursor deeply into their workflow or just using it occasionally.
* A lower percentage of AI-generated code indicates that users might be using Cursor as an afterthought rather than as a central part of their workflow.

#### **AI Models and Extensions**

<div data-with-frame="true"><figure><img src="/files/SIGudrboyXmrhfwbjWnB" alt="" width="563"><figcaption></figcaption></figure></div>

* These charts show:
  * **AI Models**: Usage across different AI models in Cursor.
  * **Extensions**: Visualizes AI-generated code by programming languages
* **Note**: Both charts exclude tab completions, focusing only on the core usage.

#### A few high-level usage metrics

<div data-with-frame="true"><figure><img src="/files/KaXutZZqAV1V1yZ50skc" alt="" width="563"><figcaption></figcaption></figure></div>

**Total Paid Seats**:

* This represents the number of licensed users in the current subscription cycle.
* It is not tied to specific dates or teams, just the total number of users for the subscription.

**Active Users**:

* Active users are those who have engaged with Cursor during the selected time frame. Activities include logging in, accepting suggestions, writing code, or making requests.

**Inactive Users**:

* Inactive users are those who have not performed any actions within the selected time frame.

{% hint style="info" %}
The Active + Inactive count may differ from the Total Paid Seats because it is based on the selected timeframe and teams, which may not always match the total license count.
{% endhint %}

**Total Bubot Calls**:

* This counts the number of times **Bugbot** (Cursor's code review tool) has been used during the selected time frame.

***

### **AI Usage Analysis**

<div data-with-frame="true"><figure><img src="/files/e8XF2MZbBBCZPuR4w2qx" alt="" width="563"><figcaption></figcaption></figure></div>

The **AI Usage Analysis** tab breaks down individual user activity, showing:

* The total lines of code each user has written.
* The percentage of code that was AI-generated versus manually written.

**Cohorts for AI Usage**

<div data-with-frame="true"><figure><img src="/files/Y6o0ddmgUR744ayl4e6t" alt="" width="563"><figcaption></figcaption></figure></div>

* **High Usage (>=70%)**: These are the top users who rely heavily on AI to assist in coding.
* **Medium Usage (30-69%)**: These users make moderate use of AI in their coding.
* **Low Usage (<30%)**: These users are minimally relying on AI.

This segmentation is helpful for identifying your AI "trailblazers" (those with high usage) who can share best practices and tips with others who have low usage. By fostering collaboration between cohorts, your organization can maximize the value gained from Cursor.

***

By tracking these metrics and visualizations, you can gain valuable insights into how teams are using Cursor, who is benefiting most from its features, and where there may be opportunities to encourage greater adoption or improve workflow integration.


# Cursor: Expanded Metrics Guide

Cursor provides detailed insights into AI usage patterns via the **Admin Panel export CSV** and **Admin API**. These metrics allow admins to track code origin, suggestion interactions, and chat-based adoption for each developer on a daily basis.

***

#### 🔍 **Metric Categories**

| **Area**                 | **Metrics Covered**                                              |
| ------------------------ | ---------------------------------------------------------------- |
| **AI Contribution**      | AI vs Manual LoC, Accepted Lines Added, Composer Suggestions     |
| **Interaction Metrics**  | Tabs shown, Tabs accepted, Chat completions, Suggestions applied |
| **Coverage & Activity**  | Active status per user per day, Usage trends over time           |
| **Engagement Intensity** | Files edited, Commit activity, Frequency of usage                |

***

#### 🧮 **Key Metric Definitions**

**✅ AI Lines vs Manual Lines**

* **Total LOC**: This is directly retrieved from the Cursor API, using the sum of two specific fields in the API response (as shown in the screenshot below). It represents the total number of lines added or deleted within a given period.<br>

  <figure><img src="/files/YyhjcZyqx3uQ1NvVRGlO" alt=""><figcaption></figcaption></figure>
* **Total AI Lines Added**: The total AI lines are also calculated by summing the two specific fields in the API response, as shown in the screenshot. This represents the number of accepted lines added + accepted lines removed by AI by the developer.<br>

  <figure><img src="/files/5Ih1T7l5P09hUSe8clcy" alt=""><figcaption></figcaption></figure>
* **Manual LOC**: Manual LOC is calculated by subtracting the AI LOC from the Total LOC. In other words, **`Manual LOC = Total LOC - AI LOC`**`.`

**✅ Suggestions Shown / Accepted**

* **totalTabsShown**: The total number of suggestions displayed to the developer (autocomplete or inline suggestions).
* **totalTabsAccepted**: The total number of suggestions accepted by the developer into the code.
* **totalAccepts**: Includes all types of accepted completions, such as **Composer** or **Chat** suggestions.
* **totalApplies**: Represents the final, user-confirmed inserts into the code editor.

**✅ Acceptance Rate**

* **Formula**:<br>

  <figure><img src="/files/6yd0Jr7ALgDeum9uQoh0" alt=""><figcaption></figcaption></figure>
* **Updated Explanation**: The **Acceptance Rate** is a percentage of displayed suggestions that were accepted.&#x20;

***

#### 🌟 3 Ways of Using Cursor and How AI LOC is Calculated

Cursor provides developers with multiple ways to interact with AI suggestions. The method of interaction affects how AI LOC is calculated. Here are three common usage scenarios:<br>

**1. Using Cursor on the the right side of Cursor IDE (Standard Use)**

* **How it works**: The developer receives AI suggestions in the code editor, either as suggestions or inline code completions. These suggestions are explicitly accepted by the developer and added directly to the code.
* **AI LOC Calculation**: In this case, the **Total AI LOC** is calculated based on the lines added or deleted by the AI suggestions that the developer accepted. Both **Accepted Lines Added** and **Accepted Lines Deleted** are counted in the total AI lines.
  * **Example**: If the AI suggests adding a new function and the developer  click on **Apply** and accepts it, those lines are counted as **AI LOC**.\
    \
    ![](/files/dO25Dgp0J4rXNyhu8Jct)<br>

**2. Inline Cursor Usage**&#x20;

* **How it works**: The developer views AI suggestions by selecting a portion of code and click on Quick edit and chat with Agent or GPT odel
* **AI LOC Calculation**: In this scenario, **AI LOC is  counted**.&#x20;
  * **Example**: The developer took quick help for formatting a block of code.\
    \
    ![](/files/0Gte1lqMqT4XKJwkcoyK)

**3. Using Tab Mode (AI LOC not counted)**

* **How it works**: The developer uses the AI suggestion directly by click on tab which helps in autocompletion of the code
* **AI LOC Calculation**: **AI LOC is not counted** in this case because the developer has not accepted the suggestion as-is. In this case, you get tabs accepted.
  * **Example**: The developer needs help with autocompletion of code.\
    ![](/files/LqChymdDokXSYOBWMd8c)

#### 👤 **User Classification**

**✅ Active Users**

A user is marked as **active** if they:

* Received a suggestion.
* Edited a file with Cursor open.
* Opened Cursor Composer (chat).
* Accepted a suggestion.

**❌ Inactive Users**

A user is marked as **inactive** if no AI interaction occurred on a given day, even if the IDE was open.

* **Coverage**: Coverage charts reflect the percentage of active users daily or weekly.

**Hivel Calculations for Active/Inactive Users**:

* **Active Users** = Number of unique users with **isActive = true** at least once in the selected period.
* **Inactive Users** = Total unique users (with any usage record) - Active Users.

***

#### 🧱 **Technical Foundations**

* **Tracking**: Metrics are tracked on a per-user, per-day basis.
* **Reset**: Metrics are reset daily, with historical data available for up to 90 days prior to your integration.<br>

**⚠️ Known Limitations**

* **Cursor Suggested Lines Not Accepted**: If the lines suggested by Cursor are shown but not accepted (for instance, when the suggestion is staged but not applied to the code), **the LOC will show as 0**.
* **Copy-Pasting**: If a developer copy-pastes content from a suggestion without accepting it via the IDE, it will **not** be counted as AI lines, and the LOC will show as 0.
* **Modified Usage**: Any changes made to the code that were inspired by AI suggestions but not directly accepted (such as rewriting or modifying code based on AI suggestions) will not be tracked or counted.
* **Offline Use**: If Cursor is used offline, no data is captured. Any actions performed during offline sessions are not counted in the metrics.<br>

**Summary**: **Cursor's metrics primarily track explicit interactions** with AI suggestions and not actions like copy-pasting or modified usage. This can lead to an **underestimation of AI influence**.

***

#### 📦 **Sample Cursor Daily Record**

| **Field**                       | **Value**      |
| ------------------------------- | -------------- |
| **email**                       | <dev@acme.com> |
| **date**                        | 2025-07-29     |
| **isActive**                    | true           |
| **totalTabsShown**              | 98             |
| **totalTabsAccepted**           | 22             |
| **acceptedLinesAdded**          | 105            |
| **acceptedLinesDeleted**        | 16             |
| **composerRequests**            | 6              |
| **composerSuggestionsAccepted** | 2              |
| total**linesAdded**             | 310            |
| total**linesDeleted**           | 48             |

This sample shows interactions for one day, with detailed metrics on **suggestions shown**, **accepted**, and the number of **AI lines** added by the developer.

***

#### **FAQs**

**Q) Are Metrics Tied to Commits?**

All four metrics (totalLinesAdded, totalLinesDeleted, acceptedLinesAdded, acceptedLinesDeleted) are based on editor activity. Cursor tracks changes as they happen in the editor, not when the code is committed or pushed. The "raw count of all code changes" refers to the actual edits made in the editor, regardless of whether those changes are later committed.

**Q) If a user accepts an AI suggestion but later deletes the code or never commits/pushes it — does it still count in acceptedLinesAdded/Deleted for that day?**\
\
Yes, if a user accepts an AI suggestion, it will be counted in **acceptedLinesAdded**/**acceptedLinesDeleted** for that day, even if the code is later deleted or never committed. These metrics track the **initial acceptance** of AI suggestions within the editor.

***


# Claude Enterprise Analytics

Claude Code offers insights into user activity through IDE telemetry and Anthropic’s Usage API. Hivel captures and visualises these metrics across four areas: adoption, engagement, effectiveness, and cost. This guide documents every metric, its exact definition as shown in the dashboard, and the logic behind it.

#### Metric Categories

These categories break down how Claude metrics are measured:

| <h4>Area</h4> | <h4>Metrics Covered</h4>                                                                                             |
| ------------- | -------------------------------------------------------------------------------------------------------------------- |
| Adoption      | Total Active Users, Total Inactive Users, Total Cost, User Segments (Power / Steady / Opportunistic / Inactive)      |
| Engagement    | Suggestions Acceptance rate by mode (Edit / Write / Multi-Edit), Sessions per user                                   |
| Effectiveness | Edit Acceptance Rate, Write Acceptance Rate, Multi-Edit Acceptance Rate, Commits, PRs Opened, LOC Added, LOC Removed |

#### Key Metric Definitions

**Summary Metrics**

1. Total Active Users

* Lines of code written using AI for the selected duration.
* Displayed: Headline KPI card on the Overview tab.

2. Total Inactive Users

* Users with no lines of code generated using AI  the selected period.
* Displayed: Headline KPI card on the Overview tab.

<div data-with-frame="true"><figure><img src="/files/dilOLAgeIypZ0SAhWcXU" alt=""><figcaption></figcaption></figure></div>

#### Suggestions Acceptance

Tracks the total number of times users have accepted AI-generated suggestions from Claude. Measured separately for three interaction modes.

1. Edit Acceptance Rate

* Percentage of suggestions accepted while editing an existing code.
* Formula: Accepted Edit Suggestions ÷ Total Edit Suggestions Shown × 100
* Tracked Per: User, per day

2. Write Acceptance Rate

* Percentage of suggestions accepted while writing a new code.
* Formula: Accepted Write Suggestions ÷ Total Write Suggestions Shown × 100
* Tracked Per: User, per day

3. Multi-Edit Acceptance Rate

* Percentage of suggestions accepted while making multiple code changes in parallel.
* Formula: Accepted Multi-Edit Suggestions ÷ Total Multi-Edit Suggestions Shown × 100
* Tracked Per: User, per day
* Notes: A rate of 0% across the period indicates the Multi-Edit mode is not yet in use by the team.

#### Developer Productivity Metrics

These metrics correlate Claude usage with developer throughput. The key question they answer: in periods of high Claude usage, is developer output - measured by commits, PRs, and lines of code - also higher?

1. Commits

* Number of git commits created through Claude Code's commit functionality.&#x20;
* Purpose: Correlates Claude usage with commit frequency. High Claude activity alongside high commit counts indicates Claude is contributing to faster code delivery.
* Tracked Per: User, per week (or selected granularity)
* Attribution: Via git email matched to Hivel user account.

2. PRs Opened

* Number of pull requests created through Claude Code's PR functionality.
* Purpose: Correlates Claude usage with PR throughput. Use alongside Commits to understand whether Claude is accelerating the full delivery cycle, not just code writing.
* Tracked Per: User, per week (or selected granularity)
* Notes: Counts the PR creation event. Does not require the PR to be merged.

<div data-with-frame="true"><figure><img src="/files/whzjE0V1lQLb2tShJr1S" alt=""><figcaption></figcaption></figure></div>

3. LOC Added

* Total number of lines of code added across all files by Claude Code.
* Purpose: Shows the volume of code written so you can correlate it with Claude usage in the same period. High LOC Added alongside high token usage suggests Claude is directly contributing to code volume.
* Tracked Per: User, per week (or selected granularity)

4. LOC Removed

* Total number of lines of code removed across all files by Claude Code.
* Purpose: Shows how many lines were deleted or refactored. Correlate with Claude usage to see whether Claude is also contributing to code cleanup and technical debt reduction.
* Tracked Per: User, per week (or selected granularity)

<div data-with-frame="true"><figure><img src="/files/NveeIpUSDrAUVvSqzz8m" alt=""><figcaption></figcaption></figure></div>

👥 User Classification

Every billed user is automatically classified into one of four segments based on their Claude token usage during the selected period. Segments are calculated dynamically using a rank-based percentile formula applied to token consumption across all users in scope.

#### Segment Definitions

| <h4><strong>Segment</strong></h4> | <h4><strong>Percentile Rule</strong></h4>          | <h4><strong>Tooltip Definition</strong></h4>                             |
| --------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ |
| **Power Users**                   | Percentile ≥75% (top 25 percentile by token usage) | Top 25% of users by Claude token usage.                                  |
| **Steady Users**                  | 50th–75th percentile token usage                   | Regular Claude usage, within the 50–75th percentile.                     |
| **Opportunistic Users**           | <50th percentile, >0 tokens                        | Occasional Claude usage, below the 50th percentile.                      |
| **Inactive Users**                | 0 tokens in selected period                        | User who has licence but has no Claude usage during the selected period. |

<div data-with-frame="true"><figure><img src="/files/UsvQArX1XL4j4qBZ7orn" alt=""><figcaption></figcaption></figure></div>

#### Usage Tab: User-Level Table

<div data-with-frame="true"><figure><img src="/files/K7jbjnyUwDJJeIS0xzNW" alt=""><figcaption></figcaption></figure></div>

The Usage tab provides a sortable, per-user breakdown of every Claude metric. Switch to the Usage tab at the top of the Claude Adoption dashboard to access this view.

#### User Tags

Each user row can carry one or more tags based on their activity profile. Tags appear on individual rows and are filterable at the top-right of the Usage table (Usage > Output · High Delivery · New User).

| <h4><strong>Tag</strong></h4> | <h4><strong>Definition</strong></h4>                                         |
| ----------------------------- | ---------------------------------------------------------------------------- |
| **New User**                  | First Claude session occurred within the selected time range.                |
| **High Delivery**             | Users who are part of the top 25% by commits and pull requests created.      |
| **Usage > Output**            | High Claude activity compared to peers, with lower relative delivery output. |

Clicking a tag button at the top-right of the table filters the entire list to show only users matching that cohort. Multiple filters can be combined.

🧱 Technical Foundations

* Freshness: Metrics reflect activity up to the previous calendar day (T-3 lag). Data is finalised at the end of each UTC day.
* Retention: Historical data is available for the period configured in your Hivel workspace (default: 30 days).

This guide provides a complete reference for all metrics in the Claude Adoption dashboard. Use it alongside the dashboard to diagnose adoption patterns and build data-driven enablement strategies.


# Claude Console Analytics

The Claude Adoption feature in Hivel provides valuable insights into how your engineering teams are using Anthropic’s Claude Console. It tracks who is using Claude, how effectively they engage with its suggestions, and how that usage maps to real code delivery - helping you measure ROI and drive adoption across your organization.

Data shown includes only billed users and reflects activity/data until the previous day.

#### Summary Metrics

Three headline KPIs are displayed at the top of the Overview tab, giving an at-a-glance view of Claude engagement for the selected filters and date range:

| <p><strong>Total Active Users</strong></p><p>71</p><p><em>Users with at least 1 token used</em></p> | <p><strong>Total Inactive Users</strong></p><p>23</p><p><em>Users with zero token usage</em></p> | <p><strong>Total Cost</strong></p><p><strong>$12,699.5</strong></p><p><em>Sum of AI-generated cost (Claude Code)</em></p> |
| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |

#### Users Breakdown

<div data-with-frame="true"><figure><img src="/files/JfU7sEKny4Bc3Q0K95ai" alt=""><figcaption></figcaption></figure></div>

The Users Breakdown chart segments all billed users into four behavioral categories based on their Claude token usage during the selected period. Users are classified dynamically using a percentile-based formula applied to token consumption - so segments adjust automatically as the date range or team filter changes.

| **Segment**             | **Classification**                       | **Definition**                                                                                                  |
| ----------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Power Users**         | Top 25% by token usage (percentile ≥75%) | Top 25% of users by Claude token usage. Most deeply embedded in AI-assisted workflows.                          |
| **Steady Users**        | 50th–75th percentile token usage         | Regular Claude usage, within the 50-75th percentile. Reliable adopters with room to grow.                       |
| **Opportunistic Users** | <50th percentile, but >0 tokens          | Occasional Claude usage, below the 50th percentile. Ad-hoc engagement; good candidates for targeted enablement. |
| **Inactive Users**      | 0 tokens used in period                  | User who has a licence but has no Claude usage during the selected period.                                      |

> *Clicking any segment in the chart opens a drilldown showing the list of users in that category and their individual token usage.*

#### Suggestions Acceptance

<div data-with-frame="true"><figure><img src="/files/ajNimmuvartyiZfIfYL4" alt=""><figcaption></figcaption></figure></div>

This section tracks the total number of times users have accepted AI-generated suggestions from Claude. It answers key questions like:

* How often are developers acting on what Claude proposes?
* Which interaction modes are seeing the most acceptance?
* Are acceptance rates changing over time, and if so, why?

#### Graph

Displayed as a line chart (or bar chart - toggle available) over the selected date range. The Y-axis shows Acceptance Rate (%) and the X-axis shows the date. Toggle between three modes using the buttons in the top-right corner of the chart:

| **Mode**       | **Definition (on hover)**                                                          |
| -------------- | ---------------------------------------------------------------------------------- |
| **Edit**       | Percentage of suggestions accepted while editing an existing code.                 |
| **Write**      | Percentage of suggestions accepted while writing a new code.                       |
| **Multi-Edit** | Percentage of suggestions accepted while making multiple code changes in parallel. |

{% hint style="info" %}
**Formula:** Acceptance Rate = Accepted Suggestions ÷ Total Suggestions (per mode)
{% endhint %}

#### Commits & PRs Opened

<div data-with-frame="true"><figure><img src="/files/vILx5GkZZNcNTZH93879" alt=""><figcaption></figcaption></figure></div>

This section correlates Claude usage with developer throughput. It answers the key question: in periods of high Claude usage, is developer throughput - measured by commits and pull requests - also higher? Use this chart to understand whether Claude adoption is positively impacting the pace at which developers ship code.

Compare the Commits volume against the Suggestions Acceptance and Tokens charts to see whether periods of higher Claude engagement correspond with higher delivery output.

#### LOC Added & Removed

Shows how many lines of code were added or removed by developers in a given period, allowing you to correlate code volume with Claude usage during that same period. If Claude usage is high, does code output also increase? This chart helps answer that question.

Use this alongside Commits & PRs to understand both the frequency and the scale of code changes relative to Claude activity.

#### User Tags

Each user row can carry one or more tags based on their activity profile. Tags appear on individual rows and are filterable at the top-right of the Usage table (Usage > Output · High Delivery · New User).

| **Tag**            | **Definition**                                                               |
| ------------------ | ---------------------------------------------------------------------------- |
| **New User**       | First Claude session occurred within the selected time range.                |
| **High Delivery**  | Users who are part of the top 25% by commits and pull requests created.      |
| **Usage > Output** | High Claude activity compared to peers, with lower relative delivery output. |

Clicking a tag button at the top-right of the table filters the entire list to show only users matching that cohort. Multiple filters can be combined.

<table data-first-column-sticky><thead><tr><th>Why this matters</th></tr></thead><tbody><tr><td>Together, these metrics give you a complete picture of Claude’s impact - from who is genuinely engaged and how they are classified, to whether suggestions are trusted, to whether that trust is translating into real code delivery and at what cost. Use this data to make informed decisions about where to drive deeper adoption, where to provide additional training, and whether your Claude investment is delivering the productivity gains you expect.</td></tr></tbody></table>


# Hivel AI Impact: Overview & Insights

#### Overview

Hivel's AI Impact view draws on data from your connected AI tools - Cursor, GitHub Copilot, and Claude - to show how much of your shipped code is AI-assisted versus human-written. It surfaces patterns and trends over time, helping teams understand adoption and measure its effect on developer productivity.

**What you'll see**

* AI vs. human contribution, based on signals from integrated tools
* Aggregated trends for a clearer team-level view

#### Why teams use this view

AI tool dashboards tell you how much AI is being used. The AI Impact screen helps you connect that usage to what actually matters - how it's **influencing cycle time, throughput, review time, and other engineering metrics**.

Instead of tracking adoption in isolation, teams can start to see whether increased AI usage is translating into meaningful improvements across the board.

<div data-with-frame="true"><figure><img src="/files/q602P1tFvOnROm3Y4pQm" alt=""><figcaption></figcaption></figure></div>

#### User adoption categories

To help you quickly understand adoption at the individual level, Hivel groups users into categories based on AI usage within the selected time range.

* Inactive: 0%
* Occasional: 1–30%
* Regular: 31–70%
* Power: 71–100%

#### Trends over time

<div data-with-frame="true"><figure><img src="/files/GfNyd67QNNB1wBoMH6ja" alt=""><figcaption></figcaption></figure></div>

The screen also highlights how adoption changes over time.

* **Team AI usage trends:** understand which teams are leading adoption and where additional enablement may help.
* **Developer distribution trends:** see how usage is distributed across developers and how it shifts over time.

<div data-with-frame="true"><figure><img src="/files/OAuwv1I2DeLVPaJbwH1j" alt=""><figcaption><p>Developer distribution across categories and split of Human vs AI generated code</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/GNuETKLEb9Txfkv7rdaX" alt=""><figcaption><p>Developer distribution trend</p></figcaption></figure></div>

***

#### **A note on Code Telemetry**

For teams with Code Telemetry enabled, Hivel also processes commit-level data to independently verify and enrich AI classification signals. If commit details have not been processed for a given PR, telemetry collection for that PR may be incomplete, which can affect classification accuracy. This is separate from the integration-based signals described above and is typically relevant for teams running advanced pipeline configurations.

<div data-with-frame="true"><figure><img src="/files/wnLJduR5yBC5N71a8IYL" alt=""><figcaption></figcaption></figure></div>

**Common questions on Code Telemetry**

*Why might Hivel show lower AI usage than other dashboards?*

In most cases, discrepancies are caused by one of the following:

1. Unmerged pull requests (only merged code is included).
2. Processing delays for very large PRs.
3. Historic data has not been synced, which can limit comparisons.

*How the confidence score is summarized*

* Code blocks within a PR are evaluated individually.
* At the PR level, the confidence score generally scales with the amount of code in the PR. In practice, larger PRs tend to yield higher confidence, while smaller PRs tend to yield lower confidence.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>More about Code Telemetry</td><td><a href="/pages/8l1IV2qM1p1LERBAcLc0">/pages/8l1IV2qM1p1LERBAcLc0</a></td></tr></tbody></table>

***

**Conclusion**

Hivel's AI Impact screen provides a practical, production-focused way to understand AI usage and impact across teams and developers - so you can scale AI tooling with clarity and confidence.


# Code Telemetry FAQs

How to Understand AI Written Code, With the Right Expectations

### Why Code Telemetry exists

AI assisted coding is now part of everyday development, but most teams struggle to answer one core question with confidence:

**How much of the code that actually ships is written by AI, and what does that mean for delivery?**

Code Telemetry exists to give teams a **clear and practical signal** to reason about AI usage over time. It is not designed to prove authorship or establish facts. It is designed to help teams see patterns and trends in shipped code.

***

### What Code Telemetry shows, and what it intentionally does not

Code Telemetry provides a **directional estimate** of:

* Approximately how much merged code is AI written
* Approximately how much is human written

This analysis is done on **pull request diffs of code that is merged and shipped**, not on editor activity or AI suggestions.

Just as important is what Code Telemetry does *not* claim.

It is not:

* A factual determination of who wrote a specific line of code
* A developer monitoring or enforcement tool
* A benchmarking metric across teams or organizations
* A one to one causal measure

AI models themselves are probabilistic and opaque. Any system analyzing their output must work on signals, not certainty. Code Telemetry is designed with that reality upfront, not hidden behind precise looking numbers.

***

### Confidence Score and what it really means

Alongside AI and human percentages, Code Telemetry surfaces a **confidence score**.

This score reflects how confident our algorithm is in the classification it has made for a given PR diff.

* Higher confidence means stronger and clearer authorship signals were detected
* Lower confidence means signals were weaker, mixed, or ambiguous

Even at very high confidence, the result represents our algorithm’s **best judgement**, not an absolute truth. We show confidence explicitly so teams can understand reliability instead of assuming certainty.

***

### How Code Telemetry differs from Cursor or Copilot metrics

Many tools like Cursor or Copilot provide AI usage metrics, but they answer a different question.

IDE level metrics:

* Track AI usage inside a specific tool
* Measure suggestions generated or accepted
* Only capture activity within that environment
* Do not account for copy paste or code generated elsewhere

Code Telemetry is different by design:

* It is **tool agnostic**
* It does not depend on IDE or assistant telemetry, and it does not assess which LLM or model is used to generate code
* It analyzes the **code that actually reaches production**
* It captures AI usage regardless of how or where the code was generated

In simple terms, IDE metrics show **AI usage in the editor**, while Code Telemetry shows **AI impact in shipped code**.

Over time, we plan to incorporate available IDE level signals, such as Cursor’s own metrics, to further improve accuracy. Code Telemetry will always remain independent and focused on production reality.

***

### How to read Code Telemetry correctly

The right way to use Code Telemetry is to look at **trends over time**, not isolated numbers.

It helps answer questions like:

* Is AI usage increasing or stabilizing across teams?
* How does increased AI usage align with delivery metrics?
* Is AI adoption translating into faster or smoother shipping?

**Example**:

A team moves from:

* 7 day cycle time with \~20 percent AI written code

To:

* 5 day cycle time with \~40 percent AI written code over a few months

This does not prove causation.\
But it is a **credible directional signal** that increased AI usage may be contributing to faster delivery.

That is the level of insight Code Telemetry is designed to support.

***

### How not to use Code Telemetry

To avoid misinterpretation, Code Telemetry should not be used to:

* Compare teams against benchmarks
* Rank individuals or teams
* Draw direct cause and effect conclusions
* Make decisions based on single data points

Its value comes from **patterns**, not precision.

***

### Code Telemetry and AI Impact

Code Telemetry forms the foundation for the AI Impact feature.

Once we understand how much AI written code is actually shipped, AI Impact analyzes how that usage aligns with downstream engineering metrics such as:

* Cycle time
* PR throughput
* Review velocity
* Commit frequency

AI Impact does not assume AI is good or bad.\
It simply shows how AI usage in shipped code corresponds with changes in engineering outcomes.

***

<h3 align="center"><strong>In summary</strong></h3>

* Code Telemetry is a **directional signal**, not a factual claim
* It works on **shipped code**, not IDE activity
* Confidence scores add transparency, not certainty
* It is best used to understand trends over time
* Its real value comes from pairing it with delivery metrics

With the right expectations, Code Telemetry helps teams reason clearly about AI adoption without overclaiming accuracy or intent.


# Best Practices

Unlock the full potential of Hivel’s integrations by following these best practices. This guide is designed to help you streamline your workflows, boost team collaboration, and achieve consistent, impactful results. Whether you're optimizing for efficiency, minimizing errors, or ensuring smooth coordination across tools, these best practices will set your team up for success. Dive in to discover strategies that elevate both your integration experience and your overall productivity.

***

{% content-ref url="/pages/2c4Ub6CCMTJyaw6zYcAT" %}
[Best Practices for Software Development Efficiency](/best-practices/best-practices-for-software-development-efficiency)
{% endcontent-ref %}

{% content-ref url="/pages/GS2QBXfEZTCTgEK8rIf6" %}
[Jira Best Practices](/best-practices/jira-best-practices)
{% endcontent-ref %}

{% content-ref url="/pages/ICxYHWezFtP5FsbyBsgD" %}
[Best practices for AI usage](/best-practices/best-practices-for-ai-usage)
{% endcontent-ref %}

{% content-ref url="/pages/RkYFJnSkO5SfzUoevCby" %}
[AI usage - PR checklist + Prompt Cookbook + Cursor Rules](/best-practices/ai-usage-pr-checklist-+-prompt-cookbook-+-cursor-rules)
{% endcontent-ref %}


# Best Practices for Software Development Efficiency

Streamlining your software development process isn't just about writing code; it's about creating a cohesive, efficient workflow. By adhering to these best practices, you'll not only enhance code quality and team collaboration but also achieve the most insightful visualizations on Hivel, ensuring your projects stay on track and transparent.<br>

1. <mark style="color:purple;">**Keep it Bite-Sized:**</mark> Aim for code chunks under 400 lines. Smaller segments are your friends—they're easier to digest, test, and keep bug-free. Few companies go as low as 80 lines per PR.&#x20;
2. <mark style="color:purple;">**Kick Off with Commits**</mark><mark style="color:purple;">:</mark> Create a separate branch for each feature development task. As soon as you have a logical conclusion, do a commit - commit early and often. Avoid bundling all changes into a single, large pull request at the end of development.
3. <mark style="color:purple;">**Peer-Reviews:**</mark> Implement a review branch configuration to ensure all PRs are reviewed by someone other than the author before merging. This process helps catch errors, improve code quality, and maintain consistency. Dedicate focused time to PR reviews, especially for larger changes, as thorough reviews are crucial for preventing production bugs and reducing technical debt. Aim for 100% PR review coverage, prioritizing quality over speed to maintain high code standards.
4. <mark style="color:purple;">**Quality Over Speed:**</mark> When reviewing PRs, take your time, especially with the larger ones. A thorough review today saves a headache (and a bug) tomorrow. Avoid flashy reviews (reviewing large chunks of code in few minutes).&#x20;
5. <mark style="color:purple;">**Track and Plan:**</mark> Always use story points, assignees, and epics in your Jira tickets. It's not just paperwork; it's about making your work visible and planning effectively. No story points for tickets means reduced velocity for work being done, which is like getting no credit for your hard work.
6. <mark style="color:purple;">**Connect the dots:**</mark> Include the Jira ticket ID in your commits and Pull Requests. It creates a clear trail linking your code changes to specific tasks, making it easier to understand the context and purpose of modifications. This practice ensures all your work is properly documented and accounted for, enhancing traceability and project management.
7. <mark style="color:purple;">**Merge over Squash**</mark><mark style="color:purple;">:</mark> Use merge commits when integrating changes to maintain a clear history, preserving the context of individual modifications and making it easier to track the evolution of features over time.
8. <mark style="color:purple;">**Embrace Testing:**</mark> Write tests for your code, including unit, integration, and end-to-end tests. Testing ensures your code does what it's supposed to do and helps catch issues early. While it may sound like slowing down, it actually will speed up the overall process.&#x20;
9. <mark style="color:purple;">**Keep It Clean:**</mark> When building new features, refactor surrounding code to improve readability and maintainability. Pay special attention to areas or repositories experiencing frequent rework, as these are prime candidates for refactoring. Regular refactoring keeps your codebase clean, reduces technical debt, and makes development more efficient in the long run.
10. <mark style="color:purple;">**Document Wisely:**</mark> Write clear, concise documentation for your code and features. Good documentation helps others understand your work and saves time when revisiting old code.
11. <mark style="color:purple;">**Engage in Dialogue:**</mark> Leaving comments on the PR is a good practice that encourages open discussion, provides clarity on decisions made, and creates a record of the thought process behind the code changes.
12. <mark style="color:purple;">**Tag that hotfix!**</mark> Implement a systematic approach to differentiate hotfix PRs from regular ones. We suggest using 'hotfix'-related keywords in branch names or adding specific labels to hotfix PRs for easy identification later on.
13. <mark style="color:purple;">**Sprint Ready: Plan, Tag, and Launch!**</mark> Before kicking off any sprint, aim to plan and tag most work to sprints. This gives developers clear visibility into upcoming tasks, allowing them to hit the ground running when the sprint starts.
14. <mark style="color:purple;">**Distinguish production vs. non-production bugs:**</mark> Establish a way to distinguish between production issues and in-sprint issues to improve prioritization and resolution. Common approaches include using a field to tag whether an issue is a production or in-sprint issue, or using separate issue types for each.


# Jira Best Practices

## Jira Board Hygiene and Sprint Best Practices

Maintaining clean and well-structured Jira boards is essential for reliable sprint planning, predictable delivery, and trustworthy reporting. The practices below are designed to minimize manual effort while maximizing clarity for both developers and leaders.

***

### 1. Before the Sprint Starts

#### Create Tickets Ahead of Sprint Start

All work intended for a sprint should already exist in the backlog before sprint planning begins.

* Create tickets in the backlog and move them into the sprint only after discussion.
* Break down large pieces of work into small, actionable tickets that can be completed within a sprint.
* Avoid creating tickets directly inside an active sprint unless they are truly unplanned.

Why this matters\
Pre-created tickets allow planning to focus on sequencing and tradeoffs rather than discovery under time pressure.

***

#### Assign Story Points During Planning

Every ticket entering the sprint should have story points assigned.

* Estimation should consider complexity, scope, and uncertainty, not individual developer speed.
* Points should be agreed upon collaboratively during sprint planning.
* Unestimated tickets should not be pulled into the sprint.

Why this matters\
Consistent estimation improves velocity tracking and makes future sprint planning more predictable.

***

#### Link All Tickets to Epics

Every ticket should be associated with an Epic.

* Epics represent higher-level goals, initiatives, or customer outcomes.
* Epic linkage enables roll-up reporting and clearer progress tracking.
* Avoid orphan tickets without an Epic unless explicitly intentional.

Why this matters\
Epics create structure and prevent Jira boards from becoming flat task lists with no strategic context.

***

#### Assign Ownership Clearly

Each ticket should have a single, clear assignee.

* Avoid assigning multiple people to one ticket.
* Avoid generic or unassigned tickets entering the sprint.
* If multiple people are involved, split the work into multiple tickets.

Why this matters\
Clear ownership improves accountability and prevents work from silently stalling.

***

#### Confirm Team Commitment Before Starting the Sprint

Before clicking **Start Sprint**, confirm that:

* All tickets have story points.
* All tickets are linked to Epics.
* All tickets have assignees.
* Developers agree the scope is realistic.

Summary\
A sprint should only be started once the board reflects committed, estimated, and owned work.

***

### 2. Once the Sprint Is in Progress

#### Limit Ad Hoc Work

Unplanned work should be the exception, not the norm.

* Only add mid-sprint tickets for urgent issues, incidents, or blockers.
* Ensure any new ticket added mid-sprint has story points and an Epic.
* Discuss the tradeoff openly in standups.

Why this matters\
Frequent ad hoc additions erode sprint predictability and distort velocity.

***

#### Actively Manage Scope

If new work must be added:

* Remove or de-scope equivalent work where possible.
* Avoid silently increasing total sprint scope.
* Make scope changes visible to the team.

Why this matters\
Stable scope preserves trust in sprint commitments and delivery metrics.

***

#### Adjust Story Points When Reality Changes

If a ticket proves significantly larger or smaller than expected:

* Update story points to reflect actual effort.
* Use this as learning for future estimation.
* Avoid retroactively changing points only to “make numbers look good”.

Why this matters\
Accurate data matters more than perfect optics.

***

### 3. Before Closing the Sprint

#### Ensure Completed Tickets Are in Done

Before closing the sprint:

* Confirm all finished work is transitioned to the Done status.
* Ensure Done reflects your team’s actual definition of done, including testing and review if applicable.

Why this matters\
Sprint reports and velocity calculations depend entirely on correct status transitions.

***

#### Do Not Carry Done Tickets Forward

Once a ticket is marked Done:

* Do not move it to the next sprint.
* If follow-up work is needed, create a new ticket instead.

Why this matters\
Moving Done tickets forward corrupts historical sprint data and reporting.

***

#### Handle Incomplete Work Cleanly

For tickets that are not finished:

* Move them to the next sprint only if work remains.
* Re-estimate if scope has changed.
* Avoid leaving stale tickets partially done across multiple sprints.

Summary\
Only unfinished work should roll forward. Completed work should stay completed.

***

### 4. Low-Effort Jira Automations and Smart Defaults

This section focuses on improvements that require **minimal ongoing maintenance** but significantly improve hygiene.

#### Automatically Enforce Required Fields

Use Jira Automation to prevent bad data from entering sprints.

Examples:

* Block sprint start if tickets are missing story points.
* Auto-comment or flag tickets without Epics.
* Warn when tickets are unassigned.

Why this matters\
Automation removes the need for manual policing during planning.

***

#### Auto-Update Fields on Status Changes

Common lightweight automations include:

* Set resolution when a ticket moves to Done.
* Auto-assign the reporter or component owner when a ticket is created.
* Clear assignee when a ticket is moved back to To Do.

Why this matters\
This keeps data consistent without adding process overhead.

***

#### Tag and Track Unplanned Work Automatically

Create an automation rule that:

* Labels tickets added after sprint start as unplanned.
* Adds them to a dedicated Epic or category.
* Optionally posts a comment explaining they were added mid-sprint.

Why this matters\
This preserves sprint integrity while still allowing urgent work.

***

#### Use Board and Workflow Guards Instead of Manual Checks

Prefer system-enforced rules over reminders.

Examples:

* Workflow conditions that prevent Done without required fields.
* Board filters that hide invalid tickets from sprint views.
* Quick filters for unestimated or unassigned tickets.

Why this matters\
Good defaults reduce reliance on individual discipline.

***

### Benefits of Following These Practices

* Clear visibility into sprint progress and risks.
* More predictable sprint planning and delivery.
* Stronger ownership and accountability.
* Cleaner historical data for velocity and trend analysis.
* Less time spent fixing Jira instead of shipping software.

***

### Final Summary

Clean Jira boards are not about process overhead. They are about creating a shared, reliable system that reflects reality.

When tickets are well-defined before the sprint, scope is managed transparently during execution, and automation handles the repetitive checks, teams gain confidence in their delivery and leaders gain confidence in the data.


# Hotfix & Jira Integration - Best Practices

To ensure high-quality insights into engineering health, we rely on clean and consistent metadata across Git and Jira. This document outlines best practices for accurately identifying hotfixes and enabling accurate metrics, such as Hotfix Resolution Rate and Hotfix Rate.  Following these practices will ensure your team’s work is properly tracked and reflected in engineering reports.

### 1. Identify Hotfixes via Pull Request Patterns

We detect hotfix PRs by scanning Git metadata for specific keywords across several fields. This is the primary method for classifying a PR as a hotfix.

#### Recommended Keywords (These can be configured based on your naming convention) :

* hotfix
* hot fix

#### Fields Scanned:

* Label
* Title
* Description
* Branch Name
* Tag

#### 🔍 Examples:

* ***hotfix/fix-auth-bug*** (branch)
*

```
<figure><img src="/files/HVEGLzqQhjQG2vTd4Xly" alt="" width="563"><figcaption></figcaption></figure>
```

* ***Hotfix: Resolve checkout crash*** (title)

<figure><img src="/files/bPFvHfGFsBkFULxspR1p" alt="" width="563"><figcaption></figcaption></figure>

* PR label: ***hotfix***
* Tag: ***v2.1.4-hotfix***
* Commit Message:

<figure><img src="/files/QrXMsFSBtfNvJUzYTPIf" alt=""><figcaption></figcaption></figure>

* The title, description can contain other task level details as well, it doesn’t have to be ONLY the ticket ID\
  For example in the below screenshot “HAT-816” is the jira ticket ID

<figure><img src="/files/05qH3Y5BSivcdXoM20iN" alt="" width="563"><figcaption></figcaption></figure>

### 2. Use Semantic Versioning for Patch Releases

Hotfixes can also be identified using version numbers that follow the semantic versioning format: x.y.z, where z (the patch number) is greater than 0.

This method is optional and must be explicitly enabled.

#### Example:

* PR title: ***Release v1.3.2***
* Branch: ***release/v1.3.2***
* Tag: ***v1.3.2***

### 3. Jira Issue Types – Use Consistent Classification

To link hotfix PRs with Jira issues, we rely on standard Jira issue types.

#### Required Setup:

* Hotfix-related tickets must use the Bug issue type.
* Ensure Jira issue types are configured consistently across teams.

### 4. What to Avoid

The following practices prevent us from generating reliable Jira-linked metrics:

* Using shared or generic Jira accounts
* Assigning issues via custom filters (e.g., using individual developers as an assignee type)
* Inconsistent or missing PR metadata (no hotfix keyword, no version tags, etc.)
* Not using or misusing Jira issue types (e.g. all issues marked as “Task”)

### Why This Matters

When these best practices are followed, you unlock the ability to track and improve:

* Hotfix Resolution Time
* Hotfix Rate
* PR-to-Jira traceability
* Team and user-level accountability metrics


# Best practices for adopting Story Points

For a thoughtful perspective from Ron Jeffries, the originator of story points, you can read his take here: [**Ron Jeffries on Story Points**](https://ronjeffries.com/articles/019-01ff/story-points/Index.html)

<details>

<summary><strong>What story points are (and what they are not)</strong></summary>

Before jumping into best practices, some important things to note:

* Story points measure **relative effort, complexity, risk, and uncertainty**, not just time.
* Over time, your team will build a velocity (story points completed per sprint) which helps you plan how much work to pull into future sprints.
* Capacity is how much your team *can* handle in a sprint, considering availability, meetings, maintenance/support overhead, etc. Story points + velocity allow you to map what your capacity looks like.

Story Points embrace the idea of true Agile where teams accept that they must iterate quickly and adapt to unforeseen circumstances. It is important to remember that story points should never be rigidly linked to specific time values. They are and should always remain an estimate of **how large a task is and how risky it might be** - capturing complexity, uncertainty, and effort in a relative sense.

👉 That said, if at any point you notice that following strict story point hygiene is creating friction, feels complicated, or is not truly benefitting your team in representing effort, don’t hesitate to revert back to basics.

In our journey, we have seen customers move fluidly between different approaches: from story points to time-based estimates, switching to T-shirt sizing, adopting Kanban tracking even while running internal sprints, or even dropping Jira entirely in favor of good old spreadsheets.

The lesson here: **try not to force teams to use story points where they may not make sense.** Often the simplest and most effective practice is to break work down into deliverables small enough (1-3 days in size) that detailed estimation becomes unnecessary.

</details>

***

With that context in mind, the following sections outline **best practices to consider when moving to a story points-based development process**

### Best Practices / Recommendations for Assigning Story Points Based on Capacity

<table><thead><tr><th width="196.6015625">Practice</th><th width="270.078125">Recommendation</th><th>Why it helps</th></tr></thead><tbody><tr><td><strong>Use a non-linear scale</strong> (e.g. Fibonacci or modified Fibonacci)</td><td>Use a sequence like 1, 2, 3, 5, 8, 13, 20 etc. You can cap or modify the higher numbers for your context.</td><td><p>Non-linear increases acknowledge that as stories grow in size, uncertainty/risk tends to increase. It makes distinguishing large vs medium tasks more meaningful.</p><p><a href="https://www.mountaingoatsoftware.com/blog/why-the-fibonacci-sequence-works-well-for-estimating"><em>A good related read</em></a></p></td></tr><tr><td><strong>Establish a baseline “reference story”</strong></td><td>Pick a simple story (e.g. bug fix or small feature) that everyone agrees is “1 point.” Use that as anchor/reference. Compare all other stories relative to that.</td><td>Helps calibrate what “1 point” actually means for your team. Without this, one person’s “3” may be another person’s “1”, making planning unreliable. This is widely recommended in agile estimation literature.</td></tr><tr><td><strong>Use velocity (average over past 3-5 sprints) to determine capacity</strong></td><td>Don’t guess how many points you’ll do; use past performance (velocity) to decide how much to commit. Adjust for holidays, support work, known overhead. </td><td>It gives realistic limits; teams that do this avoid over-committing and burnout.</td></tr><tr><td><strong>Factor in non-development/overhead work</strong></td><td>Include time for meetings, code reviews, production support, maintenance, etc. That reduces your usable capacity. For example, if someone is allocated 30% support work, the rest should be for new stories.</td><td>Without including these, estimates tend to assume 100% dev time, leading to overcommitment. Scrum / Agile coaches often mention treating these as explicit "non-story" work in sprint planning.</td></tr><tr><td><strong>Limit story size; split large stories</strong></td><td>If a story seems too big (e.g. takes more than half a sprint), break it down. Ensure most stories can be completed in a small number of days (1-3).</td><td>Smaller stories are easier to estimate, reduce risk, reduce rollback.</td></tr><tr><td><strong>Use Planning Poker or group estimation</strong></td><td>Multiple team members estimate, discuss discrepancies, converge on a consensus. Helps uncover risks / unknowns.</td><td>This is a standard practice: helps with shared understanding, surfacing hidden complexity.</td></tr><tr><td><strong>Don’t map story points directly to hours</strong> (or at least don’t rigidly enforce it)</td><td>While some teams map approximate hours to small point values for planning (e.g. “1 story point ~ 2 hours”), these mappings should be loose and revisited.</td><td>Strict time mapping defeats some of the purpose of story points (dealing with uncertainty). Many sources caution that hour-based equals can be misleading.</td></tr><tr><td><strong>Use sprints as feedback loops</strong></td><td>After each sprint, compare estimated vs actual performance. Review stories that took much longer than estimated to see what went wrong. Use those lessons to recalibrate future estimates.</td><td>Improves estimation accuracy over time; reduces mismatch of expectations.</td></tr><tr><td><strong>Don’t use points to measure individual performance</strong></td><td>Measure team delivery: the team’s velocity and capacity vs commitments. Avoid attributing individual productivity to story points.</td><td>If individuals are held to “X points per sprint,” it leads to gaming, splitting stories, inflating estimates. Several agile discussions and forums warn against this.</td></tr><tr><td><strong>Adjust for new teams / changing context</strong></td><td>New teams may not have reliable velocity. Projects with new domain or unknown tech will have extra uncertainty. Adjust your expectations (lower velocity, buffer) until data builds up.</td><td>Helps avoid overcommitment early and burn-out. Also ensures planning doesn’t assume “steady state” when many variables are uncertain.</td></tr></tbody></table>

✌️Keep buzzing, keep building - one sprint at a time.


# How to Encourage Jira Hygiene Without Creating Friction

<details>

<summary><mark style="color:$primary;"><strong>One Pager Sprint Hygiene Checklist</strong></mark></summary>

### Before Starting Every Sprint

☐ All tickets in the sprint have story points\
☐ All tickets are linked to an Epic\
☐ All tickets have a single assignee\
☐ Sprint scope has team agreement before clicking Start Sprint

***

### During the Sprint

☐ Avoid adding new tickets unless work is urgent or blocking\
☐ Any ticket added mid-sprint is clearly marked as unplanned\
☐ If new work is added, discuss scope tradeoffs in standups\
☐ Update story points only if scope or complexity truly changes

***

### Before Moving Tickets to Done

☐ Work fully meets the team’s Definition of Done\
☐ No open subtasks remain\
☐ Required fields such as resolution are set\
☐ Done reflects real completion, not just code finished

***

### Before Closing the Sprint

☐ All completed tickets are in Done\
☐ Incomplete tickets are moved to the next sprint and re-estimated if needed\
☐ Done tickets are not carried forward\
☐ Sprint is closed on time without extending dates

***

### Recommended Low-Effort Automations

☐ Flag tickets added after sprint start as unplanned\
☐ Block Done if required fields or subtasks are incomplete\
☐ Auto-set resolution when issues move to Done\
☐ Warn when issues enter a sprint without story points or Epic

***

### Board Visibility Checks

☐ Quick filter for tickets missing story points\
☐ Quick filter for tickets without Epics\
☐ Separate visibility for unplanned work\
☐ Dashboards shared with the team, not just managers

***

### Key Principle to Remember

Jira hygiene should be **automatic, visible, and enforced at key moments**.\
If it relies on reminders or manual policing, it will not scale.

</details>

Effective Jira hygiene is not about enforcing discipline through reminders. It is about configuring Jira so that clean data is the default outcome.

The steps below are ordered by **impact vs effort**.

***

### 1. Enforce Hygiene at Sprint Boundaries

Sprint boundaries are the single most important control point.

#### What to enforce

Before starting a sprint, ensure that:

* All work items in the sprint have story points
* All work items are linked to an Epic
* All work items have an assignee

#### How to implement

Option A. Sprint checklist approach

* During sprint planning, filter the backlog by “Missing story points” and “No Epic”
* Resolve these in bulk before clicking Start Sprint

**Option B. Automation approach (recommended)**

* Create a Jira Automation rule that triggers when a sprint starts
* Condition: work items in sprint missing required fields
* Action: comment on those work items or notify the sprint owner

**Reference**\
Atlassian sprint planning best practices\
<https://www.atlassian.com/agile/scrum/sprint-planning>

**Why this works**\
It prevents dirty data from entering the sprint without interrupting daily execution.

***

### 2. Require Fields Only When They Become Relevant

One of the biggest sources of friction is making fields mandatory too early.

#### Recommended pattern

* Story points required only when an issue moves into an active sprint
* Assignee required only when work starts
* Epic required for stories and tasks, not necessarily for bugs

#### How to implement

* Use workflow validators on status transitions
* Apply field requirements on “To Do → In Progress” or “Backlog → Sprint”

**Reference**\
Jira workflow conditions and validators

<https://support.atlassian.com/jira-cloud-administration/docs/configure-advanced-issue-workflows/>

**Why this works**\
Contextual enforcement feels helpful instead of bureaucratic.

***

### 3. Automate What Humans Should Not Have to Remember

Automation should handle repetitive hygiene checks silently.

#### High-impact automations to set up

1. Flag unplanned work automatically

* Trigger: issue added to an active sprint
* Action: add label “unplanned” or comment explaining it was added mid-sprint

2. Auto-set resolution on Done

* Trigger: issue transitions to Done
* Action: set resolution field

3. Warn on missing estimates or ownership

* Trigger: issue moved to In Progress
* Condition: missing story points or assignee
* Action: comment or notify

**Reference**\
Jira Automation rule library<br>

<https://support.atlassian.com/cloud-automation/docs/jira-cloud-automation/>

**Why this works**\
Automation enforces consistency without social friction.

***

### 4. Encode Definition of Done in the Workflow

Documentation alone does not enforce behavior.

#### What to enforce in Jira

* Prevent work items from moving to Done if:
  * Required fields are missing
  * Open subtasks still exist
  * QA or review steps are incomplete

#### How to implement

* Add workflow validators on the Done transition
* Optionally auto-transition subtasks when the parent issue is completed

**Reference**\
Defining and enforcing Done in Jira

<https://www.atlassian.com/blog/jira/8-steps-to-a-definition-of-done-in-jira>

**Why this works**\
It ensures Done reflects real completion and keeps reports trustworthy.

***

### 5. Use Visibility Instead of Hard Blocks Where Possible

Not every hygiene issue needs to be blocked.

#### Recommended visibility patterns

* Board quick filters for “Missing story points”
* Dashboard gadget for “Work items without Epics”
* Separate swimlane or filter for unplanned work

#### How to implement

* Leverage Hivel's dashboards for the above.

**Why this works**\
Teams naturally correct what they can see without being forced.

***

### 6. Treat Sprint Start and End Dates as Sacred

Sprint dates directly affect velocity and reporting.

#### Best practices

* Do not start sprints retroactively
* Do not extend sprints to “finish” work
* Close sprints on time even if work remains

**Reference**\
How Jira calculates velocity and sprint reports\
<https://support.atlassian.com/jira-software-cloud/docs/view-and-understand-the-velocity-chart/>

**Why this works**\
Accurate dates preserve long-term trend reliability.

***

### 7. Clarify Story Points vs Subtasks

This prevents a very common reporting issue.

#### Guidance

* Story points should live on the parent issue
* Subtasks are for execution breakdown only
* Avoid estimating subtasks unless you fully understand the reporting impact

**Why this works**\
Velocity and sprint reports rely on parent work items, not subtasks.

***

### Key Takeaway

Jira hygiene works when:

* Rules are enforced only at key moments
* Automation replaces reminders
* Visibility replaces micromanagement
* Workflow gates protect data integrity

If hygiene depends on people remembering rules, it will fail.\
If hygiene is encoded into Jira’s structure, it sustains itself.

***


# Best practices for AI usage

<table data-view="cards" data-full-width="false"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><em><mark style="color:purple;"><strong>PR checklist + Prompt Cookbook + Cursor Rules</strong></mark></em></td><td><a href="/files/1LHNcavz1H8tRiElQjmM">/files/1LHNcavz1H8tRiElQjmM</a></td><td><a href="/pages/RkYFJnSkO5SfzUoevCby">/pages/RkYFJnSkO5SfzUoevCby</a></td></tr></tbody></table>

{% stepper %}
{% step %}
[General AI coding assistant practices](https://docs.hivel.ai/best-practices/best-practices-for-ai-usage#general-ai-coding-assistant-practices)

{% endstep %}

{% step %}
[GitHub Copilot - usage best practices with examples](https://docs.hivel.ai/best-practices/best-practices-for-ai-usage#github-copilot-usage-best-practices-with-examples)

{% endstep %}

{% step %}
[Cursor - usage best practices with examples](https://docs.hivel.ai/best-practices/best-practices-for-ai-usage#cursor-usage-best-practices-with-examples)

{% endstep %}

{% step %}
[Claude Code - best practices](https://docs.hivel.ai/best-practices/best-practices-for-ai-usage#claude-code-best-practices-for-developers)

{% endstep %}

{% step %}
[Safeguards for Responsible AI Use](https://docs.hivel.ai/best-practices/best-practices-for-ai-usage#safeguards-for-responsible-ai-use)

{% endstep %}
{% endstepper %}

## General AI coding assistant practices

### Start with a clear intent, then constrain the task

**How to do it**

* State goal, constraints, definition of done, and the exact files or interfaces involved.
* Prefer short iterative prompts that build on the current diff.

**Example**\
“Add optimistic updates to `IssueList.tsx` using React Query. Keep existing typing. Update `useIssues.ts` to invalidate the `issues` key only on success. Provide a minimal diff and a 3-item test plan.”\
\
**Why**\
Specific context reduces ambiguity and improves suggestion quality. GitHub’s prompt engineering guidance stresses being explicit about functions, files, and context. \
[GitHub Docs](https://docs.github.com/en/copilot/concepts/prompt-engineering?utm_source=chatgpt.com)

### Always review, test, and secure

**How to do it**

* Ask the assistant to write unit tests first for risky changes, then code to make them pass.
* Run linters, code scanning, secret scanning, and CI before merge.

**Copilot prompt example**\
“Generate Jest unit tests for `calculateDiscount.ts` that cover 0, boundary, and invalid inputs. Do not stub business rules. Next, propose code changes to make all tests pass.”\
\
**Why**\
GitHub recommends combining Copilot with tests and automated scanning, and shows step-by-step test generation flows. This ties usage to shipped quality instead of raw acceptance.\
\
**Security checklist to apply during review**

* Validate inputs on the server, never trust user input.
* Do not log secrets or tokens.
* Guard auth, authorization, and output encoding paths.

Reference [OWASP quick checks](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/stable-en/02-checklist/05-checklist?utm_source=chatgpt.com) for input validation.

### Make metrics reflect shipped quality

**How to do it**

* Pair activity metrics with outcomes like merged PRs, test pass trends, rework, and defects.
* Read acceptance together with language or area, not in isolation.\
  Your Copilot and Cursor pages encourage acceptance and language breakdowns. Use them with outcome signals to avoid vanity measures.

### Keep developers accountable

**How to do it**

* Require a human LGTM for AI-assisted diffs.
* Keep architecture and security decisions in team's hands.
* GitHub’s secure use guidance and enterprise docs reinforce human review and policy controls.

### Document decisions inside the PR

**How to do it**

* Ask the tool to draft the PR description and test plan, then add your rationale, edge cases, and rollout plan.

**Example PR note template**\
“Intent: add optimistic updates for issues. Constraints: preserve cache keys and typing. Tests: 5 unit, 1 E2E. Risk: stale cache on error. Rollback: feature flag `optimisticIssues`.”\
Copilot’s cheat sheet includes commands for explaining code and creating tests that help populate this PR template.

[GitHub Chat Cheat Sheet](https://docs.github.com/en/copilot/reference/cheat-sheet)

### Protect data and IP

**How to do it**

* Do not paste secrets or proprietary payloads unless your enterprise configuration explicitly allows it.
* Use approved enterprise settings for logging and data boundaries.

### Build a learning loop

**How to do it**

* When output is off, reply with why and ask for a corrected version that follows your examples.
* Maintain a small internal “prompt cookbook” of patterns that work for your stack. GitHub’s official tips emphasize setting context, making asks specific, and iterating.&#x20;

[The GitHub Blog](https://github.blog/developer-skills/github/how-to-write-better-prompts-for-github-copilot/?utm_source=chatgpt.com) - a fun and useful read with more examples and tips.

***

## GitHub Copilot - usage best practices with examples

### Pick the right Copilot surface

**When to use inline**

* Completing a function, adding parameters, small refactors.

**When to use Copilot Chat**

* Explaining unfamiliar code, writing tests, multi-file changes, or generating a migration plan. The docs show test generation and E2E examples directly from Chat.

**Chat prompts you can copy**

* “Explain how `useRetryingFetch` works and list failure modes.”
* “Generate table-driven Jest tests for `parseDateRange` including invalid ranges.”
* “Propose a minimal diff to replace legacy crypto with `subtle.crypto` and update tests.”

### Review acceptance with intent

**Practice**

* Review the first two or three alternative suggestions. Accept the smallest correct diff. Reject verbose or speculative code.

**Inline example**

* “Show two simpler alternatives with fewer allocations and explain tradeoffs.”\
  Why: GitHub encourages scanning alternatives and giving acceptance feedback to shape future suggestions.

### Test first for risky changes

**Scenario**\
You are adding rate limiting to an API.\
\
**Chat sequence**

* “Write Jest tests for `rateLimiter.ts` that cover normal, burst, and blocked user scenarios.”
* “Generate implementation changes that pass the tests. Keep public API unchanged.”
* “Add an E2E Playwright test for the 429 response path.”

### Use Copilot in code review without skipping human judgment

* Ask: “Summarize this diff. Flag potential N+1 queries and missing input validation.”
* Keep your checklist items for secrets, validation, and authorization. GitHub’s secure practice pages advocate combining Copilot with automated scanning and human review.

### Keep Copilot scoped

* Provide only the files needed and the exact function signatures.
* Never include secrets. Use masked env values in examples.

### Interpret Copilot metrics with care

* Track suggestions accepted by language and area of code, then correlate with merged PRs, test pass rate, rework, and defects.
* If acceptance is high but rework rises, slow down and tighten review. This mirrors your “expanded metrics” emphasis on segmentation and context.

***

## Cursor - usage best practices with examples

### Seed Cursor with rules

* [Cursor Rules](https://docs.cursor.com/en/context/rules)
* Keep it focused and composable, under 500 lines.
* Include language patterns, error handling rules, test frameworks, and things to avoid. Cursor’s docs spell out how to write effective rules.
* Keep in mind, you can go ahead with setting up `.cursorrules`, but it will be deprecated soon.

### Work in small, reviewable steps

**Scenario**\
You need to add a debounce to a search box.\
\
**Composer prompt**\
“Update `SearchBox.tsx` to debounce input by 300 ms using `useCallback` and `setTimeout`. Show a minimal diff. Add a test for rapid keystrokes.”\
\
**Follow-up**\
“Explain the diff and provide one simpler alternative.”\
Why: Cursor guidance and community tips encourage iterative edits and minimal diffs.

### Make Cursor refactor your own diffs

**Scenario**\
You wrote a pagination helper.\
\
**Chat prompt**\
“Review `paginate.ts`. Reduce allocations and avoid off-by-one errors. Propose a smaller version with identical behavior and add tests for edge pages.”

### Use context intentionally

**Practice**

* Reference only files that are required for the change.
* For multi-module edits, ask Cursor to first list affected files and functions before it edits. This reduces irrelevant changes.

### Interpret Cursor metrics with care

**Practice**

* Read AI vs manual lines and acceptance rates next to merged PRs and rework.
* Sample AI-assisted PRs weekly for maintainability and security. Your Cursor docs mention capture limits, so qualitative review stays important.

### Close the loop in the PR

**Prompt**\
“Draft a PR description summarizing intent, constraints, test plan, and risk. Keep it under 120 words.”\
Then you add links to tickets and any rollout notes.

***

## Claude Code Best Practices for Developers

(Focused on improving output quality)

Claude Code can produce highly reliable, idiomatic code when given the right structure, context, and feedback. This guide focuses on how developers can systematically improve Claude’s outputs and make them more consistent, testable, and production-ready.​

### Set strong context <a href="#id-1-set-strong-context" id="id-1-set-strong-context"></a>

Claude works best when it understands your project, conventions, and constraints clearly.​

* Maintain a CLAUDE.md (or similar) at the repo root that includes:
  * Project overview, architecture sketch, and main data models.
  * Coding standards (style guides, naming, error handling, logging).
  * How to run tests, linters, formatters, and local environment.​
* Always reference concrete files and paths:
  * Paste or attach the specific files Claude should consider (e.g., `src/api/user.ts`, `tests/user.test.ts`).
  * Tell Claude explicitly which files it is allowed to edit and which are read-only.​
* Provide realistic examples:
  * Show a “good” existing function or module and say: “Match this style and patterns.”
  * Include an example request/response or input/output for APIs and CLIs.​

### Write precise, structured prompts <a href="#id-2-write-precise-structured-prompts" id="id-2-write-precise-structured-prompts"></a>

The single biggest lever on output quality is the prompt structure.​

* Use a consistent prompt template, for example:
  * Context: What the project/module does and any relevant standards.
  * Goal: One clear task, e.g., “Implement X”, “Refactor Y”, “Add logging.”
  * Constraints: Performance, security, libraries, patterns to use/avoid.
  * Tests: Existing tests, desired new tests, or explicit acceptance criteria.
  * Output format: “Return only updated code for file A and B” or “Reply with a unified diff.”​
* Avoid fuzzy asks:
  * Replace “Improve this code” with “Refactor to reduce duplication, keep behavior identical, and ensure all tests in `tests/user.test.ts` still pass.”
  * Avoid mixing multiple unrelated tasks in a single prompt; split them.​
* Make hidden expectations explicit:
  * Mention error handling strategy, logging format, null-handling, and type-checking rules.
  * Clarify which external APIs or internal services are authoritative.​

### Use tests and examples as the “truth” <a href="#id-3-use-tests-and-examples-as-the-truth" id="id-3-use-tests-and-examples-as-the-truth"></a>

Claude becomes much more reliable when tests and examples define correctness.​

* Lead with tests whenever possible:
  * Provide failing test cases first and ask Claude to “make these tests pass without breaking existing tests.”
  * If no tests exist, ask Claude to generate tests before or alongside the implementation.​
* Give table-driven or example-based specs:
  * For business rules, supply a table or list of input → expected output scenarios.
  * Ask Claude to restate these in its own words before coding to surface misunderstandings.​
* Keep tests close to the code:
  * Always show the relevant test file next to the implementation file in your prompt.
  * After code generation, ask Claude to adjust tests if behavior intentionally changes, and to explain the change.​

### Iterate in small, focused steps <a href="#id-4-iterate-in-small-focused-steps" id="id-4-iterate-in-small-focused-steps"></a>

Short, focused loops produce more accurate and maintainable code than one-shot “big bang” prompts.​

* Limit scope per iteration:
  * Aim for a single function, class, or endpoint change per prompt.
  * For large refactors, ask for a step-by-step plan first, then implement step 1, then step 2, etc.​
* Use a “plan → code → review” pattern:
  * Ask: “Propose a detailed plan to implement X in this codebase without writing code yet.”
  * Once the plan looks right, ask Claude to implement only the next step.​
* Always follow up with critique:
  * After generation, respond with specific feedback: “You missed case A; the logger format is wrong; and this must not block the main thread.”
  * Ask Claude to revise just those points, not to rewrite everything.​

### Enforce your standards in the prompt <a href="#id-5-enforce-your-standards-in-the-prompt" id="id-5-enforce-your-standards-in-the-prompt"></a>

Claude will usually conform to whatever rules you clearly and consistently enforce.​

* Embed standards in every relevant prompt:
  * Language version, style guide (e.g., PEP 8, Airbnb), type system usage, and project-specific idioms.
  * Error handling policies (e.g., domain-specific error classes, never return raw exceptions).
* Require lint- and type-clean output:
  * Say: “Write code that passes `npm run lint` and `npm run test` with zero warnings.”
  * If your toolchain is known, mention it explicitly (e.g., ESLint, mypy, pylint, detekt).​
* Standardize logging, metrics, and tracing:
  * Provide an example of a well-instrumented function and ask Claude to follow that pattern.
  * Explicitly forbid printing directly to stdout/stderr if your logging infra expects structured logs.​

### Make Claude explain and self-check <a href="#id-6-make-claude-explain-and-self-check" id="id-6-make-claude-explain-and-self-check"></a>

Getting Claude to reason about its own output catches many issues early.​

* Ask for reasoning after the code:
  * “After writing the code, briefly explain how it works and why it satisfies the requirements.”
  * “List potential edge cases this implementation might still miss.”​
* Use an explicit self-review step:
  * “Now review your code against the acceptance criteria and tests and describe any mismatches. Fix them if found.”
  * “Compare your changes against the project’s error-handling rules in CLAUDE.md and adjust.”​
* Encourage alternative designs:
  * “Propose one alternative implementation with different trade-offs (performance vs. readability), but mark clearly which one you recommend.”​

### Control file edits and diffs <a href="#id-7-control-file-edits-and-diffs" id="id-7-control-file-edits-and-diffs"></a>

Tightly controlling how Claude edits files reduces merge pain and accidental regressions.​

* Be explicit about allowed changes:
  * “Only modify the `createOrder` function in `order_service.py`. Do not change any other functions.”
  * “Add new code at the bottom of the file under the ‘// Feature flags’ section only.”
* Prefer diff-style outputs for larger changes:
  * Ask for unified diffs (`diff -u`) so you can review and apply changes safely.
  * Instruct: “Do not regenerate the whole file; produce minimal edits needed.”​
* Avoid hidden behavior changes:
  * Tell Claude to keep public signatures and observable behavior unchanged unless explicitly told otherwise.
  * If behavior must change, ask for a short changelog bullet list.​

### Use Claude for refactoring and understanding <a href="#id-8-use-claude-for-refactoring-and-understanding" id="id-8-use-claude-for-refactoring-and-understanding"></a>

Claude is strong at explaining and reshaping existing code when guided properly.​

* Clarify your refactoring goals:
  * “Reduce duplication between A and B by extracting a shared helper.”
  * “Improve readability and add comments, but do not change runtime behavior.”​
* Ask for high-level summaries:
  * “Summarize what this module does, its key responsibilities, and any code smells you see.”
  * Use the summary to confirm shared understanding before deeper changes.​
* Have Claude propose better structures:
  * “Suggest a more modular design for this code, then implement only the new interfaces and stubs first.”
  * “Identify functions that should be moved to a different module and explain why.”​

### Guide performance, security, and edge cases <a href="#id-9-guide-performance-security-and-edge-cases" id="id-9-guide-performance-security-and-edge-cases"></a>

You can push Claude to consider non-happy-path concerns explicitly.​

* Performance:
  * Clearly state constraints (“Input can be up to 1M items”, “This runs in a hot path”).
  * Ask for complexity analysis and possible bottlenecks after code is generated.​
* Security:
  * Call out relevant risks: injection, XSS, CSRF, authentication, authorization, secrets handling.
  * Ask: “Review your code for security issues in this context and fix any problems you see.”​
* Robustness:
  * Request explicit handling of nulls, timeouts, retries, and external failure modes.
  * Provide a list of edge cases and ask Claude to point to where each is handled.​

### Example prompt template <a href="#id-10-example-prompt-template" id="id-10-example-prompt-template"></a>

You can adapt this template as a standard for your team.​

* Context
  * “You are helping with a codebase described in CLAUDE.md below. This project is a \[brief description]. We use \[language, framework, style guide].”
* Files
  * “Here is the current content of `path/to/file` and relevant tests: \[paste code].”
* Goal
  * “Task: \[single, clear task]. Maintain existing behavior unless explicitly told otherwise.”
* Constraints
  * “Constraints:
    * Follow \[style guide/tools].
    * Code must pass \[tests/commands].
    * Do not modify \[list of files/functions].”
* Tests/spec
  * “Here are the test cases / acceptance criteria / examples that must hold: \[paste or describe].”
* Output format
  * “Output: Provide only the updated code for \[file(s)], as a unified diff. Then explain in 3–5 sentences how it satisfies the requirements and which edge cases it handles.”

Using a structure like this consistently can dramatically improve Claude’s code quality, reduce rework, and make outputs more predictable.

***

## Safeguards for Responsible AI Use

* **Require tests for AI-assisted changes above a size threshold**\
  Example GitHub Action: block merge if diff touches more than N lines across M files and the PR has zero new or updated tests. Copilot docs recommend automated checks and testing around AI output.
* **Block merges on security failures**\
  Example: run secret scan, SAST rules, and dependency checks on every PR. Reject if any high severity issue appears. Use OWASP input validation reminders in review.\
  [owasp.org](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/stable-en/02-checklist/05-checklist?utm_source=chatgpt.com)
* **Count only code that lands and passes CI when discussing “AI impact”**\
  Tie assistant usage to merged PRs and green pipelines rather than raw suggestion counts. This aligns with your metrics pages that caution against surface-only numbers.
* **Weekly sampling of AI-assisted PRs**\
  Have tech leads sample two AI-assisted PRs per team each week for security, clarity, and maintainability. Record findings and feed them back into rules or the prompt cookbook. Cursor rules are designed to evolve with feedback.


# AI usage - PR checklist + Prompt Cookbook + Cursor Rules

### PR Checklist / Policy: Using AI Tools Responsibly

Consider making this a page in your Engineering Handbook. Engineers should run through this checklist when using Copilot or Cursor for features, refactors, or bug fixes.

***

#### Pull Request / Code Change Policy

<table><thead><tr><th width="148.25">Step</th><th width="391.13671875">What to do</th><th>Why it matters</th></tr></thead><tbody><tr><td><strong>Capture Context Before AI Use</strong></td><td>In your PR or before prompting AI, clearly define:<br>• The goal (feature/fix/refactor)<br>• The constraints (performance, memory, dependencies, DB schema, API contracts)<br>• Existing patterns/style (coding conventions, error handling, package structure)<br>• What must / must not change (e.g. avoid breaking public APIs)</td><td>This ensures the AI’s suggestions are aligned with architecture/style and reduces dangerous drift.</td></tr><tr><td><strong>Use Good Prompts / Rules</strong></td><td>Use structured prompts:<br>• State the goal<br>• Supply relevant context (file snippet, types/interfaces)<br>• Ask for test coverage/error handling/security as needed (see Prompt Cookbook below)<br>• Limit the scope (one file, or one small change)</td><td>Better prompt → higher quality suggestions. Helps make suggestions easier to review.</td></tr><tr><td><strong>Review AI Suggestions Like Code Reviews</strong></td><td>When you see AI generated or assisted code:<br>• Read it line-by-line<br>• Check correctness, edge cases, security, resource use, database effects<br>• Ensure readability, maintainability, naming &#x26; consistency with team style<br>• If using Copilot: experiment with alternative suggestions; pick the best one.</td><td>Prevents introducing bugs or messy code. Ensures AI is augmenting, not replacing human oversight.</td></tr><tr><td><strong>Tests, Error &#x26; Boundary Cases</strong></td><td>Always ensure:<br>• Unit tests / integration tests cover new or changed logic, especially for edge cases<br>• Error handling, failure modes are considered (invalid input, timeouts, nulls etc.)<br>• Database transactions are safe, schema compatibility maintained.</td><td>Many AI outputs fail at boundary conditions. Testing ensures code works as expected.</td></tr><tr><td><strong>Security / Sensitive Data Review</strong></td><td>• Don’t paste secrets or credentials into prompts or code.<br>• Use static analysis / code scanning for security vulnerabilities.<br>• Review for injection risks, permission leaks, untrusted inputs.<br>• Keep modules that access sensitive data under tighter human review.</td><td>AI may suggest insecure patterns. Avoid accidental data exposure.</td></tr><tr><td><strong>Fit With Existing Architecture &#x26; Dependencies</strong></td><td>• Make sure suggested code plays nicely with existing services, modules, patterns.<br>• Avoid duplicating functionality, violating modular boundaries.<br>• Upkeep dependency versions and compatibility.</td><td>Keeps maintainability high and avoids technical debt.</td></tr><tr><td><strong>Document Changes &#x26; Rationale</strong></td><td>If you accept an AI suggestion that changes logic/design:<br>• Write in PR description what was changed, why.<br>• Indicate what trade-offs were made.<br>• If AI used rules / patterns, reference them.</td><td>Helps reviewers understand why AI was used; aids future maintenance.</td></tr><tr><td><strong>Code Review Signoff &#x26; Ownership</strong></td><td>• Even if AI wrote a lot, a human must own the change.<br>• Reviewers should verify code quality, tests, performance.<br>• Do not use “AI did it” as justification for skipping review.</td><td>Accountability + high quality.</td></tr><tr><td><strong>Monitor Post-Merge Behavior</strong></td><td>After merging:<br>• Track fallout: bugs, regressions, customer issues.<br>• If this change increases errors / rejects during QA, revisit the usage.<br>• Retrospect what worked / what didn’t.</td><td>Data ensures learning and iteration; metrics reflect reality.</td></tr><tr><td><strong>Continuous Improvement</strong></td><td>• Periodically share best prompt examples internally.<br>• For Cursor - Update rules or style guide based on what suggestions are bad / common failures.<br>• Run occasional audits of AI-assisted PRs to see where suggestions consistently fail.<br>• Collect peer feedback.</td><td>Helps reduce noise, improve quality over time.</td></tr></tbody></table>

***

### Prompt Templates / Examples

Here are good prompt patterns you or your team can adopt. Use or adapt in the AI assistants.

<table><thead><tr><th width="157.4765625">Task</th><th width="368.25">Prompt Template</th><th>Notes / Things to Include</th></tr></thead><tbody><tr><td><strong>Feature Implementation</strong></td><td><em>“Implement a <code>&#x3C;feature></code> in <code>&#x3C;component / service></code> that does <code>&#x3C;behavior></code>. Use <code>&#x3C;libraries></code> if relevant. Write unit tests as well. Ensure error handling for invalid inputs, timeouts, and DB failures. Match existing coding style.”</em></td><td>Include the goal, the component or module name, test requirements, error / edge conditions, match style.</td></tr><tr><td><strong>Refactor / Clean Up</strong></td><td><em>“Refactor method <code>&#x3C;methodName></code> in <code>&#x3C;file></code> to simplify logic. Preserve existing behavior and API contract. Add tests if coverage is low. Ensure naming and error handling follow team conventions.”</em></td><td>Helps preserve correct functionality. Trigger deeper thinking.</td></tr><tr><td><strong>Bug Fix</strong></td><td><em>“Fix bug where <code>&#x3C;describe bug></code> in <code>&#x3C;module></code> (e.g. “when user submits empty field, backend 500s”). Include tests reproducing bug and fix. Also review for similar occurrences elsewhere.”</em></td><td>Including description and reproducibility helps. Asking to scan for similar patterns improves code hygiene.</td></tr><tr><td><strong>Performance / Optimization</strong></td><td><em>“Optimize the query in <code>&#x3C;module></code> retrieving <code>&#x3C;data></code> from Postgres. Consider indexes, limit/pagination, avoid N+1, use appropriate joins. Retain readability and maintainability. Show before/after rationale.”</em></td><td>Encourages thinking about performance tradeoffs.</td></tr><tr><td><strong>Security / Sanitization</strong></td><td><em>“Add input validation, sanitization, and secure practices for <code>&#x3C;endpoint / service></code> that takes user input. Ensure prevention of SQL injection, XSS, unauthorized access. Write tests for invalid inputs.”</em></td><td>Promotes safer code.</td></tr><tr><td><strong>Code Review Helper</strong></td><td><em>“Review this diff / file: <code>&#x3C;paste snippet></code>; point out issues for readability, maintainability, test coverage, security, style mismatches. Suggest small fixes or improvements.”</em></td><td>Useful to catch oversights before PR.</td></tr><tr><td><strong>Writing Tests</strong></td><td><em>“Write unit tests(s) for <code>&#x3C;component / service></code> that cover success cases, invalid inputs, error paths. Use <code>&#x3C;test framework></code>.”</em></td><td>Ensures test coverage.</td></tr><tr><td><strong>Database Schema Changes / Migrations</strong></td><td><em>“Suggest a migration to introduce <code>&#x3C;new column / table></code> while preserving existing data. Write migration script. Update service layer and repository accordingly. Ensure backward compatibility.”</em></td><td>Important for DB-safe evolution.</td></tr></tbody></table>

***

### Cursor Rules

Below is a sample set of rules you can keep in a repository (or global) so Cursor (or any similar AI tool) has project-level constraints and guidance.

{% hint style="warning" %}
`.cursorrules` will be deprecated in the future, hence consider updating rules directly in **Cusor Settings -> Rules**
{% endhint %}

```xml
# .cursorrules — project / team style & constraints

# General
- Use strict typing everywhere. Do not use `any` or equivalent without explicit justification.
- Always follow the project’s naming conventions for files, classes, methods, interfaces. (e.g. React: components PascalCase, hooks useCamelCase, utils camelCase; Java: classes PascalCase etc.)
- Document public / exported functions and classes with JSDoc / JavaDoc style comments.
- Error handling must log or handle expected and unexpected error paths.
- Avoid copying/pasting code. Use shared modules / utilities.

# React / TypeScript
- Prefer functional components + hooks; avoid class components per new code.
- Use ESLint + Prettier rules; enforce linting pre-commit / CI.
- For UI components: follow existing component library styles, props naming, theming tokens etc.
- Write unit tests (Jest / React Testing Library) for any component with logic (not purely presentational).

# Java / Spring Boot
- Use dependency injection; avoid `new` for dependencies in services/controllers except when encapsulated.
- Use REST controllers / service / repository separation.
- Methods should have clear single responsibility; i.e. small methods.
- Use logging (both info + error levels); exceptions should carry context.
- For database interactions (JPA or JDBC): ensure transactions handled; check for SQL injection risks; avoid raw SQL unless necessary.

# Database / Postgres
- Use parameterized queries or ORM to avoid injection.
- Follow performance best practices: indexes, limits, avoiding N+1 queries.
- Use migrations; track schema evolution; avoid destructive changes without migration plan.
- Partition / sharding only when needed; ensure explain plans used for heavy queries.

# Security / Quality
- No secrets or credentials in code or prompts.
- Use static analysis / linters / security scanning on generated code.
- Tests required for any change with business logic, error handling, external API or DB calls.
- Peer review required for changes > ~50 LOC or touching more than 1 module / package / domain boundary.

```

***

### Summary / Usage Guidelines

* For each PR, assume parts of it are AI-assisted. Always treat suggestion as draft.
* Use the checklist above as gating criteria. If fail any step (e.g. no tests, no error handling), request changes.
* Prompt templates + Rules help make suggestions consistent and aligned.


# Configurations

The Configurations screen in Hivel provides the flexibility to adjust various settings, ensuring that metrics are calculated accurately according to your organization's practices.

Here are the sections in Configurations screen:

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Branch Configurations</td><td><a href="/pages/nn79xjnPy7ieOYMCVwm9">/pages/nn79xjnPy7ieOYMCVwm9</a></td></tr><tr><td>General Configurations</td><td><a href="/pages/PoMWFRYZukuvshdpccZq">/pages/PoMWFRYZukuvshdpccZq</a></td></tr><tr><td>Hotfix Configurations</td><td><a href="/pages/0I8PaH5G1taYNbjBph1b">/pages/0I8PaH5G1taYNbjBph1b</a></td></tr><tr><td> Metric Behaviour</td><td><a href="/pages/5mI95x6KAxhQ9klXXtIC">/pages/5mI95x6KAxhQ9klXXtIC</a></td></tr><tr><td>Exclusions</td><td><a href="/pages/fux6PrD4udyDNqb49shC">/pages/fux6PrD4udyDNqb49shC</a></td></tr><tr><td>Investment Configurations</td><td><a href="/pages/RvM3KWUFMesxJ5p6cwem">/pages/RvM3KWUFMesxJ5p6cwem</a></td></tr></tbody></table>


# Branch Configurations

The Branch Configuration page in Hivel allows you to fine-tune various aspects of your branch management, ensuring accurate tracking and reporting of your development activities. Here's a detailed guide on configuring your release branches, review branches, flashy review thresholds, and PR exclusions.

#### Release Branch

The Release Branch section lets you specify the main branches to be tracked for deployment frequency, change failure rate, and mean time to restore calculations.

Ideally, these release branches represent the ones where pull requests are merged before being deployed to production - meaning any PR merged into these branches will eventually reach your live environment.

<div data-with-frame="true"><figure><img src="/files/6KEe2Z2cDJCVnvRZXZT1" alt=""><figcaption></figcaption></figure></div>

#### Review Branch

The Review Branch section is where you designate branches that are usually used for review activites. These branches are where it is usually expected for the reviewers to approve the PRs after review.

Only the PRs merged into these branches will be considered for metrics around reviews like PRs reviewed/unreviewed and Flashy Reviews.


# Branch Filters

### Overview

The Branch Filter allows you to scope metric data to specific branches or groups of branches. Administrators can configure named branch patterns (categories) that appear as filter options across the platform. When no patterns are configured, the filter defaults to showing all available branches.

#### Branch Pattern Configuration

Branch patterns are configured by users with Admin (config) permissions in the **Configuration screen -> Branch -> Branch Pattern Categorization**. There is no limit on the number of patterns that can be created.

**Each category entry includes:**

* A category name (e.g., Release, Feature, Hotfix)
* One or more branch patterns (e.g., release/\*, feature/\*)
* Multiple patterns within a single category are combined using an OR condition - a branch matching any of the patterns is included
* All patterns match against the destination branch of a pull request

<div data-with-frame="true"><figure><img src="/files/eW8aeYaL3UOPV17JVPLO" alt=""><figcaption></figcaption></figure></div>

**Pattern Matching Syntax:**

| **Pattern Format** | **Behavior** | **Example**                                          |
| ------------------ | ------------ | ---------------------------------------------------- |
| branch-name        | Exact match  | main matches only the main branch                    |
| \*branch           | Suffix match | \*-hotfix matches any branch ending with -hotfix     |
| branch\*           | Prefix match | release/\* matches any branch starting with release/ |

**Default Behavior (No Patterns Configured):**

When no branch patterns have been configured:

* Pull Request and Process screens: All branches are shown in the branch filter. Users can select branches directly and view data.
* Cockpit page: The branch filter is not displayed. Data is calculated across all branches, as before.

{% hint style="info" %}
**Note:** The absence of a branch filter on the Cockpit does not affect data completeness. All branches are included in Cockpit calculations by default.
{% endhint %}

**Behavior After Patterns Are Configured:**

Once branch patterns are saved, the behavior changes across all pages:

* The branch filter displays the configured pattern categories (not individual branches).
* No pattern is auto-selected by default - unless a default is set in user preferences.
* The filter in each metric has an option to "apply to all applicable metrics" - which applies the current filter to all the applicable metrics in the dashboard.

<div data-with-frame="true"><figure><img src="/files/tpAplHpxOtKbZ1HSxUmO" alt=""><figcaption></figcaption></figure></div>

* When the "apply to all applicable metrics" toggle is unchecked, the filter only applies to the selected metric and not the others in the dashboard.

<div data-with-frame="true"><figure><img src="/files/bwHDGuo7ydAsGTtqMQlL" alt=""><figcaption></figcaption></figure></div>

**Where is the branch filter?**

* Pull Request and Process screens: The Branch filter is **located under Advanced Filters**, along with the Label and Workspace filters.

<div data-with-frame="true"><figure><img src="/files/xPZGO8Tlkq7JaaYgpk1p" alt=""><figcaption></figcaption></figure></div>

* Cockpit: The Branch filter is part of each of the applicable metrics on a particular dashboard.

<div data-with-frame="true"><figure><img src="/files/vsYAULFbPlynU3J8gJod" alt=""><figcaption></figcaption></figure></div>

**Setting a Default Branch Pattern:**

Users can set a default branch pattern via User Profile preferences, similar to how default Team and Board selections work.

When a default branch pattern is set:

* The selected pattern is automatically applied as the branch filter when metric pages load.
* The default can be changed or cleared at any time from User Profile settings.

**Metrics Where the Branch Filter Applies:**

| **Metric**          | **Metric**     |
| ------------------- | -------------- |
| Average Pickup Time | Merge Time     |
| Average PR Size     | PRs > 400 LOC  |
| Coding Time         | PRs Merged     |
| Cycle Time          | PRs Opened     |
| Flashy Reviews      | PRs Reviewed   |
| Review Time         | Unreviewed PRs |

**Metrics Not Affected by the Branch Filter:**

The branch filter does not apply to the following metric categories. Data for these metrics is always calculated across all branches.

* Commit Metrics (Commits opened, LOC metrics, Commit Frequency, etc.)
* Release Metrics (Release Merge Frequency, Hotfix Rate, Hotfix Rework Time)
* DORA Metrics
* Jira Metrics
* Meeting and Active Days Metrics


# General Configurations

<div data-with-frame="true"><figure><img src="/files/2ONExlwdRkQjxXmIW5pN" alt="" width="563"><figcaption></figcaption></figure></div>

#### Benchmarking

This toggle enables the industry benchmarking for metrics to show up in the dashboard cards.

<div data-with-frame="true"><figure><img src="/files/aGVAkZ1SisnZ1cNbZvS3" alt="" width="563"><figcaption></figcaption></figure></div>

#### Workspaces

You can configure a bunch of repositories together to replicate the structure you have in your SCM. Once this is enabled, you will get an additional section of "Workspaces" where you can configure the repositories that should be considered for a workspace.

Post this, you will be able to filter according to workspaces.

#### Landing Page

Here, you can set the default landing page for the different roles. By default, if nothing is configured, everyone will land on the Cockpit when they log in.

<div data-with-frame="true"><figure><img src="/files/KpDNuizVaDuZnuYsuClL" alt="" width="563"><figcaption></figcaption></figure></div>


# Hotfix Configurations

In Hotfix configurations section you can specify the aspects of your SCM or project management tool based on which PRs should be considered for hotfix.

These configurations majorly affect the calculations of Change Failure Rate and MTTR.

#### Pull Request Pattern

You can specify some patterns based on which PRs will be classified as hotfixes. These patterns can be enabled to be identified in any of the attributes such as PR labels, titles, descriptions, branches, tags.

<div data-with-frame="true"><figure><img src="/files/rrme1XPgzpqyjpGVIGC7" alt="" width="423"><figcaption></figcaption></figure></div>

#### Work Item Types

You can specify work item types that represent hotfixes. The PRs associated with these work items will be considered as hotfixes.

<div data-with-frame="true"><figure><img src="/files/sZONXALKatB66HtueG3x" alt="" width="563"><figcaption></figcaption></figure></div>

#### Patch version pattern

Any merged Pull Requests (PRs) with a PR title, Source branch, or PR tags containing a version number in the format x.y.z (where z > 0) can be identified as a hotfix. [<mark style="color:purple;">Learn more about it</mark>](/configurations/hotfix-configurations/track-hotfixes-via-patch-version-pattern).


# Track hotfixes via patch version pattern

Any merged Pull Requests (PRs) with a PR title, Source branch, or PR tags containing a version number in the format **a.b.c...z** (where **z > 0**) can be identified as a hotfix.

#### Example

* `1.2.3 →` last number = 3 → hotfix
* `2.0.0.0 →` last number = 0 → not a hotfix
* `5.4.1.0.6 →` last number = 6 → hotfix

### **Steps to Enable the Hotfix Flag** <a href="#h_01hywpdm3j2gk2m1v3k6scx17a" id="h_01hywpdm3j2gk2m1v3k6scx17a"></a>

To start using this new hotfix pattern, you need to enable the corresponding flag in your organization's configuration settings. Follow these steps:

1. Navigate to the Configurations page within your Hivel dashboard.
2. Find the flag related to the new hotfix pattern. It will be listed among the available configuration options.
3. Switch the flag to "On" to enable the new hotfix pattern.

<div data-with-frame="true"><figure><img src="/files/Zd5KScBiiCpdzPeEl2Jj" alt="" width="563"><figcaption></figcaption></figure></div>

Once the flag is enabled, the system will automatically recognize any merged PRs with a version number in the format as hotfixes.

All current hotfix patterns will continue to function without interruption. Both the new and existing hotfix patterns will be recognized for calculation of "Hotfifx Rate" and "Hotfix Resolution Rate" metrics.

For any further assistance or if you encounter issues, please contact our support team at [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai).


# Metric Behaviour

In this section you can adjust rework days, enable benchmarking, workspaces, release cycles, and set file type exclusions.

#### Flashy Review

The Flashy Review section allows you to define what constitutes a flashy review for your organization, with customizable thresholds for Lines of Change and time taken to review.

<div data-with-frame="true"><figure><img src="/files/vl2zwIN10LMFLSlKAmuF" alt="" width="563"><figcaption></figcaption></figure></div>

#### Rework Days

You can adjust the threshold that should be considered for Rework.

* For changes made to code originally written within this threshold will be considered as Rework.
* For changes older than this threshold will be considered as Maintenance.

<div data-with-frame="true"><figure><img src="/files/asd0XokpyrBpEZoOwsiC" alt="" width="563"><figcaption></figcaption></figure></div>

#### Exclude File Types

You can exclude certain file types from any calculation so that unwanted data does skew up the metrics.

<div data-with-frame="true"><figure><img src="/files/C2SvYBLsDkKpCN2VJhOo" alt="" width="279"><figcaption></figcaption></figure></div>

* For our processing and calculations, we automatically exclude files and directories that start or end with the following: `.settings`, `dist`, `tmp`, `out-tsc`, `node_modules`, `bower_components`, `.idea`, `typings`, `.vscode`, `vendor/`, `coverage`.
* Additionally, if any files contain the following in their paths, they are also excluded: `src`, `assets`, `images`.
* All of these options can be adjusted on the settings page, where you can also specify additional files to be excluded.


# Enabling Hivel's AI-Powered Features

Hivel’s AI-powered features unlock deeper insights and surface meaningful patterns across your software development lifecycle, like Comment Categorization, Code Telemtry, Lucy (AI Insights Chatbot), etc.

{% hint style="success" %}
**AI Features Are Opt-In Only**

By default, all AI-powered features in Hivel are **disabled**. These features are only activated:

* Upon **explicit customer consent**, or
* When a user **enables them manually** in the settings.
  {% endhint %}

### How to Enable or Disable AI Features

<div data-with-frame="true"><figure><img src="/files/oPi71VnpUbaJMDhm2mlo" alt=""><figcaption></figcaption></figure></div>

#### Steps:

1. Go to the **Configuration** screen.
2. Scroll to the section labeled **AI**.
3. You can choose to enable all or few of the features.

> ⚠️ Turning the toggle ON allows Hivel to process select metadata via large language models (LLMs) to generate insights.

<div data-with-frame="true"><figure><img src="/files/lJb5rvH3YDgs53oBP9YG" alt=""><figcaption></figcaption></figure></div>

### Data Privacy and Security Commitments

<h4 align="center"><a href="https://www.hivel.ai/privacy-policy#:~:text=AI%20Model%20Engagement%20and%20User%20Data%20Autonomy"><strong>AI Terms and Conditions</strong></a></h4>

Hivel prioritizes **data security, anonymity, and customer trust**. Here's how we protect your information:

#### **What Data Is Shared**

Only the minimum required data is shared, and it's processed with care:

* **Anonymized data only**: No company names, author identifiers, commit hashes, ticket numbers, or branch names are sent to the AI model.
* **Aggregated content**: We batch similar types of data (e.g., commit messages or PR comments) and remove any contextual identifiers before sending.
* **Zero business logic exposure**: We do not send your source code, configuration files, or deployment secrets.
* **No access to customer environments**: AI models interact only with sanitized metadata already available within Hivel’s controlled systems.

#### **Ephemeral Processing and No Retention**

* Data is transmitted via secure APIs using **TLS encryption**.
* AI model providers do **not store** any of your inputs or outputs.
* Every interaction is **stateless** i.e. each input is processed in isolation and discarded immediately after generating the response.

### **FAQs**

#### **Is any customer code shared with AI models?**

No. We do **not** share source code, internal logic, or proprietary configurations. AI features operate only on derived metadata (like commit messages or review comments), after rigorous redaction and obfuscation.

#### **Which AI models are used?**

We use industry-grade LLMs provided by OpenAI and Anthropic, interfaced via private, stateless API calls. These providers are contractually and technically prohibited from retaining or training on your data.


# Exclusions

These configurations enable you to auto exclude PRs and Commits from the metrics, based on certain conditions.

#### Auto Exclude PRs by Cycle Time

Here you can set a threshold of cycle time days, and PRs having cycle time more than this will be excluded from all metrics.

#### Auto Exclude PRs by PR Size

Here you can set a threshold of PR size, and PRs having LoC more than this will be excluded from all metrics.

#### Auto Exclude PRs by Keywords

Here you can set a keywords which will be searched in certain attributes of the Pull Request - Title, Description, Label - any PRs matching these criteria will be excluded from all metrics.

<div data-with-frame="true"><figure><img src="/files/5UGBttwZUS1xeotRXYe4" alt="" width="563"><figcaption></figcaption></figure></div>

#### Auto Exclude PRs by Branches

By setting branch patterns, you can configure that all PRs following the set path of source and destination branches will be auto excluded from all metrics.

This can be done via 2 methods:

* Many to Many mapping
* One to One mapping

<div data-with-frame="true"><figure><img src="/files/xjuLqSjR1QMoLQhIVPAq" alt="" width="563"><figcaption></figcaption></figure></div>

#### Auto Exclude Commits from Metrics

Commits with these keywords will not be counted towards metrics.

<div data-with-frame="true"><figure><img src="/files/sEhBDEHYIxayVQtrRgSu" alt="" width="563"><figcaption></figcaption></figure></div>

> For any exclusions, only the ongoing data will reflect the changes, previous data will remain unchanged.


# Investment Configurations

#### Product and Allocation Mapping

This is where the fields for Product and Allocation can be set. Read more about the feature [here](/using-hivel/investment/how-to-set-up-products-and-allocation-tabs-in-the-investment-screen).

<div data-with-frame="true"><figure><img src="/files/1PT9WTGtmAnO8WfgNqGW" alt="" width="563"><figcaption></figcaption></figure></div>

#### Effort Data Type

Define the effort type that is being used in your team. This will enable the metrics related to these to be calculated accordingly.

<div data-with-frame="true"><figure><img src="/files/iSjI6lZNhrWyrDyqK8Ct" alt="" width="563"><figcaption></figcaption></figure></div>


# Repositories

<div data-with-frame="true"><figure><img src="/files/naIL7jM05PpvY53f84Bl" alt="" width="563"><figcaption></figcaption></figure></div>

On this configuration screen, you can control whether newly added repositories in your workspace are automatically processed and synced. You can also define repository patterns to exclude from processing. Instead of listing exact repository names, you may specify unique keywords with a wildcard character (\*) before or after the keyword. Any repository matching these patterns will be excluded on an ongoing basis.

This approach is particularly useful when you need to exclude a large or frequently changing set of repositories without managing individual names manually.


# Set Up


# Sign Up


# How to sign up to Hivel?

#### **You can sign up to Hivel using two methods:** <a href="#h_01hyn18vz1hz8swcba4yx5s5mw" id="h_01hyn18vz1hz8swcba4yx5s5mw"></a>

**1. Sign up for the platform using the invite link sent via email:**

* If an admin from your organization has invited you to join, you will receive an email to sign up for the platform.
* Simply follow the steps outlined in the email, and you'll be all set!

  * If you are an admin, please refer to this article on [<mark style="color:purple;">how to invite users to the platform</mark>](/set-up/users/how-to-invite-more-users-to-use-hivel).

  <figure><img src="/files/JnaspOOYhkw149rL0TaA" alt="" width="563"><figcaption></figcaption></figure>

**2. Sign up on the website using either Single Sign-On (SSO) or by creating an email ID and password:**

<figure><img src="/files/pRVeQdxFf2unSZo2HJGm" alt="" width="375"><figcaption></figcaption></figure>

* If you are signing up using your organization mail ID, an admin in your organization will have to approve your request.

&#x20;

**Troubleshooting:**

* **Didn't receive an email?** Check your spam or junk folder.
* **Issues with the invite link?** Ensure you are clicking the correct link and that your internet connection is stable.
* **Problems with SSO?** Contact your organization's IT support for assistance.

&#x20;

If you are still facing issues and are not able to sign up to the platform, please reach out to[ <mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai)


# Users


# How to invite more users to use Hivel?

If the user does not have a Git account, they can sign up using [<mark style="color:purple;">app.hivel.ai/signup</mark>](http://app.hivel.ai/signup)

### **If the user has a Git account then follow the below steps -**

1. Go to **Settings.**
2. Select [<mark style="color:purple;">Access Management</mark>](/set-up/access-management)
3. Click on User Management.

<figure><img src="/files/gADpOVo9L9LDNysqXDkS" alt="" width="563"><figcaption></figcaption></figure>

4\. Search for the user in the user list or use the search tab.

<figure><img src="/files/KEogJpp2eqof8H9wrJlw" alt="" width="563"><figcaption></figcaption></figure>

5\. Click on the Invite option for new users.

6\. If the user has no email ID associated with their name, manually enter the email address.

7\. Select the role based on the hierarchy.

* **Admin** *(Full access to the entire platform, responsible for managing permissions and settings)*
* **Executive** *(CTO, CEO and Founders)*
* **Leader** *(VPs, Director and Department heads)*
* **Managers** *(Team Leads, Engineering Managers and Project Managers)*
* **User** *(Developers and Engineers)*

<figure><img src="/files/WIBCxYp9VIaPUf6PvZqT" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
**Click on Continue at every step to save the progress.**
{% endhint %}

8. Assign the user to relevant teams and projects.
9. An email invite will automatically be sent to the user.

If you encounter any issues, contact <support@hivel.ai> for assistance.


# How to add or update an user's email id?

To do this, go to **Settings** → **Users**.

1. Search for the user in the search bar.
2. Click on the entry.
3. In the right panel that pops up, click on the pencil icon.
4. Add the mail ID in the field and hit "Save".

<figure><img src="/files/QKjFDZsxHKrSuU8KYfC7" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/Q58j5IYzpW518ISgmNON" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/M59tWpyk3ByvKOkrh2ss" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="warning" %}
**Please note:** You can add a user's email id if it isn't there already, **but you cannot edit an existing email id.**

Please contact [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai) to change the email id.
{% endhint %}


# How to merge users?

Sometimes, while importing users from Git, there may be a duplication of users because developers commit using their personal email ids or use the same personal access token on a different machine. In such cases you can merge multiple users into one primary user.

{% hint style="info" %}
Please note: **This action cannot be undone.** If you have mistakenly merged users together please contact [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai) for assistance.&#x20;
{% endhint %}

#### Here is how to merge users in Hivel:

1\. Go to **Settings** **→** **Users**

2\. Select the users you want to merge

<figure><img src="/files/Lh8zFof9m9kvsKzfjXF7" alt="" width="375"><figcaption></figcaption></figure>

3\. Click on the **Merge** icon.

<figure><img src="/files/ilux5ZZhBuX5ylMMfpau" alt="" width="149"><figcaption></figcaption></figure>

4\. Select a primary user

<figure><img src="/files/3GTrsK1tqVmFSX6cwqi2" alt="" width="375"><figcaption></figcaption></figure>

5\. Click **Merge**


# How to update the name of an user?

1. Go to **Settings** → **Users**.
2. Search for the user in the search bar
3. Select the edit icon next to their name
4. Edit name
5. Click **Update**


# Can I see the data of a user or repo that I don’t have access to on my SCM tool?

No, you can not access any users or repositories on Hivel if you don’t have access to them on the SCM tool.


# How to archive users?

Archiving users is essential when individuals leave the organization or when their data is no longer relevant.

Regularly doing this activity helps ensure that metrics remain accurate and free of unnecessary data.

To archive users, you can simply:

1. Go the Setting screen -> Teams
2. Select the particular users
3. Click on Archive button in the top right

<figure><img src="/files/QwRsnxdczNjFTiHqBQHi" alt=""><figcaption></figcaption></figure>

To unarchive any user, please reach out to [<mark style="color:purple;">support@hivel.ai</mark>](mailto:support@hivel.ai)<mark style="color:purple;">.</mark>


# Teams


# How to create teams?

* Go to **Settings** → **Teams** → **Create Team**

<figure><img src="/files/alskhfWxJ9oBFZbTrB9k" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ATCvCiUcnil19kFBqaoX" alt="" width="375"><figcaption></figcaption></figure>

* Enter a team name and select a team owner. Don't worry, you can always change these later if needed.
* Click **Create and add**. You can add additional members in the next step if required.
* A single team member can be added to multiple teams. This way, you can classify an engineer into their squads, engineers by seniority, location, etc.


# How to delete a team?

You can only delete teams that *you* have created. To delete a team -

1. Go to **Settings** → **Team**
2. Select a team -> then 3 dots on the right.
3. Click the delete icon.

<figure><img src="/files/ipXgLQzgImtUk25bgGbF" alt="" width="164"><figcaption></figcaption></figure>


# How to modify a team?

1. Go to Settings → Teams
2. Select the team which you want to modify.
3. You can change the team name, team owner, and add or delete team members.

<figure><img src="/files/YbqugCowtlsodBDJkLH1" alt="" width="246"><figcaption></figcaption></figure>

<figure><img src="/files/VVMz6tMY9jcL72VXLkAg" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="warning" %}
Remember to click on **Update** when you’re done editing
{% endhint %}

{% content-ref url="/pages/ThhEEtop4CvS96O8aEKL" %}
[How to add users to a team and sub-team?](/set-up/teams/how-to-add-users-to-a-team-and-sub-team)
{% endcontent-ref %}

{% content-ref url="/pages/heKXYwGIvmXg00cjgCnz" %}
[How to remove users from a team or sub-team?](/set-up/teams/how-to-remove-users-from-a-team-or-sub-team)
{% endcontent-ref %}


# How to create sub-teams?

The best way to view data in Hivel is by team. If you have a sub-team structure at your company, Hivel's got you covered too.

#### Here is how to create sub-teams in Hivel:

1\. Go to **Settings →Teams**

2\. If you don't have any teams created yet, [<mark style="color:purple;">create a team</mark>](/set-up/teams/how-to-create-teams)

3\. Select the team within which you want to create a sub-team&#x20;

4\. Navigate to Subteam menu using the toggle.

<figure><img src="/files/2mKImMPzhdnXpSCJ69qm" alt=""><figcaption></figcaption></figure>

5\. Select 'Create Subteam' and in the dialog box enter team name select a **team owner**, followed by adding other users.

<figure><img src="/files/hQYM9WXd5mNnl5XQCSFZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/PYrizzlGyVBgLH0dEu5B" alt="" width="563"><figcaption></figcaption></figure>

6\. Click **Create Subteam.**

<figure><img src="/files/9M3TJ3DYkEkLMjUbYHIA" alt="" width="563"><figcaption></figcaption></figure>

7\. You can view your sub-teams within the main team succesfully.

<figure><img src="/files/uRsez68WdsIDKi7Is24I" alt=""><figcaption></figcaption></figure>

> If the changes are not reflected immediately, refresh the the screen to reflect the changes.


# How to add users to a team and sub-team?

To add authors to a team on the Teams page in Hivel, you can follow these methods:

#### 1. **If the Team is Already Created:**

* Navigate to the **Teams** page and select the specific team you want to add authors to.
* Once inside the team, click on the **"Add Users"** button.
* In the search bar, type the name of the users you want to add, and select the applicable users from the list.
* The selected users will be added as an author to the team.

<figure><img src="/files/07JeA2s06otdV1AJgG26" alt="" width="563"><figcaption></figcaption></figure>

#### 2. **If the Team is Not Created:**

* Select all the users who should be part of the team.
* Click on the **"Create Team"** button.
* Fill in the required details about the team, such as the team name, description, and any other relevant information.
* After filling in the details, save the team. The selected users will be added as authors automatically.

<figure><img src="/files/AEIiyyyzb5hgScFPMnPv" alt="" width="563"><figcaption></figcaption></figure>

#### 3. **To add users to a sub-team**

* You can navigate directly to the subteam by expanding the parent team.

  <figure><img src="/files/VJ8c2QN2wMfFqjdilwLv" alt="" width="211"><figcaption></figcaption></figure>
* Or you can, navigate to the parent team -> then switch to Subteams section -> Select the subteam.

<figure><img src="/files/LGLfzUPzzTG0aexLhuxj" alt="" width="208"><figcaption></figcaption></figure>

* Once inside the subteam, click on "Add Users" and select all the users who should be part of the subteam.

<figure><img src="/files/fkG10sNLnV3k0vnFNYbb" alt="" width="110"><figcaption></figcaption></figure>

* After filling in the details, save the team. The selected users will be added as authors automatically.

By following these steps, you'll be able to effectively add authors to a team or sub-teams, whether it's already created or not.


# How to remove users from a team or sub-team?

To **remove users from a team or sub-team** in Hivel, follow these steps:

#### Steps to Remove Users:

1. **Navigate to the Teams page**: Go to the Teams page and select the particular team from which you want to remove users.
2. **Select the Users to Remove**: Find and select all the users that you wish to remove from the team.
3. **Click on the "Delete" Icon**: On the right corner of the user selection list, click on the **"Delete"** icon to remove the users from the team.

<figure><img src="/files/tJTGE6BQknowRkMFMON3" alt="" width="106"><figcaption></figcaption></figure>

{% hint style="info" %}
**Important**: If you **remove a user from the parent team**, they will also be removed from **all sub-teams** under that parent team.

If a user is **only removed from a sub-team**, they will **remain part of the parent team**. This is by design, as a user can be part of the larger parent team even if not part of its sub-teams.
{% endhint %}

{% hint style="info" %}
**Another Note**: Removing users from a team does not delete their data. If the user becomes part of another team later, their data will still be available and visible when that new team is selected.

To permanently remove an user from the platform, use the [<mark style="color:purple;">archive functionality</mark>](/set-up/users/how-to-archive-users).
{% endhint %}




---

[Next Page](/llms-full.txt/1)

