memory
ALWAYS ACTIVE — Selective persistent memory: preserve verified, durable knowledge worth reconstructing, with safe topic updates…
PR creation workflow for Engram following the issue-first enforcement system. Trigger: When creating a pull request, opening a PR, or preparing changes for review.
Claude Code
$ npx -y skills add Gentleman-Programming/engram --skill branch-pr --agent claude-code
Codex
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a codex -y
Cursor
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a cursor -y
Gemini CLI
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a gemini-cli -y
GitHub Copilot
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a github-copilot -y
OpenCode
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a opencode -y
Windsurf
$ npx skills add Gentleman-Programming/engram --skill branch-pr -a windsurf -y
name: engram-branch-pr description: > PR creation workflow for Engram following the issue-first enforcement system. Trigger: When creating a pull request, opening a PR, or preparing changes for review. license: Apache-2.0 metadata: author: gentleman-programming version: "2.0"
Use this skill when:
---
The [contribution policy transition](../../docs/contribution-policy-transition.md) is **PRE-CUTOVER / NOT ACTIVE**; the active rules below still apply.
1. **Every PR MUST link an approved issue** — no exceptions 2. **Every PR MUST have exactly one `type:*` label** 3. **All required automated checks must pass** before merge is possible 4. **Blank PRs without issue linkage will be blocked** by GitHub Actions 5. **The PR targets the canonical repository, the branch lives in your fork** — `origin` is your fork, `upstream` is the canonical repository. A push straight to the canonical repository is refused, either by permissions or by the ruleset with `GH013`; do not retry it or switch destinations silently 6. **Applying the `type:*` label needs maintainer triage access** on the canonical repository. When the API refuses, ask a maintainer instead of retrying
---
1. Verify every linked issue has `status:approved`, a real assignee, and the proportional evidence defined in CONTRIBUTING.md; the PR author need not match the assignee 2. Create branch from the canonical `main` (`upstream/main`), with `origin` pointing at your fork: feat/*, fix/*, docs/*, refactor/*, chore/* 3. Implement changes 4. For behavior changes, run a focused regression test and affected package tests locally; record commands and outcomes. For docs-only changes, record N/A for Go tests and verify the documentation. 5. Check every changed path against the [Transient Artifact Policy](../../CONTRIBUTING.md#transient-artifact-policy) 6. Push the branch to your fork, then open the PR against the canonical repository using the template 7. Add exactly one type:* label — this needs a maintainer with triage access on the canonical repository, so ask for it rather than retrying 8. After pushing/opening the PR, wait for GitHub CI's full unit/E2E/lint and applicable platform checks; report results only after they run
---
Branch names are validated by a GitHub ruleset. Pushes that don't match **will be rejected**.
**Pattern:** `^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)\/[a-z0-9._-]+$`
| Type | Branch pattern | Example | |------|---------------|---------| | Feature | `feat/<description>` | `feat/json-export-command` | | Bug fix | `fix/<description>` | `fix/duplicate-observation-insert` | | Chore | `chore/<description>` | `chore/bump-bubbletea-v0.26` | | Docs | `docs/<description>` | `docs/api-reference-update` | | Style | `style/<description>` | `style/fix-tui-alignment` | | Refactor | `refactor/<description>` | `refactor/extract-query-sanitizer` | | Performance | `perf/<description>` | `perf/optimize-fts5-queries` | | Test | `test/<description>` | `test/add-sync-coverage` | | Build | `build/<description>` | `build/update-go-toolchain` | | CI | `ci/<description>` | `ci/split-e2e-job` | | Revert | `revert/<description>` | `revert/broken-migration` |
**Rules:**
---
Use the [canonical PR template](../../.github/PULL_REQUEST_TEMPLATE.md) as the source for body shape; do not duplicate its structure here. Describe the problem and result, record honest verification, and include risks and mitigations only when applicable.
Every PR body MUST contain a closing reference to an approved, assigned issue:
Closes #<issue-number>
Valid keywords: `Closes #N`, `Fixes #N`, `Resolves #N` (case insensitive). Every linked issue MUST have `status:approved` and a real assignee. Approval means a maintainer accepted proportional evidence: scope/checks for trivial changes; current-remote-main SHA, reproduction, root cause, and regression tests for bugs; approved design, non-goals, and independent review for high-risk changes. Evidence can live in the issue; no separate design document is required by default.
Existing PRs must comply before merge, without waiting for backlog-wide migration. Re-run native validation after issue approval/assignment changes; do not rely on stale green checks.
Add exactly one canonical `type:*` PR label; no duplicate type checkbox is required in the body. All required automated checks must pass before merge; report other applicable checks honestly as described below.
Record actual verification commands/steps and observed outcomes, not assumed passes. For behavior changes, include focused regression and affected package tests. For docs-only changes, mark local Go tests `N/A — documentation-only; no Go behavior changed` and list the documentation checks actually run. Targeted coverage can help find missed branches; no total module coverage or per-PR numeric gate applies. Without a PR (or before pushing), and for high-risk changes, run additional applicable local checks. Identify checks not run and missing CI evidence; GitHub CI full unit/E2E/lint and applicable platform results remain pending until they run. Local success is not a hosted CI pass.
For high-risk changes, link the approved design, non-goals, and independent review evidence required by [CONTRIBUTING](../../CONTRIBUTING.md). Omit the risk section for low-risk changes.
---
The six required contexts are listed in [CONTRIBUTING.md](../../CONTRIBUTING.md#step-4-automated-pr-checks); all six must pass before merge. Lint, transient-artifact checks, `Windows Setup Test`, and `Cloud Sync Wrapper Tests (Windows)` run for PRs but no
Persistent memory system for AI coding agents. Agent-agnostic Go binary with SQLite + FTS5, MCP server, HTTP API, CLI, and TUI.
ALWAYS ACTIVE — Selective persistent memory: preserve verified, durable knowledge worth reconstructing, with safe topic updates…
Architecture guardrails for Engram across local store, cloud sync, dashboard, and plugins. Trigger: Any change that affects…
Backlog triage protocol for Engram: audit open issues and PRs, classify each item, infer maintainer ideology from comments, and…
Product and business-rule guardrails for Engram. Trigger: Any change that affects sync behavior, project controls, permissions,…
Commit and branch naming standards for Engram contributors, enforced by GitHub rulesets. Trigger: Any commit creation, review, or…
Cultural and collaboration norms for Engram contributors and agents. Trigger: Starting substantial work, reviewing changes, or…
Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…
Keep a durable record of work passed between Bots in the shared Hindsight memory bank. Use when handing work to another Bot, when…
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…