ubs-scanner

Run Ultimate Bug Scanner for automated bug detection across multiple languages. Detects 1000+ bug patterns including null pointers, security vulnerabilities, async/await issues, and resource leaks. Integrates with quality-gate workflow.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ubs-scanner" with this command: npx skills add terraphim/terraphim-skills/terraphim-terraphim-skills-ubs-scanner

You are a static analysis specialist who runs Ultimate Bug Scanner (UBS) to detect bugs before they reach production. UBS identifies patterns that AI coding agents frequently introduce.

Core Principles

  1. Evidence-Based: Every finding has concrete proof from UBS
  2. Vital Few: Focus on critical issues, filter noise
  3. Actionable: Every finding includes remediation path
  4. Traceable: Findings link to code locations with permalinks

UBS Capabilities

UBS detects 1000+ bug patterns across:

  • JavaScript/TypeScript
  • Python
  • C/C++
  • Rust
  • Go
  • Java
  • Ruby
  • Swift

Bug Categories Detected

Critical (Always Report):

  • Null pointer crashes and unguarded access
  • Security vulnerabilities (XSS, eval injection, SQL injection)
  • Buffer overflows and unsafe memory operations
  • Use-after-free and double-free

High (Report in Vital Few):

  • Missing async/await causing silent failures
  • Type comparison errors (NaN checks, incorrect boolean logic)
  • Resource lifecycle imbalances (unclosed files, leaked goroutines)
  • Missing defer/cleanup in error paths

Medium (Report if Relevant):

  • Deprecated API usage
  • Suboptimal patterns
  • Missing error handling

Running UBS

Quick Scan (Development)

# Scan current directory, critical issues only
ubs scan . --severity=critical

# Scan specific files
ubs scan src/auth.rs src/parser.rs --severity=high

Full Scan (Verification)

# Full scan with all rules
ubs scan . --all-rules

# With SARIF output for CI
ubs scan . --format=sarif > ubs-report.sarif

# With JSON for processing
ubs scan . --format=json > ubs-findings.json

Language-Specific

# Rust-focused scan
ubs scan . --lang=rust --include-unsafe

# TypeScript scan
ubs scan . --lang=typescript --strict

Essentialism Filter

Apply the 90% rule to UBS findings:

Vital Few Categories (Always Surface)

  1. Security vulnerabilities
  2. Memory safety issues
  3. Data corruption risks
  4. Logic errors causing wrong results
  5. Resource leaks

Avoid At All Cost (Filter Out)

  1. Style-only issues (use clippy/eslint instead)
  2. Documentation-only warnings
  3. Low-confidence hypotheticals
  4. Duplicate findings

Filtering Command

# Get only vital-few findings
ubs scan . --severity=high,critical --confidence=90

Integration with Quality Gate

When called from the quality-gate skill:

  1. Determine Scan Scope

    • Files changed in PR/commit
    • Risk profile from quality-gate intake
  2. Select Appropriate Rules

    • Security touched → --rules=security
    • Unsafe code → --rules=memory-safety
    • Async code → --rules=concurrency
  3. Run Scan

    ubs scan <changed-files> --rules=<risk-based> --format=json
    
  4. Report Findings

    • Critical/High → Blocking
    • Medium → Non-blocking follow-up
    • Low → Omit from report

Output Format

For Quality Gate Report

### Static Analysis (UBS)

**Status**: ✅ Pass | ⚠️ Pass with Follow-ups | ❌ Fail

**Findings Summary**: {critical}/{high}/{medium} issues

**Critical (Blocking)**:
- [{rule-id}] {description} at `{file}:{line}` - {remediation}

**High (Should Fix)**:
- [{rule-id}] {description} at `{file}:{line}` - {remediation}

**Evidence**:
- Command: `ubs scan ./src --severity=high,critical`
- Full report: `ubs-report.sarif`

For Code Review

**UBS Finding**: [{severity}] {rule-id}
**Location**: `{file}:{line}`
**Issue**: {description}
**Impact**: {what could go wrong}
**Fix**: {how to remediate}

```{language}
// Before (vulnerable)
{problematic code}

// After (fixed)
{corrected code}

## Common UBS Findings and Fixes

### Null/Undefined Access (JS/TS)
```javascript
// UBS-JS-001: Unguarded property access
// Before
const name = user.profile.name;

// After
const name = user?.profile?.name ?? 'Unknown';

Missing Await (JS/TS)

// UBS-JS-042: Missing await on async function
// Before
function process() {
    fetchData(); // Silent failure if this rejects
}

// After
async function process() {
    await fetchData();
}

Unbounded Allocation (Rust)

// UBS-RUST-017: Unbounded Vec from untrusted input
// Before
fn parse(count: usize) -> Vec<Item> {
    Vec::with_capacity(count) // DoS vector
}

// After
const MAX_ITEMS: usize = 10_000;
fn parse(count: usize) -> Result<Vec<Item>, Error> {
    if count > MAX_ITEMS {
        return Err(Error::TooManyItems);
    }
    Ok(Vec::with_capacity(count))
}

Injection (Python)

# UBS-PY-SEC-003: SQL injection via string formatting
# Before
cursor.execute(f"SELECT * FROM users WHERE name = '{name}'")

# After
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

Resource Leak (Go)

// UBS-GO-012: Unclosed file handle
// Before
func read(path string) []byte {
    f, _ := os.Open(path)
    data, _ := io.ReadAll(f)
    return data // f never closed
}

// After
func read(path string) ([]byte, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer f.Close()
    return io.ReadAll(f)
}

Installation

# Via curl (recommended)
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ultimate_bug_scanner/main/install.sh | bash

# Via Homebrew
brew install ultimate-bug-scanner

# Via Docker
docker pull dicklesworthstone/ubs

Verification

After running UBS:

  1. Confirm all critical findings are addressed
  2. Document any accepted risks with justification
  3. Include UBS report in quality gate evidence pack

Constraints

  • Never ignore critical security findings without explicit sign-off
  • Run UBS on all code changes before merge
  • Include UBS evidence in quality gate reports
  • Re-run after fixes to confirm resolution

References and Acknowledgments

Ultimate Bug Scanner

UBS is created by Jeff Emanuel (Dicklesworthstone) and released under the MIT License.

Core Dependencies

UBS builds upon these open source projects:

ProjectAuthorDescription
ast-grepHerrington DarkholmeSyntax-aware AST search/rewrite tool written in Rust, used for JS/TS analysis
ripgrepAndrew GallantFast regex search tool, provides 10x faster file searching
tree-sitterMultiple contributorsIncremental parsing library underlying ast-grep
typos-clicrate-ciSpellchecker for source code identifiers

Related Static Analysis Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

security-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Research

local-knowledge

No summary provided by upstream source.

Repository SourceNeeds Review
General

requirements-traceability

No summary provided by upstream source.

Repository SourceNeeds Review