Skip to content

Align documentation with TypeScript SDK structure #19

Description

@nficano

Goal

Align this SDK's docs/ directory with the canonical layout used by the TypeScript SDK. The conceptual pages (getting-started, architecture, transports, guides, etc.) are identical across every SDK. The per-source-unit subdirectory adapts to whatever the language calls its organizational unit — and only exists if this SDK actually has multiple such units.

The TS SDK uses docs/packages/ because it is a TypeScript monorepo with multiple npm packages. Do not blindly copy that name. If this SDK has multiple .NET projects, use docs/projects/. Multiple Gradle modules → docs/modules/. Multiple SwiftPM targets → docs/targets/. One single artifact → omit the subdirectory entirely — there is nothing to mirror.

The TS docs/README.md shape (Start here / Guides / Packages / Reference / Diagrams) is the index template — replace its "Packages" section with whatever this SDK's source-unit name is, or remove it if this SDK has only one artifact.

Current state (ruby-sdk)

  • Hybrid layout: has architecture.md, getting-started.md, transports.md, recipes.md, troubleshooting.md at top (good), plus concepts/ (10 pages) + guides/ (6 pages) + reference/ (3 pages).
  • Issue: docs use concepts/ for spec-aligned topics where TS uses guides/. Need to merge concepts/ into guides/.
  • No README.md index, no cli.md.
  • This SDK ships a single gem (arcp). No multi-package equivalent to mirror.
  • No existing docs umbrella ticket.

Target structure

docs/
├── README.md                       # index, links to everything below
├── getting-started.md              # install + minimal client+runtime example
├── architecture.md                 # how the modules fit together (references docs/diagrams/architecture-*.svg)
├── transports.md                   # WebSocket, stdio, in-memory; selection guide
├── cli.md                          # the `arcp` binary (omit only if SDK ships no CLI)
├── recipes.md                      # copy-paste solutions to common problems
├── conformance.md                  # spec coverage by section
├── troubleshooting.md              # error codes + fixes
├── guides/
│   ├── sessions.md                 # spec §6
│   ├── resume.md                   # spec §6.3
│   ├── auth.md                     # spec §6.1
│   ├── jobs.md                     # spec §7
│   ├── job-events.md               # spec §8
│   ├── leases.md                   # spec §9
│   ├── delegation.md               # spec §10
│   ├── observability.md            # spec §11
│   ├── errors.md                   # spec §12
│   └── vendor-extensions.md        # spec §15
└── diagrams/                       # graphviz sources + rendered light/dark SVGs

Per-source-unit pages

N/A — no subdirectory. This SDK has one gem, so there is nothing to mirror. Document the public module surface (Arcp::Client / Arcp::Runtime / Arcp::Session / Arcp::Job / Arcp::Auth / Arcp::Transport / Arcp::Trace) inside docs/architecture.md and in the relevant guides; do not invent a docs/packages/ or docs/modules/ directory just to fill a slot.

Authoring rules

  • Guides are spec-aligned, not feature-aligned. If the SDK currently has features/heartbeat.md, features/ack.md, etc., fold them into guides/job-events.md. If it has features/cost-budget.md, fold into guides/jobs.md (or its own guides/budgets.md only if it would otherwise be >2 screens).
  • docs/README.md is the index. Four sections (or three if no multi-artifact split): Start here, Guides, (if applicable), Reference. No content lives only in the index.
  • Diagrams use <picture> with prefers-color-scheme and ship both light + dark SVGs. Reference the architecture diagram from docs/README.md and docs/architecture.md.
  • Spec links point at ../../spec/docs/draft-arcp-1.1.md#section so they survive renames.
  • No orphan pages. Anything not linked from docs/README.md must be deleted or linked.
  • CONFORMANCE.md at repo root stays authoritative; docs/conformance.md summarizes + links to it.

Migration map

  • architecture.md, getting-started.md, transports.md, recipes.md, troubleshooting.md → keep, audit against TS counterparts
  • concepts/auth.mdguides/auth.md
  • concepts/delegation.mdguides/delegation.md
  • concepts/events.md + concepts/subscribe.md + concepts/heartbeats.mdguides/job-events.md
  • concepts/jobs.mdguides/jobs.md
  • concepts/leases.mdguides/leases.md
  • concepts/resume.mdguides/resume.md
  • concepts/sessions.mdguides/sessions.md
  • concepts/vendor-extensions.mdguides/vendor-extensions.md
  • guides/agent-versioning.md → fold into architecture.md (Versioning) or keep
  • guides/budgets.md → fold into guides/jobs.md
  • guides/result-streaming.md → fold into guides/job-events.md
  • guides/deployment.md → keep as Ruby-specific addition (note in docs/README.md)
  • guides/observability.md → keep
  • guides/quickstart.md → merge into top-level getting-started.md
  • reference/capabilities.mddocs/architecture.md (Capabilities)
  • reference/conformance.mddocs/conformance.md
  • reference/errors.mddocs/guides/errors.md
  • Create new: docs/README.md (index), docs/cli.md (if applicable)

Acceptance

  • Every conceptual file in the target structure exists (except cli.md if this SDK truly has no CLI — note the omission in docs/README.md)
  • docs/README.md matches the four-section shape of TS docs/README.md, substituting this SDK's source-unit term (or omitting that section entirely if single-artifact)
  • Every page is linked from docs/README.md; no orphans
  • Old feature-shaped pages (features/*, concepts/*, numeric NN-*.md) deleted or merged into canonical pages
  • Diagrams use <picture> light/dark and render on GitHub

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsDocumentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions