diff --git a/.serena/memories/critical-info.md b/.serena/memories/critical-info.md index 17bb15bc55..496bcf6f2e 100644 --- a/.serena/memories/critical-info.md +++ b/.serena/memories/critical-info.md @@ -9,7 +9,7 @@ You are working on the GitHub project `penpot/penpot`, a monorepo. # Development workflow -- Commit only when explicitly asked. Commit/PR format + changelog: `mem:workflow/creating-commits`, `mem:workflow/creating-prs`. +- Commit only when explicitly asked. Commit/PR format + changelog: `mem:workflow/creating-commits`, `mem:workflow/creating-prs`. Issue creation (titles, labels, body templates, Issue Types): `mem:workflow/creating-issues`. - You have access to the GitHub CLI `gh` or corresponding MCP tools. - Issues are also managed on Taiga. Read issues using the `read_taiga_issue` tool. - Before writing code, analyze the task in depth and describe your plan. If the task is complex, break it down into atomic steps. diff --git a/.serena/memories/workflow/creating-issues.md b/.serena/memories/workflow/creating-issues.md new file mode 100644 index 0000000000..42a07f7887 --- /dev/null +++ b/.serena/memories/workflow/creating-issues.md @@ -0,0 +1,160 @@ +# Creating Issues + +Create GitHub issues only on explicit request. Use `gh` CLI authenticated to `penpot/penpot`. + +## Title Derivation + +Derive the title from the source material (bug report, user feedback, feature request, etc.) — not from any pre-existing title which may be auto-generated or stale. + +### Bug titles (descriptive present tense) + +Describe the symptom as it appears to the user. Format: `[Where] [present-tense verb] when [condition]`. + +- *"Plugin API crashes when setting text fills"* +- *"Canvas renders glitches when zooming quickly"* +- *"French Canada locale falls back to French (fr) translations"* + +Do **not** start bug titles with "Fix" or any imperative verb — state what's broken, not command a fix. + +### Feature / Enhancement titles (imperative mood) + +Command what should be built. Format: `[Imperative verb] [what] in/on [where]`. + +- *"Add customizable dash and gap length controls to dashed strokes in the sidebar"* +- *"Show user, timestamp, and hash in the workspace history panel like git commits"* + +### Universal rules + +- **Include the "where"** — specify the UI location or module (e.g. "in the sidebar", "on the stroke options") +- **No prefixes** — strip `bug:`, `feature:`, `feat:`, `:bug:`, `:sparkles:`, `[PENPOT FEEDBACK]`, etc. +- **No emoji** — plain text only +- **Be specific** — prefer concrete detail over generality +- **Two problems → cover both** — if the description has two distinct but related issues, capture both joined by "and" + +## Metadata + +| Field | Rule | +|-------|------| +| **Labels** | `bug` (crashes/regressions) · `enhancement` (new features) · `community contribution` (PRs from non-core) · skip workflow labels (`backport candidate`, `team-qa`) | +| **Milestone** | Use the current or next planned milestone. Fetch available milestones: `gh api repos/penpot/penpot/milestones --jq '.[].title'`. If unsure, omit. | +| **Project** | Always `Main` (project number 8). Use `--project "Main"` flag. | +| **Issue Type** | See Issue Type section below. Cannot be set via `gh issue create` — use GraphQL after creation. | + +## Issue Body Template + +Write the body to a temp file to avoid shell quoting issues: + +**Bug template:** +```markdown +### Description + + + +### Steps to reproduce + +1. +2. + +### Expected behavior + + + +### Affected versions + + +``` + +**Enhancement template:** +```markdown +### Description + + + +### Use case + + + +### Affected versions + + +``` + +## Creating the Issue + +```bash +cat > /tmp/issue-body.md << 'ISSUE_BODY' + +ISSUE_BODY + +gh issue create \ + --repo penpot/penpot \ + --title "" \ + --label "