Skip to content
Agentmart
Submit a tool

schema-to-service

End-to-end pipeline for adding a new entity to Maslow

Skill by twlines

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/twlines-schema-to-service

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

End-to-end pipeline for adding a new entity to Maslow

Use cases: data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/schema-to-service

What's inside

Skill name
schema-to-service
Description
End-to-end pipeline for adding a new entity to Maslow
License
MIT
Instructions
61 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Schema-to-Service Pipeline

When adding a new entity (e.g., "campaigns", "templates"), follow this 5-file pipeline in order.

## Step 1: Shared Types (`packages/shared/src/types/index.ts`)
```typescript
export interface Campaign {
  id: string
  projectId: string
  name: string
  description: string
  createdAt: number
  updatedAt: number
}
```

## Step 2: Database Schema (`src/services/AppPersistence.ts`)

Add table creation in the schema init block:
```sql
CREATE TABLE IF NOT EXISTS campaigns (
  id TEXT PRIMARY KEY,
  project_id TEXT NOT NULL,
  name TEXT NOT NULL,
  description TEXT DEFAULT '',
  created_at INTEGER NOT NULL,
  updated_at INTEGER NOT NULL,
  FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_campaigns_project ON campaigns(project_id);
```

Add prepared statements to `stmts`:
```typescript
getCampaigns: db.prepare(`SELECT * FROM campaigns WHERE project_id = ? ORDER BY created_at DESC`),
getCampaign: db.prepare(`SELECT * FROM campaigns WHERE id = ?`),
createCampaign: db.prepare(`INSERT INTO campaigns (id, project_id, name, description, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)`),
updateCampaign: db.prepare(`UPDATE campaigns SET name = COALESCE(?, name), description = COALESCE(?, description), updated_at = ? WHERE id = ?`),
deleteCampaign: db.prepare(`DELETE FROM campaigns WHERE id = ?`),
```

Add service methods that wrap stmts in `Effect.sync()`.

## Step 3: API Routes (`src/services/AppServer.ts`)

Add CRUD routes following the existing pattern:
- `GET /api/projects/:id/campaigns` — list
- `POST /api/projects/:id/campaigns` — create
- `GET /api/campaigns/:id` — detail
- `PUT /api/campaigns/:id` — update
- `DELETE /api/campaigns/:id` — delete

## Step 4: Tests (`src/__tests__/`)

Test the service methods with a test layer providing AppPersistence.

## Step 5: Verify

Run the full gate: `npm run type-check && npm run lint && npm test -- --run`

From twlines/maslow, MIT.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Feb 14, 2026 (8 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from twlines

Cite this page

schema-to-service skill. Agent Mart. https://agentmart.dev/skills/twlines-schema-to-service (last updated 2026-10-24)