https://github.com/asadm/vibemode

Pack your repo into an AI-friendly format and apply AI suggested changes back with ease, all from your terminal.

https://github.com/asadm/vibemode

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.3%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

Pack your repo into an AI-friendly format and apply AI suggested changes back with ease, all from your terminal.

Basic Info
  • Host: GitHub
  • Owner: asadm
  • License: apache-2.0
  • Language: JavaScript
  • Default Branch: main
  • Homepage:
  • Size: 17.8 MB
Statistics
  • Stars: 129
  • Watchers: 1
  • Forks: 2
  • Open Issues: 3
  • Releases: 0
Created 11 months ago · Last pushed 10 months ago
Metadata Files
Readme License

readme.md

logo

Pack your entire repository (or selected files) into an AI-friendly format and also apply AI suggested changes back with ease, all from your terminal. vibemode is a CLI-based code companion to help when you are coding using LLM directly from ChatGPT UI, AI Studio, etc.

  1. Pack Context: Package selected files from your project (respecting .gitignore) into a single, structured XML format, perfect for pasting into an AI chat interface.
  2. Apply Changes: Take the diff-like output provided by an AI (in any format it gives it back to you) and apply those changes directly back to your local files using the Gemini API.

vibemode demo GIF

🤔 Why

Sure, you can use Cursor or Copilot or Aider but all these tools try to save money by reducing the context instead of embedding files I included as-is. So I usually resort to using the model directly using the official UI they provide by copying relevant (or all) my code into the chat UI. The model then suggests changes in chat. I then want to apply the suggested changes back to my repo. vibemode is the missing glue for this workflow!

⚠️ Disclaimer: This is a tool I built for my workflow and I am sharing it with the world. It is not perfect but ofcourse PRs are welcome!

✨ Features

  • Interactive Packing: Use glob patterns or type file/directory names with autocomplete to select folders and files to pack.
  • .gitignore Aware: Automatically respects rules in your .gitignore file.
  • AI-Friendly Output: Generates a structured XML containing the directory structure and file contents, ready for AI consumption.
  • Clipboard Integration: Copies the packed XML directly to your clipboard for easy pasting.
  • Automated Patching: Parses AI-generated responses and applies the changes to your local files.
  • Error Handling & Retry: Sometimes applying a patch fails partially, let's you retry failed attempts.
  • Powered by Gemini: Utilizes Google's Gemini 2.0 Flash model for the "Apply Edits" functionality (requires API key).

🚀 Usage

No installation is required! Run directly using npx:

bash npx vibemode

This will launch the tool and show the following options:

  • Pack files: Let's you pick file/directory to pack. Press Enter when done to copy the "packed" XML to your clipboard, which you paste into your favorite LLM UI.
  • Apply edits: Paste the response from your model, which vibemode parses using a smaller model and applies to the file.

🔧 Applying Edits (Requires Gemini API Key)

The "Apply edits from paste" feature currently uses the Google Gemini API (specifically the gemini-2.0-flash model) to understand and apply changes described in a specific format within the pasted text.

To use this feature, you MUST:

  1. Obtain a Gemini API Key: You can get a free API key from Google AI Studio: https://aistudio.google.com/
  2. Set the Environment Variable: Before running vibemode, set the GEMINI_KEY environment variable in your terminal:

    ```bash

    On Linux/macOS

    export GEMINIKEY='YOURAPIKEYHERE'

    On Windows (Command Prompt)

    set GEMINIKEY=YOURAPIKEYHERE

    On Windows (PowerShell)

    $env:GEMINIKEY='YOURAPIKEYHERE' ```

  3. Run Vibemode: bash npx vibemode

  4. Select "Apply edits" and paste the AI-generated response containing the SEARCH/REPLACE blocks when prompted. The tool will then attempt to apply these changes to your local files.

License

Apache License 2.0


Happy Vibing!

Owner

  • Name: Asad Memon
  • Login: asadm
  • Kind: user
  • Location: San Francisco Bay Area

GitHub Events

Total
  • Issues event: 3
  • Watch event: 113
  • Issue comment event: 4
  • Public event: 1
  • Push event: 17
  • Fork event: 1
Last Year
  • Issues event: 3
  • Watch event: 113
  • Issue comment event: 4
  • Public event: 1
  • Push event: 17
  • Fork event: 1

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 54
  • Total Committers: 1
  • Avg Commits per committer: 54.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 54
  • Committers: 1
  • Avg Commits per committer: 54.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Asad Memon a****n@g****m 54
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 3
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 3
  • Total pull request authors: 0
  • Average comments per issue: 1.33
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 3
  • Pull request authors: 0
  • Average comments per issue: 1.33
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • jamierichsmith (1)
  • EggzYy (1)
  • AndreaOrru (1)
Pull Request Authors
Top Labels
Issue Labels
help wanted (1)
Pull Request Labels

Dependencies

package-lock.json npm
  • 734 dependencies
package.json npm
  • @babel/cli ^7.21.0 development
  • @babel/preset-react ^7.18.6 development
  • @vdemedes/prettier-config ^2.0.1 development
  • ava ^5.2.0 development
  • chalk ^5.2.0 development
  • clipboardy ^4.0.0 development
  • esbuild ^0.25.2 development
  • eslint-config-xo-react ^0.27.0 development
  • eslint-plugin-react ^7.32.2 development
  • eslint-plugin-react-hooks ^4.6.0 development
  • fuzzysort ^3.1.0 development
  • glob ^11.0.1 development
  • import-jsx ^5.0.0 development
  • ink ^5.2.0 development
  • ink-select-input ^6.0.0 development
  • ink-testing-library ^3.0.0 development
  • ink-text-input ^6.0.0 development
  • meow ^11.0.0 development
  • openai ^4.95.0 development
  • prettier ^2.8.7 development
  • prop-types ^15.8.1 development
  • react ^18.2.0 development
  • react-devtools-core ^4.28.5 development
  • xo ^0.53.1 development
  • zod ^3.24.2 development