Documentation

PromptNotes.ai

Everything you need to store, discover, contribute to, and build with AI prompts — powered by Git.

"Where prompts live, thrive, and reach the world."
📝 Version-controlled prompts 🔍 Full-text search 🐍 Python API 🤝 Community contributions

What is Git?

Git tracks every change ever made to your files — a time machine for your prompts. See who changed what, when, and why, and go back to any version.

📁
Repository
A folder of prompts with complete history
💾
Commit
A saved snapshot with a description
🌿
Branch
A parallel version to experiment safely
🍴
Fork
Your own copy of someone else's repo
⬆️
Push
Upload local commits to PromptNotes.ai
⬇️
Clone
Download a repository locally
💡
No Git needed. You can create and edit prompts entirely through the web interface. Git is for power users who want offline access and automation.

Repository Structure

A prompt repository is a folder of Markdown files. Organize by category:

Directory layout
my-prompt-library/
  ├── README.md
  ├── coding/
  │     ├── python-review.md
  │     └── debugging.md
  ├── writing/
  │     └── blog-post.md
  └── research/
        └── paper-summary.md

Example prompt file

coding/python-review.md
# Python Code Review

**Model:** GPT-4, Claude 3.5
**Task:** Code review

## Prompt

You are an expert Python developer. Review the following
code for correctness, PEP 8 compliance, performance,
and security vulnerabilities.

## Notes
Works best with functions under 100 lines.

Create an Account

1

Click Register

Top-right corner of promptnotes.ai.

2

Fill in your details

Choose a username, email, and a password of at least 12 characters.

3

Add an SSH key (optional)

Settings → SSH Keys → Add Key. Enables passwordless git push.

Create a Repository

1

Click + → New Repository

Top navbar, plus button.

2

Name your collection

Example: gpt4-writing-prompts or claude-coding-assistant.

3

Set visibility

Public repos appear in search and trending. Private repos are invite-only.

4

Initialize with README

Check Initialize this repository to create the first commit automatically.

Upload Prompts via Web

1

Open your repository

promptnotes.ai/username/repo-name

2

New File

Click +New File. Name it my-prompt.md and paste your content.

3

Commit

Write a message like Add GPT-4 writing prompt and click Commit Changes.

Explore & Search

The search bar on the homepage searches all public repositories. Filter by type:

  • Repositories — collections by name or description
  • Files — inside prompt file contents
  • Commits — by commit message
  • Branches — branch names
  • Issues — discussions and improvement requests

Full results open at search.promptnotes.ai/results.


Setup Git

Step 1 — Install Git
# macOS
brew install git

# Ubuntu / Debian
sudo apt install git
Step 2 — Configure identity
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Step 3 — Generate SSH key
ssh-keygen -t ed25519 -C "[email protected]"
# Press Enter 3 times to accept defaults (no passphrase)
Step 4 — Copy your public key
cat ~/.ssh/id_ed25519.pub
# Output looks like:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... [email protected]
# Copy the entire line
🔑
Step 5 — Add key to PromptNotes.ai: Go to promptnotes.ai/user/settings/keysAdd Key → paste the output from Step 4 → click Add Key. Ignore the ssh-keygen verify command Gitea shows — it is optional.
Step 6 — Test SSH connection
ssh -p 2222 -T [email protected]
# Expected response:
# Hi there, promptadmin! You've successfully authenticated...
💡
Use git.promptnotes.ai for SSH — not promptnotes.ai. The main domain routes through Cloudflare which blocks SSH. The git. subdomain points directly to the VPS and allows port 2222.

Basic Git Commands

Clone a repository
git clone ssh://[email protected]:2222/username/repo-name.git
cd repo-name
Add, commit, push
git add my-prompt.md        # stage a file
git add .                    # stage all changes
git commit -m "Add GPT-4 writing prompt"
git push origin main
Branching
git checkout -b claude-variants  # create + switch
git add .
git commit -m "Add Claude-specific variants"
git push origin claude-variants

Recommended Workflow

1

Clone

Terminal
git clone ssh://[email protected]:2222/promptadmin/awesome-chatgpt-prompts.git
2

Branch

Terminal
git checkout -b add-coding-prompts
3

Add, commit, push

Terminal
git add coding/my-prompt.md
git commit -m "Add Python debugging prompt"
git push origin add-coding-prompts
4

Open a Pull Request

Go to your repo → Pull Requests → New Pull Request to propose your additions.


Python Interface

PromptNotes.ai exposes a full REST API. Read, write, and search prompts programmatically — perfect for AI pipelines and automation.

🔑
Generate a token: Settings → Applications → Generate Token. Check all repository scopes. promptnotes.ai/user/settings/applications
Python — setup
pip install requests

GITEA_URL  = "https://promptnotes.ai"
REPO_OWNER = "your-username"
REPO_NAME  = "your-prompt-library"
API_TOKEN  = "your-token"

HEADERS = {
    "Authorization": f"token {API_TOKEN}",
    "Content-Type":  "application/json",
    "User-Agent":    "promptnotes-client/1.0"
}

Reading Prompts

Python — list files
import requests, base64

def list_prompts(owner, repo, path=""):
    url = f"{GITEA_URL}/api/v1/repos/{owner}/{repo}/contents/{path}"
    return requests.get(url, headers=HEADERS).json()

files = list_prompts("promptadmin", "awesome-chatgpt-prompts")
for f in files:
    print(f["name"], f["type"])
Python — read file content
def read_prompt(owner, repo, filepath):
    url  = f"{GITEA_URL}/api/v1/repos/{owner}/{repo}/contents/{filepath}"
    data = requests.get(url, headers=HEADERS).json()
    return base64.b64decode(data["content"]).decode("utf-8")

text = read_prompt("promptadmin", "awesome-chatgpt-prompts", "prompts/coding/python-review.md")
print(text)

Publishing Prompts

Python — create or update a file
import requests, base64

def publish_prompt(owner, repo, filepath, content, message="Update prompt"):
    url      = f"{GITEA_URL}/api/v1/repos/{owner}/{repo}/contents/{filepath}"
    existing = requests.get(url, headers=HEADERS)
    sha      = existing.json().get("sha") if existing.status_code == 200 else None

    payload = {
        "message": message,
        "content": base64.b64encode(content.encode()).decode(),
        "branch":  "main"
    }
    if sha:
        payload["sha"] = sha  # required for updates

    method = "PUT" if sha else "POST"
    r = requests.request(method, url, headers=HEADERS, json=payload)
    return r.status_code

publish_prompt("your-username", "my-prompts",
               "research/summarise-paper.md",
               "# Summarise Research Paper\n...",
               "Add research paper summariser")