with one click
project-conventions
Core conventions and patterns for this codebase
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Core conventions and patterns for this codebase
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
{what this skill teaches agents}
Build real git source, bare remote, and local clone fixtures for CopilotBooster integration tests.
{what this skill teaches agents}
Reusable WinForms pattern for textboxes that accept either a bare GitHub PR/Issue number or a full github.com URL.
Isolate tests for services that write under %LOCALAPPDATA% without touching the real user profile.
Kill a spawned Windows process tree from C# with a Win32 Job Object.
| name | project-conventions |
| description | Core conventions and patterns for this codebase |
| domain | project-conventions |
| confidence | medium |
| source | template |
This is a starter template. Replace the placeholder patterns below with your actual project conventions. Skills train agents on codebase-specific practices — accurate documentation here improves agent output quality.
Always provide a deterministic, non-empty fallback for user-visible identifiers (session names, display names, labels). Never rely on external state (sidecar files, API responses, host resolution) being present synchronously.
Why: Timing races, I/O failures, and external state initialization delays can leave user-facing fields empty. An empty string in a grid cell or label breaks user comprehension and violates the principle of "every item has a meaningful name."
How:
"Session {first-8-chars-of-guid}", "Untitled {timestamp}", "Item {id}"Example from SessionService.cs:
string displaySummary;
if (aliases.TryGetValue(id, out var alias))
{
displaySummary = alias;
}
else if (!string.IsNullOrWhiteSpace(summary))
{
displaySummary = summary;
}
else if (overrides.TryGetValue(id, out var overrideEntry))
{
displaySummary = overrideEntry.Name;
}
else
{
// Fallback: use first 8 chars of session ID as deterministic display name
displaySummary = id.Length >= 8 ? $"Session {id.Substring(0, 8)}" : $"Session {id}";
}
Anti-pattern:
// ❌ BAD: Returns empty string when folder exists but no summary
displaySummary = string.IsNullOrWhiteSpace(folder) ? "(no summary)" : "";
Citation: Trinity's empty-title fix (2026-05-09), SessionService.cs:341-358, .squad/decisions/inbox/trinity-empty-title-fix.md
Describe a key convention or practice used in this codebase. Be specific about what to do and why.
// Add code examples that demonstrate your conventions