Pattern Library
named, parameterised prompts · the library you stop rewriting.
You've already written this prompt three times. The status update one. The decision-doc one. The PR-review one. Same scaffold, different project. After enough one-off prompts you start writing the same shapes over and over — and forgetting the small refinements that took you weeks to find. Module 06 turns that habit into a curated library.
Three artifacts — patterns.md (the catalog), a patterns/ folder (the named prompts), and pattern-usage.md (how to call them, how to parameterise). Runs three ways:
- Filesystem patterns/ folder — named markdown files in the team-brain. Agents auto-load them at session start. Best for: Claude Code, Cursor, Windsurf, Aider.
- Project / Custom GPT pattern collection — patterns live in a shared Project / Custom GPT / Gem; the assistant calls them on demand.
- Saved-prompts in your AI tool — each pattern saved as a named entry in claude.ai's prompt library, ChatGPT's saved prompts, Gemini's saved-prompt collection.
Patterns are markdown. Markdown is portable. The library you build today travels intact across Claude, ChatGPT, Gemini, and whatever ships next.
// unlock includes
- Three path-specific bootstrap prompts (Filesystem · Project · Saved)
- Three artifacts:
patterns.md,patterns/,pattern-usage.md - The Setup Companion PDF — pattern catalog walkthroughs
- Starter pattern library (status-update · decision-doc · RFC-review · weekly-review · PR-review · rubber-duck)
- Versioning + lineage rules — tracking how patterns evolve
Unlock Module 06 now
Subscribers see Modules 02–07 immediately. Drop your email — we'll also flag you when Module 07 ships. No spam.
Inventory your re-writes
Status updates · decision docs · PR reviews · weekly reviews — what you keep retyping.
Name + parameterise
Each pattern: a name, parameters, the prompt body. Markdown, portable.
Call by name
"Run pattern: status-update" — the AI loads the named prompt with your params.
Three artifacts. Drafted in 30 minutes by the prompt below. Grown over time as you find new patterns worth naming. Everything else is optional bonus.
patterns.md
rarely changesThe catalog. One row per pattern: name, when to use, parameters, output target, version.
patterns/
grows over timeFolder of named markdown files: status-update.md, decision-doc.md, pr-review.md, etc. The actual prompt bodies.
pattern-usage.md
rarely changesHow to call patterns from a chat. Parameter syntax. Composition rules. Versioning convention.
v1 / v2 suffixes when the prompt changes meaningfully (different output target, breaking parameter change). Old versions stay in patterns/_archive/.// derived from: decision-doc v2.patterns/ folder to another team and it works in their stack. The library is the moat.Where do patterns live?
Filesystem patterns/ folder
For Path A users from Modules 01–05. Patterns live in a patterns/ folder next to the team-brain. Wrappers (CLAUDE.md / AGENTS.md) reference the folder so agents auto-discover patterns at session start. Calling a pattern: "Run pattern: status-update with project=<name>". Most discoverable; cleanest versioning via git.
Project / Custom GPT pattern collection
For Path B users. Patterns live in the shared Project (Claude / ChatGPT / NotebookLM) or as a single Custom GPT / Gem with the patterns embedded in the system prompt. Calling a pattern: same naming convention, but the assistant resolves it from its own embedded library, not from a folder.
Saved-prompts in your AI tool
For Path C users, or anyone who lives in the chat UI. Each pattern is saved as a named entry in claude.ai's prompt library, ChatGPT's saved prompts, or Gemini's saved-prompt collection. Slash-command or shortcut to invoke. The catalog (patterns.md) is your portable reference.
Click-by-click setup for each path → Setup Companion PDF in the Downloads block above.
A pattern earns its name when you've written something three times. Inventory the prompts you've already written more than once — those are the patterns. Common categories:
Status & comms
status-update— weekly status emailall-hands-narrative— leadership-friendly summaryexec-brief— 1-page senior-stakeholder digestincident-postmortem— outage summary + timeline
Decisions & design
decision-doc— context · choice · alternatives · review datearchitecture-decision-record— ADR templaterfc-reviewer— RFC critique with rubricvendor-evaluation— vendor scoring against requirements
Reviews
pr-review— code review with severity tagsdesign-review— UI / UX review with usability heuristicsretro-reviewer— turn raw retro notes into actionable themeschange-management-brief— stakeholder impact + rollout
Personal productivity
rubber-duck— explain back what I'm trying to do · find the gapweekly-review— what shipped · what's blocked · what's nexteli5— explain like I'm 5 with a relevant analogyreading-list— given a topic, suggest 3-5 reads in priority order
Three uses or it's not a pattern. Patterns earn their place by repeated use. If you've only written something once, leave it as an artifact in patterns/_drafts/ until it sees real use.
Pick the prompt that matches your path. Output is the three artifacts plus a starter library of 6 named patterns (status-update · decision-doc · rfc-review · weekly-review · pr-review · rubber-duck). ~30 minutes.
› Show the Path A prompt // for Claude Code · Cursor · Windsurf · agents that read folders
Act as my Pattern Library builder. ## Safety contract (Path A — filesystem) - Read only from the folder I've given access to. No traversal beyond. - Write only inside `patterns/` plus `patterns.md` and `pattern-usage.md` at the team-brain root. Never elsewhere. - Update CLAUDE.md / AGENTS.md to reference the patterns folder (auto-load). - Each pattern file under 400 tokens. Patterns are scaffolds, not solutions. - Log every pattern proposed in the debrief. ## What to build Three artifacts: 1. **`patterns.md`** — catalog: name · when-to-use · parameters · output target · version. 2. **`patterns/`** — folder of named markdown files (one per pattern). 3. **`pattern-usage.md`** — calling convention, parameter syntax, composition rules, versioning. Plus a starter library of 6 patterns: - `status-update.md` - `decision-doc.md` - `rfc-review.md` - `weekly-review.md` - `pr-review.md` - `rubber-duck.md` ## Steps ### 1. Inventory silently What kind of work do I do most often? (Look for git activity, recent docs, project structure cues.) What patterns probably already exist as one-off prompts I keep retyping? ### 2. Ask 4–6 short questions 1. Top 3 things I write repeatedly with AI help (status email, decision doc, code review, weekly summary, etc.)? 2. What output format do I prefer for status / decision docs (markdown, slides, plain prose)? 3. Tone — direct, formal, narrative? 4. Should patterns assume the team-brain context is already loaded (yes for Path A), or be standalone? 5. Versioning preference — semver-style (v1, v2) or git-history-only? 6. Any patterns I want to skip from the starter library because they don't fit? ### 3. Draft the artifacts + 6 starter patterns Use the templates below. Rules: - Each pattern file: a one-line description, parameter list, prompt body (~150 tokens), example invocation. - `patterns.md` rows reference the pattern file path. - `pattern-usage.md` shows: "Run pattern: <name> with <params>" syntax. - Update CLAUDE.md / AGENTS.md to add: "When I say 'Run pattern: X', read patterns/X.md and execute it with the parameters I provide." ### 4. Save - Create patterns/ if missing. Write 6 starter pattern files. - Write patterns.md and pattern-usage.md. - Update CLAUDE.md / AGENTS.md with the new instruction (don't overwrite existing content; append). ### 5. Debrief ``` ## Pattern Library built **Created:** - patterns.md (N rows) - pattern-usage.md - patterns/status-update.md - patterns/decision-doc.md - patterns/rfc-review.md - patterns/weekly-review.md - patterns/pr-review.md - patterns/rubber-duck.md **Wrappers updated:** CLAUDE.md, AGENTS.md (added pattern-call instruction) **Calling syntax test:** - "Run pattern: status-update with project=yardline week=2026-W19" - The agent will read patterns/status-update.md and execute with those params. **Growing the library:** - New pattern earns place after 3 uses. - Drafts go in patterns/_drafts/ first. - Old versions go in patterns/_archive/-v .md when you bump major. ``` ## Templates ### `patterns.md` row ```markdown ## status-update **When to use:** weekly status email to leadership / cross-team. **Parameters:** project, week, audience. **Output:** markdown body ready to paste into email. **File:** patterns/status-update.md **Version:** v1 **Lineage:** — ``` ### `patterns/status-update.md` ```markdown # status-update pattern **Parameters:** project={{project}}, week={{week}}, audience={{audience}} You are writing a weekly status update for {{audience}}. Read team-brain/state-shared.md for this week's signal. Read team-brain/project-shared.md for context. Output a markdown email body with these sections: 1. Headline (one sentence — the most important thing) 2. Shipped this week (3-5 bullets, specific) 3. Coming next week (3 bullets) 4. Blockers / asks (only if real; skip if none) Tone: {{audience-aware-tone}}. Specific over generic. End with: "Questions: reply to this thread." ``` ### `pattern-usage.md` ```markdown # Pattern Usage ## Calling syntax "Run pattern: <name> [with <param1>=<value> ...]" The agent reads patterns/<name>.md and runs it with the parameters. Missing parameters: agent asks. ## Composition "Run pattern: weekly-review then run pattern: status-update with that output." ## Versioning - Bump v1 → v2 on breaking parameter or output target changes. - Old versions in patterns/_archive/. ## Adding a pattern 1. Write to patterns/_drafts/<name>.md. 2. Use it 3 times. 3. Move to patterns/<name>.md and add a row to patterns.md. ``` ## Principles - Three uses or it's not a pattern. - Patterns are scaffolds, not solutions. Keep them tight. - Markdown is portable. The library survives platform migrations. - Drafts before promotions. The library stays high-signal. Start with Step 1, then Step 2 (questions).
› Show the Path B prompt // for shared Projects · Custom GPT · Gemini Gems
Act as my Pattern Library builder.
## Safety contract (Path B — Project / Custom GPT)
- Output is the three artifacts plus 6 starter pattern files as labeled markdown blocks. I'll save them to my shared Project (or paste the patterns into a Custom GPT / Gem system prompt).
- For Custom GPT path: combine the patterns into ONE system prompt with named sections.
- Each pattern under 400 tokens; total system prompt under the platform's limit.
- Skip credentials. Never echo OAuth tokens.
## What to build
Three artifacts (Path A) PLUS, for the Custom-GPT-style path:
4. **`custom-gpt-system-prompt.md`** — a single system prompt that wraps all 6 patterns with name-based dispatch ("when user says 'Run pattern: X', use the X section below").
## Steps
### 1. Inventory silently
What's the user's hub — Claude Project, ChatGPT Project, NotebookLM, M365 Copilot, Custom GPT, Gemini Gem?
### 2. Ask 4–6 short questions
(Same as Path A, plus:)
- "Project file collection" or "single Custom GPT / Gem"?
### 3. Draft three artifacts + 6 patterns + (if Custom GPT) the combined system prompt
### 4. Output as markdown blocks (one per file).
### 5. Debrief
```
## Pattern Library built
**Output:** three artifacts + 6 patterns (or combined system prompt for Custom GPT).
**Setup checklist:**
- Project path: upload all files to the shared Project.
- Custom GPT path: paste system prompt into "Configure → Instructions". Test "Run pattern: status-update".
- Saved-prompt fallback: each pattern can also be saved individually if you prefer.
**Growing the library:**
- New pattern earns place after 3 uses.
- For Custom GPT, edit the system prompt to add/version patterns.
```
## Templates
(Same artifact + pattern templates as Path A.)
### `custom-gpt-system-prompt.md` (combined)
```markdown
You are a pattern-aware assistant. The user invokes patterns by name.
When the user says "Run pattern: <name> [with <params>]":
- Look up <name> below and execute the prompt body with those params.
- If a pattern is missing, suggest the closest match and ask.
## Pattern: status-update
[body from patterns/status-update.md]
## Pattern: decision-doc
[body from patterns/decision-doc.md]
[... 6 patterns total ...]
## Pattern usage
- Run pattern: <name> with <param1>=<value> ...
- Compose: "Run pattern: weekly-review then run pattern: status-update with that output."
- Versions: pattern names with -v2 suffix indicate updates.
```
## Principles
(Same as Path A.)
Start with Step 1, then Step 2 (questions).
› Show the Path C prompt // for the chat UI's built-in prompt-saving feature
Act as my Pattern Library builder. ## Safety contract (Path C — saved prompts) - Output is the three artifacts plus 6 patterns, formatted for paste into your AI tool's saved-prompts UI. - Each pattern is one saved entry. Cross-references between patterns explain the calling convention; the tool itself doesn't auto-resolve "Run pattern: X" — you pick the saved entry. - Catalog (`patterns.md`) is your portable reference; keep it in your team-brain folder. ## What to build Three artifacts plus 6 patterns formatted as labeled markdown blocks (one per saved prompt). ## Steps ### 1. Inventory silently Which AI tool? (claude.ai, ChatGPT, Gemini, Perplexity.) What's the saved-prompts feature called there? ### 2. Ask 3–5 short questions (Same as Path A, scoped to manual paths.) ### 3. Draft artifacts + 6 patterns Each pattern: a name (matches the saved entry name), parameter list, prompt body. Self-contained — the saved entry can run without other patterns loaded. ### 4. Output as markdown blocks ### 5. Debrief ``` ## Pattern Library built **Output:** three artifacts + 6 patterns ready to save. **Setup steps:** 1. In [tool], open the saved-prompts UI. 2. Save each pattern as a new entry. Name = pattern name. 3. Pin the catalog (patterns.md) somewhere accessible (Drive, Notion). **Growing:** - After 3 uses of a new prompt, save it. Update patterns.md. - For composition, manually run patterns in sequence (e.g. "weekly-review" then feed output into "status-update"). ``` ## Templates (Same as Path A; Path C makes them fully self-contained — assume team-brain context is NOT auto-loaded.) ## Principles (Same as Path A. Plus: Path C trades automation for portability — your library survives a platform migration with one paste-pass.) Start with Step 1, then Step 2 (questions).
If your team lives in VS Code, you already have a fourth pattern surface. GitHub Copilot reads .github/prompts/ the same way Claude Code reads patterns/ — same prompt body, slightly different envelope. One library, two activation surfaces.
// github copilot · vs code
Mirror your patterns/ folder into .github/prompts/ — same library, slash-invokable.
Drop a name.prompt.md file under .github/prompts/ with a tiny frontmatter envelope. Type /name in Copilot Chat — the prompt fires with workspace context auto-attached. Versioned in git, reviewable in PR, identical body to your Path A files.
Turn on prompt files in VS Code
Open settings.json (User or Workspace). Add:
{
"chat.promptFiles": true,
"chat.promptFilesLocations": [
".github/prompts"
]
}
Reload window. Copilot Chat now scans the folder on every session.
Wrap each pattern with frontmatter
For every patterns/<name>.md, add a sibling .github/prompts/<name>.prompt.md:
--- mode: 'agent' description: 'Weekly status update' tools: ['githubRepo', 'codebase'] --- # status-update pattern [paste body from patterns/status-update.md]
mode: agent (read+write), edit (apply edits), or ask (chat-only).
Slash-call from Copilot Chat
In any VS Code window with the repo open, open Copilot Chat (Ctrl+Alt+I / Cmd+Ctrl+I) and type:
/status-update project=yardline week=2026-W19
Copilot loads the prompt body, attaches workspace context (per tools), and runs. Output appears in chat — copy/apply as usual.
Why this matters: one library, two activation surfaces. Claude Code reads patterns/ at session start; GitHub Copilot reads .github/prompts/ on slash-invoke. Same library, no duplication, no platform lock-in. When you add a new pattern, sync the file to both places — the bonus drill in the Setup Companion ships a one-line shell script that does it.
Bonus surfaces in the same repo:
.github/copilot-instructions.md— auto-attached to every Copilot Chat in the repo. The natural home for the wrapper rules from Module 02 (style, conventions, "always use the team brain")..github/instructions/<name>.instructions.md— scoped instructions that match files viaapplyTo: '**/*.tsx'frontmatter. Lighter than a full pattern; heavier than a one-off prompt..github/chatmodes/<name>.chatmode.md— custom chat personas (e.g.rfc-reviewer.chatmode.md). Pickable from the chat-mode dropdown.
Fits inside the safety contract: .github/prompts/ lives in git, is reviewable in PR, and never escapes the repo. Path A's "write only inside patterns/" rule extends naturally: write only inside patterns/ + .github/prompts/, both versioned, both auditable.
For teams already on M365, the same pattern catalog ships into the Copilot Prompt Gallery (formerly the Promptbook) — the saved-prompt store inside Microsoft 365 Copilot Chat.
// microsoft 365 copilot · prompt gallery
Save each pattern as a Prompt Gallery entry — shareable across the tenant.
The Prompt Gallery is a Path C surface with a Path B distribution: each pattern is a saved entry, but Microsoft 365 admins can publish them tenant-wide so the whole team gets the library at once. Same body as your patterns/, different paste-target.
Save patterns individually
In M365 Copilot Chat, click View prompts › Save prompt. Title = pattern name. Body = the prompt from patterns/<name>.md. Add the pattern's tags (status, decisions, etc.).
Publish to your team
Open the Microsoft 365 admin center › Copilot › Prompt Gallery management. Promote your saved prompts to Organization prompts. Every Copilot user in the tenant now sees them.
Pick from the gallery
In Copilot Chat (Word, Outlook, Teams, the standalone app) › View prompts › pick the pattern. Fill the {{parameters}} › send. Output stays inside the M365 surface.
Why this matters: for organizations standardized on Microsoft 365, the Prompt Gallery is where users already look for saved prompts. Mirror your library here and adoption is instant — no new tool to learn. Pair with Copilot Studio for agents that wrap a pattern and ship as a teams-discoverable bot.
A pattern library that doesn't grow rots. Two habits keep it useful:
Promote a draft to a pattern
You've written this prompt three times. Move patterns/_drafts/<name>.md to patterns/<name>.md. Add a row to patterns.md. Tighten the prompt by 20% on the way through.
Library audit
Open patterns.md. Anything unused for 60+ days — archive. Anything where you keep adding inline overrides — bump version. Lineage drift — check newer patterns aren't redundant with older ones.