CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

engram-issue-creation

Issue creation workflow for Engram following the issue-first enforcement system. Trigger: When creating a GitHub issue, reporting a bug, or requesting a feature.

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/issue-creation/SKILL.md
SKILL.md
Quality
Evals
Security

When to Use

Use this skill when:

  • Creating a GitHub issue (bug report, feature request, docs improvement, or tracked question)
  • Helping a contributor file an issue
  • Triaging or approving issues as a maintainer

Critical Rules

The contribution policy transition is PRE-CUTOVER / NOT ACTIVE; the active rules below still apply.

  1. Blank issues are disabled — MUST use the matching bug, feature, docs, or tracked-question template
  2. Every issue gets status:needs-review automatically on creation
  3. status:approved means maintainer-accepted proportional evidence as defined in CONTRIBUTING.md; bugs include current-main reproduction and root cause
  4. General questions go to Discussions; questions requiring tracked work use type:question

Workflow

1. Search for a canonical root-cause tracker; add a new occurrence there when applicable
2. Choose the correct template and report consequence plus release context, not root cause or implementation
3. Submit → issue gets status:needs-review automatically
4. A maintainer triages and assigns an investigator, who records each same-root occurrence on the canonical tracker before duplicate closure
5. Use proportional evidence: scope/checks for trivial changes; current-remote-main SHA, reproduction, violated invariant/root cause, and regression test plan for bugs; approved design/non-goals and independent review plan for high-risk changes
6. A maintainer replaces the current status with status:approved after accepting that evidence; any real assignee satisfies ownership, not necessarily the PR author

Issue Templates

Bug Report

Template: .github/ISSUE_TEMPLATE/bug_report.yml Auto-labels: type:bug, status:needs-review

Required Fields

FieldDescription
Existing Issue SearchRequired acknowledgement; add evidence to a canonical tracker when applicable
Observed ConsequenceClear user-visible consequence, without root-cause diagnosis
Steps to ReproduceNumbered steps to reproduce
Expected BehaviorWhat should have happened
Actual BehaviorWhat happened instead (include errors/logs)
Operating SystemDropdown: macOS, Linux variants, Windows, WSL
Release VersionReport context from engram version; an investigator verifies current remote main
Agent / ClientDropdown: Claude Code, OpenCode, Gemini CLI, Cursor, Windsurf, Other

Optional Fields

FieldDescription
Relevant LogsLog output (auto-formatted as code block)
Additional ContextScreenshots, workarounds, extra info

Example — Bug Report via CLI

gh issue create --template "bug_report.yml" \
  --title "fix(store): duplicate observations on concurrent saves" \
  --body "
### Observed Consequence
When two agents save observations concurrently, duplicates are created.

### Steps to Reproduce
1. Start two engram instances pointing to the same DB
2. Both save an observation with the same title simultaneously
3. Query observations — duplicates appear

### Expected Behavior
The second save should upsert, not insert a duplicate.

### Actual Behavior
Two identical observations exist with different IDs.

### Operating System
macOS

### Release Version
0.3.1

### Agent / Client
Claude Code

### Relevant Logs
\`\`\`
UNIQUE constraint failed: observations.title
\`\`\`
"

Feature Request

Template: .github/ISSUE_TEMPLATE/feature_request.yml Auto-labels: type:feature, status:needs-review

Required Fields

FieldDescription
Existing Issue SearchRequired acknowledgement; add evidence to a canonical tracker when applicable
Observed ConsequenceUser problem and impact, not an implementation proposal
Desired OutcomeUser outcome, not an implementation proposal
Affected AreaDropdown: CLI, MCP Server, TUI, Store, Sync, Skills, Documentation, Other
Release ContextRequired report context; use not release-specific when applicable

Optional Fields

FieldDescription
Workarounds and ConstraintsUser-observed workarounds or constraints, not implementation alternatives
Additional ContextMockups, examples, references

Example — Feature Request via CLI

gh issue create --template "feature_request.yml" \
  --title "feat(cli): add --json flag to mem search" \
  --body "
### Observed Consequence
When scripting with engram, parsing human-readable search results is fragile.

### Desired Outcome
Scripts can consume search results without parsing human-readable output.

### Release Context
not release-specific

### Affected Area
CLI (commands, flags)

### Workarounds and Constraints
Using \`jq\` to parse the current output is unreliable because the format is unstructured.
"

Tracked Question

Template: .github/ISSUE_TEMPLATE/tracked_question.yml Auto-labels: type:question, status:needs-review

Use this form only when the answer requires maintainer investigation, a repository change, or a durable decision. Send general questions and support to Discussions.

Required fields: existing-issue search acknowledgement, question, tracking reason, affected area, and release context. Additional context is optional.


Label System

Applied Automatically on Issue Creation

TemplateLabels added
Bug Reporttype:bug, status:needs-review
Feature Requesttype:feature, status:needs-review
Documentation Improvementtype:docs, status:needs-review
Tracked Questiontype:question, status:needs-review

Applied by Maintainers

LabelWhen to apply
status:approvedProportional evidence accepted; bugs include current-main reproduction and root-cause evidence
priority:criticalCritical bug or urgent feature
priority:highHigh priority
priority:mediumImportant but not blocking
priority:lowNice to have
status:possible-duplicateDuplicate under evaluation
status:wontfixClosed without implementation, including confirmed duplicates
resolution:duplicateConfirmed duplicate after closure

Maintainer Approval Workflow

1. Search for a canonical tracker, triage the consequence, and assign an investigator
2. For bugs, reproduce against exact current remote main and record SHA; identify the first violated repository-owned invariant
3. Cluster only same-root/contract occurrences; keep distinct roots separate
4. Accept evidence proportional to risk using CONTRIBUTING.md; a short issue explanation suffices, no separate design document by default
5. If accepted → replace the current status with status:approved; otherwise explain and close if needed
6. Require approval and a real assignee for new implementation; existing PRs must comply before merge, not before backlog-wide activation

Decision Tree

Is it a bug?                    → Use Bug Report template
Is it a new feature/improvement? → Use Feature Request template
Is it a general question?       → Use Discussions, NOT issues
Is it a tracked question?       → Use the Tracked Question template
Is it a possible duplicate?     → Replace the current status with status:possible-duplicate
Is it a confirmed duplicate?    → Close it, replace evaluation status with status:wontfix, then add resolution:duplicate

Commands

# Search existing issues before creating to keep canonical evidence together
gh issue list --search "keyword"

# Create bug report
gh issue create --template "bug_report.yml" --title "fix(scope): description"

# Create feature request
gh issue create --template "feature_request.yml" --title "feat(scope): description"

# Create documentation improvement
gh issue create --template "docs_improvement.yml" --title "docs(scope): description"

# Create tracked question
gh issue create --template "tracked_question.yml" --title "question(scope): description"

# Maintainer: approve an issue
gh issue edit <number> --remove-label "status:needs-review" --add-label "status:approved"

# Maintainer: add priority
gh issue edit <number> --add-label "priority:high"

# Maintainer: replace every active status while evaluating a possible duplicate
set -euo pipefail

other_statuses="$(gh issue view <number> --json labels --jq '.labels[].name | select(startswith("status:") and . != "status:possible-duplicate")')"
status_args=(--add-label "status:possible-duplicate")
if [[ -n "$other_statuses" ]]; then
  status_args+=(--remove-label "${other_statuses//$'\n'/,}")
fi
gh issue edit <number> "${status_args[@]}"

updated_statuses="$(gh issue view <number> --json labels --jq '.labels[].name | select(startswith("status:"))')"
if [[ "$updated_statuses" != "status:possible-duplicate" ]]; then
  echo "status replacement could not be confirmed; stop without retrying" >&2
  exit 1
fi

# Maintainer: close a confirmed duplicate, then replace evaluation status with terminal status and resolution
gh issue close <number> --reason "not planned" --comment "Closing as duplicate of #<canonical>."
gh issue edit <number> --remove-label "status:possible-duplicate" --add-label "status:wontfix,resolution:duplicate"
Repository

Gentleman-Programming/engram

Path

skills/issue-creation/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.