Token导航 LogoToken导航

Agent Skill · 研究检索

bruhs(bruhs 搜索)

bruhs 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

bruhs 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 71,089。

总安装 196周安装 8GitHub Stars 公开资料未说明下载 63核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:bruhs(bruhs 搜索)
来源仓库:https://github.com/bryantleft/bruhs-skills
仓库路径:skills/bruhs
安装命令:
npx skills add https://github.com/bryantleft/bruhs-skills --skill bruhs
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/bryantleft/bruhs-skills --skill bruhs

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

bruhs 提供项目管理和开发实践工具集,包含 spawn、cook、yeet 等命令。适合在 Codex、Claude、Cursor、Gemini CLI 中规划、构建和发布功能。支持类型驱动设计、TypeScript React 和 UI 设计等最佳实践。

使用前需配置 .claude/bruhs.json,注意仅限团队协作和开发流程优化。建议结合原始 README 和仓库文档进一步核验具体使用方法和限制条件。

来源仓库内路径:skills/bruhs

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/bryantleft/bruhs-skills --skill bruhs;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

bruhs 怎么安装?

在终端执行 npx skills add https://github.com/bryantleft/bruhs-skills --skill bruhs。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

bruhs 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

bruhs 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

bruhs 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

bruhs 用的人多吗?

公开数据是累计安装 196 次,近一周安装 8 次,下载 63 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

bruhs 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
bruhs

bruhs 搜索 · 本页

196—操作浏览器未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

bruhs

Index

|commands|spawn,claim,cook,yeet,peep,dip,slop |practices|type-driven-design,_common,typescript-react,ui-design |config|.claude/bruhs.json

Commands Quick Reference

|spawn|Create project or add to monorepo|commands/spawn.md |claim|Initialize config for existing project|commands/claim.md |cook|Plan + Build feature end-to-end|commands/cook.md |yeet|Ship: Linear ticket → Branch → Commit → PR|commands/yeet.md |peep|Address PR review comments and merge|commands/peep.md |dip|Clean up after merge, switch to base branch|commands/dip.md |slop|Deep codebase analysis, AI slop cleanup|commands/slop.md

Invocation

  • /bruhs → Interactive menu (AskUserQuestion)
  • /bruhs:<command> → Direct to command
  • /bruhs:cook <feature> or /bruhs:cook TICKET-123 → With argument
  • /bruhs:slop [path] [--fix|--report] → Codebase analysis

Type-Driven Design

A function's type signature should tell you everything about what it does.

Priority Hierarchy (fix in this order)

  1. Missing/wrong type signatures - Types ARE documentation
  2. Hidden side effects - Signature lies about behavior
  3. any types - Type system disabled
  4. ! or as on external data - Compiler trust violated
  5. Implementation issues - Secondary to type correctness

Checklist

Signatures:

  • Explicit return types on public functions
  • No any - use unknown + validation
  • No ! - handle null explicitly
  • No as for external data - validate instead
  • Errors in return type, not thrown silently
  • readonly parameters signal no mutation
  • Discriminated unions for state (not multiple booleans)

Errors:

  • Errors visible in return type (Result<T,E> or union)
  • Typed errors, not strings
  • Handle at call site, not deferred
  • No empty catch blocks

Immutability:

  • Prefer const over let
  • Don't mutate parameters
  • Return new objects instead of mutating

Patterns

// ❌ Signature hides truth
function getUser(id: string): User  // might throw, might be null

// ✅ Signature tells full story
function getUser(id: string): Promise<Result<User, NotFoundError | NetworkError>>

// ❌ Multiple booleans = impossible states
type State = { isLoading: boolean; isError: boolean; data: User | null }

// ✅ Discriminated union = only valid states
type State =
  | { status: 'idle' }
  | { status: 'loading' }
  | { status: 'success'; data: User }
  | { status: 'error'; error: Error }

For full patterns → practices/type-driven-design.md


Common Rules

Naming

TypeConventionExample
ComponentsPascalCaseUserCard.tsx
HookscamelCase + useuseAuth.ts
UtilitiescamelCaseformatDate.ts
ConstantsSCREAMING_SNAKEMAX_RETRIES
Booleansis/has/can/shouldisLoading, hasPermission
Functionsverb + noungetUser, createOrder
Handlershandle/on prefixhandleSubmit, onUserClick

Code Organization

  • Functions do ONE thing
  • 20-30 lines max per function
  • 200-300 lines max per file
  • If you need comments to separate sections → extract functions

Error Handling

  • Specific messages: User "${id}" not found not Something went wrong
  • Validate at boundaries, trust internal code
  • Never swallow errors (empty catch blocks)

Git

<type>: <description>

Fixes TICKET-123

Types: feat|fix|refactor|chore|docs|test

Branch: <type>/<ticket-id>-<short-description>

Comments

  • ✅ WHY (business logic, workarounds, non-obvious decisions)
  • ❌ WHAT (code already says what it does)
  • ❌ Commented-out code
  • ❌ TODO without ticket reference

External Searches

Always include current year in WebSearch queries for fresh results.

For full guidelines → practices/_common.md


Command Workflows

cook - Plan + Build Feature

1. CONFIG: Check .claude/bruhs.json exists (offer /bruhs:claim if not)
2. UNDERSTAND: Parse feature or fetch Linear ticket (TICKET-123 format)
3. EXPLORE: Load project skills from bruhs.json, find-skills for new ones, code-explorer agents
4. PLAN: Design 2-3 approaches → AskUserQuestion for selection
5. SETUP: Stash unrelated changes if needed (git stash push -m "bruhs: ...")
6. BUILD: TDD if test suite exists, else temp tests → cleanup after
7. REVIEW: code-reviewer agents, browser verification for UI
8. READY: "Run /bruhs:yeet to ship" (ticket context in memory for yeet)

Detail → commands/cook.md

yeet - Ship Code

1. CONFIG: Check bruhs.json (git-only mode if missing)
2. CHANGES: git status/diff - abort if none
3. ANALYZE: Categorize (feat/fix/chore/refactor), generate title + summary
4. LINEAR: Use ticketContext from cook OR create new ticket
   - Tool: mcp__<mcpServer>__linear_create_issue
   - Get branchName from issue.gitBranchName
5. BRANCH: git switch -c <branchName>
6. COMMIT: git add <files> && git commit (HEREDOC, "Fixes TICKET-ID")
7. PUSH: git push -u origin <branchName>
8. PR: gh pr create --title --body (Summary + Linear + Test plan)
9. STATUS: Update Linear → "In Review"

Detail → commands/yeet.md

peep - Address PR Reviews

1. DETECT: Get PR from current branch, or arg (PR# or TICKET-ID)
2. FETCH: gh api repos/.../pulls/.../comments
3. CATEGORIZE: must-fix | suggestion | question
4. ADDRESS: Interactive per comment (apply/respond/skip)
5. COMMIT: Stage fixes, commit, push
6. RE-REVIEW: Request if needed
7. MERGE: When approved (squash/merge/rebase via AskUserQuestion)
8. TRANSITION: Auto-run dip workflow after merge

Detail → commands/peep.md

dip - Post-Merge Cleanup

1. SWITCH: git switch <base-branch> (main/dev from config)
2. PULL: git pull
3. DELETE: git branch -d <feature-branch> && git push origin --delete
4. RESTORE: git stash pop (if cook stashed changes)

Detail → commands/dip.md

spawn - Create Project

1. DETECT: Monorepo context (pnpm-workspace.yaml, turbo.json)
2. SELECT: Structure → Type → Language → Framework → Stack (AskUserQuestion flow)
3. SCAFFOLD: Official CLIs (pnpm create for TS projects)
4. LINEAR: Create project + initial tickets
5. GITHUB: Setup Actions with Blacksmith runner
6. CONFIG: Create .claude/bruhs.json
7. SKILLS: find-skills for relevant skills

Detail → commands/spawn.md

claim - Initialize Existing Project

1. DETECT: Auto-detect stack from files (package.json, framework configs)
2. LINEAR: Configure team, project, labels (AskUserQuestion)
3. MCPS: Detect installed MCPs from ~/.claude.json
4. WRITE: Create .claude/bruhs.json

Detail → commands/claim.md

slop - Codebase Analysis

Priority: Types(1) → Errors(2) → Immutability(3) → Security(4) → Architecture(5) → Performance(6) → Style(7)

1. CONTEXT: Load stack from bruhs.json
2. STATIC: Run tsc, security scan, dead code detection
3. ANALYZE: Each file against Type-Driven Design checklist
4. REPORT: Severity-ranked issues
5. FIX: Interactive (--fix for auto-fix safe issues)
6. VERIFY: tsc, lint, tests

Severity: relaxed | balanced | nitpicky (default) | brutal

Detail → commands/slop.md


Interactive Menu

When /bruhs invoked without arguments:

AskUserQuestion({
  questions: [{
    question: "What do you want to do?",
    header: "Command",
    multiSelect: false,
    options: [
      { label: "spawn", description: "Create new project or add to monorepo" },
      { label: "claim", description: "Claim existing project for bruhs" },
      { label: "cook", description: "Plan + Build a feature end-to-end" },
      { label: "yeet", description: "Ship: Linear ticket → Branch → Commit → PR" },
      { label: "peep", description: "Address PR review comments and merge" },
      { label: "dip", description: "Clean up after merge and switch to base branch" },
    ]
  }]
})

Note: slop excluded from menu (specialized tool - invoke directly with /bruhs:slop)

After selection, execute the corresponding workflow above. Only read detail files for edge cases.


Config Reference

.claude/bruhs.json:

{
  "integrations": {
    "linear": {
      "mcpServer": "linear-<workspace>",
      "team": "<team-id>",
      "teamName": "Team Name",
      "project": "<project-id>",
      "projectName": "Project Name",
      "labels": { "feat": "Feature", "fix": "Bug", "chore": "Chore", "refactor": "Improvement" }
    }
  },
  "tooling": {
    "mcps": ["linear", "notion", "context7"],
    "skills": ["superpowers", "shadcn", "vercel-react-best-practices"]
  },
  "stack": {
    "structure": "turborepo|standalone",
    "framework": "nextjs|tanstack-start|astro|hono|...",
    "styling": ["tailwind", "shadcn"],
    "database": ["drizzle-postgres", "convex", "..."],
    "auth": "better-auth|clerk|...",
    "gpu": ["modal", "runpod", "lambda"]
  }
}

Linear MCP

Tool format: mcp__<mcpServer>__linear_<method>

Common tools:

ToolPurpose
linear_get_teamsList teams (includes labels)
linear_get_userCurrent user (for assigneeId)
linear_create_issueCreate ticket
linear_edit_issueUpdate status
linear_get_issueFetch ticket by ID

Multi-workspace: Each project's bruhs.json points to its Linear workspace via mcpServer.

Example:

// Load the tool
ToolSearch(`select:mcp__${config.integrations.linear.mcpServer}__linear_create_issue`)

// Create issue
const issue = call(`mcp__linear-sonner__linear_create_issue`, {
  title: "Add leaderboard",
  teamId: config.integrations.linear.team,
  projectId: config.integrations.linear.project,
  assigneeId: user.viewer.id,
  labelIds: [labelId]
})

// Use Linear's generated branch name
const branchName = issue.gitBranchName  // "sonner-140-add-leaderboard"

平台分布

Codex

33.25%
按下载量换算21

Claude

33.67%
按下载量换算21

Cursor

18.08%
按下载量换算11

Gemini CLI

10.18%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills