Create Product-Management Catalog Prompt

Guide an AI agent to create a docs/product-management/ catalog that defines business product boundaries, independent of monorepo folder structure.

Prompt: Create product-management catalog (copy into any repo)

Copy everything below the line into an AI agent chat in a target repository. It creates a docs/product-management/ catalog that defines business product boundaries, independent of how folders, services, or packages are organized.

Before using: if you have a reference implementation in another repo, fill in the <REFERENCE_REPO> and <DISCOVERY_INDEX> placeholders in Step 9 and the Reference Example. If you do not, delete the β€œReference example” block β€” the prompt works without it.


Task: Create a product-management catalog for this repository

Objective

Analyze this repository and create a product-management reference section that defines business product boundaries β€” independent of how folders, services, or packages are organized.

This is a portfolio / ownership / stakeholder artifact, not a folder inventory. Do not simply list services/* or packages/* as products without applying the boundary rules below.


Step 1 β€” Discover before writing

Before creating files, explore the repo thoroughly:

  1. Services and apps β€” services/, apps/, web/, packages/, or equivalent deployables.
  2. Existing documentation β€” especially docs/, README.md, AGENTS.md, architecture docs, any docs discovery index (e.g. docs/index.yaml), and any per-area feature docs.
  3. Cross-service flows β€” who calls whom, proxies, shared databases, external integrations.
  4. Legacy vs greenfield β€” migrations where two codebases represent one product during transition.
  5. Shared libraries β€” internal packages (@org/*, libs/, etc.) consumed by multiple services.
  6. External systems β€” mobile apps, LMS, identity, third-party APIs referenced but not implemented in-repo.
  7. Existing stakeholder language β€” any slides, wiki links, or product descriptions that already define scope and exclusions.

Use existing program docs as source material, not as the product list itself. Program doc trees and business products overlap but are not identical.


Step 2 β€” Canonical product definition

Include this paragraph verbatim (adapt only the discovery-index reference if this repo uses a different path) in docs/product-management/README.md under a ## Definition heading:

A product is a bounded capability β€” not a monorepo folder, service, or package by default. It delivers identifiable value to a user or downstream consumer; has a clear scope (what it does); is implemented by named building blocks (services, UIs, or shared modules); and has explicit boundaries (what related work intentionally lives elsewhere). Deployables are components of a product; the product is the capability and ownership boundary around them. One product may span multiple services; one service belongs to one product. Program documentation trees and business products overlap but are not the same thing.


Step 3 β€” Directory structure to create

Create this tree under docs/ (create docs/ if it does not exist):

docs/
└── product-management/
    β”œβ”€β”€ README.md              ← catalog index + definition + how to read
    β”œβ”€β”€ index.yaml             ← machine-readable product list
    └── products/
        β”œβ”€β”€ <product-key>.md   ← one file per business product
        └── ...

Also update existing docs discovery files if present:

  • Docs discovery index (e.g. docs/index.yaml) β€” add a top-level product_management: block pointing to product-management/, product-management/index.yaml, and product-management/README.md.
  • Docs layout guide (e.g. docs/README-docs-structure.md) β€” add a product-management/ section describing its purpose and link to the README.

Do not create PowerPoint files. Markdown only.


Step 4 β€” docs/product-management/README.md structure

The README must contain these sections in order:

1. Title

# Product management reference

2. Definition

The canonical paragraph from Step 2.

3. Short intro

One sentence: use the catalog for portfolio planning, stakeholder presentations, ownership conversations, and onboarding. Link to products/.

4. How to read a product definition

A table with three rows:

SectionQuestion it answers
FunctionalityWhat value does this product deliver to its users or downstream consumers?
ComponentsWhat deployable services, UIs, or shared modules implement it?
ExcludesWhat related capabilities are intentionally not part of this product?

Add one sentence: Monorepo mapping sections tie each product to repo paths. A single service can belong to one product; a product can span multiple services; shared packages may be a product on their own or a component of several products.

5. Product catalog

A markdown table: Product | Summary (one line) | Detail (link to products/<file>.md).

6. Relationship to program docs

Explain how this catalog differs from any existing program doc trees. Include 2–4 concrete examples from this repo (e.g. an ops dashboard that is a component not a separate product; legacy + greenfield services under one product; shared packages as one internal platform product).

A table mapping each business product to its canonical program documentation path(s) in this repo, if they exist.


Step 5 β€” docs/product-management/index.yaml structure

Create a YAML file with:

# Product catalog β€” business product boundaries (not 1:1 with monorepo folders).
# See README.md for how this relates to program doc trees.

catalog: product-management
products_dir: product-management/products/

products:
  - key: <kebab-case-key>
    name: <Human Name>
    path: products/<kebab-case-key>.md
    program_docs: <optional path under docs/>
    services: [<optional service folder names>]
    web: [<optional web app folder names>]
    packages: [<optional package scope, e.g. "@org/*">]
    external: true # optional β€” product boundary exists but implementation is outside repo

Include every product from the README catalog. Use external: true only when the product is a deliberate boundary but not implemented in this repo.


Step 6 β€” Per-product file template (docs/product-management/products/<name>.md)

Create one file per business product. Each file must follow this exact structure:

# <Product Name>

## Functionality

- <Bullet: what value this product delivers β€” user-facing or consumer-facing outcomes>
- <4–8 bullets; start with verbs: Provides, Manages, Exposes, Orchestrates, etc.>
- <Focus on outcomes, not implementation details>

## Components

- **<Component name>** β€” <what it is> (`<repo path>` if in-repo; note "external" if not).
- <List deployable services, UIs, workers, databases, and major shared modules that implement this product>
- <Operator dashboards and admin UIs belong here as components unless they are truly standalone products>

## Excludes

- **<Excluded capability>** β€” <one-line reason>; belongs to [<Other Product>](<other-product-file>.md).
- <3–6 exclusions; cross-link to sibling product files using relative markdown links>
- <Excludes are the most important section β€” they prevent scope creep between teams>

## Monorepo mapping

| Path | Role |
| ---- | ---- |
| `<path>` | <short role description> |

**Program docs:** [`docs/<area>/...`](<relative link>) <!-- omit if none exist -->

Optional sections (use when they add clarity)

  • ## Why this is its own product β€” 1 short paragraph when the boundary is non-obvious (e.g. a service consumed by one main product but with different runtime, cost, or release cadence).
  • ## Primary consumers β€” when the product is infrastructure consumed by named siblings.
  • ## Integration note β€” when proxy/integration patterns matter for ownership.

Title rules

  • Use plain product names: # Organization Manager, # Billing
  • Do not use demo phrasing like X is a "Product"

Writing style

  • Complete sentences in bullets where natural; concise and scannable.
  • Cross-link between product files in Excludes using relative paths: [Other Product](other-product.md).
  • Repo paths in backticks. Link to existing program docs where they exist.
  • Do not invent features not supported by the codebase or existing docs; mark uncertain items as β€œplanned” or β€œTBD” only when docs already say so.

Step 7 β€” Boundary decision rules

Apply these rules when deciding what is a product vs a component:

SituationDecision
Single deployable with one clear consumer outcomeUsually one product
Ops / admin UI for a larger productComponent of that product, not its own product
Service A calls Service B; B has distinct runtime, cost, or reuse storyB may be its own product even if A is the main consumer
Legacy + greenfield rewrite of same capabilityOne product, two components, until cutover is complete
Shared internal libraries (@org/*, libs/)One internal platform product if they have shared consumers and versioning risk; otherwise components
Capability referenced but not in repo (LMS, mobile app agency build)Boundary product with external: true if stakeholders treat it as separate scope
Proxy that only forwards to another productUsually not a product; document under the consumer or the upstream owner
”Could be a product someday” but no distinct ownership todayComponent for now; note in Excludes of the parent

Every product must have at least 3 Excludes that point to real sibling products or named external boundaries.


Step 8 β€” Quality bar

Before finishing, verify:

  • Every service/app in the repo is mapped to exactly one product (as a component or primary owner).
  • No product file is just a copy of a service README β€” it must include Excludes and cross-links.
  • README catalog table matches index.yaml entries (same keys and names).
  • Docs discovery index (if present) references product-management/.
  • Docs structure guide (if present) documents the new section.
  • Relative links between product files work.
  • Definition paragraph is present verbatim in README.
  • No slide-deck/demo phrasing in titles.

Step 9 β€” What NOT to do

  • Do not equate services/* 1:1 with products without boundary analysis.
  • Do not create empty placeholder products for every folder.
  • Do not merge unrelated capabilities just because they share a database.
  • Do not omit Excludes β€” they are the core value of this catalog.
  • Do not create commits unless I explicitly ask.
  • Do not add unrelated refactors or edit application code.

Reference example (optional β€” structure only, do not copy product names)

The <REFERENCE_REPO> repo implements this pattern at docs/product-management/ with products such as . Match structure and rigor, not the specific product list β€” derive products from this repository.

Canonical reference files in <REFERENCE_REPO>:

  • README.md β€” definition and catalog index
  • index.yaml β€” machine-readable list
  • products/<example-a>.md β€” example product file
  • products/<example-b>.md β€” example with cross-links in Excludes

Deliverables checklist

  1. docs/product-management/README.md
  2. docs/product-management/index.yaml
  3. docs/product-management/products/*.md (one per business product)
  4. Updated docs discovery index (if exists)
  5. Updated docs structure README (if exists)
  6. Brief summary in your response: product list, key boundary decisions, and anything you flagged as ambiguous