Exposed Bug Fix Workflow
JetBrains/Exposed
Takes a GitHub or YouTrack issue for the Exposed project through reproduction, a failing test, a fix, validation and a pull request.
Create Moraine pull requests on GitHub. An agent skill from eric-tramel/moraine.
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install eric-tramel/moraine moraine-author-pr --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .claude/skills/moraine-author-pr && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .claude/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-prType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install eric-tramel/moraine moraine-author-pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .agents/skills/moraine-author-pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .agents/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install eric-tramel/moraine moraine-author-pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .cursor/skills/moraine-author-pr && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .cursor/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/eric-tramel/moraine.git --path plugins/moraine-dev/skills/moraine-author-pr--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install eric-tramel/moraine moraine-author-pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .gemini/skills/moraine-author-pr && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .gemini/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install eric-tramel/moraine moraine-author-prInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .github/skills/moraine-author-pr && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .github/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eric-tramel/moraine --skill moraine-author-pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install eric-tramel/moraine moraine-author-pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/moraine-dev/skills/moraine-author-pr .opencode/skills/moraine-author-pr && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "moraine-author-pr" agent skill from https://github.com/eric-tramel/moraine/tree/main/plugins/moraine-dev/skills/moraine-author-pr into .opencode/skills/moraine-author-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "moraine-author-pr", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
moraine-author-prCreate Moraine pull requests on GitHub. An agent skill from eric-tramel/moraine.
Moraine Author PR is an agent skill from eric-tramel/moraine. Create Moraine pull requests on GitHub. Use when the branch is ready to open a PR; when the user asks to create, push, or open a PR; after local changes are committed; or when documenting user-facing features, bug fixes, performance optimizations, validation, changelog impact, or operational impact in a PR that follows repository conventions without AI attribution.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Development, covering Pull requests, Debugging and Changelog and release notes. It works with GitHub. The repository describes itself as: Unified realtime agent trace database & search MCP. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 3dd8598. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Moraine Author PR loads about 1.7k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 499 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from eric-tramel/moraine at commit 3dd8598, republished under its Apache-2.0 licence (© eric-tramel). 499 words, ~1,652 tokens.
.claude/skills/moraine-author-pr/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The goal is to create the PR on GitHub, not just draft title and body text in chat. The skill is complete when the PR exists on GitHub and you return its URL.
Always create a ready-for-review PR. Never create a GitHub Draft PR, never pass --draft, never set draft: true, and never emit an isDraft=true PR directive. If the branch is not ready for reviewer attention, stop and explain what remains instead of opening a Draft PR.
Write PR titles and descriptions that are reviewable, evidence-backed, and consistent across agents. Default bodies use Description, Usage, Changelog, and Validation sections. Base the summary on all commits in the branch, not only the latest one.
If the branch is not ready — uncommitted work, failing tests the user expects fixed first, or the user asked only to revise an existing PR description — say what is blocking creation and what remains. Do not pretend a PR was opened.
Use a concise imperative title. Prefer the repository's Conventional-Commit-like style:
feat(monitor): add token trend filters
fix(ingest): preserve cursor sqlite session ids
docs: document agent contributor workflows
chore: tighten sandbox cleanup handlingDo not include AI attribution in the title or body. Do not add generated-by footers, co-author trailers for agents, or notes that the PR was written by an AI tool.
Default to these sections:
## Description
**What.** [One sentence description].
**Why.** [One sentence description].
[Multi-paragraph description]
## Usage
[How users or developers will see this change]
## Changelog
- ...
## Validation
[Narrative description of how this was validated]Keep sections short when the PR is small. Add focused extra sections only when useful, such as ## Bug Evidence, ## Performance, ## Operational Impact, or ## References.
Open with bold one-line What. and Why. summaries, then expand in prose, bullets, or examples as needed.
State the concrete change in reviewer-facing terms. Mention files or subsystems when that helps review scope. Explain the reason for the change, not only the implementation. Include code, commands, queries, or before/after examples when they make the motivation concrete.
Good:
## Description
**What.** Adds a repo-local `moraine-dev` plugin with contributor agent skills.
**Why.** Agents were repeating PR body structure differently across sessions; a shared skill gives each agent the same review contract.
- Vendors `$moraine-dev:moraine-start-work`, `$moraine-dev:moraine-author-pr`,
and `$moraine-dev:moraine-sandbox-qa` in Codex, with `/moraine-start-work`,
`/moraine-author-pr`, and `/moraine-sandbox-qa` equivalents in Kiro.
- Documents local installation in `docs/development/agent-contributor-workflows.md`.
That makes it easier for reviewers to find behavior, impact, and test evidence.For user-facing features, demonstrate the feature in the PR description. Use the most natural form for the change: CLI commands, config snippets, API calls, screenshots, curl examples, or monitor UI steps.
Examples:
## Usage
Run the local Codex plugin marketplace from a checkout:
```bash
codex plugin marketplace add .
```
Then enable `moraine-dev` and invoke:
```text
Use $moraine-dev:moraine-author-pr to create this PR on GitHub.
```
Or launch the repository-local Kiro agent:
```bash
kiro-cli --agent moraine-dev
```
Then invoke the same shared skill:
```text
/moraine-author-pr
```## Usage
Example config:
```toml
[mcp]
retrieval_scope = "project_only"
```
With this setting, MCP search only returns sessions from the current project.Skip usage only when the PR is purely internal and no user, operator, or downstream developer action changes. If skipped, say No user-facing usage change.
Summarize the externally meaningful change. Use None when there is no release-note-worthy impact.
Good:
## Changelog
- Adds developer-only PR authoring guidance for Moraine contributor agents.
- No end-user runtime behavior change.Write a short narrative that names exact commands and outcomes. Include skipped validation with a reason.
Example:
## Validation
Validated plugin metadata with `python3 -m json.tool .agents/plugins/marketplace.json` and `quick_validate.py plugins/moraine-dev/skills/moraine-author-pr`. Ran `make docs-build` successfully. Rust tests were not run; change is docs and plugin metadata only.For stack-facing changes, include sandbox validation details or state why sandbox QA was not run.
Bug fix PRs must include specific evidence that the bug was fixed. Provide at least:
Example:
## Bug Evidence
Before this PR, `cursor_sqlite` records with missing workspace paths produced
empty project filters:
```text
search_sessions(project_only=true) -> 0 results
```
The fix normalizes the workspace path before writing the session row. The new
fixture covers the missing-path case, and `cargo test -p moraine-ingest-core
cursor_sqlite --locked` now passes.Performance optimization PRs must include baseline and PR metrics. Include:
Example:
## Performance
Workload: 100k normalized events, local ClickHouse, warm cache.
| Metric | Baseline | This PR | Delta |
| --- | ---: | ---: | ---: |
| `search_sessions` p50 | 182 ms | 121 ms | -33.5% |
| `search_sessions` p95 | 441 ms | 286 ms | -35.1% |
Command:
```bash
bash scripts/bench/search-sessions.sh --events 100000 --warm-cache
```Do not describe a change as a performance improvement without metrics. If metrics are not available, phrase it as a refactor or preparation work instead.
© eric-tramel, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in plugins/moraine-dev/skills/moraine-author-pr of eric-tramel/moraine.
Open the folder on GitHubat commit 3dd8598
Moraine Author PR next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Moraine Author PR this skilleric-tramel/moraine | 117 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Exposed Bug Fix WorkflowJetBrains/Exposed | 9.3k | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Issue Fixmono/SkiaSharp | 5.6k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Plannotator Release Preparationbacknotprop/plannotator | 9.3k | — | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Ansible Pull Request Reviewansible/ansible | 71k | — | ~570 | Automated safety check: Pass | GPL-3.0 |
JetBrains/Exposed
Takes a GitHub or YouTrack issue for the Exposed project through reproduction, a failing test, a fix, validation and a pull request.
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
mono/SkiaSharp
Fix bugs in SkiaSharp C bindings. An agent skill from mono/SkiaSharp.
backnotprop/plannotator
Drafts Plannotator release notes with full contributor credit, bumps versions in dependency order, builds, and starts the tag-driven release pipeline, in four reviewed phases.
ansible/ansible
Reviews an Ansible pull request by number, following the steps in the project's CLAUDE.md, with early checks for changelog fragments and tests.
makeplane/plane
Builds categorized release notes for a Plane release pull request from its commits and writes them into the PR description, for both the plane-cloud and plane-ee repos.
eric-tramel/moraine
Cuts and publishes a Moraine release end to end: version bump PR, tag, GitHub release notes, workflow check and PyPI package verification.
eric-tramel/moraine
Rewrites a moraine GitHub release body into a usage-focused format with install block, what's new, platform table, upgrade notes and one deduplicated changelog.
eric-tramel/moraine
Coordinates a delegated review of a Moraine PR or local change by seven focused reviewer subagents, merges their findings and follows up on the fixes.
eric-tramel/moraine
Looks at a pull request for the smallest good design, hunting for simplifications and architectural moves that remove whole classes of problems.
eric-tramel/moraine
Reviews a pull request for idiomatic implementation: use of the language, standard library, ecosystem conventions and the repository's own patterns.
eric-tramel/moraine
Review a PR through the CodeReviewSecurityReview persona. An agent skill from eric-tramel/moraine.
Works with
Categories
Create Moraine pull requests on GitHub. An agent skill from eric-tramel/moraine. Moraine Author PR is an agent skill from eric-tramel/moraine. Create Moraine pull requests on GitHub.
Moraine Author PR fits situations like: the branch is ready to open a PR; the user asks to create; after local changes are committed; documenting user-facing features.
Run `npx skills add eric-tramel/moraine --skill moraine-author-pr -a claude-code`. Or copy the skill folder (plugins/moraine-dev/skills/moraine-author-pr in eric-tramel/moraine) into .claude/skills/moraine-author-pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add eric-tramel/moraine --skill moraine-author-pr -a codex`. Or copy the skill folder (plugins/moraine-dev/skills/moraine-author-pr in eric-tramel/moraine) into .agents/skills/moraine-author-pr in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add eric-tramel/moraine --skill moraine-author-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/moraine-author-pr, .gemini/skills/moraine-author-pr, .github/skills/moraine-author-pr and .opencode/skills/moraine-author-pr in your project.
SKILL.md names no scripts, command-line tools or credentials: Moraine Author PR is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Moraine Author PR is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Moraine Author PR: Exposed Bug Fix Workflow (JetBrains/Exposed, 9.3k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Issue Fix (mono/SkiaSharp, 5.6k stars) and Plannotator Release Preparation (backnotprop/plannotator, 9.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
eric-tramel (a GitHub user) maintains it in eric-tramel/moraine, which has 117 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 11, 2026.
Source: eric-tramel/moraine on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.