Metadata-Version: 2.4
Name: drydock-sdd
Version: 0.1.2
Summary: Governed Blueprint-driven software delivery.
Project-URL: Homepage, https://github.com/webcloudstudio/Drydock
Project-URL: Repository, https://github.com/webcloudstudio/Drydock
Project-URL: Issues, https://github.com/webcloudstudio/Drydock/issues
Author-email: Ed Barlow <edward.m.barlow@gmail.com>
License: MIT
License-File: LICENSE
Keywords: blueprint-driven-development,cli,code-generation,llm,sdd,spec-kit,specification-driven-development
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Code Generators
Requires-Python: >=3.11
Requires-Dist: python-dotenv>=1.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: playwright>=1.61.0; extra == 'dev'
Requires-Dist: pre-commit>=3.7; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: pdf
Requires-Dist: playwright>=1.61.0; extra == 'pdf'
Description-Content-Type: text/markdown

# Drydock

Drydock is a governed, Blueprint-driven software delivery CLI for building working
software from specifications with a repeatable Agile process.

It adds the missing process layer to specification-driven development: import the
source material, analyze it into stories and acceptance criteria, review decisions in
the QuarterDeck, plan a dependency graph, build one context-optimized frontier at a
time, verify evidence, and keep the Blueprint and software aligned as the product
changes.

Copyright (c) 2026 Web Cloud Studio. All rights reserved. See [LICENSE](LICENSE).

## What Drydock Is

Drydock is an installable Python command-line package. The PyPI distribution is
`drydock-sdd`; the installed command is `drydock`.

Drydock implements the SAIL methodology:

| Phase | Purpose | Primary commands |
|---|---|---|
| Set Up | Install, configure, and initialize a Target workspace | `config`, `init`, `status` |
| Analyze | Import material and decompose it into stories, blockers, and acceptance milestones | `import`, `analyze`, `run quarterdeck`, `plan` |
| Implement | Build the Manifest frontier and verify evidence | `build`, `build status`, `build verify`, `rigging`, `document` |
| Loop | Manage change while preserving the Blueprint as source of truth | `refit`, `build`, `document` |

The core idea is simple: reproducible LLM builds require a process. Drydock uses
Agile structure, explicit product-owner review, durable evidence, and context-managed
build prompts so generated software can be inspected, repeated, and iterated.

## Subscription CLI Requirement

Drydock is for subscription-authenticated CLI users.

It does not use API-key-backed model calls and does not require per-token API billing.
LLM-assisted commands execute through a locally authenticated provider CLI:

- `claude` for Anthropic Claude subscription CLI users.
- `codex` for OpenAI Codex subscription CLI users.

Set the provider with:

```bash
drydock config set llm_provider claude
# or
drydock config set llm_provider codex
```

The provider CLI must already be installed, authenticated, and available on `PATH`.
Deterministic commands such as `status`, `validate`, `document assemble`, and `publish`
do not call an LLM.

## Install

Python 3.11 or later is required.

Recommended:

```bash
uv tool install drydock-sdd
```

Alternative:

```bash
pipx install drydock-sdd
```

Virtual environment install:

```bash
python -m pip install drydock-sdd
```

Verify:

```bash
drydock --version
drydock --help
```

PDF publishing (`drydock publish --pdf`) is optional and requires the `pdf` extra plus a
local Chromium download:

```bash
uv tool install "drydock-sdd[pdf]"
playwright install chromium
```

See [docs/INSTALLATION.md](docs/INSTALLATION.md) for the full installation and release
verification guide.

### Optional: Claude Code skills

Drydock ships two Claude Code skills that support the Loop phase: `/refit` (design
discussion captured to a notes file in the Target directory) and `/apply-refit` (turn the
captured decisions into change tickets). Installing them is optional:

```bash
python -c "import shutil, pathlib; from drydock.paths import get_rigging_root; \
dest = pathlib.Path.home() / '.claude' / 'skills'; \
[shutil.copytree(s, dest / s.name, dirs_exist_ok=True) \
 for s in (get_rigging_root() / 'skills').iterdir()]"
```

The skills are copied from the packaged `Rigging/skills/` directory into
`~/.claude/skills/`. See [docs/Drydock_SKILLS.md](docs/Drydock_SKILLS.md) for usage.

## Quick Start

Create one projects directory, configure Drydock's workspace and build output root, and
initialize a Target.

```bash
export PROJECTS="$HOME/projects"
mkdir -p "$PROJECTS/drydock"

drydock config set drydock_workspace "$PROJECTS/drydock"
drydock config set drydock_build_directory "$PROJECTS"
drydock config set llm_provider claude

drydock init MyApp --display-name "My App" --description "A working software product."
drydock status
```

Import source material and run the planning loop:

```bash
drydock import MyApp ./notes --format markdown
drydock analyze MyApp
drydock run quarterdeck MyApp
drydock plan MyApp
drydock build status MyApp
```

Build and verify one frontier at a time:

```bash
drydock build MyApp
drydock build status MyApp
drydock build verify MyApp <step-id>
```

The Target workspace lives under:

```text
$DRYDOCK_WORKSPACE/targets/<Target>/
```

The generated application is written under:

```text
$DRYDOCK_BUILD_DIRECTORY/<Target>/
```

## Why It Is Different

Drydock is not a prompt collection and it is not a one-shot code generator. It is a
delivery system with durable artifacts:

- Blueprint: typed Markdown specifications that remain the source of truth.
- Manifest: the executable dependency graph for build order, dependencies, and state.
- QuarterDeck: the web review surface where the product owner answers questions,
  reviews stories, and directs the process.
- Compass files: persistent product-owner intent injected into the right command runs.
- Soundings: acceptance checklist and implementation evidence.
- Sea Trials: product-level objectives and proof-of-delivery criteria.
- Rigging: shared branding, stack rules, templates, and compact context derivatives.
- Execution logs: reproducible prompt, raw output, stderr, event, and result artifacts.

The Commander is the product owner. The LLM is treated as an Agile delivery team.
Drydock's job is to make that relationship explicit, reviewable, and repeatable.

## Current Release Status

Drydock `0.1.1` is an alpha release. The primary SAIL path is implemented, but
the command surface and Typed Specification contracts remain unstable during
the `0.x` series:

- Workspace configuration and Target initialization.
- Markdown, source tree, Spec Kit, and Compass import.
- LLM-assisted analysis with blockers, questionnaires, Soundings, Sea Trials, and
  Commander review artifacts.
- LLM-assisted planning into typed Blueprint files and `MANIFEST.md`.
- Manifest-frontier build execution, evidence capture, and human verification.
- Refit change-ticket conformance and applied-spec drift reconciliation.
- QuarterDeck runtime for review and process navigation.
- Rigging compaction, update, and verification.
- Target documentation generation and assembly.
- Deterministic Markdown publishing to HTML and optional PDF.
- Survey and prompt-review tooling used to evaluate Drydock's own command quality.

One command surface remains visible but deferred in the current CLI:

- `drydock build score <Target>`

The installed wheel includes Drydock's canonical product specification as a
read-only package resource at `drydock/resources/docs/Drydock_Specification.md`.

Read [docs/SOUNDINGS.md](docs/SOUNDINGS.md) for the authoritative implementation
readiness checklist and test evidence.

## Command Surface

```text
drydock --help
drydock --version

drydock config show
drydock config set <key> <value>

drydock init <Target> [--display-name <name>] [--description <desc>]
drydock status [<Target>]
drydock validate <Target> [--verbose]
drydock run quarterdeck [<Target>] [--host HOST] [--port PORT]

drydock import <Target> <Source> --format <auto|markdown|source|speckit|compass>
drydock analyze <Target> [--model <model>] [--llm-provider <claude|codex>]
drydock plan <Target> [--model <model>] [--llm-provider <claude|codex>]

drydock build <Target> [--step <step-id>] [--force] [--build-dir <path>]
drydock build status <Target>
drydock build verify <Target> <step-id>
drydock build score <Target>

drydock rigging compact [<Target>] [--all] [--force]
drydock rigging compact <Target> --include-file <file.md>
drydock rigging update <Target> [--dry-run]
drydock rigging verify <Target>

drydock document generate <Target> [--model <model>]
drydock document assemble <Target> [--theme <theme>]
drydock document <Target> [--model <model>] [--theme <theme>]

drydock publish <Source.md> --output <Output.html> [--theme <theme>] [--flatten] [--pdf]
drydock survey <Target> [--run] [--import <path>] [--command <name>] [--raw]
drydock prompt review <component>
drydock shipslog [--dir <path>] [--dry-run]
```

Configuration keys:

| Key | Environment override | Purpose |
|---|---|---|
| `drydock_workspace` | `DRYDOCK_WORKSPACE` | Workspace containing `targets/` and Drydock logs |
| `drydock_build_directory` | `DRYDOCK_BUILD_DIRECTORY` | Root where generated applications are written |
| `drydock_model` | `DRYDOCK_MODEL` | Default model for LLM-assisted commands |
| `llm_provider` | `LLM_PROVIDER` | Subscription CLI provider: `claude` or `codex` |
| `prompt_warn_tokens` | `PROMPT_WARN_TOKENS` | Prompt-size warning threshold in tokens |
| `quarterdeck_port` | `QUARTERDECK_PORT` | Default QuarterDeck port |
| `shipslog_dir` | `DRYDOCK_SHIPSLOG_DIR` | Ship's Log posts package directory for `drydock shipslog` |

## Public Documentation

Core references:

- [Install Drydock](docs/INSTALLATION.md)
- [Drydock specification](docs/Drydock_Specification.md)
- [Rendered specification HTML](docs/Drydock_Specification.html)
- [Rendered specification PDF](docs/Drydock_Specification.pdf)
- [Published methodology page](docs/index.html)
- [Launch deck](docs/presentation/deck.html)
- [Launch script](docs/presentation/script.md)
- [Talking points](docs/presentation/talking_points.md)
- [Soundings readiness checklist](docs/SOUNDINGS.md)
- [Sea Trials sample](docs/SEA_TRIALS_SAMPLE.md)

Development and governance:

- [Contributing](CONTRIBUTING.md)
- [Drydock skills](docs/Drydock_SKILLS.md)
- [PyPI name reservation notes](docs/PYPI_NAME_RESERVATION.md)
- [Launch distribution plan](docs/presentation/distribution.md)

## Source Development

Install from a source checkout:

```bash
git clone https://github.com/webcloudstudio/Drydock.git
cd Drydock
uv venv
uv pip install -e ".[dev]"
```

Run local verification:

```bash
python -m pytest
ruff check src/ tests/
ruff format --check src/ tests/
```

Build release artifacts:

```bash
python -m hatchling build
```

After the editable install, run the installed console entry point against the source
tree:

```bash
drydock --help
```

## Security Model

Drydock assembles prompts deterministically and runs the selected provider CLI as a
subprocess. Execution evidence is persisted under Drydock logs so a run can be audited.

Provider handling is intentionally subscription-oriented:

- API-key environment variables are not the intended execution path.
- Claude and Codex are run through isolated command wrappers.
- Build commands operate against the configured Target workspace and generated application
  directory.
- Tests use injected runners and never require network or paid API access.

See the "Drydock Security" section in
[docs/Drydock_Specification.md](docs/Drydock_Specification.md#drydock-security) for the
current provider execution contracts.

## License

MIT - Copyright (c) 2026 Web Cloud Studio. See [LICENSE](LICENSE).

"Drydock" is a trademark of Web Cloud Studio; see [NOTICE](NOTICE) for use
of the name in forks and derivative works. See [CONTRIBUTORS.md](CONTRIBUTORS.md)
for the project's contributors.
