{"id":18557511,"url":"https://github.com/brenns10/slacksoc","last_synced_at":"2026-05-16T17:05:21.043Z","repository":{"id":57553143,"uuid":"85243649","full_name":"brenns10/slacksoc","owner":"brenns10","description":"Slack bot framework. Runs on YAML and procrastination.","archived":false,"fork":false,"pushed_at":"2017-09-23T18:13:52.000Z","size":90,"stargazers_count":3,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-16T14:52:26.358Z","etag":null,"topics":["bot","golang","slack"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brenns10.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-16T21:34:49.000Z","updated_at":"2021-02-05T23:14:48.000Z","dependencies_parsed_at":"2022-09-26T18:51:46.799Z","dependency_job_id":null,"html_url":"https://github.com/brenns10/slacksoc","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/brenns10/slacksoc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenns10%2Fslacksoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenns10%2Fslacksoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenns10%2Fslacksoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenns10%2Fslacksoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brenns10","download_url":"https://codeload.github.com/brenns10/slacksoc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenns10%2Fslacksoc/sbom","scorecard":{"id":252278,"data":{"date":"2025-08-11","repo":{"name":"github.com/brenns10/slacksoc","commit":"d016b5b87d4d6a73bb9d1ba48b056d0656478e78"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-17T08:47:12.101Z","repository_id":57553143,"created_at":"2025-08-17T08:47:12.101Z","updated_at":"2025-08-17T08:47:12.101Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33111497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","golang","slack"],"created_at":"2024-11-06T21:37:15.611Z","updated_at":"2026-05-16T17:05:21.009Z","avatar_url":"https://github.com/brenns10.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"slacksoc [![GoDoc](https://godoc.org/github.com/brenns10/slacksoc?status.svg)](https://godoc.org/github.com/brenns10/slacksoc)\n========\n\nThis is a new, and maybe improved Slack bot library for Go.\n\nFeatures:\n- Plugin based architecture, providing built-in documentation for users\n- Configure plugins through a single YAML file\n- Entire Slack API exposed to plugins\n- Bot operations are thread-safe, allowing plugins to leverage concurrency\n\nIncluded Plugins:\n- Triggers / responses, like the original Slackbot\n- Send [CWRU/Yelp Love](https://github.com/hacsoc/love)\n- Create GitHub issues\n\nUsage\n-----\n\nIf all you would like to do is use the included plugins, usage is simple. First,\ninstall the `slacksoc` binary:\n\n    go get github.com/brenns10/slacksoc/slacksoc\n\nCreate a YAML configuration file - see [sample.yaml](sample.yaml) for an\nexample. Be sure that, at a minimum, the config contains your Slack API token,\nand an entry with appropriate configuration for each plugin you want to use.\nFinally, run the bot like this:\n\n    slacksoc config.yaml\n\n### Using External Plugins\n\nIf you would like to implement your own plugins, or use a third-party plugin (if\nthey ever exist), you will need to write a small amount of boilerplate code.\nThis is because Go has no support for dynamic module loading, and therefore\nplugins need to be registered with the bot before they can be used. Here is a\nsample:\n\n```go\npackage main\n\nimport \"github.com/brenns10/slacksoc/lib\"\nimport \"github.com/brenns10/slacksoc/plugins\"\n\nfunc main() {\n    plugins.Register()\n    lib.Register(\"plugin name\", PluginConstructor)\n    lib.Run()\n}\n```\n\n### Developing Plugins\n\nThis slack bot implementation focuses on providing a simple and powerful\nexperience for plugin developers. Currently, the plugin interface is still in\nflux, but it will soon stabilize. Documentation on plugin development can be\nfound in the [Wiki](https://github.com/brenns10/slacksoc/wiki).\n\n- [GoDoc (lib)](https://godoc.org/github.com/brenns10/slacksoc/lib)\n- [GoDoc (plugins)](https://godoc.org/github.com/brenns10/slacksoc/plugins)\n\n### Contributing\n\nContributions to this repository are welcomed! Changes ought to be tested on a\nreal Slack team before being submitted. Plugin contributions will be accepted at\nmy (Stephen's) sole discretion, since custom plugins are easy to use without\nbeing part of the core plugin set. See the Github issues for suggestions on\nbugs, features, and plugins I'm interested in.\n\nPlease make sure that when you do development, you install the pre-commit hooks:\n\n```\n$ pip install --user pre-commit\n$ pre-commit install\n```\n\nThis ensures well-formatted code. You need only do this the first time you check\nout the repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenns10%2Fslacksoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenns10%2Fslacksoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenns10%2Fslacksoc/lists"}