npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tailor-ai

v0.0.6

Published

Tailor is an open-source AI code reviewer for GitHub pull requests built on Typescript & Ollama. Push pull request reviews and descriptions from the command line.

Downloads

8

Readme

Tailor

Tailor is an open-source AI code reviewer for GitHub pull requests built on Typescript & Ollama. Push pull request reviews and descriptions from the command line.

Install

To test locally, clone the repo and run:

npm install -g .

Then:

cp .env.example .env

You will need to set the following env variables:

# GitHub username
GITHUB_LOGIN=
# Username if working on a repo you own, otherwise repo owner
GITHUB_OWNER=
# Repository owned by the owner set above
GITHUB_REPOSITORY=
# Personal Access Token
GITHUB_PAT=

Commands

  1. Open pull requests
  • The below command lists all open PRs created by the user set in the GITHUB_LOGIN environment variable with a format of: #pr-number branch-name - PR Title
open-pulls

--------------------
# example response

#8 feature-slack-auth - Integrate Slack w/ Oauth 2.0
#9 fix-tooltip-wrapper - Fix non-fading tooltip bug
  1. Generate and push a description
  • This command will push a description to your PR, but it may or may not be accurate at the moment (😂), so be careful. I am experimenting with different models (and prompt engineering) in order to provide a good suggestion for the model most likely to get this command right.
describe <pr-number>

In-progress commands

  1. Generate and push a PR review
  • This command doesn't work quite yet (although, technically, you can still run it). Currently, tailorai can pull a PR diff from github, but the diff won't be reviewed. I am experimenting with parsing logic, but as it stands, reviews are performed on chunks rather than the whole document, and context is lost. A better plan is required for this to be effective.
review <pr-number>

Ollama

Installation directions

Roadmap

I am currently working to port over the work I've already completed in my initial project (read below), but for now:

  1. CLI
  • tailorai npm package.
  • ✅ Generate CLI commands with commander.
  • ✅ Get a list of open PRs by executing open-pulls to reduce the cumbersome nature of searching for PR numbers. Response is a list with the format: #pr-number branch-name - PR Title.
  • Trigger a review by executing review [pull request number].
    • ✅ Get diff
    • Reviews won't work until the Ollama integration is finished.
    • Should this include an option to iterate through diff chunks? Not all chunks need a review.
  • Add PR description with describe [pull request number].
    • ✅ Get diff
    • ✅ Generate description and push to PR.
      • Prompt needs to be improved for accuracy.
    • Should the describe command response be editable before pushing to GH?
  1. Diff parser & GitHub API
  • Currently porting over a custom diff parser that will interact with the Ollama models.
  • Diff API.
  1. Customization
  • Allow users to choose what model (including custom models) reviews their code.
  • Implement something similar to .gitignore ignore code that should never be reviewed.
  1. Retrieval Augmented Generation
  • Implement RAG (with Pinecone?) to provide Tailor with additional context from the codebase it is installed on.
  1. Repo quality of life
  • ✅ GitHub Action for publishing to npm.
  • Test suite.
  • Split roadmap into it's own .md file.
  • ✅ Refactor index.ts.
  • Branch protection.

History

Rails/NextJS & OpenAI

For several months I've experimented with building a full-fledged web app in different ecosystems (NextJS & Rails). I had achieved my goal of building a code review platform that could: (1) review pull request diffs, or even allow devs to push straight to main and identify issues before deploys, (2) provide a simple UI with a fine-grain toolset for reviewing even the smallest of diff chunks, and (3) remain flexible enough to support any GitHub workflow. The real challenge remained in keeping the use of OpenAI's API cost-effective, and is a challenge I found few solutions for as PR diffs can be quite large.

With GitHub's recent release of their own code review tools, I believe it makes more sense to pivot and build something that doesn't need to compete! The ecosystem of free, open-source AI tools has grown tremendously in 2023, and I'm hoping Tailor will join the current cadre as an effective tool that empowers developers to build well and build quickly - for free.

Pivoting with Ollama

We use APIs like OpenAI's because it's nearly impossible to host Large Language Models without serious funding and complex tooling, but tools like Ollama and Langchain make this possible on local machines with a few gigs (2GB-70GB depending on the model lol) of extra space. Continuing with the web app paradigm would mean running at least two servers (Tailor & Ollama) on top of any other servers required for your own development. By pivoting away from a web app (ultimately losing the UI) and instead focusing on an installable package with command line tools, we reduce the complexity needed to run the app by a significant amount.

Enterprise

I am working on a more robust team solution as well. If you are interested in discussing possible solutions for specific use cases, please email me at [email protected].