Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Bot

Bot is a GitHub App which enables the automation of interviewing workflows.

In some ways, it can be a viable replacement for expensive technical assessment or remote interview platforms. By leveraging GitHub's functionality, technical interviews happen in a platform more familiar to developers.

Technical assessments are essentially GitHub template repositories. There are no limitations imposed from Bot as to the nature or content of the assessment, so you are free to customize as much as you need. Out of the box Bot works well for live coding assignments, take-home coding assignments, code review assignments.

How it works

Bot listens and responds to slash commands present in issues or issue comments of select repositories of an organization. With these commands, interviewers are able to create an assignment for a candidate (a GitHub repository), invite candidates as collaborators, and after conducting the interview, review and grade assignments.

Anatomy of an assessment

Assessments are Github template repositories. They may provide scaffolding, tests, benchmarks or automation.

We cover a variety of use cases with the example assessments below:

For a deep dive into each command please refer to the reference documentation.

Contributing

Bot is built in Node.js and the wonderful Probot framework. Install any dependencies with npm.

npm install

Running Bot locally should be easy! Set the environment variables described in .env.example. During first run, many of these variables can be discovered by Probot itself. But make sure to modify app.yml to customize your instance.

npm start

Bot should be alive and kicking at port 8080!

Where next?

This project is in active development. Therefore new commands may be added, or existing commands may be modified. For a full list of the supported functionality is found by invoking the /help command.

About

BEAT Interviewing Bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages