---
name: mcp-coldfusion-developer
description: Develop and debug CFML safely with linting, bridge inspection, log analysis, and post-fix validation handoffs. Use when the agent must inspect ColdFusion code, trace runtime errors, or validate a CFML change through docs, logs, and UI checks.
---

# MCP ColdFusion Developer

Skill specialistico per sviluppo e debugging CFML/ColdFusion su stack Platform. Usa `cf-node`, `linter-node` e, solo quando servono, sidecar per docs, browser, git/ticketing, database e office. Non e un orchestratore generalista.

## Scopo e Perimetro

Usa questa skill quando il lavoro principale e:

1. analizzare o modificare codice `.cfm` e `.cfc`;
2. diagnosticare errori runtime tramite lint, bridge e log;
3. guidare bootstrap o migrazione di pagine Platform;
4. classificare correttamente il boundary tra `core`, `client/core`, `client patch` e `cliente deploy` legacy;
5. validare fix CFML con controlli post-fix e handoff mirati.

Se il caso richiede soprattutto correlazione tra ticket, commit, documenti, allegati, database e piu sistemi, passa a `mcp-technical-analyst` o `mcp-master-orchestrator`.

## Regole Permanenti

1. **Audit di default**: esegui `lint_code` su file CFML in modalita sola analisi prima di esecuzione, fix o consegna.
2. **`fix: true` solo se esplicito**: non attivare fix automatici senza richiesta esplicita dell'utente o del task.
3. **`cf_bridge.evaluate` solo per ispezione pura**: consentito per espressioni, variabili, controlli mirati o introspezione; non usarlo per side effect come query, HTTP, scritture file o workflow applicativi.
4. **Compatibilita legacy**: preserva pattern consolidati e fallback legacy salvo richiesta esplicita contraria.
5. **Boundary Platform/legacy**: esempi di clienti deploy legacy non vanno promossi a standard Platform.
6. **Local-first**: usa prima i materiali inclusi nella skill; `docs-node` e' supporto opzionale di discovery o verifica, non prerequisito runtime.

## Knowledge Base Locale

Carica prima i riferimenti locali necessari al caso:

* [references/post-fix-checklist.md](references/post-fix-checklist.md) per checklist post-fix, log e handoff.
* [references/core-client-override-pattern.md](references/core-client-override-pattern.md) per estensioni `client` di componenti `core` e catena factory.
* [references/page-bootstrap-and-mvc4-migration.md](references/page-bootstrap-and-mvc4-migration.md) per nuove pagine da template e migrazioni `mvc3 -> mvc4`.
* [references/xgrid-and-mvc-variants.md](references/xgrid-and-mvc-variants.md) per varianti `MVC3`, `MVC3_XGRID`, `MVC4`.
* [references/client-boundaries-and-patches.md](references/client-boundaries-and-patches.md) per `core`, `client/core`, `client patch`.
* [references/factory-config-and-product-tree.md](references/factory-config-and-product-tree.md) per `clientfactory`, `cfg`, `json`, `cfgset` e perimetro product tree.
* [references/security-remediation-and-legacy-routing.md](references/security-remediation-and-legacy-routing.md) per remediation security e routing `cliente deploy` legacy.

Usa `mcp-docs-navigator` solo se:

1. manca un dettaglio non coperto dai reference locali;
2. devi verificare che il riferimento locale sia ancora coerente con la documentazione viva;
3. devi raccogliere evidenze aggiuntive per aggiornare successivamente la skill.

## Templates Locali Inclusi

Per bootstrap o confronto usa i template inclusi direttamente nella skill:

* `templates/shared/template.cfm`
* `templates/mvc3/ele.cfc`
* `templates/mvc3/ges.cfc`
* `templates/mvc3/testata.cfc`
* `templates/mvc3/cruscotto.cfc`
* `templates/mvc4/ele.cfc`
* `templates/mvc4/ges.cfc`
* `templates/mvc4/testata.cfc`
* `templates/mvc4/elegrid.cfc`
* `templates/client-core/zeroquattro/...`

Tratta questi file come materiale operativo locale per creare nuove pagine o riconoscere il pattern corretto, non come semplice archivio passivo.

## Routing Rapido per Scenario

### Nuova pagina da template

1. Carica `page-bootstrap-and-mvc4-migration.md`.
2. Usa i template locali sotto `templates/shared/`, `templates/mvc3/` o `templates/mvc4/`.
3. Raccogli i prerequisiti minimi: livello pagina, path pagina, path manager, tipologia pagina, versione manager, eventuale ramo product tree.
4. Mantieni la pagina `.cfm` come contenitore e sposta la logica nel manager `.cfc`.

### Migrazione `mvc3 -> mvc4`

1. Parti da `page-bootstrap-and-mvc4-migration.md`.
2. Confronta il manager corrente con i template `mvc3` e `mvc4`.
3. Verifica impatti su page title, product tree, dialoghi, visibilita e naming.
4. Se emerge anche una variante griglia, carica subito `xgrid-and-mvc-variants.md`.

### `xgrid`, `mvc3_xgrid`, `mvc4`

1. Carica `xgrid-and-mvc-variants.md`.
2. Classifica il caso prima di toccare il codice: `MVC3`, `MVC3_XGRID`, `MVC4`.
3. Controlla chiavi e identificativi richiesti come `pk_ids` e `row_id`.
4. Verifica metodi da rinominare, rimuovere o non reintrodurre in migrazione.

### `core` vs `client/core` vs `client patch`

1. Carica `client-boundaries-and-patches.md`.
2. Usa anche `core-client-override-pattern.md` quando devi derivare namespace o chain factory.
3. Distingui subito:
   * `core`: sviluppo standard Platform;
   * `client/core`: override o estensione cliente nel perimetro previsto;
   * `client patch`: correzione cliente deployata come patch, con workflow dedicato.
4. Per patch cliente ricorda due commit separati e niente squash.

### Factory, `cfg`, `json`, `cfgset`, GUI, product tree

1. Carica `factory-config-and-product-tree.md`.
2. Decidi se il cambiamento e di codice, configurazione file, `cfgset` o GUI prima di proporre modifiche.
3. Quando il caso tocca bootstrap o override client, verifica `clientfactory` e perimetro product tree.

### Security remediation

1. Carica `security-remediation-and-legacy-routing.md`.
2. Classifica se la remediation e applicativa, di configurazione server o di web server.
3. Copri in particolare XSS, XSRF/CSRF, encoding, cookie, header, upload e disclosure da debug/logging improprio.
4. Se servono evidenze multi-sorgente, passa a `mcp-technical-analyst`.

### `Cliente deploy` legacy

1. Tratta questi casi come legacy pre-Platform.
2. Usa gli esempi legacy solo come riferimento di deploy cliente, non come standard Platform.
3. Se il caso richiede ricostruzione storica o confronto con documentazione/ticket/commit, fai handoff a `mcp-technical-analyst`.

## Workflow Operativo Base

1. Inquadra lo scenario e carica i reference locali minimi.
2. Esegui `lint_code` in audit su file `.cfm` e `.cfc`.
3. Solo dopo il lint usa `cf_bridge` per ispezione mirata e `logs_list` / `logs_read` per ricostruire il problema runtime.
4. Se la modifica impatta UI, submit, frame o navigazione, pianifica validazione browser.
5. Chiudi con checklist post-fix, rischi residui e eventuale handoff.

## Sinergie Esplicite

* `mcp-docs-navigator`: discovery o verifica secondaria della documentazione quando i riferimenti locali non bastano.
* `mcp-browser-automation`: validazione UI, submit, frame, network e regressioni post-fix.
* `mcp-git-mantis-workflow`: collegamento tra regressioni, commit, ticket, patch e allegati.
* `mcp-technical-analyst`: casi multi-sorgente, gap analysis, ricostruzioni o scenari legacy complessi.
* `mcp-database-expert`: query, schema, piani o dubbi di confine tra problema CFML e problema SQL.
* `mcp-office-expert`: lettura o produzione di allegati Office/PDF utili al fix o all'handoff.

## Post-Fix e Validazione

Usa sempre [references/post-fix-checklist.md](references/post-fix-checklist.md) come standard minimo di chiusura. In particolare:

1. verifica lint e log dopo la modifica;
2. valida il percorso utente piu vicino al comportamento corretto;
3. esplicita eventuali handoff a browser/docs/git-ticketing;
4. non dichiarare risolto un problema UI senza almeno un controllo sul flusso reale o su un suo surrogato affidabile.

## Troubleshooting

* Se `cf_bridge` non risponde, controlla endpoint e `CF_MCP_TOKEN` nel `.env`.
* Se `evaluate` fallisce, riparti da lint e contesto di esecuzione prima di attribuire il problema al bridge.
* Se il fix sembra corretto ma la UI fallisce ancora, verifica frame, network, log e configurazione.
* Se manca `docs-node`, continua con reference e template locali inclusi nella skill.
