diff --git a/.github/marketplace/feature-card.png b/.github/marketplace/feature-card.png new file mode 100644 index 0000000..59541f2 Binary files /dev/null and b/.github/marketplace/feature-card.png differ diff --git a/.github/marketplace/logo-200.png b/.github/marketplace/logo-200.png new file mode 100644 index 0000000..4481a6c Binary files /dev/null and b/.github/marketplace/logo-200.png differ diff --git a/.github/marketplace/logo.png b/.github/marketplace/logo.png new file mode 100644 index 0000000..0af9a04 Binary files /dev/null and b/.github/marketplace/logo.png differ diff --git a/LISTING.md b/LISTING.md new file mode 100644 index 0000000..947134e --- /dev/null +++ b/LISTING.md @@ -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. diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 0000000..0270ef0 --- /dev/null +++ b/PRIVACY.md @@ -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. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..7dc6fa9 --- /dev/null +++ b/SUPPORT.md @@ -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. diff --git a/app-manifest.json b/app-manifest.json index f477577..e2aca45 100644 --- a/app-manifest.json +++ b/app-manifest.json @@ -12,7 +12,8 @@ "default_events": [ "pull_request", "installation", - "installation_repositories" + "installation_repositories", + "marketplace_purchase" ], "default_permissions": { "pull_requests": "write",