Agent Skills: PHP

MUST use when writing PHP scripts.

UncategorizedID: windmill-labs/windmill/write-script-php

Repository

windmill-labsLicense: NOASSERTION
16,266927

Install this agent skill to your local

pnpm dlx add-skill https://github.com/windmill-labs/windmill/tree/HEAD/system_prompts/auto-generated/skills/write-script-php

Skill Files

Browse the full folder contents for write-script-php.

Download Skill

Loading file tree…

system_prompts/auto-generated/skills/write-script-php/SKILL.md

Skill Metadata

Name
write-script-php
Description
MUST use when writing PHP scripts.

CLI Commands

Place scripts in a folder. After writing, tell the user they can run:

  • wmill generate-metadata - Generate .script.yaml and .lock files
  • wmill sync push - Deploy to Windmill

Do NOT run these commands yourself. Instead, inform the user that they should run them.

Use wmill resource-type list --schema to discover available resource types.

PHP

Structure

The script must start with <?php and contain at least one function called main:

<?php

function main(string $param1, int $param2) {
    return ["result" => $param1, "count" => $param2];
}

Resource Types

On Windmill, credentials and configuration are stored in resources and passed as parameters to main.

You need to redefine the type of the resources that are needed before the main function. Always check if the class already exists using class_exists:

<?php

if (!class_exists('Postgresql')) {
    class Postgresql {
        public string $host;
        public int $port;
        public string $user;
        public string $password;
        public string $dbname;
    }
}

function main(Postgresql $db) {
    // $db contains the database connection details
}

The resource type name has to be exactly as specified.

Library Dependencies

Specify library dependencies as comments before the main function:

<?php

// require:
// guzzlehttp/guzzle
// stripe/stripe-php@^10.0

function main() {
    // Libraries are available
}

One dependency per line. No need to require autoload, it is already done.