Signed Off¶
There is done and there is DONE. Signed Off ensures every piece of work is DONE right.
Every team has standards. Most teams have checklists. But a checklist that no one is required to finish before closing an issue is not a standard — it is a suggestion. Features ship with missing steps. Incidents close before root causes are confirmed. Onboarding tasks get marked complete out of convenience, not completion.
The difference between a team that ships with confidence and one that ships with fingers crossed is not intent — it is enforcement.
Signed Off brings structured, enforceable checklists to every GitHub issue, automatically. Your standards are defined once and applied everywhere — right inside the issue, where the work actually happens. No dashboards to check, no extra tools to open, no process theater. Just a clear, honest answer to the question every engineering team should be asking before they close anything: is this actually done?
How it works¶
When an issue is opened, the app:
- Detects the issue's type (using GitHub's native issue type field)
- Loads the matching checklist template from your repo or org
- Posts a managed bot comment with the rendered checklist and hidden state
- Provides a UI where collaborators can mark items as Done, N/A, or Need Exception
- Serves a live SVG badge reflecting the current checklist status
State lives entirely inside a hidden HTML comment in the bot's comment — no external database required.
Key features¶
| Feature | Description |
|---|---|
| Tri-state items | Each item is Done, N/A, or Need Exception — never just a checkbox |
| Enforcement levels | Per-template Advise, Warn, or Block control what happens when an issue closes incomplete |
| Approval workflow | Exceptions must be approved by a second party who is a member of your approvers team — no self-approval |
| Org-wide templates | Templates cascade from repo → private org → public org |
| Type-aware merging | When the issue type changes, existing progress is preserved for matching items |
| On-demand trigger | Mention @signed-off[bot] in any issue comment to post a checklist retroactively |
| Repo template overrides | Lock specific repos to org-wide templates, or allow per-repo overrides — configurable with glob patterns |
| Transfer-aware | Works correctly when issues are transferred between repos |
| Dynamic SVG badge | Embed a live status badge anywhere — PR descriptions, wikis, dashboards |
| Badge privacy | Private repo badges show a placeholder by default; opt in to expose them with publicBadges |
| Zero external DB | All state lives in GitHub itself |
How Signed Off compares¶
AI-generated — please verify
The comparison below was generated with AI assistance. Feature claims for third-party tools should be independently verified before making purchasing decisions.
| Feature | Signed Off | Pull Checklist | Require Checklist Action | PR Checklist Helper | LinearB gitStream | DIY GitHub Actions | GitHub Native |
|---|---|---|---|---|---|---|---|
| Auto-post checklist on issue open | ✅ By issue type | ❌ PR only | ❌ Validates only | ❌ Validates only | ❌ PR only | ⚠️ Build it yourself | ❌ Manual |
| Org-wide templates | ✅ .github + .github-private |
❌ Per repo | ❌ Per repo | ❌ Per repo | ✅ Central repo | ⚠️ Build it yourself | ⚠️ No enforcement |
| Per-template enforcement config | ✅ Frontmatter | ❌ Global only | ❌ Global only | ❌ Global only | ✅ Per rule | ⚠️ Build it yourself | ❌ None |
| Closure enforcement levels | ✅ Advise / Warn / Block | ✅ Block only | ✅ Fail CI | ⚠️ Labels + CI | ✅ Block only | ⚠️ Build it yourself | ❌ None |
| Exception approvals | ✅ Team-gated, no self-approval | ⚠️ Skip label | ⚠️ Regex skip | ⚠️ Skip label | ⚠️ Reviewer teams | ⚠️ Build it yourself | ❌ None |
| Live progress badge | ✅ SVG, 60s cache | ❌ None | ❌ None | ⚠️ Labels only | ✅ Dashboard | ⚠️ Build it yourself | ⚠️ UI only |
| Zero infrastructure | ✅ State in issue comments | ✅ Hosted SaaS | ✅ GitHub Actions | ✅ GitHub Actions | ❌ External platform | ✅ GitHub Actions | ✅ Native |
| Data stays in GitHub | ✅ | ❌ Third-party SaaS | ✅ | ✅ | ❌ External platform | ✅ | ✅ |
| Issue focused | ✅ Primary use case | ❌ PRs only | ⚠️ Both | ⚠️ Both | ❌ PRs + metrics | ⚠️ Both | ✅ |
| Pricing | ✅ From free | ❌ ~$49/mo | ✅ Free / OSS | ✅ Free / OSS | ❌ ~$25/dev/mo | ✅ Free + eng cost | ✅ Free |
✅ Full support ⚠️ Partial or workaround ❌ Not supported
The alternatives, plainly¶
Pull Checklist is the most polished paid alternative, but it is built for pull requests, not issues. Exception handling is a skip label, not an approval gate. At ~$49/month it costs more and does less for issue-centric workflows.
Require Checklist Action and PR Checklist Helper are solid free options if you only need validation at CI time. Neither auto-posts checklists on issue open, neither has org-wide template inheritance, and neither has a real exception approval flow. Good for basic enforcement. Not enough for teams that mean it.
LinearB gitStream is an enterprise workflow platform with strong policy tooling — and a price to match at ~$25 per developer per month. It is PR and metrics focused. If you need issue-level checklist enforcement, gitStream is not the right tool.
GitHub Native Task Lists are free, frictionless, and built in. They are also entirely passive. Nothing enforces completion, nothing blocks closure, nothing requires a second sign-off. A checklist with no gate is a suggestion.
DIY GitHub Actions gives you full control with full cost. Building auto-posting, org-wide templates, closure enforcement at multiple levels, and exception approvals from scratch is a significant engineering investment — and one you will maintain forever.
Signed Off gives you everything in the first column, already built, at a price that reflects what it actually is: a focused tool that does one job exceptionally well.