<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guides on gh-velocity</title><link>https://gh-velocity.org/guides/</link><description>Recent content in Guides on gh-velocity</description><generator>Hugo</generator><language>en</language><atom:link href="https://gh-velocity.org/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>Interpreting Results</title><link>https://gh-velocity.org/guides/interpreting-results/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/interpreting-results/</guid><description>&lt;h1 id="interpreting-results"&gt;Interpreting Results&lt;a class="anchor" href="#interpreting-results"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;gh-velocity produces output in four formats: pretty (default), JSON, markdown, and HTML. Each format contains the same data, structured for different consumers. This guide explains how to read the output, what healthy metrics look like, and what common patterns mean.&lt;/p&gt;
&lt;h2 id="reading-your-output"&gt;Reading your output&lt;a class="anchor" href="#reading-your-output"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="output-formats-at-a-glance"&gt;Output formats at a glance&lt;a class="anchor" href="#output-formats-at-a-glance"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Format&lt;/th&gt;
 &lt;th&gt;Best for&lt;/th&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pretty&lt;/td&gt;
 &lt;td&gt;Terminal reading, quick checks&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--results pretty&lt;/code&gt; (default)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;JSON&lt;/td&gt;
 &lt;td&gt;Agents, scripts, &lt;code&gt;jq&lt;/code&gt; pipelines, CI&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--results json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Markdown&lt;/td&gt;
 &lt;td&gt;Pasting into issues, PRs, Discussions&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--results markdown&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HTML&lt;/td&gt;
 &lt;td&gt;Self-contained report files&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--results html&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;All commands accept &lt;code&gt;--results&lt;/code&gt; (or &lt;code&gt;-r&lt;/code&gt;). If you omit it, you get pretty.&lt;/p&gt;</description></item><item><title>Setting Up Flow Velocity</title><link>https://gh-velocity.org/guides/velocity-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/velocity-setup/</guid><description>&lt;h1 id="setting-up-flow-velocity"&gt;Setting Up Flow Velocity&lt;a class="anchor" href="#setting-up-flow-velocity"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;flow velocity&lt;/code&gt; command measures &lt;a href="https://gh-velocity.org/concepts/terminology/#effort"&gt;effort&lt;/a&gt; completed per &lt;a href="https://gh-velocity.org/concepts/terminology/#iteration"&gt;iteration&lt;/a&gt; -- a number, not a ratio. It answers &amp;quot;how much work did we ship this period?&amp;quot; in effort units. A related metric, completion rate (done / committed), measures predictability. Both appear in the output. For the metric definition and formula, see the &lt;a href="https://gh-velocity.org/reference/metrics/velocity/"&gt;Velocity reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Iteration and effort are independent of &lt;a href="https://gh-velocity.org/concepts/terminology/"&gt;scope and lifecycle&lt;/a&gt; -- they control &lt;em&gt;how&lt;/em&gt; velocity is computed, not &lt;em&gt;which&lt;/em&gt; items are measured. See &lt;a href="https://gh-velocity.org/concepts/terminology/"&gt;Definitions&lt;/a&gt; for details.&lt;/p&gt;</description></item><item><title>Cycle Time Setup</title><link>https://gh-velocity.org/guides/cycle-time-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/cycle-time-setup/</guid><description>&lt;h1 id="cycle-time-setup"&gt;Cycle Time Setup&lt;a class="anchor" href="#cycle-time-setup"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Cycle time measures how long active work took on an issue, excluding backlog time (unlike &lt;a href="https://gh-velocity.org/reference/metrics/lead-time/"&gt;lead time&lt;/a&gt;, which measures full elapsed duration from creation to close). The measurement depends on your configured strategy. For the metric definition and formula, see the &lt;a href="https://gh-velocity.org/reference/metrics/cycle-time/"&gt;Cycle Time reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="choosing-a-strategy"&gt;Choosing a strategy&lt;a class="anchor" href="#choosing-a-strategy"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are two cycle time strategies. Choose based on your workflow.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Your workflow&lt;/th&gt;
 &lt;th&gt;Recommended strategy&lt;/th&gt;
 &lt;th&gt;Why&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Issues with lifecycle labels&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;issue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Measures real work time (label applied to closed); immutable timestamps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PRs close issues (most OSS repos)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Measures PR review time (created to merged)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Issues only, no labels or PRs&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;issue&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lead time works immediately; add an &lt;code&gt;in-progress&lt;/code&gt; label for cycle time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The PR strategy requires zero setup; the issue strategy gives richer data but requires label discipline.&lt;/p&gt;</description></item><item><title>Posting Reports</title><link>https://gh-velocity.org/guides/posting-reports/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/posting-reports/</guid><description>&lt;h1 id="posting-reports"&gt;Posting Reports&lt;a class="anchor" href="#posting-reports"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;gh-velocity posts metrics directly to GitHub via the &lt;code&gt;--post&lt;/code&gt; flag. Bulk commands (&lt;code&gt;report&lt;/code&gt;, &lt;code&gt;quality release&lt;/code&gt;) post to GitHub Discussions; single-item commands (&lt;code&gt;flow lead-time 42&lt;/code&gt;) post as issue/PR comments.&lt;/p&gt;
&lt;h2 id="the---post-flag"&gt;The --post flag&lt;a class="anchor" href="#the---post-flag"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every command supports &lt;code&gt;--post&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity report --since 30d --post
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v1.2.0 --post
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity flow lead-time &lt;span style="color:#ae81ff"&gt;42&lt;/span&gt; --post&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default, &lt;code&gt;--post&lt;/code&gt; runs in &lt;strong&gt;dry-run mode&lt;/strong&gt; -- it shows what would be posted without writing to GitHub. To post for real, set &lt;code&gt;GH_VELOCITY_POST_LIVE&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Agent Integration</title><link>https://gh-velocity.org/guides/agent-integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/agent-integration/</guid><description>&lt;h1 id="agent-integration"&gt;Agent Integration&lt;a class="anchor" href="#agent-integration"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every gh-velocity command supports &lt;code&gt;--results json&lt;/code&gt; for structured output, making it composable with LLM agents, CI scripts, and data pipelines.&lt;/p&gt;
&lt;h2 id="json-output-structure"&gt;JSON output structure&lt;a class="anchor" href="#json-output-structure"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every command produces up to four layers of data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stats&lt;/strong&gt; — aggregate numbers (top-level keys like &lt;code&gt;lead_time&lt;/code&gt;, &lt;code&gt;cycle_time&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detail&lt;/strong&gt; — per-item breakdowns (the &lt;code&gt;issues&lt;/code&gt; array)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insights&lt;/strong&gt; — observations with severity (the &lt;code&gt;insights&lt;/code&gt; array)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt; — how the output was produced (the &lt;code&gt;provenance&lt;/code&gt; object)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;report&lt;/code&gt; command emits stats only. Standalone commands emit all four layers. Details:&lt;/p&gt;</description></item><item><title>Ad Hoc Queries</title><link>https://gh-velocity.org/guides/ad-hoc-queries/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/ad-hoc-queries/</guid><description>&lt;h1 id="ad-hoc-queries"&gt;Ad Hoc Queries&lt;a class="anchor" href="#ad-hoc-queries"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Practical patterns for common gh-velocity tasks.&lt;/p&gt;
&lt;h2 id="compare-two-releases"&gt;Compare two releases&lt;a class="anchor" href="#compare-two-releases"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v2.0.0 --results json &amp;gt; v2.json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v1.9.0 --results json &amp;gt; v1.json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;v1.9.0 median lead time: &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.aggregates.lead_time.median_seconds / 86400 | round | &amp;#34;\(.)d&amp;#34;&amp;#39;&lt;/span&gt; v1.json&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;v2.0.0 median lead time: &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.aggregates.lead_time.median_seconds / 86400 | round | &amp;#34;\(.)d&amp;#34;&amp;#39;&lt;/span&gt; v2.json&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Compare bug ratios:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;v1.9.0 bug ratio: &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.composition.bug_ratio * 100 | round | &amp;#34;\(.)%&amp;#34;&amp;#39;&lt;/span&gt; v1.json&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;v2.0.0 bug ratio: &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.composition.bug_ratio * 100 | round | &amp;#34;\(.)%&amp;#34;&amp;#39;&lt;/span&gt; v2.json&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="find-your-slowest-issues"&gt;Find your slowest issues&lt;a class="anchor" href="#find-your-slowest-issues"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v1.2.0 --results json | &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.issues | sort_by(-.lead_time_seconds) | .[0:5] | .[] |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;#\(.number) \(.title[0:40]) -- \(.lead_time_seconds / 86400 | round)d&amp;#34;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="check-label-coverage-before-a-release"&gt;Check label coverage before a release&lt;a class="anchor" href="#check-label-coverage-before-a-release"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v1.2.0 --results json | &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jq &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#34;Bug: \(.composition.bug_count), Feature: \(.composition.feature_count), Unlabeled: \(.composition.other_count)&amp;#34;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If &lt;code&gt;other_count&lt;/code&gt; is high, label your issues before publishing the release. Run &lt;code&gt;gh velocity config preflight&lt;/code&gt; to discover available labels and generate matching category matchers.&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://gh-velocity.org/guides/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gh-velocity.org/guides/troubleshooting/</guid><description>&lt;h1 id="troubleshooting"&gt;Troubleshooting&lt;a class="anchor" href="#troubleshooting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Solutions for common errors, N/A results, and unexpected output.&lt;/p&gt;
&lt;h2 id="error-messages"&gt;Error messages&lt;a class="anchor" href="#error-messages"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="not-a-git-repository-use---repo-ownername"&gt;&amp;quot;not a git repository. Use --repo owner/name&amp;quot;&lt;a class="anchor" href="#not-a-git-repository-use---repo-ownername"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Not inside a git checkout. Either &lt;code&gt;cd&lt;/code&gt; into a local clone or use &lt;code&gt;-R&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gh velocity quality release v1.2.0 -R owner/repo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="no-github-release-for-v100-using-current-time"&gt;&amp;quot;no GitHub release for v1.0.0, using current time&amp;quot;&lt;a class="anchor" href="#no-github-release-for-v100-using-current-time"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The tag exists but has no corresponding GitHub Release. The tool falls back to the current time for the release date, making release lag inaccurate. Fix by creating GitHub Releases for your tags. If you only push tags, the tool resolves dates from the tag's commit -- less precise but functional.&lt;/p&gt;</description></item></channel></rss>