First off — thank you for taking the time to contribute! 🎉
PromptForge is a community project, and every contribution matters: a new prompt, a typo fix, a bug report, a feature idea, or just a star. This document explains how to get involved.
💬 New here? We mentor first-time contributors. Look for issues labeled
good first issueand don't hesitate to ask questions.
By participating, you agree to uphold our Code of Conduct. Please be kind, respectful, and inclusive. Harassment of any kind will not be tolerated.
- Ways to contribute
- Development setup
- Contribution workflow
- Adding a prompt
- Coding standards
- Commit messages
- Pull requests
- Reporting bugs
- Suggesting features
You don't need to write code to help! Here are some great ways to contribute:
| Way | How |
|---|---|
| 📝 Add a prompt | Submit via the in-app form, or edit prisma/seed.ts and open a PR |
| 🐛 Report a bug | Open a bug report |
| 💡 Suggest a feature | Open a feature request |
| 🎨 Improve UI/UX | Pick a good first issue |
| 📚 Improve docs | Fix typos, clarify wording, add translations |
| ⭐ Star the repo | It helps others discover PromptForge |
| 💬 Help in issues | Answer questions, reproduce bugs, review PRs |
- Node.js 18.18+ or Bun 1.0+
- Bun (recommended) —
curl -fsSL https://bun.sh/install | bash
# 1. Fork & clone
git clone https://github.com/<your-username>/promptforge.git
cd promptforge
# 2. Install dependencies
bun install
# 3. Set up environment
cp .env.example .env
# Edit .env — set DATABASE_URL and your z-ai API key
# 4. Database
bun run db:push # create schema
bun run prisma/seed.ts # seed example prompts
# 5. Run
bun run dev # http://localhost:3000
# 6. Lint before committing
bun run lint- Fork the repo and create your branch from
main:git checkout -b feat/my-feature # or: fix/typo-in-readme, prompt/add-commit-message-helper - Make your changes. Keep commits focused.
- Lint:
bun run lint— must pass with no errors. - Test manually in the browser (the dev server auto-reloads).
- Commit using conventional commit messages.
- Push to your fork and open a Pull Request against
main. - Reference any related issue (e.g.
Closes #42). - Respond to review feedback kindly and iteratively.
Prompts live in prisma/seed.ts. To add one:
- Add a new object to the
promptsarray:{ title: "Generate a release notes draft", description: "Turn a list of commits or changes into polished release notes.", content: "You are a technical writer. Given the following list of changes, draft release notes grouped by category (Features, Fixes, Breaking). Use clear, friendly language.\n\nChanges:\n{{changes}}", category: "writing", // one of: coding, writing, analysis, creative, education, productivity, business tags: "release-notes,documentation,changelog", authorName: "Your Name", authorGithub: "your-handle", // optional model: "glm-4.6", exampleOutput: "## Features\n- ...\n\n## Fixes\n- ...", }
- Run
bun run prisma/seed.tsto verify it inserts cleanly. - Open a PR.
- Useful & specific — generic prompts ("write a story") are less valuable than targeted ones.
- Use
{{variables}}for inputs the user will fill in. - Original or properly attributed — don't copy copyrighted material.
- Tested — run it in the playground and include a representative
exampleOutput. - Safe — no prompts that produce harmful, illegal, or harassing content.
- TypeScript everywhere, strict mode.
- ESLint must pass:
bun run lint. - shadcn/ui components for UI — don't reinvent existing components.
- Tailwind CSS for styling. No indigo/blue as primary accent.
- Accessible by default: semantic HTML, ARIA labels, keyboard support.
- Responsive: mobile-first; test at 375px, 768px, 1280px.
- Server vs client:
z-ai-web-dev-sdkand Prisma live server-side only. Use'use client'only where needed. - No tests required for prompt additions; for code changes, manual verification is fine for now.
We follow Conventional Commits:
<type>(<scope>): <subject>
[optional body]
Types: feat, fix, prompt, docs, style, refactor, chore, ci.
Examples:
prompt: add release-notes drafter to writing category
feat(playground): stream model output token-by-token
fix(footer): prevent overlap on short pages
docs: clarify local setup steps in README
- One change per PR — keep it reviewable.
- Use the PR template — fill in the checklist.
- Link related issues (
Closes #123,Refs #456). - Be patient & kind — reviews are volunteer work.
- Don't force-push after requesting review (it makes comments hard to follow).
A maintainer will review your PR as soon as they can. Small PRs usually merge quickly; larger ones may need discussion.
Use the bug report template. Include:
- Steps to reproduce
- Expected vs. actual behavior
- Screenshots (if visual)
- Browser/OS
- Console errors
Use the feature request template. Explain the problem you're trying to solve, not just the solution you propose. This leads to better discussions.
- Open a GitHub Discussion (if enabled),
- Or open an issue with the
questionlabel.
Happy forging! 🔥