Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
70 of your 103 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 4.85s · analysis 6.22s · 10.3 MB · GitHub preflight 424ms

anthropics/skills

https://github.com/anthropics/skills · scanned 2026-06-05 04:46 UTC (4 hours, 17 minutes ago) · 10 languages

240 findings (96 legacy + 144 scanner) 23rd percentile · Python · small (2-20K LoC) Scanner says 97 (lower by 38)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 4 hours, 17 minutes ago · v2 · 168 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 40.0 0.15 6.00
security_score 52.9 0.25 13.22
testing_score 70.0 0.20 14.00
documentation_score 62.0 0.15 9.30
practices_score 70.0 0.15 10.50
code_quality 60.0 0.10 6.00
Overall 1.00 59.0
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Repository scanned at 97.1/100 with 77.8% coverage. It contains 670 nodes across 0 cross-layer flows, written primarily in mixed languages. Engine surfaced 72 findings — concentrated in quality (35), software (32), security (2). Risk profile is low: 0 critical, 0 high, 13 medium. Recommended next step: open the quality layer findings first — that's where the highest-impact wins live.

Showing 148 of 168 findings. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Legacy quality quality conf 1.00 ✓ Repobility Missing import: `html` used but not imported
The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes.
skills/skill-creator/eval-viewer/generate_review.py:343 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Missing import: `warnings` used but not imported
The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes.
skills/xlsx/scripts/office/validators/base.py:827 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Missing import: `warnings` used but not imported
The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes.
skills/pptx/scripts/office/validators/base.py:827 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Missing import: `warnings` used but not imported
The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes.
skills/docx/scripts/office/validators/base.py:827 qualitylegacy
critical Legacy software dependency conf 0.88 pillow: GHSA-3f63-hfp8-52jq
Arbitrary Code Execution in Pillow
skills/slack-gif-creator/requirements.txt dependencylegacy
low Legacy quality quality conf 1.00 ✓ Repobility [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
Review and fix per the pattern semantics. See CWE-755 / for context.
skills/docx/scripts/office/validators/redlining.py:56 qualitylegacy
low Legacy quality quality conf 1.00 ✓ Repobility [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
Review and fix per the pattern semantics. See CWE-755 / for context.
skills/docx/scripts/office/unpack.py:87 qualitylegacy
low Legacy quality quality conf 1.00 ✓ Repobility [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
Review and fix per the pattern semantics. See CWE-755 / for context.
skills/docx/scripts/comment.py:116 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility [MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and SystemExit from working.
Review and fix per the pattern semantics. See CWE-705 / for context.
skills/mcp-builder/scripts/connections.py:44 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility [MINED023] Xxe Sax Default: xml.etree.ElementTree.parse / xml.sax / lxml without disable-entities — XXE attack.
Review and fix per the pattern semantics. See CWE-611 / A05:2021 for context.
skills/xlsx/scripts/office/validators/pptx.py:72 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility [MINED023] Xxe Sax Default: xml.etree.ElementTree.parse / xml.sax / lxml without disable-entities — XXE attack.
Review and fix per the pattern semantics. See CWE-611 / A05:2021 for context.
skills/pptx/scripts/office/validators/pptx.py:72 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility [MINED023] Xxe Sax Default: xml.etree.ElementTree.parse / xml.sax / lxml without disable-entities — XXE attack.
Review and fix per the pattern semantics. See CWE-611 / A05:2021 for context.
skills/docx/scripts/office/validators/pptx.py:72 qualitylegacy
high Legacy security path_traversal conf 0.80 [SEC013] Path Traversal — User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files.
Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads.
skills/pdf/scripts/create_validation_image.py:13 path_traversallegacy
low Legacy quality quality conf 1.00 [SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0).
Use execFile / spawn with separate args array; never pass shell strings.
skills/algorithmic-art/templates/generator_template.js:133 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.add_frame` used but never assigned in __init__
Method `add_frames` of class `GIFBuilder` reads `self.add_frame`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/slack-gif-creator/core/gif_builder.py:57 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.end_headers` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.end_headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:377 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.end_headers` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.end_headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:356 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.end_headers` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.end_headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:347 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.headers` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:363 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.optimize_colors` used but never assigned in __init__
Method `save` of class `GIFBuilder` reads `self.optimize_colors`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/slack-gif-creator/core/gif_builder.py:221 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.path` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.path`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:362 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.path` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.path`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:349 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.path` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.path`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:333 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.rfile` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.rfile`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:364 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_error` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.send_error`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:380 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_error` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_error`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:359 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:376 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:375 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:355 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:354 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:346 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_header` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_header`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:345 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_response` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.send_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:374 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_response` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.send_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:371 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_response` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:353 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.send_response` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.send_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:344 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.wfile` used but never assigned in __init__
Method `do_POST` of class `ReviewHandler` reads `self.wfile`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:378 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.wfile` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.wfile`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:357 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility `self.wfile` used but never assigned in __init__
Method `do_GET` of class `ReviewHandler` reads `self.wfile`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
skills/skill-creator/eval-viewer/generate_review.py:348 qualitylegacy
high Legacy software dependency conf 0.88 mcp: GHSA-3qhf-m339-9g5v
MCP Python SDK vulnerability in the FastMCP Server causes validation error, leading to DoS
skills/mcp-builder/scripts/requirements.txt dependencylegacy
high Legacy software dependency conf 0.88 mcp: GHSA-9h52-p55h-vw2f
Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection by default
skills/mcp-builder/scripts/requirements.txt dependencylegacy
high Legacy software dependency conf 0.88 mcp: GHSA-j975-95f5-7wqh
MCP Python SDK has Unhandled Exception in Streamable HTTP Transport, Leading to Denial of Service
skills/mcp-builder/scripts/requirements.txt dependencylegacy
high Legacy software dependency conf 0.88 pillow: GHSA-44wm-f244-xhp3
Pillow buffer overflow vulnerability
skills/slack-gif-creator/requirements.txt dependencylegacy
high Legacy software dependency conf 0.88 pillow: PYSEC-2023-175
Pillow versions before v10.0.1 bundled libwebp binaries in wheels that are vulnerable to CVE-2023-5129 (previously CVE-2023-4863). Pillow v10.0.1 upgrades the bundled libwebp binary to v1.3.2.
skills/slack-gif-creator/requirements.txt dependencylegacy
high Legacy software dependency conf 0.88 pillow: PYSEC-2026-165
Pillow is a Python imaging library. Prior to version 12.2.0, if a font advances for each glyph by an exceeding large amount, when Pillow keeps track of the current position, it may lead to an integer overflow. This issue has been patched in version 12.2.0.
skills/slack-gif-creator/requirements.txt dependencylegacy
medium Legacy quality error_handling conf 1.00 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level.
Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types.
skills/pptx/scripts/office/unpack.py:87 error_handlinglegacy
medium Legacy quality error_handling conf 1.00 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level.
Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types.
skills/docx/scripts/office/validators/redlining.py:56 error_handlinglegacy
medium Legacy quality error_handling conf 1.00 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level.
Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types.
skills/docx/scripts/office/unpack.py:87 error_handlinglegacy
medium Legacy security path_traversal conf 1.00 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
Validate extracted paths with os.path.realpath() and ensure they stay within the target directory.
skills/docx/scripts/office/validators/redlining.py:64 path_traversallegacy
medium Legacy security path_traversal conf 1.00 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
Validate extracted paths with os.path.realpath() and ensure they stay within the target directory.
skills/docx/scripts/office/validate.py:74 path_traversallegacy
medium Legacy security path_traversal conf 1.00 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
Validate extracted paths with os.path.realpath() and ensure they stay within the target directory.
skills/docx/scripts/office/unpack.py:54 path_traversallegacy
medium Legacy quality quality conf 1.00 [SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all exception block that silently returns success or no-ops. AI agents reach for this pattern when a flaky test or an unfamiliar API throws — wrap, swallow, return success. Real bugs are masked, observability is destroyed, and callers think the operation worked. CWE-396 (improperly-generalized exception). Distinct from intentional fallback because there's no log line and the success value is fabricated.
Catch the specific exception type, log at error level with full exception info, and return a failure-shaped result. If the operation is genuinely best-effort, log at warning and document why in a comment so the next reader (or scanner) knows.
skills/docx/scripts/accept_changes.py:49 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/pptx/scripts/office/validators/redlining.py:65 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/pptx/scripts/office/validators/pptx.py:195 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/pptx/scripts/office/unpack.py:78 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/pptx/scripts/thumbnail.py:246 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/pptx/scripts/thumbnail.py:90 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/helpers/simplify_redlines.py:43 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/helpers/merge_runs.py:38 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/docx.py:174 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/docx.py:197 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:564 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:454 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:357 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:154 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:784 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/base.py:583 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/redlining.py:65 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/validators/pptx.py:195 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/office/unpack.py:78 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/docx/scripts/accept_changes.py:52 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/mcp-builder/scripts/evaluation.py:118 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/mcp-builder/scripts/evaluation.py:74 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/slack-gif-creator/core/validators.py:56 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/slack-gif-creator/core/validators.py:60 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/skill-creator/scripts/run_eval.py:223 qualitylegacy
high Legacy quality quality conf 1.00 ✓ Repobility Bare except continues silently
Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
skills/skill-creator/scripts/package_skill.py:106 qualitylegacy
medium Legacy software dependency conf 0.88 pillow: GHSA-r73j-pqj5-w3x7
Pillow has a PDF Parsing Trailer Infinite Loop (DoS)
skills/slack-gif-creator/requirements.txt dependencylegacy
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/docx/scripts/office/soffice.py:14
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/docx/scripts/office/validators/redlining.py:138
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/pptx/scripts/office/soffice.py:14
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/pptx/scripts/office/validators/redlining.py:138
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/pptx/scripts/thumbnail.py:161
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/skill-creator/scripts/run_eval.py:85
`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/xlsx/scripts/office/soffice.py:14
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/xlsx/scripts/office/validators/redlining.py:138
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer quality integrity conf 1.00 Network/subprocess call without timeout or try/except — skills/xlsx/scripts/recalc.py:92
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
integrityfragile-runtimerobustness
medium 9-layer security coverage conf 1.00 No auth library detected
The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). Either auth lives in custom code, in a separate service, or is missing.
coverageauth
medium 9-layer cicd coverage conf 1.00 No CI/CD pipelines detected
No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints.
coverage
medium 9-layer quality tests conf 1.00 Very low test-to-source ratio
4 test file(s) for 69 source file(s) (ratio 0.06). Consider adding integration or unit tests for critical paths.
testscoverage
low Legacy quality documentation No LICENSE file
Add a LICENSE file to your repository. Use choosealicense.com to pick the right license (MIT for permissive, Apache 2.0 for patent protection, GPL for copyleft).
documentationlegacy
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: skills/pdf/scripts/check_fillable_fields.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: skills/webapp-testing/examples/element_discovery.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: skills/webapp-testing/examples/static_html_automation.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer quality integrity conf 1.00 Legacy-named symbol `xml_copy` in skills/docx/scripts/office/validators/base.py:705
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
integritylegacy-markerdead-code
low 9-layer quality integrity conf 1.00 Legacy-named symbol `xml_copy` in skills/pptx/scripts/office/validators/base.py:705
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
integritylegacy-markerdead-code
low 9-layer quality integrity conf 1.00 Legacy-named symbol `xml_copy` in skills/xlsx/scripts/office/validators/base.py:705
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
integritylegacy-markerdead-code
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validate.py:main, skills/pptx/scripts/office/validate.py:main, skills/xlsx/scripts/office/validate.py:main This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). C…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/soffice.py:get_soffice_env, skills/pptx/scripts/office/soffice.py:get_soffice_env, skills/xlsx/scripts/office/soffice.py:get_soffice_env This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see htt…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/soffice.py:run_soffice, skills/pptx/scripts/office/soffice.py:run_soffice, skills/xlsx/scripts/office/soffice.py:run_soffice This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/a…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/pack.py:pack, skills/pptx/scripts/office/pack.py:pack, skills/xlsx/scripts/office/pack.py:pack This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). Consolidate o…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/unpack.py:unpack, skills/pptx/scripts/office/unpack.py:unpack, skills/xlsx/scripts/office/unpack.py:unpack This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). C…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/helpers/simplify_redlines.py:get_tracked_change_authors, skills/pptx/scripts/office/helpers/simplify_redlines.py:get_tracked_change_authors, skills/xlsx/scripts/office/helpers/simplify_redlines.py:get_tracked_change_authors …
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/helpers/simplify_redlines.py:infer_author, skills/pptx/scripts/office/helpers/simplify_redlines.py:infer_author, skills/xlsx/scripts/office/helpers/simplify_redlines.py:infer_author This is *the* AI-coder failure mode (4× m…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/pptx.py:validate_uuid_ids, skills/pptx/scripts/office/validators/pptx.py:validate_uuid_ids, skills/xlsx/scripts/office/validators/pptx.py:validate_uuid_ids This is *the* AI-coder failure mode (4× more duplication…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/pptx.py:validate_slide_layout_ids, skills/pptx/scripts/office/validators/pptx.py:validate_slide_layout_ids, skills/xlsx/scripts/office/validators/pptx.py:validate_slide_layout_ids This is *the* AI-coder failure m…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/pptx.py:validate_no_duplicate_slide_layouts, skills/pptx/scripts/office/validators/pptx.py:validate_no_duplicate_slide_layouts, skills/xlsx/scripts/office/validators/pptx.py:validate_no_duplicate_slide_layouts Th…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/pptx.py:validate_notes_slide_references, skills/pptx/scripts/office/validators/pptx.py:validate_notes_slide_references, skills/xlsx/scripts/office/validators/pptx.py:validate_notes_slide_references This is *the* …
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/redlining.py:repair, skills/pptx/scripts/office/validators/redlining.py:repair, skills/xlsx/scripts/office/validators/redlining.py:repair This is *the* AI-coder failure mode (4× more duplication in vibe-coded rep…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/redlining.py:validate, skills/pptx/scripts/office/validators/redlining.py:validate, skills/xlsx/scripts/office/validators/redlining.py:validate This is *the* AI-coder failure mode (4× more duplication in vibe-cod…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/base.py:validate, skills/pptx/scripts/office/validators/base.py:validate, skills/xlsx/scripts/office/validators/base.py:validate This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see …
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/base.py:repair, skills/pptx/scripts/office/validators/base.py:repair, skills/xlsx/scripts/office/validators/base.py:repair This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https:…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/base.py:validate_xml, skills/pptx/scripts/office/validators/base.py:validate_xml, skills/xlsx/scripts/office/validators/base.py:validate_xml This is *the* AI-coder failure mode (4× more duplication in vibe-coded …
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 6 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/helpers/merge_runs.py:merge_runs, skills/docx/scripts/office/helpers/simplify_redlines.py:simplify_redlines, skills/pptx/scripts/office/helpers/merge_runs.py:merge_runs, skills/pptx/scripts/office/helpers/simplify_redlines.p…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 6 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/helpers/merge_runs.py:traverse, skills/docx/scripts/office/helpers/simplify_redlines.py:traverse, skills/pptx/scripts/office/helpers/merge_runs.py:traverse, skills/pptx/scripts/office/helpers/simplify_redlines.py:traverse T…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 6 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/pptx.py:validate, skills/docx/scripts/office/validators/docx.py:validate, skills/pptx/scripts/office/validators/pptx.py:validate, skills/pptx/scripts/office/validators/docx.py:validate This is *the* AI-coder fail…
integrityduplicatedry
low 9-layer quality integrity conf 1.00 Near-duplicate function bodies in 6 places
Functions with the same first-5-line body hash: skills/docx/scripts/office/validators/base.py:repair_whitespace_preservation, skills/docx/scripts/office/validators/docx.py:repair_durableId, skills/pptx/scripts/office/validators/base.py:repair_whitespace_preservation, skills/pptx/scripts/office/vali…
integrityduplicatedry
low 9-layer software dead-code conf 1.00 Possibly dead Python function: add_frames
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/gif_builder.py:54 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: apply_squash_stretch
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:163 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: calculate_arc_motion
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:195 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: clear
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/gif_builder.py:267 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: create_blank_frame
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/frame_composer.py:15 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: create_gradient_background
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/frame_composer.py:99 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: do_GET
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/skill-creator/eval-viewer/generate_review.py:332 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: do_POST
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/skill-creator/eval-viewer/generate_review.py:361 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: draw_circle
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/frame_composer.py:32 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: draw_star
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/frame_composer.py:137 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: draw_text
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/frame_composer.py:61 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_back_in
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:140 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_back_in_out
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:154 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_back_out
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:147 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_cubic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:34 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_elastic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:78 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_out_bounce
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:71 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_out_cubic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:44 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_out_elastic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:92 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_out_quad
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:27 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_in_quad
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:17 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_out_cubic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:39 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_out_elastic
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:85 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: ease_out_quad
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:22 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: interpolate
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/easing.py:122 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: is_slack_ready
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/slack-gif-creator/core/validators.py:121 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: log_message
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/skill-creator/eval-viewer/generate_review.py:382 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: merge_runs
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/docx/scripts/office/helpers/merge_runs.py:16 dead-code
low 9-layer software dead-code conf 1.00 Possibly dead Python function: run_single_query
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
skills/skill-creator/scripts/run_eval.py:35 dead-code
low Legacy quality quality conf 1.00 ✓ Repobility [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context.
skills/xlsx/scripts/recalc.py:23 qualitylegacy
low Legacy quality quality conf 1.00 ✓ Repobility [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context.
skills/docx/scripts/accept_changes.py:21 qualitylegacy
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/3b3babf3-493f-481f-8ce6-856823dae1a3/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/3b3babf3-493f-481f-8ce6-856823dae1a3/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.