| name | full-feature |
| description | This skill should be used when the user wants to "build a complete feature", "create end-to-end functionality", "implement a full feature across all layers", "build feature with data model and automation", or needs a step-by-step recipe for building features that span the Data, Logic, and Interface layers of the Composable Stack. |
Full Feature Recipe
Step-by-step process for building features that span all layers of the Composable Stack: Data (PostgreSQL/NocoDB), Logic (n8n/Trigger.dev), and Interface (NocoBase/NocoDB).
Feature Development Process
Follow these steps in order for every new feature.
Step 1: Design Data Model (Data Layer)
- Define tables in PostgreSQL using
snake_case naming
- Include standard fields:
id, created_at, updated_at
- Define relations (foreign keys, junction tables)
- Create the tables using the
postgresql-external-dev plugin skills
- Alternatively, create tables directly using PostgreSQL MCP:
Tool: mcp__postgresql-mcp__execute_sql
Input: { "sql": "CREATE TABLE orders (id SERIAL PRIMARY KEY, title TEXT NOT NULL, status TEXT DEFAULT 'pending', created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now())" }
- Verify schema with PostgreSQL MCP:
Tool: mcp__postgresql-mcp__list_tables
Input: { "table_names": "orders" }
Verify the tables also appear in NocoDB:
Tool: mcp__nocodb__getTablesList
Step 2: Set Up NocoDB Views (Data Layer)
- Create appropriate NocoDB views (Grid, Form, Gallery, Kanban)
- Configure field visibility and ordering
- Set up filters for common queries
- Create shared views if external access is needed
Step 3: Build NocoBase Interface (Interface Layer)
Always build on the NocoBase dev instance first (${NOCOBASE_DEV_URL} / ${NOCOBASE_DEV_API_KEY}, also exposed through the nocobase-dev MCP server). The dev instance is a sandbox for new tables, fields, menus, pages, blocks, and UX — safe to break, fast to iterate.
- Create or sync NocoBase collections from the PostgreSQL tables on the dev instance
- Design form blocks for data entry
- Design table blocks for data display
- Add action buttons for triggering workflows
- Configure field permissions and validation rules
- Once validated, promote the schema and UI to the prod instance (
${NOCOBASE_URL}) via export/import or migration
Step 4: Create Automation Logic (Logic Layer)
Choose the appropriate service:
For n8n workflows (visual, short-running):
- Create webhook trigger or schedule trigger
- Build data transformation nodes
- Add NocoDB read/write operations
- Configure error handling
- Name:
[Domain] - [Action] - [Trigger]
For Trigger.dev tasks (durable, long-running):
- Create task file in
src/trigger/
- Define payload type and retry config
- Implement business logic
- Add NocoDB status updates
- Deploy with
npx trigger.dev deploy
Step 5: Connect the Layers
Wire up the integration points:
- Data → Logic: NocoDB webhook → n8n/Trigger.dev
- Interface → Logic: NocoBase button/workflow → n8n webhook
- Logic → Data: n8n/Trigger.dev → NocoDB MCP (read/write records)
- Logic → Data (direct): n8n HTTP Request → PostgREST API (REST CRUD)
- Logic → Data (SQL): Trigger.dev/n8n → PostgreSQL MCP
execute_sql (complex queries)
- Logic → Interface: n8n → NocoBase API (update UI state)
Step 6: Verify End-to-End
- Create a test record through NocoBase UI or NocoDB
- Verify the automation triggers
- Check the result in NocoDB
- Verify status updates in the interface
Feature Template
Use full-feature/template.md as a structured checklist for each new feature. Copy and fill in the placeholders.
Example: Order Processing Feature
| Step | Action | Service |
|---|
| 1 | Create orders table with fields | PostgreSQL |
| 2 | Set up Grid + Kanban views | NocoDB |
| 3 | Build order form and dashboard | NocoBase |
| 4 | Create payment processing workflow | n8n |
| 5 | Create PDF generation background task | Trigger.dev |
| 6 | Wire: new order → process payment → generate PDF → update status | All |
Best Practices
- Start with the data model — it's the foundation for everything
- Use NocoDB views for operational data access, NocoBase for admin UI
- Keep n8n workflows focused — one workflow per business process
- Use Trigger.dev for anything that needs retries or takes >30 seconds
- Document webhook URLs and task IDs in the project config
- Test each layer independently before wiring them together
- Include a
status field on records that participate in workflows