mirror of
https://github.com/garrytan/gstack.git
synced 2026-07-06 16:17:56 +02:00
feat: anti-slop design constraints + delete duplicate constants
Tightens design-consultation and design-shotgun to push back on the convergence traps every AI design tool falls into. Changes: - scripts/resolvers/constants.ts: add "system-ui as primary font" to AI_SLOP_BLACKLIST. Document Space Grotesk as the new "safe alternative to Inter" convergence trap alongside the existing overused fonts. - scripts/gen-skill-docs.ts: delete duplicate AI slop constants block (dead code — scripts/resolvers/constants.ts is the live source). Prevents drift between the two definitions. - design-consultation/SKILL.md.tmpl: add Space Grotesk + system-ui to overused/slop lists. Add "anti-convergence directive" — vary across generations in the same project. Add Phase 1 "memorable-thing forcing question" (what's the one thing someone will remember?). Add Phase 5 "would a human designer be embarrassed by this?" self-gate before presenting variants. - design-shotgun/SKILL.md.tmpl: anti-convergence directive — each variant must use a different font, palette, and layout. If two variants look like siblings, one of them failed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -736,6 +736,15 @@ Ask the user a single question that covers everything you need to know. Pre-fill
|
|||||||
|
|
||||||
If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"*
|
If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"*
|
||||||
|
|
||||||
|
**Memorable-thing forcing question.** Before moving on, ask the user: *"What's the one
|
||||||
|
thing you want someone to remember after they see this product for the first time?"*
|
||||||
|
|
||||||
|
One sentence answer. Could be a feeling ("this is serious software for serious work"),
|
||||||
|
a visual ("the blue that's almost black"), a claim ("faster than anything else"), or
|
||||||
|
a posture ("for builders, not managers"). Write it down. Every subsequent design
|
||||||
|
decision should serve this memorable thing. Design that tries to be memorable for
|
||||||
|
everything is memorable for nothing.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Phase 2: Research (only if user said yes)
|
## Phase 2: Research (only if user said yes)
|
||||||
@@ -919,7 +928,17 @@ The SAFE/RISK breakdown is critical. Design coherence is table stakes — every
|
|||||||
Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body)
|
Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body)
|
||||||
|
|
||||||
**Overused fonts** (never recommend as primary — use only if user specifically requests):
|
**Overused fonts** (never recommend as primary — use only if user specifically requests):
|
||||||
Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins
|
Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins, Space Grotesk.
|
||||||
|
|
||||||
|
Space Grotesk is on the list specifically because every AI design tool converges on it
|
||||||
|
as "the safe alternative to Inter." That's the convergence trap. Treat it the same as
|
||||||
|
Inter: only use if the user asks for it by name.
|
||||||
|
|
||||||
|
**Anti-convergence directive:** Across multiple generations in the same project, VARY
|
||||||
|
light/dark, fonts, and aesthetic directions. Never propose the same choices twice
|
||||||
|
without explicit justification. If the user's prior session used Geist + dark + editorial,
|
||||||
|
propose something different this time (or explicitly acknowledge you're doubling down
|
||||||
|
because it fits the brief). Convergence across generations is slop.
|
||||||
|
|
||||||
**AI slop anti-patterns** (never include in your recommendations):
|
**AI slop anti-patterns** (never include in your recommendations):
|
||||||
- Purple/violet gradients as default accent
|
- Purple/violet gradients as default accent
|
||||||
@@ -928,6 +947,7 @@ Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins
|
|||||||
- Uniform bubbly border-radius on all elements
|
- Uniform bubbly border-radius on all elements
|
||||||
- Gradient buttons as the primary CTA pattern
|
- Gradient buttons as the primary CTA pattern
|
||||||
- Generic stock-photo-style hero sections
|
- Generic stock-photo-style hero sections
|
||||||
|
- system-ui / -apple-system as the primary display or body font (the "I gave up on typography" signal)
|
||||||
- "Built for X" / "Designed for Y" marketing copy patterns
|
- "Built for X" / "Designed for Y" marketing copy patterns
|
||||||
|
|
||||||
### Coherence Validation
|
### Coherence Validation
|
||||||
@@ -983,6 +1003,13 @@ $D check --image "$_DESIGN_DIR/variant-A.png" --brief "<the original brief>"
|
|||||||
|
|
||||||
Show each variant inline (Read tool on each PNG) for instant preview.
|
Show each variant inline (Read tool on each PNG) for instant preview.
|
||||||
|
|
||||||
|
**Before presenting to the user, self-gate:** For each variant, ask yourself: *"Would
|
||||||
|
a human designer be embarrassed to put their name on this?"* If yes, discard the
|
||||||
|
variant and regenerate. This is a hard gate. A mediocre AI mockup is worse than no
|
||||||
|
mockup. Embarrassment triggers include: purple gradient hero, 3-column SaaS grid,
|
||||||
|
centered-everything, Inter body text, generic stock-photo vibe, system-ui font,
|
||||||
|
gradient CTA button, bubble-radius everything. Any of those = reject and regenerate.
|
||||||
|
|
||||||
Tell the user: "I've generated 3 visual directions applying your design system to a realistic [product type] screen. Pick your favorite in the comparison board that just opened in your browser. You can also remix elements across variants."
|
Tell the user: "I've generated 3 visual directions applying your design system to a realistic [product type] screen. Pick your favorite in the comparison board that just opened in your browser. You can also remix elements across variants."
|
||||||
|
|
||||||
### Comparison Board + Feedback Loop
|
### Comparison Board + Feedback Loop
|
||||||
|
|||||||
@@ -93,6 +93,15 @@ Ask the user a single question that covers everything you need to know. Pre-fill
|
|||||||
|
|
||||||
If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"*
|
If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"*
|
||||||
|
|
||||||
|
**Memorable-thing forcing question.** Before moving on, ask the user: *"What's the one
|
||||||
|
thing you want someone to remember after they see this product for the first time?"*
|
||||||
|
|
||||||
|
One sentence answer. Could be a feeling ("this is serious software for serious work"),
|
||||||
|
a visual ("the blue that's almost black"), a claim ("faster than anything else"), or
|
||||||
|
a posture ("for builders, not managers"). Write it down. Every subsequent design
|
||||||
|
decision should serve this memorable thing. Design that tries to be memorable for
|
||||||
|
everything is memorable for nothing.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Phase 2: Research (only if user said yes)
|
## Phase 2: Research (only if user said yes)
|
||||||
@@ -212,7 +221,17 @@ The SAFE/RISK breakdown is critical. Design coherence is table stakes — every
|
|||||||
Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body)
|
Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body)
|
||||||
|
|
||||||
**Overused fonts** (never recommend as primary — use only if user specifically requests):
|
**Overused fonts** (never recommend as primary — use only if user specifically requests):
|
||||||
Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins
|
Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins, Space Grotesk.
|
||||||
|
|
||||||
|
Space Grotesk is on the list specifically because every AI design tool converges on it
|
||||||
|
as "the safe alternative to Inter." That's the convergence trap. Treat it the same as
|
||||||
|
Inter: only use if the user asks for it by name.
|
||||||
|
|
||||||
|
**Anti-convergence directive:** Across multiple generations in the same project, VARY
|
||||||
|
light/dark, fonts, and aesthetic directions. Never propose the same choices twice
|
||||||
|
without explicit justification. If the user's prior session used Geist + dark + editorial,
|
||||||
|
propose something different this time (or explicitly acknowledge you're doubling down
|
||||||
|
because it fits the brief). Convergence across generations is slop.
|
||||||
|
|
||||||
**AI slop anti-patterns** (never include in your recommendations):
|
**AI slop anti-patterns** (never include in your recommendations):
|
||||||
- Purple/violet gradients as default accent
|
- Purple/violet gradients as default accent
|
||||||
@@ -221,6 +240,7 @@ Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins
|
|||||||
- Uniform bubbly border-radius on all elements
|
- Uniform bubbly border-radius on all elements
|
||||||
- Gradient buttons as the primary CTA pattern
|
- Gradient buttons as the primary CTA pattern
|
||||||
- Generic stock-photo-style hero sections
|
- Generic stock-photo-style hero sections
|
||||||
|
- system-ui / -apple-system as the primary display or body font (the "I gave up on typography" signal)
|
||||||
- "Built for X" / "Designed for Y" marketing copy patterns
|
- "Built for X" / "Designed for Y" marketing copy patterns
|
||||||
|
|
||||||
### Coherence Validation
|
### Coherence Validation
|
||||||
@@ -276,6 +296,13 @@ $D check --image "$_DESIGN_DIR/variant-A.png" --brief "<the original brief>"
|
|||||||
|
|
||||||
Show each variant inline (Read tool on each PNG) for instant preview.
|
Show each variant inline (Read tool on each PNG) for instant preview.
|
||||||
|
|
||||||
|
**Before presenting to the user, self-gate:** For each variant, ask yourself: *"Would
|
||||||
|
a human designer be embarrassed to put their name on this?"* If yes, discard the
|
||||||
|
variant and regenerate. This is a hard gate. A mediocre AI mockup is worse than no
|
||||||
|
mockup. Embarrassment triggers include: purple gradient hero, 3-column SaaS grid,
|
||||||
|
centered-everything, Inter body text, generic stock-photo vibe, system-ui font,
|
||||||
|
gradient CTA button, bubble-radius everything. Any of those = reject and regenerate.
|
||||||
|
|
||||||
Tell the user: "I've generated 3 visual directions applying your design system to a realistic [product type] screen. Pick your favorite in the comparison board that just opened in your browser. You can also remix elements across variants."
|
Tell the user: "I've generated 3 visual directions applying your design system to a realistic [product type] screen. Pick your favorite in the comparison board that just opened in your browser. You can also remix elements across variants."
|
||||||
|
|
||||||
{{DESIGN_SHOTGUN_LOOP}}
|
{{DESIGN_SHOTGUN_LOOP}}
|
||||||
|
|||||||
@@ -1097,6 +1097,7 @@ The test: would a human designer at a respected studio ever ship this?
|
|||||||
- Colored left-border on cards (`border-left: 3px solid <accent>`)
|
- Colored left-border on cards (`border-left: 3px solid <accent>`)
|
||||||
- Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
- Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
||||||
- Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
- Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
||||||
|
- system-ui or `-apple-system` as the PRIMARY display/body font — the "I gave up on typography" signal. Pick a real typeface.
|
||||||
|
|
||||||
**10. Performance as Design** (6 items)
|
**10. Performance as Design** (6 items)
|
||||||
- LCP < 2.0s (web apps), < 1.5s (informational sites)
|
- LCP < 2.0s (web apps), < 1.5s (informational sites)
|
||||||
@@ -1293,6 +1294,7 @@ Tie everything to user goals and product objectives. Always suggest specific imp
|
|||||||
8. Colored left-border on cards (`border-left: 3px solid <accent>`)
|
8. Colored left-border on cards (`border-left: 3px solid <accent>`)
|
||||||
9. Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
9. Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
||||||
10. Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
10. Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
||||||
|
11. system-ui or `-apple-system` as the PRIMARY display/body font — the "I gave up on typography" signal. Pick a real typeface.
|
||||||
|
|
||||||
Source: [OpenAI "Designing Delightful Frontends with GPT-5.4"](https://developers.openai.com/blog/designing-delightful-frontends-with-gpt-5-4) (Mar 2026) + gstack design methodology.
|
Source: [OpenAI "Designing Delightful Frontends with GPT-5.4"](https://developers.openai.com/blog/designing-delightful-frontends-with-gpt-5-4) (Mar 2026) + gstack design methodology.
|
||||||
|
|
||||||
|
|||||||
@@ -716,6 +716,15 @@ C) "Name" — one-line visual description of this direction
|
|||||||
|
|
||||||
Draw on DESIGN.md, taste memory, and the user's request to make each concept distinct.
|
Draw on DESIGN.md, taste memory, and the user's request to make each concept distinct.
|
||||||
|
|
||||||
|
**Anti-convergence directive (hard requirement):** Each variant MUST use a different
|
||||||
|
font family, color palette, and layout approach. If two variants look like siblings
|
||||||
|
— same typographic feel, overlapping color temperature, comparable layout rhythm —
|
||||||
|
one of them failed. Regenerate the weaker one with a deliberately different direction.
|
||||||
|
|
||||||
|
Concrete test: if someone could swap the headline text between two variants without
|
||||||
|
noticing, they're too similar. Variants should feel like they came from three
|
||||||
|
different design teams, not the same team at three different coffee levels.
|
||||||
|
|
||||||
### Step 3b: Concept Confirmation
|
### Step 3b: Concept Confirmation
|
||||||
|
|
||||||
Use AskUserQuestion to confirm before spending API credits:
|
Use AskUserQuestion to confirm before spending API credits:
|
||||||
|
|||||||
@@ -161,6 +161,15 @@ C) "Name" — one-line visual description of this direction
|
|||||||
|
|
||||||
Draw on DESIGN.md, taste memory, and the user's request to make each concept distinct.
|
Draw on DESIGN.md, taste memory, and the user's request to make each concept distinct.
|
||||||
|
|
||||||
|
**Anti-convergence directive (hard requirement):** Each variant MUST use a different
|
||||||
|
font family, color palette, and layout approach. If two variants look like siblings
|
||||||
|
— same typographic feel, overlapping color temperature, comparable layout rhythm —
|
||||||
|
one of them failed. Regenerate the weaker one with a deliberately different direction.
|
||||||
|
|
||||||
|
Concrete test: if someone could swap the headline text between two variants without
|
||||||
|
noticing, they're too similar. Variants should feel like they came from three
|
||||||
|
different design teams, not the same team at three different coffee levels.
|
||||||
|
|
||||||
### Step 3b: Concept Confirmation
|
### Step 3b: Concept Confirmation
|
||||||
|
|
||||||
Use AskUserQuestion to confirm before spending API credits:
|
Use AskUserQuestion to confirm before spending API credits:
|
||||||
|
|||||||
@@ -1211,6 +1211,7 @@ FIX TO 10: Rewrite vague UI descriptions with specific alternatives.
|
|||||||
8. Colored left-border on cards (`border-left: 3px solid <accent>`)
|
8. Colored left-border on cards (`border-left: 3px solid <accent>`)
|
||||||
9. Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
9. Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")
|
||||||
10. Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
10. Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)
|
||||||
|
11. system-ui or `-apple-system` as the PRIMARY display/body font — the "I gave up on typography" signal. Pick a real typeface.
|
||||||
|
|
||||||
Source: [OpenAI "Designing Delightful Frontends with GPT-5.4"](https://developers.openai.com/blog/designing-delightful-frontends-with-gpt-5-4) (Mar 2026) + gstack design methodology.
|
Source: [OpenAI "Designing Delightful Frontends with GPT-5.4"](https://developers.openai.com/blog/designing-delightful-frontends-with-gpt-5-4) (Mar 2026) + gstack design methodology.
|
||||||
- "Cards with icons" → what differentiates these from every SaaS template?
|
- "Cards with icons" → what differentiates these from every SaaS template?
|
||||||
|
|||||||
@@ -44,44 +44,8 @@ const HOST_ARG_VAL: HostArg = (() => {
|
|||||||
let HOST: Host = HOST_ARG_VAL === 'all' ? 'claude' : HOST_ARG_VAL;
|
let HOST: Host = HOST_ARG_VAL === 'all' ? 'claude' : HOST_ARG_VAL;
|
||||||
|
|
||||||
// HostPaths, HOST_PATHS, and TemplateContext imported from ./resolvers/types (line 7-8)
|
// HostPaths, HOST_PATHS, and TemplateContext imported from ./resolvers/types (line 7-8)
|
||||||
|
// Design constants (AI_SLOP_BLACKLIST, OPENAI_HARD_REJECTIONS, OPENAI_LITMUS_CHECKS)
|
||||||
// ─── Shared Design Constants ────────────────────────────────
|
// live in ./resolvers/constants and are consumed by resolvers directly.
|
||||||
|
|
||||||
/** gstack's 10 AI slop anti-patterns — shared between DESIGN_METHODOLOGY and DESIGN_HARD_RULES */
|
|
||||||
const AI_SLOP_BLACKLIST = [
|
|
||||||
'Purple/violet/indigo gradient backgrounds or blue-to-purple color schemes',
|
|
||||||
'**The 3-column feature grid:** icon-in-colored-circle + bold title + 2-line description, repeated 3x symmetrically. THE most recognizable AI layout.',
|
|
||||||
'Icons in colored circles as section decoration (SaaS starter template look)',
|
|
||||||
'Centered everything (`text-align: center` on all headings, descriptions, cards)',
|
|
||||||
'Uniform bubbly border-radius on every element (same large radius on everything)',
|
|
||||||
'Decorative blobs, floating circles, wavy SVG dividers (if a section feels empty, it needs better content, not decoration)',
|
|
||||||
'Emoji as design elements (rockets in headings, emoji as bullet points)',
|
|
||||||
'Colored left-border on cards (`border-left: 3px solid <accent>`)',
|
|
||||||
'Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")',
|
|
||||||
'Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)',
|
|
||||||
];
|
|
||||||
|
|
||||||
/** OpenAI hard rejection criteria (from "Designing Delightful Frontends with GPT-5.4", Mar 2026) */
|
|
||||||
const OPENAI_HARD_REJECTIONS = [
|
|
||||||
'Generic SaaS card grid as first impression',
|
|
||||||
'Beautiful image with weak brand',
|
|
||||||
'Strong headline with no clear action',
|
|
||||||
'Busy imagery behind text',
|
|
||||||
'Sections repeating same mood statement',
|
|
||||||
'Carousel with no narrative purpose',
|
|
||||||
'App UI made of stacked cards instead of layout',
|
|
||||||
];
|
|
||||||
|
|
||||||
/** OpenAI litmus checks — 7 yes/no tests for cross-model consensus scoring */
|
|
||||||
const OPENAI_LITMUS_CHECKS = [
|
|
||||||
'Brand/product unmistakable in first screen?',
|
|
||||||
'One strong visual anchor present?',
|
|
||||||
'Page understandable by scanning headlines only?',
|
|
||||||
'Each section has one job?',
|
|
||||||
'Are cards actually necessary?',
|
|
||||||
'Does motion improve hierarchy or atmosphere?',
|
|
||||||
'Would design feel premium with all decorative shadows removed?',
|
|
||||||
];
|
|
||||||
|
|
||||||
// ─── External Host Helpers ───────────────────────────────────
|
// ─── External Host Helpers ───────────────────────────────────
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// ─── Shared Design Constants ────────────────────────────────
|
// ─── Shared Design Constants ────────────────────────────────
|
||||||
|
|
||||||
/** gstack's 10 AI slop anti-patterns — shared between DESIGN_METHODOLOGY and DESIGN_HARD_RULES */
|
/**
|
||||||
|
* gstack's AI slop anti-patterns — shared between DESIGN_METHODOLOGY and DESIGN_HARD_RULES.
|
||||||
|
*
|
||||||
|
* Overused fonts worth calling out in templates (not a pattern to blacklist, but a
|
||||||
|
* convergence risk): Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat,
|
||||||
|
* Poppins, and increasingly Space Grotesk. Every AI design tool picks one of these.
|
||||||
|
* Design prompts should bias toward less-common display faces.
|
||||||
|
*/
|
||||||
export const AI_SLOP_BLACKLIST = [
|
export const AI_SLOP_BLACKLIST = [
|
||||||
'Purple/violet/indigo gradient backgrounds or blue-to-purple color schemes',
|
'Purple/violet/indigo gradient backgrounds or blue-to-purple color schemes',
|
||||||
'**The 3-column feature grid:** icon-in-colored-circle + bold title + 2-line description, repeated 3x symmetrically. THE most recognizable AI layout.',
|
'**The 3-column feature grid:** icon-in-colored-circle + bold title + 2-line description, repeated 3x symmetrically. THE most recognizable AI layout.',
|
||||||
@@ -12,6 +19,7 @@ export const AI_SLOP_BLACKLIST = [
|
|||||||
'Colored left-border on cards (`border-left: 3px solid <accent>`)',
|
'Colored left-border on cards (`border-left: 3px solid <accent>`)',
|
||||||
'Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")',
|
'Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...")',
|
||||||
'Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)',
|
'Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height)',
|
||||||
|
'system-ui or `-apple-system` as the PRIMARY display/body font — the "I gave up on typography" signal. Pick a real typeface.',
|
||||||
];
|
];
|
||||||
|
|
||||||
/** OpenAI hard rejection criteria (from "Designing Delightful Frontends with GPT-5.4", Mar 2026) */
|
/** OpenAI hard rejection criteria (from "Designing Delightful Frontends with GPT-5.4", Mar 2026) */
|
||||||
|
|||||||
Reference in New Issue
Block a user