User Manual
Project Commander is a Jira Cloud app that can be accessed as a full-page app or as a dashboard gadget.
When you first open Project Commander, click the Settings gear icon (⚙) in the tab bar to configure the app. Three settings determine what the app shows you.
The JQL filter defines which Jira issues appear across all tabs. Enter any valid JQL query, for example:
project = PROJ — all issues in a projectproject = PROJ AND sprint in openSprints() — only open sprint issuesproject = PROJ AND labels = "release-2.0" — issues with a specific labelAll tabs share the same issue data from this filter.
If your team uses Jira sprints, enable Sprint Mode and enter your Board ID. You can find the Board ID in your Jira board URL: /boards/123.
Sprint Mode unlocks the Sprints tab (sprint planning, drag-drop, auto-level) and the Sprint Review tab. All other tabs work with or without Sprint Mode.
Choose how your team measures work:
Click Save Configuration. The app will load your data and display the appropriate tabs.
Quick Start
At minimum you need a JQL filter. Sprint Mode and Board ID are only required if you want the Sprints tab. You can use the Demand vs. Capacity, Scope, Alerts, and Plan Review tabs with just a JQL filter.
| Tab | Purpose | Requires |
|---|---|---|
| Dashboard | Single-screen project health overview with key metrics and navigation | Always visible |
| Sprints | Sprint planning with drag-drop, auto-level, and capacity tracking | Sprint Mode ON + Board ID |
| Sprint Review | What-if analysis and Monte Carlo simulation for sprints | Sprint Mode ON |
| Demand vs. Capacity | Team capacity, time off, holidays, and demand vs capacity chart | Always visible |
| Scope | Scope and burndown timeline chart with delivery forecast | Always visible |
| Alerts | Issue problems and dependency analysis | Always visible |
| Epics | Epic progress, forecasts, scope growth, and cross-epic dependencies | Always visible |
| Plan Review | Weekly timeline what-if and Monte Carlo based on due dates | Always visible |
Click the Settings gear icon (⚙) in the tab bar to open the configuration panel. Settings are saved per Jira site and shared across all users.
Settings appear in this order. Some are only visible when certain conditions are met.
| Setting | Type | Default | Visible When |
|---|---|---|---|
| JQL Filter | Text area | Empty | Always |
| Epics | Checkbox | On | Always |
| Sprint Mode | Checkbox | On | Always |
| Board ID | Number | Empty | Sprint Mode ON |
| Include Backlog | Checkbox | On | Sprint Mode ON + Board ID entered |
| Capacity Mode | Radio: Per Sprint / Per User | Per Sprint | Sprint Mode ON |
| Progress Indicator | Dropdown | Depends on Capacity Metric | Sprint Mode ON |
| Capacity Limit | Number (min: 1) | 40 (sprint) / 20 (user) | Sprint Mode ON |
| Sprint Length | Dropdown: 2/3/4 weeks | 2 weeks | Sprint Mode ON |
| Historical Lookback | Dropdown: 1–20 | 5 | Inline on Sprints and Scope tabs |
| Capacity Metric | Dropdown (or locked) | Story Points | Always (locked in Time Mode) |
| Estimation Mode | Radio: Points / Time | Points | Always |
| Time Unit | Dropdown: Hours / Days | Hours | Capacity Metric = Remaining Estimate |
| Display Columns | Multi-select with search | Key, Summary, Assignee, Story Points | Always |
| AI Features | Password field | Empty | Always |
Standard Jira JQL syntax. This query fetches the issues used across all tabs (Demand vs. Capacity, Scope, Alerts, Plan Review).
Shows or hides the Epics tab. When enabled, you get high-level epic progress tracking, delivery forecasts, scope growth analysis, and cross-epic dependency views.
Enables sprint-based features. When on, seven sub-settings appear indented below. When off, the Sprints tab and Sprint Review tab are hidden, but all other tabs continue to work using the JQL filter.
Your Jira board number, found in the board URL (/boards/123). Required for the Sprints tab to load sprint data.
When enabled, unscheduled backlog issues from the board appear below the sprint list. This setting only appears once you have entered a Board ID.
Controls the small progress display in each sprint card header.
The default capacity when no other source is active. The label changes based on your Capacity Mode:
This limit is used when Default is selected on a sprint's header. If you click Team, team-based calculations take over (Per User mode only). If you click Manual, you enter your own number. See How Capacity Works for the full explanation.
Duration of new sprints created by Auto-Level: 2, 3, or 4 weeks. Auto-Level generates sequential, contiguous dates based on this setting.
Controls how many past periods are included in velocity calculations and scope/burndown charts. Appears as an inline dropdown on the Sprints tab (next to Use Velocity) and the Scope tab (visible when Burndown Forecast is on). The label adapts: "Last N sprints" when a Board ID is configured, or "Last N weeks" when using JQL only. Range: 1–20, default 5.
Determines which Jira field measures work across the app. You don't need to change this yourself — it's set automatically when you choose an Estimation Mode:
Controls how capacity is determined:
Switching Estimation Mode automatically adjusts Capacity Metric and Progress Indicator. See Estimation Modes for the full cascade.
Time Mode requires team setup
In Time Mode, a warning appears if no team members are configured. Go to the Demand vs. Capacity tab to add team members, set their hours, and configure holidays and time off.
Display time values in hours or days. Only visible when Capacity Metric is set to Remaining Estimate. Uses an 8-hour workday for conversion (1 day = 8 hours).
Choose which columns appear in sprint issue tables. The default set is Key, Summary, Assignee, and Story Points. There are 20 standard columns available:
Type, Key, Summary, Assignee, Reporter, Priority, Status, Story Points, Original Estimate, Remaining Estimate, Time Spent, Sprint, Start Date, Due Date, Epic, Epic Link, Parent, Subtasks, Linked Issues, Labels.
To add columns, click the dropdown and check the ones you want. To search for Jira custom fields, type at least 2 characters in the search box. You can also type a name and press Enter to add a custom column.
Enter an Anthropic API key to enable AI-powered features: the Ask AI chat on the Dashboard, and AI risk analysis on the Sprint Review and Plan Review tabs. The key is stored in your app configuration and used to call Claude. Format: sk-ant-...
Switching Estimation Mode automatically adjusts related settings to stay consistent:
| When You Switch To | What Changes Automatically |
|---|---|
| Points | Capacity Metric → Story Points, Progress Indicator → Points |
| Time | Capacity Metric → Remaining Estimate (locked), Progress Indicator → Estimate |
This means you only need to choose your Estimation Mode — the other settings follow automatically.
The Dashboard is your project's home screen — a single view that shows overall health, key metrics, and where to focus your attention. It is always visible as the first tab, regardless of Sprint Mode or Board ID settings. Click any card to navigate directly to the relevant detail tab.
The top card answers one question: "Are we on track?" It compares the projected completion date against the target date and shows status as OK (green), Caution (amber), or At Risk (red).
Two side-by-side panels let you configure the projection:
A progress bar shows overall completion percentage, color-coded to match the on-track status.
A collapsible panel that auto-generates an AI analysis of your project status. Each bullet point is prefixed with PROJECT STATUS: or TEAM & PLAN HEALTH: and is expandable for more detail. Recommendations are listed separately. You can ask follow-up questions in the chat input.
An expandable factor table showing project health indicators:
| Factor | What It Shows |
|---|---|
| On Track | Projected vs target date comparison with days early or late |
| Schedule Performance | Completion percentage vs timeline elapsed — are you where you should be? |
| Completion % | Percentage of planned work done (1 - remaining / original estimate) |
| Work Ratio | Remaining work as percentage of total work |
| Available Capacity | Team capacity remaining through target date vs remaining demand |
| Blockers | Count of blocked issues with dependency details |
| Data Quality & Alerts | Data confidence score plus error and warning counts |
A separate expandable factor table for execution health:
| Factor | What It Shows |
|---|---|
| Scope | Project-wide scope growth percentage since start |
| Capacity | Team utilization percentage (ideal range: 60–90%) |
| Delivery Rate | Percentage of capacity actually delivered, with trend |
| Estimate Accuracy | Time spent vs original estimate — are estimates reliable? |
| Team Balance | Workload distribution across team members |
Each row shows a status dot (green/amber/red/black) and a plain-language explanation. Click any row with a caret to expand for detailed breakdown.
The target date is shared across the Dashboard, Sprint Review, and Plan Review tabs. Setting it in one place updates all three. The Sprint Review and Plan Review tabs automatically select the sprint or week that matches the target date.
Click Export PDF in the top-right corner to download a snapshot of the dashboard as a PDF file.
A comprehensive weekly summary of your project sent to stakeholders. It includes:
A concise notification sent when new issues are detected that need immediate attention:
After the health cards, an Ask AI section lets you type natural-language questions about your project. For example: "Which sprints are at risk?", "Who is overloaded?", or "What should I focus on this week?"
The AI receives your project context — sprints, issues, capacity, velocity, and feasibility data — and returns a focused answer. This feature requires an Anthropic API key configured in Settings (see AI Features).
No Data State
If no JQL filter is configured, the Dashboard shows a "No Data Available" message prompting you to open Settings and configure a JQL filter.
The Sprints tab is where you plan and manage your work across sprints. Each sprint appears as a collapsible card showing its issues, capacity, and team workload. To see the Sprints tab, enable Sprint Mode and enter a Board ID in Settings.
The page is organized top to bottom:
The header row gives you a quick summary without expanding anything:
Click the Sprint Details toggle below the header to expand additional information:
When a sprint is expanded, you see its issues in a table. The columns shown are the ones you selected in Display Columns (Settings). Every row has:
Due dates in the past are highlighted in red. Assignees show a colored avatar chip.
Click any column header to sort the issues in that sprint. Click again to reverse the order, and a third time to clear the sort. A small arrow (↑/↓) shows which column is sorted and in which direction.
Sorting is per-sprint (each sprint sorts independently) and resets when you reload. It is not saved. If you manually reorder an issue (by dragging within the sprint), the sort is cleared.
Each sprint has a capacity value that represents how much work it can hold. A Default / Team / Manual toggle in the sprint header controls where this number comes from:
| State | How It Looks | What Happens |
|---|---|---|
| Default | Default button highlighted | Uses the capacity limit from Settings |
| Team | Team button highlighted | In Per User mode: calculates each person's capacity from team config on the Demand vs. Capacity tab & sprint dates. In Per Sprint mode: same as Default. |
| Manual | Manual button highlighted | Opens an inline editor where you type a capacity value |
The sprint uses the Capacity Limit from Settings. In Per Sprint mode, this is the whole sprint's capacity. In Per User mode, each assignee gets the per-user limit, and the sprint total is the sum (displayed as "N × limit = total").
In Per User mode, capacity is calculated from team members configured on the Demand vs. Capacity tab. The app sums each member's weekly capacity values for the weeks that overlap the sprint, using overlap fractions for weeks that start or end mid-sprint. The display shows a formula: assignees × per-user capacity = sprint total.
In Per Sprint mode, Team behaves the same as Default — it uses the capacity limit from Settings.
The Team button is greyed out if no team members are configured on the Demand vs. Capacity tab.
Click Manual to open an inline number editor where you type a capacity value. In Per Sprint mode, this is the sprint total. In Per User mode, this is the per-user limit and the sprint total becomes the number of assignees times that limit.
The sprint header shows capacity remaining — the total capacity minus completed work. This lets you compare remaining demand against remaining capacity at a glance. If remaining demand exceeds capacity remaining, the demand stat turns red and an "over by X" indicator appears. When no issues are done yet, capacity remaining equals the full sprint capacity.
In the Sprint Details panel, the label shows Capacity/Sprint: (in Per Sprint mode) or Capacity: (in Per User mode), followed by the capacity value. In Per User mode, the value is shown as a formula: "N × per-user = total". Click the value to switch to Manual mode and edit it.
You manage the sprint lifecycle directly from each sprint card's action buttons.
Click + Create Sprint below the sprint list. The new sprint gets dates that follow on from the last sprint, using the Sprint Length you configured (2, 3, or 4 weeks).
Click Start on a future sprint to make it active. If you already have an active sprint, a warning asks you to confirm that you want two sprints running at the same time.
Click Complete on an active sprint. If there are unfinished issues, a dialog lets you choose where to move them — to another sprint or back to the backlog. When the sprint completes, its velocity data is automatically captured for the Velocity section.
Click the delete button and confirm. The sprint is removed and its issues move to the backlog.
Open the Sprint Details panel, then click the goal text. Type your changes and press Enter or click away to save.
You can align issue dates with sprint boundaries:
This is useful for features like the Demand vs. Capacity chart and Plan Review that rely on issue dates.
Drag any issue row from one sprint and drop it onto another sprint card. The issue is moved in Jira immediately. You can also drag issues to the backlog at the bottom.
Check the boxes next to several issues, then drag any one of them. All selected issues move together. A badge shows how many you're moving (e.g., "5 issues"). A bar above the sprint list shows your selection count with a Clear selection button.
Drag an issue up or down within the same sprint to change its position. A blue line shows where it will land. This custom order is saved and persists across sessions.
Reordering is disabled while a column sort is active. If you reorder an issue, the sort clears.
While dragging, move your cursor near the top or bottom edge of the screen. The page scrolls automatically so you can reach sprints that aren't currently visible.
Click the lock icon on an issue to prevent it from being dragged. Locked issues also stay in place during Auto-Level.
Auto-Level is a planning tool that redistributes issues across sprints so that no sprint exceeds its capacity. It uses each sprint's capacity setting: Manual numbers if set, Team-calculated values if selected (Per User mode), or the Settings default otherwise. It respects dependencies (blockers always go in earlier sprints) and leaves locked issues and sprints alone. Everything happens as a preview first — nothing is saved to Jira until you explicitly accept.
| Strategy | How It Decides What Goes Where |
|---|---|
| Priority | Puts the highest-priority issues first, filling sprints front to back |
| Size | Puts the smallest issues first, filling sprints front to back |
| Due Date | Puts the soonest-due issues first, filling sprints front to back |
| Balanced | Tries to spread work evenly. Places large issues first, picking the sprint where each one fits best based on remaining room, how much work each person already has in that sprint, and whether the sprint end date aligns with the issue's due date. |
| Velocity | A toggle pill that uses historical efficiency to set sprint limits. When active, the other four strategy pills are disabled. See Using Velocity as Capacity below. |
All strategies respect dependencies: if issue A blocks issue B, then A is always placed in an earlier (or same) sprint as B. If circular dependencies exist, they are detected and flagged so you know to resolve them.
Earliest Available Sprint
Priority, Size, and Due Date strategies pack issues into the earliest sprint with available capacity. This means an issue can move backward to an earlier sprint if there is room, not just forward. This ensures sprints are filled front-to-back as efficiently as possible.
If the existing sprints don't have enough room, Auto-Level creates new ones (up to 10). New sprints get dates that follow on from the last sprint using your Sprint Length setting, and their capacity defaults to the average of your existing sprints.
When Capacity Mode is set to Per User in Settings, Auto-Level tracks each person's workload per sprint individually. If someone is overloaded in a sprint, their excess issues are moved to a sprint where they have room.
If you have velocity data (from completed sprints), the Velocity toggle pill appears in the strategy row. Click it to activate velocity-based capacity. This tells Auto-Level to calculate sprint limits based on each team member's historical efficiency against their real available capacity (from the Demand vs. Capacity tab), rather than using the configured limit or raw team availability.
When enabled:
For best results, configure your team on the Demand vs. Capacity tab first. If no team capacity data is available, the feature falls back to the original behavior (flat historical average velocity).
Click Compare All to run all four strategies at once and see a side-by-side comparison. The Delivery Forecast panel appears showing:
Strategy colors: Priority (blue), Size (orange), Due Date (green), Balanced (purple), Original baseline (gray).
Below the sprint cards, the Velocity section shows how your team has performed in past sprints. This data feeds into capacity calculations and the "Use velocity as capacity" option in Auto-Level.
Five summary tiles across the top:
A row of user chips lets you see velocity for specific team members. Click a name to filter; click "All" to show the whole team. You can select multiple people.
A table showing each completed sprint: name, length, capacity, completed work, per-week rate, and efficiency. The best-performing and worst-performing sprints are highlighted.
Click any row to expand it and see individual issues from that sprint — which were completed, which were left incomplete, and which were added or removed mid-sprint.
Velocity data accumulates automatically each time you complete a sprint. If you're starting fresh or want to backfill history, use these buttons:
The Demand vs. Capacity tab combines team management and feasibility analysis in one place. It has four collapsible sections (all collapsed by default):
The tab has three collapsible sections. Click any section header to expand or collapse it:
A period bar at the top lets you choose the time range you're looking at: Weekly, Biweekly, Monthly, Quarterly, or Yearly. Arrow buttons navigate forward and back. All the numbers in the Team Members table (net capacity, demand, issue count) adjust to show values for the selected period.
A table showing each team member with these columns:
| Column | What It Shows |
|---|---|
| Name | Team member name with a colored avatar |
| Hrs/Wk or Pts/Wk | Capacity per week (editable). In Time Mode shows hours per week; in Points Mode shows points per week. Edit to set all weeks in the current period to that value. |
| Total | Total capacity for the selected period — the sum of all weekly values |
| Util % | Utilization percentage (editable). Adjusts how much of a member's capacity is available for project work. Defaults to 100%. Persists to team member configuration. |
| Time Off | Total hours deducted for holidays and PTO in the period. Click the toggle to expand a detail row showing each holiday and PTO entry with dates and hours. |
| Net Hrs / Net Pts | Net capacity after deductions. Calculated as Total capacity minus holiday deductions minus PTO hours. In Time Mode shows Net Hrs (or Net Days); in Points Mode shows Net Pts. This is the number used for workload status. |
| Demand | How much work is assigned to them in the period |
| Issues | Number of issues assigned, with expandable dropdown showing issue keys and summaries |
| Status | A color-coded badge comparing demand against net capacity (after deductions) |
You can select multiple team members using the checkboxes. The Cap/Wk column shows "varies" if weeks in the period have different values.
Capacity is stored as explicit per-week values. Each team member has a capacity value for each ISO week (Monday–Sunday). Weeks with no value set default to zero.
This model gives you full control — reduce capacity for holiday weeks, ramp new members up gradually, or set different values for different sprints. All downstream calculations (sprint capacity, feasibility, risk) resolve to weekly granularity.
If you have existing team data from before the weekly model, a migration banner appears with a "Populate weeks" button that fills the selected period from your previous rates.
Each team member gets a color-coded status based on how their assigned work (demand) compares to their net capacity — capacity after holiday and PTO deductions:
| Status | When It Appears | Color |
|---|---|---|
| OVERLOADED | Demand is more than 115% of capacity | Red |
| OPTIMAL | Demand is 90–115% of capacity | Green |
| AVAILABLE | Demand is 60–90% of capacity | Yellow |
| UNDERLOADED | Demand is less than 60% of capacity | Gray |
A calendar view for managing PTO. Click a date to mark a single day off. Use Ctrl+click to toggle individual days on and off. Use Shift+click to select a range of dates.
Time off and company holidays are automatically deducted from each member's capacity. The deductions appear in the Time Off column of the Team Members table. Click the toggle arrow to expand a detail row listing each holiday and PTO entry with its date and hours deducted. The resulting Net column shows capacity after all deductions.
Add company-wide holidays by entering a date and name. Check the Recurring box to have the holiday repeat every year automatically. Holidays reduce available capacity for all team members.
The Scope tab shows how much work has been added over time and how much has been completed, all on one timeline chart. In Points Mode, values are in story points. In Time Mode, values are in hours or days.
Two lines tell the story:
The chart legend is interactive — click any legend item to show or hide its trace. Hidden items appear dimmed with a strikethrough label.
The Burndown Forecast feature is on by default. When active, the chart extends into the future with projected lines showing when the remaining work will be completed. A toolbar above the chart provides controls:
A row of colored user chips appears above the chart. Click a name to filter the burndown line to just that person's completed work. The scope line always shows the total scope. Click a chip again to clear the filter.
When Sprint Mode is on, checkboxes let you toggle sprint boundary lines on the chart: solid lines for sprint start dates, dashed lines for end dates. Sprint markers are off by default to reduce visual clutter.
When Sprint Mode is off, sprint marker controls are hidden.
Choose how the timeline is grouped: Weekly, Biweekly, Monthly, or Quarterly. Arrow buttons navigate between periods.
Below the chart, stat cards show Total Scope, Completed Work, Remaining Work, % Complete, and issue counts. A breakdown table lists individual issues grouped by the selected period.
The chart section answers the question: Is your plan achievable? It compares the work you've committed to (demand) against the time or capacity you have available.
A score from 0 to 100 that reflects whether you have enough capacity to complete all the work:
| Score | Label | Meaning |
|---|---|---|
| ≥ 80 | On Track | Capacity covers demand with minimal overload periods |
| 50–79 | At Risk | Some periods are overloaded or the buffer is thin |
| < 50 | Infeasible | Significant capacity shortfall |
The score starts at 100% if capacity fully covers demand, then drops based on how many days are overloaded and by how much.
A separate score that tells you how complete your Jira data is. It averages three things:
A low confidence score means the feasibility analysis is based on incomplete data, so its results may be unreliable.
Choose how to slice the analysis: All Time (default), Weekly, Biweekly, Monthly, Quarterly, or Yearly. All Time spans from the earliest start date to the latest due date across your issues. Arrow buttons navigate between periods.
Seven stat cards give you a complete picture at a glance:
| Card | What It Shows |
|---|---|
| Remaining Demand | Sum of remaining work across all issues in the period |
| Available Capacity | Available capacity for the period |
| Feasibility | The feasibility score (0–100%) |
| Confidence | Data completeness score (0–100%) |
| % Complete | How much of the total work is already done |
| Work Ratio | Remaining demand relative to total estimated work |
| Estimate Accuracy | Time actually spent relative to what was estimated |
A timeline chart showing four lines:
Red-shaded areas highlight overload zones — periods where demand exceeds capacity.
Based on your current pace, the forecast estimates when all work will be completed and how many extra days (if any) are needed beyond the planned end date.
Below the chart, the resource breakdown table shows each person's demand, capacity, load percentage, status badge, and issue count. Click a team member's name to filter the chart and stat cards to just their work.
When Sprint Mode is on, checkboxes let you toggle sprint boundary lines on the chart. When Sprint Mode is off, these controls are hidden.
Units
In Points Mode, all values are in story points. In Time Mode, all values are in hours or days (based on your Time Unit setting).
The Alerts tab scans your issues for common problems and analyzes dependency relationships. A badge on the tab shows the total number of alerts found.
Issues are grouped into six collapsible sections. Click a category header to expand or collapse it:
| Category | What It Catches |
|---|---|
| Done with Remaining Work | Issue is marked Done but still has time remaining on it |
| Overdue | Issue is not Done and its due date has passed |
| Dependency Conflicts | Issue is blocked by something that finishes after it should start. Also detects circular dependencies. |
| Child After Parent | A subtask is due after its parent task |
| Missing Dates | Issue in an active or future sprint has no start date or no due date |
| Missing Estimates | Issue in an active or future sprint has no estimate. In Points Mode this checks for story points; in Time Mode this checks for original estimate. |
Below the alert categories, a collapsible Dependency Analysis section gives you the full picture of blocking relationships:
The Epics tab gives you a bird's-eye view of your project organized by epic. It groups all child issues under their parent epics and shows progress, forecasts, scope changes, and cross-epic dependencies — all in one place. It works in both Sprint Mode and non-Sprint Mode.
Four sub-views are available via toggle buttons at the top: Overview, Forecast, Scope, and Dependencies.
The default view. Four summary cards show the big picture at a glance:
| Card | What It Shows |
|---|---|
| Total Epics | Number of epics found, with a breakdown of how many are in progress, to do, done, and overdue |
| Overall Progress | Percentage of total work completed across all epics (in points or hours depending on your estimation mode) |
| Scope Growth | How much scope has changed since the baseline snapshot. Shows original vs current totals. Dash (—) when scope data is not yet available. |
| At Risk Epics | Number of epics below 60% progress or past their due date |
Below the summary cards, a toolbar lets you search epics by name or key, filter by status (On Track, At Risk, Behind, To Do, Done, Overdue), and filter by owner. Click any column header in the progress table to sort.
Each row shows one epic with:
Click any epic row to expand it and see all child issues with their individual status, assignee, points, and sprint assignment.
| Status | Condition |
|---|---|
| Done | 100% complete or parent issue is in a Done status |
| Overdue | Due date is in the past and not Done |
| On Track | ≥ 60% complete |
| At Risk | 30–59% complete |
| Behind | 1–29% complete |
| To Do | 0% complete or no child issues |
The Forecast sub-view answers: When will each epic be done?
| Card | What It Shows |
|---|---|
| Remaining Work | Total points or hours not yet completed across all active epics |
| Available Capacity | How much work can be done. In Sprint Mode this is velocity × number of future sprints. In non-Sprint Mode it comes from team capacity analysis. |
| Shortfall / Balanced / Surplus | The gap between remaining work and capacity. Red when work exceeds capacity (shortfall), green when capacity exceeds work (surplus), neutral when exactly balanced. |
When Sprint Mode is off and team members are configured on the Demand vs. Capacity tab, two additional cards appear:
Below the stat cards, each active epic gets its own forecast card showing:
In Sprint Mode, velocity is the rolling average of the last 3 completed sprints. In non-Sprint Mode, velocity comes from team capacity analysis or from historical throughput of completed issues. A Monte Carlo simulation runs 200 iterations with ±30% velocity variance to produce the p50 and p90 estimates.
The Scope sub-view tracks how much work has been added to or removed from each epic since the baseline.
| Card | What It Shows |
|---|---|
| Net Scope Growth | Total change in scope across all epics, with original and current totals. Positive means scope has grown. |
| Issues Added | Count of issues added after the baseline snapshot, with total points or hours added |
| Issues Removed | Count of issues removed (descoped), with total points or hours removed |
Each epic gets a card showing:
When scope data is not yet available from the backend, per-epic cards show the current scope as a baseline with no change indicator.
The Dependencies sub-view shows blocking relationships between epics. It only surfaces cross-epic dependencies — blocking within the same epic is filtered out.
Three tabs filter the dependency list:
| Tab | What It Shows |
|---|---|
| All | Every cross-epic dependency |
| Violations | The blocker epic is not on track AND blocked issues are not yet done — delivery is at risk |
| At Risk | The blocker epic is not on track but no unfinished blockers are blocking the dependent epic yet |
Each row shows the blocker epic on the left, an arrow labeled "blocks" in the middle, and the blocked epic on the right. A status badge indicates the health of the relationship:
Each blocked epic shows how many issues are blocked and their total points or hours.
Estimation Modes
All values in the Epics tab automatically adapt to your estimation mode. In Points Mode you see story points; in Time Mode you see hours. The same applies to capacity, forecasts, and scope calculations.
The Sprint Review tab lets you explore "what if" scenarios and run Monte Carlo simulations to understand delivery risk. It requires Sprint Mode to be enabled.
Four sliders let you adjust planning variables from −50% to +50%:
| Slider | What It Adjusts | Direction |
|---|---|---|
| Velocity | How fast your team works | Positive = team delivers faster |
| Issue Estimation | How accurate your estimates are | Positive = issues take longer than estimated |
| Scope | How much total work there is | Positive = more work gets added |
| Capacity | How much resource is available | Positive = more people or hours |
Velocity and Capacity increase the capacity side (making delivery easier). Issue Estimation and Scope increase the demand side (making delivery harder). The sliders combine multiplicatively — for example, +20% velocity and +10% capacity together give about 32% more effective capacity.
Vertical bars show demand per sprint colored by utilization: green (under capacity), amber (overflow from a prior sprint), or red (over capacity). A horizontal capacity line is overlaid on each bar. When any slider deviates from zero, purple dashed ghost bars show the baseline for comparison.
Two vertical markers indicate key milestones:
Each card has a tooltip icon (?) explaining its meaning. Hover to see details.
Each slider shows a risk assessment statement below it, describing the impact of that adjustment. For example: "Underperforming. Overflow begins in Sprint 3, completion pushed to Sprint 6."
In What-If mode, an AI chat panel lets you describe scenarios in natural language (e.g., "What if we lose a developer for 2 sprints?"). This requires an Anthropic API key configured in Settings.
The AI receives your sprint data, issue details, team member information, and assignee workload. It returns slider recommendations (with an Apply button), impact assessment with severity levels, and prioritized recommendations.
Runs 2,000 Monte Carlo iterations to produce a probability distribution of when your project will actually finish. Each iteration randomly varies all four variables within the uncertainty range, simulating real-world unpredictability.
Each variable has a range slider with two dots:
For each of the 2,000 trials, the simulator picks a random value between the red and green dots for every variable. Drag the dots to widen or narrow the uncertainty range. Wider ranges model more uncertainty; tighter ranges model a more predictable project.
A chart showing the cumulative probability of completion by sprint. The x-axis shows sprint names and dates. The y-axis reads "Likely on target." Key markers:
Three equal-width cards appear above the S-curve, each with a tooltip icon (?):
The Plan Review tab provides the same What-If and Monte Carlo analysis as Sprint Review, but works on a weekly timeline based on issue due dates. It doesn't require Sprint Mode or a Board ID — it's always available.
| Aspect | Sprint Review | Plan Review |
|---|---|---|
| Data source | Sprints from board | Issues with due dates (from JQL) |
| Time buckets | Sprints | Weeks (Monday boundaries) |
| Requires | Sprint Mode ON | Issues with due dates |
| Capacity | Per-sprint capacity | Weekly capacity (holiday and time-off aware) |
| Chart labels | Sprint names | Week dates (e.g., "Mar 10") |
Plan Review groups issues into weekly time slots based on their due dates. Done issues are excluded from demand. For issues that span multiple weeks (start date to due date), effort is spread proportionally across the weeks rather than lumped into the due-date week. Issues without due dates are excluded. In Time Mode, weekly capacity comes from your team's per-week values on the Demand vs. Capacity tab. In Points Mode, it uses a weekly portion of your Capacity Limit.
If not enough issues have due dates, a message prompts you to add them.
If the simulation shows work overflowing past the last week that has issues, Plan Review extends the chart with additional weeks to show when the overflow would be completed. These virtual weeks appear with reduced opacity.
All three features work identically to Sprint Review, with week-based labels instead of sprint numbers. Simulation mode uses the same dual-dot sliders (red pessimistic, green optimistic) and produces the same S-curve, KPI cards, and on-target probability. The AI chat context describes the data as "weekly time buckets based on issue due dates."
The Estimation Mode setting is the most important choice you make. It determines how work is measured, where capacity comes from, and what units every tab uses. Choose it once and the rest follows automatically.
| Aspect | Points Mode | Time Mode |
|---|---|---|
| What it measures | Story points | Remaining estimate (hours or days) |
| Where capacity comes from | Capacity Limit from Settings (default), or team Points Per Sprint when Auto is selected | Capacity Limit from Settings (default), or team hours/availability when Auto is selected |
| Capacity Metric | Story Points (set automatically) | Remaining Estimate (locked) |
| Display units | pts | hrs or days (based on Time Unit setting) |
| Time Unit setting | Hidden (not needed) | Visible — choose Hours or Days |
| Progress indicator | Points (done / total) | Estimate (remaining / original) or Work Ratio |
All health cards, workload bars, and scope values use story points in Points Mode, or hours/days in Time Mode. The unit label adjusts automatically (pts, hrs, or days).
The scope and burndown chart shows story points in Points Mode, or hours/days in Time Mode.
Demand, capacity, and all stat cards use story points in Points Mode, or hours/days in Time Mode.
The "Missing Estimates" alert checks for story points in Points Mode, or original estimate in Time Mode.
The What-If sliders, cascade chart, and Monte Carlo simulation all work in story points (Points Mode) or hours/days (Time Mode).
Switching Estimation Mode automatically adjusts related settings:
You don't need to change Capacity Metric or Progress Indicator yourself. They follow your Estimation Mode choice.
Jira stores time in seconds internally. Project Commander uses an 8-hour workday for conversion:
When Time Unit is set to Days, all time values throughout the app are shown in workdays instead of hours.
Points Mode vs Time Mode — the key difference
Estimation Mode controls which Jira field measures work (story points vs remaining estimate). In both modes, each sprint's Default/Team/Manual toggle determines where capacity comes from — see How Capacity Works. The difference is what Team calculates in Per User mode: in Points Mode it sums weekly points values; in Time Mode it sums weekly hours values for the sprint's date range.
Project Commander detects blocking relationships from Jira's "blocks" and "is blocked by" issue links. Dependencies affect multiple features across the app.
Issues with dependency conflicts show a warning icon (⚠) next to their key in the issue table. The icon has a tooltip describing the conflict (e.g., "Blocked by PROJ-45 which ends after this issue starts").
The Dependency Conflicts alert category lists all issues where a blocker finishes after the blocked issue should start. The Dependency Analysis section provides the full dependency graph with summary stats, edge list, root/leaf issues, and a conflicts-only filter.
Click the Dependencies button in the action header to open a modal with three tabs:
Each dependency shows the blocker and blocked issue with their sprint name, sprint state badge (active/future), and completion status. Violation rows are marked with a warning icon.
Auto-Level always respects dependencies. A blocking issue is placed in an earlier (or same) sprint as the issues it blocks. If circular dependencies exist, they are detected and reported, and the affected issues are still placed using the chosen strategy.
sk-ant-.| Indicator | Meaning |
|---|---|
| Default button highlighted | Sprint uses capacity limit from Settings |
| Team button highlighted | Per User mode: capacity calculated from team config. Per Sprint mode: same as Default. |
| Manual button highlighted | Sprint capacity is a user-entered number |
| Team button greyed out | No team members configured on the Demand vs. Capacity tab |
| Red avatar ring | User is over their capacity limit |
| Green avatar ring | User is within capacity |
| Gray avatar | User is filtered out — click to restore |
| Purple move badge | Issue was moved by Auto-Level |
| Orange move badge | Issue was manually moved during an Auto-Level session |
| ⚠ icon on issue key | Dependency conflict (blocker finishes after this issue starts) |
| Lock icon (filled) | Issue or sprint is locked (excluded from Auto-Level and drag) |
| Blue sort arrow (↑/↓) | Column is sorted ascending or descending |
| Blue reorder line | Drop target indicator when reordering issues |
| Red due date | Issue is past due (due date before today) |
| T marker (purple) | Target sprint/week on cascade bar chart |
| P marker (green/red) | Projected delivery sprint/week on cascade bar chart |
| Action | Shortcut |
|---|---|
| Select multiple issues | Click checkboxes individually |
| Select a range of time off days | Shift + click |
| Toggle individual time off days | Ctrl + click |
| Close column search dropdown | Esc |
| Add column from search | Enter |
Project Commander stores all its data securely within your Jira Cloud instance using Atlassian Forge storage:
Issue data from your JQL filter is fetched from Jira on each page load and shared across all tabs. No issue data is stored permanently by the app.
Jira stores time values in seconds. Project Commander converts using an 8-hour workday:
Each sprint's Default/Team/Manual toggle determines its capacity source:
| Toggle State | Source |
|---|---|
| Default selected | The Capacity Limit from Settings |
| Team selected | Per User mode: calculated from team configuration (Points Mode: points per sprint; Time Mode: available hours minus holidays and time off). Per Sprint mode: same as Default. |
| Manual selected | The number the user entered |
During Auto-Level, a "Use velocity as capacity" checkbox can override these with efficiency-adjusted limits based on each member's historical completion rate against their real available capacity.
Risk and Demand vs. Capacity tabs always use team-based calculations when available, regardless of individual sprint toggles. They fall back to the Capacity Limit from Settings when no team is configured.