Skip to content

Align documentation with TypeScript SDK structure #14

@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 (fsharp-sdk)

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

Source layout has 8 .NET projects under src/. .NET calls them projects — use docs/projects/:

docs/projects/
├── Arcp.md                 # `Arcp` (meta / facade)
├── Arcp.Core.md            # `Arcp.Core`
├── Arcp.Client.md          # `Arcp.Client`
├── Arcp.Runtime.md         # `Arcp.Runtime`
├── Arcp.AspNetCore.md      # `Arcp.AspNetCore`
├── Arcp.Giraffe.md         # `Arcp.Giraffe`
├── Arcp.Otel.md            # `Arcp.Otel`
└── Arcp.Cli.md             # `Arcp.Cli`

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.

Note

Starting from a blank docs/ directory — build out the entire target structure from scratch. Use csharp-sdk docs/ as a peer reference (same .NET stack, same docs/projects/ shape), but copy the conceptual layout from the TypeScript SDK.

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

Closes / supersedes

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