From 652c2d534dc88af0772af7fd5a7c188eb1c1905a Mon Sep 17 00:00:00 2001 From: m4sterbunny <20266893+m4sterbunny@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:49:08 +0100 Subject: [PATCH 1/2] feat: add vale --- .github/workflows/vale-docs.yml | 73 + .gitignore | 3 + .vale.ini | 114 ++ README.md | 84 +- styles/Tether/Acronyms.yml | 89 + styles/Tether/CaseSensitive-Substitution.yml | 47 + styles/Tether/Headings.yml | 154 ++ styles/Tether/Inclusive.yml | 13 + styles/Tether/Latin.yml | 8 + styles/Tether/Punctuation.yml | 13 + styles/Tether/Terms.yml | 37 + styles/Tether/Weasel.yml | 191 +++ .../ignore/Tether-common/project-words.txt | 1479 +++++++++++++++++ styles/config/ignore/ignore.yml | 5 + .../vocabularies/Tether-common/accept.txt | 375 +++++ .../vocabularies/Tether-common/reject.txt | 13 + 16 files changed, 2693 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/vale-docs.yml create mode 100644 .vale.ini create mode 100644 styles/Tether/Acronyms.yml create mode 100644 styles/Tether/CaseSensitive-Substitution.yml create mode 100644 styles/Tether/Headings.yml create mode 100644 styles/Tether/Inclusive.yml create mode 100644 styles/Tether/Latin.yml create mode 100644 styles/Tether/Punctuation.yml create mode 100644 styles/Tether/Terms.yml create mode 100644 styles/Tether/Weasel.yml create mode 100644 styles/config/ignore/Tether-common/project-words.txt create mode 100644 styles/config/ignore/ignore.yml create mode 100644 styles/config/vocabularies/Tether-common/accept.txt create mode 100644 styles/config/vocabularies/Tether-common/reject.txt diff --git a/.github/workflows/vale-docs.yml b/.github/workflows/vale-docs.yml new file mode 100644 index 0000000..a57d7cf --- /dev/null +++ b/.github/workflows/vale-docs.yml @@ -0,0 +1,73 @@ +name: Vale documentation lint + +on: + workflow_call: + inputs: + filepaths: + description: "Comma- or newline-separated Markdown/MDX globs to lint." + required: false + type: string + default: | + **/*.md + **/*.mdx + fail_on_error: + description: "Set to true to fail CI when Vale reports errors." + required: false + type: boolean + default: false + docs_template_ref: + description: "docs-template ref to use as the Vale source of truth." + required: false + type: string + default: main + +jobs: + vale: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + steps: + - name: Checkout caller repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Checkout central Vale configuration + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + repository: tetherto/docs-template + ref: ${{ inputs.docs_template_ref }} + path: .tether-vale-source + persist-credentials: false + + - name: Detect changed documentation files + id: changed-files + uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5 + with: + path: "." + files: ${{ inputs.filepaths }} + separator: "," + + - name: List changed documentation files + if: steps.changed-files.outputs.any_changed == 'true' + run: | + echo "The following files were detected for Vale:" + echo "${{ steps.changed-files.outputs.all_changed_files }}" + + - name: Set up Python for Vale + if: steps.changed-files.outputs.any_changed == 'true' + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v6 + with: + python-version: "3.12" + + - name: Vale + if: steps.changed-files.outputs.any_changed == 'true' + uses: errata-ai/vale-action@d89dee975228ae261d22c15adcd03578634d429c # v2.1.1 + with: + files: ${{ steps.changed-files.outputs.all_changed_files }} + vale_flags: "--config .tether-vale-source/.vale.ini" + fail_on_error: ${{ inputs.fail_on_error }} + reporter: github-pr-check + separator: "," diff --git a/.gitignore b/.gitignore index 391c345..a45b797 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ .contentlayer .content-collections .source +/styles/Google/ +/styles/proselint/ +/styles/write-good/ /content/docs/api-reference.mdx /content/docs/qvac/examples.mdx diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 0000000..1050b2b --- /dev/null +++ b/.vale.ini @@ -0,0 +1,114 @@ +# Vale configuration +# See vale_styles/README.md file for details and licensing information + +# Styles directory for all packages and config (vocab) files + +StylesPath = ./styles + +# The ignore config references project-words.txt + +Spelling.Ignore = config/ignore/Tether-common + + +# Packages to sync with. Remember never adapt the external packages, all changes will be lost on update + +Packages = Google, proselint, write-good + +Vocab = Tether-common + +# The minimum alert level to display (suggestion, warning, or error). +# Builds not set to fail too many false positives +MinAlertLevel = warning + +# Treat .mdx files as Markdown so Vale can apply Markdown rules and styles. +# This does NOT automatically make Vale lint .mdx files; it only defines +# how .mdx files are parsed once they are matched by a glob below. + +[formats] +mdx = md + +# Apply Markdown linting rules to both .md and .mdx files. +# Note: Vale only runs rules on files that match a section glob. +# Including .mdx here is required; the [formats] mapping alone is not sufficient. +# Global settings (applied to every syntax) + +[*.{md,mdx}] + +# ignore includes and latex math code +TokenIgnores = ({![^!}]+!}),\ + (\$[^\n$`]+\$),\ + (\$\$[^$`]+\$\$),\ + (\$\{\{[^}]+\}\}),\ + ({%[^}]+%}),\ + ({{[^}]+}}),\ + (\+\+[A-Za-z]+\+[A-Za-z0-9]+\+\+),\ + (:[a-z\-]+:),\ + (^\s*import\s.+\s+from\s+.+$),\ + (^\s*export\s.+$),\ + (^\s*\s*$),\ + (\bPolyfill\b),\ + (\[!(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]),\ + ([Pp]ower meters) + +# Ignore MDX import/export lines (React code). +BlockIgnores = (?m)^\s*import\s+[^\n]*$,\ + (?m)^\s*export\s+[^\n]*$ + +# List of styles to load + +BasedOnStyles = Tether, Vale, Google, proselint, write-good + +# Allows Tether Headings to take precedence +Google.Headings = NO + +# Allows using first-person plural like 'We' +Google.We = NO +Google.FirstPerson = NO + +# Acronyms are replaced by the Tether list +Google.Acronyms = NO + +# General terminology preferences are replaced by custom terms +Google.WordList = NO + +# Quiet quotes: too many false positives +Google.Quotes = NO + +# Quiet contractions: too many positives +Google.Contractions = NO + +# Quiet dashes: spaces around em dashes are acceptable +Google.EmDash = NO + +# Quiet foreign phrases: 'e.g.'/'i.e.' are acceptable in technical docs +Google.Latin = NO + +# Quiet ellipses: literal '...' is acceptable in technical docs +Google.Ellipses = NO + +# Allows proselint.Cliches to take precedence +write-good.Cliches = NO + +# Quiet weasel: is replaced by Tether list +write-good.Weasel = NO + +# Quiet E-Prime: too many false positives +write-good.E-Prime = NO + +# Allows Vale.Repetition to take precedence +write-good.Illusions = NO + +# Quiet too wordy: too many false positives +write-good.TooWordy = NO + +# Allows write-good passive voice to take precedence +Google.Passive = NO +write-good.Passive = NO + +proselint.Hyperbole = warning + +# Quiet typography: literal '...' and straight quotes are acceptable +proselint.Typography = NO diff --git a/README.md b/README.md index 728ffca..5d06d0f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# DOCS docs +# Tether.to documentation template site [This site](https://github.com/tetherto/docs-template.git) is the official documentation and single source of truth for the `tether.io` Documentation guild: @@ -7,6 +7,20 @@ The site is a **static export** from a Next.js + [Fumadocs](https://fumadocs.dev) app (`output: 'export'`). SEO behavior is implemented with workspace packages under `@tether/docs-*` (see below). +## Table of contents + +- [Installation](#installation) +- [Monorepo packages (`packages/`)](#monorepo-packages-packages) + - [Using these packages from another repository](#using-these-packages-from-another-repository) +- [SEO and frontmatter](#seo-and-frontmatter) +- [Environment variables](#environment-variables) +- [Open Graph images (Takumi, static hosting)](#open-graph-images-takumi-static-hosting) +- [Development](#development) + - [Vale linting](#vale-linting) +- [Maintainers](#maintainers) +- [Build](#build) +- [Repository layout](#repository-layout) + ## Installation Prerequisites: @@ -76,7 +90,7 @@ Important: **set an expiration on the token.** Tokens that never expire are reje After creating the token, if the `tetherto` organization uses SSO, click **"Configure SSO"** next to the token in the tokens list and authorize it for the org. Without that step the registry returns `403` even with the right scopes. -A fine-grained personal access token also works, scoped to the `tetherto` resource owner with **Packages: Read** repository permission. Same expiration requirement applies. +A fine-grained personal access token also works, scoped to the `tetherto` resource owner with **Packages read** repository permission. Same expiration requirement applies. #### 3. Save the token locally @@ -92,7 +106,7 @@ npm whoami --registry=https://npm.pkg.github.com # should print your GitHub us npm view @tetherto/docs-seo-schema version --registry=https://npm.pkg.github.com ``` -If `npm whoami` prints your username but the second command 403s, the token authenticates but lacks `read:packages` (and/or SSO authorization). +If `npm whoami` prints your username but the second command returns HTTP 403, the token authenticates but lacks `read:packages` (and/or SSO authorization). #### 5. Install @@ -121,7 +135,7 @@ Extended fields are merged in [`source.config.ts`](source.config.ts) via `tether Per-page metadata, sitemap, robots, and JSON-LD share the same logic through [`src/lib/seo-config.ts`](src/lib/seo-config.ts) and `@tether/docs-seo-next`. -During `next build` / dev, `getPageSeoState` and `buildDocsMetadata` emit **`[@tether/docs-seo]`** `console.warn` lines for missing optional fields (`ogImage`, `schemaType`, `docType`, `lastModified`, and empty `description` if it bypasses MDX validation). Warnings are deduped per page per Node process. Two env knobs control them: +During `next build` / dev, `getPageSeoState` and `buildDocsMetadata` emit **`[@tether/docs-seo]`** `console.warn` lines for missing optional fields (`ogImage`, `schemaType`, `docType`, `lastModified`, and empty `description` if it bypasses MDX validation). Warnings are deduplicated per page per Node process. Two env knobs control them: - **`DOCS_SEO_SILENT=1`** — silence ALL warnings (including the required-`description` warning). Use sparingly. - **`DOCS_SEO_QUIET_GENERATED=1`** — silence only the warnings for fields that have sensible auto-generated/inferred defaults (`ogImage`, `schemaType`, `lastModified`). `description` and `docType` warnings stay loud because neither has a useful default. Recommended when you opt into the Takumi OG prebuild + the `fumadocs-mdx` `lastModified` plugin. @@ -162,10 +176,39 @@ Because static export cannot use dynamic OG Route Handlers, images are **generat - Run the generator alone: **`npm run build:og`** - Replace [`public/og-default.png`](public/og-default.png) with a proper **1200×630** asset if you rely on the `SKIP_OG_BUILD` fallback -**Git:** This template **gitignores** `public/og/docs/` (see [`.gitignore`](.gitignore)). CI and local **`npm run build`** must run **`prebuild`** so those WebP files exist before static export. To vendor generated images instead, stop ignoring that directory and commit the files. +**Git note:** this template **gitignores** `public/og/docs/` (see [`.gitignore`](.gitignore)). CI and local **`npm run build`** must run **`prebuild`** so those WebP files exist before static export. To vendor generated images instead, stop ignoring that directory and commit the files. ## Development +### Vale linting + +Vale is available for local documentation linting. Run `vale sync` before linting so Vale downloads the configured package styles into the gitignored `styles/` package directories. + +Use the project vocabulary to check custom spelling. For example, Tether should pass, while Tehtr should fail. + +Run Vale against a single file: + +```bash +vale sync +vale README.md +``` + +Run Vale against a single folder: + +```bash +vale sync +vale content/docs +``` + +Run Vale against the entire repo: + +```bash +vale sync +vale . +``` + +Vale can be added to CI as an advisory check, but do not configure it to fail CI. The current rule set has too many false positives for a hard gate. + Check broken links: ```bash @@ -184,6 +227,37 @@ For local dev without generating OG files, you can use: SKIP_OG_BUILD=1 npm run dev ``` +## Maintainers + +### Using Vale in downstream CI + +This repository is the source of truth for Tether Vale configuration. Downstream documentation repositories should not copy `.vale.ini` or `styles/`; they can call this repository's reusable workflow instead. + +Add a workflow like this to the downstream repository: + +```yaml +name: Vale documentation lint + +on: + pull_request: + paths: + - "**/*.md" + - "**/*.mdx" + +jobs: + vale: + uses: tetherto/docs-template/.github/workflows/vale-docs.yml@main + with: + filepaths: | + **/*.md + **/*.mdx + fail_on_error: false +``` + +The reusable workflow checks out the downstream repository, checks out this template beside it, detects changed Markdown and MDX files, and runs Vale with this repository's [`.vale.ini`](.vale.ini) and [`styles/`](styles/) configuration. `fail_on_error` defaults to `false` because Vale has too many false positives for a hard CI gate; set it to `true` only after the downstream repository has cleaned up or accepted the rule set. + +Synced package styles such as Google, `proselint`, and `write-good` are generated by `vale sync` during the workflow run. Do not commit those generated package directories to downstream repositories. + ## Build Set **`NEXT_PUBLIC_DOCS_ORIGIN`** for production; add **`NEXT_PUBLIC_INKEEP_API_KEY`** only if you use Inkeep instead of default Fumadocs search (see [`env.example`](env.example)). diff --git a/styles/Tether/Acronyms.yml b/styles/Tether/Acronyms.yml new file mode 100644 index 0000000..05dff74 --- /dev/null +++ b/styles/Tether/Acronyms.yml @@ -0,0 +1,89 @@ +extends: conditional +message: "'%s' has no definition." +level: suggestion +ignorecase: true +# Ensures that the existence of 'first' implies the existence of 'second'. +first: '\b([A-Z]{3,5})\b' +second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' +# ... with the exception of these: +exceptions: + - API + - AWS + - BLS + - BTC + - CEX + - CLA + - CLI + - CORS + - CPU + - CSS + - CSV + - DAO + - DEBUG + - DRPC + - DSLA + - DVF + - ECDSA + - EIP + - ETH + - EVM + - ES + - GCP + - GET + - GPT + - GPU + - gRPC + - GTag + - GUI + - HEX + - HTML + - HTTP + - HTTPS + - IBFT + - IBFT2 + - IDE + - IPC + - IPFS + - JAR + - JDK + - JRE + - JSON + - JSX + - JVM + - KMS + - KPI + - P2P + - PATH + - PBFT + - PKCS + - PoA + - POS + - POST + - PostgreSQL + - POW + - RAM + - REST + - RPC + - RSA + - SDK + - SECP + - SHA + - SLA + - SQL + - SSH + - SSL + - SVG + - TCP + - TKBU + - TLS + - TOC + - TOML + - UI + - URI + - URL + - USB + - WAR + - WEI + - XML + - YAML|yaml + - ZIP diff --git a/styles/Tether/CaseSensitive-Substitution.yml b/styles/Tether/CaseSensitive-Substitution.yml new file mode 100644 index 0000000..834d076 --- /dev/null +++ b/styles/Tether/CaseSensitive-Substitution.yml @@ -0,0 +1,47 @@ +extends: substitution +message: Consider standard format, %s instead of "%s" (may not apply for start of sentence). +ignorecase: false +level: warning +action: + name: replace +swap: + "Auth Connection Id": "Auth Connection ID" + "Auth connection ID": "Auth Connection ID" + "auth connection id": "Auth Connection ID" + 'besu': '"Besu"' + 'coordinator': '"Coordinator"' + 'Dapp': '"dapp"' + "Embedded wallets": "Embedded Wallets" + "embedded Wallets": "Embedded Wallets" + "embedded wallets": "Embedded Wallets" + "facebook": "Facebook" + "google": "Google" + 'maru': '"Maru"' + 'mastercard': '"Mastercard"' + "Metamask": "MetaMask" + "metamask": "MetaMask" + "MetaMask smart accounts": "MetaMask Smart Accounts" + "Metamask Smart Accounts": "MetaMask Smart Accounts" + "metamask smart accounts": "MetaMask Smart Accounts" + 'Off chain': 'Offchain' + 'Off-chain': 'Offchain' + 'off chain': 'offchain' + 'off-chain': 'offchain' + 'On chain': 'Onchain' + 'On-chain': 'Onchain' + 'on chain': 'onchain' + 'on-chain': 'onchain' + "polkadot": "Polkadot" + shamir: "Shamir's" + "shamir's": "Shamir's" + 'voyage': '"Voyage"' + "Wallet services": "Wallet Services" + "wallet Services": "Wallet Services" + "wallet services": "Wallet Services" + 'Walletconnect': '"WalletConnect"' + 'walletconnect': '"WalletConnect"' + 'ZK EVM': '"zkEVM"' + 'ZK-EVM': '"zkEVM"' + 'ZKEVM': '"zkEVM"' + 'zk EVM': '"zkEVM"' + 'zk-EVM': '"zkEVM"' diff --git a/styles/Tether/Headings.yml b/styles/Tether/Headings.yml new file mode 100644 index 0000000..5fb676c --- /dev/null +++ b/styles/Tether/Headings.yml @@ -0,0 +1,154 @@ +extends: capitalization +message: "'%s' should use sentence-style capitalization." +link: 'https://docs.microsoft.com/en-us/style-guide/capitalization' +level: warning +scope: heading +match: $sentence +indicators: + - ':' +exceptions: + - ABB + - ABI + - Account Management API + - AI + - Alchemy + - Android + - API + - APIs + - App Node + - AWS + - Azure + - Besu + - Binance Smart Chain + - BLS + - BNB Chain + - BNB Smart Chain + - Caddy + - Canaan Avalon + - Chain Methods API + - CLI + - "[Cc]ode" + - Content Security Policy + - Cosmos + - CSP + - CSS + - curl + - DipDup + - Docker + - ECMAScript + - EIP + - Electron + - Embedded Wallets + - Emmet + - EOA + - ERC + - ETH + - Ethereum + - Ethers.js + - EthSigner + - EVM + - FAQs + - Flask + - GFM + - "[Gg]o" + - GoQuorum + - Hardhat + - Hashicorp + - HTML + - HTTP + - HTTPS + - Hyperledger + - I + - ID + - IPFS + - JavaScript + - JSON + - JSX + - JWT + - JWTs + - KMS + - Kubernetes + - L1 + - L2 + - Linea + - Linea Enterprise + - Linea Yield Boost + - Linux + - macOS + - Marketplace + - MCP + - MDK + - MetaMask + - MetaMask Mobile + - MicroBT + - MIPD Store + - MongoDB + - Next.js + - NFT + - NFTs + - Node Fetch + - Node.js + - OG + - Open Graph + - Orion + - ORK + - Palm + - Parallel Workers + - PeerDAS + - PegaSys + - PoS + - PostgreSQL + - Pyth + - Python + - QA + - Quorum + - React + - React Native + - REPL + - Reservoir + - ReservoirKit + - RPC + - Rust + - Sass + - SATEC + - Schneider Electric + - SCSS + - SDK + - Secret + - SENECA + - SEO + - SES + - Snap + - Snaps + - Snap's + - Solana Name Service + - Studio + - Swagger + - Takumi + - Tellor + - Tether + - Tezos + - TL;DR + - TLS + - TOML + - TypeScript + - UI + - Umbrella Network + - Unity + - URLs + - USAGE.md + - UX + - Vale + - Vanilla JS + - Vault + - ViewModel + - Visual + - VS + - Wallet API + - WebSockets + - Whatsminer + - Windows + - Yield Boost + - YAML + - YML + - 2FA diff --git a/styles/Tether/Inclusive.yml b/styles/Tether/Inclusive.yml new file mode 100644 index 0000000..69a3545 --- /dev/null +++ b/styles/Tether/Inclusive.yml @@ -0,0 +1,13 @@ +extends: substitution +message: Consider using %s instead of "%s" +ignorecase: true +level: error +swap: + 'black[ \-]?list(?:ed|(?:ing)?s?)': '"denylist"' + 'white[ \-]?list(?:ed|(?:ing)?s?)': '"allowlist"' + 'gr[ae]y[ \-]?list(?:ed|(?:ing)?s?)': '"provisional" or "temporary" list' + 'masters?': '"main", "parent" or "primary"' + 'slaves?': '"replica" or "subordinate"' + 'm[ae]n': '"person"' + 'first[ \-]?class citizens?': '"core feature" or "top-level"' + 'h[au]ng': '"stop responding"' diff --git a/styles/Tether/Latin.yml b/styles/Tether/Latin.yml new file mode 100644 index 0000000..2815844 --- /dev/null +++ b/styles/Tether/Latin.yml @@ -0,0 +1,8 @@ +extends: substitution +message: "Prefer English '%s' over Latin '%s' term." +level: error +ignorecase: true +action: + name: replace +swap: + de facto: default diff --git a/styles/Tether/Punctuation.yml b/styles/Tether/Punctuation.yml new file mode 100644 index 0000000..d204fdb --- /dev/null +++ b/styles/Tether/Punctuation.yml @@ -0,0 +1,13 @@ +extends: substitution +message: "Prefer Tether style." +level: error +ignorecase: true +# This is not working +action: + name: replace +swap: + '′': "'" + '″': '"' + # Attempt same as unicode + "\u2032": "'" + "\u2033": '"' diff --git a/styles/Tether/Terms.yml b/styles/Tether/Terms.yml new file mode 100644 index 0000000..754184f --- /dev/null +++ b/styles/Tether/Terms.yml @@ -0,0 +1,37 @@ +extends: substitution +message: Prefer '%s' over '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + "(?:assembler|machine language)": assembly language + "(?:drive C:|drive C>|C: drive)": drive C + "(?:internet bot|web robot)s?": "bot(s)" + "(?:mobile|smart) ?phone": phone + "24/7": every day + "audio(?:-| )book": audiobook + "back(?:-| )light": backlight + "chat ?bots?": "chatbot(s)" + adaptor: adapter + administrate: administer + afterwards: afterward + alphabetic: alphabetical + alphanumerical: alphanumeric + "an URL": "a URL" + anti-aliasing: antialiasing + anti-malware: antimalware + anti-spyware: antispyware + anti-virus: antivirus + appendixes: appendices + "artificial intelligence": AI + caap: CaaP + eb: EB + gb: GB + gbps: Gbps + kb: KB + keypress: keystroke + mb: MB + pb: PB + tb: TB + zb: ZB diff --git a/styles/Tether/Weasel.yml b/styles/Tether/Weasel.yml new file mode 100644 index 0000000..5eb8536 --- /dev/null +++ b/styles/Tether/Weasel.yml @@ -0,0 +1,191 @@ +extends: existence +message: "'%s' is a weasel word!" +ignorecase: true +level: suggestion +tokens: + - absolutely + - accidentally + - allegedly + - angrily + - anxiously + - awkwardly + - badly + - barely + - beautifully + - blindly + - boldly + - bravely + - brightly + - briskly + - bristly + - bubbly + - busily + - calmly + - carefully + - carelessly + - cautiously + - cheerfully + - clearly + - closely + - coldly + - consequently + - correctly + - courageously + - crinkly + - cruelly + - crumbly + - cuddly + - daringly + - deadly + - definitely + - deliberately + - doubtfully + - dumbly + - eagerly + - early + - elegantly + - enormously + - enthusiastically + - equally + - especially + - eventually + - exactly + - exceedingly + - exclusively + - extremely + - fairly + - faithfully + - fatally + - fiercely + - finally + - fondly + - few + - foolishly + - fortunately + - frankly + - frantically + - generously + - gently + - giggly + - gladly + - gracefully + - greedily + - happily + - hardly + - hastily + - healthily + - heartily + - helpfully + - honestly + - hourly + - hungrily + - hurriedly + - immediately + - impatiently + - inadequately + - ingeniously + - innocently + - inquisitively + - interestingly + - irritably + - jiggly + - joyously + - justly + - kindly + - largely + - lately + - likely + - literally + - lonely + - loosely + - loudly + - loudly + - luckily + - madly + - mentally + - mildly + - monthly + - mortally + - mostly + - mysteriously + - neatly + - nervously + - nightly + - noisily + - obediently + - occasionally + - openly + - painfully + - particularly + - patiently + - perfectly + - politely + - poorly + - powerfully + - presumably + - promptly + - punctually + - quarterly + - quickly + - quietly + - rapidly + - rarely + - really + - recently + - recklessly + - regularly + - remarkably + - relatively + - reluctantly + - repeatedly + - rightfully + - roughly + - rudely + - sadly + - selfishly + - sensibly + - seriously + - sharply + - shortly + - shyly + - significantly + - silently + - simply + - sleepily + - slowly + - smartly + - smelly + - smoothly + - softly + - solemnly + - sparkly + - speedily + - stealthily + - sternly + - stupidly + - substantially + - suddenly + - surprisingly + - suspiciously + - swiftly + - tenderly + - tensely + - thoughtfully + - tightly + - timely + - truthfully + - unexpectedly + - unfortunately + - victoriously + - violently + - vivaciously + - warmly + - waverly + - weakly + - wearily + - weekly + - wildly + - wisely + - worldly + - wrinkly + - yearly diff --git a/styles/config/ignore/Tether-common/project-words.txt b/styles/config/ignore/Tether-common/project-words.txt new file mode 100644 index 0000000..f553aee --- /dev/null +++ b/styles/config/ignore/Tether-common/project-words.txt @@ -0,0 +1,1479 @@ +0x +aaaad +aave +abdk +abernathyca +accessList +accountkey +accountqueue +accum +acef +acreateserial +activationсode +addpeer +adic +adminorg +adoptopenjdk +adriaan +agan +agoric +aigc +airdrop +airnode +aja +akia +aleo +alertmanager +aleth +alethio +alexandratran +alexbdebrie +alexey +alfajores +algoliasearch +algorand +alloc +allowedfutureblocktime +allowlist +allowlisted +allowlisting +allowlists +amarok +ankr +anonymized +anshul +anyOf +aopts +août +apetimism +apfs +api +apis +api's +apos +appchain +appchains +appender +appenders +appinstalled +applanga +approle +approlepath +aptos +arbitrum +arbitrum's +archbee +architecting +argonconfig +argonoptions +arithmatex +arithmetization +arity +arka +arkham +arkworks +arweave +asalt +aspecta +astro +async +atrule +atticc +attnets +aurorascan +authkey +authpath +autoconverted +autodetection +autogen +autogenerating +autohide +autopay +availabile +avax +axelar +axelarscan +axios +azuredeploy +azurerm +backoff +backport +backticks +bartosz +battlemon +be +beaconcha +beaon +beforeinstallprompt +besu +besudata +betterem +bhatt +bhcn +biconomy +bigints +bigram +binance +bitcode +bitswap +blish +blobbasefee +blobhash +blockchain +blockchains +blockchain's +blockexplorer +blockheader +blocklist +blockNumber +blockperiod +blockperiodseconds +blockpi +blockquotes +blockscout +blockspace +blst +bluecircle +boolean +booleans +bootloader +bootnode +bootnodes +brakedown +bridgable +briged +browserify +browserslist +browserstack +brqyo +buble +buildathon +builtins +bundler +bvfw +bware +byos +bytecode +caabernathy +cacheable +caddy +caddyfile +cakeshop +callcode +calldata +callouts +callstack +callTracer +camelcase +candillon +cardlist +casm +cbor +ccip +cdabcdab +cdpath +celer +celo +cena +certfile +chaind +chaindata +chainlens +chainlink +chainlist +chainstack +changefreq +changeit +changeme +checkpointz +chedeau +cheng +chiado +chrony +claimmessage +classpath +clément +clickjacking +clientcert +clientkey +clienturl +clob +clonable +clsx +codec +codefi +codegen +codehilite +codeql +codesandbox +codesize +codespaces +coinflipcanada +collateralization +collateralized +colocation +colour +commitlint +composability +config +configfile +configout +configurability +conflator +consen +consensys +consentful +consortiom +consortiums +containerd +contoso +contravariance +cookbookdev +corejs +coroutines +corsdomain +counterfactually +counterparty +covalenthq +crawlable +createemptyblocks +createnew +creativecommons +cristiano +cron +cronos +crypto +cryptoassets +csapo +cssnano +csvg +customisation +customizability +cyfrin +dabit +daemonset +daishi +danksharding +dapi +dapis +datacenter +datachain +datadir +datafeeds +datagit +datalayer +datapath +datas +datashare +datatypes +data's +dbaeumer +dbname +dbpassword +dburl +dciijx +décembre +decentralised +decentraweb +decommas +dedup +deduplicated +defi +degen +degenreborn +déja +delegators +delisted +dencun +deps +deri +deso +destructuring +devcontainers +deversi +devnet +devnets +devs +devspace +devto +devtooltest +dialog +dialogs +diátaxis +dipdup +discport +diskpart +distinguised +divio +dklen +dlog +dlogback +dmitry +dname +docgen +dockerhub +dockerized +docsearch +docsify +doctools +docu +docusuarus +docz +doesn +dogecoin +dogfood +dogfooding +dojocat +dooper +dotenv +drpc +dsla +dteku +dumpconfig +dvf +dylib +dyte +eacces +eastus +easynode +easyops +ebscsi +ecatv +eddsa +efrog +efrogs +eigenlayer +eips +eksctl +elon +emailexample +embeddable +emitcheckpoints +emjlin +emscripten +encryptor +endcode +endcontent +endhint +endi +endilie +endiliey +enode +enodes +enrtree +ens +ensccip +ensip +ensure +entrypoints +enum +enums +envio +envr +eoas +ephemeral +epochlength +erim +erpc +errnametoolong +esat +esbenp +esbuild +esip +eslintcache +estimategas +estree +etcd +ethash +eth_call +eth_chainId +eth_newFilter +eth_sendTransaction +ethclient +ethdo +etherbase +ethereumj +ethers +etherspot +ethersproject +ethersv +ethjs +ethminer +ethpure +ethscription +ethscriptions +ethsigner +ethsignerdata +ethstaker +ethstats +euroe +evaluable +eventbus +everstake +evmdiff +evmdistracer +evms +evmtool +example +execa +executability +exportblock +exportcert +exportcerts +extc +extcodehash +extenstion +externalwaiting +extfile +fabrikham +façade +failfast +failover +failovers +fallocate +farcaster +faucetme +favicon +fbid +février +fienny +filebeat +filecoin +filestore +filterId +fixeddifficulty +flac +flaskonly +fluvi +fluviwallet +fontawesome +foofoo +forkchoice +formatters +formik +fouc +foundryup +frax +freezerdb +fren +frens +fri +fromBlock +froms +fromscratchistanbul +frontends +frontpage +fsutil +funboxteam +fvy +fwdx +gabrielcsapo +galactica +galxe +gameplay +gamification +gamified +gantt +gaslessly +gasUsed +gcmode +gcnodes +gcsize +gctime +gelato +genkey +genkeypair +getbalance +getfeedback +geth +geth's +getopts +gettransactionexclusionstatusv +gettransactionstatus +getwork +gif +gitgraph +gitpod +gizathon +glassfish +glibc +globalqueue +globals +globalslots +globbing +globby +gmob +gnark +goerli +golang +goldsky +goldskycom +goplus +goquorum +görli +goshdarnit +goss +goyal +gradlew +graphi +gravita +gridex +groth +groth16 +groupos +gruntfuggly +gtag +gxaug +hackathon +hackathons +hahaha +hamel +hapi +hardcoding +hashrate +hasura +hdwallet +healthcheck +heavener +héctor +hedera +héllô +hellogator +helloworld +helmfile +heuristical +hexagate +hideable +hids +hikari +hola +holdem +holeksy +holesky +horiz +hostman +hostname +hostnames +hoverable +href +hunxh +husain +hydratedTransactions +hygge +hyperledger +hypernative +iamserviceaccount +ianad +ibft +icdcs +idempotency +identifer +idriss +ierc +ievm +ilnft +immer +immunefi +immutabilitythreshold +impactful +importcert +importcerts +in +incentivise +incentivised +incentivized +incentivizes +infima +influxd +informat +informations +infstones +infux +ingestors +inlined +inlines +inproc +insecureskipverify +intelli +interactable +interactiveness +interchain +interpolatable +interprocess +investec +ipfs +ipfsupload +ipfs's +ips +irys +izumi +jacoco +jakepartusch +jamstack +janvier +jasypt +javadoc +javalin +jaxrs +jayant +jazzicon +jdbc +jdbi +jemalloc +jfernandes +jmarcey +jmeter +jnacl +jodyheavener +joshcena +jscodeshift +jsonrpc +jssdk +jwt +jwts +jwtsecret +jwt's +kaleido +kaszubowski +katex +kato +kdwx +keccak +ketchak +keyalg +keycloak +keyfile +keygenconfig +keygenvaultapprole +keygenvaultkeystore +keygenvaultsecretengine +keygenvaulttruststore +keygenvaulttype +keygenvaulturl +keyholder +keyholders +keyid +keymanager +keyout +keypair +keyscan +keysize +keystorstore +keytar +keytool +keytype +keyupdate +keyvault +khartes +kinsta +knapen +knc +knowledgebase +knownhosts +knownStates +kotti +koyeb +kubeconfig +kubenet +kubernetes +kubo +kulechov +kuma +kumu +kvstore +l2scan +lamana +layerzero +ldclient +ldo +leaderboard +leaderboards +lenster +libdebug +libp +librocksdbjni +libsodium +libusb +libyubihsm +lifecycles +lifescore +lightchaindata +lighthouserc +linea +lineabridge +lineabuild +lineascan +lineaster +linea's +linenums +linkify +listschains +litepaper +liveness +livenodes +livesize +livestreams +localappdata +localizable +localport +localverify +logback +longpaths +lorber +lowercased +lqip +lukso +lunrjs +lybra +magiclink +mainnets +mainpage +mapbox +marcey +markdownextradata +marocchino +massoud +matchers +mathbb +mathjax +maxlynch +maxpeers +maxprice +maxresdefault +mbps +mcopy +mdast +mdxa +mdxast +mdxhast +medomain +meeet +mello +mélen +memoize +memoizing +mendi +meok +meotherdomain +merkle +merkleroot +metabridge +metadatum +metalswap +metamask +metamaskwallet +metaspace +metastring +metaverse +metrica +metricbeat +metrika +mgas +microdata +middleware +middlewares +mimc +mina +minerthreads +miner_stop +minifier +mins +mintable +mintair +mintings +mitm +mixhash +mkcert +mkdir +mkdirs +mkdocs +mmvv +mobula +modexp +moesif +mongo +monorepo +moralis +mordor +msapplication +multiaddress +multiaddresses +multicall +multicallv +multichain +multihash +multikey +multitenancy +mycompany +mycomputer +mydapp +mydirectory +mydomain +mynode +mypath +mysecretfile +mytransactionnode +myuser +myvolume +nabors +nacl +nakagawa +nakamoto +nand +narendra +navigations +navlink +ndjson +nerdctl +nethereum +netrc +netrestrict +networkid +networknt +newHeads +newkey +newnode +newPending +nextra +nfts +nftscan +ngryman +nidkrpk +nisarag +nodary +nodekey +nodekeyhex +nodekeys +nodeurl +nodies +nodiscover +noexec +noflash +noicon +noindex +nojekyll +nolocals +nomemory +nomicfoundation +nomiclabs +nonheap +noninteractive +noout +noreply +noreturndata +nostack +notime +notok +nousb +noves +nownodes +npmjs +npmrc +nprogress +ntfs +nuxt +nwgi +o +octoflow +offchain +offences +offenses +oklink +omitempty +omni +omnichain +onchain +onlinea +onquorum +onramps +onthis +openapi +openfort +opensearch +opensearchdescription +opensource +optane +optimizt +optind +orderbooks +orgadmin +orta +ortner +othent +otsv +outerbounds +outformat +overridable +overrideable +ownersby +packshield +pado +pageview +palenight +paletton +palo +pancakeswap +paraiso +params +particpate +partyinfo +passout +passwds +passwordfile +patchwallet +pathinfo +pathnames +paularmstrong +pbcopy +pcss +peaceiris +pega +pegasys +pepe +permissioned +permissioning +permissionless +permissionlessly +petnames +petstore +philpl +photoshop +pico +picocolors +picomatch +pidfile +pimlico +pipx +plaintext +plantuml +playbtn +pluggable +pluglet +plushie +plushies +pnpm +poap +podfile +pollable +polyfill +polyfills +polygon +ponly +postbot +postbots +postfrens +posthog +postinstall +pprof +pre +preactjs +preauthenticated +prebuild +prebuilding +precache +precached +precaching +precompiled +preconfigured +preconnect +predeploy +prefetch +prefetching +preloads +preprocess +preprocessors +prerendered +prerendering +prerequest +presale +prestate +previewlanguage +previously +prevrandao +pricebump +pricelimit +println +prismjs +privacymarker +privatefor +privatefrom +profilo +promtail +protobuf +protobuffet +protofire +prpl +prvakia +prysm +psql +pubkey +pubkeys +publickey +puppeth +pulledStates +pushgateway +pwdout +pwds +pyltsyn +pymdownx +pyth +pythnet +qbds +qbft +qdacczyfhkyi +qdata +qjpuv +qlight +qlighttokenmanager +qnode +qovery +qpeers +qrng +quasis +quddus +quddús +quelquejay +queryid +querystring +quickstart +quickwit +quorum +quorumengineering +quorumex +quorumtoken +quotify +rachelnabors +raftblocktime +raftdnsenable +raftjoinexisting +raftport +ramón +randao +rapidsnark +rawkey +reactjs +react's +rearchitecture +recieve +reconnections +recrawl +redcircle +redirections +redoc +redocly +redocusaurus +redwoodjs +reentrancy +refactorings +referencetests +regenesis +regexes +rehype +releaserc +remappings +remotekey +repo +reponame +repos +reqs +requesttimeout +requesttimeoutseconds +requireindex +respositories +rest +restake +resynced +resyncs +retesteth +retrocompatibility +retrocompatible +returndata +revertreason +rktu +rmiz +roadmap +rocketvalidator +rocksdb +rollup +rollups +ronaldo +rootca +rpcapi +rpcnode +rpcprefix +rtcts +rtlcss +runtimes +safeheron +samina +samzkback +satisfiability +satoshi +saurus +sauzs +sbox +scas +scaleway +scamfari +schnorr +scopechat +scopescan +scriptable +scry +sdks +sdk's +searchbar +sebastien +sébastien +sebastienlorber +secp +secretenginepath +sendrawtransaction +sendtransaction +senet +sensical +sentio +seperate +sepolia +serializers +serviceaccounts +sess +setaf +setext +sgaua +Shamir's +shannessy +sharded +shasum +shib +shiba +shiki +shomei +showinfo +sida +sidechain +sidechains +sidus +sighup +sigill +signerdata +simen +simplestorage +sirato +skandha +skipverify +slashable +slashprotection +sload +slonk +slorber +sluggified +sluggifies +sluggify +smartaccount +smartcard +smartsymbols +smartwallets +smon +snapshotx +snapsync +snonce +socialscan +socure +solana +solana's +@solana/web3.js +somer +soulbound +sourcify +spâce +spherex +spheron +squidrouter +ssszzz +stablecoins +stackblitz +stackblitzrc +stakeme +staker +stakers +stani +starknet +starks +statefulset +stateroot +station +stationx +storepass +storeraw +storetype +streamr +strikethrough +strikethroughs +struct +styl +stylelint +stylelintignore +stylelintrc +subadmin +subcalls +subcommand +subcommands +subdir +sublabel +sublicensable +sublist +subnet +subnets +subpage +subpages +subquery +subroute +subroutes +subsetting +subsquid +subsubcategory +subsubfolder +subsubsection +subsubsubfolder +subtraces +sucipto +sufficient +supabase +superfences +supermon +supernet +superset +supplychain +supplychainconsortium +sushiswap +svgr +swizzlable +sybils +syncmode +t1m +t3u +tasklist +tatarot +tbnb +tebfk +teik +teku +tekudata +tellor +templating +temurin +terroirs +testchain +thanos +thegraph +therefore +therox +thirdparty +thirdpartyhost +thirdweb +timeframe +timelock +timesync +tkbu +tldr +tlds +tload +tlskeystore +tlstruststore +tmpdir +toBlock +tokenomics +tomestone +toolset +tooltip +toplevel +tplh +tpms +tracerConfig +tracerOptions +transifex +transpiles +treeified +treeifies +treeify +treosh +trezor +triaging +truffle +truffledashboard +trufflesuite +trustcacerts +trustcerts +trusted +trustlessly +trustlessness +truststore +tserver +tses +tstore +twap +twistededwards +twoslash +tx +txfeecap +txhash +txnode +txpool +typechain +typecheck +typechecks +typedoc +typesense +udpate +ultiverse +uncollateralize +uncomment +uncommented +uncompress +undergreen +unflat +unicode +unifra +uint +unist +unix +unlinkable +unlisteds +unlocalized +unmarshal +unmarshalling +unmatch +unmount +unmounts +unnormalized +unoptimized +unprefixed +unswizzle +untrack +untracked +untrusted +unvalidated +unversioned +upcheck +updatepassword +upgr +upnp +upnpp +upserts +upstreams +upvotes +urdqt +urlset +urql +usabilla +usbarmory +usdl +usdlr +usecase +userland +utilised +validator +validatorcontractaddress +validators +validatorselectionmode +validator's +vannicatte +vdisk +velocore +verax +vercel +verifymethod +vertx +vetter +vfile +vhosts +vicenti +vieira +viem +viemv +viet +viewports +vinnik +virtualizable +vitalik +vite +viti +vitidiary +vjeux +vwap +vyper +wagmi +wagmi's +waitlist +waivable +waku +walkthrough +walletconnect +wasm +wbtc +wcag +weab +web3signer +webfactory +webp +webpack +webpackbar +webservice +websigner +websocket +websockets +westus +wget +wolcott +word +workdir +worldstate +worx +writeups +wsapi +wscat +wxjb +xbeacon +xclip +xcode +xdns +xdoppelganger +xhelp +xirzc +xlarge +xmtp +xplorer +xrpc +xshut +xsmall +xsoar +xxewqdq +yacop +yangshun +yangshunz +yetf +yhusb +ynnfyvwcqev +yourcode +yParity +yrbjp +yubi +yubihsm +yuhu +ywmyp +zaxxer +zecale +zhou +zkevm +zkex +zksync +zkurvpu +zkvotev +zonic +zoomable +zpao +zpaoaave +zpaoaaveaave +сommas +լіνеа \ No newline at end of file diff --git a/styles/config/ignore/ignore.yml b/styles/config/ignore/ignore.yml new file mode 100644 index 0000000..1ffeade --- /dev/null +++ b/styles/config/ignore/ignore.yml @@ -0,0 +1,5 @@ +extends: spelling +message: "Did you really mean '%s'?" +level: error +ignore: + - config/ignore/Tether-common/project-words.txt diff --git a/styles/config/vocabularies/Tether-common/accept.txt b/styles/config/vocabularies/Tether-common/accept.txt new file mode 100644 index 0000000..c3b8845 --- /dev/null +++ b/styles/config/vocabularies/Tether-common/accept.txt @@ -0,0 +1,375 @@ +0x[0-9a-fA-F]{40} +^AMMs?$ +Algolia +Ansible +Antminer +Antspace +Arithmatex +[aA]ttester[s]? +[aA]uthenticationMode +[aA]utoadjust(?:s|ing|ed)? +[Aa]utobase +[aA]uto[cC]lose +[aA]utodetect(?:s|ing|ed)?(?:'s)? +[aA]utogenerat(?:e|es|ing|ed)? +[aA]utoinject(?:s|ing|ed)?(?:'s)? +[aA]uto-merge +autoprefixer +AWS Key Management Service +AWS Secrets Manager +Axelar +Azure Key Vault +BerkeleyDB +Bintray +Bitdeer +Bitmain +blockquote +[bB]orderless +browsable +[bB]undler[s]? +Cakeshop +callout +[cC]alldata +Cascader +C-Chain +CCL|Confidential Computing Layer +CGMiner +CLI +Chatbot +[cC]lasspath[s]? +[cC]lientId +[cC]lientSecret +Codefi +[cC]oinbase +[cC]omposable +[cC]onfig[s]? +[cC]orepack +[cC]ounterpart(?:y|ies) +[cC]rafter +[cC]rypto +[cC]ryptocurrenc(?:y|ies) +CSpell +CXKit +[cC]yber +[cC]ybersecurity +[dD]app[s]? +deadlineHeight +[dD]eauthoriz(?:e|ing) +[dD]eeplink(?:s|ing)? +^DeFi$ +DHT +[dD]enylist[s]? +[dD]eserializ(?:e|ing) +[dD]eserialization +[dD]esynchronization +[dD]efaultValue +[dD]ev +[dD]evkit(?:'s)? +^DEXs?$ +DipDup +Divio +Doc[tT]ools +[dD]ocusaurus +[dD]oppelganger[s]? +[eE]ncryptor[s]? +[eE]ncrypt(?:ing|ed)? +[eE]ndpointOverride +[eE]node[s]? +[Ee]phemery +ENRs +env +ERC-20 +Erigon +ESLint +[eE]thdo +EthSigner +Ethereum +^[Ee]therscan$ +Etherspot +^eth_sendbundle$ +Fastify +Figma +[fF]ullscreen +[fF]umadocs +Fusaka +Filecoin +Fireblocks +firewalling +^Flashbots$ +frontmatter +Ganache +[gG]asless +^gasPrice$ +Geth +Gitcoin +GitHub +gitignored +Gitter +gnark +Goldsky +Google Cloud Platform Secret Manager|GCP Secret Manager +GPU[s]? +GoQuorum +Gradle +Grafana +gRPC +[Gg]?wei +Hashi[cC]orp +hardcoded +[hH]ardfork[s]?(?:'s)? +[hH]ashboard[s]? +[hH]eatmap[s]? +Helmfile +Hexagate +Holepunch +Homebrew +[Hh]oodi +[hH]ostname[s]? +HSM[s]? +Hyperbee +Hypercore +Hyperledger +Hyperschema +[Hh]yperswarm +Inkeep +InfluxDB +Infura +[iI]nterlockUrl +IntraLayer +[iI]nviter(?:'s)? +Irys +Jasypt +JMeter +jnacl +JSDoc +Jubjub +Kafka +Kaleido +[kK]alium +Katacoda +Kehua +[kK]eystore[s]? +[kK]eytool[s]? +[kK]keyName +[kK]eyPath +[kK]eyType +Kovan +[kK]ubectl +[lL]aunchpad +LEDs? +libsodium +Lineaplorer +Linea Voyage +Linea Yield Boost +[lL]inkinator +lockfiles +Logback +Logrus +Logstash +lookups +LPs +LSTs? +[mM]ainnet[s]? +Markdown +Markdownlint +[mM]arshal(?:ing|ed)? +[mM][dD][kK](?:'s)? +Medalla +[Mm]empool +Merkle +Merkleroot +MetaMask +[mM]inerpool[s]? +mitigations +mixins? +MkDocs +Mobula +Modbus +[mM]odify +[mM]onitor +[mM]onorepo(?:'s)? +MPa +[mM]ultiaddresse[s]? +[mM]ultikey[s]? +[mM]ultiple +[mM]ultisig(?:s|nature)? +[mM]ultisite +[mM]ultivalidator[s]?(?:'s)? +[nN]amespace(?:s|d)? +[nN]avbar +Nethermind +Nginx +Nodefleet +Node.js +[nN]once[s]? +npm +[nN]ullish +nvm +OAuth +Octoflow +[oO]nboard(?:s|ing|ed)? +opBNB|opbnb +OpenSea +[oO]rderbook[s]? +^[oO]rderflows?$ +Orion +ORK +ORKs +ORK's +PADO +[pP]arallelization +paramStructure +[pP]articipate +[pP]asswordless +Pectra +Pegasys +[pP]ermission(?:ing|ed)? +[pP]repend(?:s|ing|ed)? +[pP]reprocess(?:es|ing|ed)? +[Pp]recompile[s]? +Photoshop +[pP]imlico(?:'s)? +Polkadot +[pP]ost[cC][sS][sS] +Postgres +[pP]owermeter[s]? +Powershell +PoW +P-Chain +[pP]olyfill(?:s|ed|ing)? +[pP]reidentif(?:y|ied) +[pP]retrain(?:ing|ed)? +Proof of Humanity|PoH|POH +Prometheus +[pP]rotobuf +proxying +Prysm|PRYSM +Prysmatic +[pP]ubspec(?:'s)? +Pyrmont +Pyth +QVAC +Qwen +^Rabby$ +Raft +ReadTheDocs +[rR]ebas(?:e|es|ing|ed)? +[rR]ebalanc(?:e|es|ing|ed)?(?:'s)? +[rR]edelegat(?:e|es|ing|ed|ion|ions)? +Redis +[rR]edistributable[s]? +Redocusaurus +[rR]eentrancy +[rR]elayer[s]? +[rR]epo(?:'s)? +[rR]epurposing +[rR]eskin(?:s|ning|ned)? +[rR]estak(?:e|es|ing|ed)? +[rR]esync(?:s|ing|ed)?(?:'s)? +rgba?|RGBA? +Rinkeby +Roboto +[rR]ollout[s]?(?:'s)? +Ropsten +RPCs +[Rr]unbook[s]? +[rR]unnable[s]? +[sS]andbox(?:ing|ed)? +[sS]ample[s]? +Satec +[sS]atoshi[s]? +Scamfari +Scopescan +[sS]ecretName +Sei +Sentio +[sS]epolia +[sS]erializ(?:e|ing) +[sS]erialization +[sS]erverHost +[sS]erverPort +[sS]essionToken +signup +Schnorr +Slack +SLA[s]? +Socket.IO +SphereX +Splunk +StarkGate +[sS]tarknet +StarkWare +stVaults? +[sS]tylable +[sS]ubdir[s]? +[sS]ubgraph[s]? +[sS]uborganization[s]? +[sS]ubpath[s]? +[sS]ubstring[s]? +solc +Supra +[sS]upernode[s]?(?:'s)? +[sS]uperflash +Swagger +Swellchain +Takumi +Tasklist +Teku +Telegraf +[tT]erahash +Tether +Tezos +Tellor +[tT]enantId +[tT]estnet[s]? +[tT]hemeable +thirdweb +tmux +[tT]rie[s]? +TOCs +[tT]ooltip[s]? +[tT]ruststore[s]? +[tT]ruthy +tsc +Turborepo +UAs +[uU][iI]s?(?:'s)? +URIs? +[uU]nderflow[s]? +[uU]nencrypt(?:ing|ed)? +[uU]niswap +[uU]nichain +[uU]nlayered +[uU]nmarshal(?:ing|ed)? +[uU]pstream[s]? +[uU]nstak(?:e|es|ing|ed)?(?:'s)? +USB Armory Mk II +[uU]serOp +[vV]aultName +[vV]alidium[s]?(?:'s)? +[vV]endoring +Vercel +Vertx +vCPU[s]? +vGPU[s]? +[vV]iem(?:'s)? +[vV]iewport[s]? +Vitest +VM[s]? +[vV]ue +[wW]agmi +[wW]eb3 +Web3Signer +Whatsminer +[wW]hitelabel(?:ling|ing)? +[wW]ithdrawable +Wonderint +[wW]orkspace(?:'s)? +X-Chain +Yield Boost +[yY]aml|YAML +Zinken +ZKsync Era +zkEVM +Zod +Zustand diff --git a/styles/config/vocabularies/Tether-common/reject.txt b/styles/config/vocabularies/Tether-common/reject.txt new file mode 100644 index 0000000..f1f771d --- /dev/null +++ b/styles/config/vocabularies/Tether-common/reject.txt @@ -0,0 +1,13 @@ +arithmatex +[aA]utomagically +[bB]lacklist[s]? +[bB]lock[ -][cC]hain[s]? +[dD]oppelgänger +e[rR][cC][ -]20 +[eE]therum +log[bB]ack|logBack +log[sS]tash +orion +[pP]egaSys +p[ -][cC]hain +x[ -][cC]hain From a9bf3b334c5283435e912032da2e865444712237 Mon Sep 17 00:00:00 2001 From: m4sterbunny <20266893+m4sterbunny@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:57:09 +0100 Subject: [PATCH 2/2] chore: tag along tidy up of opinionated style --- CONTRIBUTING.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b960a2f..e8be427 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -221,7 +221,7 @@ Maintainers decide the final merge strategy. Prefer small, focused pull requests - Use clear MDX headings, stable links, and concise examples - Keep SEO metadata current when adding or moving docs pages - Avoid adding new abstractions unless they reduce real duplication or match an existing local pattern -- You may follow this opinionated style guide +- You MAY follow this [opinionated style guide](#opinionated-style-guide) ## Issues and security @@ -239,25 +239,20 @@ Happy contributing, and thanks for helping improve `docs-template`. ### Overview -Google developer style -US English -Bullet lists no stop (- Avalon not - Avalon.) -Numbered lists stop -Diataxis ia -No positional references ("Swap the filename for any other model from the table” NOT "Swap the filename for any other model from the table above”) - -### Frontmatter and linking strategy - -Links are from relevant text NOT "see ..." (do "The [Worker install pattern][install-pattern] defines the per-Worker mechanics." NOT "See the Worker [install pattern][install-pattern] for the per-Worker mechanics.") - -Ask maintainer if the page you are building is to be ported to `tether.io`, if so follow reference-style link definitions plus routing comments: - -/mdk-prv/docs/reference/maintainers/port-signals.md +- [Google developer style](https://developers.google.com/style) | [Vale](./README.md#vale-linting) lints per this guide +- US English +- Bullet lists no stop (- Avalon not - Avalon.) +- Numbered lists stop +- Diataxis ia +- No positional references ("Swap the filename for any other model from the table” NOT "Swap the filename for any other model from the table above”) +- Links from relevent text NOT "see ..." (do "The [Worker install pattern][install-pattern] defines the per-Worker mechanics." NOT "See the Worker [install pattern][install-pattern] for the per-Worker mechanics.") +- Restrict line length to ~150 chars ### Fixed sections, in order -1. `## Overview` — one paragraph or `## How it works`+ "This page ... -2. `## Next steps` — bullet list, each item `Description — [link](path)` +1. `## Overview` or `## How it works`— one paragraph or sentence "This page ..." clarifying page's purpose +2. Body content +3. Help the user discover more `## Next steps` — bullet list, each item `Description — [link](path)` ### Admonitions @@ -293,7 +288,6 @@ This is a **success** callout — use for success messages. This is an **idea** callout — use for tips or suggestions. - ### Code blocks - Always fenced with language tag (`bash`, `js`, etc.) except terminal session output which uses plain ` ``` `