.cursor/skills/multi-script-scaffold/SKILL.md
Implements the Untitled Placeholder Technique for multi-script systems. Guides the developer through creating N placeholder scripts in FM, captures their IDs via Push Context, then generates all scripts with correct Perform Script wiring in one pass. Use when the user wants to scaffold a set of interdependent scripts. Triggers on phrases like "multi-script", "scaffold scripts", "placeholder technique", "untitled placeholder", or "build a script system".
npx skillsauth add petrowsky/agentic-fm multi-script-scaffoldInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implements the Untitled Placeholder Technique: create N placeholders → capture IDs → generate all scripts with correct wiring → deploy → rename.
If the developer has not already described the scripts to build, ask:
Build a simple dependency table, e.g.:
| # | Script Name | Calls | |---|---|---| | 1 | Process Invoice | Invoice - Validate, Invoice - Save | | 2 | Invoice - Validate | — | | 3 | Invoice - Save | — |
Confirm this with the developer before proceeding.
Read agent/CONTEXT.json. Extract:
solution — for resolving automation configscripts — check if any of the target scripts already exist (by name); if so, note their IDs — those scripts do NOT need placeholderscurrent_layout — for context during generationIdentify how many new placeholders are needed (exclude any scripts that already exist in CONTEXT.json).
Read agent/config/automation.json to determine the active deployment tier.
Tell the developer:
In FileMaker Script Workspace, click the + button N times. FileMaker will name each one
New Script. Before running Push Context, rename each placeholder to its final name:| New Script # | Rename to | |---|---| | 1st | Script Name A | | 2nd | Script Name B | | … | … |
Once all N scripts are renamed, run Push Context (Scripts menu → agentic-fm → Push Context) with the task description:
"Scaffold: [brief description]"Why rename first? FileMaker names every new script
New Script. Push Context keys scripts by name — if multiple scripts share the same name, only the last one's ID is captured.
Wait for the developer to confirm Push Context has run.
Confirm with the developer before proceeding:
I'll use AppleScript to create N placeholder scripts in the Script Workspace with their final names, then run Push Context automatically. Ready to proceed?
If confirmed, trigger placeholder creation via POST {companion_url}/trigger with:
{ "fm_app_name": "...", "script": "AGFMScriptBridge", "parameter": "{\"script\": \"...\", \"parameter\": \"...\"}" }
(Consult SKILL_INTERFACES.md for the full Tier 3 AppleScript path. At Tier 3, AppleScript creates scripts with their final names directly — no rename step needed.)
After the developer confirms Push Context has run, re-read agent/CONTEXT.json.
Locate the newly created Untitled, Untitled 2, … Untitled N scripts in the scripts object and extract their IDs.
Build the assignment map — which placeholder ID maps to which target script:
| Placeholder | ID | Will become | |---|---|---| | Untitled | 301 | Process Invoice | | Untitled 2 | 302 | Invoice - Validate | | Untitled 3 | 303 | Invoice - Save |
Confirm the mapping with the developer if there is any ambiguity (e.g. more Untitled scripts than expected).
With all IDs resolved, generate every script as fmxmlsnippet XML written to agent/sandbox/.
Naming convention: {Script Name}.xml (spaces replaced with underscores or hyphens, developer preference).
Rules:
<Script id="N" name="..."/> references in Perform Script steps.agent/docs/CODING_CONVENTIONS.md.python3 agent/scripts/validate_snippet.py agent/sandbox/<file>.xml before proceeding to deployment.Fix any validation errors before continuing.
Check webviewer availability:
curl -s --max-time 2 -o /dev/null -w "%{http_code}" http://localhost:8080
If reachable (HTTP 200), push each script as a preview payload:
curl -s -X POST http://local.hub:8765/webviewer/push \
-H "Content-Type: application/json" \
-d '{"type": "preview", "content": "<HR script text>"}'
Push scripts sequentially so the developer can review each in Monaco before deployment begins.
If not reachable, output each script in HR format to the terminal.
Deploy each script using agent/scripts/deploy.py, targeting its corresponding placeholder by script name.
Tier 1: For each script:
python3 agent/scripts/deploy.py agent/sandbox/<Script Name>.xml "<Placeholder Name>"
Present instructions in the standard format:
The script is on your clipboard. To install it:
- Open Untitled [N] in Script Workspace
- ⌘A — select all existing steps
- ⌘V — paste
Repeat for each script. Present all paste instructions up front so the developer can work through them in sequence without waiting.
Tier 2: deploy.py auto-pastes into each placeholder. Confirm success for each before moving to the next.
Tier 3: deploy.py handles everything. Report result per script.
Suggest running a context refresh after renaming to confirm all script IDs are correctly wired:
Once you've renamed all scripts, run Push Context again and I can verify the IDs match the wiring in the generated scripts.
development
Generate a complete web application inside a FileMaker Web Viewer — self-contained HTML/CSS/JS styled with the FM theme, plus companion FM bridge scripts for bidirectional data flow. Use when the developer says "web viewer", "webviewer app", "HTML in FileMaker", "build web viewer", or when the layout-design skill delegates to the web-first output path. Recommended for modern, responsive UI, complex interactions (drag-and-drop, charts, rich text), or solutions considering future migration off FileMaker.
development
Trace references to a FileMaker object across the entire solution. Supports usage reports ("where is this field used?"), impact analysis ("what breaks if I rename this?"), and dead object scans ("show unused fields/scripts"). Use when the developer says "trace", "find references", "where is X used", "impact of renaming", "unused fields/scripts", "dead code", "what references X", or "is X used anywhere".
development
Analyze a FileMaker solution and produce a structured profile covering data model, business logic, UI layer, integrations, and health metrics. Uses on-disk pre-processing to handle solutions of any size without sending raw XML through the agent. Use when the developer says "analyze solution", "solution overview", "solution analysis", "solution profile", "solution spec", "what does this solution do", "solution summary", or wants a high-level understanding of an entire FileMaker solution.
development
Interactive setup wizard for agentic-fm. Detects what's already configured, walks the user through each remaining step, and verifies completion before proceeding. Use when the developer says "help me set up", "setup", "get started", "onboard", "first time setup", "install agentic-fm", "configure agentic-fm", or is clearly new to the project and needs guidance.