Commit cab3b4ceda40

Vincent Demeester <vincent@sbr.pm>
2026-04-15 16:11:22
chore: clean up AI skills and wire orphaned subagents
Audited 41 skills, 17 subagents, and 29 extensions. Removed "pull requests" from Git skill description to avoid routing confusion with GitHub skill and added cross-references. Moved file-links formatting rule into CORE skill. Added oracle as architecture focus area in CodeReview and wired /oracle and /research slash commands for previously orphaned subagents. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent adf2d6c
Changed files (5)
dots
config
claude
skills
pi
agent
dots/config/claude/skills/CodeReview/SKILL.md
@@ -15,6 +15,7 @@ Orchestrates code reviews with specialized focus areas using subagent-based revi
 | **security** | `reviewer-security` | OWASP, injection, auth, secrets, untrusted input |
 | **performance** | `reviewer-performance` | Complexity, allocations, caching, concurrency |
 | **nix** | `reviewer-nix` | Nix idioms, module patterns, eval cost, reproducibility |
+| **architecture** | `oracle` | Code structure, dependencies, trade-offs, design patterns |
 | **full** | all of the above | Parallel execution of all focus areas |
 
 ## Workflow Routing
dots/config/claude/skills/CORE/SKILL.md
@@ -99,6 +99,10 @@ Explicit permission to:
 - **Markdown > XML:** NEVER use XML-style tags in prompts. Use markdown headers instead.
 - **Analysis vs Action:** If asked to analyze, do analysis only - don't change things unless asked
 
+## Formatting Rules
+
+- **File references as links:** When referencing files, format as markdown links: `[filename.el:42](relative/path/to/filename.el#L42)`. Use `#L42-L50` for ranges. Paths relative to project root.
+
 ## File Organization
 
 - **Scratchpad** (`~/.config/claude/scratchpad/`) - Temporary files only. Delete when done.
@@ -110,6 +114,14 @@ Explicit permission to:
 - Never create `backups/` directories inside skills
 - Never use `.bak` suffixes
 
+**Saving to AI Storage (on demand):**
+When the user asks to save, remember, or document work (keywords: "save this", "ai storage", "save session", "save learning"), write to `~/.local/share/ai/` — **NOT** to Claude's memory system (`~/.claude/projects/.../memory/`). Follow the templates in `history-system.md`. Quick rules:
+- **Session**: `~/.local/share/ai/sessions/YYYY-MM/YYYY-MM-DD-description.md`
+- **Learning**: `~/.local/share/ai/learnings/YYYY-MM/YYYY-MM-DD-description.md`
+- **Research**: `~/.local/share/ai/research/YYYY-MM/YYYY-MM-DD-description.md`
+- Use `**Tool:** claude-code` (not `claude` or `pi`)
+- Match the format of recent entries written by Pi — read one first if unsure
+
 ## Security Protocols
 
 **Quick Security Checklist:**
dots/config/claude/skills/Git/SKILL.md
@@ -1,6 +1,6 @@
 ---
 name: Git
-description: Git version control best practices and workflows. USE WHEN working with git commands, commits, branches, pull requests, rebasing, or version control operations.
+description: Git version control best practices and workflows. USE WHEN working with git commands, commits, branches, rebasing, or version control operations. For GitHub PR management, see the GitHub skill.
 ---
 
 # Git Best Practices
@@ -36,6 +36,11 @@ When the user's request matches specific Git operations, route to the appropriat
 - For general git advice or commit creation, continue with this main skill
 - For advanced operations, refer to `Advanced.md`
 
+## Related Skills
+
+- **GitHub**: For PR management, CI checks, reviews, and issue operations
+- **UsingGitWorktrees**: For creating isolated worktrees
+
 ## Commit Message Philosophy
 
 **Focus on WHY, not WHAT**
dots/config/claude/skills/Journal/README.md
@@ -0,0 +1,5 @@
+# Journal
+
+This directory contains compiled Emacs Lisp tools (`.elc`) used by the journelly Emacs package for journal operations. These are Emacs-side integrations, not pi skills.
+
+The tools are invoked by Emacs, not by pi directly.
dots/pi/agent/extensions/subagent-commands.ts
@@ -84,6 +84,34 @@ export default function (pi: ExtensionAPI) {
 		},
 	});
 
+	// /oracle - Deep analysis and debugging
+	pi.registerCommand("oracle", {
+		description: "Deep analysis, debugging, and architecture investigation with oracle agent",
+		handler: async (args, ctx) => {
+			if (!args.trim()) {
+				ctx.ui.notify("Usage: /oracle <question or problem>", "error");
+				return;
+			}
+
+			ctx.ui.notify("Dispatching oracle agent...", "info");
+			pi.sendUserMessage(`Use the subagent tool to run the oracle agent with this task: ${args}`);
+		},
+	});
+
+	// /research - Technical research with web search
+	pi.registerCommand("research", {
+		description: "Technical research with web search, GitHub, and Stack Overflow via researcher agent",
+		handler: async (args, ctx) => {
+			if (!args.trim()) {
+				ctx.ui.notify("Usage: /research <topic or question>", "error");
+				return;
+			}
+
+			ctx.ui.notify("Dispatching researcher agent...", "info");
+			pi.sendUserMessage(`Use the subagent tool to run the researcher agent with this task: ${args}`);
+		},
+	});
+
 	// /subagent-help - Show available agents
 	pi.registerCommand("subagent-help", {
 		description: "Show available subagents and usage",
@@ -97,6 +125,8 @@ export default function (pi: ExtensionAPI) {
 - \`/implement <query>\` - Full workflow: scout → planner → worker
 - \`/scout-and-plan <query>\` - Planning only: scout → planner
 - \`/review-code <query>\` - Code review: scout → reviewer
+- \`/oracle <query>\` - Deep analysis, debugging, architecture investigation
+- \`/research <query>\` - Technical research with web search
 
 ## Available Agents
 
@@ -104,6 +134,8 @@ export default function (pi: ExtensionAPI) {
 - **planner** (Sonnet) - Creates implementation plans
 - **reviewer** (Sonnet) - Code review
 - **worker** (Sonnet) - General purpose, full capabilities
+- **oracle** (Opus) - Deep analysis, debugging, architecture decisions
+- **researcher** (Sonnet) - Technical research with web/GitHub/SO search
 
 ## Direct Tool Usage