KnowHows is a Slack application that tracks your GitHub repositories and allows users to search for other developers who have knowledge about certain parts of code, such as an API or software concept.
Website
.appsettings.example.json
as appsettings.json
.AppSettings
section. The callback URLs for GitHub and Slack will be {WEBSITE_BASE_URL}/api/github/authenticate
and {WEBSITE_BASE_URL}/api/slack/authenticate
respectively.schema.xml
and solrconfig.xml
provided in the docs. appsettings.json
. This project communicates through an authenticated user. Setting this up is left to the installer, for simple open connections configure the connection in SolrManager.cs
to be just your connection string.{WEBSITE_BASE_URL}/api/slack/processmessage
.KnowHows.sln
with Visual Studio and click Build
.Website
.dotnet build
. Alternatively, you can run dotnet publish
to prepare the website for deployment.appsettings.json
is present in the directory that you'll be running the website from and that srcml
is available on your PATH.dotnet run
in order to start the website.From a Slack channel with KnowHows installed, the app can be invoked with the slash command /knowhows
. When you invoke the command for the first time, the app will prompt for access to your GitHub account. The available commands are:
/knowhows to [query]
- Performs a natural language search on a concept, such as write to a file
. This produces a ranked list of tracked users indicating files that they have changed./knowhows search [query]
- Performs a literal search on a code term, such as an API name like FileWriter
. This produces a ranked list of tracked users indicating files that they have changed./knowhows track [repository_name | *]
- Tracks and indexes one or all (*) of your repositories. When no repository is specified, a list of your untracked repositories is returned./knowhows untrack [repository_name | *]
- Untracks and unindexes one or all (*) of your repositories. When no repository is specified, a list of your currently tracked repositories is returned./knowhows help
- Prints a brief description of each of these commands.