# Dowel

**One binary for every command your Dart project needs.**

Scaffolding, code generation, transactional plugin installs, hot reload orchestration and a REPL, with an MCP server for your AI agent. If you know `php artisan`, you know the verbs.

## Install once. Command everything.

Every package invents its own install ritual and its own wrapper script. Dowel registers every command in one place and describes every plugin install in one protocol.

### One command registry

Packages register their commands in one binary, and collisions are caught at boot.

[Learn more about One command registry](https://anilcancakir.com/dowel/docs/commands/index.md)

### Plugin protocol

A plugin declares its install in `install.yaml`, with a fluent DSL when YAML is not enough.

[Learn more about Plugin protocol](https://anilcancakir.com/dowel/docs/plugins/authoring.md)

### Safe installs

Installs are idempotent and every change is recorded, so `plugin:uninstall` can undo it.

[Learn more about Safe installs](https://anilcancakir.com/dowel/docs/plugins/installer-dsl.md)

### Signature DSL

Declare a command as `'cmd:name {arg} {--flag}'`, the way you would in `php artisan`.

[Learn more about Signature DSL](https://anilcancakir.com/dowel/docs/reference/signature-dsl.md)

### Live VM hooks

`tinker`, `reload` and `hot-restart` drive the running Flutter VM directly.

[Learn more about Live VM hooks](https://anilcancakir.com/dowel/docs/commands/tinker.md)

### MCP server

A stdio server exposes the whole command surface to AI agents.

[Learn more about MCP server](https://anilcancakir.com/dowel/docs/mcp/overview.md)

## Your agent speaks Dowel.

The Dowel skill teaches your coding assistant the command and plugin conventions before the first line. One command wires it up.

```bash
npx skills add anilcancakir/ai --skill dowel
```

[other editors](https://github.com/anilcancakir/ai)

## And runs the commands itself.

Skills teach the conventions. The stdio MCP server gives your agent every registered command as a tool.

```bash
claude mcp add dowel -- dart run dowel mcp:serve
```

## Start building in seconds

```bash
dart pub add dowel
```

Or add to `pubspec.yaml`:

```yaml
dependencies:
  dowel: ^0.0.21
```

Or give your AI agent this prompt:

```text
Read https://anilcancakir.com/dowel/docs/llms.txt and install the Dowel package in this project.
```

## Docs

### Getting Started

- [Getting Started](https://anilcancakir.com/dowel/docs/getting-started/index.md)
- [Installation](https://anilcancakir.com/dowel/docs/getting-started/installation.md)
- [Quickstart](https://anilcancakir.com/dowel/docs/getting-started/quickstart.md)

### Commands

- [Commands](https://anilcancakir.com/dowel/docs/commands/index.md)
- [install](https://anilcancakir.com/dowel/docs/commands/install.md)
- [start](https://anilcancakir.com/dowel/docs/commands/start.md)
- [tinker](https://anilcancakir.com/dowel/docs/commands/tinker.md)
- [plugin:install](https://anilcancakir.com/dowel/docs/commands/plugin-install.md)
- [make:plugin](https://anilcancakir.com/dowel/docs/commands/make-plugin.md)
- [make:fast-cli](https://anilcancakir.com/dowel/docs/commands/make-fast-cli.md)
- [mcp:serve](https://anilcancakir.com/dowel/docs/commands/mcp-serve.md)

### MCP

- [MCP Integration Overview](https://anilcancakir.com/dowel/docs/mcp/overview.md)
- [MCP Server Setup](https://anilcancakir.com/dowel/docs/mcp/setup.md)
- [MCP Tool Reference](https://anilcancakir.com/dowel/docs/mcp/tool-reference.md)

### Plugins

- [Plugin Authoring Guide](https://anilcancakir.com/dowel/docs/plugins/authoring.md)
- [install.yaml Schema Reference](https://anilcancakir.com/dowel/docs/plugins/install-yaml.md)
- [PluginInstaller Fluent DSL](https://anilcancakir.com/dowel/docs/plugins/installer-dsl.md)

### Reference

- [Signature DSL](https://anilcancakir.com/dowel/docs/reference/signature-dsl.md)
