Skip to content

Align documentation with TypeScript SDK structure #19

@nficano

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions