{"id":78746,"date":"2026-09-26T05:22:47","date_gmt":"2026-09-26T05:22:47","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=78746"},"modified":"2026-09-26T05:22:52","modified_gmt":"2026-09-26T05:22:52","slug":"github-projects-essentials-2-hour-tutorial-hands-on-guide","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/github-projects-essentials-2-hour-tutorial-hands-on-guide\/","title":{"rendered":"GitHub Projects Essentials \u2014 2-Hour Tutorial &amp; Hands-On Guide"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Scope:<\/strong>&nbsp;Current&nbsp;<strong>GitHub Projects \/ Projects v2<\/strong>, not Projects (classic).<br><strong>Audience:<\/strong>&nbsp;Developers, DevOps engineers, engineering managers, product managers, project administrators, and GitHub organization members.<br><strong>Training duration:<\/strong>&nbsp;Approximately&nbsp;<strong>2 hours<\/strong>, including guided practice.<br><strong>Prerequisite:<\/strong>&nbsp;Basic familiarity with GitHub repositories, issues, and pull requests.<br><strong>Learning style:<\/strong>&nbsp;Concept -&gt; Why it matters -&gt; See it -&gt; Practice it -&gt; Remember it.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. What You Will Learn in 2 Hours<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">By the end of this tutorial, you should be able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Explain what GitHub Projects is and how it differs from Issues, Pull Requests, and Milestones.<\/li>\n\n\n\n<li>Create an organization-level project.<\/li>\n\n\n\n<li>Add issues, pull requests, and draft issues.<\/li>\n\n\n\n<li>Create useful project fields such as Priority, Sprint, Estimate, Team, and dates.<\/li>\n\n\n\n<li>Build Table, Board, and Roadmap views.<\/li>\n\n\n\n<li>Filter, sort, group, and slice project data.<\/li>\n\n\n\n<li>Use iterations for sprint planning.<\/li>\n\n\n\n<li>Understand the difference between Project Status and Issue\/PR state.<\/li>\n\n\n\n<li>Configure essential built-in workflows.<\/li>\n\n\n\n<li>Use auto-add and auto-archive safely.<\/li>\n\n\n\n<li>Apply basic access and visibility rules.<\/li>\n\n\n\n<li>Build a small but production-ready GitHub Project.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This guide intentionally leaves deep API, GraphQL, REST, GitHub App, enterprise governance, and portfolio architecture topics for the full reference guide.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Two-Hour Learning Plan<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Time<\/th><th class=\"has-text-align-left\" data-align=\"left\">Topic<\/th><th class=\"has-text-align-left\" data-align=\"left\">Outcome<\/th><\/tr><\/thead><tbody><tr><td>0-10 min<\/td><td>Foundations<\/td><td>Understand the GitHub Projects mental model<\/td><\/tr><tr><td>10-20 min<\/td><td>Create a Project<\/td><td>Build the project shell<\/td><\/tr><tr><td>20-40 min<\/td><td>Items and Fields<\/td><td>Add work and structured metadata<\/td><\/tr><tr><td>40-65 min<\/td><td>Table, Board, Roadmap<\/td><td>Build three useful views<\/td><\/tr><tr><td>65-80 min<\/td><td>Filter, Sort, Group, Slice<\/td><td>Turn one dataset into focused views<\/td><\/tr><tr><td>80-95 min<\/td><td>Sprint and Status<\/td><td>Plan an iteration and execution flow<\/td><\/tr><tr><td>95-110 min<\/td><td>Built-In Automation<\/td><td>Reduce manual project maintenance<\/td><\/tr><tr><td>110-120 min<\/td><td>Final Lab and Checklist<\/td><td>Validate the complete workflow<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Running Example<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Throughout the tutorial, imagine an organization named:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">acme-corp\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">with three repositories:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">acme-corp\/web\nacme-corp\/api\nacme-corp\/infra\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">We will create one organization project:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Acme Platform Delivery\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">and use it to manage work across all three repositories.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended fields:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Field<\/th><th class=\"has-text-align-left\" data-align=\"left\">Type<\/th><th class=\"has-text-align-left\" data-align=\"left\">Example Values<\/th><th class=\"has-text-align-left\" data-align=\"left\">Why We Need It<\/th><\/tr><\/thead><tbody><tr><td>Status<\/td><td>Single select<\/td><td>Backlog, Ready, In Progress, In Review, Done<\/td><td>Workflow state<\/td><\/tr><tr><td>Priority<\/td><td>Single select<\/td><td>P0, P1, P2, P3<\/td><td>Importance<\/td><\/tr><tr><td>Sprint<\/td><td>Iteration<\/td><td>Sprint 24, Sprint 25<\/td><td>Time-boxed planning<\/td><\/tr><tr><td>Estimate<\/td><td>Number<\/td><td>1, 2, 3, 5, 8<\/td><td>Capacity planning<\/td><\/tr><tr><td>Team<\/td><td>Single select<\/td><td>Web, API, Platform<\/td><td>Ownership<\/td><\/tr><tr><td>Start Date<\/td><td>Date<\/td><td>2026-10-01<\/td><td>Roadmap start<\/td><\/tr><tr><td>Target Date<\/td><td>Date<\/td><td>2026-10-15<\/td><td>Roadmap target<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. GitHub Projects Mental Model<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Projects is a planning layer over GitHub work.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Repositories]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Issues and Pull Requests]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;GitHub Project]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Draft Issues]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Fields]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Views]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">G<\/span><span class=\"hljs-selector-attr\">&#91;Workflows]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">H<\/span><span class=\"hljs-selector-attr\">&#91;Table]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">I<\/span><span class=\"hljs-selector-attr\">&#91;Board]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">J<\/span><span class=\"hljs-selector-attr\">&#91;Roadmap]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">The most important idea:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>GitHub Projects does not replace Issues or Pull Requests. It organizes them for planning.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">4.1 Projects vs Issues vs Pull Requests vs Milestones<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">GitHub Object<\/th><th class=\"has-text-align-left\" data-align=\"left\">What It Represents<\/th><th class=\"has-text-align-left\" data-align=\"left\">Typical Use<\/th><\/tr><\/thead><tbody><tr><td>Issue<\/td><td>A unit of work or discussion<\/td><td>Bug, feature, task<\/td><\/tr><tr><td>Pull Request<\/td><td>A code change<\/td><td>Review and merge<\/td><\/tr><tr><td>Milestone<\/td><td>A repository-level target<\/td><td>Release or phase<\/td><\/tr><tr><td>Project<\/td><td>Planning across many items<\/td><td>Backlog, sprint, roadmap<\/td><\/tr><tr><td>Draft Issue<\/td><td>A planning idea not yet assigned to a repository<\/td><td>Early backlog\/discovery<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Issue:\n<span class=\"hljs-string\">\"Add passkey authentication\"<\/span>\n\nPull Request:\n<span class=\"hljs-string\">\"Implement WebAuthn challenge endpoint\"<\/span>\n\n<span class=\"hljs-attr\">Milestone<\/span>:\n<span class=\"hljs-string\">\"v3.2 Release\"<\/span>\n\n<span class=\"hljs-attr\">Project<\/span>:\n<span class=\"hljs-string\">\"Acme Platform Delivery\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">4.2 One Project, Many Views<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Project stores items and metadata once.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Different views show the same data differently.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">TD<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;One Project Dataset]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Backlog Table]<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Current Sprint Board]<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Product Roadmap]<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;My Work View]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">This is why you usually do&nbsp;<strong>not<\/strong>&nbsp;need separate Projects just because different people want different views.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Create Your First GitHub Project<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For shared company work, prefer an&nbsp;<strong>organization-owned project<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5.1 UI Flow<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Organization]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Projects]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;New Project]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Blank Project]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Table]<\/span>\n    <span class=\"hljs-selector-tag\">E<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Name Project]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">G<\/span><span class=\"hljs-selector-attr\">&#91;Configure Fields]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">5.2 Hands-On Steps<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open your GitHub organization.<\/li>\n\n\n\n<li>Select\u00a0<strong>Projects<\/strong>.<\/li>\n\n\n\n<li>Select\u00a0<strong>New project<\/strong>.<\/li>\n\n\n\n<li>Start with a blank\u00a0<strong>Table<\/strong>.<\/li>\n\n\n\n<li>Name it:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Acme Platform Delivery\n<\/code><\/span><\/pre>\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Keep it\u00a0<strong>Private<\/strong>\u00a0while configuring it.<\/li>\n\n\n\n<li>Add a short description.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Cross-repository delivery planning for the Web, API, and Platform teams.\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">5.3 Why Start with Table?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Table layout is the easiest place to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>add fields;<\/li>\n\n\n\n<li>inspect metadata;<\/li>\n\n\n\n<li>bulk edit items;<\/li>\n\n\n\n<li>group work;<\/li>\n\n\n\n<li>clean up a backlog.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Board and Roadmap views can be added afterward.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Project Items<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Projects supports three important item types.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Item Type<\/th><th class=\"has-text-align-left\" data-align=\"left\">Use It When<\/th><\/tr><\/thead><tbody><tr><td>Issue<\/td><td>Work belongs in a repository<\/td><\/tr><tr><td>Pull Request<\/td><td>The code change itself must be tracked<\/td><\/tr><tr><td>Draft Issue<\/td><td>The idea is not ready for a repository<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">6.1 Add an Existing Issue<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">From the project:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Add item -&gt; Search repository -&gt; Select issue\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">You can also paste an issue URL:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">https:<span class=\"hljs-comment\">\/\/github.com\/acme-corp\/api\/issues\/201<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">6.2 Add a Pull Request<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A PR can also be a project item.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">https:<span class=\"hljs-comment\">\/\/github.com\/acme-corp\/api\/pull\/88<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Track PRs directly when review or merge state is part of the project workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6.3 Create a Draft Issue<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Title<\/span>: Add regional failover runbook\n\nBody:\nDocument RTO, RPO, traffic cutover, database recovery, and rollback.\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Draft issue lifecycle:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Idea]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Draft Issue]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Refine]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Ready for Engineering]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Convert to Issue]<\/span>\n    <span class=\"hljs-selector-tag\">E<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Choose Repository]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">6.4 Important Rule<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Draft Issue -&gt; when repository ownership is not decided\nIssue       -&gt; when work is real and should live in a repository\nPR          -&gt; when the code change itself is the tracking object\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Project Fields<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Fields turn a simple list of issues into a real planning system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are two categories.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7.1 GitHub Metadata<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Examples:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Title\nAssignees\nLabels\nMilestone\nRepository\nIssue Type\nIssue State\nPR State\nReviewers\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">These come from GitHub Issues and Pull Requests.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7.2 Project Custom Fields<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Common field types:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Text\n<span class=\"hljs-built_in\">Number<\/span>\n<span class=\"hljs-built_in\">Date<\/span>\nSingle select\nIteration\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">7.3 Field Selection Rule<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a field only if you expect to:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Filter\nSort\nGroup\nSlice\nAggregate\nAutomate\nReport\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Do not create a field just because someone mentioned a piece of information in a meeting.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Essential Fields to Create<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For this tutorial, create the following fields.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.1 Priority<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Single select\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Values:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Priority<\/th><th class=\"has-text-align-left\" data-align=\"left\">Meaning<\/th><\/tr><\/thead><tbody><tr><td>P0<\/td><td>Critical\/immediate<\/td><\/tr><tr><td>P1<\/td><td>High<\/td><\/tr><tr><td>P2<\/td><td>Normal<\/td><\/tr><tr><td>P3<\/td><td>Low<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Priority = P1\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">8.2 Team<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Single select\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Values:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Web\nAPI\nPlatform\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">8.3 Estimate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Number<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example scale:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">1, 2, 3, 5, 8\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Do not mix hours and story points in the same field.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8.4 Start Date and Target Date<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Date<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use these for Roadmap planning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Start <span class=\"hljs-built_in\">Date<\/span>  = <span class=\"hljs-number\">2026<\/span><span class=\"hljs-number\">-10<\/span><span class=\"hljs-number\">-01<\/span>\nTarget <span class=\"hljs-built_in\">Date<\/span> = <span class=\"hljs-number\">2026<\/span><span class=\"hljs-number\">-10<\/span><span class=\"hljs-number\">-15<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">8.5 Sprint<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Iteration\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Sprint 24\nSprint 25\nSprint 26\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">An Iteration field is better than a text field named&nbsp;<code>Sprint<\/code>&nbsp;because GitHub understands concepts such as:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-keyword\">@previous<\/span>\n@current\n@next\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">8.6 Status<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A useful simple workflow:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Backlog\nReady\nIn Progress\nIn Review\nDone\n<\/code><\/span><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Backlog]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Ready]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;In Progress]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;In Review]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Done]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Keep Status simple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Too many statuses usually create confusion.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Practice: Add Sample Work<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Add at least six issues or draft issues.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">web<\/span>   <span class=\"hljs-selector-id\">#101<\/span> <span class=\"hljs-selector-tag\">Add<\/span> <span class=\"hljs-selector-tag\">passkey<\/span> <span class=\"hljs-selector-tag\">enrollment<\/span> <span class=\"hljs-selector-tag\">screen<\/span>\n<span class=\"hljs-selector-tag\">web<\/span>   <span class=\"hljs-selector-id\">#102<\/span> <span class=\"hljs-selector-tag\">Add<\/span> <span class=\"hljs-selector-tag\">account<\/span> <span class=\"hljs-selector-tag\">recovery<\/span> <span class=\"hljs-selector-tag\">UX<\/span>\n\n<span class=\"hljs-selector-tag\">api<\/span>   <span class=\"hljs-selector-id\">#201<\/span> <span class=\"hljs-selector-tag\">Add<\/span> <span class=\"hljs-selector-tag\">WebAuthn<\/span> <span class=\"hljs-selector-tag\">challenge<\/span> <span class=\"hljs-selector-tag\">endpoint<\/span>\n<span class=\"hljs-selector-tag\">api<\/span>   <span class=\"hljs-selector-id\">#202<\/span> <span class=\"hljs-selector-tag\">Add<\/span> <span class=\"hljs-selector-tag\">recovery<\/span> <span class=\"hljs-selector-tag\">token<\/span> <span class=\"hljs-selector-tag\">endpoint<\/span>\n\n<span class=\"hljs-selector-tag\">infra<\/span> <span class=\"hljs-selector-id\">#301<\/span> <span class=\"hljs-selector-tag\">Add<\/span> <span class=\"hljs-selector-tag\">authentication<\/span> <span class=\"hljs-selector-tag\">audit<\/span> <span class=\"hljs-selector-tag\">dashboard<\/span>\n<span class=\"hljs-selector-tag\">infra<\/span> <span class=\"hljs-selector-id\">#302<\/span> <span class=\"hljs-selector-tag\">Rotate<\/span> <span class=\"hljs-selector-tag\">production<\/span> <span class=\"hljs-selector-tag\">signing<\/span> <span class=\"hljs-selector-tag\">keys<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Assign fields such as:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Item<\/th><th class=\"has-text-align-left\" data-align=\"left\">Priority<\/th><th class=\"has-text-align-left\" data-align=\"left\">Team<\/th><th class=\"has-text-align-right\" data-align=\"right\">Estimate<\/th><\/tr><\/thead><tbody><tr><td>Passkey screen<\/td><td>P1<\/td><td>Web<\/td><td class=\"has-text-align-right\" data-align=\"right\">5<\/td><\/tr><tr><td>Recovery UX<\/td><td>P2<\/td><td>Web<\/td><td class=\"has-text-align-right\" data-align=\"right\">3<\/td><\/tr><tr><td>WebAuthn endpoint<\/td><td>P1<\/td><td>API<\/td><td class=\"has-text-align-right\" data-align=\"right\">5<\/td><\/tr><tr><td>Recovery API<\/td><td>P2<\/td><td>API<\/td><td class=\"has-text-align-right\" data-align=\"right\">3<\/td><\/tr><tr><td>Audit dashboard<\/td><td>P2<\/td><td>Platform<\/td><td class=\"has-text-align-right\" data-align=\"right\">3<\/td><\/tr><tr><td>Rotate signing keys<\/td><td>P0<\/td><td>Platform<\/td><td class=\"has-text-align-right\" data-align=\"right\">2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">At this stage, you already have enough data to build useful views.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Project Views<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A&nbsp;<strong>View<\/strong>&nbsp;is a saved way to look at the project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A view can define its own:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Layout\nFilter\nSort\nGrouping\nSlicing\nVisible fields\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">We will create three essential views.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">TD<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Acme Platform Delivery]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Backlog - Table]<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Current Sprint - Board]<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Roadmap - Timeline]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. View 1 \u2014 Backlog Table<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The Table layout is ideal for backlog management.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11.1 Configure the View<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Name:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Backlog\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Layout:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Table\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Show fields:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Title\nStatus\nPriority\nTeam\nSprint\nEstimate\nAssignees\nRepository\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Group by:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Priority\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Sort:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Priority\nTarget <span class=\"hljs-built_in\">Date<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">11.2 Why This Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The backlog answers:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">What work exists?\nWhat is most important?\nWho owns it?\nHow large is it?\nHas it been scheduled?\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">11.3 Dragging Between Groups<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If your table is grouped by Priority:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">P2 -&gt; P1\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dragging an item between groups can update its Priority value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The view becomes an editing interface, not just a report.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. View 2 \u2014 Current Sprint Board<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Boards are ideal for execution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create another view:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Current Sprint\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Layout:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Board\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Columns:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Status\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Filter:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Optional horizontal grouping:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Team\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Show card fields:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Priority\nEstimate\nAssignees\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Conceptually:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>            Ready | In Progress | In Review | Done\nWeb\nAPI\nPlatform\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">12.1 Card Movement Updates Data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When Status drives the columns:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Ready -&gt; In Progress\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">means:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Status = In Progress\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">The board is directly editing the Project field.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">12.2 Work-in-Progress Limits<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A board column can have an item limit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">In Progress limit = 5\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Important:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A GitHub Projects WIP limit is a&nbsp;<strong>warning\/signal<\/strong>, not a hard enforcement rule.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. View 3 \u2014 Roadmap<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use Roadmap for timeline planning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Roadmap\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Layout:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Roadmap\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Configure:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Start field: Start <span class=\"hljs-built_in\">Date<\/span>\nTarget field: Target <span class=\"hljs-built_in\">Date<\/span>\nGroup by: Team\n<span class=\"hljs-attr\">Zoom<\/span>: Quarter\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Web Work]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;October]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;API Work]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Platform Work]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;November]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">A real GitHub Roadmap renders these as timeline bars rather than flowchart nodes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use Roadmap for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>quarterly planning;<\/li>\n\n\n\n<li>releases;<\/li>\n\n\n\n<li>multi-team coordination;<\/li>\n\n\n\n<li>major delivery windows.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Do not put every tiny engineering task on a long-term roadmap.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Filtering \u2014 The Most Important Daily Skill<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A good saved view is mostly:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Useful data\n+\nGood filter\n+\nRight layout\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">14.1 Basic Filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Status:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">status<\/span><span class=\"hljs-selector-pseudo\">:Done<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Not Done:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">-status<\/span><span class=\"hljs-selector-pseudo\">:Done<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Repository:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">repo:acme-corp\/api\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">My work:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">assignee<\/span>:<span class=\"hljs-keyword\">@me<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Missing assignee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">no<\/span><span class=\"hljs-selector-pseudo\">:assignee<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Missing priority:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-25\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">no<\/span><span class=\"hljs-selector-pseudo\">:priority<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-25\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">14.2 Combine Filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Current sprint bugs:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-26\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span> <span class=\"hljs-attribute\">type:<\/span>bug\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-26\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">My unfinished work:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-27\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">assignee<\/span>:<span class=\"hljs-keyword\">@me<\/span> <span class=\"hljs-attribute\">-status:<\/span>Done\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-27\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">High-priority incomplete work:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-28\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">priority<\/span><span class=\"hljs-selector-pseudo\">:P0<\/span>,<span class=\"hljs-selector-tag\">P1<\/span> <span class=\"hljs-selector-tag\">-status<\/span><span class=\"hljs-selector-pseudo\">:Done<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-28\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">API work still open:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">repo:acme-corp\/api -status:Done\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">14.3 Date Filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Today:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-29\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">target-date<\/span>:<span class=\"hljs-keyword\">@today<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-29\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Next seven days:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-30\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">target-date<\/span>:<span class=\"hljs-keyword\">@today<\/span>..<span class=\"hljs-keyword\">@today<\/span>+7\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-30\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">14.4 Iteration Filters<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-31\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@previous<\/span>\n<span class=\"hljs-attribute\">sprint:<\/span>@current\n<span class=\"hljs-attribute\">sprint:<\/span>@next\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-31\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">This is one reason Iteration fields are so useful.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Sort vs Group vs Slice<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">These concepts are often confused.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Feature<\/th><th class=\"has-text-align-left\" data-align=\"left\">Meaning<\/th><th class=\"has-text-align-left\" data-align=\"left\">Example<\/th><\/tr><\/thead><tbody><tr><td>Filter<\/td><td>Reduce what is visible<\/td><td>Only current sprint<\/td><\/tr><tr><td>Sort<\/td><td>Order visible items<\/td><td>Priority first<\/td><\/tr><tr><td>Group<\/td><td>Divide into sections<\/td><td>Group by Team<\/td><\/tr><tr><td>Slice<\/td><td>Temporarily focus on one value<\/td><td>Show only API team<\/td><\/tr><tr><td>Field Sum<\/td><td>Add numeric values<\/td><td>Sum Estimate<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Simple mental model:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-32\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Filter = What should I see?\nSort   = In what order?\nGroup  = In what sections?\nSlice  = Which section\/value <span class=\"hljs-keyword\">do<\/span> I want to focus on now?\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-32\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-33\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">Filter<\/span>: <span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span>\n<span class=\"hljs-attribute\">Group:<\/span> Team\n<span class=\"hljs-attribute\">Sort:<\/span> Priority\n<span class=\"hljs-attribute\">Sum:<\/span> Estimate\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-33\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">This gives a very useful sprint planning table.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Sprint Planning with Iterations<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A simple sprint setup needs only:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Sprint\nEstimate\nStatus\nAssignee or Team\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">16.1 Sprint Planning Flow<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-34\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Prioritized Backlog]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Choose Sprint]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Confirm Estimates]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Check Capacity]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Commit Work]<\/span>\n    <span class=\"hljs-selector-tag\">E<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Execute on Board]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">G<\/span><span class=\"hljs-selector-attr\">&#91;Review Result]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-34\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">16.2 Configure the Sprint<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-35\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Duration<\/span>: 2 weeks\n<span class=\"hljs-attribute\">Field<\/span>: Sprint\n<span class=\"hljs-attribute\">Current<\/span>: Sprint 24\n<span class=\"hljs-attribute\">Next<\/span>: Sprint 25\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-35\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Recommended saved views:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-36\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">Current<\/span> <span class=\"hljs-selector-tag\">Sprint<\/span> <span class=\"hljs-selector-tag\">-<\/span>&gt; <span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span>\nNext Sprint    -&gt; <span class=\"hljs-attribute\">sprint:<\/span>@next\nPrevious       -&gt; <span class=\"hljs-attribute\">sprint:<\/span>@previous\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-36\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">16.3 Capacity<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Suppose:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">API capacity      = 20 points\nCommitted Estimate = 22\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Signal:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Potential overcommitment\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Projects can sum Estimate values.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your team still decides what the capacity number means.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Never use story-point totals to score individual engineers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Project Status vs Issue State<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This distinction matters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Issue state     = Open\nProject Status  = In Review\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">That is completely valid.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Issue state = GitHub object lifecycle\nStatus      = Planning workflow state\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Another example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">PR state = Open\nProject Status = In Review\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">When the PR merges:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">PR state = Merged\nProject Status = Done\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">can be automated.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Built-In Project Workflows<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Before writing GitHub Actions or API scripts, check whether GitHub&#8217;s built-in workflows already solve the problem.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-37\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">flowchart TD\n    A&#91;Need Automation] --&gt; B{Built-In Workflow Enough}\n    B --&gt;|Yes| C&#91;<span class=\"hljs-keyword\">Use<\/span> <span class=\"hljs-title\">Built<\/span>-<span class=\"hljs-title\">In<\/span> <span class=\"hljs-title\">Workflow<\/span>]\n    <span class=\"hljs-title\">B<\/span> --&gt;|<span class=\"hljs-title\">No<\/span>| <span class=\"hljs-title\">D<\/span>&#91;<span class=\"hljs-title\">Use<\/span> <span class=\"hljs-title\">Actions<\/span> <span class=\"hljs-title\">CLI<\/span> <span class=\"hljs-title\">or<\/span> <span class=\"hljs-title\">API<\/span>]\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-37\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Built-in workflows are easier to maintain because they do not require custom code or credentials.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">18.1 Set Initial Status<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-38\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">When item is added\n<span class=\"hljs-built_in\">Set<\/span> Status = Backlog\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-38\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-39\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Set<\/span> Status = Todo\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-39\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">depending on your workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">18.2 Set Done When an Issue Closes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Issue closed -&gt; Status = Done\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">18.3 Set Done When a PR Merges<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">PR merged -&gt; Status = Done\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">18.4 Reopened Work<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Issue reopened -&gt; Status = Ready\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use this only if that matches your team&#8217;s workflow semantics.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Auto-Add to Project<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Auto-add lets GitHub add matching repository items to a Project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example requirement:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-40\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Add every open issue <span class=\"hljs-keyword\">with<\/span> label platform.\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-40\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example filter:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-41\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">is<\/span><span class=\"hljs-selector-pseudo\">:issue<\/span> <span class=\"hljs-selector-tag\">is<\/span><span class=\"hljs-selector-pseudo\">:open<\/span> <span class=\"hljs-selector-tag\">label<\/span><span class=\"hljs-selector-pseudo\">:platform<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-41\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Workflow:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">flowchart LR\n    A&#91;Issue Created or Updated] --&gt; B{Matches Filter}\n    B --&gt;|Yes| C&#91;Add to Project]\n    B --&gt;|No| D&#91;Ignore]\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">19.1 Important Limitation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Auto-add is not the same as historical backfill.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you enable a rule today, existing items that already matched earlier may still need to be bulk-added manually.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">19.2 Good Uses<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-42\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">label<\/span><span class=\"hljs-selector-pseudo\">:roadmap<\/span>\n<span class=\"hljs-selector-tag\">label<\/span><span class=\"hljs-selector-pseudo\">:platform<\/span>\n<span class=\"hljs-selector-tag\">label<\/span><span class=\"hljs-selector-pseudo\">:security<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-42\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use clear labels or deterministic rules.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid building dozens of fragile auto-add rules.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. Auto-Archive<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Completed work eventually clutters active views.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auto-archive keeps the Project useful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typical lifecycle:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-43\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Active]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Done]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Retention Period]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Archived]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-43\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example policy:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Completed work stays visible for 30 days.\nThen it is archived.\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Archive is usually better than delete because archived items can be restored and keep their Project context.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. Insights \u2014 What Students Should Know<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Insights create charts from Project data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Useful examples:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Items by Status\nItems by Priority\nEstimate by Team\nWork by Repository\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-44\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">Filter<\/span>: <span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span>\n<span class=\"hljs-attribute\">X-axis:<\/span> Status\nGroup <span class=\"hljs-attribute\">by:<\/span> Team\n<span class=\"hljs-attribute\">Y-axis:<\/span> Sum of Estimate\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-44\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Do not overbuild dashboards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a 2-hour course, remember:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Charts are only as good as the fields behind them.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">If half the project has no Priority, a Priority chart is incomplete.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. Permissions and Visibility \u2014 Essential Safety<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Projects can be:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-45\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">Private<\/span>\n<span class=\"hljs-keyword\">Public<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-45\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">For internal company work:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-46\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">Private<\/span> = safest <span class=\"hljs-keyword\">default<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-46\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Typical access model:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">User Type<\/th><th class=\"has-text-align-left\" data-align=\"left\">Project Role<\/th><\/tr><\/thead><tbody><tr><td>Stakeholder<\/td><td>Read<\/td><\/tr><tr><td>Delivery team<\/td><td>Write<\/td><\/tr><tr><td>Project maintainers<\/td><td>Admin<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Important:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Project permission does not automatically grant access to private repository content.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Also remember that a public Project can expose planning metadata even when linked repository content remains private.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Potentially sensitive information includes:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Roadmap dates\nInternal priorities\nProduct codenames\nSecurity remediation work\nCustomer names\nRelease plans\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">23. Minimal Production-Ready Project<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A good starting configuration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-47\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Project:\n  Acme Platform Delivery\n\nOwner:\n  Organization\n\nVisibility:\n  <span class=\"hljs-keyword\">Private<\/span>\n\nAdmins:\n  At least <span class=\"hljs-number\">2<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-47\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Fields:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-48\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Status\nPriority\nSprint\nEstimate\nTeam\nStart <span class=\"hljs-built_in\">Date<\/span>\nTarget <span class=\"hljs-built_in\">Date<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-48\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Views:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Backlog\nCurrent Sprint\nRoadmap\nMy Work\nRisks\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Workflows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-49\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Set<\/span> initial Status\n<span class=\"hljs-built_in\">Set<\/span> Done when issue closes\n<span class=\"hljs-built_in\">Set<\/span> Done when PR merges\nAuto-add deterministic work\nAuto-archive old completed work\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-49\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Documentation:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Purpose\nScope\nField definitions\nStatus definitions\nView definitions\nAutomation rules\nOwnership\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">24. Final 10-Minute Hands-On Lab<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Build the complete flow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1 \u2014 Create Project<\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Acme Platform Delivery\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 2 \u2014 Add Fields<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-50\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Status\nPriority\nSprint\nEstimate\nTeam\nStart <span class=\"hljs-built_in\">Date<\/span>\nTarget <span class=\"hljs-built_in\">Date<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-50\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 3 \u2014 Add Six Items<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use the sample work from this guide.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 \u2014 Configure Backlog<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-51\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Layout<\/span>: Table\n<span class=\"hljs-attribute\">Group<\/span>: Priority\n<span class=\"hljs-attribute\">Fields<\/span>: Status, Priority, Team, Estimate, Sprint\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-51\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 5 \u2014 Configure Sprint Board<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-52\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Layout<\/span>: Board\n<span class=\"hljs-attribute\">Columns<\/span>: Status\n<span class=\"hljs-attribute\">Filter<\/span>: sprint:@current\n<span class=\"hljs-attribute\">Group<\/span>: Team\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-52\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 6 \u2014 Configure Roadmap<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-53\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Layout<\/span>: Roadmap\n<span class=\"hljs-attribute\">Start<\/span>: Start Date\n<span class=\"hljs-attribute\">Target<\/span>: Target Date\n<span class=\"hljs-attribute\">Group<\/span>: Team\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-53\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 7 \u2014 Enable Workflows<\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Item added -&gt; Initial Status\nIssue closed -&gt; Done\nPR merged -&gt; Done\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 8 \u2014 Test the Complete Lifecycle<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-54\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Create Issue]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Add to Project]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Set Priority and Team]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Assign Sprint]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Move Through Board]<\/span>\n    <span class=\"hljs-selector-tag\">E<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Close Issue or Merge PR]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">G<\/span><span class=\"hljs-selector-attr\">&#91;Status Done]<\/span>\n    <span class=\"hljs-selector-tag\">G<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">H<\/span><span class=\"hljs-selector-attr\">&#91;Archive Later]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-54\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Validation:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-55\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Item<\/span> <span class=\"hljs-selector-tag\">appears<\/span> <span class=\"hljs-selector-tag\">in<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">Project<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Required<\/span> <span class=\"hljs-selector-tag\">fields<\/span> <span class=\"hljs-selector-tag\">are<\/span> <span class=\"hljs-selector-tag\">visible<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Backlog<\/span> <span class=\"hljs-selector-tag\">grouping<\/span> <span class=\"hljs-selector-tag\">works<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Sprint<\/span> <span class=\"hljs-selector-tag\">filter<\/span> <span class=\"hljs-selector-tag\">works<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Board<\/span> <span class=\"hljs-selector-tag\">movement<\/span> <span class=\"hljs-selector-tag\">updates<\/span> <span class=\"hljs-selector-tag\">Status<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Roadmap<\/span> <span class=\"hljs-selector-tag\">displays<\/span> <span class=\"hljs-selector-tag\">planning<\/span> <span class=\"hljs-selector-tag\">dates<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Close<\/span> <span class=\"hljs-selector-tag\">or<\/span> <span class=\"hljs-selector-tag\">merge<\/span> <span class=\"hljs-selector-tag\">updates<\/span> <span class=\"hljs-selector-tag\">Status<\/span>\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Permissions<\/span> <span class=\"hljs-selector-tag\">are<\/span> <span class=\"hljs-selector-tag\">appropriate<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-55\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">25. Essential Filter Cheat Sheet<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Goal<\/th><th class=\"has-text-align-left\" data-align=\"left\">Filter<\/th><\/tr><\/thead><tbody><tr><td>My unfinished work<\/td><td><code>assignee:@me -status:Done<\/code><\/td><\/tr><tr><td>Current sprint<\/td><td><code>sprint:@current<\/code><\/td><\/tr><tr><td>Next sprint<\/td><td><code>sprint:@next<\/code><\/td><\/tr><tr><td>Previous sprint<\/td><td><code>sprint:@previous<\/code><\/td><\/tr><tr><td>P0\/P1 incomplete<\/td><td><code>priority:P0,P1 -status:Done<\/code><\/td><\/tr><tr><td>API work<\/td><td><code>repo:acme-corp\/api<\/code><\/td><\/tr><tr><td>API open work<\/td><td><code>repo:acme-corp\/api -status:Done<\/code><\/td><\/tr><tr><td>Missing assignee<\/td><td><code>no:assignee<\/code><\/td><\/tr><tr><td>Missing priority<\/td><td><code>no:priority<\/code><\/td><\/tr><tr><td>Target today<\/td><td><code>target-date:@today<\/code><\/td><\/tr><tr><td>Target in next 7 days<\/td><td><code>target-date:@today..@today+7<\/code><\/td><\/tr><tr><td>Open issues<\/td><td><code>is:issue is:open<\/code><\/td><\/tr><tr><td>Pull requests<\/td><td><code>is:pr<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">26. Essential Design Rules<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Remember these ten rules.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Use Issues for real repository work.<\/strong><\/li>\n\n\n\n<li><strong>Use Draft Issues for ideas not ready for a repository.<\/strong><\/li>\n\n\n\n<li><strong>Create one Project when multiple views can solve the audience problem.<\/strong><\/li>\n\n\n\n<li><strong>Keep custom fields minimal.<\/strong><\/li>\n\n\n\n<li><strong>Keep Status simple.<\/strong><\/li>\n\n\n\n<li><strong>Use Iteration for sprints instead of free-text sprint names.<\/strong><\/li>\n\n\n\n<li><strong>Use Table for planning and bulk editing.<\/strong><\/li>\n\n\n\n<li><strong>Use Board for execution flow.<\/strong><\/li>\n\n\n\n<li><strong>Use Roadmap for timeline communication.<\/strong><\/li>\n\n\n\n<li><strong>Automate deterministic bookkeeping before building custom Actions or APIs.<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">27. Common Mistakes<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 1 \u2014 Too Many Fields<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bad:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Priority\nBusiness Priority\nEngineering Priority\nPM Priority\nCustomer Priority\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Better:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">One clearly defined Priority field\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Mistake 2 \u2014 Too Many Statuses<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bad:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Todo\nReady\nReady for Dev\nDevelopment\nDev Complete\nQA\nQA Complete\nReview\nReady for Release\nReleased\nClosed\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use only the states that change a real operational decision.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 3 \u2014 Separate Project for Every Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not automatically create:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Web Project\nAPI Project\nInfra Project\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">when one shared delivery Project with repository filters would work better.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 4 \u2014 Manual Done Updates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If closing an issue always means the Project should show Done, automate it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 5 \u2014 No Archive Policy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Years of completed work mixed with active work makes the Project harder to use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mistake 6 \u2014 Public by Accident<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A public Project can reveal planning metadata.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use Private unless public planning is intentional.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">28. Optional 5-Minute Advanced Preview \u2014 CLI and Actions<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This section is&nbsp;<strong>not required for the core 2-hour learning objective<\/strong>, but it helps students understand where Projects can go next.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">28.1 GitHub CLI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">List Projects:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-56\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">gh project <span class=\"hljs-keyword\">list<\/span> --owner acme-corp\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-56\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">List fields:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-57\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">gh project field-<span class=\"hljs-keyword\">list<\/span> <span class=\"hljs-number\">7<\/span> --owner acme-corp\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-57\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">List items:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-58\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">gh project item-<span class=\"hljs-keyword\">list<\/span> <span class=\"hljs-number\">7<\/span> --owner acme-corp\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-58\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Add an issue:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-59\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">gh project item-add <span class=\"hljs-number\">7<\/span> \\\n  --owner acme-corp \\\n  --url <span class=\"hljs-string\">'https:\/\/github.com\/acme-corp\/api\/issues\/201'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-59\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">28.2 GitHub Actions Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If built-in auto-add cannot express your rule, GitHub Actions can add items.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-60\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">name: Add roadmap issues to project\n\n<span class=\"hljs-attr\">on<\/span>:\n  issues:\n    types: &#91;opened, labeled]\n\n<span class=\"hljs-attr\">jobs<\/span>:\n  add-to-project:\n    <span class=\"hljs-keyword\">if<\/span>: contains(github.event.issue.labels.*.name, <span class=\"hljs-string\">'roadmap'<\/span>)\n    runs-on: ubuntu-latest\n\n    <span class=\"hljs-attr\">steps<\/span>:\n      - name: Add issue to project\n        <span class=\"hljs-attr\">uses<\/span>: actions\/add-to-project@v2\n        <span class=\"hljs-attr\">with<\/span>:\n          project-url: https:<span class=\"hljs-comment\">\/\/github.com\/orgs\/acme-corp\/projects\/7<\/span>\n          github-token: ${{ secrets.PROJECT_TOKEN }}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-60\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use custom automation only when built-in workflows are not enough.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">29. What to Learn Next<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">After completing this 2-hour Essentials tutorial, continue with the full reference guide for:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-61\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">GitHub Actions + Projects\ngh project CLI\nGraphQL ProjectV2\nREST Projects API\nGitHub Apps\nSecurity architecture\nOrganization governance\nEnterprise governance\nAdvanced field architecture\nParent and sub-issues\nDependencies\nCapacity planning\nPortfolio management\nAdvanced roadmaps\nAdvanced Kanban\nCross-repository architecture\nTemplates at scale\nAPI authentication\nLimits and constraints\nMigration <span class=\"hljs-keyword\">from<\/span> Projects Classic\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-61\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">30. Final Mental Model<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">If students remember only one diagram, make it this one:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-62\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n    <span class=\"hljs-selector-tag\">A<\/span><span class=\"hljs-selector-attr\">&#91;Issues PRs Drafts]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">B<\/span><span class=\"hljs-selector-attr\">&#91;Project]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">&#91;Fields]<\/span>\n    <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">D<\/span><span class=\"hljs-selector-attr\">&#91;Views]<\/span>\n    <span class=\"hljs-selector-tag\">D<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">E<\/span><span class=\"hljs-selector-attr\">&#91;Table Board Roadmap]<\/span>\n    <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">F<\/span><span class=\"hljs-selector-attr\">&#91;Workflows]<\/span>\n    <span class=\"hljs-selector-tag\">F<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">G<\/span><span class=\"hljs-selector-attr\">&#91;Less Manual Work]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-62\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">And one sentence:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>GitHub Projects is a structured planning layer over GitHub Issues, Pull Requests, and Draft Issues, using fields, views, and automation to turn repository work into a manageable delivery system.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">31. Student Revision Checklist<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A student who can answer all of these is ready to use GitHub Projects effectively.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-63\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">is<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">difference<\/span> <span class=\"hljs-selector-tag\">between<\/span> <span class=\"hljs-selector-tag\">an<\/span> <span class=\"hljs-selector-tag\">Issue<\/span> <span class=\"hljs-selector-tag\">and<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">Project<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">are<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">three<\/span> <span class=\"hljs-selector-tag\">Project<\/span> <span class=\"hljs-selector-tag\">item<\/span> <span class=\"hljs-selector-tag\">types<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">When<\/span> <span class=\"hljs-selector-tag\">should<\/span> <span class=\"hljs-selector-tag\">I<\/span> <span class=\"hljs-selector-tag\">use<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">Draft<\/span> <span class=\"hljs-selector-tag\">Issue<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">is<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">Project<\/span> <span class=\"hljs-selector-tag\">custom<\/span> <span class=\"hljs-selector-tag\">field<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">Why<\/span> <span class=\"hljs-selector-tag\">use<\/span> <span class=\"hljs-selector-tag\">Iteration<\/span> <span class=\"hljs-selector-tag\">for<\/span> <span class=\"hljs-selector-tag\">Sprint<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">is<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">difference<\/span> <span class=\"hljs-selector-tag\">between<\/span> <span class=\"hljs-selector-tag\">Table<\/span>, <span class=\"hljs-selector-tag\">Board<\/span>, <span class=\"hljs-selector-tag\">and<\/span> <span class=\"hljs-selector-tag\">Roadmap<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">does<\/span> <span class=\"hljs-selector-tag\">filtering<\/span> <span class=\"hljs-selector-tag\">do<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">is<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">difference<\/span> <span class=\"hljs-selector-tag\">between<\/span> <span class=\"hljs-selector-tag\">filter<\/span>, <span class=\"hljs-selector-tag\">sort<\/span>, <span class=\"hljs-selector-tag\">group<\/span>, <span class=\"hljs-selector-tag\">and<\/span> <span class=\"hljs-selector-tag\">slice<\/span>?\n<span class=\"hljs-selector-attr\">&#91; ]<\/span> <span class=\"hljs-selector-tag\">What<\/span> <span class=\"hljs-selector-tag\">does<\/span> <span class=\"hljs-selector-tag\">sprint<\/span>:<span class=\"hljs-keyword\">@current<\/span> mean?\n&#91; ] What is the difference between Project Status <span class=\"hljs-keyword\">and<\/span> Issue state?\n&#91; ] What should happen when an issue closes?\n&#91; ] What is Auto-add?\n&#91; ] Why is Auto-archive useful?\n&#91; ] What is the safest default Project visibility?\n&#91; ] When should I prefer built-in workflows over GitHub Actions?\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-63\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">32. Trainer Delivery Notes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For a live 2-hour class, do not spend equal time on every feature.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended emphasis:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">20% Concepts\n50% UI demonstration and hands-on practice\n20% Filters, sprint flow, and automation\n10% Review and troubleshooting\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">The most valuable live demonstrations are:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add an Issue to the Project.<\/li>\n\n\n\n<li>Change fields inline.<\/li>\n\n\n\n<li>Group a Table by Priority.<\/li>\n\n\n\n<li>Drag a Board card from Ready to In Progress.<\/li>\n\n\n\n<li>Filter using\u00a0<code>sprint:@current<\/code>.<\/li>\n\n\n\n<li>Create a Roadmap using Start Date and Target Date.<\/li>\n\n\n\n<li>Close an Issue and show Status automation.<\/li>\n\n\n\n<li>Explain why one Project can support many audiences through saved views.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid spending core class time on GraphQL IDs, REST endpoints, or enterprise governance unless the audience specifically needs administration or automation engineering.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">33. Official References<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Projects changes regularly. Verify behavior using the current official documentation.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GitHub Projects documentation<br><a href=\"https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\">https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects<\/a><\/li>\n\n\n\n<li>Quickstart for Projects<br><a href=\"https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/learning-about-projects\/quickstart-for-projects\">https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/learning-about-projects\/quickstart-for-projects<\/a><\/li>\n\n\n\n<li>Adding items to Projects<br><a href=\"https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/managing-items-in-your-project\/adding-items-to-your-project\">https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/managing-items-in-your-project\/adding-items-to-your-project<\/a><\/li>\n\n\n\n<li>Filtering Projects<br><a href=\"https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/customizing-views-in-your-project\/filtering-projects\">https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/customizing-views-in-your-project\/filtering-projects<\/a><\/li>\n\n\n\n<li>Automating Projects<br><a href=\"https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/automating-your-project\">https:\/\/docs.github.com\/en\/issues\/planning-and-tracking-with-projects\/automating-your-project<\/a><\/li>\n\n\n\n<li>GitHub CLI\u00a0<code>gh project<\/code><br><a href=\"https:\/\/cli.github.com\/manual\/gh_project\">https:\/\/cli.github.com\/manual\/gh_project<\/a><\/li>\n\n\n\n<li>Official\u00a0<code>actions\/add-to-project<\/code>\u00a0action<br><a href=\"https:\/\/github.com\/actions\/add-to-project\">https:\/\/github.com\/actions\/add-to-project<\/a><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Final Takeaway<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For an effective GitHub Projects implementation, start small:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-64\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Issues and PRs\n      |\n      v\nSmall Field <span class=\"hljs-built_in\">Set<\/span>\n      |\n      v\nBacklog + Sprint + Roadmap Views\n      |\n      v\nBuilt-In Automation\n      |\n      v\nSimple Governance\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-64\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Do not begin with dozens of fields, complex APIs, or a portfolio hierarchy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First make sure the team can answer:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">What work exists?\nWhat is important?\nWho owns it?\nWhat are we doing now?\nWhat is next?\nWhen is it expected?\nWhat is done?\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">If GitHub Projects answers those questions clearly, the Project is already doing its most important job.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scope:&nbsp;Current&nbsp;GitHub Projects \/ Projects v2, not Projects (classic).Audience:&nbsp;Developers, DevOps engineers, engineering managers, product managers, project administrators, and GitHub organization members.Training duration:&nbsp;Approximately&nbsp;2 hours, including guided practice.Prerequisite:&nbsp;Basic familiarity with&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[11138],"tags":[],"class_list":["post-78746","post","type-post","status-publish","format-standard","hentry","category-best-tools"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=78746"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78746\/revisions"}],"predecessor-version":[{"id":78747,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78746\/revisions\/78747"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=78746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=78746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=78746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}