amphp

Writing non-blocking, async PHP code using the AMPHP framework — revolt/event-loop, amphp/amp ^3, and the full amphp/* ecosystem (http-server, http-client, w...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 118 · 0 current installs · 0 all-time installs
bySergey Krupkin@rekryt
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (AMPHP v3 async PHP) match the provided SKILL.md, README, docs, examples and workflows. The skill does not request unrelated credentials, binaries, or config paths; the large set of docs/examples is appropriate for a coding-assistant skill of this scope.
Instruction Scope
SKILL.md focuses on editing/authoring PHP code and loading only the listed docs/templates. It does not instruct the agent to read system credentials or unrelated files. It does list allowed-tools including Bash and Agent (so the agent may run shell commands or call other agents) — this is reasonable for a coding helper (composer commands, running tests) but is broader than pure read/edit and worth being aware of.
Install Mechanism
No install spec and no code files that execute on install — this is an instruction/doc-only skill. No downloads, formulas, or archive extraction are present.
Credentials
The skill declares no required environment variables, credentials, or config paths. The content references composer require examples (normal for PHP) but does not demand secrets or unrelated service tokens.
Persistence & Privilege
always:false and no requests to modify other skills or system-wide agent configuration. Model/agent invocation is allowed (platform default) but there are no additional privileged settings.
Assessment
This skill is documentation/instruction-only and appears consistent with its stated purpose (teaching/generating AMPHP v3 code). Before installing, consider: (1) confirm you trust the skill source (README references a GitHub repo), (2) if you grant the agent Bash or Agent permissions, be aware it could run shell commands such as composer require or tests — only enable those tools if you want the agent to run commands in your environment, and (3) review any templates or example code you plan to run, and run composer commands yourself rather than letting an agent run them automatically if you have network/security concerns.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk976tsyqfqjr5ah84kpndz0p6h82pwcy

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

AMPHP v3 Skill

Version

This skill covers AMPHP v3 onlyamphp/amp ^3, revolt/event-loop ^1, PHP 8.1+.

If you see v2 patterns (yield $promise, Amp\Loop::run(), Promise, Coroutine), treat them as wrong and rewrite using v3 equivalents. See docs/v2-v3.md for the full migration table.


Non-Negotiable Rules

These apply to every file you write or modify in an AMPHP project:

  • Always add declare(strict_types=1) at the top of every PHP file.
  • Always pass JSON_THROW_ON_ERROR to every json_encode / json_decode call.
  • Never use blocking I/O (file_get_contents, PDO, curl_exec, sleep) inside the event loop — use async equivalents from amphp/file, amphp/mysql, amphp/http-client, Amp\delay().
  • Always release mutex/semaphore locks in a finally block — exceptions skip cleanup otherwise.
  • Always buffer() or fully iterate HTTP response bodies — unread bodies block connection reuse.

For the full list of 19+ documented gotchas (buffer deadlocks, channel EOF, arrow function capture, Redis factory vs constructor, etc.), read docs/common-mistakes.md before writing async code.


Reference Files

Load only the file(s) relevant to the task. Do not load all files at once.

Docs

FileWhen to load
docs/constructors.mdInstantiating any AMPHP class — verified constructor signatures, param names, defaults, and factory methods
docs/namespaces.mdWriting use imports — complete namespace paths for every class, function, and enum
docs/packages.mdStarting a new project or adding a dependency — composer require commands and package overview
docs/common-mistakes.mdBefore writing any async code — 19+ real bugs with wrong/correct examples
docs/v2-v3.mdMigrating from AMPHP v2 or encountering yield/Promise/Coroutine patterns

Examples

FileWhen to load
examples/core-async.mdEventLoop bootstrap, async(), delay(), Future combinators (await, awaitAll, awaitAny), DeferredFuture
examples/cancellation.mdTimeoutCancellation, DeferredCancellation, CompositeCancellation, propagating cancellation
examples/sync.mdLocalMutex, LocalSemaphore, LocalParcel, Barrier, LocalKeyedMutex, RateLimitingSemaphore, synchronized()
examples/http-server.mdMinimal server, Router with route params, Middleware stack, TLS, Sessions, Static files, proxy setup
examples/http-client.mdGET/POST, parallel requests, ConnectionLimitingPool, interceptors, proxy, streaming response body
examples/websocket.mdEcho server, push-only with drain pattern, broadcast gateway, WS client, streaming binary messages
examples/byte-stream.mdReadableBuffer, pipe(), GZIP compress/decompress, Base64 encode/decode, splitLines()
examples/pipelines.mdQueue back-pressure, Pipeline operators (map, filter, tap), concurrent(), merge(), concat()
examples/parallel.mdTask interface, fan-out with worker pool, IPC Channel progress reporting, ChannelException handling
examples/database.mdMySQL connection pool, transactions, prepared statements; Redis get/set/hash/pubsub/cache
examples/file-io.mdFile\read/write/exists/getSize/openFile/listFiles/deleteDirectory/createDirectoryRecursively
examples/cache.mdLocalCache (LRU + TTL), AtomicCache (compute-if-absent), PrefixCache, NullCache
examples/interval.mdInterval repeating timer, enable/disable, weakClosure() to prevent GC cycles, EventLoop::delay/repeat/cancel
examples/testing.mdAsyncTestCase, constructing mock Request objects, League\Uri\Http::new(), phpunit CLI flags

Workflows

FileWhen to load
workflows/http-server-full.mdBuilding a complete HTTP server from scratch: Router + Middleware + Static files + WebSocket + graceful shutdown
workflows/parallel-fan-out.mdCPU-bound workload split across multiple worker processes with IPC progress reporting
workflows/tcp-server.mdRaw TCP server: echo, custom binary protocol, TLS mutual auth, graceful shutdown

Templates

FileWhen to load
templates/http-server.phpCopy-paste boilerplate for a full HTTP server (Router + Middleware + Static files + graceful shutdown)
templates/websocket-handler.phpCopy-paste boilerplate for WebSocket handlers: echo, push-only, broadcast gateway
templates/parallel-task.phpCopy-paste boilerplate for a worker Task class with IPC progress + fan-out orchestration

Scripts

FileUsage
scripts/server-demo.phpphp scripts/server-demo.php [--port=N] — run a minimal HTTP server to verify setup
scripts/http-client-demo.phpphp scripts/http-client-demo.php [url] — demo GET, parallel requests, ConnectionLimitingPool

Resources

FileWhen to load
resources/blocking-vs-async.mdQuick lookup: mapping every common blocking PHP function to its AMPHP v3 async replacement

Legacy

FileContents
references/advanced-patterns.mdDeep dives: fiber model internals, all Future combinators, Queue back-pressure mechanics, Pipeline concurrency, Cancellation semantics, EventLoop timer details
references/class-examples.mdOne minimal usage example per key AMPHP class, organized by package

Files

29 total
Select a file
Select a file to preview.

Comments

Loading comments…