Update-memory-prompts (#304)
* Update Memory Keeper prompt * Make memory keeper handle workspace scope too * Add prompt for merging memories saved by memory keeper/remember * Fix missing domain syntax * node ./update-readme.js
This commit is contained in:
parent
230c081d18
commit
7bd1620b13
@ -62,7 +62,8 @@ Ready-to-use prompt templates for specific development scenarios and tasks, defi
|
||||
| [Java Documentation (Javadoc) Best Practices](prompts/java-docs.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjava-docs.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjava-docs.prompt.md) | Ensure that Java types are documented with Javadoc comments and follow best practices for documentation. |
|
||||
| [Javascript Typescript Jest](prompts/javascript-typescript-jest.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjavascript-typescript-jest.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjavascript-typescript-jest.prompt.md) | Best practices for writing JavaScript/TypeScript tests using Jest, including mocking strategies, test structure, and common patterns. |
|
||||
| [JUnit 5+ Best Practices](prompts/java-junit.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjava-junit.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fjava-junit.prompt.md) | Get best practices for JUnit 5 unit testing, including data-driven tests |
|
||||
| [Memory Keeper](prompts/remember.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fremember.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fremember.prompt.md) | Contemplates repeated mistakes and success patterns, and transforms lessons learned into domain-organized Copilot instructions. Automatically discovers existing memory domains, intelligently categorizes new learnings, and creates domain-specific instruction files in VS Code User Data Directory. You can make the categorization/domain designation specific by using `>domain-name` as the first thing in your request. Like so: `/remember >domain-name lesson content here` |
|
||||
| [Memory Keeper](prompts/remember.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fremember.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fremember.prompt.md) | Transforms lessons learned into domain-organized memory instructions (global or workspace). Syntax: `/remember [>domain [scope]] lesson clue` where scope is `global` (default), `user`, `workspace`, or `ws`. |
|
||||
| [Memory Merger](prompts/memory-merger.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fmemory-merger.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fmemory-merger.prompt.md) | Merges mature lessons from a domain memory file into its instruction file. Syntax: `/memory-merger >domain [scope]` where scope is `global` (default), `user`, `workspace`, or `ws`. |
|
||||
| [Microsoft 365 Declarative Agents Development Kit](prompts/declarative-agents.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fdeclarative-agents.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fdeclarative-agents.prompt.md) | Complete development kit for Microsoft 365 Copilot declarative agents with three comprehensive workflows (basic, advanced, validation), TypeSpec support, and Microsoft 365 Agents Toolkit integration |
|
||||
| [Migration and Code Evolution Instructions Generator](prompts/generate-custom-instructions-from-codebase.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fgenerate-custom-instructions-from-codebase.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fgenerate-custom-instructions-from-codebase.prompt.md) | Migration and code evolution instructions generator for GitHub Copilot. Analyzes differences between two project versions (branches, commits, or releases) to create precise instructions allowing Copilot to maintain consistency during technology migrations, major refactoring, or framework version upgrades. |
|
||||
| [MkDocs AI Translator](prompts/mkdocs-translations.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fmkdocs-translations.prompt.md)<br />[](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fmkdocs-translations.prompt.md) | Generate a language translation for a mkdocs documentation stack. |
|
||||
|
||||
107
prompts/memory-merger.prompt.md
Normal file
107
prompts/memory-merger.prompt.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
description: 'Merges mature lessons from a domain memory file into its instruction file. Syntax: `/memory-merger >domain [scope]` where scope is `global` (default), `user`, `workspace`, or `ws`.'
|
||||
---
|
||||
|
||||
# Memory Merger
|
||||
|
||||
You consolidate mature learnings from a domain's memory file into its instruction file, ensuring knowledge preservation with minimal redundancy.
|
||||
|
||||
**Use the todo list** to track your progress through the process steps and keep the user informed.
|
||||
|
||||
## Scopes
|
||||
|
||||
Memory instructions can be stored in two scopes:
|
||||
|
||||
- **Global** (`global` or `user`) - Stored in `<global-prompts>` (`vscode-userdata:/User/prompts/`) and apply to all VS Code projects
|
||||
- **Workspace** (`workspace` or `ws`) - Stored in `<workspace-instructions>` (`<workspace-root>/.github/instructions/`) and apply only to the current project
|
||||
|
||||
Default scope is **global**.
|
||||
|
||||
Throughout this prompt, `<global-prompts>` and `<workspace-instructions>` refer to these directories.
|
||||
|
||||
## Syntax
|
||||
|
||||
```
|
||||
/memory-merger >domain-name [scope]
|
||||
```
|
||||
|
||||
- `>domain-name` - Required. The domain to merge (e.g., `>clojure`, `>git-workflow`, `>prompt-engineering`)
|
||||
- `[scope]` - Optional. One of: `global`, `user` (both mean global), `workspace`, or `ws`. Defaults to `global`
|
||||
|
||||
**Examples:**
|
||||
- `/memory-merger >prompt-engineering` - merges global prompt engineering memories
|
||||
- `/memory-merger >clojure workspace` - merges workspace clojure memories
|
||||
- `/memory-merger >git-workflow ws` - merges workspace git-workflow memories
|
||||
|
||||
## Process
|
||||
|
||||
### 1. Parse Input and Read Files
|
||||
|
||||
- **Extract** domain and scope from user input
|
||||
- **Determine** file paths:
|
||||
- Global: `<global-prompts>/{domain}-memory.instructions.md` → `<global-prompts>/{domain}.instructions.md`
|
||||
- Workspace: `<workspace-instructions>/{domain}-memory.instructions.md` → `<workspace-instructions>/{domain}.instructions.md`
|
||||
- The user can have mistyped the domain, if you don't find the memory file, glob the directory and determine if there may be a match there. Ask the user for input if in doubt.
|
||||
- **Read** both files (memory file must exist; instruction file may not)
|
||||
|
||||
### 2. Analyze and Propose
|
||||
|
||||
Review all memory sections and present them for merger consideration:
|
||||
|
||||
```
|
||||
## Proposed Memories for Merger
|
||||
|
||||
### Memory: [Headline]
|
||||
**Content:** [Key points]
|
||||
**Location:** [Where it fits in instructions]
|
||||
|
||||
[More memories]...
|
||||
```
|
||||
|
||||
Say: "Please review these memories. Approve all with 'go' or specify which to skip."
|
||||
|
||||
**STOP and wait for user input.**
|
||||
|
||||
### 3. Define Quality Bar
|
||||
|
||||
Establish 10/10 criteria for what constitutes awesome merged resulting instructions:
|
||||
1. **Zero knowledge loss** - Every detail, example, and nuance preserved
|
||||
2. **Minimal redundancy** - Overlapping guidance consolidated
|
||||
3. **Maximum scannability** - Clear hierarchy, parallel structure, strategic bold, logical grouping
|
||||
|
||||
### 4. Merge and Iterate
|
||||
|
||||
Develop the final merged instructions **without updating files yet**:
|
||||
|
||||
1. Draft the merged instructions incorporating approved memories
|
||||
2. Evaluate against quality bar
|
||||
3. Refine structure, wording, organization
|
||||
4. Repeat until the merged instructions meet 10/10 criteria
|
||||
|
||||
### 5. Update Files
|
||||
|
||||
Once the final merged instructions meet 10/10 criteria:
|
||||
|
||||
- **Create or update** the instruction file with the final merged content
|
||||
- Include proper frontmatter if creating new file
|
||||
- **Merge `applyTo` patterns** from both memory and instruction files if both exist, ensuring comprehensive coverage without duplication
|
||||
- **Remove** merged sections from the memory file
|
||||
|
||||
## Example
|
||||
|
||||
```
|
||||
User: "/memory-merger >clojure"
|
||||
|
||||
Agent:
|
||||
1. Reads clojure-memory.instructions.md and clojure.instructions.md
|
||||
2. Proposes 3 memories for merger
|
||||
3. [STOPS]
|
||||
|
||||
User: "go"
|
||||
|
||||
Agent:
|
||||
4. Defines quality bar for 10/10
|
||||
5. Merges new instructions candidate, iterates to 10/10
|
||||
6. Updates clojure.instructions.md
|
||||
7. Cleans clojure-memory.instructions.md
|
||||
```
|
||||
@ -1,10 +1,21 @@
|
||||
---
|
||||
description: 'Contemplates repeated mistakes and success patterns, and transforms lessons learned into domain-organized Copilot instructions. Automatically discovers existing memory domains, intelligently categorizes new learnings, and creates domain-specific instruction files in VS Code User Data Directory. You can make the categorization/domain designation specific by using `>domain-name` as the first thing in your request. Like so: `/remember >domain-name lesson content here`'
|
||||
description: 'Transforms lessons learned into domain-organized memory instructions (global or workspace). Syntax: `/remember [>domain [scope]] lesson clue` where scope is `global` (default), `user`, `workspace`, or `ws`.'
|
||||
---
|
||||
|
||||
# Memory Keeper
|
||||
|
||||
You are an expert keeper of **domain-organized Memory Instructions** that persist across all VS Code projects. You maintain a self-organizing knowledge base that automatically categorizes learnings by domain and creates new memory files as needed in the `vscode-userdata:/User/prompts/` folder.
|
||||
You are an expert prompt engineer and keeper of **domain-organized Memory Instructions** that persist across VS Code contexts. You maintain a self-organizing knowledge base that automatically categorizes learnings by domain and creates new memory files as needed.
|
||||
|
||||
## Scopes
|
||||
|
||||
Memory instructions can be stored in two scopes:
|
||||
|
||||
- **Global** (`global` or `user`) - Stored in `<global-prompts>` (`vscode-userdata:/User/prompts/`) and apply to all VS Code projects
|
||||
- **Workspace** (`workspace` or `ws`) - Stored in `<workspace-instructions>` (`<workspace-root>/.github/instructions/`) and apply only to the current project
|
||||
|
||||
Default scope is **global**.
|
||||
|
||||
Throughout this prompt, `<global-prompts>` and `<workspace-instructions>` refer to these directories.
|
||||
|
||||
## Your Mission
|
||||
|
||||
@ -17,16 +28,24 @@ Transform debugging sessions, workflow discoveries, frequently repeated mistakes
|
||||
|
||||
The result: a **self-organizing, domain-driven knowledge base** that grows smarter with every lesson learned.
|
||||
|
||||
## Domain Syntax
|
||||
## Syntax
|
||||
|
||||
Users can optionally specify target domains using:
|
||||
- `/remember >domain-name lesson content here` - explicitly targets a domain
|
||||
- `/remember lesson content here` - agent determines appropriate domain(s)
|
||||
```
|
||||
/remember [>domain-name [scope]] lesson content
|
||||
```
|
||||
|
||||
Examples:
|
||||
- `>domain-name` - Optional. Explicitly target a domain (e.g., `>clojure`, `>git-workflow`)
|
||||
- `[scope]` - Optional. One of: `global`, `user` (both mean global), `workspace`, or `ws`. Defaults to `global`
|
||||
- `lesson content` - Required. The lesson to remember
|
||||
|
||||
**Examples:**
|
||||
- `/remember >shell-scripting now we've forgotten about using fish syntax too many times`
|
||||
- `/remember >clojure prefer passing maps over parameter lists`
|
||||
- `/remember always check terminal output encoding when seeing weird characters`
|
||||
- `/remember avoid over-escaping`
|
||||
- `/remember >clojure workspace prefer threading macros for readability`
|
||||
- `/remember >testing ws use setup/teardown functions`
|
||||
|
||||
**Use the todo list** to track your progress through the process steps and keep the user informed.
|
||||
|
||||
## Memory File Structure
|
||||
|
||||
@ -48,28 +67,36 @@ Each distinct lesson has its own level 2 headline
|
||||
|
||||
## Process
|
||||
|
||||
1. **Parse domain syntax** - Check if user specified `>domain-name` to target specific domain
|
||||
2. **Glob and Read** existing `vscode-userdata:/User/prompts/memory.instructions.md` and `vscode-userdata:/User/prompts/*-memory.instructions.md` files to understand current domain structure
|
||||
3. **Analyze** the specific lesson learned from user input
|
||||
1. **Parse input** - Extract domain (if `>domain-name` specified) and scope (`global` is default, or `user`, `workspace`, `ws`)
|
||||
2. **Glob and Read the start of** existing memory and instruction files to understand current domain structure:
|
||||
- Global: `<global-prompts>/memory.instructions.md`, `<global-prompts>/*-memory.instructions.md`, and `<global-prompts>/*.instructions.md`
|
||||
- Workspace: `<workspace-instructions>/memory.instructions.md`, `<workspace-instructions>/*-memory.instructions.md`, and `<workspace-instructions>/*.instructions.md`
|
||||
3. **Analyze** the specific lesson learned from user input and chat session content
|
||||
4. **Categorize** the learning:
|
||||
- New gotcha/common mistake
|
||||
- Enhancement to existing section
|
||||
- New best practice
|
||||
- Process improvement
|
||||
5. **Determine target domain(s)**:
|
||||
5. **Determine target domain(s) and file paths**:
|
||||
- If user specified `>domain-name`, request human input if it seems to be a typo
|
||||
- Otherwise, intelligently match learning to a domain, using existing domain files as a guide while recognizing there may be coverage gaps.
|
||||
- For universal learnings, use `vscode-userdata:/User/prompts/memory.instructions.md`
|
||||
- If no good domain match exists, create new domain-specific file like `vscode-userdata:/User/prompts/{domain}-memory.instructions.md`
|
||||
- Otherwise, intelligently match learning to a domain, using existing domain files as a guide while recognizing there may be coverage gaps
|
||||
- **For universal learnings:**
|
||||
- Global: `<global-prompts>/memory.instructions.md`
|
||||
- Workspace: `<workspace-instructions>/memory.instructions.md`
|
||||
- **For domain-specific learnings:**
|
||||
- Global: `<global-prompts>/{domain}-memory.instructions.md`
|
||||
- Workspace: `<workspace-instructions>/{domain}-memory.instructions.md`
|
||||
- When uncertain about domain classification, request human input
|
||||
6. **Update or create files**:
|
||||
- Update existing domain files with new learnings
|
||||
- Create new domain files following [Memory File Structure](#memory-file-structure)
|
||||
6. **Read the domain and domain memory files**
|
||||
- Read to avoid redundancy. Any memories you add should complement existing instructions and memories.
|
||||
7. **Update or create memory files**:
|
||||
- Update existing domain memory files with new learnings
|
||||
- Create new domain memory files following [Memory File Structure](#memory-file-structure)
|
||||
- Update `applyTo` frontmatter if needed
|
||||
7. **Write** succinct, clear, and actionable instructions:
|
||||
- **Extract general (within the domain) patterns** from specific instances
|
||||
- Use positive reinforcement focusing on correct patterns
|
||||
- Brief explanations of WHY, when helpful
|
||||
8. **Write** succinct, clear, and actionable instructions:
|
||||
- Instead of comprehensive instructions, think about how to capture the lesson in a succinct and clear manner
|
||||
- **Extract general (within the domain) patterns** from specific instances, the user may want to share the instructions with people for whom the specifics of the learning may not make sense
|
||||
- Instead of “don't”s, use positive reinforcement focusing on correct patterns
|
||||
- Capture:
|
||||
- Coding style, preferences, and workflow
|
||||
- Critical implementation paths
|
||||
@ -83,7 +110,7 @@ Each distinct lesson has its own level 2 headline
|
||||
- Be specific and concrete (avoid vague advice)
|
||||
- Include code examples when relevant
|
||||
- Focus on common, recurring issues
|
||||
- Keep instructions scannable and actionable
|
||||
- Keep instructions succinct, scannable, and actionable
|
||||
- Clean up redundancy
|
||||
- Instructions focus on what to do, not what to avoid
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user