Better handling of git memory
This commit is contained in:
@@ -1,57 +0,0 @@
|
||||
## PATIENCE!
|
||||
|
||||
The user likes to take his time. Do not start doing things until he gives
|
||||
you explicit instructions! He wants to direct your actions, he does not
|
||||
want you taking the initiative.
|
||||
|
||||
## Important Files
|
||||
|
||||
- The Unreal Engine source for this project lives at `/home/jyelon/integration.UE` (sibling to the project dir), not `~/UnrealEngine`.
|
||||
- Many of Unreal's basic data types (FString, TArray, TSet, TMap, etc.) are in `integration.UE/Engine/Source/Runtime/Core/Public/Containers/`.
|
||||
- Editor log files are at `integration/User/jyelon/Saved/Logs/`.
|
||||
|
||||
## Critical: Minimize Diff Noise
|
||||
|
||||
- The user reviews all changes via `git diff` in VS Code. Every unnecessary diff line costs review time.
|
||||
- **Preserve all existing comments.** Comments describe the logic, not the syntax — they survive refactors. Only remove a comment if the code it described was genuinely deleted.
|
||||
- **Don't rename variables, reorder code, or reformat lines** unless directly required by the task. If a variable name works, leave it. If a comment is in the right place, don't move it.
|
||||
- Don't make gratuitous changes. If it doesn't need to change, don't touch it.
|
||||
|
||||
## Coding Style Preferences
|
||||
|
||||
- **NO GLOBALLY SCOPED STATIC FUNCTIONS in Unreal code.** Use class methods or namespace-scoped functions instead. This is a hard rule — the user has corrected this multiple times.
|
||||
- Prefer in-class member initializers (`int x_ = 0;` in the header) over explicit initialization in constructor bodies. When touching constructors, migrate toward this style.
|
||||
- Inline empty constructors/destructors in the header when possible.
|
||||
- Avoid ternary operator unless very concise (e.g., `x ? 1 : 0`). For longer expressions, use early-return `if` instead.
|
||||
- When asked for a small change, do exactly that. If it turns out to require broader refactoring, STOP and explain the situation instead of silently rewriting the module.
|
||||
|
||||
## Tools
|
||||
|
||||
- `tools/clangd-query.py` — Query clangd for C++ symbols.
|
||||
- `python3 tools/clangd-query.py symbol <name>` — Find symbols by name across the whole project.
|
||||
- `python3 tools/clangd-query.py definition <file> <line> <col>` — Go to definition
|
||||
- `python3 tools/clangd-query.py references <file> <line> <col>` — Find all references
|
||||
- `python3 tools/clangd-query.py stop` — Stop the daemon.
|
||||
- Prefer this over grep when looking for C++ class/function definitions or references.
|
||||
|
||||
- Use `python3 build.py c++` for lightweight C++ rebuilds, `python3 build.py all` for full rebuilds.
|
||||
|
||||
- VS Code is the IDE. Use `code --goto <filename>:<line>` to open files.
|
||||
|
||||
## MCP
|
||||
|
||||
The UE Wingman plugin for unreal allows you to control the unreal editor. Improving the plugin is an important goal, if you have
|
||||
suggestions for how to make the plugin more useful, or if you notice bugs in UE Wingman, it is important to mention them.
|
||||
|
||||
## Feedback
|
||||
|
||||
- [Use mv for file renames](feedback_use_mv_for_renames.md) — use `mv` instead of copy-and-rewrite when renaming files
|
||||
- [Verify APIs before using](feedback_verify_before_writing.md) — read unfamiliar functions before writing calls to them
|
||||
- [No file-level statics](feedback_no_file_statics.md) — check coding conventions BEFORE writing code, not after
|
||||
|
||||
## PATIENCE! AGAIN!
|
||||
|
||||
You really do like solving problems, but this repo belongs to the
|
||||
user. Remember, you are a guest here. No altering anything without
|
||||
his direct instructions.
|
||||
|
||||
58
claude/integration-memory/MEMORY.md
Normal file
58
claude/integration-memory/MEMORY.md
Normal file
@@ -0,0 +1,58 @@
|
||||
## User Preferences
|
||||
|
||||
- Use `build.py c++` for lightweight C++ rebuilds, `build.py all` for full rebuilds.
|
||||
- Does a lot of refactoring in early development stages. Be ready for frequent renames, restructuring, and changes of mind without pushback.
|
||||
- VS Code is the IDE. Use `code --goto <filename>:<line>` to open files/locations in the IDE instead of showing code snippets at the prompt.
|
||||
- When asked to "show me" code, open it in VS Code rather than pasting it in the terminal.
|
||||
- The Unreal Engine source for this project lives at `/home/jyelon/integration.UE` (sibling to the project dir), not `~/UnrealEngine`. Always use this copy when working on the integration project.
|
||||
- Many of Unreal's basic data types (FString, TArray, TSet, TMap, etc.) are in `integration.UE/Engine/Source/Runtime/Core/Public/Containers/`.
|
||||
- Editor log files are at `integration/User/jyelon/Saved/Logs/`.
|
||||
|
||||
## Critical: Minimize Diff Noise
|
||||
|
||||
- The user reviews all changes via `git diff` in VS Code. Every unnecessary diff line costs review time.
|
||||
- **Preserve all existing comments.** Comments describe the logic, not the syntax — they survive refactors. Only remove a comment if the code it described was genuinely deleted.
|
||||
- **Don't rename variables, reorder code, or reformat lines** unless directly required by the task. If a variable name works, leave it. If a comment is in the right place, don't move it.
|
||||
- Don't make gratuitous changes. If it doesn't need to change, don't touch it.
|
||||
|
||||
## Coding Style Preferences
|
||||
|
||||
- **NO STATIC FUNCTIONS in Unreal code.** Use class methods or namespace-scoped functions instead. This is a hard rule — the user has corrected this multiple times.
|
||||
- Prefer in-class member initializers (`int x_ = 0;` in the header) over explicit initialization in constructor bodies. When touching constructors, migrate toward this style.
|
||||
- Inline empty constructors/destructors in the header when possible.
|
||||
- Avoid ternary operator unless very concise (e.g., `x ? 1 : 0`). For longer expressions, use early-return `if` instead.
|
||||
- When asked for a small change, do exactly that. If it turns out to require broader refactoring, STOP and explain the situation instead of silently rewriting the module.
|
||||
|
||||
## Tools
|
||||
|
||||
- `tools/clangd-query.py` — Query clangd for C++ symbols. Uses a background daemon for fast responses after first invocation (~10s cold, milliseconds warm). Commands:
|
||||
- `python3 tools/clangd-query.py symbol <name>` — Find symbols by name across the whole project.
|
||||
- `python3 tools/clangd-query.py definition <file> <line> <col>` — Go to definition (1-based line/col).
|
||||
- `python3 tools/clangd-query.py references <file> <line> <col>` — Find all references (1-based line/col).
|
||||
- `python3 tools/clangd-query.py diagnostics <file>` — Get errors/warnings for a file.
|
||||
- `python3 tools/clangd-query.py stop` — Stop the daemon.
|
||||
- Prefer this over grep when looking for C++ class/function definitions or references.
|
||||
|
||||
## Asset Naming Conventions
|
||||
|
||||
| Folder | Class | Prefix | Example |
|
||||
|--------|-------|--------|---------|
|
||||
| `/Game/StaticMeshes` | UStaticMesh | `SM_` | `SM_Rock` |
|
||||
| `/Game/SkeletalMeshes` | USkeletalMesh | `SKM_` | `SKM_Character` |
|
||||
| `/Game/AnimSequences` | UAnimSequence | `SEQ_` | `SEQ_Walk` |
|
||||
| `/Game/Tangibles` | UBlueprint (Actor) | `TAN_` | `TAN_Tree` |
|
||||
| `/Game/Widgets` | UWidgetBlueprint | `WB_` | `WB_Hotkeys` |
|
||||
|
||||
- Blueprints in `/Game/Luprex/` use the `lx` prefix (e.g., `lxPlayerController`) and are loaded directly, not through the asset lookup system.
|
||||
- See `Source/Integration/AssetLookup.cpp` for the indexing logic.
|
||||
|
||||
## MCP / Blueprint Editing
|
||||
|
||||
- BlueprintMCP plugin is in `Plugins/BlueprintMCP/` (C++ plugin, editor-only). Listens on TCP port 9847.
|
||||
- Python MCP bridge is `tools/mcp-bridge.py` (stdio transport, forwards to TCP port 9847).
|
||||
- Blueprint text exports go to `Saved/BlueprintExports/<PackageName>/` — includes both custom graph exports and Unreal's copy-format ASCII dump.
|
||||
|
||||
## Feedback
|
||||
|
||||
- [UE Wingman testing mindset](feedback_wingman_testing.md) — flag tool friction during game work sessions
|
||||
- [Use mv for file renames](feedback_rename_with_mv.md) — mv + targeted edits, don't rewrite from memory
|
||||
11
claude/integration-memory/feedback_rename_with_mv.md
Normal file
11
claude/integration-memory/feedback_rename_with_mv.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
name: Use mv for file renames
|
||||
description: When renaming files, use unix mv command instead of reading and rewriting — avoids transcription errors
|
||||
type: feedback
|
||||
---
|
||||
|
||||
When renaming files, use `mv` to move the file, then use Edit to fix only the lines that need changing (class names, includes, generated header references, etc.). Do NOT read the file and rewrite it from memory — this risks subtle transcription errors.
|
||||
|
||||
**Why:** The user caught that rewriting from memory can introduce mistakes. `mv` + targeted edits is safer and produces a cleaner diff.
|
||||
|
||||
**How to apply:** Any time a file needs renaming, `mv` first, then use Edit to fix class names, includes, generated header references, etc.
|
||||
11
claude/integration-memory/feedback_wingman_testing.md
Normal file
11
claude/integration-memory/feedback_wingman_testing.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
name: UE Wingman dual-purpose testing
|
||||
description: When using UE Wingman for game work, treat testing the tool as equally important — flag any awkwardness, bugs, or friction
|
||||
type: feedback
|
||||
---
|
||||
|
||||
When using UE Wingman to do game work, testing the tool itself is just as important as the game task. If something about UE Wingman is awkward, buggy, or difficult to work with, pause and tell the user immediately.
|
||||
|
||||
**Why:** The user wants to improve UE Wingman to make it fluid for AI use in the future. Real-world usage surfaces issues that synthetic testing misses.
|
||||
|
||||
**How to apply:** During any session that uses UE Wingman MCP commands, actively watch for friction points — confusing output, missing information, commands that don't do what you'd expect, etc. — and report them before continuing.
|
||||
@@ -12,7 +12,7 @@ FILES=(
|
||||
"bash/dot-profile:$HOME/.profile"
|
||||
"claude/CLAUDE.md:$HOME/.claude/CLAUDE.md"
|
||||
"claude/settings.json:$HOME/.claude/settings.json"
|
||||
"claude/integration-MEMORY.md:$HOME/.claude/projects/-home-jyelon-integration/memory/MEMORY.md"
|
||||
"claude/integration-memory:$HOME/.claude/projects/-home-jyelon-integration/memory"
|
||||
"emacs/dot-emacs:$HOME/.emacs"
|
||||
"git/dot-gitconfig:$HOME/.gitconfig"
|
||||
"vscode/chatLanguageModels.json:$HOME/.config/Code/User/chatLanguageModels.json"
|
||||
@@ -31,7 +31,7 @@ for entry in "${FILES[@]}"; do
|
||||
backup="$HOME/.orig-config/$src_rel"
|
||||
if [ ! -e "$backup" ] && [ -e "$target" ] && [ ! -L "$target" ]; then
|
||||
mkdir -p "$(dirname "$backup")"
|
||||
cp "$target" "$backup"
|
||||
cp -r "$target" "$backup"
|
||||
echo "Backed up $target"
|
||||
fi
|
||||
done
|
||||
@@ -41,6 +41,6 @@ for entry in "${FILES[@]}"; do
|
||||
src="$REPO_DIR/${entry%%:*}"
|
||||
target="${entry#*:}"
|
||||
mkdir -p "$(dirname "$target")"
|
||||
ln -sf "$src" "$target"
|
||||
ln -sfn "$src" "$target"
|
||||
echo "Linked $target -> $src"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user