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:
- A working development environment - local or GitHub Codespaces
- Claude Code installed with the comind-dev plugin - setup guide
- Environment variables configured - environment variables
- At least one app installed in a development workspace (e.g. a task or ticket app)
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.
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_priorityfield to "Urgency level"
Claude will:
- Open
fields/index.ts - Find the field definition for
c_priority - Update the
captionproperty from its current value toUrgency level - Show you the exact change it made
The diff looks something like this:
{
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_notesfield from users who are not workspace admins
Claude will:
- Open (or create)
views/logic/index.ts - Add a
getInvisibleFieldsfunction that checks the current user's role - Return the field name when the condition is met
The generated code follows the standard view logic pattern:
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.
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:
- Open your development site in a browser (e.g.
https://your-org-dev.comindwork.com) - Navigate to the CRM workspace
- Open any record in the app
- Confirm the field caption now reads "Urgency level"
- Log in as a non-admin user and confirm that
c_internal_notesis 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
- Git workflow - commit your changes and understand the branch strategy
- Fields and field options - learn about data types and field configuration
- View logic - visibility, requiredness, and lifecycle hooks in depth
- Common mistakes - avoid frequent pitfalls when developing apps