Skip to content

Commit 35aa021

Browse files
authored
Merge pull request #387 from netwrix/dev
reformat style guide, updated some rules, updated linter workflow
2 parents 49a4967 + 48862a8 commit 35aa021

5 files changed

Lines changed: 919 additions & 161 deletions

File tree

.github/workflows/claude-documentation-reviewer.yml

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,36 +258,53 @@ jobs:
258258
return valid
259259
260260
def normalize_review_body(body):
261-
"""Normalize issue formatting to single-line bullet points."""
261+
"""Normalize issue formatting to single-line **Line N:** entries."""
262262
src = body.split('\n')
263263
result = []
264264
i = 0
265265
while i < len(src):
266266
line = src[i]
267267
268-
# Convert heading format: ### Line N: ... → - Line N: ...
269-
m = re.match(r'^#{1,6}\s+(Line \d+:.+)$', line)
268+
# Convert heading format: ### Line N: ... → **Line N:** ...
269+
m = re.match(r'^#{1,6}\s+(Line \d+):(.+)$', line)
270270
if m:
271-
result.append(f'- {m.group(1)}')
271+
result.append(f'**{m.group(1)}:**{m.group(2)}')
272272
i += 1
273273
continue
274274
275-
# Convert bold format: **Line N: title** + sub-bullets → - Line N: single line
275+
# Convert bold-closed format: **Line N: title** + sub-bullets → **Line N:** title. parts.
276276
m = re.match(r'^\*\*(Line \d+:.*?)\*\*\s*$', line)
277277
if m:
278278
title = m.group(1).rstrip('.')
279279
i += 1
280280
parts = []
281281
while i < len(src) and re.match(r'^\s*[-*]\s+', src[i]):
282282
sub = re.sub(r'^\s*[-*]\s+', '', src[i])
283-
sub = re.sub(r'^(Issue|Fix|Description|Suggested change):\s*', '', sub, flags=re.IGNORECASE)
283+
sub = re.sub(r'^(Issue|Fix|Description|Suggested change|Current):\s*', '', sub, flags=re.IGNORECASE)
284284
if sub.strip():
285285
parts.append(sub.strip().rstrip('.'))
286286
i += 1
287-
combined = f'- {title}. {". ".join(parts)}.' if parts else f'- {title}.'
287+
combined = f'**{title}. {". ".join(parts)}.**' if parts else f'**{title}.**'
288288
result.append(combined)
289289
continue
290290
291+
# Collapse numbered list items with sub-bullets (e.g. 1. **Issue title**: desc\n - Current: ...\n - Fix: ...)
292+
m = re.match(r'^\d+\.\s+\*\*(.+?)\*\*:?\s*(.*)', line)
293+
if m:
294+
title = m.group(1).rstrip('.')
295+
desc = m.group(2).strip().rstrip('.')
296+
i += 1
297+
parts = [desc] if desc else []
298+
while i < len(src) and re.match(r'^\s+[-*]', src[i]):
299+
sub = re.sub(r'^\s+[-*]\s+', '', src[i])
300+
sub = re.sub(r'^(Issue|Fix|Description|Suggested change|Current|Should):\s*', '', sub, flags=re.IGNORECASE)
301+
if sub.strip():
302+
parts.append(sub.strip().rstrip('.'))
303+
i += 1
304+
desc_text = '. '.join(parts).rstrip('.')
305+
result.append(f'**{title}.** {desc_text}.' if desc_text else f'**{title}.**')
306+
continue
307+
291308
result.append(line)
292309
i += 1
293310
return '\n'.join(result)

.github/workflows/vale-linter.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
- main
88
paths:
99
- '**.md'
10+
- '!**/system.md'
11+
- '!**/CLAUDE.md'
12+
- '!**/SKILL.md'
13+
- '!**/netwrix_style_guide.md'
1014

1115
jobs:
1216
vale:

CLAUDE.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,8 @@ Vale handles pattern-based violations automatically — run it and fix everythin
138138
139139
**Voice and structure**
140140
- Active voice and present tense throughout
141-
- Second person ("you") — address the reader directly
141+
- Second person ("you") or imperative mood for procedures and instructions — third person ("users") is acceptable in overviews and conceptual descriptions
142142
- Contractions are encouraged: don't, can't, you'll
143-
- Keep sentences to one idea per sentence
144143
- Write for a global audience — avoid metaphors, idioms, and culturally specific references that don't translate
145144
- Omit "currently", "presently", and "as of this writing" — documentation should read as permanently accurate
146145

docs/passwordsecure/9.3/index.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,8 @@ sidebar_position: 1
66

77
# Why Netwrix Password Secure?
88

9-
Users depend on passwords in their day-to-day business worldwide. Passwords are used constantly and everywhere,
10-
and they need to be professionally managed. Passwords should be safe, have at least 12 characters, and include uppercase and lowercase characters as well as special characters. In the best case, a separate access
11-
password should be used for each account. It should be changed regularly. It is hard enough to meet
12-
this challenge in private settings. In a large corporate environment, adequately managing passwords without the use of a professional password management tool is difficult.
9+
Passwords are a constant part of daily business life worldwide, and they need to be professionally managed. A secure password should have at least 12 characters and include a mix of uppercase and lowercase letters and special characters — ideally unique to each account and changed regularly. Meeting these requirements is challenging enough for individual users, but in a large corporate environment, managing passwords without a dedicated tool isn't feasible.
1310

1411
## Scalability
1512

16-
The scalability of Netwrix Password Secure (NPS) makes it suitable for use in SMEs, large
17-
companies, and global corporations. The flexibility required for this task is the driving factor
18-
behind the development to meet the ever-changing requirements of modern and safety-conscious
19-
companies. NPS is a software solution for companies that want to effectively manage
20-
security-relevant data such as passwords, documents, or certificates at a very high encryption
21-
level.
13+
Netwrix Password Secure (NPS) scales from SMEs to global corporations, adapting to the ever-changing requirements of modern, security-conscious organizations. It's a software solution designed to help companies effectively manage security-relevant data — including passwords, documents, and certificates — at a very high encryption level.

0 commit comments

Comments
 (0)