Skip to content

Commit 1a3c894

Browse files
committed
Merge remote-tracking branch 'origin/war-in/domains/security-group-details-page' into jakubstec/domains/security-group-details-page-group-permissions3
2 parents 68548ee + 12060db commit 1a3c894

2,556 files changed

Lines changed: 126260 additions & 76519 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/agents/helpdot-inline-reviewer.md

Lines changed: 16 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,52 +9,25 @@ model: inherit
99

1010
You are **Support Doc Optimizer** — an AI trained to evaluate HelpDot articles written for Expensify and create inline comments for specific violations.
1111

12-
Your job is to scan through changed documentation files and create **inline comments** for specific violations based on the three core criteria below.
12+
Your job is to scan through changed documentation files and create **inline comments** for specific violations. **All rules and criteria come from the help site governance files** — you must use them as the single source of truth.
13+
14+
## Governance (source of truth)
15+
16+
**Before reviewing, read these files and use them as the authoritative source for all rules and violations:**
17+
18+
1. **docs/HELPSITE_NAMING_CONVENTIONS.md** — UI referencing (buttons, tabs, menus, navigation), button/tab naming standards, three dots menu rule, navigation instructions, prohibited language, deterministic writing.
19+
2. **docs/HELP_AUTHORING_GUIDELINES.md** — Article structure, heading rules, metadata requirements, step formatting, AI retrieval optimization, cross-linking, screenshot placeholders, pre-publish validation.
20+
3. **docs/TEMPLATE.md** — Required YAML frontmatter pattern, heading guidance, FAQ structure, and structural expectations.
21+
22+
Create inline comments for any violation of the rules defined in those governance files. When in doubt, the governance docs override any other guidance.
1323

1424
**CRITICAL — Review only the proposed changes:** You must evaluate and comment only on the **diff** (the lines added or modified in the PR). Do NOT create inline comments on lines that are unchanged—those belong to the old file and are not part of the proposal. Use `gh pr diff` to know exactly which lines were changed; only create comments on those line numbers. Commenting on unchanged lines is out of scope and can fail or confuse the author.
1525

16-
## 1. Readability Violations (Create inline comments for)
17-
- Poor sentence clarity, grammar, or scannability issues
18-
- Illogical flow or ordering of sections
19-
- Reading level above 8th grade (complex jargon)
20-
- Unnecessary filler or verbose language
21-
- Incorrect use of numbered steps or bullet points
22-
23-
## 2. AI Readiness Violations (Create inline comments for)
24-
- Vague headings without full feature names (e.g., "Enable it", "Connect to it")
25-
- Short or generic headings instead of full task phrasing (e.g., "Options" → "Expense Rule options for Workspace Admins"; use the full task and audience in the heading)
26-
- Non-descriptive headings (e.g., "Where to find it" vs "Where to find Statement Matching")
27-
- Vague references like "this," "that," or "it" without clear context
28-
- Missing or incomplete YAML metadata:
29-
```yaml
30-
---
31-
title: [Full article title]
32-
description: [Concise, benefit-focused summary]
33-
keywords: [feature name, related terms, navigation path, etc.]
34-
internalScope: Audience is [target role]. Covers [main topic]. Does not cover [excluded areas].
35-
---
36-
```
37-
- **internalScope** must always be present. If the article does not specify it, use a clear default following the pattern: `Audience is [target role]. Covers [main topic]. Does not cover [excluded areas].`
38-
- Wrong heading levels (using ### or deeper instead of # or ##)
39-
40-
**Note:** A breadcrumb path after the H1 heading is **not** required. Do not flag missing breadcrumbs as a violation.
41-
42-
## 3. Expensify Style Compliance Violations (Create inline comments for)
43-
- Voice and tone issues:
44-
- Not casual yet professional
45-
- Excessive exclamation marks (max 1 per 400 words)
46-
- Terminology violations:
47-
- "Policy" instead of "Workspace"
48-
- "User" instead of "Member"
49-
- Wrong role names (not "Workspace Admin," "Domain Owner")
50-
- Button label violations:
51-
- "Continue" instead of "Next"
52-
- "Save" instead of "Confirm" at end of flows
53-
- Markdown formatting violations
54-
- FAQ structure violations:
55-
- Not using "# FAQ" as heading
56-
- Questions not using ## subheadings
57-
- Answers not in plain text
26+
### Violation categories (aligned with governance)
27+
28+
- **Readability / structure:** Clarity, flow, scannability, step formatting, heading hierarchy — per HELP_AUTHORING_GUIDELINES.md and TEMPLATE.md.
29+
- **AI readiness:** Task-based headings, full feature names, YAML metadata (title, description, keywords, **internalScope**), no generic headings — per HELP_AUTHORING_GUIDELINES.md and TEMPLATE.md. (Breadcrumb paths after H1 are not required; do not flag their absence.)
30+
- **Naming and style:** Exact UI labels, button/tab naming, terminology (e.g. Workspace not Policy, Member not User), navigation phrasing, prohibited language — per HELPSITE_NAMING_CONVENTIONS.md and HELP_AUTHORING_GUIDELINES.md. FAQ must use `# FAQ` and ## for questions per TEMPLATE.md.
5831

5932
## Instructions
6033

.claude/agents/helpdot-summary-reviewer.md

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,30 @@ model: inherit
99

1010
You are a documentation quality specialist that provides comprehensive assessments of HelpDot documentation changes.
1111

12-
Your job is to analyze all changed files and provide a single, comprehensive summary review with scores and overall recommendations.
12+
Your job is to analyze all changed files and provide a single, comprehensive summary review with scores and overall recommendations. **All scoring criteria and rules come from the help site governance files** — use them as the single source of truth.
13+
14+
## Governance (source of truth)
15+
16+
**Before reviewing, read these files and use them as the authoritative source for scoring and recommendations:**
17+
18+
1. **docs/HELPSITE_NAMING_CONVENTIONS.md** — UI referencing, button/tab naming, navigation rules, prohibited language.
19+
2. **docs/HELP_AUTHORING_GUIDELINES.md** — Structure, heading rules, metadata, steps, AI retrieval, cross-linking, validation checklist.
20+
3. **docs/TEMPLATE.md** — YAML frontmatter, heading guidance, FAQ structure.
1321

1422
**CRITICAL — Review only the proposed changes:** Base your assessment, scores, and recommendations **only on the changes being proposed** in the PR (the diff). Use `gh pr diff` to see what was added or modified. Do not score or critique unchanged portions of the file—those are from the old version and are not part of the proposal. Evaluate and feedback only on the diff.
1523

1624
## Scoring Criteria
1725

18-
### 1. Readability (1-10)
19-
- Sentence clarity and grammar
20-
- Logical flow and organization
21-
- Appropriate reading level (8th grade or below)
22-
- Clear, jargon-free language
23-
- Proper use of formatting elements
26+
Derive your scores from the governance files above:
2427

25-
### 2. AI Readiness (1-10)
26-
- Descriptive headings with full feature names and full task phrasing (e.g., "Expense Rule options for Workspace Admins" not "Options")
27-
- Clear context without vague references
28-
- Proper YAML metadata structure, including **internalScope** in the form: `Audience is [target role]. Covers [main topic]. Does not cover [excluded areas].` (use a clear default if not provided)
29-
- Consistent heading hierarchy (# and ## only)
28+
### 1. Readability (1-10)
29+
- Sentence clarity, flow, scannability, step formatting — per HELP_AUTHORING_GUIDELINES.md and TEMPLATE.md.
3030

31-
**Note:** Breadcrumb paths after H1 are not required; do not penalize for their absence.
31+
### 2. AI Readiness (1-10)
32+
- Task-based headings, full feature names, YAML metadata (including **internalScope**), heading hierarchy (# and ## only) — per HELP_AUTHORING_GUIDELINES.md and TEMPLATE.md. (Breadcrumb paths after H1 are not required; do not penalize for their absence.)
3233

3334
### 3. Style Compliance (1-10)
34-
- Expensify voice and tone standards
35-
- Correct terminology (workspace, member, etc.)
36-
- Proper button labels and UI terms
37-
- Markdown formatting compliance
38-
- FAQ structure adherence
35+
- Exact UI terminology, button/tab naming, terminology (e.g. Workspace, Member), navigation phrasing, FAQ structure — per HELPSITE_NAMING_CONVENTIONS.md and HELP_AUTHORING_GUIDELINES.md.
3936

4037
## Output Format
4138

.claude/commands/review-code-pr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
allowed-tools: Bash(gh pr diff:*),Bash(gh pr view:*)
2+
allowed-tools: Bash(gh pr diff:*),Bash(gh pr view:*),Bash(check-compiler.sh:*)
33
description: Review a code contribution pull request
44
---
55

.claude/commands/review-helpdot-pr.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,21 @@ allowed-tools: Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),mcp__
33
description: Review a HelpDot documentation pull request
44
---
55

6-
Perform a comprehensive HelpDot documentation review using two specialized subagents:
6+
Perform a comprehensive HelpDot documentation review using two specialized subagents. Both reviewers use the **help site governance files** in the repo as the source of truth for rules and scoring:
7+
8+
- **docs/HELPSITE_NAMING_CONVENTIONS.md** — UI referencing, button/tab naming, navigation
9+
- **docs/HELP_AUTHORING_GUIDELINES.md** — Structure, headings, metadata, AI retrieval, validation
10+
- **docs/TEMPLATE.md** — YAML frontmatter, heading guidance, FAQ structure
711

812
## Step 1: Inline Review
913
Use the helpdot-inline-reviewer agent to:
1014
- Scan all changed documentation files
11-
- Create inline comments for specific HelpDot rule violations
15+
- Create inline comments for violations of the governance rules above
1216
- Focus on line-specific, actionable feedback
1317

1418
## Step 2: Summary Review
1519
Use the helpdot-summary-reviewer agent to:
16-
- Analyze the overall quality of all changes
20+
- Analyze the overall quality of all changes using the governance criteria
1721
- Provide comprehensive assessment with scoring
1822
- Post one top-level PR comment with summary and recommendations
1923

.claude/scripts/check-compiler.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/bash
2+
3+
# Secure proxy script to run React Compiler compliance check on a single file.
4+
# Validates the filepath before passing it to the underlying npm script.
5+
set -eu
6+
7+
if [[ $# -lt 1 ]]; then
8+
echo "Usage: $0 <filepath>" >&2
9+
exit 1
10+
fi
11+
12+
readonly FILEPATH="$1"
13+
14+
# Strict filepath validation - reject shell metacharacters
15+
if ! [[ "$FILEPATH" =~ ^[a-zA-Z0-9_./@-]+$ ]]; then
16+
echo "Error: Invalid filepath (contains disallowed characters)" >&2
17+
exit 1
18+
fi
19+
20+
npm run react-compiler-compliance-check -- check "$FILEPATH"

.claude/settings.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,21 @@
3838
"mcp__playwright__browser_wait_for",
3939
"mcp__playwright__browser_close",
4040
"mcp__playwright__browser_evaluate",
41-
"mcp__playwright__browser_handle_dialog"
41+
"mcp__playwright__browser_handle_dialog",
42+
"mcp__sentry__find_organizations",
43+
"mcp__sentry__find_projects",
44+
"mcp__sentry__find_releases",
45+
"mcp__sentry__find_teams",
46+
"mcp__sentry__get_doc",
47+
"mcp__sentry__get_event_attachment",
48+
"mcp__sentry__get_issue_details",
49+
"mcp__sentry__get_issue_tag_values",
50+
"mcp__sentry__get_trace_details",
51+
"mcp__sentry__search_docs",
52+
"mcp__sentry__search_events",
53+
"mcp__sentry__search_issue_events",
54+
"mcp__sentry__search_issues",
55+
"mcp__sentry__whoami"
4256
]
4357
},
4458
"enabledPlugins": {

.claude/skills/coding-standards/rules/clean-react-0-compiler.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,11 @@ function Avatar({source, size}: AvatarProps) {
9898
Before flagging, verify that the file actually compiles with React Compiler:
9999

100100
```bash
101-
npx react-compiler-healthcheck --src "<filepath>" --verbose
101+
check-compiler.sh <filepath>
102102
```
103103

104+
**IMPORTANT:** Run `check-compiler.sh` exactly as shown above - by name only, without an absolute path or `bash` prefix. The script is already on `$PATH`.
105+
104106
If the output contains **"Failed to compile"** for the file under review, the rule **does not apply** — the author may have no alternative to manual memoization until the compilation issue is resolved.
105107

106108
#### Condition

.claude/skills/coding-standards/rules/clean-react-1-composition-over-config.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,11 +462,11 @@ In all cases, the rule applies to: **new components**, **new features added to e
462462
- The optional prop is used for logic beyond just conditional rendering (e.g., computing derived values, passed to callbacks, used in multiple places within the component)
463463
- The component is a thin wrapper around a platform primitive (e.g., wrapping `TextInput`, `ScrollView`, `Pressable`) — these naturally pass through configuration props
464464
- Items come from **runtime data** (API responses, user-generated content, Onyx collections) — dynamic data must be mapped
465-
- The array is used with **list components** (e.g., `FlatList`, `SectionList`, or custom wrappers) — these require data arrays by design
465+
- The array is used with **list components** (e.g., `FlatList`, or custom wrappers) — these require data arrays by design
466466
- Items are truly **homogeneous** (same shape, same behavior, only values differ) and the count is **unbounded** (e.g., list of chat messages, search results)
467467
- The array is a **framework requirement** (e.g., React Navigation screen config, form validation rules)
468468
- The `ReactNode` prop is `children` itself — `children` is the foundation of composition, not configuration
469-
- The render function is a **list component callback** (`renderItem` on `FlatList`, `SectionList`, `DraggableList`) — these are framework requirements
469+
- The render function is a **list component callback** (`renderItem` on `FlatList`, `DraggableList`) — these are framework requirements
470470
- The render function receives **per-item runtime data** from a dynamic collection (e.g., `renderSuggestionMenuItem(item, index)`) — this is list-style rendering, not slot configuration
471471

472472
**Search Patterns** (hints for reviewers):

.claude/skills/coding-standards/rules/perf-1-no-spread-in-renderitem.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ title: No spread in list item's renderItem
3737

3838
Flag ONLY when ALL of these are true:
3939

40-
- Code is inside a renderItem function (function passed to FlatList, SectionList, etc.)
40+
- Code is inside a renderItem function (function passed to FlatList, etc.)
4141
- A spread operator (...) is used on an object
4242
- That object is being passed as a prop to a component
4343
- The spread creates a NEW object literal inline

.claude/skills/sentry/SKILL.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
name: sentry
3+
description: Analyze Sentry issues, spans, crashes, and performance metrics. Use when user requests check in Sentry, asks about performance metrics and spans or asks about crash rates.
4+
---
5+
6+
# Sentry
7+
8+
## When to Use This Skill
9+
10+
Use Sentry skill when:
11+
- User requests any data from Sentry
12+
- User asks about performance metrics or span summary
13+
- User want to compare metrics between any date ranges
14+
- User asks about latest production crashes and issues
15+
- User want to investigate profiles or traces from production sessions
16+
17+
## Sentry MCP
18+
19+
The Sentry MCP server is configured in `.mcp.json` and gives Claude Code direct access to Sentry.
20+
21+
### Prerequisites
22+
23+
**Setup** (one-time per engineer): On first use, Claude Code will open a browser OAuth login to Sentry. Sign in and authorize — no manual token setup required.
24+
25+
### Available MCP Tools
26+
27+
Use these tools for data analysis:
28+
29+
| Tool | Purpose |
30+
|------|---------|
31+
| `mcp__sentry__find_releases` | Find release versions for scoping queries |
32+
| `mcp__sentry__search_issues` | Search for errors/crashes by query, project, date range |
33+
| `mcp__sentry__search_events` | Query raw events/spans (performance data, durations) |
34+
| `mcp__sentry__search_issue_events` | Get individual events for a known issue ID |
35+
| `mcp__sentry__get_issue_tag_values` | Inspect tag distributions (e.g. device, version) on an issue |
36+
| `mcp__sentry__get_sentry_resource` | Fetch a specific Sentry resource by URL/ID |
37+
38+
**Do not use** `mcp__sentry__analyze_issue_with_seer` — AI analysis is out of scope for this skill.
39+
40+
Always use:
41+
- **org slug**: `expensify`
42+
- **project slug**: `app`
43+
44+
## Example uses
45+
46+
- "Search Sentry for crashes in the last 24h related to expense creation"
47+
- "Get details on Sentry issue APP-123"
48+
- "Compare P90 of ManualAppStartup durations between last two weeks"

0 commit comments

Comments
 (0)