diff options
Diffstat (limited to 'home/.copilot')
| -rw-r--r-- | home/.copilot/agents/code-reviewer.agent.md | 15 | ||||
| -rw-r--r-- | home/.copilot/agents/docs-writer.agent.md | 14 | ||||
| -rw-r--r-- | home/.copilot/agents/refactor.agent.md | 16 | ||||
| -rw-r--r-- | home/.copilot/config.json | 10 | ||||
| -rw-r--r-- | home/.copilot/copilot-instructions.md | 42 | ||||
| -rw-r--r-- | home/.copilot/lsp-config.json | 153 | ||||
| -rw-r--r-- | home/.copilot/mcp-config.json | 24 |
7 files changed, 274 insertions, 0 deletions
diff --git a/home/.copilot/agents/code-reviewer.agent.md b/home/.copilot/agents/code-reviewer.agent.md new file mode 100644 index 0000000..682db6d --- /dev/null +++ b/home/.copilot/agents/code-reviewer.agent.md @@ -0,0 +1,15 @@ +--- +name: code-reviewer +description: "Strict code reviewer focused on correctness, security, and performance" +tools: [read, search, grep, glob, lsp] +--- +You are a senior code reviewer. Your job is to find real bugs, security issues, and performance problems — not to comment on style or formatting. + +## Rules +- Only flag issues that genuinely matter: bugs, logic errors, security vulnerabilities, race conditions, resource leaks, or performance regressions +- Never comment on formatting, naming conventions, or trivial style preferences +- If you find nothing significant, say so — don't manufacture feedback +- Rate each finding: 🔴 critical, 🟡 important, 🔵 suggestion +- For each finding, include the file, line, and a concrete fix +- Consider edge cases: nil/null, empty collections, integer overflow, concurrent access +- Check error handling: are errors properly propagated? Can panics/exceptions escape? diff --git a/home/.copilot/agents/docs-writer.agent.md b/home/.copilot/agents/docs-writer.agent.md new file mode 100644 index 0000000..b08b494 --- /dev/null +++ b/home/.copilot/agents/docs-writer.agent.md @@ -0,0 +1,14 @@ +--- +name: docs-writer +description: "Technical documentation writer for READMEs, changelogs, and API docs" +tools: [read, search, grep, glob, bash] +--- +You are a technical documentation specialist. You write clear, accurate documentation by reading the actual codebase. + +## Rules +- Always read the code before writing docs — never guess at behavior +- Use concrete code examples, not abstract descriptions +- Keep language direct and scannable — use headers, tables, and bullet points +- For changelogs, follow Keep a Changelog format (Added, Changed, Deprecated, Removed, Fixed, Security) +- For API docs, document every public function/method with: purpose, parameters, return type, errors, and a usage example +- If existing docs exist, preserve their structure and update incrementally diff --git a/home/.copilot/agents/refactor.agent.md b/home/.copilot/agents/refactor.agent.md new file mode 100644 index 0000000..3b8c55b --- /dev/null +++ b/home/.copilot/agents/refactor.agent.md @@ -0,0 +1,16 @@ +--- +name: refactor +description: "Large-scale refactoring specialist with safety-first approach" +tools: [read, search, grep, glob, edit, lsp, bash] +--- +You are a refactoring specialist. You make structural improvements to code while preserving exact behavior. + +## Rules +- Before any refactoring, understand the existing behavior by reading tests and call sites +- Use LSP (go-to-definition, find-references, rename) for precise refactoring — never guess at symbol usage +- Make changes incrementally: one logical change per commit +- After each change, verify: run existing tests, check that the build passes +- If no tests exist for the code being refactored, write them FIRST before refactoring +- Explain the rationale for each structural change +- Common refactors: extract function/method, inline, rename, move, split file, reduce coupling, simplify conditionals +- Never change public API signatures without flagging it as a breaking change diff --git a/home/.copilot/config.json b/home/.copilot/config.json new file mode 100644 index 0000000..b056167 --- /dev/null +++ b/home/.copilot/config.json @@ -0,0 +1,10 @@ +{ + "banner": "never", + "model": "claude-opus-4.6", + "effortLevel": 100, + "experimental": true, + "includeCoAuthoredBy": false, + "firstLaunchAt": "2026-03-11T00:00:00.000Z", + "trusted_folders": [ + ] +} diff --git a/home/.copilot/copilot-instructions.md b/home/.copilot/copilot-instructions.md new file mode 100644 index 0000000..3b72650 --- /dev/null +++ b/home/.copilot/copilot-instructions.md @@ -0,0 +1,42 @@ +# Global Copilot Instructions + +## About me +- I prefer concise, no-fluff responses — skip obvious explanations +- I value correctness over speed — take time to get it right + +## Engineering standards + +Act as a senior software engineer. Take time to choose the right design patterns and abstractions before writing code. Follow core principles: DRY, SOLID, KISS, YAGNI, separation of concerns, composition over inheritance. + +Always practice TDD with the Red-Green-Refactor cycle: +1. Write a failing test first (Red) +2. Write the minimum code to make it pass (Green) +3. Refactor while keeping tests green (Refactor) + +Test coverage must be maintained or improved, never reduced. If modifying code that lacks tests, add tests for the existing behavior before changing it. + +## Code style +- Always use type hints in Python +- Follow LLVM coding style for C/C++ + +## Workflow preferences +- When navigating code, prefer LSP tools (goToDefinition, findReferences, hover, incomingCalls) over grep/glob whenever you know the symbol name and location. Use grep only for broad text search or when LSP isn't available for the file type. +- Prefer parallel execution when safe +- Show diffs before committing +- After editing code files, ALWAYS run the appropriate formatter (ruff format, prettier, stylua, clang-format, rustfmt, etc.) BEFORE running quality checks (linters, builds, tests). Never waste a quality gate run on unformatted code. +- Run linters and tests before suggesting code is complete +- Use git conventional commits (feat:, fix:, chore:, docs:, refactor:, test:) +- Make regular, atomic, small commits — each commit addresses a single concern and passes all linters and tests +- Never leave the codebase in a broken state between commits + +## Writing style + +When writing external documentation, prose, guides, blogs, emails, cover letters, or any human-facing text: write like a human, not an AI. Avoid AI tells: no dashes for lists, no long bullet point walls, no overly descriptive or repetitive language, no stating the obvious. Use flowing written prose with natural paragraph structure. + +When I ask for a plaintext document (cover letter, email, message draft, reply), use absolutely NO markdown formatting. No headers, no bold, no backticks, no bullet points. Plain text only. + +## Communication +- When explaining trade-offs, use tables +- When there are multiple approaches, recommend the best one and explain why +- Don't ask for permission to proceed on obvious next steps +- If something is broken, fix it — don't just describe the problem diff --git a/home/.copilot/lsp-config.json b/home/.copilot/lsp-config.json new file mode 100644 index 0000000..7a89a23 --- /dev/null +++ b/home/.copilot/lsp-config.json @@ -0,0 +1,153 @@ +{ + "lspServers": { + "typescript": { + "command": "~/.local/share/nvim/mason/bin/typescript-language-server", + "args": ["--stdio"], + "fileExtensions": { + ".ts": "typescript", + ".tsx": "typescriptreact", + ".js": "javascript", + ".jsx": "javascriptreact", + ".mjs": "javascript", + ".cjs": "javascript" + } + }, + "basedpyright": { + "command": "~/.local/share/nvim/mason/bin/basedpyright-langserver", + "args": ["--stdio"], + "fileExtensions": { + ".py": "python", + ".pyi": "python" + } + }, + "rust-analyzer": { + "command": "~/.local/share/nvim/mason/bin/rust-analyzer", + "args": [], + "fileExtensions": { + ".rs": "rust" + } + }, + "clangd": { + "command": "~/.local/share/nvim/mason/bin/clangd", + "args": ["--background-index"], + "fileExtensions": { + ".c": "c", + ".h": "c", + ".cpp": "cpp", + ".cxx": "cpp", + ".cc": "cpp", + ".hpp": "cpp", + ".hxx": "cpp" + } + }, + "lua": { + "command": "~/.local/share/nvim/mason/bin/lua-language-server", + "args": [], + "fileExtensions": { + ".lua": "lua" + } + }, + "bash": { + "command": "~/.local/share/nvim/mason/bin/bash-language-server", + "args": ["start"], + "fileExtensions": { + ".sh": "shellscript", + ".bash": "shellscript", + ".zsh": "shellscript" + } + }, + "docker": { + "command": "~/.local/share/nvim/mason/bin/docker-langserver", + "args": ["--stdio"], + "fileExtensions": { + "Dockerfile": "dockerfile" + } + }, + "css": { + "command": "~/.local/share/nvim/mason/bin/vscode-css-language-server", + "args": ["--stdio"], + "fileExtensions": { + ".css": "css", + ".scss": "scss", + ".less": "less" + } + }, + "html": { + "command": "~/.local/share/nvim/mason/bin/vscode-html-language-server", + "args": ["--stdio"], + "fileExtensions": { + ".html": "html", + ".htm": "html" + } + }, + "cmake": { + "command": "~/.local/share/nvim/mason/bin/neocmakelsp", + "args": ["--stdio"], + "fileExtensions": { + ".cmake": "cmake", + "CMakeLists.txt": "cmake" + } + }, + "nginx": { + "command": "~/.local/share/nvim/mason/bin/nginx-language-server", + "args": [], + "fileExtensions": { + ".conf": "nginx" + } + }, + "groovy": { + "command": "~/.local/share/nvim/mason/bin/groovy-language-server", + "args": [], + "fileExtensions": { + ".groovy": "groovy", + ".gradle": "groovy", + "Jenkinsfile": "groovy" + } + }, + "autotools": { + "command": "~/.local/share/nvim/mason/bin/autotools-language-server", + "args": [], + "fileExtensions": { + ".am": "makefile", + ".ac": "autoconf", + "Makefile.am": "makefile", + "configure.ac": "autoconf" + } + }, + "systemd": { + "command": "~/.local/share/nvim/mason/bin/systemd-lsp", + "args": [], + "fileExtensions": { + ".service": "systemd", + ".timer": "systemd", + ".socket": "systemd", + ".mount": "systemd" + } + }, + "just": { + "command": "~/.local/share/nvim/mason/bin/just-lsp", + "args": [], + "fileExtensions": { + "justfile": "just", + "Justfile": "just", + ".justfile": "just" + } + }, + "yaml": { + "command": "~/.local/share/nvim/mason/bin/yaml-language-server", + "args": ["--stdio"], + "fileExtensions": { + ".yaml": "yaml", + ".yml": "yaml" + } + }, + "json": { + "command": "~/.local/share/nvim/mason/bin/vscode-json-language-server", + "args": ["--stdio"], + "fileExtensions": { + ".json": "json", + ".jsonc": "jsonc" + } + } + } +} diff --git a/home/.copilot/mcp-config.json b/home/.copilot/mcp-config.json new file mode 100644 index 0000000..a1fc17f --- /dev/null +++ b/home/.copilot/mcp-config.json @@ -0,0 +1,24 @@ +{ + "mcpServers": { + "context7": { + "command": "npx", + "args": ["-y", "@upstash/context7-mcp@latest"] + }, + "sequential-thinking": { + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] + }, + "playwright": { + "command": "npx", + "args": ["-y", "@playwright/mcp@latest"] + }, + "firecrawl": { + "command": "npx", + "args": ["-y", "firecrawl-mcp"] + }, + "sentry": { + "command": "npx", + "args": ["@sentry/mcp-server@latest"] + } + } +} |
