<commit_before>
## Contributing

We're hoping that this project makes it really easy to contribute new integrations.

The service is a [Node.js](https://nodejs.org/) server written in [TypeScript](https://www.typescriptlang.org/).

If you're not familiar with [TypeScript](https://www.typescriptlang.org/) it's a small layer on top of modern JavaScript that adds type information to help catch programming errors faster. If you're familiar with JavaScript, most of the language should be familiar to you.

The project is written with the most current JavaScript style and features (currently [ES2015](https://en.wikipedia.org/wiki/ECMAScript#History)) to help improve code clarity and expressiveness.

#### Requirements

To get started contributing a service you'll need to install:

- [Node.js](https://nodejs.org/)

   The project is set up to use [NVM](https://github.com/creationix/nvm) to select the proper Node.js version.
- [Yarn](https://yarnpkg.com/en/)

When you've got those installed on your machine, run `yarn install` to install all the dependencies.

## Developing a new Integration

Currently there are three places (`types`) of integrations – `query`, `cell` and `dashboard` level. The [Segment integration](https://github.com/looker/integrations/blob/master/src/integrations/segment/segment.ts) is query level, which means it will attach to the scheduler. In the future, these will be able to attach to queries in Looker in other ways, but the integration shouldn't need to do anything differently to support that. The [Twilio Message integration](https://github.com/looker/integrations/blob/master/src/integrations/twilio/twilio_message.ts) is a `cell` level integration and appears in Looker by adding a "..." to the end of each cell's data in the result table. Cell level integrations are essentially the same as our [existing "data actions"](https://discourse.looker.com/t/data-actions/3573), but provided via the integration API. These integrations will need to specify tag information in `requiredFields` and the relevant fields need to be tagged in some way via the [LookML `tags` parameter](https://docs.looker.com/reference/field-params/tags). The [SendGrid integration](https://github.com/looker/integrations/blob/master/src/integrations/sendgrid/sendgrid.ts) is a dashboard level integration. These integrations support receiving an full dashboard image. An integration can also choose to hook into multiple types of actions if need be.
<commit_msg>minor doc tweak<commit_after>## Adding Actions

We've tried to make it as simple as possible to add a new action to Looker's official Action Hub.

The service is a [Node.js](https://nodejs.org/) server written in [TypeScript](https://www.typescriptlang.org/).

If you're not familiar with [TypeScript](https://www.typescriptlang.org/) it's a small layer on top of modern JavaScript that adds type information to help catch programming errors faster. If you're familiar with JavaScript, most of the language should be familiar to you.

The project is written with the most current JavaScript style and features (currently [ES2015](https://en.wikipedia.org/wiki/ECMAScript#History)) to help improve code clarity and expressiveness.

#### Requirements

To get started contributing a service you'll need to install:

- [Node.js](https://nodejs.org/)

   The project is set up to use [NVM](https://github.com/creationix/nvm) to select the proper Node.js version.

- [Yarn](https://yarnpkg.com/en/)

When you've got those installed on your machine, run `yarn install` to install all the dependencies.

## Developing a new Action

Currently there are three places (`types`) of integrations – `query`, `cell` and `dashboard` level. The [Segment integration](https://github.com/looker/integrations/blob/master/src/integrations/segment/segment.ts) is query level, which means it will attach to the scheduler. In the future, these will be able to attach to queries in Looker in other ways, but the integration shouldn't need to do anything differently to support that. The [Twilio Message integration](https://github.com/looker/integrations/blob/master/src/integrations/twilio/twilio_message.ts) is a `cell` level integration and appears in Looker by adding a "..." to the end of each cell's data in the result table. Cell level integrations are essentially the same as our [existing "data actions"](https://discourse.looker.com/t/data-actions/3573), but provided via the integration API. These integrations will need to specify tag information in `requiredFields` and the relevant fields need to be tagged in some way via the [LookML `tags` parameter](https://docs.looker.com/reference/field-params/tags). The [SendGrid integration](https://github.com/looker/integrations/blob/master/src/integrations/sendgrid/sendgrid.ts) is a dashboard level integration. These integrations support receiving an full dashboard image. An integration can also choose to hook into multiple types of actions if need be.

{'fraction_non_alphanumeric': 0.08995773797544777, 'fraction_numerical': 0.0032199637754075265, 'mean_word_length': 4.860849056603773, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 24, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2093660', 'n_tokens_mistral': 1306, 'n_tokens_neox': 1260, 'n_words': 587}