{"slug": "drydock-agile-tdd-spec-driven-delivery-initial-release", "title": "Drydock – Agile/TDD Spec Driven Delivery – Initial Release", "summary": "Web Cloud Studio released Drydock, an open-source Python CLI tool that adds an Agile/TDD process layer to specification-driven development using LLMs like Claude and Codex. The tool enables developers to import source material, analyze it into stories, review plans, and build software iteratively without per-token API billing. Drydock is available under the MIT License and targets subscription-authenticated CLI users.", "body_md": "**The missing process layer for specification-driven development.**\n\nDrydock gives specification-driven development the part it skipped: a repeatable **Agile** delivery and **Test Driven Development** based end-to-end process that turns specs into reviewed plans, context-managed builds, and obvious ways to maintain.\n\n[Install](#install) · [60-Second Example](#60-second-example) · [Why It Is Different](#why-it-is-different) · [Canonical Specification](https://webcloudstudio.com/project-docs/drydock/)\n[Overview Deck](https://webcloudstudio.com/drydock/) · [White Paper](https://zenodo.org/records/21287574) · [10 Minute Overview](https://webcloudstudio.com/project-docs/drydock/presentation/Drydock_Video.web.mp4) · [User Installation Guide](https://webcloudstudio.github.io/Drydock/USER_INSTALLATION.html)\n\n```\nuv tool install drydock-sdd     # then: drydock init MyApp && drydock status\n```\n\nDrydock runs on your existing Claude or Codex subscription CLI. It does not require API keys or per-token API billing.\n\nDrydock adds the missing process layer to specification-driven development: import source material, analyze it into stories and acceptance criteria, review decisions in the QuarterDeck, plan a dependency graph, build one context-optimized step at a time, verify evidence, and keep the Blueprint and software aligned as the product changes.\n\nYou are the Commander— the product owner. The LLM is your Agile delivery team. Drydock makes that relationship explicit, reviewable, and repeatable.\n\nCopyright (c) 2026 Web Cloud Studio. Licensed under the MIT License. See [LICENSE](/webcloudstudio/Drydock/blob/main/LICENSE).\n\n```\nuv tool install drydock-sdd\n\ndrydock config set llm_provider claude\ndrydock init MyApp --description \"A small web application.\"\ndrydock import MyApp ./notes --format markdown\ndrydock analyze MyApp\ndrydock run quarterdeck MyApp\ndrydock plan MyApp\ndrydock run quarterdeck MyApp\ndrydock build MyApp\n# Edit Some Blueprints\ndrydock refit MyApp\ndrydock build MyApp\n```\n\nThat loop creates a Target workspace, decomposes the source material, opens the Commander review surface, builds a dependency graph, and executes the first runnable frontier with persisted evidence.\n\nDrydock is an installable Python command-line package. The PyPI distribution is\n`drydock-sdd`\n\n; the installed command is `drydock`\n\n.\n\nDrydock implements the SAIL methodology:\n\n| Phase | Purpose | Primary commands |\n|---|---|---|\n| Set Up | Install, configure, and initialize a Target workspace | `config` , `init` , `status` |\n| Analyze | Import material and decompose it into stories, blockers, and acceptance milestones | `import` , `analyze` , `run quarterdeck` , `plan` |\n| Implement | Build the Manifest frontier and verify evidence | `build` , `build status` , `build verify` , `rigging` , `document` |\n| Loop | Manage change while preserving the Blueprint as source of truth | `refit` , `build` , `document` |\n\nThe 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.\n\nDrydock is for subscription-authenticated CLI users.\n\nIt 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:\n\n`claude`\n\nfor Anthropic Claude subscription CLI users.`codex`\n\nfor OpenAI Codex subscription CLI users.\n\nSet the provider with:\n\n```\ndrydock config set llm_provider claude\n# or\ndrydock config set llm_provider codex\n```\n\nThe provider CLI must already be installed, authenticated, and available on `PATH`\n\n.\nDeterministic commands such as `status`\n\n, `validate`\n\n, `document assemble`\n\n, and `publish`\n\ndo not call an LLM.\n\nPython 3.11 or later is required.\n\nRecommended:\n\n```\nuv tool install drydock-sdd\n```\n\nAlternative:\n\n```\npipx install drydock-sdd\n```\n\nVirtual environment install:\n\n```\npython -m pip install drydock-sdd\n```\n\nVerify:\n\n```\ndrydock --version\ndrydock --help\n```\n\nPDF publishing (`drydock publish --pdf`\n\n) is optional and requires the `pdf`\n\nextra plus a\nlocal Chromium download:\n\n```\nuv tool install \"drydock-sdd[pdf]\"\nplaywright install chromium\n```\n\nSee [docs/USER_INSTALLATION.md](/webcloudstudio/Drydock/blob/main/docs/USER_INSTALLATION.md) for the full installation\nguide.\n\nDrydock ships two Claude Code skills that support the Loop phase: `/refit`\n\n(design\ndiscussion captured to a notes file in the Target directory) and `/apply-refit`\n\n(turn the\ncaptured decisions into change tickets). Installing them is optional:\n\n``` python\npython -c \"import shutil, pathlib; from drydock.paths import get_rigging_root; \\\ndest = pathlib.Path.home() / '.claude' / 'skills'; \\\n[shutil.copytree(s, dest / s.name, dirs_exist_ok=True) \\\n for s in (get_rigging_root() / 'skills').iterdir()]\"\n```\n\nThe skills are copied from the packaged `Rigging/skills/`\n\ndirectory into\n`~/.claude/skills/`\n\n. See [docs/Drydock_SKILLS.md](/webcloudstudio/Drydock/blob/main/docs/Drydock_SKILLS.md) for usage.\n\nCreate one projects directory, configure Drydock's workspace and build output root, and initialize a Target.\n\n```\nexport PROJECTS=\"$HOME/projects\"\nmkdir -p \"$PROJECTS/drydock\"\n\ndrydock config set drydock_workspace \"$PROJECTS/drydock\"\ndrydock config set drydock_build_directory \"$PROJECTS\"\ndrydock config set llm_provider claude\n\ndrydock init MyApp --display-name \"My App\" --description \"A working software product.\"\ndrydock status\n```\n\nImport source material and run the planning loop:\n\n``` python\ndrydock import MyApp ./notes --format markdown\ndrydock analyze MyApp\ndrydock run quarterdeck MyApp\ndrydock plan MyApp\ndrydock build status MyApp\n```\n\nBuild and verify one frontier at a time:\n\n```\ndrydock build MyApp\ndrydock build status MyApp\ndrydock build verify MyApp <step-id>\n```\n\nThe Target workspace lives under:\n\n```\n$DRYDOCK_WORKSPACE/targets/<Target>/\n```\n\nThe generated application is written under:\n\n```\n$DRYDOCK_BUILD_DIRECTORY/<Target>/\n```\n\nDrydock is not a prompt collection and it is not a one-shot code generator. It is a delivery system with durable artifacts:\n\n- Blueprint: typed Markdown specifications that remain the source of truth.\n- Manifest: the executable dependency graph for build order, dependencies, and state.\n- QuarterDeck: the web review surface where the product owner answers questions, reviews stories, and directs the process.\n- Compass files: persistent product-owner intent injected into the right command runs.\n- Soundings: acceptance checklist and implementation evidence.\n- Sea Trials: product-level objectives and proof-of-delivery criteria.\n- Rigging: shared branding, stack rules, templates, and compact context derivatives.\n- Execution logs: reproducible prompt, raw output, stderr, event, and result artifacts.\n\nThe 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.\n\nDrydock `0.1.2`\n\nis an alpha release. The primary SAIL path is implemented, but\nthe command surface and Typed Specification contracts remain unstable during\nthe `0.x`\n\nseries:\n\n- Workspace configuration and Target initialization.\n- Markdown, source tree, Spec Kit, and Compass import.\n- LLM-assisted analysis with blockers, questionnaires, Soundings, Sea Trials, and Commander review artifacts.\n- LLM-assisted planning into typed Blueprint files and\n`MANIFEST.md`\n\n. - Manifest-frontier build execution, evidence capture, and human verification.\n- Refit change-ticket conformance and applied-spec drift reconciliation.\n- QuarterDeck runtime for review and process navigation.\n- Rigging compaction, update, and verification.\n- Target documentation generation and assembly.\n- Deterministic Markdown publishing to HTML and optional PDF.\n- Survey and prompt-review tooling used to evaluate Drydock's own command quality.\n\nOne command surface remains visible but deferred in the current CLI:\n\n`drydock build score <Target>`\n\nThe installed wheel includes Drydock's canonical product specification as a\nread-only package resource at `drydock/resources/docs/Drydock_Specification.md`\n\n.\n\nRead [docs/SOUNDINGS.md](/webcloudstudio/Drydock/blob/main/docs/SOUNDINGS.md) for the authoritative implementation\nreadiness checklist and test evidence.\n\n```\ndrydock --help\ndrydock --version\n\ndrydock config show\ndrydock config set <key> <value>\n\ndrydock init <Target> [--display-name <name>] [--description <desc>]\ndrydock status [<Target>]\ndrydock validate <Target> [--verbose]\ndrydock run quarterdeck [<Target>] [--host HOST] [--port PORT]\n\ndrydock import <Target> <Source> --format <auto|markdown|source|speckit|compass>\ndrydock analyze <Target> [--model <model>] [--llm-provider <claude|codex>]\ndrydock plan <Target> [--model <model>] [--llm-provider <claude|codex>]\n\ndrydock build <Target> [--step <step-id>] [--force] [--build-dir <path>]\ndrydock build status <Target>\ndrydock build verify <Target> <step-id>\ndrydock build score <Target>\n\ndrydock rigging compact [<Target>] [--all] [--force]\ndrydock rigging compact <Target> --include-file <file.md>\ndrydock rigging update <Target> [--dry-run]\ndrydock rigging verify <Target>\n\ndrydock document generate <Target> [--model <model>]\ndrydock document assemble <Target> [--theme <theme>]\ndrydock document <Target> [--model <model>] [--theme <theme>]\n\ndrydock publish <Source.md> --output <Output.html> [--theme <theme>] [--flatten] [--pdf]\ndrydock survey <Target> [--run] [--import <path>] [--command <name>] [--raw]\ndrydock prompt review <component>\ndrydock shipslog [--dir <path>] [--dry-run]\n```\n\nConfiguration keys:\n\n| Key | Environment override | Purpose |\n|---|---|---|\n`drydock_workspace` |\n`DRYDOCK_WORKSPACE` |\nWorkspace containing `targets/` and Drydock logs |\n`drydock_build_directory` |\n`DRYDOCK_BUILD_DIRECTORY` |\nRoot where generated applications are written |\n`drydock_model` |\n`DRYDOCK_MODEL` |\nDefault model for LLM-assisted commands |\n`llm_provider` |\n`LLM_PROVIDER` |\nSubscription CLI provider: `claude` or `codex` |\n`prompt_warn_tokens` |\n`PROMPT_WARN_TOKENS` |\nPrompt-size warning threshold in tokens |\n`quarterdeck_port` |\n`QUARTERDECK_PORT` |\nDefault QuarterDeck port |\n`shipslog_dir` |\n`DRYDOCK_SHIPSLOG_DIR` |\nShip's Log posts package directory for `drydock shipslog` |\n\nPublic hub and launch materials:\n\n[Web Cloud Studio](https://webcloudstudio.com)[Drydock GitHub repository](https://github.com/webcloudstudio/Drydock)[Canonical Drydock specification](https://webcloudstudio.com/project-docs/drydock/)[Launch deck and presentation](https://webcloudstudio.com/drydock/)[Launch video](https://webcloudstudio.com/project-docs/drydock/presentation/Drydock_Video.web.mp4)[Improving Step Accuracy in Specification-Driven Development](https://zenodo.org/records/21287574)\n\nRepository references:\n\n[Install Drydock](/webcloudstudio/Drydock/blob/main/docs/USER_INSTALLATION.md)[Drydock specification source](/webcloudstudio/Drydock/blob/main/docs/Drydock_Specification.md)[Rendered specification HTML](/webcloudstudio/Drydock/blob/main/docs/Drydock_Specification.html)[Rendered specification PDF](/webcloudstudio/Drydock/blob/main/docs/Drydock_Specification.pdf)[Launch script](/webcloudstudio/Drydock/blob/main/docs/presentation/script.md)[Talking points](/webcloudstudio/Drydock/blob/main/docs/presentation/talking_points.md)[Soundings readiness checklist](/webcloudstudio/Drydock/blob/main/docs/SOUNDINGS.md)[Sea Trials sample](/webcloudstudio/Drydock/blob/main/docs/SEA_TRIALS_SAMPLE.md)\n\nDevelopment and governance:\n\n[Contributing](/webcloudstudio/Drydock/blob/main/CONTRIBUTING.md)[Release process (maintainer runbook)](/webcloudstudio/Drydock/blob/main/docs/RELEASE_PROCESS.md)[Drydock skills](/webcloudstudio/Drydock/blob/main/docs/Drydock_SKILLS.md)[PyPI name reservation notes](/webcloudstudio/Drydock/blob/main/docs/PYPI_NAME_RESERVATION.md)[Launch distribution plan](/webcloudstudio/Drydock/blob/main/docs/presentation/distribution.md)\n\nInstall from a source checkout:\n\n```\ngit clone https://github.com/webcloudstudio/Drydock.git\ncd Drydock\nuv venv\nuv pip install -e \".[dev]\"\n```\n\nRun local verification:\n\n```\npython -m pytest\nruff check src/ tests/\nruff format --check src/ tests/\n```\n\nBuild release artifacts:\n\n```\npython -m hatchling build\n```\n\nAfter the editable install, run the installed console entry point against the source tree:\n\n```\ndrydock --help\n```\n\nDrydock 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.\n\nProvider handling is intentionally subscription-oriented:\n\n- API-key environment variables are not the intended execution path.\n- Claude and Codex are run through isolated command wrappers.\n- Build commands operate against the configured Target workspace and generated application directory.\n- Tests use injected runners and never require network or paid API access.\n\nSee the \"Drydock Security\" section in\n[docs/Drydock_Specification.md](/webcloudstudio/Drydock/blob/main/docs/Drydock_Specification.md#drydock-security) for the\ncurrent provider execution contracts.\n\nMIT - Copyright (c) 2026 Web Cloud Studio. See [LICENSE](/webcloudstudio/Drydock/blob/main/LICENSE).\n\n\"Drydock\" is a trademark of Web Cloud Studio; see [NOTICE](/webcloudstudio/Drydock/blob/main/NOTICE) for use\nof the name in forks and derivative works. See [CONTRIBUTORS.md](/webcloudstudio/Drydock/blob/main/CONTRIBUTORS.md)\nfor the project's contributors.", "url": "https://wpnews.pro/news/drydock-agile-tdd-spec-driven-delivery-initial-release", "canonical_source": "https://github.com/webcloudstudio/Drydock", "published_at": "2026-07-13 14:27:22+00:00", "updated_at": "2026-07-13 14:35:56.664573+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["Web Cloud Studio", "Drydock", "Claude", "Codex", "OpenAI", "Anthropic", "PyPI"], "alternates": {"html": "https://wpnews.pro/news/drydock-agile-tdd-spec-driven-delivery-initial-release", "markdown": "https://wpnews.pro/news/drydock-agile-tdd-spec-driven-delivery-initial-release.md", "text": "https://wpnews.pro/news/drydock-agile-tdd-spec-driven-delivery-initial-release.txt", "jsonld": "https://wpnews.pro/news/drydock-agile-tdd-spec-driven-delivery-initial-release.jsonld"}}