← Back to task

Commit f50d2348

commit f50d2348903d84043619af7a4e7c6bcd171ce789
Author: Ben Sima <ben@bensima.com>
Date:   Thu Jan 1 16:26:32 2026

    Reorganize skills: move to namespaces, add index to AGENTS.md
    
    Skills now live next to the code they relate to:
    - Omni/Agent/Research.md (from Skills/shared/research)
    - Omni/Agent/WebResearch.md (from Skills/shared/web-research)
    - Omni/Agent/DataExtraction.md (from Skills/shared/data-extraction)
    - Omni/Agent/SkillCreator.md (from Skills/shared/skill-creator)
    - Omni/Agent/TraceAnalysis.md (from Skills/ben/trace-analysis)
    - Biz/PodcastItLater/Analytics.md (from Skills/ben/goatcounter)
    
    Deleted obsolete skills:
    - deploy-qa (replaced by Omni/Deploy/Skill.md)
    - omni-shell (wrong abstraction)
    - prospect-finder (absorbed into PIL Growth)
    - code-review, coder, reviewer, git-workflow, bild (replaced by new versions)
    
    Added skill index to AGENTS.md so agents know what's available.
    
    Removes Omni/Agent/Skills/ directory entirely.
    
    Task-Id: t-332

diff --git a/AGENTS.md b/AGENTS.md
index d4b5cf74..08e93f3a 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -183,3 +183,44 @@ tmux send-keys -t "%13" "command" "Enter"
 - **Project Context**: [README.md](README.md) - Goals, source layout, and coding conventions.
 - **Build Tool (Bild)**: [`Omni/Bild/README.md`](Omni/Bild/README.md) - How to use `bild` and manage dependencies.
 - **Development Tools**: [`Omni/Ide/README.md`](Omni/Ide/README.md) - `run.sh`, `lint`, `repl.sh`, git workflow.
+
+## Skills
+
+You have access to specialized skills. Each skill contains detailed instructions for specific tasks. Load them by reading the file with `read_file`.
+
+### Development
+
+| Skill | Path | When to use |
+|-------|------|-------------|
+| Coder | `Omni/Ide/Coder.md` | Implementing code changes |
+| Reviewer | `Omni/Ide/Reviewer.md` | Reviewing diffs/PRs |
+| Git | `Omni/Ide/Git.md` | Commits, branches, git-branchless |
+| Build | `Omni/Bild/Skill.md` | Building, dependencies, fixing build errors |
+| Debug | `Omni/Ide/Debug.md` | Tracing errors, reading logs |
+| Test | `Omni/Ide/Test.md` | Writing and running tests |
+| Deploy | `Omni/Deploy/Skill.md` | Deploying services |
+| Feature | `Omni/Ide/Feature.md` | End-to-end feature development |
+
+### Research
+
+| Skill | Path | When to use |
+|-------|------|-------------|
+| Research | `Omni/Agent/Research.md` | Deep research, multiple sources |
+| Web Research | `Omni/Agent/WebResearch.md` | Quick web lookups |
+| Data Extraction | `Omni/Agent/DataExtraction.md` | Structured data from pages/docs |
+
+### Agent
+
+| Skill | Path | When to use |
+|-------|------|-------------|
+| Skill Creator | `Omni/Agent/SkillCreator.md` | Creating new skills |
+| Trace Analysis | `Omni/Agent/TraceAnalysis.md` | Debugging agent runs |
+
+### Products
+
+| Skill | Path | When to use |
+|-------|------|-------------|
+| PIL Growth | `Biz/PodcastItLater/Growth.md` | Daily PIL marketing ops |
+| PIL Analytics | `Biz/PodcastItLater/Analytics.md` | PIL traffic analysis |
+
+To use a skill, read it with `read_file` and follow its instructions.
diff --git a/Omni/Agent/Skills/ben/goatcounter/SKILL.md b/Biz/PodcastItLater/Analytics.md
similarity index 89%
rename from Omni/Agent/Skills/ben/goatcounter/SKILL.md
rename to Biz/PodcastItLater/Analytics.md
index 18b2ffcd..609cd3f0 100644
--- a/Omni/Agent/Skills/ben/goatcounter/SKILL.md
+++ b/Biz/PodcastItLater/Analytics.md
@@ -1,7 +1,3 @@
----
-name: goatcounter
-description: Query GoatCounter analytics for podcastitlater. Use when asked about PIL traffic, user stats, pageviews, or analytics data.
----
 
 # GoatCounter Analytics
 
diff --git a/Omni/Agent/Skills/shared/data-extraction/SKILL.md b/Omni/Agent/DataExtraction.md
similarity index 85%
rename from Omni/Agent/Skills/shared/data-extraction/SKILL.md
rename to Omni/Agent/DataExtraction.md
index 39a9f83c..a471af57 100644
--- a/Omni/Agent/Skills/shared/data-extraction/SKILL.md
+++ b/Omni/Agent/DataExtraction.md
@@ -1,7 +1,3 @@
----
-name: data-extraction
-description: Extract structured data from web pages or documents. Use when you need to pull specific information into a structured format.
----
 
 # Data Extraction
 
diff --git a/Omni/Agent/Skills/shared/research/SKILL.md b/Omni/Agent/Research.md
similarity index 92%
rename from Omni/Agent/Skills/shared/research/SKILL.md
rename to Omni/Agent/Research.md
index cfd65299..9b50d39b 100644
--- a/Omni/Agent/Skills/shared/research/SKILL.md
+++ b/Omni/Agent/Research.md
@@ -1,7 +1,3 @@
----
-name: research
-description: Deep research on a topic combining web sources and local knowledge. Use for thorough investigation requiring multiple sources.
----
 
 # Research
 
diff --git a/Omni/Agent/Skills/shared/skill-creator/SKILL.md b/Omni/Agent/SkillCreator.md
similarity index 88%
rename from Omni/Agent/Skills/shared/skill-creator/SKILL.md
rename to Omni/Agent/SkillCreator.md
index ff0a2018..4d82e565 100644
--- a/Omni/Agent/Skills/shared/skill-creator/SKILL.md
+++ b/Omni/Agent/SkillCreator.md
@@ -1,7 +1,3 @@
----
-name: skill-creator
-description: Create new skills for ava. Use when asked to create a skill, build an automation, make a new workflow, or teach ava how to do something. This skill guides you through creating well-structured, reusable skills.
----
 
 # Skill Creator
 
@@ -65,10 +61,6 @@ The SKILL.md file has two parts:
 #### Frontmatter (YAML)
 
 ```yaml
----
-name: skill-name
-description: Clear description of what this skill does and when to use it. Include trigger phrases and contexts.
----
 ```
 
 The description is critical - it's how ava decides when to load this skill. Include:
@@ -167,10 +159,6 @@ followup-emails/
 
 **SKILL.md:**
 ```markdown
----
-name: followup-emails
-description: Compose and schedule follow-up emails. Use when asked to follow up with someone, send a reminder email, or check in on a conversation.
----
 
 # Follow-up Emails
 
diff --git a/Omni/Agent/Skills/ben/goatcounter/references/.gitkeep b/Omni/Agent/Skills/ben/goatcounter/references/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/ben/goatcounter/scripts/.gitkeep b/Omni/Agent/Skills/ben/goatcounter/scripts/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/ben/omni-shell/SKILL.md b/Omni/Agent/Skills/ben/omni-shell/SKILL.md
deleted file mode 100644
index bddfe6b2..00000000
--- a/Omni/Agent/Skills/ben/omni-shell/SKILL.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-name: omni-shell
-description: Execute shell commands in the omnirepo with direnv context loaded. Use when running omni dev commands like bild, git-branchless, nix tools, or tests that need the full dev environment.
----
-
-# Omni Shell Execution
-
-Execute commands in the omnirepo with the full direnv development environment loaded.
-
-## Usage
-
-Use this skill when you need to:
-- Run `bild` commands
-- Use `git-branchless` (e.g., `git sync`, `git move`)
-- Execute tests in the proper environment
-- Run any command that depends on the omnirepo's nix devshell
-
-## How It Works
-
-The script ensures:
-1. Working directory is `/home/ava/omni`
-2. Direnv environment is fully loaded
-3. Commands have access to all dev dependencies
-
-## Script
-
-Use `scripts/run.sh` to execute commands:
-
-```bash
-/home/ava/skills/ben/omni-shell/scripts/run.sh "<your command>"
-```
-
-The script will return the command's stdout, stderr, and exit code.
-
-## Examples
-
-```bash
-# Run tests
-/home/ava/skills/ben/omni-shell/scripts/run.sh "bild --test Omni/Test/Whatever.hs"
-
-# Git branchless operations
-/home/ava/skills/ben/omni-shell/scripts/run.sh "git sync"
-
-# Check what's in PATH
-/home/ava/skills/ben/omni-shell/scripts/run.sh "echo \$PATH"
-```
diff --git a/Omni/Agent/Skills/ben/omni-shell/references/.gitkeep b/Omni/Agent/Skills/ben/omni-shell/references/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/ben/omni-shell/scripts/.gitkeep b/Omni/Agent/Skills/ben/omni-shell/scripts/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/ben/omni-shell/scripts/run.sh b/Omni/Agent/Skills/ben/omni-shell/scripts/run.sh
deleted file mode 100755
index aa742e28..00000000
--- a/Omni/Agent/Skills/ben/omni-shell/scripts/run.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-# Execute a command in the omnirepo with direnv loaded
-
-set -euo pipefail
-
-cd /home/ava/omni
-
-# Load direnv and execute the command
-direnv exec . bash -c "$1"
diff --git a/Omni/Agent/Skills/ben/prospect-finder/SKILL.md b/Omni/Agent/Skills/ben/prospect-finder/SKILL.md
deleted file mode 100644
index fe933230..00000000
--- a/Omni/Agent/Skills/ben/prospect-finder/SKILL.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-name: prospect-finder
-description: Find potential customers for outreach by searching reddit, twitter, HN, and other communities for people mentioning relevant pain points. Use when asked to find prospects, identify leads, research customer segments, or find people to interview.
----
-
-# Prospect Finder
-
-Find potential customers by identifying people discussing relevant pain points in online communities.
-
-## Workflow
-
-1. **Define Search Parameters**
-   - Target pain points (keywords, phrases)
-   - Communities to search (subreddits, twitter hashtags, forums)
-   - Timeframe (last week, month, etc)
-
-2. **Search Communities**
-   - Reddit: Use pushshift/reddit API to search comments/posts
-   - Twitter: Search for keywords + complaints/frustrations
-   - HackerNews: Search via Algolia API
-   - Forums: Direct scraping where applicable
-
-3. **Extract Prospect Data**
-   For each match, collect:
-   - Username/handle
-   - What they said (quote the pain point)
-   - Where (subreddit, tweet URL, etc)
-   - When (date posted)
-   - Context (thread title, surrounding discussion)
-
-4. **Score & Prioritize**
-   Higher priority if:
-   - Recent (< 2 weeks old)
-   - Specific pain point mentioned
-   - Currently using a workaround
-   - Multiple mentions of same problem
-   - Active user (not one-off complaint)
-
-5. **Output Structured List**
-   Return prospects as structured data:
-   ```
-   {
-     "username": "...",
-     "platform": "reddit|twitter|hn",
-     "pain_quote": "exact quote showing pain point",
-     "url": "link to post/comment",
-     "posted_date": "YYYY-MM-DD",
-     "context": "thread title / surrounding convo",
-     "priority_score": 1-10
-   }
-   ```
-
-## Search Strategies by Platform
-
-### Reddit
-- Use pushshift API or reddit API
-- Search in: r/productivity, r/podcasts, r/selfimprovement, r/getdisciplined
-- Keywords: "reading backlog", "save for later", "no time to read", "too many articles", "pocket", "instapaper"
-- Look for: posts asking for solutions, comments describing workarounds
-
-### Twitter
-- Search API with queries like: "reading list" OR "save for later" + ("too many" OR "overwhelming" OR "backlog")
-- Filter for: questions, complaints, "anyone know of..."
-- Exclude: promotional tweets, bots
-
-### HackerNews
-- Use Algolia HN API: https://hn.algolia.com/api
-- Search comments for pain point keywords
-- Look in: "Ask HN", "Show HN" threads
-- High-value: people actively discussing productivity/reading
-
-### ProductHunt
-- Search comments on related products (Pocket, Instapaper, Matter)
-- Look for: feature requests, complaints, "I wish it had..."
-
-## Example Queries
-
-For PodcastItLater prospects:
-
-**Reddit:**
-```
-subreddit:productivity OR subreddit:podcasts 
-("reading list" OR "save for later" OR "read it later") 
-AND ("too many" OR "overwhelming" OR "never get to")
-```
-
-**Twitter:**
-```
-("my reading list" OR "saved articles") 
-(overwhelming OR "too many" OR backlog OR "never read")
--is:retweet
-```
-
-**HN:**
-```
-"reading list" OR "save for later" OR pocket OR instapaper
-date_range:past_month
-```
-
-## Automation with Subagents
-
-This skill is PERFECT for subagent automation:
-
-1. Spawn a subagent with search parameters
-2. Subagent scrapes communities over several hours/days
-3. Subagent returns when it hits prospect threshold (e.g., 20 prospects)
-4. You review prospects and approve for outreach
-
-Subagent spec:
-- Model: haiku (cheap, straightforward task)
-- Tools: http_get, python_exec, web_search
-- Memory: write access (track what's been searched)
-- Termination: after 50 prospects found OR 24 hours elapsed
-
-## Output to User
-
-Present prospects in priority order:
-
-```
-Found 15 prospects for [pain point]:
-
-🔥 HIGH PRIORITY (posted < 1 week, specific pain)
-1. u/username on r/productivity (Dec 10)
-   "I have 200+ articles in Pocket I'll never read..."
-   [link]
-
-2. @handle on Twitter (Dec 12)
-   "Why do I save articles I never actually read?"
-   [link]
-
-📌 MEDIUM PRIORITY (older or less specific)
-...
-```
-
-Suggest next step: "Want me to draft outreach messages for the high-priority prospects?"
-
-## Scripts
-
-### scripts/search_reddit.py
-Search reddit via API for pain point keywords.
-
-### scripts/search_hn.py
-Search HackerNews via Algolia API.
-
-### scripts/score_prospects.py
-Apply scoring logic to raw prospect data.
diff --git a/Omni/Agent/Skills/ben/prospect-finder/references/.gitkeep b/Omni/Agent/Skills/ben/prospect-finder/references/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/ben/prospect-finder/scripts/.gitkeep b/Omni/Agent/Skills/ben/prospect-finder/scripts/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Omni/Agent/Skills/shared/bild/SKILL.md b/Omni/Agent/Skills/shared/bild/SKILL.md
deleted file mode 100644
index 5e540d75..00000000
--- a/Omni/Agent/Skills/shared/bild/SKILL.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-name: bild
-description: Build tool usage and dependency management. Use when building, adding dependencies, or fixing build errors.
----
-
-# Bild
-
-`bild` is the universal build tool. It builds and tests everything in the repo.
-
-## Common Commands
-
-```bash
-bild Omni/Task.hs           # Build a namespace
-bild --test Omni/Task.hs    # Build and run tests
-bild --plan Omni/Task.hs    # Analyze without building
-```
-
-Output goes to `_/bin/`:
-```bash
-bild Omni/Task.hs
-_/bin/task --help
-```
-
-## Adding Dependencies
-
-### Python (in nixpkgs)
-Just add the dep comment:
-```python
-# : dep requests
-import requests
-```
-
-### Haskell (in nixpkgs)
-Add to `Omni/Bild/Deps/Haskell.nix` whitelist:
-```nix
-[
-  "aeson"
-  "your-package"  # alphabetically
-]
-```
-
-### Not in nixpkgs
-1. `deps add owner/repo -n package-name`
-2. Set `"auto-override": false` in Sources.json
-3. Create derivation in `Omni/Bild/Deps/`
-
-## Common Errors
-
-### "attribute 'foo' missing"
-The Haskell package isn't whitelisted. Add it to `Omni/Bild/Deps/Haskell.nix`.
-
-### Python import not found
-Check package name: `nix-env -qaP -A nixpkgs.python312Packages | grep <name>`
-
-### Timeout during build
-Use `bild --time 0 <namespace>` for no timeout.
-
-## Lint and Type Check
-
-```bash
-lint Omni/Task.hs              # Lint
-lint --fix Omni/Task.py        # Lint and auto-fix
-typecheck.sh Omni/Example.py   # Type check Python
-```
-
-## Notes
-
-- Alpha (custom prelude) uses `+>` instead of `>>=`, `<|` instead of `$`
-- Import pattern: `import qualified X as Y` only (no `from X import Y`)
-- If you have `Foo.hs` and `Foo/` directory, rename to `Foo/Core.hs`
diff --git a/Omni/Agent/Skills/shared/code-review/SKILL.md b/Omni/Agent/Skills/shared/code-review/SKILL.md
deleted file mode 100644
index 8847d6a2..00000000
--- a/Omni/Agent/Skills/shared/code-review/SKILL.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-name: code-review
-description: Review code changes for quality, correctness, and conventions. Use when asked to review a PR, diff, or code changes.
----
-
-# Code Review
-
-<role:reviewer>
-Review the code with focus on:
-
-1. **Correctness**: Does it do what it's supposed to?
-2. **Testing**: Are there tests? Do they cover edge cases?
-3. **Conventions**: Does it follow project patterns?
-4. **Security**: Any obvious vulnerabilities?
-5. **Performance**: Any obvious inefficiencies?
-
-Use `search_codebase` to understand existing patterns.
-Use `run_bash` to run tests if needed.
-
-Provide specific, actionable feedback with file:line references.
-</role>
-
-## Review Format
-
-```
-## Summary
-[One sentence overall assessment]
-
-## Issues
-
-### [Critical/Major/Minor]: [Title]
-File: path/to/file.hs:42
-```haskell
-[problematic code]
-```
-Suggestion: [How to fix]
-
-## Good Things
-- [What's done well]
-
-## Verdict
-APPROVE / REQUEST_CHANGES / REJECT
-```
diff --git a/Omni/Agent/Skills/shared/coder/SKILL.md b/Omni/Agent/Skills/shared/coder/SKILL.md
deleted file mode 100644
index 371c448c..00000000
--- a/Omni/Agent/Skills/shared/coder/SKILL.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-name: coder
-description: Implement code changes for a task. Use when given a task to implement, bug to fix, or feature to build.
----
-
-# Coder
-
-<role:engineer>
-You are implementing a coding task. Focus on correctness and simplicity.
-</role>
-
-## Process
-
-1. **Understand** - Read the task requirements carefully
-2. **Explore** - Use `read_file` and `bash` to understand existing code
-3. **Plan** - Identify what files need to change
-4. **Implement** - Make minimal, focused changes
-5. **Verify** - Run `bild <namespace>` to confirm compilation
-6. **Fix** - If build fails, fix errors and re-verify
-
-## Guidelines
-
-- Make the smallest change that solves the problem
-- Follow existing code patterns and conventions
-- Don't refactor unrelated code
-- Don't add features not requested
-- Always verify compilation before finishing
-
-## Verification
-
-You MUST run:
-```bash
-bild <namespace>
-```
-
-If it fails, fix the errors. Do not declare success until it compiles.
-
-For Haskell code, also run tests:
-```bash
-bild --test <namespace>
-```
-
-## Output
-
-When done, summarize:
-- What files were changed
-- What the changes do
-- Any concerns or follow-up work needed
-
-Do NOT commit changes - that is handled by the reviewer.
diff --git a/Omni/Agent/Skills/shared/deploy-qa/SKILL.md b/Omni/Agent/Skills/shared/deploy-qa/SKILL.md
deleted file mode 100644
index 26dc868b..00000000
--- a/Omni/Agent/Skills/shared/deploy-qa/SKILL.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-name: deploy-qa
-description: Deploy Ava and verify the deployment is working correctly
----
-
-# Deploy and QA Skill
-
-Use this skill to deploy Ava and verify the deployment is healthy.
-
-## When to Use
-
-- After making changes to Ava or her dependencies
-- Periodically during development sessions to catch regressions
-- Before marking major tasks as complete
-
-## Deployment Steps
-
-### 1. Sync the ava worktree
-
-```bash
-cd /home/ben/omni/ava && git fetch shared && git merge shared/live --no-edit --no-gpg-sign
-```
-
-### 2. Build and deploy
-
-```bash
-cd /home/ben/omni/ava && ./Omni/Ide/ship.sh Omni/Ava.hs
-```
-
-This will:
-- Build Ava with nix
-- Sign and push to cache
-- Update the S3 manifest
-- The deployer daemon will pick up changes within 5 minutes
-
-### 3. Wait for deployment
-
-The deployer polls every 5 minutes. After ship.sh succeeds, the new version is in the S3 manifest and will be picked up automatically.
-
-**Note:** SSH access to the server may not be available from all environments. The deployment is push-based via S3 manifest.
-
-## QA Verification
-
-### Functional Tests
-
-After waiting 5 minutes for deployment, ask the user to verify via Telegram:
-
-1. **Basic response:** Send a simple message to Ava and confirm she responds
-2. **Tool check:** Try a tool like `list_skills` or `task_stats`  
-3. **Feature-specific:** If specific features were changed, test those
-
-### What to Report
-
-Tell the user:
-- What was deployed (commit or feature summary)
-- Ask them to send a test message to Ava via Telegram
-- Ask them to confirm the response looks correct
-
-### Common Issues
-
-1. **No response to messages** - Deployment may still be in progress, wait a few more minutes
-2. **Tool errors** - Check if the tool was properly exported/registered
-3. **Parse errors** - May indicate a problem with changed code paths
-
-## Quick Deploy Command
-
-For a quick deploy without full QA:
-
-```bash
-cd /home/ben/omni/ava && git fetch shared && git merge shared/live --no-edit --no-gpg-sign && ./Omni/Ide/ship.sh Omni/Ava.hs
-```
-
-## Notes
-
-- Deployer runs on ava.dev.mccarthy.codes
-- Service file is at `/run/systemd/system/ava.service`
-- Ava's state (memory, todos) is in `/var/lib/ava/`
diff --git a/Omni/Agent/Skills/shared/feature-development/SKILL.md b/Omni/Agent/Skills/shared/feature-development/SKILL.md
deleted file mode 100644
index 25210e06..00000000
--- a/Omni/Agent/Skills/shared/feature-development/SKILL.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-name: feature-development
-description: End-to-end process for developing a product feature. Use when working on a task that involves building something user-facing, adding a new capability, or implementing a feature request.
----
-
-# Feature Development
-
-This process ensures features are well-specified, user-friendly, and correctly implemented by applying three perspectives sequentially.
-
-## Step 1: Clarify Requirements
-
-<role:product>
-Analyze the task. Before any implementation:
-
-1. What problem does this solve? Who benefits?
-2. What's the minimum viable solution?
-3. What are the acceptance criteria? (How do we know it's done?)
-4. What should we explicitly NOT do? (Scope boundaries)
-
-Record your analysis:
-`task comment <task-id> --role=product "<your spec>"`
-
-If requirements are unclear, ask the user before proceeding.
-</role>
-
-## Step 2: Design Review
-
-<role:designer>
-Consider the user experience:
-
-1. How will users discover and use this feature?
-2. What happens when things go wrong? (Error states)
-3. Are there accessibility concerns?
-4. What edge cases might users encounter?
-
-Record your notes:
-`task comment <task-id> --role=designer "<your notes>"`
-
-For UI changes, describe the expected interaction flow.
-</role>
-
-## Step 3: Implement
-
-<role:engineer>
-Now implement the solution:
-
-1. For substantial code changes, use `spawn_coder` with the appropriate namespace
-2. Write tests that verify the acceptance criteria
-3. Follow existing code conventions
-4. Keep changes focused - don't refactor unrelated code
-
-The implementation should satisfy both the product spec and design notes.
-</role>
-
-## Step 4: Review
-
-Re-read all role comments on this task:
-- Does the implementation satisfy the Product spec?
-- Does it address the Designer's UX concerns?
-- Do tests pass?
-
-If anything is missing, iterate on the relevant step.
-If everything checks out, mark the task done with a summary.
diff --git a/Omni/Agent/Skills/shared/git-workflow/SKILL.md b/Omni/Agent/Skills/shared/git-workflow/SKILL.md
deleted file mode 100644
index 3e639d99..00000000
--- a/Omni/Agent/Skills/shared/git-workflow/SKILL.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-name: git-workflow
-description: Git operations for the omnirepo using git-branchless. Use when committing, branching, or managing changes.
----
-
-# Git Workflow
-
-This repo uses **git-branchless** for a patch-based workflow.
-
-## Working Directory
-
-Always run git commands from your designated worktree (check `$CODEROOT` environment variable).
-Different agents/users have different worktrees - don't assume a path.
-
-## Key Commands
-
-### View commit graph
-```bash
-git smartlog
-```
-
-### Create a commit
-```bash
-git add -A
-git commit -m "Namespace: Short description" --no-verify --no-gpg-sign
-```
-
-### Amend current commit
-```bash
-git add -A
-git amend
-```
-
-### Move/restack commits
-```bash
-git move -s <source> -d <destination>
-git restack
-```
-
-## Commit Message Format
-
-```
-Namespace: Short description (max 72 chars)
-
-Longer explanation if needed. Explain why, not just what.
-
-Task-Id: t-123
-```
-
-Example:
-```
-Omni/Task: Add --namespace flag to create command
-
-Allows associating tasks with specific code namespaces for
-better organization and filtering.
-
-Task-Id: t-456
-```
-
-## Before Committing
-
-Always run:
-```bash
-bild --test <namespace>
-lint <file>
-```
-
-Fix all errors before committing.
-
-## What NOT to Do
-
-- ❌ `git push` without explicit user request
-- ❌ `git pull` without explicit user request  
-- ❌ Force pushes or destructive operations
-- ❌ Large commits mixing unrelated changes
-- ❌ Committing without running bild first
diff --git a/Omni/Agent/Skills/shared/reviewer/SKILL.md b/Omni/Agent/Skills/shared/reviewer/SKILL.md
deleted file mode 100644
index 68db545b..00000000
--- a/Omni/Agent/Skills/shared/reviewer/SKILL.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-name: reviewer
-description: Review code changes for correctness and quality. Use when evaluating a diff, PR, or uncommitted changes.
----
-
-# Reviewer
-
-<role:reviewer>
-You are reviewing code changes. Focus on correctness, completeness, and quality.
-</role>
-
-## Process
-
-1. **Understand** - Read the task requirements
-2. **Review diff** - Examine what changed
-3. **Check results** - Review lint/build/test output
-4. **Evaluate** - Does this satisfy the requirements?
-5. **Decide** - APPROVE, REJECT, or REQUEST_CHANGES
-
-## Criteria
-
-1. Does the code accomplish what the task requested?
-2. Are there any obvious bugs or issues?
-3. Did lint/build/test pass?
-4. Is the code reasonably clean and following project conventions?
-
-## Verdicts
-
-- **APPROVE** - Changes are good, ready to commit
-- **REJECT** - Changes are fundamentally wrong, need to start over
-- **REQUEST_CHANGES** - Changes are on the right track but need fixes
-
-## Output Format
-
-Explain your reasoning, then end with exactly one of:
-
-```
-VERDICT: APPROVE
-VERDICT: REJECT
-VERDICT: REQUEST_CHANGES
-```
-
-If REJECT or REQUEST_CHANGES, explain what's wrong BEFORE the verdict line.
-The feedback will be passed to the coder for the next iteration.
diff --git a/Omni/Agent/Skills/shared/skill-creator/references/patterns.md b/Omni/Agent/Skills/shared/skill-creator/references/patterns.md
deleted file mode 100644
index ffe03b9b..00000000
--- a/Omni/Agent/Skills/shared/skill-creator/references/patterns.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# Skill Patterns Reference
-
-Common patterns for building effective skills.
-
-## Workflow Skills
-
-For multi-step processes:
-
-```markdown
-## Workflow
-
-### Phase 1: Discovery
-- Gather requirements
-- Identify constraints
-
-### Phase 2: Implementation
-- Execute core task
-- Validate results
-
-### Phase 3: Verification
-- Check against requirements
-- Get user confirmation
-```
-
-## Domain Knowledge Skills
-
-For specialized knowledge:
-
-```markdown
-## Key Concepts
-
-- **Term A**: Definition and usage
-- **Term B**: Definition and usage
-
-## Common Patterns
-
-Pattern 1: Description and when to use
-
-Pattern 2: Description and when to use
-
-## Gotchas
-
-- Common mistake to avoid
-- Edge case to handle
-```
-
-## Tool Integration Skills
-
-For working with external tools:
-
-```markdown
-## Tool: ToolName
-
-### Setup
-Prerequisites and configuration.
-
-### Common Operations
-
-#### Operation 1
-```bash
-command --with --args
-```
-
-#### Operation 2
-```bash
-another-command
-```
-
-### Error Handling
-- Error X: Solution
-- Error Y: Solution
-```
-
-## Decision Tree Skills
-
-For conditional workflows:
-
-```markdown
-## Decision Guide
-
-Is condition A true?
-├── Yes → Do X
-│   └── If X succeeds → Done
-│   └── If X fails → Try Y
-└── No → Check condition B
-    ├── Yes → Do Z
-    └── No → Default action
-```
-
-## Template Skills
-
-For generating standardized content:
-
-```markdown
-## Templates
-
-### Template: Email
-Subject: [TYPE] - [TOPIC]
-
-Body:
-[GREETING],
-
-[CONTEXT PARAGRAPH]
-
-[REQUEST/ACTION PARAGRAPH]
-
-[CLOSING],
-[SIGNATURE]
-
-### Template: Report
-# [TITLE]
-
-## Summary
-[KEY FINDINGS]
-
-## Details
-[SECTION 1]
-[SECTION 2]
-
-## Recommendations
-[ACTION ITEMS]
-```
diff --git a/Omni/Agent/Skills/shared/skill-creator/scripts/init_skill.py b/Omni/Agent/Skills/shared/skill-creator/scripts/init_skill.py
deleted file mode 100755
index 38b55664..00000000
--- a/Omni/Agent/Skills/shared/skill-creator/scripts/init_skill.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env python3
-"""Initialize a new skill directory with the proper structure.
-
-Usage:
-    init_skill.py <skill-name> --user <username>
-    init_skill.py <skill-name> --shared
-
-Examples:
-    init_skill.py email-outreach --user ben
-    init_skill.py code-review --shared
-"""
-
-import argparse
-import os
-import sys
-
-SKILLS_BASE = "/home/ava/skills"
-
-SKILL_MD_TEMPLATE = '''---
-name: {name}
-description: TODO - Describe what this skill does and when to use it. Include trigger phrases.
----
-
-# {title}
-
-## Overview
-
-TODO - Brief description of the skill's purpose.
-
-## Workflow
-
-1. TODO - First step
-2. TODO - Second step
-3. TODO - Third step
-
-## Guidelines
-
-- TODO - Important guideline
-- TODO - Another guideline
-'''
-
-def main():
-    parser = argparse.ArgumentParser(description="Initialize a new skill")
-    parser.add_argument("name", help="Skill name (lowercase-with-dashes)")
-    group = parser.add_mutually_exclusive_group(required=True)
-    group.add_argument("--user", help="Create in user's private directory")
-    group.add_argument("--shared", action="store_true", help="Create in shared directory")
-    
-    args = parser.parse_args()
-    
-    # Validate skill name
-    if not args.name.replace("-", "").replace("_", "").isalnum():
-        print(f"Error: Skill name must be alphanumeric with dashes/underscores: {args.name}")
-        sys.exit(1)
-    
-    # Determine target directory
-    if args.shared:
-        skill_dir = os.path.join(SKILLS_BASE, "shared", args.name)
-    else:
-        skill_dir = os.path.join(SKILLS_BASE, args.user, args.name)
-    
-    # Check if already exists
-    if os.path.exists(skill_dir):
-        print(f"Error: Skill directory already exists: {skill_dir}")
-        sys.exit(1)
-    
-    # Create directory structure
-    os.makedirs(skill_dir)
-    os.makedirs(os.path.join(skill_dir, "scripts"))
-    os.makedirs(os.path.join(skill_dir, "references"))
-    
-    # Create SKILL.md
-    title = args.name.replace("-", " ").replace("_", " ").title()
-    skill_md = SKILL_MD_TEMPLATE.format(name=args.name, title=title)
-    
-    with open(os.path.join(skill_dir, "SKILL.md"), "w") as f:
-        f.write(skill_md)
-    
-    # Create placeholder files
-    with open(os.path.join(skill_dir, "scripts", ".gitkeep"), "w") as f:
-        f.write("")
-    
-    with open(os.path.join(skill_dir, "references", ".gitkeep"), "w") as f:
-        f.write("")
-    
-    print(f"Created skill: {skill_dir}")
-    print(f"")
-    print(f"Next steps:")
-    print(f"  1. Edit {skill_dir}/SKILL.md")
-    print(f"  2. Add scripts to {skill_dir}/scripts/ if needed")
-    print(f"  3. Add references to {skill_dir}/references/ if needed")
-    print(f"  4. Test with: skill --name {args.name}")
-
-if __name__ == "__main__":
-    main()
diff --git a/Omni/Agent/Skills/ben/trace-analysis/SKILL.md b/Omni/Agent/TraceAnalysis.md
similarity index 84%
rename from Omni/Agent/Skills/ben/trace-analysis/SKILL.md
rename to Omni/Agent/TraceAnalysis.md
index f5521781..126f446b 100644
--- a/Omni/Agent/Skills/ben/trace-analysis/SKILL.md
+++ b/Omni/Agent/TraceAnalysis.md
@@ -1,7 +1,3 @@
----
-name: trace-analysis
-description: Analyze subagent execution traces from /home/ava/logs/subagents/*.jsonl. Use when asked to debug subagent runs, review what a subagent did, analyze subagent performance, or troubleshoot issues with subagent execution.
----
 
 # Trace Analysis
 
diff --git a/Omni/Agent/Skills/shared/web-research/SKILL.md b/Omni/Agent/WebResearch.md
similarity index 81%
rename from Omni/Agent/Skills/shared/web-research/SKILL.md
rename to Omni/Agent/WebResearch.md
index 8b9b828b..1f3e8059 100644
--- a/Omni/Agent/Skills/shared/web-research/SKILL.md
+++ b/Omni/Agent/WebResearch.md
@@ -1,7 +1,3 @@
----
-name: web-research
-description: Research a topic using web search. Use when you need to find current information, verify facts, or explore a topic online.
----
 
 # Web Research