Agent skill

Semantic Bug Detector

by ArabelaTso in ArabelaTso/Skills-4-SE

Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation.

Apache-2.0Auto-check passedDevelopment

Install Semantic Bug Detector

skills CLI
$ npx skills add ArabelaTso/Skills-4-SE --skill semantic-bug-detector -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ArabelaTso/Skills-4-SE semantic-bug-detector --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/semantic-bug-detector .claude/skills/semantic-bug-detector && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
semantic-bug-detector
GitHub stars
253
Token cost
~2.8k tokens
SKILL.md length
879 words
Files
2 (incl. references)
Skills in repo
150
Repo updated
First seen
Licence
Apache-2.0

At a glance

Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation.

  • Works in 4 steps: Extract Intent → Analyze Implementation → Compare Intent vs Implementation → …
  • Find logic errors where implementation contradicts stated intent
  • SKILL.md covers Overview, How to Use, Detection Workflow and Example: Off-by-One Error, plus 10 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Semantic Bug Detector is an agent skill from ArabelaTso/Skills-4-SE. Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation. Use when users need to: (1) Find logic errors where implementation contradicts stated intent, (2) Identify off-by-one errors and boundary mismatches, (3) Detect inverted logic or wrong operators, (4) Catch missing edge case handling, (5) Verify code matches its documentation. Highlights mismatches between intent and implementation across…

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/bug_patterns.md`).

It sits in Development, covering Technical documentation. The repository describes itself as: A curated list of 180+ useful Claude Skills for Software Engineering and resources for customizing AI for SE workflows. The licence is Apache-2.0.

When your agent uses it

  • Find logic errors where implementation contradicts stated intent
  • Identify off-by-one errors and boundary mismatches
  • Detect inverted logic
  • Wrong operators

Example prompts

  • “/semantic-bug-detector”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Extract Intent
  2. Analyze Implementation
  3. Compare Intent vs Implementation
  4. Report Findings

What it can do on your machine

Read from SKILL.md and the folder at commit 4f38503. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Semantic Bug Detector loads about 2.8k tokens when it runs, and up to ~5.1k if it reads all its reference files. Until then it costs about 141 tokens; SKILL.md has 879 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~141
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ArabelaTso/Skills-4-SE at commit 4f38503, republished under its Apache-2.0 licence (© ArabelaTso). 879 words, ~2,788 tokens.

Download SKILL.mdSave it as .claude/skills/semantic-bug-detector/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
semantic-bug-detector
description
Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation. Use when users need to: (1) Find logic errors where implementation contradicts stated intent, (2) Identify off-by-one errors and boundary mismatches, (3) Detect inverted logic or wrong operators, (4) Catch missing edge case handling, (5) Verify code matches its documentation. Highlights mismatches between intent and implementation across multiple programming languages.

Semantic Bug Detector

Detect bugs where code behavior doesn't match its intended purpose.

Overview

This skill analyzes code to find semantic bugs—errors where the implementation contradicts the intent expressed through names, comments, and documentation. Unlike syntax errors or type errors, semantic bugs are logically valid code that does the wrong thing.

How to Use

Provide code with any of:

  1. Function/variable names that express intent
  2. Comments describing what code should do
  3. Docstrings specifying behavior
  4. Documentation stating requirements

The skill will:

  • Infer intended behavior from these sources
  • Analyze actual implementation
  • Identify mismatches
  • Report semantic bugs with explanations

Detection Workflow

Step 1: Extract Intent

Gather intent signals from multiple sources:

Names: is_even, get_last_n_elements, calculate_average

  • Infer expected behavior from naming conventions
  • Identify predicates (is_, has_, can_)
  • Recognize operations (get_, set_, calculate_)

Comments: // Returns first n elements, # Check if x is positive

  • Parse inline comments
  • Extract stated purpose
  • Identify boundary specifications

Docstrings:

python
"""Calculate the average of a list of numbers.
Returns the sum divided by the count."""
  • Parse structured documentation
  • Extract preconditions and postconditions
  • Identify range specifications
Step 2: Analyze Implementation

Examine actual code behavior:

Control flow: Conditions, loops, branches Operations: Arithmetic, logical, comparison operators Boundaries: Array indices, range limits Edge cases: Empty input, null values, zero divisors

Step 3: Compare Intent vs Implementation

Check for common mismatches:

Off-by-one errors: Using n+1 when should use n Inverted logic: Returning opposite boolean value Wrong operator: Using * when should use / Boundary errors: Inclusive when should be exclusive Missing checks: Not handling empty/null input

Step 4: Report Findings

For each bug found, provide:

  • Location: Function/line where bug occurs
  • Intent: What the code should do
  • Actual: What the code actually does
  • Bug type: Category of semantic error
  • Fix: Suggested correction

Example: Off-by-One Error

Code:

python
def get_last_n_elements(arr, n):
    """Returns the last n elements from the array."""
    return arr[-n-1:]

Analysis:

  1. Intent from name: "get_last_n_elements" → should return exactly n elements
  2. Intent from docstring: "Returns the last n elements" → confirms n elements
  3. Actual behavior: arr[-n-1:] returns n+1 elements
  4. Mismatch: Returns n+1 instead of n

Report:

BUG: Off-by-one error in get_last_n_elements

Location: Line 3, return statement
Intent: Return the last n elements (from name and docstring)
Actual: Returns the last n+1 elements
Bug Type: Off-by-one error
Severity: High

Explanation:
The slice arr[-n-1:] starts at index -(n+1), which includes
one extra element. Should use arr[-n:] to get exactly n elements.

Fix:
return arr[-n:]

Example: Inverted Logic

Code:

python
def is_even(x):
    """Check if x is even."""
    return x % 2 == 1

Analysis:

  1. Intent from name: "is_even" → should return True for even numbers
  2. Intent from docstring: "Check if x is even" → confirms even check
  3. Actual behavior: x % 2 == 1 returns True for odd numbers
  4. Mismatch: Logic is inverted

Report:

BUG: Inverted logic in is_even

Location: Line 3, return statement
Intent: Return True when x is even (from name and docstring)
Actual: Returns True when x is odd
Bug Type: Inverted boolean logic
Severity: High

Explanation:
x % 2 == 1 is True for odd numbers, not even numbers.
The condition is inverted from the stated intent.

Fix:
return x % 2 == 0

Example: Boundary Mismatch

Code:

python
def in_range(x, start, end):
    """Check if x is in range [start, end)."""
    return start <= x <= end

Analysis:

  1. Intent from docstring: "[start, end)" → half-open interval, excludes end
  2. Actual behavior: start <= x <= end includes end
  3. Mismatch: Uses inclusive end when should be exclusive

Report:

BUG: Boundary mismatch in in_range

Location: Line 3, return statement
Intent: Check if x in [start, end) - half-open interval (from docstring)
Actual: Checks if x in [start, end] - closed interval
Bug Type: Boundary error (inclusive vs exclusive)
Severity: Medium

Explanation:
The notation [start, end) means start is included but end is excluded.
The condition start <= x <= end includes end, violating the spec.

Fix:
return start <= x < end

Example: Wrong Operator

Code:

python
def calculate_average(numbers):
    """Calculate the average of a list of numbers."""
    return sum(numbers) * len(numbers)

Analysis:

  1. Intent from name: "calculate_average" → should compute mean
  2. Intent from docstring: "Calculate the average" → confirms mean calculation
  3. Actual behavior: Multiplies sum by count instead of dividing
  4. Mismatch: Wrong arithmetic operator

Report:

BUG: Wrong operator in calculate_average

Location: Line 3, return statement
Intent: Calculate average (sum / count) from name and docstring
Actual: Calculates sum * count
Bug Type: Wrong arithmetic operator
Severity: High

Explanation:
Average is calculated by dividing sum by count, not multiplying.
Using * instead of / produces incorrect result.

Fix:
return sum(numbers) / len(numbers)

Example: Missing Edge Case

Code:

python
def find_max(numbers):
    """Find the maximum number in the list."""
    max_val = numbers[0]
    for num in numbers[1:]:
        if num > max_val:
            max_val = num
    return max_val

Analysis:

  1. Intent from name: "find_max" → should find maximum
  2. Intent from docstring: "Find the maximum number in the list"
  3. Actual behavior: Crashes on empty list (IndexError)
  4. Mismatch: Doesn't handle empty input

Report:

BUG: Missing edge case handling in find_max

Location: Line 3, accessing numbers[0]
Intent: Find maximum number in list (from name and docstring)
Actual: Crashes with IndexError when list is empty
Bug Type: Missing edge case (empty input)
Severity: High

Explanation:
The function assumes the list is non-empty by accessing numbers[0]
without checking. This causes a crash on empty input.

Fix:
if not numbers:
    raise ValueError("Cannot find max of empty list")
max_val = numbers[0]
...

Common Bug Categories

Off-by-One Errors

Indicators: "first n", "last n", "range", "iterate" Bugs: Using n+1 instead of n, <= instead of < See: bug_patterns.md

Inverted Logic

Indicators: "is_", "has_", "can_", boolean predicates Bugs: Returning opposite value, wrong comparison See: bug_patterns.md

Boundary Mismatches

Indicators: "[a, b]", "[a, b)", range specifications Bugs: Inclusive when should be exclusive See: bug_patterns.md

Show full SKILL.md (355 more words)Show less
Wrong Operator

Indicators: "sum", "product", "average", "ratio" Bugs: Using * instead of /, or instead of and See: bug_patterns.md

Missing Edge Cases

Indicators: "process", "find", "calculate" Bugs: Not handling empty/null input, division by zero See: bug_patterns.md

Detection Strategies

Strategy 1: Name-Behavior Analysis
  1. Parse function/variable name
  2. Infer expected behavior from naming conventions
  3. Analyze implementation
  4. Flag if behavior contradicts name

Example: is_even should return True for even numbers

Strategy 2: Comment-Code Verification
  1. Extract comments and docstrings
  2. Parse stated intent
  3. Verify implementation matches
  4. Report discrepancies

Example: Comment says "first n elements" but code returns n+1

Strategy 3: Boundary Checking
  1. Identify range specifications in docs
  2. Check implementation boundaries
  3. Verify inclusive/exclusive semantics

Example: Doc says "[start, end)" but code uses <= for end

Strategy 4: Operator Validation
  1. Identify operation from name/docs
  2. Verify correct operator used
  3. Check initialization values

Example: calculate_average should use / not *

Strategy 5: Edge Case Coverage
  1. Identify potential edge cases
  2. Check if code handles them
  3. Flag missing checks

Example: Function processing list should handle empty list

Multi-Language Support

The skill works across languages by focusing on semantic patterns:

Python: Docstrings, naming conventions, type hints JavaScript/TypeScript: JSDoc, naming, type annotations Java: Javadoc, naming conventions, method signatures C/C++: Doxygen comments, naming, function signatures Go: Doc comments, naming conventions Rust: Doc comments, naming, type system

Language-specific syntax is handled, but detection focuses on universal semantic patterns.

Report Format

For each bug, provide:

BUG: <Bug type> in <function/location>

Location: <File:line or function name>
Intent: <What code should do based on names/docs>
Actual: <What code actually does>
Bug Type: <Category of semantic error>
Severity: <High/Medium/Low>

Explanation:
<Detailed explanation of the mismatch>

Fix:
<Suggested code correction>

References

Detailed bug pattern catalog:

  • bug_patterns.md: Comprehensive catalog of semantic bug patterns with examples

Load this reference when:

  • Need detailed examples of specific bug types
  • Working with unfamiliar bug patterns
  • Want to see more language-specific examples

Tips

  1. Check names first: Function/variable names are strong intent signals
  2. Trust documentation: Docstrings usually state correct behavior
  3. Look for contradictions: Mismatch between name and implementation is red flag
  4. Verify boundaries: Range specifications are common source of bugs
  5. Consider edge cases: Empty/null input often reveals bugs
  6. Check operators: Arithmetic and logical operators are frequently wrong
  7. Test predicates: Boolean functions should match their names
  8. Validate loops: Loop boundaries are prone to off-by-one errors

© ArabelaTso, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/semantic-bug-detector of ArabelaTso/Skills-4-SE.

  • SKILL.md
  • references/bug_patterns.md

Open the folder on GitHubat commit 4f38503

Compare with similar skills

Semantic Bug Detector next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Semantic Bug Detector compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Semantic Bug Detector this skillArabelaTso/Skills-4-SE253—~2.8kAutomated safety check: PassApache-2.0
Diagram Designcathrynlavery/diagram-design45k1 repos~7.5kAutomated safety check: PassMIT
Simple Englishmoeru-ai/airi50k2 repos~4.6kAutomated safety check: PassMIT
Get API Docs with chubandrewyng/context-hub14k2 repos~775Automated safety check: PassMIT
Doc SyncJetBrains/ideavim10k2 repos~2.6kAutomated safety check: PassMIT
Mailspring App ScreenshotsFoundry376/Mailspring18k—~1.5kAutomated safety check: PassGPL-3.0

Similar skills

  • Diagram Design

    cathrynlavery/diagram-design

    Creates branded diagrams, from architecture, flowchart and sequence to charts and maps, as self-contained HTML with inline SVG, with import from draw.io, Mermaid and Excalidraw.

    45k GitHub starsUsed in 1 repo~7.5k tokens
    DevelopmentAuto-check passed
  • Simple English

    moeru-ai/airi

    Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.

    50k GitHub starsUsed in 2 repos~4.6k tokens
    DevelopmentAuto-check passed
  • Get API Docs with chub

    andrewyng/context-hub

    Fetches current documentation for third-party APIs and SDKs with the chub CLI before the agent writes code against them, instead of relying on remembered API shapes.

    14k GitHub starsUsed in 2 repos~775 tokens
    DevelopmentAuto-check passed
  • Doc Sync

    JetBrains/ideavim

    Official

    Keeps IdeaVim documentation in sync with code changes. An agent skill from JetBrains/ideavim.

    10k GitHub starsUsed in 2 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Mailspring App Screenshots

    Foundry376/Mailspring

    Captures screenshots of the running Mailspring dev app for docs, PRs or visual checks by launching it with a debugging port, driving the UI and clipping to an element.

    18k GitHub stars~1.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Draw.io Diagram Studio

    Agents365-ai/drawio-skill

    Creates and edits editable draw.io diagrams from descriptions, code, infrastructure files, SQL and API schemas, with sync, review, test and export tools.

    10k GitHub stars~2.4k tokensUpdated 6 days ago
    DevelopmentAuto-check: notes

More from ArabelaTso/Skills-4-SE

All 150 skills in this repo
  • Framework Migration Assistant

    ArabelaTso/Skills-4-SE

    Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI).

    253 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Metamorphic Test Generator

    ArabelaTso/Skills-4-SE

    Generate test cases using metamorphic testing by applying transformations based on metamorphic properties.

    253 GitHub stars~798 tokensUpdated 1 mo ago
    Auto-check passed
  • Reproduction Trace Instrumenter

    ArabelaTso/Skills-4-SE

    Instruments programs to capture execution traces specifically for reproducing reported bugs, enabling consistent replay and diagnosis of failures.

    253 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Spring Mvc To Boot Migrator

    ArabelaTso/Skills-4-SE

    Automatically migrate Spring MVC applications to Spring Boot.

    253 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • State Snapshot Instrumenter

    ArabelaTso/Skills-4-SE

    Instrument programs (Python, C/C++, Java) to capture snapshots of key program states at runtime, including variables, memory, and call stacks.

    253 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Semantic Bug Detector

What does Semantic Bug Detector do?

Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation. Semantic Bug Detector is an agent skill from ArabelaTso/Skills-4-SE. Detect semantic-level bugs by analyzing whether code behavior matches its intended purpose inferred from function/variable names, comments, docstrings, and documentation.

When should I use Semantic Bug Detector?

Semantic Bug Detector fits situations like: find logic errors where implementation contradicts stated intent; identify off-by-one errors and boundary mismatches; detect inverted logic; wrong operators.

How do I install Semantic Bug Detector in Claude Code?

Run `npx skills add ArabelaTso/Skills-4-SE --skill semantic-bug-detector -a claude-code`. Or copy the skill folder (skills/semantic-bug-detector in ArabelaTso/Skills-4-SE) into .claude/skills/semantic-bug-detector in your project. Claude Code loads it when a task matches its description.

How do I install Semantic Bug Detector in Codex?

Run `npx skills add ArabelaTso/Skills-4-SE --skill semantic-bug-detector -a codex`. Or copy the skill folder (skills/semantic-bug-detector in ArabelaTso/Skills-4-SE) into .agents/skills/semantic-bug-detector in your project. Codex loads it when a task matches its description.

Can I use Semantic Bug Detector in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ArabelaTso/Skills-4-SE --skill semantic-bug-detector -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/semantic-bug-detector, .gemini/skills/semantic-bug-detector, .github/skills/semantic-bug-detector and .opencode/skills/semantic-bug-detector in your project.

What does Semantic Bug Detector need to run?

SKILL.md names no scripts, command-line tools or credentials: Semantic Bug Detector is instructions for the agent only. Our summary lists: Python 3.

Does Semantic Bug Detector access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Semantic Bug Detector safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Semantic Bug Detector use?

Semantic Bug Detector is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Semantic Bug Detector use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.3k tokens, read only when the agent opens those files.

What are the alternatives to Semantic Bug Detector?

Skills that share tags, products or a category with Semantic Bug Detector: Diagram Design (cathrynlavery/diagram-design, 45k stars), Simple English (moeru-ai/airi, 50k stars), Get API Docs with chub (andrewyng/context-hub, 14k stars) and Doc Sync (JetBrains/ideavim, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Semantic Bug Detector?

ArabelaTso (a GitHub user) maintains it in ArabelaTso/Skills-4-SE, which has 253 GitHub stars. The repository holds 150 skills in this directory. The repository was last updated on August 21, 2026.

Source: ArabelaTso/Skills-4-SE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.