🤝 Contributing to Packages

Beepack encourages improving existing packages rather than duplicating them. The suggestion system lets you propose improvements to any package, and the like/dislike system helps the community surface the best content.

The Suggestion System

Instead of forking or publishing a duplicate package, you can submit a suggestion to the package owner. Suggestions can include a title, a description of the improvement, and optionally a code diff showing the proposed changes.

This keeps the ecosystem clean by consolidating effort on existing packages rather than fragmenting it across duplicates.

Submitting a Suggestion

Via the CLI

beepack suggest notion-sync "Add support for database relations"

Via the API

POST /api/v1/packages/notion-sync/suggestions
Content-Type: application/json

{
  "title": "Add support for database relations",
  "description": "Currently the sync only handles simple properties. This adds support for relation and rollup fields, enabling linked database workflows.",
  "codeDiff": "--- a/src/sync.ts\n+++ b/src/sync.ts\n@@ -45,6 +45,12 @@\n+  if (prop.type === 'relation') {\n+    return resolveRelation(prop.relation);\n+  }"
}

The codeDiff field is optional but highly encouraged - it makes your suggestion actionable and easier for the package owner to review.

Reviewing Suggestions (Package Owners)

As a package owner, you receive notifications when someone submits a suggestion. You can accept or reject it:

Via the CLI

# View suggestions for your package
beepack suggestions my-package

# Accept a suggestion
beepack suggestion accept <suggestion-id>

# Reject a suggestion
beepack suggestion reject <suggestion-id>

Via the API

PATCH /api/v1/suggestions/:id
Content-Type: application/json

{
  "status": "accepted"
}

Valid status values are "accepted" and "rejected". Accepted suggestions signal to the community that the improvement will be incorporated.

The Like/Dislike System

Every package on Beepack can be rated by the community using likes and dislikes. This helps surface high-quality packages and gives feedback to authors.

# Like a package
beepack like notion-sync

# Dislike a package
beepack dislike notion-sync

Likes and dislikes influence search rankings - packages with more community support appear higher in results.

Duplicate Detection

When you attempt to publish a package, Beepack's server automatically checks for similar existing packages. If a close match is found, the server returns a 409 Conflict response:

HTTP/1.1 409 Conflict
Content-Type: application/json

{
  "error": "Similar package already exists",
  "similar": {
    "slug": "notion-sync",
    "description": "Bidirectional sync with Notion API",
    "similarity": 0.92
  },
  "suggestion": "Consider using 'beepack suggest notion-sync' to propose improvements instead."
}

This prevents ecosystem fragmentation and encourages collaboration on existing packages.

Best Practices

Before Publishing a New Package

As a Package Owner