Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR Pilot Command-Line Interface #866

Open
1 task
ShellLM opened this issue Aug 3, 2024 · 1 comment
Open
1 task

PR Pilot Command-Line Interface #866

ShellLM opened this issue Aug 3, 2024 · 1 comment
Labels
AI-Agents Autonomous AI agents using LLMs Automation Automate the things CLI-UX Command Line Interface user experience and best practices code-generation code generation models and tools like copilot and aider Git-Repo Source code repository like gitlab or gh github gh tools like cli, Actions, Issues, Pages prompt Collection of llm prompts and notes prompt-engineering Developing and optimizing prompts to efficiently use language models for various applications and re Software2.0 Software development driven by AI and neural networks. source-code Code snippets

Comments

@ShellLM
Copy link
Collaborator

ShellLM commented Aug 3, 2024

PR Pilot Command-Line Interface

Unit Tests
PyPI
Python Version
License
Black
pre-commit

PR Pilot is simple and intuitive CLI that assists you in your daily work:

pilot edit main.py "Add docstrings to all functions and classes"

It works with the dev tools you trust and love - exactly when and where you want it.

pilot task "Find all bug issues on Github and Linear opened yesterday, post them to #bugs-daily on Slack."

Prompt templates let you can create powerful,
executable prompt-based commands, defined as Jinja templates:

I've made some changes and opened a new PR: #{{ env('PR_NUMBER') }}.

I need a PR title and a description that summarizes these changes in short, concise bullet points.
The PR description will also be used as merge commit message, so it should be clear and informative.

Use the following guidelines:

- Start title with a verb in the imperative mood (e.g., "Add", "Fix", "Update").
- At the very top, provide 1-sentence summary of the changes and their impact.
- Below, list the changes made in bullet points.

# Your task
Edit PR #{{ env('PR_NUMBER') }} title and description to reflect the changes made in this PR.

Send PR Pilot off to give any PR a title and description according to your guidelines:

➜ PR_NUMBER=153 pilot task -f generate-pr-description.md.jinja2 --save-command
✔ Task created: 7d5573d2-2717-4a96-8bae-035886420c74 (0:00:00.00)
✔ Update PR #153 title and description to reflect changes made (0:00:17.87)
╭──────────────────────────── Result ──────────────────────────────────────────╮
│ The PR title and description have been updated. You can view the PR here.    │
╰──────────────────────────────────────────────────────────────────────────────╯

The --save-command parameter makes this call re-usable:

➜ pilot task -f generate-pr-description.md.jinja2 --save-command

 Save the task parameters as a command:

  Name (e.g. generate-pr-desc): pr-description
  Short description: Generate title and description for a pull request

 Command saved to .pilot-commands.yaml

You can now run this command for any PR with pilot run pr-description:

➜ pilot run pr-description
Enter value for PR_NUMBER: 83
╭──────────── Result ─────────────╮
│ Here is the link to the PR #83  │
╰─────────────────────────────────╯

To learn more, please visit our User Guide and demo repository.

📦 Installation

First, make sure you have installed PR Pilot in your repository.

Then, install the CLI using one of the following methods:

pip

pip install --upgrade pr-pilot-cli

Homebrew:

brew tap pr-pilot-ai/homebrew-tap
brew install pr-pilot-cli

⚙️ Options and Parameters

The CLI has global parameters and options that can be used to customize its behavior.

Usage: pilot [OPTIONS] COMMAND [ARGS]...

  PR Pilot CLI - https://docs.pr-pilot.ai

  Delegate routine work to AI with confidence and predictability.

Options:
  --wait / --no-wait        Wait for PR Pilot to finish the task.
  --repo TEXT               Github repository in the format owner/repo.
  --spinner / --no-spinner  Display a loading indicator.
  --verbose                 Display status messages
  -m, --model TEXT          GPT model to use.
  -b, --branch TEXT         Run the task on a specific branch.
  --sync / --no-sync        Run task on your current branch and pull PR Pilots
                            changes when done.
  --debug                   Display debug information.
  --help                    Show this message and exit.

Commands:
  chat     💬 Chat with PR Pilot.
  config   🔧 Customize PR Pilots behavior.
  edit     ✍️ Let PR Pilot edit a file for you.
  grab     🤲 Grab commands, prompts and plans from other repositories.
  history  📜 Access recent tasks.
  plan     📋 Let PR Pilot execute a plan for you.
  run      🚀 Run a saved command.
  task     ➕ Create a new task for PR Pilot.
  upgrade  ⬆️ Upgrade pr-pilot-cli to the latest version.

🛠️ Usage

In your repository, use the pilot command:

pilot task "Tell me about this project!"
# 📝 Ask PR Pilot to edit a local file for you:
pilot edit cli/cli.py "Make sure all functions and classes have docstrings."
# ⚡ Generate code quickly and save it as a file:
pilot task -o test_utils.py --code "Write some unit tests for the utils.py file."
# 🔍 Capture part of your screen and add it to a prompt:
pilot task -o component.html --code --snap "Write a Bootstrap5 component that looks like this."
# 📊 Get an organized view of your Github issues:
pilot task "Find all open Github issues labeled as 'bug', categorize and prioritize them"
# 📝 Ask PR Pilot to analyze your test results using prompt templates:
pilot task -f prompts/analyze-test-results.md.jinja2

For more detailed examples, please visit our demo repository.

⬇️ Grab commands from other repositories

Once saved in a repository, commands can be grabbed from anywhere:

➜  code pilot grab commands pr-pilot-ai/core

       pr-pilot-ai/core
       haiku             Writes a Haiku about your project
       test-analysis     Run unit tests, analyze the output & provide suggestions
       daily-report      Assemble a comprehensive daily report & send it to Slack
       pr-description    Generate PR Title & Description
       house-keeping     Organize & clean up cfg files (package.json, pom.xml, etc)
       readme-badges     Generate badges for your README file

[?] Grab:
   [ ] haiku
   [X] test-analysis
   [ ] daily-report
 > [X] pr-description
   [ ] house-keeping
   [ ] readme-badges


You can now use the following commands:

  pilot run test-analysis   Run unit tests, analyze the output & provide suggestions
  pilot run pr-description  Generate PR Title & Description

Our core repository contains an ever-growing, curated list of commands
that we tested and handcrafted for you. You can grab them and use them in your own repositories.

📝 Advanced Usage: Execute a step-by-step plan

Break down more complex tasks into smaller steps with a plan:

# add_page.yaml

name: Add a TODO Page
prompt: |
  We are adding a TODO page to the application.
  Users should be able to:
  - See a list of their TODOs
  - Cross of TODO items / mark them as done
  - Add new TODO items

steps:
  - name: Create HTML template
    prompt: |
      1. Look at templates/users.html to understand the basic structure
      2. Create templates/todo.html based on the example
  - name: Create view controller
    prompt: |
      The controller should handle all actions/calls from the UI.
      1. Look at views/users.py to understand the basic structure
      2. Create views/todo.py based on the example
  - name: Integrate the page
    prompt: |
      Integrate the new page into the application:
      1. Add a new route in urls.py, referencing the new view controller
      2. Add a new tab to the navigation in templates/base.html
  - name: Generate PR description
    template: prompts/generate-pr-description.md.jinja2

You can run this plan with:

pilot plan add_page.yaml

PR Pilot will then autonomously:

  • Create a new branch and open a PR
  • Implement the HTML template and view controller
  • Integrate the new page into the navigation
  • Look at all changes and create a PR description based on your preferences defined in prompts/generate-pr-description.md.jinja2

Save this as part of your code base. Next time you need a new page, simply adjust the plan and run it again.
If you don't like the result, simply close the PR and delete the branch.

You can iterate on the plan until you are satisfied with the result.

⚙️ Configuration

The configuration file is located at ~/.pr-pilot.yaml.

# Your API Key from https://app.pr-pilot.ai/dashboard/api-keys/
api_key: YOUR_API_KEY

# Default Github repository if not running CLI in a repository directory
default_repo: owner/repo

# Enabled --sync by default
auto_sync: true

# Suppress status messages by default
verbose: false

🤝 Contributing

Contributors are welcome to improve the CLI by submitting pull requests or reporting issues. For more details, check the project's GitHub repository.

📜 License

The PR Pilot CLI is open-source software licensed under the GPL-3 license.

Suggested labels

None

@ShellLM ShellLM added AI-Agents Autonomous AI agents using LLMs Automation Automate the things CLI-UX Command Line Interface user experience and best practices code-generation code generation models and tools like copilot and aider Git-Repo Source code repository like gitlab or gh github gh tools like cli, Actions, Issues, Pages prompt Collection of llm prompts and notes prompt-engineering Developing and optimizing prompts to efficiently use language models for various applications and re Software2.0 Software development driven by AI and neural networks. source-code Code snippets labels Aug 3, 2024
@ShellLM
Copy link
Collaborator Author

ShellLM commented Aug 3, 2024

Related content

#743 similarity score: 0.89
#727 similarity score: 0.88
#762 similarity score: 0.88
#114 similarity score: 0.87
#642 similarity score: 0.87
#808 similarity score: 0.87

@irthomasthomas irthomasthomas changed the title pr-pilot-cli/README.md at main · PR-Pilot-AI/pr-pilot-cli PR Pilot Command-Line Interface Aug 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AI-Agents Autonomous AI agents using LLMs Automation Automate the things CLI-UX Command Line Interface user experience and best practices code-generation code generation models and tools like copilot and aider Git-Repo Source code repository like gitlab or gh github gh tools like cli, Actions, Issues, Pages prompt Collection of llm prompts and notes prompt-engineering Developing and optimizing prompts to efficiently use language models for various applications and re Software2.0 Software development driven by AI and neural networks. source-code Code snippets
Projects
None yet
Development

No branches or pull requests

1 participant