Skip to content

Add scaffold plugin type support#29

Merged
eric-tramel merged 1 commit intocodex/epic-15-plugin-tapfrom
codex/issue-22-scaffold-types
May 7, 2026
Merged

Add scaffold plugin type support#29
eric-tramel merged 1 commit intocodex/epic-15-plugin-tapfrom
codex/issue-22-scaffold-types

Conversation

@eric-tramel
Copy link
Copy Markdown
Contributor

What

Extends ddp new with a --type option for column-generator, seed-reader, and processor scaffolds. The default remains column-generator, and CLI help calls out that default.

The new seed-reader scaffold wires a FileSystemSeedSource config, FileSystemSeedReader implementation placeholder, seed_type discriminator, and PluginType.SEED_READER. The new processor scaffold wires ProcessorConfig, Processor, processor_type, and PluginType.PROCESSOR, with an unchanged process_after_batch placeholder.

The scaffolded README/docs now use plugin-type and entry-point wording for non-column-generator scaffolds, and the generated plugin docs index now labels package entry points as entry points instead of assuming all are column types.

Why

Plugin authors need the repo CLI to produce valid starter packages for all Data Designer plugin categories, not only column generators. Keeping this in the scaffold makes package shape, tap metadata, docs, tests, and entry-point wiring deterministic across plugin types.

Usage

uv run ddp new my-plugin
uv run ddp new my-plugin --type column-generator
uv run ddp new my-plugin --type seed-reader
uv run ddp new my-plugin --type processor

The default command creates the existing column-generator pattern. Seed readers get a TODO-only manifest placeholder that imports and validates without claiming production behavior. Processors get a pass-through process_after_batch placeholder and generated test text documenting the current Data Designer 0.5.7 processor validation gap.

How

Adds a small ScaffoldSpec model in devtools/ddp/src/ddp/scaffold.py to select type-specific config, implementation, plugin registration, test, README, docs, and next-step text. The unified CLI passes --type through to the scaffold module.

Adds golden scaffold coverage for file trees and important contents across all three plugin types, plus import/validation smoke coverage for generated packages. CLI tests cover default behavior, valid type parsing, invalid type errors, help text, and dispatch.

Validation

  • make sync
  • uv run pytest devtools/ddp/tests/test_cli.py devtools/ddp/tests/test_scaffold.py -q
  • uv run pytest devtools/ddp/tests/test_plugin_docs.py -q
  • uv run ruff check devtools/ddp/src/ddp/scaffold.py devtools/ddp/src/ddp/cli.py devtools/ddp/src/ddp/plugin_docs.py devtools/ddp/tests/test_scaffold.py devtools/ddp/tests/test_cli.py devtools/ddp/tests/test_plugin_docs.py
  • make lint
  • make check
  • make test-devtools
  • make validate

@eric-tramel eric-tramel requested a review from a team as a code owner May 7, 2026 19:42
@eric-tramel eric-tramel merged commit 77a2464 into codex/epic-15-plugin-tap May 7, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant