Migrate FileMaker fmscript skill
This commit is contained in:
1 parent
18a9a4cd67
commit
d677b26ded
20 files changed
+424
-24
No files matched your search
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: filemaker-fmscript
|
||||
description: Create, edit, review, or troubleshoot FileMaker `.fmscript` files that follow the open fmscript grammar and can be validated or converted with ai2fm. Use for complete FileMaker scripts, script fragments, ai2fm text, `.fmscript` syntax questions, script refactoring, and conversion-readiness reviews.
|
||||
---
|
||||
|
||||
# FileMaker fmscript
|
||||
|
||||
Create deterministic FileMaker script text without inventing FileMaker objects,
|
||||
business rules, script steps, or parameter syntax. The files in `examples/` are
|
||||
the authoritative catalog of permitted script steps and their fmscript format.
|
||||
|
||||
## Follow the applicable instructions
|
||||
|
||||
1. Read every applicable project `AGENTS.md` and any referenced script example.
|
||||
2. Treat project rules as authoritative for naming, indentation, file location,
|
||||
output style, supported FileMaker version, and required verification.
|
||||
3. Before generating or materially editing a script, read the relevant file or
|
||||
files in `examples/`. Use `rg` to find a step when its category is unclear.
|
||||
A script step is permitted only when its step name appears in this catalog.
|
||||
4. Copy the matching example's step name, brackets, parameter labels, label
|
||||
order, punctuation, and spacing exactly. Replace only its placeholders with
|
||||
confirmed project values. Do not infer omitted parameters or invent another
|
||||
parameter form from FileMaker knowledge, the grammar, or a similar step.
|
||||
5. Read [references/fmscript-0.90.md](references/fmscript-0.90.md) for
|
||||
language-level parsing and control-structure rules, but never use it to
|
||||
authorize a step or parameter form absent from `examples/`.
|
||||
6. Read [references/examples.md](references/examples.md) to select the right
|
||||
category file.
|
||||
7. Preserve established project conventions when they are compatible with the
|
||||
grammar. Report meaningful conflicts instead of silently choosing a format.
|
||||
|
||||
## Authoritative script-step catalog
|
||||
|
||||
Read the applicable category file directly; do not merge or rewrite its copied
|
||||
examples. Its lines are the source of truth for both step availability and
|
||||
format.
|
||||
|
||||
- [Accounts](examples/Accounts.fmscript)
|
||||
- [Artificial Intelligence](examples/Artificial%20Intelligence.fmscript)
|
||||
- [Control](examples/Control.fmscript)
|
||||
- [Editing](examples/Editing.fmscript)
|
||||
- [Fields](examples/Fields.fmscript)
|
||||
- [Files](examples/Files.fmscript)
|
||||
- [Found Sets](examples/Found%20Sets.fmscript)
|
||||
- [Miscellaneous](examples/Miscellaneous.fmscript)
|
||||
- [Navigation](examples/Navigation.fmscript)
|
||||
- [Open Menu Item](examples/Open%20Menu%20Item.fmscript)
|
||||
- [Records](examples/Records.fmscript)
|
||||
- [Spelling](examples/Spelling.fmscript)
|
||||
- [Windows](examples/Windows.fmscript)
|
||||
|
||||
If no matching example exists, do not emit a substitute script step. Explain
|
||||
that the catalog has no approved format for it and request a copied example or
|
||||
permission to extend the catalog. Comments, blank lines, and calculation
|
||||
continuation indentation are not script steps; preserve the project's existing
|
||||
style for them.
|
||||
|
||||
## Establish the script semantics
|
||||
|
||||
- Confirm the affected FileMaker tables, table occurrences, fields, layouts,
|
||||
scripts, value lists, custom functions, privileges, and relationships from
|
||||
project sources or a supplied FileMaker export.
|
||||
- Preserve existing behavior, error handling, and supported FileMaker version.
|
||||
- Separate confirmed behavior from proposed logic.
|
||||
- Ask a concise question when a required business rule or object is missing.
|
||||
- Never manufacture an uncertain script step, parameter form, field reference,
|
||||
function, object name, or relationship path.
|
||||
|
||||
## Generate or edit the script
|
||||
|
||||
- For a script-generation request, return only the script text without
|
||||
Markdown fences or explanation unless the user requests otherwise.
|
||||
- Include concise section comments, blank lines, and readable multiline
|
||||
calculations unless the user requests a minimal script.
|
||||
- Use the catalog's English step name and exact parameter form, unless the
|
||||
project supplies an explicit approved localized equivalent.
|
||||
- Emit one logical script step per line. Keep multiline calculations and
|
||||
multiline comment steps intact.
|
||||
- For ai2fm output, keep script-step lines flush left, including steps inside
|
||||
control blocks. Indent only continuation lines inside a multiline parameter
|
||||
or calculation when it improves readability.
|
||||
- Use complete matching closing steps for control blocks.
|
||||
- Preserve inline comments inside calculation bodies.
|
||||
- Retain disabled steps unless the requested change explicitly removes them.
|
||||
- Preserve a different established project indentation convention when the
|
||||
project supplies a known-good ai2fm export that requires it.
|
||||
- Save complete scripts only when the user or project instructions authorize a
|
||||
file change, using the required project location and filename.
|
||||
|
||||
## Verify conversion readiness
|
||||
|
||||
1. Check the script against the grammar checklist in the reference.
|
||||
2. Compare every emitted step and parameter form with its source line in the
|
||||
applicable `examples/` file.
|
||||
3. Validate with ai2fm when that workflow is available.
|
||||
4. If deterministic validation is unavailable, identify the unverified step or
|
||||
variant instead of claiming that the script will round-trip.
|
||||
@@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "FileMaker fmscript"
|
||||
short_description: "Generate and review valid FileMaker scripts"
|
||||
default_prompt: "Use $filemaker-fmscript to create or review a valid FileMaker .fmscript script."
|
||||
@@ -0,0 +1,6 @@
|
||||
Add Account [ Privilege Set: <unknown> ]
|
||||
Change Password [ With dialog: On ]
|
||||
Delete Account []
|
||||
Enable Account [ Activate ]
|
||||
Re-Login [ With dialog: Off ; Current File ]
|
||||
Reset Account Password []
|
||||
@@ -0,0 +1,14 @@
|
||||
Configure AI Account [ Account Name: ; Model Provider: OpenAI ; API key: ]
|
||||
Configure Machine Learning Model [ Operation: Unload ; Name: ]
|
||||
Configure Prompt Template [ Template Name: ; Model Provider: OpenAI ; Template Type: SQL Query ]
|
||||
Configure RAG Account [ RAG Account Name: ; Endpoint: ; API key: ]
|
||||
Configure Regression Model [ Action: Train Model ; Model Name: ; Algorithm: Random Forest ]
|
||||
Fine-Tune Model [ Account Name: ; Base Model: ; Training Data: Table ]
|
||||
Generate Response from Model [ Account Name:; Model:; User Prompt:; Agentic mode:On; Response:; Stream:Off ]
|
||||
Insert Embedding [ Account Name: ; Embedding Model: ]
|
||||
Insert Embedding in Found Set [ Account Name: ; Embedding Model: ]
|
||||
Perform Find by Natural Language [ Account Name:; Model:; Prompt:; Get: Found Set ]
|
||||
Perform RAG Action [ RAG Account Name: ; Space ID: ; Action: Add Data ; RAG Data: From Text ; ]
|
||||
Perform Semantic Find [ Query by: Natural language ; Account Name: ; Embedding Model: ; Text: ; Record set: All records ]
|
||||
Perform SQL Query by Natural Language [ Account Name: ; Model: ; Prompt: ; Options specified: From list ; Action: Query ; Data Tables: From list ; [ ] ; Stream: Off ]
|
||||
Set AI Call Logging [ Off ; Verbose: Off ]
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
Allow User Abort [ Off ]
|
||||
|
||||
Open Transaction []
|
||||
Set Revert Transaction on Error [ Off ]
|
||||
Revert Transaction []
|
||||
Commit Transaction
|
||||
|
||||
Configure Local Notification [ Action: Queue ]
|
||||
Configure NFC Reading [ Action: Read ]
|
||||
Configure Region Monitor Script [ Monitor: iBeacon ]
|
||||
|
||||
If [ ]
|
||||
Else If [ ]
|
||||
Else
|
||||
End If
|
||||
|
||||
Loop [ Flush type: Always ]
|
||||
Exit Loop If [ True ]
|
||||
End Loop
|
||||
|
||||
Install OnTimer Script [ “” ]
|
||||
|
||||
Pause/Resume Script [ Indefinitely ]
|
||||
|
||||
Perform Script [ "" ; Specified: From list ; Parameter: ]
|
||||
Perform Script on Server [ "" ; Specified: From list ; Parameter: ; Wait for completion: On ]
|
||||
Perform Script on Server with Callback [ "" ; Specified: From list ; Parameter: ; Callback script specified: From list ; "" ; State: “Continue” ]
|
||||
|
||||
Set Error Capture [ On ]
|
||||
Set Error Logging [ Off ]
|
||||
Set Layout Object Animation [ On ]
|
||||
Set Variable []
|
||||
Trigger Claris Connect Flow [ Flow: <unknown> ; JSON Data: ]
|
||||
|
||||
Exit Script [ Result: ]
|
||||
Halt Script
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
Clear [ Select ]
|
||||
Copy [ Select ]
|
||||
Cut [ Select ]
|
||||
Paste [ Select ; No style ]
|
||||
Perform Find/Replace [ With dialog: On ; Search operation: Find Next ; Search settings: Forward ; Search across: All records/requests ; Search within: All fields ]
|
||||
Select All
|
||||
Set Selection []
|
||||
Undo/Redo [ Undo ]
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
Export Field Contents [ Create folders: On ]
|
||||
Insert Audio/Video []
|
||||
Insert Calculated Result [ Select ]
|
||||
Insert Current Date [ Select ]
|
||||
Insert Current Time [ Select ]
|
||||
Insert Current User Name [ Select ]
|
||||
Insert File [ Dialog options: Off ]
|
||||
Insert from Device [ Type: Camera; Camera: Back; Resolution: Full; Flash: Auto ]
|
||||
Insert from Index [ Select ]
|
||||
Insert from Last Visited [ Select ]
|
||||
Insert from URL [ Select ; With dialog: Off ]
|
||||
Insert PDF []
|
||||
Insert Picture []
|
||||
Insert Text [ Select ]
|
||||
Relookup Field Contents [ With dialog: Off ; :: ]
|
||||
Replace Field Contents [ With dialog: Off ]
|
||||
Set Field []
|
||||
Set Field By Name []
|
||||
Set Next Serial Value []
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Close Data File [ File ID: ]
|
||||
Close File [ Current File ]
|
||||
Convert File [ With dialog: On ]
|
||||
Create Data File [ "" ; Create folders: On ]
|
||||
Delete File [ Target file: ]
|
||||
Get Data File Position [ File ID: ; Target: ]
|
||||
Get File Exists [ "" ; Target: ]
|
||||
Get File Size [ "" ; Target: ]
|
||||
New File
|
||||
Open Data File [ "" ; Target: ]
|
||||
Open File [ Open hidden: Off ; <unknown> ]
|
||||
Print [ With dialog: Off ]
|
||||
Print Setup [ With dialog: Off ]
|
||||
# ⚠️ Warning: the Amount (bytes) value is not in this copy — FileMaker left it out when the step was copied, even though the step still holds it.
|
||||
# Re-enter the Amount here and paste the step back into FileMaker: that repairs the step for good — copy it again afterwards and the value stays.
|
||||
Read from Data File [ Target: ; Read as: Bytes ]
|
||||
Recover File [ With dialog: Off ]
|
||||
Rename File [ Source file: "" ; New name: ]
|
||||
Save a Copy as [ copy of current file ; Create folders: On ]
|
||||
Save a Copy as XML [ Window name: ; Destination file: “” ]
|
||||
# ⚠️ Warning: check the New position value — FileMaker 2026 may have dropped it on copy; re-enter it here if it was set.
|
||||
Set Data File Position [ ]
|
||||
Set Multi-User [ On ]
|
||||
Set Use System Formats [ On ]
|
||||
Write to Data File [ File ID: ; Data source: ; Write as: UTF-16 ; Append line feed: On ]
|
||||
@@ -0,0 +1,13 @@
|
||||
Constrain Found Set []
|
||||
Extend Found Set []
|
||||
Find Matching Records [ Replace ]
|
||||
Modify Last Find
|
||||
Omit Multiple Records [ With dialog: Off ]
|
||||
Omit Record
|
||||
Perform Find []
|
||||
Perform Quick Find []
|
||||
Show All Records
|
||||
Show Omitted Only
|
||||
Sort Records [ With dialog: Off ]
|
||||
Sort Records by Field [ Ascending ]
|
||||
Unsort Records
|
||||
@@ -0,0 +1,32 @@
|
||||
|
||||
Allow Formatting Bar [ Off ]
|
||||
AVPlayer Play [ Object Name: <Active Object> ]
|
||||
AVPlayer Set Options []
|
||||
AVPlayer Set Playback State [ Stopped ]
|
||||
Beep
|
||||
Dial Phone [ With dialog: Off ]
|
||||
Enable Touch Keyboard [ On ]
|
||||
Execute FileMaker Data API [ Select ]
|
||||
Execute SQL [ With dialog: Off ]
|
||||
Exit Application
|
||||
Flush Cache to Disk
|
||||
Get Folder Path []
|
||||
Install Menu Set [ “[Standard FileMaker Menus]” ; Use as file default: Off ]
|
||||
Install Plug-In File []
|
||||
Open URL [ With dialog: Off ]
|
||||
Perform AppleScript [ ]
|
||||
Perform JavaScript in Web Viewer [ Object Name: <Active Object> ]
|
||||
Refresh Object []
|
||||
Refresh Portal []
|
||||
Save a Copy as Add-on Package [ Window name: ; Replace UUIDs: Off ]
|
||||
Send DDE Execute [ ]
|
||||
Send Event [ Event Class: “”; Event ID: “” ; Bring target application to foreground: Off ; Wait for event completion: Off ; Copy event result to clipboard: Off ]
|
||||
|
||||
Send Mail [ Send via E-mail Client ; With dialog: Off ; To: $to ; CC: $cc ; BCC: $bcc ; Subject: $subject ; Message: $message ; Attachments: "$attachmentFilePathList" ]
|
||||
Send Mail [ Send via SMTP Server ; With dialog: Off ; To: $to ; CC: $cc ; BCC: $bcc ; Subject: $subject ; Message: $message ; Attachments: "$attachmentFilePathList" ; Name: $name ; Email Address: $from ; Reply-To Address: $replyTo ; SMTP Server: $smtp ; Port: 587 ; Use TLS ; Authentication Type: Plain Password ; User Name: $username ; Password: $password ]
|
||||
Send Mail [ Send via OAuth 2.0 ; With dialog: Off ; To: $to ; CC: $cc ; BCC: $bcc ; Subject: $subject ; Message: $message ; Attachments: "$attachmentFilePathList" ; OAuth 2.0 Provider: Google ; Name: $name ; Reply-To Address: $replyTo ; Email Address: $from ; Service Account Email: $serviceAccountEmail ; Admin User Email: $adminUserEmail ; Private Key: $privateKey ]
|
||||
|
||||
Set Session Identifier []
|
||||
Set Web Viewer [ Action: Reset ]
|
||||
Show Custom Dialog []
|
||||
Speak [ Text: ; Wait for completion: On ]
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
|
||||
Close Popover
|
||||
Enter Browse Mode [ Pause: Off ]
|
||||
Enter Find Mode [ Pause: On ]
|
||||
Enter Preview Mode [ Pause: Off ]
|
||||
Go to Field []
|
||||
Go to Layout [ original layout ]
|
||||
Go to List of Records [ List of record IDs: ; Using layout: <Current Layout> ]
|
||||
Go to Next Field
|
||||
Go to Object []
|
||||
Go to Portal Row [ Select: Off ; First ]
|
||||
Go to Previous Field
|
||||
Go to Record/Request/Page [ First ]
|
||||
Go to Record/Request/Page [ Next ; Exit after last: On ]
|
||||
Go to Related Record [ From table: ""; Using layout: "" () ]
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Open Edit Saved Finds
|
||||
Open Favorites
|
||||
Open File Options
|
||||
Open Find/Replace
|
||||
Open Help
|
||||
Open Hosts
|
||||
Open Manage Containers
|
||||
Open Manage Data Sources
|
||||
Open Manage Database
|
||||
Open Manage Layouts
|
||||
Open Manage Themes
|
||||
Open Manage Value Lists
|
||||
Open Script Workspace
|
||||
Open Settings
|
||||
Open Sharing
|
||||
Open Upload to Host
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
Commit Records/Requests [ With dialog: Off ]
|
||||
Copy All Records/Requests
|
||||
Copy Record/Request
|
||||
Delete All Records [ With dialog: On ]
|
||||
Delete Portal Row [ With dialog: On ]
|
||||
Delete Record/Request [ With dialog: On ]
|
||||
Duplicate Record/Request
|
||||
Export Records [ With dialog: Off ; Create folders: On ]
|
||||
Import Records [ With dialog: Off ]
|
||||
New Record/Request
|
||||
Open Record/Request
|
||||
Revert Record/Request [ With dialog: Off ]
|
||||
Save Records as Excel [ With dialog: Off ; Create folders: On ]
|
||||
Save Records as JSONL [ Format for fine-tuning: Off ; Create folders: Off ]
|
||||
Save Records as PDF [ Save to: File ; Create folders: On ; With dialog: Off ]
|
||||
Save Records as Snapshot Link [ Records being browsed ; Create folders: On ]
|
||||
Truncate Table [ With dialog: On ; Table: “<Current Table>” ]
|
||||
@@ -0,0 +1,8 @@
|
||||
Check Found Set
|
||||
Check Record
|
||||
Check Selection [ Select ]
|
||||
Correct Word
|
||||
Edit User Dictionary
|
||||
Select Dictionaries
|
||||
Set Dictionary [ Spelling Language: US English ]
|
||||
Spelling Options
|
||||
@@ -0,0 +1,15 @@
|
||||
Adjust Window [ Resize to Fit ]
|
||||
Arrange All Windows [ Tile Horizontally ]
|
||||
Close Window [ Current Window ]
|
||||
Freeze Window
|
||||
Move/Resize Window [ Current Window ]
|
||||
New Window [ Style: Document; Name: ; Using layout: "" (""); Height: ; Width: ; Top: ; Left: ; Close: Yes; Minimize: Yes; Maximize: Yes; Resize: Yes; Menu Bar: No; Dim parent window: No; Toolbars: No ]
|
||||
Refresh Window []
|
||||
Scroll Window [ Home ]
|
||||
Select Window [ Current Window ]
|
||||
Set Window Title [ Current Window ]
|
||||
Set Zoom Level [ Lock: Off ; 100% ]
|
||||
Show/Hide Menubar [ Lock: Off ; Hide ]
|
||||
Show/Hide Text Ruler [ Show ]
|
||||
Show/Hide Toolbars [ Include Edit Record Toolbar ; Hide ]
|
||||
View As [ Cycle ]
|
||||
@@ -0,0 +1,25 @@
|
||||
# `.fmscript` script-step examples
|
||||
|
||||
The `examples/` directory is the authoritative catalog for this skill. Each
|
||||
file contains copied fmscript lines grouped by FileMaker category. A step may
|
||||
be generated only if it appears there, and its line is the required template
|
||||
for its fmscript form.
|
||||
|
||||
| Category | Source file |
|
||||
| --- | --- |
|
||||
| Accounts | [`examples/Accounts.fmscript`](../examples/Accounts.fmscript) |
|
||||
| Artificial Intelligence | [`examples/Artificial Intelligence.fmscript`](../examples/Artificial%20Intelligence.fmscript) |
|
||||
| Control | [`examples/Control.fmscript`](../examples/Control.fmscript) |
|
||||
| Editing | [`examples/Editing.fmscript`](../examples/Editing.fmscript) |
|
||||
| Fields | [`examples/Fields.fmscript`](../examples/Fields.fmscript) |
|
||||
| Files | [`examples/Files.fmscript`](../examples/Files.fmscript) |
|
||||
| Found Sets | [`examples/Found Sets.fmscript`](../examples/Found%20Sets.fmscript) |
|
||||
| Miscellaneous | [`examples/Miscellaneous.fmscript`](../examples/Miscellaneous.fmscript) |
|
||||
| Navigation | [`examples/Navigation.fmscript`](../examples/Navigation.fmscript) |
|
||||
| Open Menu Item | [`examples/Open Menu Item.fmscript`](../examples/Open%20Menu%20Item.fmscript) |
|
||||
| Records | [`examples/Records.fmscript`](../examples/Records.fmscript) |
|
||||
| Spelling | [`examples/Spelling.fmscript`](../examples/Spelling.fmscript) |
|
||||
| Windows | [`examples/Windows.fmscript`](../examples/Windows.fmscript) |
|
||||
|
||||
Do not treat this index as a second set of examples. Read the matching source
|
||||
file before using a step.
|
||||
@@ -0,0 +1,63 @@
|
||||
# `.fmscript` 0.90 grammar reference
|
||||
|
||||
Source: <https://fmscript.org/spec.html>
|
||||
|
||||
This is a concise working reference to the public 0.90 grammar overview. The
|
||||
published page is not yet the complete script-step catalogue. When a particular
|
||||
step or parameter variant is uncertain, use a known-good FileMaker/ai2fm export
|
||||
or validate it with ai2fm; do not infer syntax from another step.
|
||||
|
||||
## Core grammar
|
||||
|
||||
- Give a parameterized script step exactly one bracket group containing all of
|
||||
its parameters.
|
||||
- Do not add brackets to a step with no parameters.
|
||||
- Separate main arguments inside the brackets with a semicolon followed by a
|
||||
space. Do not use a comma as the main argument separator.
|
||||
- Use `# ` for a FileMaker comment step.
|
||||
- Continue the same multiline comment step with `#>`.
|
||||
- Use `// ` before a script step to represent a disabled step.
|
||||
- Preserve `//` and `/* */` comments that occur inside FileMaker calculations.
|
||||
- Qualify field references with their table occurrence, for example
|
||||
`Customers::Name`. Do not emit a bare `::Name` reference.
|
||||
- Prefix a local variable with one `$` and a global variable with exactly `$$`.
|
||||
- Keep simple steps on one line.
|
||||
- Preserve multiline calculations and determine their boundary using the known
|
||||
step name, balanced brackets, and continuation structure.
|
||||
|
||||
## Representative forms
|
||||
|
||||
```text
|
||||
Show All Records
|
||||
Set Field [ Customers::Name ; "Ada" ]
|
||||
Set Variable [ $name ; Value: Customers::Name ]
|
||||
Perform Script [ Specified:From list; "Normalize Customer"; Parameter: $name ]
|
||||
```
|
||||
|
||||
```text
|
||||
# Prepare the payload
|
||||
Set Variable [ $payload ; Value: JSONSetElement (
|
||||
"{}" ;
|
||||
[ "id" ; Customers::ID ; JSONString ]
|
||||
) ]
|
||||
```
|
||||
|
||||
The exact parameter labels and internal punctuation belong to the individual
|
||||
FileMaker step definition. Verify them rather than generalizing from these
|
||||
representative forms.
|
||||
|
||||
## Review checklist
|
||||
|
||||
- Use an exact, supported FileMaker step name.
|
||||
- Give each parameterized step one balanced outer bracket group.
|
||||
- Keep calculation parentheses and internal brackets balanced.
|
||||
- Use semicolons for main arguments.
|
||||
- Fully qualify every field reference.
|
||||
- Use `$` and `$$` variables correctly.
|
||||
- Close every structured block with the complete matching FileMaker closing
|
||||
step.
|
||||
- Preserve comment steps, disabled steps, and calculation comments correctly.
|
||||
- Preserve multiline calculation boundaries.
|
||||
- Apply the project's formatting, naming, path, and output-only requirements.
|
||||
- Validate uncertain or version-specific syntax through ai2fm or a known-good
|
||||
export before describing the script as round-trip ready.
|
||||
Reference in new issue
Block a user