Skip to content

Commit a04917c

Browse files
fix: remove unnecessary backtick escaping in markdown
- Fix inline code backticks that were over-escaped - Keep proper escaping only for backticks inside code blocks - Improve markdown readability and rendering
1 parent 56d5ded commit a04917c

File tree

1 file changed

+27
-27
lines changed
  • crowdsec-docs/docs/contributing

1 file changed

+27
-27
lines changed

crowdsec-docs/docs/contributing/hub.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ Here are some things you can do today to start contributing:
3737

3838
The hub repository has beginner-friendly issues that are a great place to get started:
3939

40-
- Look for issues labeled \`good first issue\` - these don't require high-level CrowdSec knowledge
41-
- Issues labeled \`help wanted\` indicate that community help is particularly welcome
40+
- Look for issues labeled `good first issue` - these don't require high-level CrowdSec knowledge
41+
- Issues labeled `help wanted` indicate that community help is particularly welcome
4242

4343
### Prerequisites
4444

@@ -82,7 +82,7 @@ cscli hubtest create my-test --parsers crowdsecurity/nginx --scenarios crowdsecu
8282

8383
#### 2. Configure your test
8484

85-
Edit the generated configuration file (\`.tests/<test-name>/config.yaml\`):
85+
Edit the generated configuration file (`.tests/<test-name>/config.yaml`):
8686

8787
```yaml
8888
parsers:
@@ -98,11 +98,11 @@ ignore_parsers: false
9898
9999
#### 3. Add test data and assertions
100100
101-
- **Log file**: Add sample logs to \`.tests/&lt;test-name&gt;/&lt;test-name&gt;.log\`
102-
- **Parser assertions**: Define expected parsed fields in \`parser.assert\`
103-
- **Scenario assertions**: Define expected alerts in \`scenario.assert\`
101+
- **Log file**: Add sample logs to `.tests/<test-name>/<test-name>.log`
102+
- **Parser assertions**: Define expected parsed fields in `parser.assert`
103+
- **Scenario assertions**: Define expected alerts in `scenario.assert`
104104

105-
**Note**: When you first run \`cscli hubtest run\`, it will output the generated assertions that you need to fill out in \`parser.assert\` or \`scenario.assert\` files. You can find examples of assertion files in the hub repository at \`.tests/&lt;existing-test&gt;/parser.assert\` and \`.tests/&lt;existing-test&gt;/scenario.assert\`.
105+
**Note**: When you first run `cscli hubtest run`, it will output the generated assertions that you need to fill out in `parser.assert` or `scenario.assert` files. You can find examples of assertion files in the hub repository at `.tests/<existing-test>/parser.assert` and `.tests/<existing-test>/scenario.assert`.
106106

107107
#### 4. Run your test
108108

@@ -148,7 +148,7 @@ cscli hubtest coverage
148148

149149
## Git Workflow / Branch Management
150150

151-
We receive contributions on the \`master\` branch. To contribute:
151+
We receive contributions on the `master` branch. To contribute:
152152

153153
1. **Fork the repository** on GitHub
154154
2. **Clone your fork** locally:
@@ -165,14 +165,14 @@ We receive contributions on the \`master\` branch. To contribute:
165165
```bash
166166
git push origin feature/your-feature-name
167167
```
168-
6. **Open a Pull Request** targeting the \`master\` branch
168+
6. **Open a Pull Request** targeting the `master` branch
169169

170170
### Branch Naming Convention
171171

172172
Use descriptive branch names that indicate the type of contribution:
173-
- \`feature/parser-nginx-access-logs\`
174-
- \`fix/scenario-ssh-bruteforce-labels\`
175-
- \`docs/collection-apache-examples\`
173+
- `feature/parser-nginx-access-logs`
174+
- `fix/scenario-ssh-bruteforce-labels`
175+
- `docs/collection-apache-examples`
176176

177177
### Commit Messages
178178

@@ -245,7 +245,7 @@ Yes, we understand that using YAML anchors makes the YAML DRY but it can introdu
245245
- **Automatic key handling**: If a static returns empty data, the key will not be set (as you mentioned)
246246
- **Cleaner structure**: Avoids YAML complexity and improves readability
247247
- **Consistent patterns**: Follows established CrowdSec conventions
248-
- **Proper targeting**: Statics can target \`meta\`, \`parsed\`, or \`enriched\` fields directly
248+
- **Proper targeting**: Statics can target `meta`, `parsed`, or `enriched` fields directly
249249
- **Expression support**: Can use expressions to derive values dynamically
250250

251251
### AI-Assisted Generation
@@ -265,7 +265,7 @@ We do allow AI-assisted generation of parsers, scenarios, and collections, but w
265265

266266
#### What We Expect
267267

268-
- Test coverage using \`cscli hubtest\`
268+
- Test coverage using `cscli hubtest`
269269
- Proper error handling and edge cases
270270
- Clear documentation and examples
271271
- Adherence to CrowdSec patterns and conventions
@@ -292,7 +292,7 @@ Collections group related parsers, scenarios, and postoverflows together. It oft
292292

293293
#### When to add to existing collections:
294294

295-
- Adding a parser for \`SpecificWebServer\` access logs that would benefit from [all the default http related scenarios](https://hub.crowdsec.net/author/crowdsecurity/collections/base-http-scenarios)
295+
- Adding a parser for `SpecificWebServer` access logs that would benefit from [all the default http related scenarios](https://hub.crowdsec.net/author/crowdsecurity/collections/base-http-scenarios)
296296
- Your contribution enhances an existing service's detection capabilities
297297
- Your scenario complements existing parsers in a collection
298298

@@ -308,19 +308,19 @@ Each collection should include:
308308

309309
### Scenarios
310310

311-
Scenarios define the logic for detecting attacks and suspicious behavior. When you create a scenario, you must fill some fields in the [\`labels\`](/log_processor/scenarios/format.md#labels), else the CI won't accept the contribution.
311+
Scenarios define the logic for detecting attacks and suspicious behavior. When you create a scenario, you must fill some fields in the [`labels`](/log_processor/scenarios/format.md#labels), else the CI won't accept the contribution.
312312

313313
#### Required Labels
314314

315-
Those \`labels\` are:
316-
- \`classification\`: this array contains the CVE ID and the [Mitre Techniques](https://attack.mitre.org/techniques/enterprise/) related to the scenario (when applicable)
317-
- \`spoofable\`: between 0 and 3, is the chance that the attacker behind the attack can spoof its origin
318-
- \`confidence\`: between 0 and 3, is the confidence that the scenario will not trigger false positive
319-
- \`behaviors\`: an existing behavior in [this file](https://github.com/crowdsecurity/hub/blob/scenario_taxonomy/taxonomy/behaviors.json)
320-
- \`label\` : a human readable name for the scenario
321-
- \`cti\` : (optional) true or false, used to specify that a scenario is mainly used for audit rather than detecting a threat
315+
Those `labels` are:
316+
- `classification`: this array contains the CVE ID and the [Mitre Techniques](https://attack.mitre.org/techniques/enterprise/) related to the scenario (when applicable)
317+
- `spoofable`: between 0 and 3, is the chance that the attacker behind the attack can spoof its origin
318+
- `confidence`: between 0 and 3, is the confidence that the scenario will not trigger false positive
319+
- `behaviors`: an existing behavior in [this file](https://github.com/crowdsecurity/hub/blob/scenario_taxonomy/taxonomy/behaviors.json)
320+
- `label` : a human readable name for the scenario
321+
- `cti` : (optional) true or false, used to specify that a scenario is mainly used for audit rather than detecting a threat
322322

323-
[Here](/log_processor/scenarios/format.md#labels) is the \`labels\` documentation for more information.
323+
[Here](/log_processor/scenarios/format.md#labels) is the `labels` documentation for more information.
324324

325325
#### Example Scenario Labels
326326

@@ -435,9 +435,9 @@ Before opening your PR, ensure you can check all items in the [PR template](http
435435
#### Testing Issues
436436

437437
- **Hubtest creation fails**: Ensure you're in the hub repository root directory
438-
- **Test configuration errors**: Check YAML syntax in \`.tests/&lt;test-name&gt;/config.yaml\`
439-
- **Parser assertions failing**: Use \`cscli hubtest explain &lt;test-name&gt;\` to debug parser output
440-
- **Scenario assertions failing**: Verify scenario logic and thresholds with \`cscli hubtest explain &lt;test-name&gt;\`
438+
- **Test configuration errors**: Check YAML syntax in `.tests/<test-name>/config.yaml`
439+
- **Parser assertions failing**: Use `cscli hubtest explain <test-name>` to debug parser output
440+
- **Scenario assertions failing**: Verify scenario logic and thresholds with `cscli hubtest explain <test-name>`
441441
- **Missing test data**: Provide comprehensive log samples and assertion files
442442
- **CI tests failing**: Review the GitHub Actions logs for specific errors
443443

0 commit comments

Comments
 (0)