Development
Skill
/osgrep
Semantic code search. Use alongside grep - grep for exact strings, osgrep for concepts.
Install
$ npx -y skills add Ryandonofrio3/osgrep --skill osgrep --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/osgrep
Context preview
The summary Claude sees to decide when to auto-load this skill.
Semantic code search. Use alongside grep - grep for exact strings, osgrep for concepts.
SKILL.md
osgrep.SKILL.mdname: osgrep
description: Semantic code search. Use alongside grep - grep for exact strings, osgrep for concepts.
allowed-tools: "Bash(osgrep:*), Read"
What osgrep does
Finds code by meaning. When you'd ask a colleague "where do we handle auth?", use osgrep.
- grep/ripgrep: exact string match, fast
- osgrep: concept match, finds code you couldn't grep for
Primary command
osgrep "where do we validate user permissions"
Returns ~10 results with code snippets (15+ lines each). Usually enough to understand what's happening.
Output explained
ORCHESTRATION src/auth/handler.ts:45
Defines: handleAuth | Calls: validate, checkRole, respond | Score: .94
export async function handleAuth(req: Request) {
const token = req.headers.get("Authorization");
const claims = await validateToken(token);
if (!claims) return unauthorized();
const allowed = await checkRole(claims.role, req.path);
...- **ORCHESTRATION** = contains logic, coordinates other code
- **DEFINITION** = types, interfaces, classes
- **Score** = relevance (1 = best match)
- **Calls** = what this code calls (helps you trace flow)
When to Read more
The snippet often has enough context. But if you need more:
# osgrep found src/auth/handler.ts:45-90 as ORCH
Read src/auth/handler.ts:45-120
Read the specific line range, not the whole file.
Other commands
# Trace call graph (who calls X, what X calls)
osgrep trace handleAuth
# Skeleton of a huge file (to find which ranges to read)
osgrep skeleton src/giant-2000-line-file.ts
# Just file paths when you only need locations
osgrep "authentication" --compact
Workflow: architecture questions
# 1. Find entry points
osgrep "where do requests enter the server"
# Review the ORCH results - code is shown
# 2. If you need deeper context on a specific function
Read src/server/handler.ts:45-120
# 3. Trace to understand call flow
osgrep trace handleRequest
Tips
- More words = better results. "auth" is vague. "where does the server validate JWT tokens" is specific.
- ORCH results contain the logic - prioritize these
- Don't read entire files. Use the line ranges osgrep gives you.
- If results seem off, rephrase your query like you'd ask a teammate
If Index is Building
If you see "Indexing" or "Syncing": STOP. Tell the user the index is building. Ask if they want to wait or proceed with partial results.
Read more
name: osgrep description: Semantic code search. Use alongside grep - grep for exact strings, osgrep for concepts. allowed-tools: "Bash(osgrep:*), Read"
What osgrep does
Finds code by meaning. When you'd ask a colleague "where do we handle auth?", use osgrep.
- grep/ripgrep: exact string match, fast
- osgrep: concept match, finds code you couldn't grep for
Primary command
osgrep "where do we validate user permissions"
Returns ~10 results with code snippets (15+ lines each). Usually enough to understand what's happening.
Output explained
ORCHESTRATION src/auth/handler.ts:45
Defines: handleAuth | Calls: validate, checkRole, respond | Score: .94
export async function handleAuth(req: Request) {
const token = req.headers.get("Authorization");
const claims = await validateToken(token);
if (!claims) return unauthorized();
const allowed = await checkRole(claims.role, req.path);
...- **ORCHESTRATION** = contains logic, coordinates other code
- **DEFINITION** = types, interfaces, classes
- **Score** = relevance (1 = best match)
- **Calls** = what this code calls (helps you trace flow)
When to Read more
The snippet often has enough context. But if you need more:
# osgrep found src/auth/handler.ts:45-90 as ORCH Read src/auth/handler.ts:45-120
Read the specific line range, not the whole file.
Other commands
# Trace call graph (who calls X, what X calls) osgrep trace handleAuth # Skeleton of a huge file (to find which ranges to read) osgrep skeleton src/giant-2000-line-file.ts # Just file paths when you only need locations osgrep "authentication" --compact
Workflow: architecture questions
# 1. Find entry points osgrep "where do requests enter the server" # Review the ORCH results - code is shown # 2. If you need deeper context on a specific function Read src/server/handler.ts:45-120 # 3. Trace to understand call flow osgrep trace handleRequest
Tips
- More words = better results. "auth" is vague. "where does the server validate JWT tokens" is specific.
- ORCH results contain the logic - prioritize these
- Don't read entire files. Use the line ranges osgrep gives you.
- If results seem off, rephrase your query like you'd ask a teammate
If Index is Building
If you see "Indexing" or "Syncing": STOP. Tell the user the index is building. Ask if they want to wait or proceed with partial results.
Stats
1,139
Stars
67
Forks
Quiet
Maintenance
TypeScript
Language
Apache-2.0
License
7mo ago
Last commit
9mo ago
Created
Repo: Ryandonofrio3/osgrep

