Skip to main content

Why Squad?

· 5 min read

If you already use GitHub Copilot, the real question is simple: why would Squad feel different enough to change your workflow?

The first time I used Squad, I got a result that was noticeably better than what I got from a single Copilot chat. It was the same task and basically the same intent, but the coverage was better.

That was the moment it clicked for me: Squad is a multi-agent orchestrator. Instead of asking one AI generalist to do everything, I can route the same task through specialists with clear roles.

This post came from a coworker asking me, "Why Squad?"

Watercolor illustration of a sunlit woodworking workshop with a team working on projects.

Why Squad feels different from Copilot

Before Squad, my workflow was simple: open Copilot and ask one agent for everything. That works well for plenty of tasks, but it is still one perspective.

When I ran Squad on the same docs task, the output came back with fewer blind spots. It was not just more polished. It covered angles the generalist missed.

That pushed me to design my own team. I started with obvious roles like builder, reviewer, and debugger, then added project-specific specialists with strong opinions about quality. I now run with about 30 agents.

I am directing now, not doing

With Squad, my job shifts from doing the task to directing the process.

I set the plan, the constraints, and the definition of done. Squad coordinates which agents should build, review, challenge assumptions, and test. Sometimes I direct at a high level with goals and standards. Sometimes I assign specific work.

I ask Squad to make better decisions with less intervention from me.

Why build and review should be separate teams

For me, the biggest quality jump came from separating build and review.

At first, I only wanted better output than one generalist could produce. Later, I built a dedicated review team where each reviewer had a different job:

  • One reviewer hunts for security risks.
  • One checks factual correctness.
  • One stress-tests logic and edge cases.
  • One reviews performance tradeoffs.

I do not want eight approvals. I want eight different objections.

I also want those objections resolved through agent collaboration, not by pulling me into every pass. Just like a real PR review, reviewers should send issues back to build, build should improve the work, and the review should run again until everyone agrees the bar is met.

Watercolor illustration of a team examining the same cabinet from different angles

A single generalist reviewing its own output gives me consistency with itself. That is not the same as complete and correct.

For this process, done means reviewer consensus after iterative fixes. If reviewers still disagree, the PR is not done.

"Did it finish?" is the wrong question

Before Squad, I asked:

  • Did it work?
  • What needs to change?
  • Is it done?

With Squad, the better question is: How can this be more consistently correct?

Who else should review this? Which assumptions need pressure testing? What would a performance engineer challenge? What would a security reviewer reject?

That changes my role. I am not just relieved that something exists. I am trying to improve the system that produces it.

Try this once with the same task

If you are curious, run a simple experiment:

  1. Pick a task you already gave to one Copilot agent.
  2. Run it again with a build team.
  3. Then run a separate review team on that output.
  4. Compare what the review team catches.

That comparison is why Squad is interesting to me. I care less about getting one answer and more about running a process that catches weak spots before I ever see the final output. That is the core difference in Squad vs. Copilot for me.

Management becomes the core skill

Once you have a team of agents, management becomes the multiplier.

I think in terms of plans, process, and quality gates. Projects need clear definitions and constant refinement. Squad builds to the plan, reviews against the plan, and makes quality visible.

Each project moves from manual execution toward a repeatable process. For me, the next step is a project-level agent that manages implementation of that plan by treating skills as atomic process definitions. It can chain those skills together, enforce quality gates between phases, and produce reports that show what was supposed to happen, what actually happened, and whether the completion criteria were met.

Summary

Squad changed how I work. What mattered was not getting a slightly better answer from one agent. What mattered was getting a repeatable multi-agent process. Separate build and review teams, explicit skills, quality gates, and shared reports create a clearer path to "done" with less guesswork. Copilot helps me generate; Squad helps me run the work.


Copilot Configuration Files: What They Are, Where They Live, and When to Use Them

· 18 min read

When I work with repos that use Copilot, I keep running into the same issue: people have these files scattered across .github/, but I'm not sure what each one does, why they exist separately, or how they're supposed to work together.

I'll see .github/copilot-instructions.md and .github/agents/ in the same repo, then a prompts/ folder. The files exist, but my mental model doesn't.

This guide is my attempt to create that mental model. I want to know what each file is for, where real repos keep them, and how they are used.

Three matryoshka nesting dolls opened and displayed from largest to smallest — representing the governance layers of instructions, agents, and skills

At first glance, these configuration files look related — but how they nest relate to each other isn't obvious until you see the full picture.

Quick Reference: The Six File Families

#FileLives atPurposeWhen to use
1Copilot instructions.github/copilot-instructions.mdRepository-wide governance (always-on context)"All Copilot work in this repo should follow these rules"
2Path-specific instructions.github/instructions/*.instructions.mdScoped rules for specific directories or file patterns"My monorepo has areas with different conventions"
3Agent definitions.github/agents/Specialist persona with its own scope, tools, and constraints"This task needs a reviewer or specialist with tighter boundaries"
4Skills.github/skills/{name}/SKILL.mdReusable workflow package with instructions, resources, and optional scripts"This is a repeatable procedure Copilot should know how to do"
5Prompt files / prompt docsOfficial prompt files: .github/prompts/*.prompt.md; repo-local docs often live in .github/prompts/*.mdReusable prompt template or task-specific reference context"I need either a reusable prompt in the IDE or a deeper reference doc for a specific task"
6Workflows.github/workflows/GitHub Actions automation and remote triggers"I need this to run on a label, schedule, dispatch, or PR event"

Configuration files structure across the six .github families

This structure diagram turns the six file families into one navigable map so you can see which pieces are baseline, specialized, reusable, or event-driven.

Stylized .github home showing where instructions, agents, skills, prompts, and workflows live

The folder-house metaphor emphasizes that these files live together, but each room has a different job.

Those are the most commonly confused files. There are also AGENTS.md (an OpenAI/Anthropic agent convention — not a GitHub Copilot feature), hooks, and MCP configs.

The Copilot Instructions File: Governance Layer

/.github/copilot-instructions.md is the ambient context that sits behind Copilot work in a repo. It's not something I invoke manually. It's the baseline.

What it contains:

  • Coding standards and conventions
  • Architecture guidelines
  • Documentation expectations
  • Review requirements
  • What "done" looks like
  • Security constraints
  • Naming conventions

Real examples:

Microsoft MCP Copilot Instructions — a focused baseline file. The heading is Coding Instructions for GitHub Copilot, not "Comprehensive Overview," and it goes straight into always-apply rules, build expectations, and PR guidance.

Azure SDK for JavaScript Copilot Instructions — a denser governance file. The Azure SDK guidance gets specific about API design, implementation choices, and when to explain a deviation from the house style. In my experience, this kind of baseline makes Copilot more likely to produce code aligned with review expectations.

When you use it in Copilot:

  • Open Copilot chat in the repo
  • Ask it to "write a PR description"
  • Copilot includes the repo instructions automatically

How long should it be? Short enough that a human can still scan it. MCP's file is compact. Azure's is more opinionated. If the instructions file starts reading like a runbook instead of repo policy, I move the task-specific detail somewhere else.

Key rule: Instructions describe outcomes and standards. They are the repo's rules of engagement, not the step-by-step workflow.

Path-Specific Instructions: Scoped Rules

I missed this feature entirely until I was reviewing a monorepo that had three different instruction files and I couldn't figure out why Copilot kept changing tone between the frontend and backend code. Turns out, Copilot supports path-specific instruction files in .github/instructions/ — and they're additive with the repo-wide file.

Format: {name}.instructions.md files inside .github/instructions/

Example structure:

.github/
copilot-instructions.md # repo-wide (always-on)
instructions/
frontend.instructions.md # applies to /frontend
backend.instructions.md # applies to /backend
tests.instructions.md # applies to test files

Each file uses YAML frontmatter with an applyTo key to declare which paths it covers:

---
applyTo: "src/frontend/**"
---
Use React functional components with TypeScript.
Prefer CSS modules over inline styles.

Key behavior: When I'm working in a file that matches a path-specific instruction, Copilot combines both the repo-wide instructions and the path-specific ones. It doesn't replace — it layers. This is different from how I initially assumed it worked.

When to use path-specific instructions instead of the repo-wide file:

  • Your monorepo has distinct language/framework areas with different conventions
  • Test files need different guidance than production code
  • API code has stricter rules than internal scripts

When NOT to use them:

  • Rules that apply everywhere (keep those in copilot-instructions.md)
  • Task-specific procedures (those belong in skills)
  • One-off guidance (just say it in chat)

Official docs: Adding path-specific custom instructions


Agent Definitions: Specialist Persona

.github/agents/ is where I expect to find specialist agents — focused reviewers or operators with their own scope, tool boundaries, and output format.

What an agent file contains:

  • What the agent specializes in
  • Which tools it can access
  • Task-specific constraints
  • Expected output format
  • When to use it over the default assistant

Real examples:

Azure SDK: archie.agent.md — architecture review specialist. The file defines the reviewer's purpose, allowed tools, scope, and output format. It also references ../prompts/architecture-review-guidelines.md to load its review guidelines.

Azure SDK: scribe.agent.md — documentation review specialist. Same pattern, different charter: README, CHANGELOG, snippets, samples, and TSDoc.

How to invoke it: The exact path depends on the surface. GitHub's customization cheat sheet is the clearest map I found: select the custom agent in the UI, use /agent in Copilot CLI, or reference the agent naturally in chat.

How it differs from instructions:

  • Instructions: Always-on, repo-wide governance
  • Agent: Specialized, on-demand, with its own boundaries

I don't need agents for every repo. A lot of projects are fine with instructions alone. But once I have a recurring task like architecture review or docs review, an agent gives that work a clear owner.


Skills: Reusable Procedures

A skill is a folder with a SKILL.md file plus whatever supporting templates, scripts, or resources the workflow needs. GitHub's docs describe skills as packages that Copilot can load when they're relevant to a task. That detail matters. A skill is not just a long prompt. It's a reusable procedure.

What a skill contains:

  • When to use the skill
  • What it does
  • Input requirements
  • Output expectations
  • Links to deeper references
  • Templates or helper assets
  • Scripts or automation, if the workflow needs them

Real examples:

OpenAI Agents Python: code-change-verification — a concrete verification skill. It tells Copilot when to run the verification stack and points to scripts that execute the checks.

Vercel Next.js: authoring-skills — a nice example of a skill that explains what belongs in a skill versus in AGENTS.md.

How it gets used:

  • In surfaces that support skills, Copilot may auto-load it when the task matches
  • You can ask for that workflow explicitly
  • A custom agent can rely on it as part of a larger procedure

Where they live:

  • .github/skills/ — the GitHub Copilot canonical path
  • .agents/skills/ — the cross-agent open standard path (used by OpenAI, Vercel, and others)

Skill vs. Agent vs. Instructions — the mental model:

GitHub's documentation describes what each feature does, but doesn't frame the relationship as explicitly as I'd like. Here's my mental model: Instructions set the rules. Agents decide. Skills execute. This is my interpretation, not GitHub's official framing, but it helps me remember which tool to reach for.


Skills vs. Prompts: The Critical Difference

This is the distinction that tripped me up most, because people use the word "prompt" to mean two different things.

AspectSkillPrompt file / prompt doc
What it isAgent-skill package with instructions, resources, and sometimes scriptsEither an official .prompt.md template or a repo-local markdown doc used as reference context
How it gets usedIn supported surfaces, Copilot may auto-load it when relevant, or you ask for it explicitlyOfficial prompt files are typically user-selected or referenced in supported IDEs; repo-local docs can also be linked from agents or workflows
What's insideSteps, commands, templates, helper assetsExamples, patterns, checklists, input variables, edge cases
CLI supportYesOfficial .prompt.md prompt files are IDE-focused, not Copilot CLI

The caveat that matters: Official GitHub prompt files use .prompt.md and are an IDE feature. Azure's .github/prompts/*.md files are different. They're repo-local reference docs that agents or workflows load, not the product feature GitHub documents as prompt files.

That means my old rule of thumb was too neat. Prompts are not always passive reference, and skills are not always the only place with step-by-step guidance. The better distinction is this: skills are packaged workflows Copilot can use as skills; prompt files and prompt docs are reusable context.

Decision tree for choosing between skills, official prompts, prompt docs, or no file

The decision tree compresses the distinction into one question sequence: reusable workflow first, reusable prompt second, reference doc third.


Prompts: Task-Specific Expertise

.github/prompts/ is where many repos store task-specific context. Sometimes those files are official GitHub prompt files ending in .prompt.md. Sometimes, and this is what Azure JS does, they are plain markdown docs that reviewers load as guidance.

What a prompt file or prompt doc contains:

  • Patterns and examples
  • Detailed guidance for a specific task
  • Decision rules
  • Known edge cases
  • Sometimes input placeholders if it's an official prompt file

Real examples:

Azure SDK: architecture-review-guidelines.md — a repo-local reference doc. It defines the review scope and checklist for architecture review, and Archie points to it directly.

GitHub gh-aw: create-agentic-workflow.md — another repo-local guide. It explains the markdown workflow structure used by gh-aw. Useful context, yes. An official GitHub prompt-file feature, no.

How agents use them: Agents or workflows can read these docs at runtime. In Azure JS, the architecture review guidance also points back to .github/copilot-instructions.md, which is a nice example of the layers staying connected instead of duplicating each other.

Where they live:

  • Official prompt files: .github/prompts/*.prompt.md
  • Repo-local reference docs: often .github/prompts/*.md
  • Organized by task: architecture review, dependency review, release prep, and so on

Why separate files? Because the detail belongs close to the task, not smeared across every Copilot interaction. When instructions become hard to scan, moving task-specific context into separate files keeps the baseline clean.


Workflows: Automation Triggers

.github/workflows/ is standard GitHub Actions. I include it here because people often blame Copilot for behavior that is really coming from a workflow trigger.

What a workflow does:

  • Listens for triggers such as push, label, schedule, or manual dispatch
  • Runs remote automation on GitHub
  • Starts a reviewer or other automation path
  • Posts status, comments, or checks back to the PR

Real example:

Azure SDK for JavaScript reviewer workflows — not one big controller that fans everything out. Each reviewer has its own workflow file. Archie and Dexter both trigger on pull_request_target with types: [labeled], and Dash says plainly that its job is to review a PR for performance regressions.

How it connects to agents and skills: The workflow is the remote trigger. In Azure JS, each reviewer workflow posts its own findings back to the PR. In other repos, a workflow might also call a custom agent or load a skill, but that's not the part I can prove from this example.


How They Wire Together: A Real Workflow

Here's the version of the Azure SDK flow I can actually defend with links.

1. A label triggers the run In Azure JS, the review workflows listen for pull_request_target with types: [labeled], not for PR creation. You can see that in archie.md and dexter.md.

2. Each reviewer has its own workflow Archie, Dash, Dexter, and Scribe are separate files under .github/workflows/. They can run independently when their trigger label appears. This is not one workflow spawning four reviewers in parallel.

3. The workflow itself states the review job Dash literally says it reviews the PR for performance regressions and anti-patterns. Archie and Dexter follow the same pattern for architecture and dependency review.

4. Agent files and prompt docs are the reusable layer Separately from the workflow trigger, archie.agent.md defines the architecture reviewer as a reusable custom agent and references ../prompts/architecture-review-guidelines.md. That prompt doc then points back to the repo instructions in architecture-review-guidelines.md.

5. Findings land on the PR from each workflow Archie and Scribe both declare create-pull-request-review-comment and submit-pull-request-review in safe-outputs, with run messages for the PR review lifecycle. So the accurate mental model is: each reviewer workflow posts its own findings. There isn't a separate "collector" workflow in this example.

6. Skills are adjacent, not proven by this example Skills still matter to the overall ecosystem, but Azure's review workflows are not the example I would use to claim that agents are invoking skills behind the scenes. If I want to show skills, I use an actual SKILL.md repo.


Using Copilot with These Files: Chat and CLI

In Copilot Chat (Browser or VS Code)

Scenario: You're in a repo and you open Copilot chat.

You: write a PR description

Copilot reads .github/copilot-instructions.md and picks up things like:

  • PR title format
  • Required sections
  • Review expectations

Result: the draft is much more likely to match the repo's stored rules.

Scenario 2: You want the specialist reviewer.

You: use the archie agent to review my API changes

Depending on the surface, you might select archie in the agent picker, use /agent in Copilot CLI, or reference it naturally in chat. The important part is the same: the agent file gives that review task its own scope and constraints.

In Copilot CLI

Scenario: You're working locally and you want a code review from the terminal.

copilot
/review focus on bugs and security issues in my current changes

GitHub documents /review as the CLI code review path in its Copilot CLI docs and agentic code review guide. This is the replacement for the old gh copilot pr-review mental model I had in my head.

Scenario 2: You want to trigger the remote GitHub Actions reviewer from your terminal.

gh workflow run archie.md -f item_number=42

That command is a remote workflow dispatch through GitHub CLI, not local Copilot behavior. Azure's reviewer workflows expose workflow_dispatch with an item_number input in archie.md, so gh can start the run on GitHub.


Decision Table: Which File for What?

Decision tree for placing work in instructions, agents, skills, prompts, or workflows

This placement tree turns the file choice into a routing problem: match the task shape, then drop it in the right folder.

I need to...Put it in...Why
Set coding standardsCopilot instructionsAlways-on, repo-wide governance
Require testing notes on all PRsCopilot instructionsIt's a rule, not a workflow
Automate PR review on labelsWorkflows + reviewer definitionsLabels are a GitHub Actions trigger, and the reviewer needs its own scope
Store detailed architecture patternsPrompt docsToo bulky for baseline instructions; reviewers can load them when needed
Make code generation or verification repeatableSkillsCopilot can load the packaged workflow when the task matches
Handle a one-time taskChatSome work doesn't need a file at all

Minimal Repo Setup

If I'm starting fresh and I don't want to overengineer this, I keep it boring.

Minimal viable setup:

  • .github/copilot-instructions.md (recommended baseline)
  • No agents yet unless I have a recurring specialist task
  • No skills yet unless I keep repeating the same workflow
  • No prompt docs yet unless the task-specific context is making the instructions file noisy

As the repo grows:

  • Add agents when a task needs its own tool restrictions or review charter
  • Add skills when a workflow deserves packaging
  • Add prompt docs when a reviewer or task needs deeper context than the baseline file should carry

Start minimal, then add layers only when each layer removes confusion.


How to Find Examples in Real Repos

Here are the examples I would study first.

Azure SDK for JavaScript — the clearest end-to-end example I found

Microsoft MCP — a readable baseline instructions file

GitHub gh-aw — a good example of repo-local workflow guidance that looks prompt-like

Vercel Next.js — useful for skill design patterns


The One-Sentence Rule

Woman viewing four landscape paintings on a wall — the same mountain at sunrise, noon, rain, and sunset — representing the config files seen from different angles

If I'm stuck deciding where something belongs, this is still the fastest check I know:

  • If it reads like a rule, put it in instructions.
  • If it reads like a reusable workflow, put it in a skill.
  • If it reads like task-specific context, put it in a prompt doc or prompt file.
  • If it has to run on GitHub events, put it in a workflow.

PRDs Aren't Just for Code: Communication clarity that travels

· 21 min read

A PRD agent took a one-line issue in my workspace and turned it into a real implementation PRD: nine intake questions, phased work, named agents, acceptance criteria, and dispatch scripts. That one-line issue was enough for me because I already knew the repo, the conventions, and the missing context. It was not enough for an agent that had to move without me standing there to explain the rest. It was also not enough to show my management or partner teams what the intended work was or the value of that work. The PRD captured that communication clarity.

That same pattern showed up two more times this week. I used one PRD as a baseline against roughly three months of branding work and found a gap in the setup process I had missed. Then I used another PRD to compare planned scope against delivered work so the unanswered questions could turn into queued issues instead of another vague "we should look at this later."

A pink-haired woman turns a vague request into a structured PRD while agents begin moving

The work starts looking like it can move on its own only after the thinking stops being casual.

I keep hearing PRDs talked about as if they only belong to software feature work. I use them there too. But this week I kept reaching for the same pattern in project work, product work, and content work. Each time, the value was the same: the PRD made me write down the part I normally carry in my head.

A PRD is communication clarity. That's it. The document works because it makes the request unambiguous for the next reader. Sometimes that reader is a person. Sometimes it's an agent. The value is the same.

Start with what a PRD is

A product requirements document (PRD) is a structured answer to three questions: what are we building, for whom, and why? More simply, it is the place where I stop assuming the other side will fill in the blanks for me.

Before anyone starts building, the PRD turns the idea into requirements other people can actually act on. In a lot of teams, that means engineering, design, product, and sometimes marketing can line up around the same page before work starts.

That is still useful. What changed for me is what happens next. Now the same clarity has to carry agent work too. I can draft a PRD from rough bullets, update it as the work changes, and use it as the source for agent assignments, review checks, and follow-up issues.

That shift is why I started applying the pattern outside code. The useful part is the habit of slowing down long enough to answer the structured questions that make handoff possible. Agents need the same clarity humans do. Once I saw that clearly, it was hard not to use the same pattern for project planning and content operations too.

Stop treating clarity as optional

The easy story about AI agents is that I can stay incomplete — not specific enough — and the system will figure it out.

I have tried that often enough to know what happens next. The agent fills in the gaps. It makes assumptions. Those assumptions land as wrong choices. Then I'm back in, steering it turn by turn because every guess it made was wrong. Sometimes the work still gets done. But I'm driving now, not the agent.

That is why I keep coming back to PRDs. A good PRD is not useful because it looks formal. It is useful because it forces me to answer questions I would normally leave fuzzy.

Questions like:

  • What problem am I actually trying to solve?
  • What does done look like in a way another person or agent can check?
  • What is out of scope?
  • Which repo, project, or workflow owns this?
  • What existing documents already limit the answer?
  • What dependencies have to exist before anyone starts?
  • What acceptance criteria tell me the work is complete?
  • Who or what should do each phase?
  • What evidence would prove the work happened correctly?
flowchart LR
subgraph L[Without PRD]
A[Vague task] --> B[Clarify]
B --> C[Rework]
C --> B
end
subgraph R[With PRD]
D[Intake answers] --> E[Clear requirements]
E --> F[Independent execution]
F --> G[Review]
end

Nine questions is not a magic number. It just kept surfacing in my sessions this week. It pushed me past the comfortable version of the request. "We should improve our PRD workflow" sounds fine until I have to answer which workflow, which repos, which gaps, which owners, and what exact result counts as success. That is the moment the request stops being a loose idea and starts becoming something the system can actually use.

Run the experiment on work that isn't a feature

Requests that felt clear in my head were not clear enough to run independently. Once I started using PRD patterns outside their usual lane, the same document kept helping in different ways.

Session 1: Expand a one-line issue until agents can move

I had a one-line issue that made sense to me because I live in this project every day. It had enough context for a human who already knew the setup. It did not have enough context for a system that needed to break the work into phases, assign work to named agents, and move without waiting for me to answer basic questions.

So the PRD agent expanded that short issue into a real implementation PRD. The useful part was the added structure.

The PRD turned a compressed request into something other actors could use:

  • the problem statement stopped assuming insider context
  • the work broke into phases instead of one blended paragraph
  • acceptance criteria became explicit instead of implied
  • agent assignments were named instead of hand-waved
  • dispatch scripts could be generated because there was finally enough detail

Before the PRD, the request depended on me being available to explain the rest. After the PRD, that logic lived in the document. Once the requirements were explicit, dispatch was no longer a hope. The tooling had something solid to run.

The time investment moved to the front, which is boring in the best way. In my experience, that is where the payoff shows up later. I stop rescuing ambiguity after the fact because the plan can survive handoff.

Session 2: Use the PRD as a mirror, not a starting point

The second session changed how I think about PRDs. I was reviewing PRD-driven branding work, but instead of treating the document as a fresh plan, I treated it as a claim and compared it against the artifacts the week had already produced.

One of the most useful findings was a missing validation step I'd overlooked. That kind of check was easy to miss while the surrounding work was already moving. The PRD gave me something stable to compare against. Without it, that omission would have stayed buried inside the blur of ongoing work.

Once the gap was visible, the next step was obvious. I spawned two follow-on actions from the review findings:

  • one to fix the ownership document so responsibilities were clear
  • one to create a CI triage skill

The review did not end at "interesting gap." It created follow-on work with owners and specific files to update. One agent fixed the ownership document. Another created a validation skill so the check would run next time.

Session 3: Compare scope to outcomes, then let the gaps create work

The third session pushed the same pattern one step further. I used the PRD not just to plan or review, but to ask what actually happened. I compared PRD scope against real work outcomes to find the places where my planned story and the delivered story did not match.

The completeness check surfaced open questions. Once those questions existed in a named list, I could answer them directly and turn the unresolved gaps into issues for later agent work.

The flow was simple: planned scope checked against reality produced open questions, my answers turned those questions into queued issues, and the queued issues were ready for later agent work. It was repeatable.

With the PRD, I had a stable statement of intent. I handled the judgment calls, and the agents handled the mechanical translation after the missing information was written down.

If I strip the three sessions down to their bones, this is what happened:

SessionStarting pointWhat the PRD didWhat became possible next
Convert a one-line issue to a PRDone-line issueexpanded intent into phases, acceptance criteria, and agent assignmentshands-off dispatch with less human follow-up
Review PRD for brandingexisting PRD plus three months of workexposed mismatch between intended scope and actual executionspawned targeted follow-on agents for ownership-document updates and CI triage skill work
Compare PRD with workfinished work compared against planned scopesurfaced open questions and unresolved gapsgenerated issues that could be queued for later agent execution

The PRD was not just a status document. It was a conversion layer between what I meant and what could be done.

Follow the pattern that kept repeating

Start by forcing the intake answers into the open

The biggest misconception I had to drop is that the initial request is the hard part. Usually it is not. Usually the hard part is everything the request assumes.

A sentence like "convert this issue into a real plan" sounds efficient because it compresses the task. But that efficiency is fake if the next actor has to unpack hidden assumptions before doing anything useful.

flowchart LR
A[Vague request] --> B[PRD intake]
B --> C[Specificity]
C --> D[Independent execution]

For me, the PRD intake phase looked less like "writing a document" and more like pinning down the variables that were floating around informally:

  • what the request is asking for in plain language
  • what should exist at the end
  • what phase boundaries keep the work from smearing together
  • which constraints come from project conventions, operating rules, or ownership docs
  • what needs human approval versus what can run on its own
  • what evidence will make review easy later

This is the thinking tax. It costs something up front. It slows down the moment where I get to feel like I already started. I have to stop, answer, narrow, and sometimes admit I do not actually know what I want yet. The payoff shows up later.

Check completeness before you confuse motion with coverage

The second phase is the one I underused before this week: completeness checking.

I used to think of PRDs mostly as forward-looking documents that I would write and then execute. They are just as useful as review tools.

A PRD lets me ask a direct question: did the work we actually did cover the work we said mattered?

When work moves across multiple agents, multiple repos, and multiple days, motion starts to feel like progress whether or not the original scope has been covered. A completeness check interrupts that illusion.

In practical terms, it helped me inspect:

  • whether every major acceptance area had corresponding work
  • whether implied dependencies had been made explicit
  • whether ownership boundaries were still accurate
  • whether validation steps existed, not just good intentions
  • whether the missing pieces were small omissions or larger design gaps

The branding review session made this concrete for me. A missing check in the onboarding workflow was not the kind of thing I would have reliably caught by reading status updates alone. It became visible because I had a clear frame for what should have been there.

Turn the gaps into dispatchable work

Once the PRD review surfaced missing pieces, the follow-up path became much cleaner than I expected:

flowchart TD
A[Open questions] -->|human answers| B[Human items]
B -->|once answered| C[Ready requirements]
C -->|assign or queue| D[Agent or queue]
D -->|no translation| E[Dispatch]

I like that because it keeps the human work and the automation work in the right places. The human work is making decisions. The automation work is transforming those decisions into execution steps. If the document is sloppy, those jobs collapse into each other and I end up doing both.

A pink-haired woman directs agents as work packets move from a PRD board into execution queues

The payoff is not that the human disappears. It's that the human gets to stop re-explaining the same intent.

Let work run on its own after the meaning is stable

By the end of the week, the line I kept writing down was simple: work runs best on its own after the meaning is stable.

I need a PRD because independent work magnifies whatever level of clarity I provide. If I hand over a fuzzy request, the system scales fuzz. If I hand over a bounded requirement with owners and checks, the system scales useful action.

That is why I think PRDs are underused outside code. A lot of non-code work still assumes human availability will absorb the ambiguity for free. Project work, product work, and content work are full of requests that sound understandable in conversation but are not clear enough to survive handoff.

Push the pattern into project management

I keep seeing a gap between backlog clarity for humans and backlog clarity for agents.

Project systems are often optimized for coordination among people who already know how to fill in the blanks. We can see a short title, remember the meeting, infer the constraint, and keep going. Agents are much more literal. If the work item does not carry the missing pieces, the queue looks fuller than it really is.

When I look at project management through the PRD lens, I stop asking whether the board is organized and start asking whether each major item can survive handoff without live clarification. That changes the shape of the document.

Instead of a loose epic with a few bullets, the more useful version looks like this:

  • clear statement of the problem the epic is trying to solve
  • boundaries between phases so tasks do not overlap
  • acceptance criteria that can be checked after work lands
  • routing clues about which agents or teams own which slice
  • dependency notes that prevent premature execution
  • validation expectations so the review step is not invented on the fly

Once the project document is explicit enough, breaking the work down gets easier. Work items stop being reminders for future humans and start becoming units that can move.

A pink-haired woman organizes a kanban board while agents pull clearly defined work items into motion

The board gets more useful the moment each card carries enough meaning to travel on its own.

It means putting detail where it changes execution and leaving everything else light.

One shift that helped me was seeing acceptance criteria as scheduling tools, not just review tools. If an epic says it is done when three specific outcomes exist, decomposition gets cleaner. If the epic just says "move this initiative forward," the board can look busy for a long time without telling me whether the right work is actually in flight.

The practical signal for me is simple: if I expect the work to be done asynchronously, across roles, or by agents, the request probably needs PRD treatment whether or not the output is software.

Push the pattern into product management

Traditionally, product teams used PRDs to line people up before code started. The PRD was the single place where the team could see the user problem, the proposed solution, the requirements, the success measures, and the boundaries. What changes now is that the same document also has to support AI-assisted drafting, routing, review, and execution.

The old mental model was document first, handoff second. The newer one I am experimenting with is requirement first, routing second, independent execution third. A product document that is only persuasive is not enough. A product document that supports execution has to name decisions, constraints, success conditions, and trade-offs in a way other actors can use.

The PRD session where a short issue got expanded into a full implementation artifact made this very concrete for me. The expansion was not about adding more words because longer is better. It was about adding enough structure that each downstream actor could tell what they owned. Implementation phases, acceptance criteria, agent assignments, and dispatch scripts existed because the PRD supported dispatch.

That matters because product requests are often written for alignment first and execution second. That is fine if humans are going to sit together and negotiate the rest in real time. But once I want agents, or loosely coupled teams, to move without hand-holding, the requirement has to answer the follow-up questions before they are asked.

A pink-haired woman reviews feature sketches and requirement pages while agents work from the clarified spec

The specification earns its keep when other actors can move from it without guessing what I meant.

One thing I appreciate here is how PRDs expose whether I really made a decision or just postponed it. If the document leaves a major constraint unstated, that is not neutrality. That is hidden work for whoever picks it up next.

That is one of the clearest ways AI acts like a collaborator instead of a magician. It makes my vagueness expensive.

The useful thing was not the system pretending to know the answers. The useful thing was that it made the missing answers painful enough that I finally wrote them down.

Where it broke down was whenever I tried to skip that step and expected the system to infer intent from shorthand. It can infer a lot. It still should not be asked to infer the core requirements.

The sweet spot is not maximum detail. It is enough detail that other actors can move without reopening the problem definition every hour.

Push the pattern into content management

Content management may be the least obvious place for this, but content work is full of documents that already behave like PRDs even when nobody calls them that. Article plans, content strategy docs, editorial calendars, coverage matrices, freshness reviews, taxonomy decisions, and publishing workflows all describe intended outcomes, constraints, ownership, sequence, and validation.

Content work often has the same hidden-context problem. We know an article is stale. We know a strategy doc implies missing tutorials. We know a calendar entry means someone needs a draft, images, metadata, and review. But unless that thinking lands in a document with clear boundaries, the work stays socially clear and practically fuzzy.

It breaks down when I want content audits, freshness checks, coverage-gap detection, or article scaffolding to run with less manual glue.

If an article plan is written like a real requirement document, I can review it for completeness, compare planned coverage against published coverage, detect gaps, and route the missing work with less back-and-forth. The artifacts are concrete: a markdown file, a matching media folder, frontmatter fields like draft: true and keywords, and a build command that fails if something is wrong. The operations around it do not have to stay mysterious.

A pink-haired woman sorts article outlines and editorial plans while agents manage the operational content flow

The content strategy starts acting like a system once the editorial intent is written in a form the system can inspect.

The three sessions from this week map cleanly to content operations:

flowchart TD
A[Thin Idea] -->|turns into| B[Article PRD]
B -->|checked with| C[Strategy Check]
C -->|raises new| D[Editorial Questions]
D -->|answers create| E[Assignable Work]
E -->|flows into| F[Content Systems]

If I sketch what an article PRD needs in order to support content operations without me stepping in, it looks a lot like the software version: audience, intent, angle, exclusions, source material, freshness risk, required assets, review checkpoints, and a definition of done that is more concrete than "publish something good."

Choose when the thinking tax is worth it

Speed was the first one. If I have a request in my head and a path that feels mostly clear, the last thing I want is a form asking me to pin down acceptance criteria, boundaries, or dependencies. Not every task deserves full PRD treatment.

One guardrail I keep coming back to is handoff count. If the work will stay with one person in one short session, I probably do not need a full PRD. If the work will cross time, tools, repos, reviewers, or agents, the cost of under-specifying it rises fast. That is when the thinking tax looks cheap compared to cleanup.

False confidence was the second rough edge. A polished document can look complete even when it missed an important gap. The answer is "treat the PRD as something I can review and revise."

Judgment was the third rough edge. When the completeness check surfaced open questions in Session 3, I still had to answer them. The system could not responsibly invent those answers for me. The point of the PRD pattern is not to erase human decision-making. It is to capture it cleanly enough that it happens where it should.

PRDs expose where I am still hand-waving. A vague request lets me keep the illusion that I know what I mean. A requirement document asks me to prove it. Sometimes I discover that I do not actually have an answer yet.

Keep following the work toward more independent systems

The PRD is valuable because it makes the request clear enough that someone else can act on it without guessing.

Those are different surfaces of the same idea: a PRD is communication clarity. I used to think of PRDs mostly as a prelude to implementation. Now I think of them as a reusable requirement document that can support planning, auditing, routing, comparison, and dispatch across much more than code.

I do not think the future is "agents replace planning." My week suggested the opposite. The more I want the system to work on its own, the more seriously I have to take the planning document. The document works because it makes the request unambiguous for whoever reads it next, human or agent.

My next test is whether article PRDs can survive metadata review, asset checks, and npm run build without me reconstructing the brief from memory. Editorial judgment — the moment when a sentence sounds unlike me, or a claim needs a receipt — still needs a human in the loop. That is a limit on what the document can carry, not a reason to skip writing it.