Skip to main content

AI-assisted app change

This tutorial walks you through modifying a Comind.work app using Claude Code with the apps-dev skill. You will change a field caption, add a visibility rule, and deploy the result - all through natural language instructions to Claude.

By the end you will have a working change deployed to a development workspace, and a clear picture of the describe-modify-deploy loop that makes AI-assisted development practical.

Prerequisites

Before starting, make sure you have:

Step 1: Open your project and invoke the skill

Open your app repository in Claude Code (the Desktop app, VS Code extension, or terminal). Then invoke the apps-dev skill on the app you want to modify:

/apps-dev app-org-task

Replace app-org-task with the folder name of your app. If you are not sure which apps are available, ask Claude:

What apps are in this repository?

Claude scans the app folder and reads its fields, actions, layouts, and settings. Once loaded, it understands the app's structure and can answer questions or make changes.

tip

If the slash command is not recognized, you can load the skill file directly:

@SKILL.md app-org-task

See Claude Code setup - working with skills for details.

Step 2: Change a field caption

Ask Claude to rename a field caption in plain language. For example:

Change the caption of the c_priority field to "Urgency level"

Claude will:

  1. Open fields/index.ts
  2. Find the field definition for c_priority
  3. Update the caption property from its current value to Urgency level
  4. Show you the exact change it made

The diff looks something like this:

fields/index.ts
{
caption: 'Urgency level', // was 'Priority'
name: 'c_priority',
type: 'lookup',
lookupName: 'c_priority_options',
},

Review the change. If it looks right, move on. If not, tell Claude what to adjust - it keeps the full context of the conversation.

Step 3: Add a visibility rule

Now ask Claude to add conditional field visibility:

Hide the c_internal_notes field from users who are not workspace admins

Claude will:

  1. Open (or create) views/logic/index.ts
  2. Add a getInvisibleFields function that checks the current user's role
  3. Return the field name when the condition is met

The generated code follows the standard view logic pattern:

views/logic/index.ts
import type { EntityFieldName } from '#typings';
import { entity } from '#typings';
import type { ViewLogic } from '@comind/api';

export default {
getInvisibleFields,
} satisfies ViewLogic<typeof entity>;

function getInvisibleFields() {
const fields: EntityFieldName[] = [];
if (!ComindView.currentUser.isWorkspaceAdmin) {
fields.push('c_internal_notes');
}
return fields;
}

If the file already exists with other view logic methods, Claude merges the new function into the existing export rather than overwriting it.

info

ComindView.currentUser provides the logged-in user's context at runtime. The isWorkspaceAdmin property is true when the user has admin rights in the current workspace. See view logic for all available methods and properties.

Step 4: Deploy and verify

Ask Claude to deploy the modified app to a development workspace:

Deploy this app to the CRM workspace

Claude runs the install command:

npx comind install app-org-task CRM

The output confirms whether the deployment succeeded. If this is the first time the app is installed in that workspace, the command both compiles and installs it. If the app was already installed, the workspace picks up the update automatically.

To verify your changes:

  1. Open your development site in a browser (e.g. https://your-org-dev.comindwork.com)
  2. Navigate to the CRM workspace
  3. Open any record in the app
  4. Confirm the field caption now reads "Urgency level"
  5. Log in as a non-admin user and confirm that c_internal_notes is hidden

Step 5: Iterate

AI-assisted development shines when you need to refine a change. Continue the conversation naturally:

Actually, make the internal notes visible to members of the Team group too

Claude updates the visibility condition to check for group membership alongside admin status, then you redeploy:

Deploy again to CRM

Each iteration follows the same loop: describe the change, review Claude's edit, deploy, verify. Because the skill keeps the app's full context loaded, Claude remembers previous changes and builds on them without losing track.

If something goes wrong, you can always ask Claude to revert:

Undo the last change to the visibility rule

All changes are local files in your repository until you commit and push.

What you learned

  • How to invoke the apps-dev skill on a specific app folder
  • How Claude reads and modifies app code - fields, view logic, and deployment
  • The describe-modify-deploy-verify cycle
  • How to iterate on changes through conversation
  • That all changes are local files you can review, commit, or revert before they reach production

Next steps