# Build a create-read-update-delete surface that copies an existing one

Another entity given the same management surface as its siblings, copied rather than reinvented.

Category: Repetitive feature work
Source: https://letsship.ai/use-cases/build-a-crud-surface
Published: 2026-08-25

## Goal

Build a management surface for one entity, following an existing surface as the pattern.

## Acceptance criteria

- All four operations work and are covered by tests
- Permissions match the pattern of the surface it copies
- Validation and error handling match the existing conventions
- The test shape mirrors the reference surface

## What lands as proof

A test suite shaped like the reference surface's, which is what proves it was copied rather than improvised.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Build the {entity} management surface

Description: Build a management surface for one entity, following an existing surface as the pattern.

Acceptance criteria:
- All four operations work and are covered by tests
- Permissions match the pattern of the surface it copies
- Validation and error handling match the existing conventions
- The test shape mirrors the reference surface

Before you create the issue, pick the closest existing management surface in this repository as the reference and name it. Replace {entity}.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: build a management surface for one entity, following an existing surface as the pattern. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means the same test shape as the surface it copies, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.
