{"id":17134371,"url":"https://github.com/brianium/psssst","last_synced_at":"2025-10-11T16:39:26.330Z","repository":{"id":146515321,"uuid":"81769923","full_name":"brianium/psssst","owner":"brianium","description":"Keep your team abreast of open PRs that need review","archived":false,"fork":false,"pushed_at":"2017-02-25T21:30:10.000Z","size":17,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-11T16:39:21.934Z","etag":null,"topics":["cli","clojure","github-api","slack-bot"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brianium.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-02-13T00:51:53.000Z","updated_at":"2023-02-16T01:40:54.000Z","dependencies_parsed_at":"2023-04-28T22:02:25.253Z","dependency_job_id":null,"html_url":"https://github.com/brianium/psssst","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/brianium/psssst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fpsssst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fpsssst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fpsssst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fpsssst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brianium","download_url":"https://codeload.github.com/brianium/psssst/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fpsssst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007970,"owners_count":26084369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","clojure","github-api","slack-bot"],"created_at":"2024-10-14T19:44:43.560Z","updated_at":"2025-10-11T16:39:26.294Z","avatar_url":"https://github.com/brianium.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# psssst [![Build Status](https://travis-ci.org/brianium/psssst.svg?branch=master)](https://travis-ci.org/brianium/psssst)\n\nA command line application to keep your team abreast of open pull requests that need review. Currently communicates only via slack.\n\n## Building\n\nPsssst uses [lein-binplus](https://github.com/BrunoBonacci/lein-binplus) to create a self contained\nexecutable.\n\nAfter cloning the project, run `lein bin` to build the executable to `target`. The executable will be named `psssst`.\n\n## Usage\n\n```\n$ psssst -h\nPssst polls for pull requests in need of review.\n\nUsage: psssst [options]\n\nOptions:\n  -c, --config FILE  /Users/brian/projects/psssst/psssst.clj  psssst config file\n  -h, --help\n\nSee https://github.com/brianium/psssst for more information.\n```\n\n### Configuration\n\nBy default, `psssst` will look for a configuration file in the current working directory named `psssst.clj`. Alternatively, a configuration file can be passed via the `--config` option.\n\nConfiguration files only need a single `hash-map`.\n\n```clojure\n{:github-token \"github-token\"\n :slack-token \"slack-token\"\n :interval 3600\n :org \"netrivet\"\n :users {\"brianium\" \"brian\"\n         \"jaredh159\" \"jared\"\n         \"meatwad5675\" \"matt\"}\n :username \"Psssst Bot\"\n :icon_emoji \":robot_face\"}\n```\n\nThe only required keys are `:github-token`, `:slack-token`, `:org`, and `:users`.\n\nConfiguration keys are used as follows:\n\n**github-token** - This is a token that authorizes `psssst` to poll github for pull requests that do not have an `assignee`.\n\n**slack-token** - This is a token that authorizes `psssst` to send messages via slack.\n\n**interval** - This tells `psssst` how often to check for pull requests and send messages. Intervals are given as seconds. A larger number is encouraged here for the sake of your team's sanity. Defaults to `3600` or every hour.\n\n**org** - The organization to poll for open pull requests.\n\n**users** - A map mapping github user names to slack user names. The key will always be the github user name, and the value will be the slack user name. This is used to send messages, as well as exclude the pull request author from receiving their own pull request messages.\n\n**username** - This is the user name that slack messages will be sent as. Defaults to `Psssst`.\n\n**icon_emoji** - This is a slack emoji of the form `:emoji_name` that will be used when a message is sent. Defaults to `:robot_face`.\n\n## How It Works\n\n`psssst` is ideally run in the background. It checks github on a configured interval for pull requests that have no `assignee`. If any pull requests meet this criteria, the group of configured users will be slack messaged with links to those pull requests. Pull request authors are excluded from receiving messages about pull requests they have authored.\n\nThe point of the tool is to encourage members of a team to assign themselves to pull requests. This tool encourages peer review without showing down each other's throats (provided your `:interval` setting is high enough :P).\n\n## Testing\n\nTests can be run using `lein test`. During development, `lein test-refresh` can be used to run tests\nas changes as are made.\n\n## A Note On Slack\n\nSlack's usage states that *spammy* applications may be rate limited if more than 1 message is sent within a second, but short bursts are acceptable. This tool was built for a small team of 3 people. It has not been tested for larger organizations, and I suspect more users will result in more spammy flags being raised.\n\nSince this tool is meant to be an infrequent reminder, it seems ok and trivial to stagger the rate at which messages are sent if a larger organization needs to make use of such a tool.\n\n## Contributing\n\nPull requests and issues welcome :)\n\n## License\n\nCopyright © 2017 Brian Scaturro\n\nDistributed under the Eclipse Public License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianium%2Fpsssst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianium%2Fpsssst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianium%2Fpsssst/lists"}