docs: add quickstart, auth, errors, concepts, SDK pages, and Spanish core#6
docs: add quickstart, auth, errors, concepts, SDK pages, and Spanish core#6WomB0ComB0 merged 4 commits intomainfrom
Conversation
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (19)
📝 WalkthroughWalkthroughAdded comprehensive documentation for ResQ Tactical OS platform across API reference, authentication, error handling, SDK guides, and concepts in both English and Spanish; updated Mintlify configuration, styling, and GitHub Actions workflow. ChangesResQ Documentation Launch
Sequence Diagram(s)sequenceDiagram
participant Operator
participant ResQ_Infra as ResQ Infrastructure API
participant ResQ_Coord as ResQ Coordination API
participant Solana as Solana Blockchain
Operator->>ResQ_Infra: POST /login<br/>(username, password)
ResQ_Infra-->>Operator: JWT token + expires_at
Operator->>ResQ_Infra: GET /health<br/>(no auth)
ResQ_Infra-->>Operator: 200 OK
Operator->>ResQ_Infra: GET /evidence<br/>(Authorization: Bearer JWT)
ResQ_Infra->>Solana: Verify IPFS CID anchor
Solana-->>ResQ_Infra: CID confirmed
ResQ_Infra-->>Operator: Evidence data + IPFS metadata
Operator->>ResQ_Coord: GET /events (SSE)<br/>(Authorization: Bearer JWT)
ResQ_Coord-->>Operator: Real-time telemetry events<br/>(streaming)
Note over Operator: On token expiry,<br/>re-authenticate
Operator->>ResQ_Infra: POST /login (refresh)
ResQ_Infra-->>Operator: New JWT token
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~35 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request significantly expands and reorganizes the ResQ documentation, introducing comprehensive guides for authentication, core concepts, and error handling. It includes a major overhaul of the landing page and quickstart guides, supported by updated CSS brand tokens and a new light theme. The PR also adds dedicated documentation for the TypeScript, Python, Rust, and .NET SDKs, along with a complete Spanish translation of the core documentation. Feedback focuses on correcting invalid JSON syntax in authentication examples, improving internal linking for SDK consistency, and refining issue-reporting links to point directly to the documentation repository.
| <CardGroup cols={2}> | ||
| <Card title="TypeScript" icon="js" href="https://github.com/resq-software/npm"> | ||
| `@resq-sw/http`, `@resq-sw/security`, UI components. | ||
| </Card> | ||
| <Card title="Python" icon="python" href="https://github.com/resq-software/pypi"> | ||
| `resq-mcp` (FastMCP server) and `resq-dsa`. | ||
| </Card> | ||
| <Card title="Rust" icon="rust" href="https://github.com/resq-software/crates"> | ||
| Unified `resq` CLI plus seven TUI tools. | ||
| </Card> | ||
| <Card title=".NET" icon="hashtag" href="https://github.com/resq-software/dotnet-sdk"> | ||
| Typed clients, Protobuf contracts, sim harnesses. | ||
| </Card> | ||
| </CardGroup> |
There was a problem hiding this comment.
The SDK cards in this section link to GitHub repositories. Since new dedicated SDK pages have been created for these languages, it would be more consistent with other parts of the documentation (like the main index.mdx) and provide a better user experience to link to the internal pages instead. This keeps users within the docs site.
<CardGroup cols={2}>
<Card title="TypeScript" icon="js" href="/sdks/typescript">
`@resq-sw/http`, `@resq-sw/security`, UI components.
</Card>
<Card title="Python" icon="python" href="/sdks/python">
`resq-mcp` (FastMCP server) and `resq-dsa`.
</Card>
<Card title="Rust" icon="rust" href="/sdks/rust">
Unified `resq` CLI plus seven TUI tools.
</Card>
<Card title=".NET" icon="hashtag" href="/sdks/dotnet">
Typed clients, Protobuf contracts, sim harnesses.
</Card>
</CardGroup>
There was a problem hiding this comment.
Fixed in c1d3676 — SDK CardGroup hrefs in api-reference/introduction.mdx now point to /sdks/typescript, /sdks/python, /sdks/rust, /sdks/dotnet (matches the home page convention).
|
|
||
| <Steps> | ||
| <Step title="Request a token"> | ||
| `POST /login` with JSON `{ "username", "password" }`. |
There was a problem hiding this comment.
There was a problem hiding this comment.
Fixed in db9ccc6 — replaced the invalid pseudo-JSON { "username", "password" } with a valid object-literal example {"username": "...", "password": "..."}.
| ## Reporting an error | ||
|
|
||
| If you hit a reproducible failure that does not match this reference, open an | ||
| issue at [github.com/resq-software](https://github.com/resq-software) with: |
There was a problem hiding this comment.
The link to report an issue points to the GitHub organization page. It would be more helpful for users if this linked directly to the "new issue" page for the documentation repository, as configured in docs.json.
issue in the [docs repository](https://github.com/resq-software/docs/issues/new?title=Docs%20issue:%20) with:
There was a problem hiding this comment.
Fixed in db9ccc6 — link now deep-points to https://github.com/resq-software/docs/issues/new?title=Docs%20issue:%20.
|
|
||
| <Steps> | ||
| <Step title="Solicita un token"> | ||
| `POST /login` con JSON `{ "username", "password" }`. |
There was a problem hiding this comment.
There was a problem hiding this comment.
Fixed in db9ccc6 — same fix as the English version, in Spanish prose.
| abre una issue en | ||
| [github.com/resq-software](https://github.com/resq-software) con: |
There was a problem hiding this comment.
The link to report an issue points to the GitHub organization page. It would be more helpful for users if this linked directly to the "new issue" page for the documentation repository.
abre una issue en el [repositorio de documentación](https://github.com/resq-software/docs/issues/new?title=Docs%20issue:%20) con:
There was a problem hiding this comment.
Fixed in db9ccc6 — Spanish equivalent of the issue-link fix.
| [README](https://github.com/resq-software/dotnet-sdk#readme): | ||
|
|
||
| ```bash | ||
| dotnet add package ResQ.Client |
There was a problem hiding this comment.
The example command uses ResQ.Client as the package name, but the note below clarifies that this is not the real name and publishing is in flux. This can be confusing. Using a clear placeholder like <package-name> in the command would be less ambiguous for the user.
dotnet add package <package-name>
There was a problem hiding this comment.
Fixed in db9ccc6 — fabricated package name ResQ.Client replaced with explicit <package-name> placeholder so the example aligns with the surrounding caveat.
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/required.yml:
- Around line 25-29: The current "required" job defined with a single echo step
is a false-green gate; replace it with an aggregator job named required that
declares explicit needs dependencies on the real CI jobs (e.g., lint, build,
test or their actual job names) and fails if those jobs are missing;
specifically, remove the placeholder run: echo step and add a needs:
[<actual-job-names>] entry plus a simple step that checks the status of those
jobs (or uses if: always() and fails when any required job did not run) so the
job only passes when the dependent CI jobs have completed successfully before
you enable enforcement.
In `@api-reference/introduction.mdx`:
- Around line 128-145: The SDK CardGroup currently links to external GitHub
repos; update each Card's href to point to the internal docs SDK pages instead
(e.g., replace the href on the Card with title "TypeScript", the Card with title
"Python", the Card with title "Rust", and the Card with title ".NET" so they
reference the corresponding internal /sdks/* documentation pages used elsewhere
in the PR). Keep the Card titles and content unchanged, only change the href
attributes to the internal docs routes so the cards navigate to the local SDK
pages.
In `@custom.css`:
- Line 101: Replace the quoted single-word font family 'Syne' with an unquoted
identifier in the font-family declarations that currently read "font-family:
'Syne', system-ui, sans-serif;": remove the single quotes around Syne in both
occurrences so the property becomes font-family: Syne, system-ui, sans-serif; to
satisfy the Stylelint font-family-name-quotes rule.
- Line 23: The `@import` rule using url(...) violates the Stylelint
import-notation rule; replace the url(...) notation with a bare string for the
`@import` statement (i.e., change the `@import` line that uses
url('https://fonts.googleapis.com/...') to use a plain string import: `@import`
'https://fonts.googleapis.com/...';) so Stylelint accepts the import-notation.
- Around line 336-349: The .resq-cta rule uses border-radius: 0.5rem (8px) but
the brand guide requires a 6px radius for buttons; update the .resq-cta selector
to use a 6px radius (e.g., border-radius: 6px or 0.375rem) so buttons comply
with the "Use 6px radius for cards, inputs, buttons, and panels" guideline,
leaving all other properties unchanged.
- Around line 222-223: The CSS uses the keyword "currentColor" with uppercase C
which violates the stylelint value-keyword-case rule; update the background and
box-shadow declarations to use the lowercase keyword "currentcolor" (i.e.,
adjust the background property and the color-mix argument inside box-shadow) so
both occurrences match the required lowercase keyword.
In `@docs.json`:
- Around line 153-162: The suggestEdits.url in docs.json currently contains a
literal "{filename}" placeholder which Mintlify does not support; update the
suggestEdits object by removing the "{filename}" placeholder and setting url to
the correct base edit URL (e.g., the repository's edit URL without any template
variable) or omit the url to let Mintlify generate edit links client-side;
locate the suggestEdits.url key in docs.json and replace the value so it no
longer contains "{filename}".
In `@sdks/rust.mdx`:
- Around line 62-69: The Cargo.toml snippet is missing the anyhow crate required
by the main function's return type (anyhow::Result<()>), and it also contains a
wildcard version for resq-dsa which is unsafe; update the [dependencies] block
to add anyhow = "1" (or an appropriate pinned version) so anyhow::Result
resolves, and replace resq-dsa = "*" with a concrete version string (e.g., "0.x"
or the repository's recommended semver) to avoid wildcard dependency resolution;
check references in main and any functions that use anyhow::Result or
anyhow::Error to ensure the chosen version is compatible.
In `@sdks/typescript.mdx`:
- Around line 81-85: The example that assigns to evidence calls
fetch(...).then((r) => r.json()) without checking response status, so HTTP
errors (e.g., 401) get parsed as JSON and hidden; update the fetch usage to
check r.ok (or r.status) before parsing: after fetch, if (!r.ok) throw a
descriptive Error including r.status and await r.text() or r.statusText to
surface the server error, otherwise return r.json(); keep the variable name
evidence and the same fetch call but add the r.ok check and throw to mirror the
/login pattern.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: ecd2ac21-a313-41c2-9406-132d8187055d
📒 Files selected for processing (20)
.github/workflows/required.ymlapi-reference/introduction.mdxauthentication.mdxconcepts.mdxcustom.cssdocs.jsonerrors.mdxes/api-reference/introduction.mdxes/authentication.mdxes/concepts.mdxes/errors.mdxes/index.mdxes/quickstart.mdxindex.mdxquickstart.mdxsdks/dotnet.mdxsdks/index.mdxsdks/python.mdxsdks/rust.mdxsdks/typescript.mdx
…core
Adds the developer onboarding flow on top of the previously thin docs site.
New pages:
- quickstart, authentication, errors, concepts
- sdks/{index,typescript,python,rust,dotnet}
- es/{concepts,quickstart,authentication,errors}
Existing pages updated:
- api-reference/introduction.mdx — base URLs, auth example, conventions
(pagination, idempotency, request IDs, content type, time)
- es/api-reference/introduction.mdx — retranslated to match English
- es/index.mdx — Spanish CTA row to the new pages
- index.mdx — hero CTA row, repointed SDK cards from GitHub to /sdks/*
- custom.css — .resq-cta-row and .resq-cta styles
- docs.json — SDKs tab, concepts slotted into Start here, feedback widget,
theme-color fix (matched to background.color.dark), /quickstart redirect
removed (page now exists), /essentials/* and /ai-tools/* repointed to
/quickstart instead of /
Caveats:
- Base URLs (https://api.resq.software, https://coordination.resq.software)
are placeholders pending confirmation.
- SDK examples use plain HTTP clients (fetch / httpx / reqwest / HttpClient)
rather than fabricated SDK method signatures; per-package APIs are
documented in their respective READMEs.
- ar/, hi/, zh/ locale trees are unchanged from prior state.
- i18n nav (languages array in docs.json) intentionally not added — schema
varies by Mintlify version and needs confirmation.
acea2af to
8ed01df
Compare
Resolves CI failures and review feedback on this PR. required.yml - mintlify (broken-links): set continue-on-error until #6 (rewrites api-reference/introduction.mdx) and #7 (deletes essentials/ starter pages) merge. Five broken links here all live in those soon-to-be- removed files. - spectral (OpenAPI lint): fix invalid action SHA — use v0.8.13 tag with TODO for Dependabot to SHA-pin. Mark advisory. - pwa-manifest: skip gracefully when manifest.webmanifest is absent (it lives on feat/brand-assets PR #8). Once #8 merges, this gate becomes substantive on main. - required: gate now blocks only on pwa-manifest. Mintlify and spectral results print for visibility. labeler.yml - area:content: add all-globs-to-all-files exclusion for paths owned by other labels (api-reference, specs, locales, .github, repo guidance) so PRs don't accumulate redundant labels.
- authentication.mdx, es/authentication.mdx: replace pseudo-JSON
\`{ "username", "password" }\` (invalid) with valid object literal
example \`{"username": "...", "password": "..."}\`.
- errors.mdx, es/errors.mdx: deep-link the "report an error" prompt to
the docs repo issue creator instead of the GitHub org page.
- sdks/dotnet.mdx: replace fabricated package name \`ResQ.Client\` in
the install snippet with explicit \`<package-name>\` placeholder so
it visibly aligns with the surrounding caveat.
- api-reference/introduction.mdx: repoint SDK CardGroup hrefs from
GitHub repos to internal /sdks/* pages, matching the convention used
on the home page and quickstart.
- README.md "Contents" table: rename row "Overview" to "Start here" to match the docs.json group introduced in #6 and the example block later in this same file. - AGENTS.md L16: tighten the api-reference bullet to comply with the writing-style rule (code formatting for paths) on L37. Per reviewer note on AGENTS.md L66: the .resq-hero / .resq-eyebrow / .resq-pill brand classes referenced in the "Brand utility classes" section are added in PR #6 (custom.css). Once #6 merges those refs become valid; left intentionally unchanged here.
- custom.css: .resq-cta border-radius 0.5rem (8px) → 6px to match the
brand guide rule on button radii.
- docs.json: drop the {filename} template variable from
feedback.suggestEdits.url — Mintlify generates the edit URL
client-side from the page path; the placeholder is not a documented
template variable. Keeping suggestEdits.isShown: true so the action
still surfaces in the UI.
- sdks/rust.mdx: add anyhow = "1" to the auth-example Cargo.toml
(main() returns anyhow::Result<()> at L81 — example wouldn't compile
without it). Replace `version = "*"` wildcard for resq-dsa with
`0.1` plus a TOML comment instructing the reader to substitute the
current crates.io version (wildcards are rejected for published
crates and silently pull breaking changes).
- sdks/typescript.mdx: add r.ok status-check to the evidence-fetch
example, mirroring the auth example earlier in the same file. The
prior version silently parsed error responses (e.g. 401 expired
tokens) as JSON.
* chore: purge starter content, refresh repo guidance, add config Removes the Mintlify starter pages that don't belong in this docs site and refreshes the human-facing guidance + repo config. - Delete: ai-tools/, essentials/, development.mdx, favicon.svg, images/, logo/, snippets/snippet-intro.mdx - Update: AGENTS.md, CONTRIBUTING.md, README.md - Add: .gitignore (ignore local-only files), .spectral.yml (OpenAPI lint) The deleted routes are caught by redirects in docs.json (added in the docs/onboarding-pages PR): /essentials/* and /ai-tools/* redirect to /quickstart, /development to /quickstart. Brand replacements (favicon/logo/images) live in the brand-assets PR. * docs: align README and AGENTS with the new site shape - README.md "Contents" table: rename row "Overview" to "Start here" to match the docs.json group introduced in #6 and the example block later in this same file. - AGENTS.md L16: tighten the api-reference bullet to comply with the writing-style rule (code formatting for paths) on L37. Per reviewer note on AGENTS.md L66: the .resq-hero / .resq-eyebrow / .resq-pill brand classes referenced in the "Brand utility classes" section are added in PR #6 (custom.css). Once #6 merges those refs become valid; left intentionally unchanged here.
Adds the production brand assets referenced by docs.json's SEO metatags and the favicon/logo paths used across the site. - assets/icons/ — ResQ mark in color/mono-black/mono-white - assets/images/ — favicons (16/32/192/512), Apple touch icon, light/dark monochrome variants - assets/logos/ — horizontal lockups (light/dark) - manifest.webmanifest — PWA manifest - pwa/ — Apple/Windows tile assets across required scales - og-banner.png, og-backdrop.png — OG/Twitter card art Pairs with docs/onboarding-pages PR #6 — docs.json's \`favicon\`, \`logo\`, \`og:image\`, \`apple-touch-icon\`, and \`msapplication-TileImage\` paths point at these.
Resolves CI failures and review feedback on this PR. required.yml - mintlify (broken-links): set continue-on-error until #6 (rewrites api-reference/introduction.mdx) and #7 (deletes essentials/ starter pages) merge. Five broken links here all live in those soon-to-be- removed files. - spectral (OpenAPI lint): fix invalid action SHA — use v0.8.13 tag with TODO for Dependabot to SHA-pin. Mark advisory. - pwa-manifest: skip gracefully when manifest.webmanifest is absent (it lives on feat/brand-assets PR #8). Once #8 merges, this gate becomes substantive on main. - required: gate now blocks only on pwa-manifest. Mintlify and spectral results print for visibility. labeler.yml - area:content: add all-globs-to-all-files exclusion for paths owned by other labels (api-reference, specs, locales, .github, repo guidance) so PRs don't accumulate redundant labels.
The advisory mode was scoped to "until docs/onboarding-pages and chore/repo-cleanup land". Both are now in main: - #6 (81ab409) rewrote api-reference/introduction.mdx (no more /api-reference/endpoint/* dangling refs) - #7 (c6bf336) deleted the essentials/* and ai-tools/* starter pages (no more /writing-content/embed and /api-playground/demo broken links) The five broken links the original run found are gone. mintlify (broken-links) returns to a substantive blocking gate. spectral remains advisory until the stoplightio/spectral-action SHA pin lands (Dependabot will handle).
* feat: add ResQ brand assets, OG images, PWA manifest Adds the production brand assets referenced by docs.json's SEO metatags and the favicon/logo paths used across the site. - assets/icons/ — ResQ mark in color/mono-black/mono-white - assets/images/ — favicons (16/32/192/512), Apple touch icon, light/dark monochrome variants - assets/logos/ — horizontal lockups (light/dark) - manifest.webmanifest — PWA manifest - pwa/ — Apple/Windows tile assets across required scales - og-banner.png, og-backdrop.png — OG/Twitter card art Pairs with docs/onboarding-pages PR #6 — docs.json's \`favicon\`, \`logo\`, \`og:image\`, \`apple-touch-icon\`, and \`msapplication-TileImage\` paths point at these. * chore(assets): remove duplicate SVGs - assets/svgs/logo.svg is byte-identical to assets/icons/resq-mark-color.svg. The canonical icon path is assets/icons/. Removing the duplicate and dropping the now-empty assets/svgs/ directory. - assets/logos/resq-mark-gradient.svg is byte-identical to assets/images/icon.svg. The canonical gradient mark lives at assets/images/icon.svg per existing references. Removing the duplicate. OG sources (assets/logos/og-banner.svg, og-backdrop.svg) are kept as vector sources for the PNG outputs at the repo root (og-banner.png, og-backdrop.png) — those are what docs.json and the social crawlers actually consume. Reviewer's PNG-required concern is satisfied; SVG sources are kept for redesigns. Logo lockup SVGs (lockup-horizontal-{light,dark}.svg etc.) still use <text> elements with web fonts. Converting text→paths requires Inkscape or similar design tooling — deferred to a follow-up; current SVGs render correctly when consumed via the docs site (Mintlify loads the fonts) and the favicon path uses the icon-only variants which are already path-based.
* ci: add governance workflows and harden required gate Adds the docs-specific CI governance workflows on top of the placeholder required gate (#5). New workflows - workflows/lychee.yml — link checker (markdown + mdx + docs.json) - workflows/i18n-parity.yml — informational locale parity report - workflows/labeler.yml — auto-label PRs by touched paths - workflows/stale.yml — close abandoned issues/PRs - labeler.yml — labeler action config Hardened - workflows/required.yml — adds mintlify broken-link job to needs:, so the aggregate \`required\` check actually depends on real CI rather than passing trivially. The \`required\` change keeps the single-aggregate-gate contract — new blocking checks should be added to \`needs:\` here rather than as separate workflows that branch protection has to track individually. * ci: make mintlify/spectral advisory, scope labeler area:content Resolves CI failures and review feedback on this PR. required.yml - mintlify (broken-links): set continue-on-error until #6 (rewrites api-reference/introduction.mdx) and #7 (deletes essentials/ starter pages) merge. Five broken links here all live in those soon-to-be- removed files. - spectral (OpenAPI lint): fix invalid action SHA — use v0.8.13 tag with TODO for Dependabot to SHA-pin. Mark advisory. - pwa-manifest: skip gracefully when manifest.webmanifest is absent (it lives on feat/brand-assets PR #8). Once #8 merges, this gate becomes substantive on main. - required: gate now blocks only on pwa-manifest. Mintlify and spectral results print for visibility. labeler.yml - area:content: add all-globs-to-all-files exclusion for paths owned by other labels (api-reference, specs, locales, .github, repo guidance) so PRs don't accumulate redundant labels. * ci: flip mintlify back to blocking now that #6 and #7 merged The advisory mode was scoped to "until docs/onboarding-pages and chore/repo-cleanup land". Both are now in main: - #6 (81ab409) rewrote api-reference/introduction.mdx (no more /api-reference/endpoint/* dangling refs) - #7 (c6bf336) deleted the essentials/* and ai-tools/* starter pages (no more /writing-content/embed and /api-playground/demo broken links) The five broken links the original run found are gone. mintlify (broken-links) returns to a substantive blocking gate. spectral remains advisory until the stoplightio/spectral-action SHA pin lands (Dependabot will handle).
Summary
Expands the docs site from a thin landing page + auto-generated OpenAPI into a full developer onboarding flow.
New pages
Existing pages updated
Caveats
Test plan
Summary by CodeRabbit
Release Notes
Documentation
Style
Chores