Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/marketplace/feature-card.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/marketplace/logo-200.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/marketplace/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 86 additions & 0 deletions LISTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Marketplace listing copy kit

Ready-to-paste copy for the GitHub Marketplace listing. Sections map to the fields
in the Marketplace listing editor. Copy follows GitHub's style rules: sentence
case, active voice, serial commas, and no trailing punctuation on titles.

## Listing name

```
Signetry Admission
```

## Very short description

Sentence case, describes functionality, no trailing punctuation, no call to action,
does not repeat the app name. (66 characters.)

```
Governs coding-agent pull requests with a signed admission receipt
```

## Categories

- **Primary:** Code review
- **Secondary:** Code quality

## Introductory description

Begins with the app name, active voice, 150-250 characters. (160 characters.)

```
Signetry Admission reviews every coding-agent pull request and posts one advisory verdict with reasons and a signed receipt, so a human still decides the merge.
```

## Detailed description

Under 1000 characters. Each value proposition is a level-3 header followed by a
short paragraph. Sentence case, periods, no exclamation marks.

```markdown
### Earned authority, not blanket access

Signetry Admission acts through a short-lived, read-only installation token scoped
to the pull request under review. It posts one advisory comment and nothing more.

### Injection-resistant by construction

The review is comment-only and the app never runs your diff as an instruction. It
reasons about the change, then reports, so prompt injection in a PR cannot escalate
into an action.

### Proof you can verify

Every verdict links to a signed receipt. The comment restates the receipt and
claims nothing beyond it, so anyone can check what was decided and why.

### A human always merges

Signetry Admission never merges and never enables auto-merge. It advises, and a
person makes the final call on every pull request.
```

## Required URLs

- **Customer support URL:** `https://github.com/Signetry/github-app/blob/main/SUPPORT.md`
- **Privacy policy URL:** `https://github.com/Signetry/github-app/blob/main/PRIVACY.md`
- **Homepage URL:** `https://signetry.github.io`
- **Documentation URL:** `https://github.com/Signetry/signetry`

## Pricing

Use a **Free plan**. A free plan satisfies the Marketplace pricing requirement and
keeps onboarding frictionless. The app already handles `marketplace_purchase`
webhook events, so it is ready to react to purchases, cancellations, and plan
changes if paid plans are added later.

## Logo and feature card

Both assets are prepared to GitHub's specs:

- **Logo:** 200x200 px, transparent background.
- **Feature card:** 965x482 px.

Upload the logo under the app's settings (Developer settings → GitHub Apps → your
app → Display information), and upload the feature card in the Marketplace listing
editor under the listing's branding section.
63 changes: 63 additions & 0 deletions PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Privacy Policy

_Last updated: 2026-08-12_

This policy explains what data the Signetry GitHub App accesses, what it does with
that data, and what it does not do. It is written to be honest and specific to how
this app actually works: it performs comment-only admission review on pull requests
and never merges them.

## What the app accesses

The app operates only on the accounts, organizations, and repositories where an
owner has explicitly installed it, and only within the permissions granted at
install time:

- **Pull requests (read and write):** pull request metadata (title, author,
branch, state) and the ability to post advisory review comments.
- **Contents (read-only):** the file contents and diff of a pull request under
review, so the admission review can reason about the proposed change.
- **Metadata (read-only):** basic repository metadata GitHub exposes to all apps.

The app subscribes to `pull_request`, `installation`, `installation_repositories`,
and `marketplace_purchase` events. Installation events tell the app which
repositories it covers. Marketplace events tell the app about purchases,
cancellations, and plan changes for billing.

## What the app does with it

When a reviewable pull request is opened or updated, the app mints a short-lived
installation token, reads the diff, runs an admission review, and posts **one
advisory comment** containing a verdict, the reasons for it, and a link to a signed
receipt. The comment restates the receipt and claims nothing beyond it.

The app is **comment-only**. It never merges, never enables auto-merge, and never
pushes code. A human always decides whether to merge.

## What the app does not do

- It does **not** store your code beyond the duration of a review. Diffs are read
to produce the review and are not retained as a durable copy afterward.
- It does **not** sell, rent, or share your data with third parties for marketing
or advertising.
- It does **not** pass its installation token to any coding-agent child process.

## Model calls and bring-your-own-key

Any calls to a language model use a **bring-your-own-key** model: the operator
supplies their own model provider credentials. The app does not send your code to a
model provider using Signetry-owned keys, and it does not use your data to train
models.

## Data retention

The app retains only what it needs to operate the service: installation records
(which repositories are covered), billing state derived from Marketplace events,
and the signed receipts it issues. Pull request diffs are processed transiently for
each review and are not kept as a durable copy.

## Contact

For privacy questions or concerns, or to report a data-handling issue, open a
private security advisory on the [Signetry/github-app](https://github.com/Signetry/github-app/security/advisories)
repository, or contact the Signetry organization through its GitHub profile.
28 changes: 28 additions & 0 deletions SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Support

Thanks for using the Signetry GitHub App. Here is how to get help.

## Report a bug or request a feature

Open an issue on
[Signetry/github-app](https://github.com/Signetry/github-app/issues). Include your
GitHub App version or slug, the repository or installation affected, and the steps
to reproduce the problem.

## Ask a question or start a discussion

Use the platform Discussions at
[Signetry/signetry](https://github.com/Signetry/signetry/discussions) for
questions, ideas, and general help that is not a specific bug.

## Report a security issue

Do not open a public issue for an unpatched vulnerability. Instead, use private
vulnerability reporting by opening a security advisory on
[Signetry/github-app](https://github.com/Signetry/github-app/security/advisories).
See [SECURITY.md](SECURITY.md) for the full policy.

## Response expectations

This is a maintained project, but response times may vary. Security reports are
prioritized over feature requests.
3 changes: 2 additions & 1 deletion app-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"default_events": [
"pull_request",
"installation",
"installation_repositories"
"installation_repositories",
"marketplace_purchase"
],
"default_permissions": {
"pull_requests": "write",
Expand Down